summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--metapost/context/base/mp-page.mp176
-rw-r--r--scripts/context/lua/mtx-chars.lua87
-rw-r--r--scripts/context/lua/mtx-epub.lua6
-rw-r--r--scripts/context/lua/mtxrun.lua156
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua156
-rwxr-xr-xscripts/context/stubs/unix/mtxrun156
-rw-r--r--tex/context/base/anch-bar.mkii2
-rw-r--r--tex/context/base/anch-bar.mkiv2
-rw-r--r--tex/context/base/anch-pgr.mkii2
-rw-r--r--tex/context/base/anch-pgr.mkiv46
-rw-r--r--tex/context/base/anch-pos.mkii2
-rw-r--r--tex/context/base/anch-pos.mkiv2
-rw-r--r--tex/context/base/anch-snc.mkii2
-rw-r--r--tex/context/base/anch-snc.mkiv2
-rw-r--r--tex/context/base/attr-col.mkiv2
-rw-r--r--tex/context/base/attr-eff.mkiv2
-rw-r--r--tex/context/base/attr-ini.lua4
-rw-r--r--tex/context/base/attr-ini.mkiv2
-rw-r--r--tex/context/base/attr-lay.mkiv2
-rw-r--r--tex/context/base/attr-neg.mkiv2
-rw-r--r--tex/context/base/back-exp.lua2001
-rw-r--r--tex/context/base/back-exp.mkiv31
-rw-r--r--tex/context/base/back-ini.mkiv2
-rw-r--r--tex/context/base/back-pdf.lua600
-rw-r--r--tex/context/base/back-pdf.mkiv7
-rw-r--r--tex/context/base/back-u3d.mkiv2
-rw-r--r--tex/context/base/bibl-bib.mkiv2
-rw-r--r--tex/context/base/bibl-tra.mkii2
-rw-r--r--tex/context/base/bibl-tra.mkiv2
-rw-r--r--tex/context/base/blob-ini.mkiv2
-rw-r--r--tex/context/base/buff-imp-default.mkiv2
-rw-r--r--tex/context/base/buff-imp-escaped.mkiv2
-rw-r--r--tex/context/base/buff-imp-lua.mkiv2
-rw-r--r--tex/context/base/buff-imp-mp.mkiv2
-rw-r--r--tex/context/base/buff-imp-nested.mkiv2
-rw-r--r--tex/context/base/buff-imp-parsed-xml.mkiv2
-rw-r--r--tex/context/base/buff-imp-tex.mkiv2
-rw-r--r--tex/context/base/buff-imp-xml.mkiv2
-rw-r--r--tex/context/base/buff-ini.lua7
-rw-r--r--tex/context/base/buff-ini.mkii2
-rw-r--r--tex/context/base/buff-ini.mkiv2
-rw-r--r--tex/context/base/buff-par.mkiv2
-rw-r--r--tex/context/base/buff-ver.mkii2
-rw-r--r--tex/context/base/buff-ver.mkiv2
-rw-r--r--tex/context/base/bxml-apa.mkiv2
-rw-r--r--tex/context/base/catc-act.mkii2
-rw-r--r--tex/context/base/catc-act.mkiv2
-rw-r--r--tex/context/base/catc-ctx.mkii2
-rw-r--r--tex/context/base/catc-ctx.mkiv5
-rw-r--r--tex/context/base/catc-def.mkii2
-rw-r--r--tex/context/base/catc-def.mkiv2
-rw-r--r--tex/context/base/catc-ini.mkii2
-rw-r--r--tex/context/base/catc-ini.mkiv3
-rw-r--r--tex/context/base/catc-sym.mkii2
-rw-r--r--tex/context/base/catc-sym.mkiv2
-rw-r--r--tex/context/base/catc-xml.mkii2
-rw-r--r--tex/context/base/catc-xml.mkiv2
-rw-r--r--tex/context/base/char-act.mkiv2
-rw-r--r--tex/context/base/char-def.lua9
-rw-r--r--tex/context/base/char-enc.mkiv2
-rw-r--r--tex/context/base/char-ent.lua2258
-rw-r--r--tex/context/base/char-ini.lua23
-rw-r--r--tex/context/base/char-ini.mkiv2
-rw-r--r--tex/context/base/char-utf.lua1
-rw-r--r--tex/context/base/char-utf.mkiv2
-rw-r--r--tex/context/base/chem-ini.mkiv2
-rw-r--r--tex/context/base/chem-str.mkiv2
-rw-r--r--tex/context/base/cldf-com.lua3
-rw-r--r--tex/context/base/cldf-com.mkiv2
-rw-r--r--tex/context/base/cldf-ini.lua6
-rw-r--r--tex/context/base/cldf-ini.mkiv2
-rw-r--r--tex/context/base/cldf-int.mkiv2
-rw-r--r--tex/context/base/cldf-ver.mkiv2
-rw-r--r--tex/context/base/colo-ema.mkii2
-rw-r--r--tex/context/base/colo-ext.mkii2
-rw-r--r--tex/context/base/colo-ext.mkiv2
-rw-r--r--tex/context/base/colo-hex.mkii2
-rw-r--r--tex/context/base/colo-imp-ema.mkiv2
-rw-r--r--tex/context/base/colo-imp-rgb.mkiv2
-rw-r--r--tex/context/base/colo-imp-xwi.mkiv2
-rw-r--r--tex/context/base/colo-ini.mkii2
-rw-r--r--tex/context/base/colo-ini.mkiv2
-rw-r--r--tex/context/base/colo-rgb.mkii2
-rw-r--r--tex/context/base/colo-run.mkii2
-rw-r--r--tex/context/base/colo-run.mkiv2
-rw-r--r--tex/context/base/colo-xwi.mkii2
-rw-r--r--tex/context/base/cont-cs.mkii2
-rw-r--r--tex/context/base/cont-cs.mkiv2
-rw-r--r--tex/context/base/cont-de.mkii2
-rw-r--r--tex/context/base/cont-de.mkiv2
-rw-r--r--tex/context/base/cont-en.mkii2
-rw-r--r--tex/context/base/cont-en.mkiv2
-rw-r--r--tex/context/base/cont-err.mkii2
-rw-r--r--tex/context/base/cont-fil.mkii2
-rw-r--r--tex/context/base/cont-fil.mkiv2
-rw-r--r--tex/context/base/cont-fr.mkii2
-rw-r--r--tex/context/base/cont-fr.mkiv2
-rw-r--r--tex/context/base/cont-gb.mkii2
-rw-r--r--tex/context/base/cont-gb.mkiv2
-rw-r--r--tex/context/base/cont-it.mkii2
-rw-r--r--tex/context/base/cont-it.mkiv2
-rw-r--r--tex/context/base/cont-log.mkii2
-rw-r--r--tex/context/base/cont-log.mkiv2
-rw-r--r--tex/context/base/cont-new.mkii4
-rw-r--r--tex/context/base/cont-new.mkiv4
-rw-r--r--tex/context/base/cont-nl.mkii2
-rw-r--r--tex/context/base/cont-nl.mkiv2
-rw-r--r--tex/context/base/cont-pe.mkiv2
-rw-r--r--tex/context/base/cont-ro.mkii2
-rw-r--r--tex/context/base/cont-ro.mkiv2
-rw-r--r--tex/context/base/context.mkii4
-rw-r--r--tex/context/base/context.mkiv14
-rw-r--r--tex/context/base/core-con.mkii2
-rw-r--r--tex/context/base/core-con.mkiv2
-rw-r--r--tex/context/base/core-ctx.mkii2
-rw-r--r--tex/context/base/core-ctx.mkiv2
-rw-r--r--tex/context/base/core-def.mkii2
-rw-r--r--tex/context/base/core-def.mkiv2
-rw-r--r--tex/context/base/core-env.lua36
-rw-r--r--tex/context/base/core-env.mkii2
-rw-r--r--tex/context/base/core-env.mkiv2
-rw-r--r--tex/context/base/core-fil.mkii2
-rw-r--r--tex/context/base/core-fil.mkiv2
-rw-r--r--tex/context/base/core-fnt.mkii2
-rw-r--r--tex/context/base/core-fnt.mkiv2
-rw-r--r--tex/context/base/core-gen.mkii2
-rw-r--r--tex/context/base/core-gen.mkiv2
-rw-r--r--tex/context/base/core-ini.mkii2
-rw-r--r--tex/context/base/core-ini.mkiv2
-rw-r--r--tex/context/base/core-job.mkii2
-rw-r--r--tex/context/base/core-job.mkiv2
-rw-r--r--tex/context/base/core-mis.mkii2
-rw-r--r--tex/context/base/core-mis.mkiv2
-rw-r--r--tex/context/base/core-par.mkii2
-rw-r--r--tex/context/base/core-stg.mkii2
-rw-r--r--tex/context/base/core-sys.mkii2
-rw-r--r--tex/context/base/core-sys.mkiv2
-rw-r--r--tex/context/base/core-two.mkii2
-rw-r--r--tex/context/base/core-two.mkiv2
-rw-r--r--tex/context/base/core-uti.mkii2
-rw-r--r--tex/context/base/core-uti.mkiv2
-rw-r--r--tex/context/base/core-var.mkii2
-rw-r--r--tex/context/base/core-var.mkiv2
-rw-r--r--tex/context/base/data-res.lua83
-rw-r--r--tex/context/base/enco-032.mkii2
-rw-r--r--tex/context/base/enco-037.mkii2
-rw-r--r--tex/context/base/enco-acc.mkii2
-rw-r--r--tex/context/base/enco-ans.mkii2
-rw-r--r--tex/context/base/enco-cas.mkii2
-rw-r--r--tex/context/base/enco-chi.mkii2
-rw-r--r--tex/context/base/enco-com.mkii2
-rw-r--r--tex/context/base/enco-cyr.mkii2
-rw-r--r--tex/context/base/enco-def.mkii2
-rw-r--r--tex/context/base/enco-ec.mkii2
-rw-r--r--tex/context/base/enco-ecm.mkii2
-rw-r--r--tex/context/base/enco-el.mkii2
-rw-r--r--tex/context/base/enco-fde.mkii2
-rw-r--r--tex/context/base/enco-ffr.mkii2
-rw-r--r--tex/context/base/enco-fpl.mkii2
-rw-r--r--tex/context/base/enco-fro.mkii2
-rw-r--r--tex/context/base/enco-fsl.mkii2
-rw-r--r--tex/context/base/enco-grk.mkii2
-rw-r--r--tex/context/base/enco-heb.mkii2
-rw-r--r--tex/context/base/enco-il2.mkii2
-rw-r--r--tex/context/base/enco-ini.mkii2
-rw-r--r--tex/context/base/enco-ini.mkiv2
-rw-r--r--tex/context/base/enco-l7x.mkii2
-rw-r--r--tex/context/base/enco-mis.mkii2
-rw-r--r--tex/context/base/enco-pdf.mkii2
-rw-r--r--tex/context/base/enco-pfr.mkii2
-rw-r--r--tex/context/base/enco-pol.mkii2
-rw-r--r--tex/context/base/enco-qx.mkii2
-rw-r--r--tex/context/base/enco-run.mkii2
-rw-r--r--tex/context/base/enco-t5.mkii2
-rw-r--r--tex/context/base/enco-tbo.mkii2
-rw-r--r--tex/context/base/enco-uc.mkii2
-rw-r--r--tex/context/base/enco-vna.mkii2
-rw-r--r--tex/context/base/enco-x5.mkii2
-rw-r--r--tex/context/base/filt-bas.mkii2
-rw-r--r--tex/context/base/filt-ini.mkii2
-rw-r--r--tex/context/base/font-bfm.mkii2
-rw-r--r--tex/context/base/font-chi.mkii2
-rw-r--r--tex/context/base/font-col.mkiv2
-rw-r--r--tex/context/base/font-ctx.lua22
-rw-r--r--tex/context/base/font-fbk.lua139
-rw-r--r--tex/context/base/font-gds.mkiv2
-rw-r--r--tex/context/base/font-ini.mkii2
-rw-r--r--tex/context/base/font-ini.mkiv2
-rw-r--r--tex/context/base/font-jap.mkii2
-rw-r--r--tex/context/base/font-run.mkii2
-rw-r--r--tex/context/base/font-run.mkiv2
-rw-r--r--tex/context/base/font-tra.mkiv2
-rw-r--r--tex/context/base/font-uni.mkii2
-rw-r--r--tex/context/base/font-uni.mkiv2
-rw-r--r--tex/context/base/font-unk.mkii2
-rw-r--r--tex/context/base/font-unk.mkiv2
-rw-r--r--tex/context/base/font-xtx.mkii2
-rw-r--r--tex/context/base/grph-epd.mkiv2
-rw-r--r--tex/context/base/grph-fig.mkii4
-rw-r--r--tex/context/base/grph-fig.mkiv4
-rw-r--r--tex/context/base/grph-inc.mkii6
-rw-r--r--tex/context/base/grph-inc.mkiv2
-rw-r--r--tex/context/base/grph-raw.mkiv2
-rw-r--r--tex/context/base/grph-trf.mkii2
-rw-r--r--tex/context/base/grph-trf.mkiv2
-rw-r--r--tex/context/base/hand-def.mkii2
-rw-r--r--tex/context/base/hand-ini.mkii2
-rw-r--r--tex/context/base/hand-ini.mkiv2
-rw-r--r--tex/context/base/java-ans.mkii2
-rw-r--r--tex/context/base/java-exa.mkii2
-rw-r--r--tex/context/base/java-fil.mkii2
-rw-r--r--tex/context/base/java-fld.mkii2
-rw-r--r--tex/context/base/java-imp-exa.mkiv2
-rw-r--r--tex/context/base/java-imp-fil.mkiv2
-rw-r--r--tex/context/base/java-imp-fld.mkiv2
-rw-r--r--tex/context/base/java-imp-stp.mkiv2
-rw-r--r--tex/context/base/java-ini.mkii2
-rw-r--r--tex/context/base/java-ini.mkiv2
-rw-r--r--tex/context/base/java-stp.mkii2
-rw-r--r--tex/context/base/l-file.lua34
-rw-r--r--tex/context/base/l-unicode.lua19
-rw-r--r--tex/context/base/lang-alt.mkii2
-rw-r--r--tex/context/base/lang-ana.mkii2
-rw-r--r--tex/context/base/lang-art.mkii2
-rw-r--r--tex/context/base/lang-bal.mkii2
-rw-r--r--tex/context/base/lang-cel.mkii2
-rw-r--r--tex/context/base/lang-chi.mkii2
-rw-r--r--tex/context/base/lang-ctx.mkii2
-rw-r--r--tex/context/base/lang-cyr.mkii2
-rw-r--r--tex/context/base/lang-def.mkiv2
-rw-r--r--tex/context/base/lang-dis.mkii2
-rw-r--r--tex/context/base/lang-frd.mkii2
-rw-r--r--tex/context/base/lang-frq.mkii2
-rw-r--r--tex/context/base/lang-ger.mkii2
-rw-r--r--tex/context/base/lang-grk.mkii2
-rw-r--r--tex/context/base/lang-ind.mkii2
-rw-r--r--tex/context/base/lang-ini.mkii2
-rw-r--r--tex/context/base/lang-ini.mkiv2
-rw-r--r--tex/context/base/lang-ita.mkii2
-rw-r--r--tex/context/base/lang-jap.mkii2
-rw-r--r--tex/context/base/lang-lab.mkii2
-rw-r--r--tex/context/base/lang-lab.mkiv14
-rw-r--r--tex/context/base/lang-mis.mkii2
-rw-r--r--tex/context/base/lang-mis.mkiv2
-rw-r--r--tex/context/base/lang-run.mkii2
-rw-r--r--tex/context/base/lang-sla.mkii2
-rw-r--r--tex/context/base/lang-spa.mkii2
-rw-r--r--tex/context/base/lang-spa.mkiv2
-rw-r--r--tex/context/base/lang-spe.mkii2
-rw-r--r--tex/context/base/lang-ura.mkii2
-rw-r--r--tex/context/base/lang-url.mkii2
-rw-r--r--tex/context/base/lang-url.mkiv2
-rw-r--r--tex/context/base/lang-vn.mkii2
-rw-r--r--tex/context/base/lang-wrd.mkiv2
-rw-r--r--tex/context/base/layo-ini.mkiv2
-rw-r--r--tex/context/base/lpdf-ano.lua3
-rw-r--r--tex/context/base/lpdf-col.lua404
-rw-r--r--tex/context/base/lpdf-fld.lua19
-rw-r--r--tex/context/base/lpdf-fmt.lua47
-rw-r--r--tex/context/base/lpdf-grp.lua146
-rw-r--r--tex/context/base/lpdf-ini.lua45
-rw-r--r--tex/context/base/lpdf-mis.lua60
-rw-r--r--tex/context/base/lpdf-mov.lua63
-rw-r--r--tex/context/base/lpdf-nod.lua10
-rw-r--r--tex/context/base/lpdf-ren.lua50
-rw-r--r--tex/context/base/lpdf-swf.lua8
-rw-r--r--tex/context/base/lpdf-tag.lua3
-rw-r--r--tex/context/base/lpdf-u3d.lua44
-rw-r--r--tex/context/base/lpdf-wid.lua84
-rw-r--r--tex/context/base/lpdf-xmp.lua20
-rw-r--r--tex/context/base/luat-bas.mkiv2
-rw-r--r--tex/context/base/luat-cod.mkiv2
-rw-r--r--tex/context/base/luat-fio.lua2
-rw-r--r--tex/context/base/luat-ini.mkiv2
-rw-r--r--tex/context/base/luat-lib.mkiv2
-rw-r--r--tex/context/base/lxml-ctx.mkiv2
-rw-r--r--tex/context/base/lxml-ent.lua22
-rw-r--r--tex/context/base/lxml-ini.mkiv24
-rw-r--r--tex/context/base/lxml-sor.mkiv2
-rw-r--r--tex/context/base/lxml-tab.lua12
-rw-r--r--tex/context/base/lxml-tex.lua15
-rw-r--r--tex/context/base/m-arabtex.mkii2
-rw-r--r--tex/context/base/m-barcodes.mkiv2
-rw-r--r--tex/context/base/m-chart.mkii2
-rw-r--r--tex/context/base/m-chart.mkiv2
-rw-r--r--tex/context/base/m-chart.tex2
-rw-r--r--tex/context/base/m-chemic.mkii4
-rw-r--r--tex/context/base/m-chemic.mkiv4
-rw-r--r--tex/context/base/m-cweb.tex2
-rw-r--r--tex/context/base/m-database.mkii3
-rw-r--r--tex/context/base/m-database.mkiv3
-rw-r--r--tex/context/base/m-datastrc.tex2
-rw-r--r--tex/context/base/m-dratex.mkii2
-rw-r--r--tex/context/base/m-edtsnc.mkii2
-rw-r--r--tex/context/base/m-educat.tex2
-rw-r--r--tex/context/base/m-fields.mkiv2
-rw-r--r--tex/context/base/m-format.tex2
-rw-r--r--tex/context/base/m-graph.mkii2
-rw-r--r--tex/context/base/m-graph.mkiv2
-rw-r--r--tex/context/base/m-layout.tex2
-rw-r--r--tex/context/base/m-level.mkii2
-rw-r--r--tex/context/base/m-mathcrap.mkiv2
-rw-r--r--tex/context/base/m-mkivhacks.mkiv2
-rw-r--r--tex/context/base/m-morse.mkvi2
-rw-r--r--tex/context/base/m-narrowtt.tex2
-rw-r--r--tex/context/base/m-newmat.tex2
-rw-r--r--tex/context/base/m-pdfsnc.mkii2
-rw-r--r--tex/context/base/m-pictex.tex2
-rw-r--r--tex/context/base/m-pstricks.mkii2
-rw-r--r--tex/context/base/m-pstricks.mkiv2
-rw-r--r--tex/context/base/m-punk.mkiv2
-rw-r--r--tex/context/base/m-quest.tex2
-rw-r--r--tex/context/base/m-r.tex2
-rw-r--r--tex/context/base/m-spreadsheet.mkiv2
-rw-r--r--tex/context/base/m-steps.tex2
-rw-r--r--tex/context/base/m-streams.tex2
-rw-r--r--tex/context/base/m-subsub.tex2
-rw-r--r--tex/context/base/m-timing.mkiv2
-rw-r--r--tex/context/base/m-translate.mkiv2
-rw-r--r--tex/context/base/m-units.mkii2
-rw-r--r--tex/context/base/m-units.mkiv2
-rw-r--r--tex/context/base/m-visual.tex2
-rw-r--r--tex/context/base/m-zint.mkiv2
-rw-r--r--tex/context/base/math-ali.mkiv183
-rw-r--r--tex/context/base/math-ams.mkii2
-rw-r--r--tex/context/base/math-arr.mkii2
-rw-r--r--tex/context/base/math-arr.mkiv2
-rw-r--r--tex/context/base/math-cow.mkii2
-rw-r--r--tex/context/base/math-def.mkiv19
-rw-r--r--tex/context/base/math-del.mkiv2
-rw-r--r--tex/context/base/math-dis.mkiv2
-rw-r--r--tex/context/base/math-ent.lua2103
-rw-r--r--tex/context/base/math-eul.mkii2
-rw-r--r--tex/context/base/math-for.mkiv2
-rw-r--r--tex/context/base/math-fou.mkii2
-rw-r--r--tex/context/base/math-frc.mkii2
-rw-r--r--tex/context/base/math-frc.mkiv2
-rw-r--r--tex/context/base/math-ini.lua107
-rw-r--r--tex/context/base/math-ini.mkii2
-rw-r--r--tex/context/base/math-ini.mkiv254
-rw-r--r--tex/context/base/math-inl.mkiv2
-rw-r--r--tex/context/base/math-int.mkiv2
-rw-r--r--tex/context/base/math-lan.mkiv67
-rw-r--r--tex/context/base/math-lbr.mkii2
-rw-r--r--tex/context/base/math-map.lua33
-rw-r--r--tex/context/base/math-noa.lua121
-rw-r--r--tex/context/base/math-pln.mkii2
-rw-r--r--tex/context/base/math-pln.mkiv2
-rw-r--r--tex/context/base/math-ren.lua65
-rw-r--r--tex/context/base/math-run.mkii2
-rw-r--r--tex/context/base/math-scr.mkiv2
-rw-r--r--tex/context/base/math-tag.lua115
-rw-r--r--tex/context/base/math-tex.mkii2
-rw-r--r--tex/context/base/math-tim.mkii2
-rw-r--r--tex/context/base/math-uni.mkii2
-rw-r--r--tex/context/base/meta-clp.mkii2
-rw-r--r--tex/context/base/meta-dum.mkii2
-rw-r--r--tex/context/base/meta-fig.mkii2
-rw-r--r--tex/context/base/meta-fig.mkiv2
-rw-r--r--tex/context/base/meta-fun.mkiv2
-rw-r--r--tex/context/base/meta-imp-clp.mkiv2
-rw-r--r--tex/context/base/meta-imp-dum.mkiv2
-rw-r--r--tex/context/base/meta-imp-mis.mkiv2
-rw-r--r--tex/context/base/meta-imp-nav.mkiv2
-rw-r--r--tex/context/base/meta-imp-pre.mkiv2
-rw-r--r--tex/context/base/meta-imp-txt.mkiv2
-rw-r--r--tex/context/base/meta-ini.lua53
-rw-r--r--tex/context/base/meta-ini.mkii2
-rw-r--r--tex/context/base/meta-ini.mkiv2
-rw-r--r--tex/context/base/meta-mis.mkii2
-rw-r--r--tex/context/base/meta-nav.mkii2
-rw-r--r--tex/context/base/meta-pag.mkii2
-rw-r--r--tex/context/base/meta-pag.mkiv2
-rw-r--r--tex/context/base/meta-pdf.mkii2
-rw-r--r--tex/context/base/meta-pdf.mkiv2
-rw-r--r--tex/context/base/meta-pdh.mkiv2
-rw-r--r--tex/context/base/meta-pre.mkii2
-rw-r--r--tex/context/base/meta-tex.mkii2
-rw-r--r--tex/context/base/meta-tex.mkiv2
-rw-r--r--tex/context/base/meta-txt.mkii2
-rw-r--r--tex/context/base/meta-xml.mkii2
-rw-r--r--tex/context/base/meta-xml.mkiv2
-rw-r--r--tex/context/base/metatex.tex2
-rw-r--r--tex/context/base/mlib-ctx.mkiv2
-rw-r--r--tex/context/base/mlib-pdf.mkiv2
-rw-r--r--tex/context/base/mlib-pps.mkiv2
-rw-r--r--tex/context/base/mtx-context-arrange.tex2
-rw-r--r--tex/context/base/mtx-context-combine.tex2
-rw-r--r--tex/context/base/mtx-context-common.tex2
-rw-r--r--tex/context/base/mtx-context-ideas.tex2
-rw-r--r--tex/context/base/mtx-context-listing.tex2
-rw-r--r--tex/context/base/mtx-context-select.tex2
-rw-r--r--tex/context/base/mtx-context-timing.tex2
-rw-r--r--tex/context/base/mult-aux.mkii2
-rw-r--r--tex/context/base/mult-aux.mkiv50
-rw-r--r--tex/context/base/mult-chk.mkii2
-rw-r--r--tex/context/base/mult-chk.mkiv2
-rw-r--r--tex/context/base/mult-com.mkii2
-rw-r--r--tex/context/base/mult-con.mkii2
-rw-r--r--tex/context/base/mult-de.mkii1
-rw-r--r--tex/context/base/mult-def.lua6
-rw-r--r--tex/context/base/mult-def.mkii2
-rw-r--r--tex/context/base/mult-def.mkiv2
-rw-r--r--tex/context/base/mult-en.mkii1
-rw-r--r--tex/context/base/mult-fr.mkii1
-rw-r--r--tex/context/base/mult-fst.mkii2
-rw-r--r--tex/context/base/mult-fst.mkiv2
-rw-r--r--tex/context/base/mult-ini.mkii2
-rw-r--r--tex/context/base/mult-ini.mkiv2
-rw-r--r--tex/context/base/mult-it.mkii1
-rw-r--r--tex/context/base/mult-nl.mkii1
-rw-r--r--tex/context/base/mult-pe.mkii1
-rw-r--r--tex/context/base/mult-ro.mkii1
-rw-r--r--tex/context/base/mult-sys.mkii2
-rw-r--r--tex/context/base/mult-sys.mkiv4
-rw-r--r--tex/context/base/node-acc.lua16
-rw-r--r--tex/context/base/node-bck.mkiv2
-rw-r--r--tex/context/base/node-fin.mkiv2
-rw-r--r--tex/context/base/node-ini.mkiv2
-rw-r--r--tex/context/base/node-mig.mkiv2
-rw-r--r--tex/context/base/node-pag.mkiv2
-rw-r--r--tex/context/base/node-par.lua4
-rw-r--r--tex/context/base/node-par.mkiv2
-rw-r--r--tex/context/base/node-pro.lua15
-rw-r--r--tex/context/base/node-rul.mkiv2
-rw-r--r--tex/context/base/node-spl.mkiv2
-rw-r--r--tex/context/base/norm-alo.mkii2
-rw-r--r--tex/context/base/norm-ctx.mkii2
-rw-r--r--tex/context/base/norm-ctx.mkiv2
-rw-r--r--tex/context/base/norm-etx.mkii2
-rw-r--r--tex/context/base/norm-ltx.mkii2
-rw-r--r--tex/context/base/norm-ptx.mkii2
-rw-r--r--tex/context/base/norm-tex.mkii2
-rw-r--r--tex/context/base/norm-xtx.mkii2
-rw-r--r--tex/context/base/pack-bar.mkiv2
-rw-r--r--tex/context/base/pack-box.mkii6
-rw-r--r--tex/context/base/pack-box.mkiv6
-rw-r--r--tex/context/base/pack-lyr.mkii2
-rw-r--r--tex/context/base/pack-lyr.mkiv2
-rw-r--r--tex/context/base/pack-mis.mkvi2
-rw-r--r--tex/context/base/pack-obj.mkii2
-rw-r--r--tex/context/base/pack-obj.mkiv71
-rw-r--r--tex/context/base/pack-pos.mkiv2
-rw-r--r--tex/context/base/pack-rul.mkii2
-rw-r--r--tex/context/base/pack-rul.mkiv16
-rw-r--r--tex/context/base/page-app.mkii2
-rw-r--r--tex/context/base/page-app.mkiv2
-rw-r--r--tex/context/base/page-bck.mkii2
-rw-r--r--tex/context/base/page-bck.mkiv16
-rw-r--r--tex/context/base/page-com.mkiv2
-rw-r--r--tex/context/base/page-flt.mkiv4
-rw-r--r--tex/context/base/page-flw.mkii2
-rw-r--r--tex/context/base/page-flw.mkiv2
-rw-r--r--tex/context/base/page-imp.mkii34
-rw-r--r--tex/context/base/page-imp.mkiv28
-rw-r--r--tex/context/base/page-ini.mkii2
-rw-r--r--tex/context/base/page-ini.mkiv135
-rw-r--r--tex/context/base/page-ins.mkii2
-rw-r--r--tex/context/base/page-ins.mkiv2
-rw-r--r--tex/context/base/page-lay.mkii2
-rw-r--r--tex/context/base/page-lay.mkiv426
-rw-r--r--tex/context/base/page-lin.mkii2
-rw-r--r--tex/context/base/page-lin.mkiv2
-rw-r--r--tex/context/base/page-log.mkii2
-rw-r--r--tex/context/base/page-mak.mkii2
-rw-r--r--tex/context/base/page-mak.mkiv2
-rw-r--r--tex/context/base/page-mar.mkii2
-rw-r--r--tex/context/base/page-mar.mkiv2
-rw-r--r--tex/context/base/page-mis.mkii2
-rw-r--r--tex/context/base/page-mis.mkiv2
-rw-r--r--tex/context/base/page-mrk.mkiv259
-rw-r--r--tex/context/base/page-mul.mkii14
-rw-r--r--tex/context/base/page-mul.mkiv14
-rw-r--r--tex/context/base/page-not.mkii2
-rw-r--r--tex/context/base/page-not.mkiv2
-rw-r--r--tex/context/base/page-one.mkii2
-rw-r--r--tex/context/base/page-one.mkiv2
-rw-r--r--tex/context/base/page-par.mkii2
-rw-r--r--tex/context/base/page-par.mkiv2
-rw-r--r--tex/context/base/page-plg.mkii2
-rw-r--r--tex/context/base/page-plg.mkiv12
-rw-r--r--tex/context/base/page-run.mkii2
-rw-r--r--tex/context/base/page-run.mkiv2
-rw-r--r--tex/context/base/page-sel.mkiv2
-rw-r--r--tex/context/base/page-set.mkii10
-rw-r--r--tex/context/base/page-set.mkiv8
-rw-r--r--tex/context/base/page-sid.mkii6
-rw-r--r--tex/context/base/page-sid.mkiv6
-rw-r--r--tex/context/base/page-spr.mkii2
-rw-r--r--tex/context/base/page-spr.mkiv2
-rw-r--r--tex/context/base/page-str.mkii2
-rw-r--r--tex/context/base/page-str.mkiv2
-rw-r--r--tex/context/base/page-txt.mkii2
-rw-r--r--tex/context/base/page-txt.mkiv7
-rw-r--r--tex/context/base/pdfr-ec.mkii2
-rw-r--r--tex/context/base/pdfr-il2.mkii2
-rw-r--r--tex/context/base/ppchtex.mkii4
-rw-r--r--tex/context/base/ppchtex.mkiv4
-rw-r--r--tex/context/base/prop-ini.mkii2
-rw-r--r--tex/context/base/prop-ini.mkiv2
-rw-r--r--tex/context/base/prop-lay.mkii2
-rw-r--r--tex/context/base/prop-mis.mkii2
-rw-r--r--tex/context/base/regi-8859-1.mkii2
-rw-r--r--tex/context/base/regi-8859-10.mkii2
-rw-r--r--tex/context/base/regi-8859-13.mkii2
-rw-r--r--tex/context/base/regi-8859-15.mkii2
-rw-r--r--tex/context/base/regi-8859-16.mkii2
-rw-r--r--tex/context/base/regi-8859-2.mkii2
-rw-r--r--tex/context/base/regi-8859-3.mkii2
-rw-r--r--tex/context/base/regi-8859-4.mkii2
-rw-r--r--tex/context/base/regi-8859-5.mkii2
-rw-r--r--tex/context/base/regi-8859-7.mkii2
-rw-r--r--tex/context/base/regi-8859-9.mkii2
-rw-r--r--tex/context/base/regi-cp1250.mkii2
-rw-r--r--tex/context/base/regi-cp1251.mkii2
-rw-r--r--tex/context/base/regi-cp1252.mkii2
-rw-r--r--tex/context/base/regi-cp1253.mkii2
-rw-r--r--tex/context/base/regi-cp1254.mkii2
-rw-r--r--tex/context/base/regi-cp1257.mkii2
-rw-r--r--tex/context/base/regi-cyp.mkii2
-rw-r--r--tex/context/base/regi-cyr.mkii2
-rw-r--r--tex/context/base/regi-def.mkii2
-rw-r--r--tex/context/base/regi-ibm.mkii2
-rw-r--r--tex/context/base/regi-ini.mkii2
-rw-r--r--tex/context/base/regi-ini.mkiv2
-rw-r--r--tex/context/base/regi-mac.mkii2
-rw-r--r--tex/context/base/regi-syn.mkii2
-rw-r--r--tex/context/base/regi-uni.mkii2
-rw-r--r--tex/context/base/regi-utf.mkii2
-rw-r--r--tex/context/base/regi-vis.mkii2
-rw-r--r--tex/context/base/s-abr-01.tex2
-rw-r--r--tex/context/base/s-abr-02.tex2
-rw-r--r--tex/context/base/s-abr-03.tex2
-rw-r--r--tex/context/base/s-abr-04.tex2
-rw-r--r--tex/context/base/s-cdr-01.tex2
-rw-r--r--tex/context/base/s-chi-00.mkii2
-rw-r--r--tex/context/base/s-faq-00.tex2
-rw-r--r--tex/context/base/s-faq-01.tex2
-rw-r--r--tex/context/base/s-faq-02.tex2
-rw-r--r--tex/context/base/s-faq-03.tex2
-rw-r--r--tex/context/base/s-fnt-01.mkii2
-rw-r--r--tex/context/base/s-fnt-10.mkiv2
-rw-r--r--tex/context/base/s-fnt-11.mkiv2
-rw-r--r--tex/context/base/s-fnt-20.mkiv2
-rw-r--r--tex/context/base/s-fnt-21.mkiv2
-rw-r--r--tex/context/base/s-fnt-23.mkiv2
-rw-r--r--tex/context/base/s-fnt-24.mkiv2
-rw-r--r--tex/context/base/s-fnt-25.mkiv2
-rw-r--r--tex/context/base/s-fnt-26.mkiv2
-rw-r--r--tex/context/base/s-fnt-28.mkiv2
-rw-r--r--tex/context/base/s-fnt-29.mkiv2
-rw-r--r--tex/context/base/s-fnt-30.mkiv2
-rw-r--r--tex/context/base/s-fnt-31.mkiv2
-rw-r--r--tex/context/base/s-fnt-32.mkiv2
-rw-r--r--tex/context/base/s-grk-00.mkii2
-rw-r--r--tex/context/base/s-inf-01.mkvi2
-rw-r--r--tex/context/base/s-inf-02.mkiv2
-rw-r--r--tex/context/base/s-jap-00.mkii2
-rw-r--r--tex/context/base/s-lan-03.mkiv2
-rw-r--r--tex/context/base/s-lan-04.mkiv2
-rw-r--r--tex/context/base/s-mag-01.tex2
-rw-r--r--tex/context/base/s-mod-00.mkii2
-rw-r--r--tex/context/base/s-mod-00.mkiv18
-rw-r--r--tex/context/base/s-mod-01.mkii2
-rw-r--r--tex/context/base/s-mod-01.mkiv2
-rw-r--r--tex/context/base/s-mod-02.mkii2
-rw-r--r--tex/context/base/s-mod-02.mkiv2
-rw-r--r--tex/context/base/s-pre-00.tex2
-rw-r--r--tex/context/base/s-pre-01.tex2
-rw-r--r--tex/context/base/s-pre-02.tex2
-rw-r--r--tex/context/base/s-pre-03.tex2
-rw-r--r--tex/context/base/s-pre-04.tex2
-rw-r--r--tex/context/base/s-pre-05.tex2
-rw-r--r--tex/context/base/s-pre-06.tex2
-rw-r--r--tex/context/base/s-pre-07.tex2
-rw-r--r--tex/context/base/s-pre-08.tex2
-rw-r--r--tex/context/base/s-pre-09.tex2
-rw-r--r--tex/context/base/s-pre-10.tex2
-rw-r--r--tex/context/base/s-pre-11.tex2
-rw-r--r--tex/context/base/s-pre-12.tex2
-rw-r--r--tex/context/base/s-pre-13.tex2
-rw-r--r--tex/context/base/s-pre-14.tex2
-rw-r--r--tex/context/base/s-pre-15.tex2
-rw-r--r--tex/context/base/s-pre-16.tex2
-rw-r--r--tex/context/base/s-pre-17.tex2
-rw-r--r--tex/context/base/s-pre-18.tex2
-rw-r--r--tex/context/base/s-pre-19.tex2
-rw-r--r--tex/context/base/s-pre-22.tex2
-rw-r--r--tex/context/base/s-pre-23.tex2
-rw-r--r--tex/context/base/s-pre-26.tex2
-rw-r--r--tex/context/base/s-pre-27.tex2
-rw-r--r--tex/context/base/s-pre-30.mkii2
-rw-r--r--tex/context/base/s-pre-30.mkiv2
-rw-r--r--tex/context/base/s-pre-50.tex2
-rw-r--r--tex/context/base/s-pre-60.mkii2
-rw-r--r--tex/context/base/s-pre-60.mkiv2
-rw-r--r--tex/context/base/s-pre-61.tex2
-rw-r--r--tex/context/base/s-pre-62.tex2
-rw-r--r--tex/context/base/s-pre-63.tex2
-rw-r--r--tex/context/base/s-pre-64.tex2
-rw-r--r--tex/context/base/s-pre-66.tex2
-rw-r--r--tex/context/base/s-pre-68.tex2
-rw-r--r--tex/context/base/s-pre-69.mkiv2
-rw-r--r--tex/context/base/s-pre-70.mkiv2
-rw-r--r--tex/context/base/s-pre-71.mkii2
-rw-r--r--tex/context/base/s-pre-71.mkiv2
-rw-r--r--tex/context/base/s-pre-93.tex2
-rw-r--r--tex/context/base/s-pre-96.tex2
-rw-r--r--tex/context/base/s-ptj-01.tex12
-rw-r--r--tex/context/base/s-reg-01.mkiv2
-rw-r--r--tex/context/base/s-syn-01.tex2
-rw-r--r--tex/context/base/scrn-bar.mkvi2
-rw-r--r--tex/context/base/scrn-but.mkvi2
-rw-r--r--tex/context/base/scrn-fld.mkii2
-rw-r--r--tex/context/base/scrn-fld.mkvi2
-rw-r--r--tex/context/base/scrn-hlp.mkii2
-rw-r--r--tex/context/base/scrn-hlp.mkvi2
-rw-r--r--tex/context/base/scrn-ini.mkvi2
-rw-r--r--tex/context/base/scrn-int.mkii4
-rw-r--r--tex/context/base/scrn-nav.mkii2
-rw-r--r--tex/context/base/scrn-pag.mkvi4
-rw-r--r--tex/context/base/scrn-ref.mkvi2
-rw-r--r--tex/context/base/scrn-wid.lua18
-rw-r--r--tex/context/base/scrn-wid.mkvi19
-rw-r--r--tex/context/base/scrp-ini.mkiv2
-rw-r--r--tex/context/base/sort-def.mkii2
-rw-r--r--tex/context/base/sort-ini.mkii2
-rw-r--r--tex/context/base/sort-ini.mkiv2
-rw-r--r--tex/context/base/sort-lan.mkii2
-rw-r--r--tex/context/base/spac-ali.mkiv10
-rw-r--r--tex/context/base/spac-chr.lua157
-rw-r--r--tex/context/base/spac-chr.mkiv51
-rw-r--r--tex/context/base/spac-def.mkiv2
-rw-r--r--tex/context/base/spac-fnt.mkiv2
-rw-r--r--tex/context/base/spac-gen.mkii2
-rw-r--r--tex/context/base/spac-grd.mkii2
-rw-r--r--tex/context/base/spac-grd.mkiv2
-rw-r--r--tex/context/base/spac-hor.mkiv33
-rw-r--r--tex/context/base/spac-pag.mkiv2
-rw-r--r--tex/context/base/spac-par.mkiv2
-rw-r--r--tex/context/base/spac-ver.mkiv2
-rw-r--r--tex/context/base/spec-def.mkii2
-rw-r--r--tex/context/base/spec-dpm.mkii2
-rw-r--r--tex/context/base/spec-dvi.mkii2
-rw-r--r--tex/context/base/spec-fdf.mkii2
-rw-r--r--tex/context/base/spec-ini.mkii2
-rw-r--r--tex/context/base/spec-mis.mkii2
-rw-r--r--tex/context/base/spec-pdf.mkii2
-rw-r--r--tex/context/base/spec-ps.mkii2
-rw-r--r--tex/context/base/spec-tpd.mkii2
-rw-r--r--tex/context/base/spec-tr.mkii2
-rw-r--r--tex/context/base/spec-tst.mkii2
-rw-r--r--tex/context/base/spec-var.mkii2
-rw-r--r--tex/context/base/spec-win.mkii2
-rw-r--r--tex/context/base/spec-yy.mkii2
-rw-r--r--tex/context/base/status-files.pdfbin23581 -> 23482 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin154400 -> 155008 bytes
-rw-r--r--tex/context/base/strc-bkm.mkiv2
-rw-r--r--tex/context/base/strc-blk.mkii2
-rw-r--r--tex/context/base/strc-blk.mkiv2
-rw-r--r--tex/context/base/strc-def.mkiv118
-rw-r--r--tex/context/base/strc-des.mkii2
-rw-r--r--tex/context/base/strc-des.mkiv4
-rw-r--r--tex/context/base/strc-doc.mkiv6
-rw-r--r--tex/context/base/strc-flt.mkii2
-rw-r--r--tex/context/base/strc-flt.mkiv33
-rw-r--r--tex/context/base/strc-ini.mkiv4
-rw-r--r--tex/context/base/strc-itm.mkii2
-rw-r--r--tex/context/base/strc-itm.mkiv2
-rw-r--r--tex/context/base/strc-lev.mkiv10
-rw-r--r--tex/context/base/strc-lnt.mkii2
-rw-r--r--tex/context/base/strc-lnt.mkiv2
-rw-r--r--tex/context/base/strc-lst.mkii2
-rw-r--r--tex/context/base/strc-lst.mkiv281
-rw-r--r--tex/context/base/strc-mar.mkii2
-rw-r--r--tex/context/base/strc-mar.mkiv2
-rw-r--r--tex/context/base/strc-mat.mkii2
-rw-r--r--tex/context/base/strc-mat.mkiv59
-rw-r--r--tex/context/base/strc-not.mkii2
-rw-r--r--tex/context/base/strc-not.mkiv2
-rw-r--r--tex/context/base/strc-num.mkii2
-rw-r--r--tex/context/base/strc-num.mkiv8
-rw-r--r--tex/context/base/strc-pag.mkii2
-rw-r--r--tex/context/base/strc-pag.mkiv2
-rw-r--r--tex/context/base/strc-prc.mkiv2
-rw-r--r--tex/context/base/strc-ref.lua1
-rw-r--r--tex/context/base/strc-ref.mkii2
-rw-r--r--tex/context/base/strc-ref.mkiv25
-rw-r--r--tex/context/base/strc-reg.mkii2
-rw-r--r--tex/context/base/strc-reg.mkiv2
-rw-r--r--tex/context/base/strc-ren.mkiv188
-rw-r--r--tex/context/base/strc-sbe.mkiv106
-rw-r--r--tex/context/base/strc-sec.mkii2
-rw-r--r--tex/context/base/strc-sec.mkiv922
-rw-r--r--tex/context/base/strc-swd.mkii2
-rw-r--r--tex/context/base/strc-syn.mkii2
-rw-r--r--tex/context/base/strc-syn.mkiv2
-rw-r--r--tex/context/base/strc-tag.lua125
-rw-r--r--tex/context/base/strc-tag.mkiv79
-rw-r--r--tex/context/base/strc-xml.mkiv4
-rw-r--r--tex/context/base/supp-ali.mkii2
-rw-r--r--tex/context/base/supp-ali.mkiv2
-rw-r--r--tex/context/base/supp-box.mkii2
-rw-r--r--tex/context/base/supp-box.mkiv2
-rw-r--r--tex/context/base/supp-dir.mkii2
-rw-r--r--tex/context/base/supp-dir.mkiv2
-rw-r--r--tex/context/base/supp-emp.mkii2
-rw-r--r--tex/context/base/supp-eps.mkii2
-rw-r--r--tex/context/base/supp-fil.mkii2
-rw-r--r--tex/context/base/supp-fil.mkiv6
-rw-r--r--tex/context/base/supp-fun.mkii2
-rw-r--r--tex/context/base/supp-fun.mkiv2
-rw-r--r--tex/context/base/supp-lat.mkii2
-rw-r--r--tex/context/base/supp-mat.mkii2
-rw-r--r--tex/context/base/supp-mat.mkiv2
-rw-r--r--tex/context/base/supp-mis.mkii2
-rw-r--r--tex/context/base/supp-mpe.mkii2
-rw-r--r--tex/context/base/supp-mps.mkii2
-rw-r--r--tex/context/base/supp-mrk.mkii2
-rw-r--r--tex/context/base/supp-num.mkii2
-rw-r--r--tex/context/base/supp-num.mkiv2
-rw-r--r--tex/context/base/supp-pat.mkii2
-rw-r--r--tex/context/base/supp-pdf.mkii2
-rw-r--r--tex/context/base/supp-ran.mkii2
-rw-r--r--tex/context/base/supp-ran.mkiv2
-rw-r--r--tex/context/base/supp-spe.mkii2
-rw-r--r--tex/context/base/supp-tpi.mkii2
-rw-r--r--tex/context/base/supp-vis.mkii2
-rw-r--r--tex/context/base/supp-vis.mkiv2
-rw-r--r--tex/context/base/symb-cow.mkii2
-rw-r--r--tex/context/base/symb-cow.mkiv2
-rw-r--r--tex/context/base/symb-eur.mkii2
-rw-r--r--tex/context/base/symb-eur.mkiv2
-rw-r--r--tex/context/base/symb-glm.mkii2
-rw-r--r--tex/context/base/symb-ini.mkii2
-rw-r--r--tex/context/base/symb-ini.mkiv2
-rw-r--r--tex/context/base/symb-jmn.mkii2
-rw-r--r--tex/context/base/symb-jmn.mkiv2
-rw-r--r--tex/context/base/symb-mis.mkii2
-rw-r--r--tex/context/base/symb-mis.mkiv2
-rw-r--r--tex/context/base/symb-mvs.mkii2
-rw-r--r--tex/context/base/symb-mvs.mkiv2
-rw-r--r--tex/context/base/symb-nav.mkii2
-rw-r--r--tex/context/base/symb-nav.mkiv2
-rw-r--r--tex/context/base/symb-run.mkii2
-rw-r--r--tex/context/base/symb-run.mkiv2
-rw-r--r--tex/context/base/symb-uni.mkii2
-rw-r--r--tex/context/base/symb-was.mkii2
-rw-r--r--tex/context/base/syst-aux.mkiv12
-rw-r--r--tex/context/base/syst-con.lua8
-rw-r--r--tex/context/base/syst-con.mkii2
-rw-r--r--tex/context/base/syst-con.mkiv5
-rw-r--r--tex/context/base/syst-ext.mkii2
-rw-r--r--tex/context/base/syst-fnt.mkii2
-rw-r--r--tex/context/base/syst-fnt.mkiv2
-rw-r--r--tex/context/base/syst-gen.mkii2
-rw-r--r--tex/context/base/syst-ini.mkii2
-rw-r--r--tex/context/base/syst-ini.mkiv21
-rw-r--r--tex/context/base/syst-lua.mkiv2
-rw-r--r--tex/context/base/syst-mes.mkiv2
-rw-r--r--tex/context/base/syst-new.mkii2
-rw-r--r--tex/context/base/syst-pln.mkii2
-rw-r--r--tex/context/base/syst-pln.mkiv2
-rw-r--r--tex/context/base/syst-rtp.mkii2
-rw-r--r--tex/context/base/syst-rtp.mkiv2
-rw-r--r--tex/context/base/syst-str.mkii2
-rw-r--r--tex/context/base/syst-tex.mkii2
-rw-r--r--tex/context/base/tabl-com.mkii2
-rw-r--r--tex/context/base/tabl-com.mkiv2
-rw-r--r--tex/context/base/tabl-ltb.mkii2
-rw-r--r--tex/context/base/tabl-ltb.mkiv2
-rw-r--r--tex/context/base/tabl-ntb.mkii2
-rw-r--r--tex/context/base/tabl-ntb.mkiv34
-rw-r--r--tex/context/base/tabl-nte.mkii2
-rw-r--r--tex/context/base/tabl-nte.mkiv2
-rw-r--r--tex/context/base/tabl-tab.mkii2
-rw-r--r--tex/context/base/tabl-tab.mkiv3
-rw-r--r--tex/context/base/tabl-tbl.mkii2
-rw-r--r--tex/context/base/tabl-tbl.mkiv93
-rw-r--r--tex/context/base/tabl-tsp.mkii2
-rw-r--r--tex/context/base/tabl-tsp.mkiv2
-rw-r--r--tex/context/base/task-ini.lua8
-rw-r--r--tex/context/base/task-ini.mkiv2
-rw-r--r--tex/context/base/toks-ini.mkiv2
-rw-r--r--tex/context/base/trac-deb.mkiv2
-rw-r--r--tex/context/base/trac-tex.mkiv2
-rw-r--r--tex/context/base/trac-vis.mkii2
-rw-r--r--tex/context/base/trac-vis.mkiv60
-rw-r--r--tex/context/base/type-buy.mkii2
-rw-r--r--tex/context/base/type-buy.mkiv2
-rw-r--r--tex/context/base/type-cbg.mkii2
-rw-r--r--tex/context/base/type-cow.mkii2
-rw-r--r--tex/context/base/type-cow.mkiv2
-rw-r--r--tex/context/base/type-def.mkii2
-rw-r--r--tex/context/base/type-def.mkiv2
-rw-r--r--tex/context/base/type-exp.mkii2
-rw-r--r--tex/context/base/type-fsf.mkii2
-rw-r--r--tex/context/base/type-ghz.mkii2
-rw-r--r--tex/context/base/type-ghz.mkiv2
-rw-r--r--tex/context/base/type-ini.mkii2
-rw-r--r--tex/context/base/type-ini.mkiv2
-rw-r--r--tex/context/base/type-lua.mkiv2
-rw-r--r--tex/context/base/type-lucidanova.mkiv89
-rw-r--r--tex/context/base/type-mac.mkii2
-rw-r--r--tex/context/base/type-mac.mkiv2
-rw-r--r--tex/context/base/type-one.mkii2
-rw-r--r--tex/context/base/type-one.mkiv2
-rw-r--r--tex/context/base/type-otf.mkii2
-rw-r--r--tex/context/base/type-otf.mkiv2
-rw-r--r--tex/context/base/type-pre.mkii2
-rw-r--r--tex/context/base/type-run.mkii2
-rw-r--r--tex/context/base/type-run.mkiv2
-rw-r--r--tex/context/base/type-set.mkii2
-rw-r--r--tex/context/base/type-set.mkiv2
-rw-r--r--tex/context/base/type-siz.mkii2
-rw-r--r--tex/context/base/type-siz.mkiv2
-rw-r--r--tex/context/base/type-tmf.mkii2
-rw-r--r--tex/context/base/type-tmf.mkiv2
-rw-r--r--tex/context/base/type-win.mkii2
-rw-r--r--tex/context/base/type-win.mkiv2
-rw-r--r--tex/context/base/type-xtx.mkii2
-rw-r--r--tex/context/base/typo-brk.mkiv2
-rw-r--r--tex/context/base/typo-cap.mkiv2
-rw-r--r--tex/context/base/typo-cln.mkiv2
-rw-r--r--tex/context/base/typo-dig.mkiv2
-rw-r--r--tex/context/base/typo-dir.mkiv2
-rw-r--r--tex/context/base/typo-ini.mkii2
-rw-r--r--tex/context/base/typo-ini.mkiv2
-rw-r--r--tex/context/base/typo-krn.mkiv2
-rw-r--r--tex/context/base/typo-mar.mkiv2
-rw-r--r--tex/context/base/typo-rep.mkiv2
-rw-r--r--tex/context/base/typo-spa.mkiv2
-rw-r--r--tex/context/base/unic-000.mkii2
-rw-r--r--tex/context/base/unic-001.mkii2
-rw-r--r--tex/context/base/unic-002.mkii2
-rw-r--r--tex/context/base/unic-003.mkii2
-rw-r--r--tex/context/base/unic-004.mkii2
-rw-r--r--tex/context/base/unic-005.mkii2
-rw-r--r--tex/context/base/unic-030.mkii2
-rw-r--r--tex/context/base/unic-031.mkii3
-rw-r--r--tex/context/base/unic-032.mkii2
-rw-r--r--tex/context/base/unic-033.mkii6
-rw-r--r--tex/context/base/unic-034.mkii2
-rw-r--r--tex/context/base/unic-035.mkii2
-rw-r--r--tex/context/base/unic-037.mkii2
-rw-r--r--tex/context/base/unic-039.mkii2
-rw-r--r--tex/context/base/unic-251.mkii2
-rw-r--r--tex/context/base/unic-cjk.mkii2
-rw-r--r--tex/context/base/unic-exp.mkii2
-rw-r--r--tex/context/base/unic-ini.mkii2
-rw-r--r--tex/context/base/unic-ini.mkiv2
-rw-r--r--tex/context/base/unic-run.mkii2
-rw-r--r--tex/context/base/util-tab.lua14
-rw-r--r--tex/context/base/verb-c.mkii2
-rw-r--r--tex/context/base/verb-ini.mkii2
-rw-r--r--tex/context/base/verb-js.mkii2
-rw-r--r--tex/context/base/verb-jv.mkii2
-rw-r--r--tex/context/base/verb-mp.mkii2
-rw-r--r--tex/context/base/verb-pl.mkii2
-rw-r--r--tex/context/base/verb-tex.mkii2
-rw-r--r--tex/context/base/x-asciimath.mkiv2
-rw-r--r--tex/context/base/x-calcmath.mkii2
-rw-r--r--tex/context/base/x-calcmath.mkiv2
-rw-r--r--tex/context/base/x-cals.lua4
-rw-r--r--tex/context/base/x-cals.mkiv9
-rw-r--r--tex/context/base/x-chemml.mkii2
-rw-r--r--tex/context/base/x-chemml.mkiv2
-rw-r--r--tex/context/base/x-contml.mkii2
-rw-r--r--tex/context/base/x-corres.mkii2
-rw-r--r--tex/context/base/x-css.mkiv2
-rw-r--r--tex/context/base/x-ct.mkiv2
-rw-r--r--tex/context/base/x-dir-01.tex2
-rw-r--r--tex/context/base/x-dir-05.mkii2
-rw-r--r--tex/context/base/x-dir-05.mkiv2
-rw-r--r--tex/context/base/x-fe.mkii2
-rw-r--r--tex/context/base/x-fig-00.mkii2
-rw-r--r--tex/context/base/x-fig-01.mkii2
-rw-r--r--tex/context/base/x-fig-02.mkii2
-rw-r--r--tex/context/base/x-fig-03.mkii2
-rw-r--r--tex/context/base/x-fo.mkii2
-rw-r--r--tex/context/base/x-foxet.mkii2
-rw-r--r--tex/context/base/x-foxet.mkiv2
-rw-r--r--tex/context/base/x-ldx.mkiv13
-rw-r--r--tex/context/base/x-mathml.lua77
-rw-r--r--tex/context/base/x-mathml.mkii2
-rw-r--r--tex/context/base/x-mathml.mkiv335
-rw-r--r--tex/context/base/x-newcml.mkii2
-rw-r--r--tex/context/base/x-newmme.mkii2
-rw-r--r--tex/context/base/x-newmml.mkii2
-rw-r--r--tex/context/base/x-newmml.mkiv2
-rw-r--r--tex/context/base/x-newmmo.mkii2
-rw-r--r--tex/context/base/x-newpml.mkii2
-rw-r--r--tex/context/base/x-physml.mkii2
-rw-r--r--tex/context/base/x-physml.mkiv2
-rw-r--r--tex/context/base/x-res-00.mkii2
-rw-r--r--tex/context/base/x-res-01.mkii2
-rw-r--r--tex/context/base/x-res-01.mkiv2
-rw-r--r--tex/context/base/x-res-02.mkii2
-rw-r--r--tex/context/base/x-res-03.mkii2
-rw-r--r--tex/context/base/x-res-04.mkii2
-rw-r--r--tex/context/base/x-res-08.mkii2
-rw-r--r--tex/context/base/x-res-09.mkii2
-rw-r--r--tex/context/base/x-res-10.mkii2
-rw-r--r--tex/context/base/x-res-11.mkii2
-rw-r--r--tex/context/base/x-res-12.mkii2
-rw-r--r--tex/context/base/x-res-20.mkii2
-rw-r--r--tex/context/base/x-res-50.mkii2
-rw-r--r--tex/context/base/x-res-50.mkiv2
-rw-r--r--tex/context/base/x-sch-00.mkii2
-rw-r--r--tex/context/base/x-sch-01.mkii2
-rw-r--r--tex/context/base/x-set-01.mkii2
-rw-r--r--tex/context/base/x-set-02.mkii2
-rw-r--r--tex/context/base/x-set-11.mkii2
-rw-r--r--tex/context/base/x-set-11.mkiv2
-rw-r--r--tex/context/base/x-set-12.mkii2
-rw-r--r--tex/context/base/x-set-12.mkiv2
-rw-r--r--tex/context/base/x-steps.mkii2
-rw-r--r--tex/context/base/x-steps.mkiv2
-rw-r--r--tex/context/base/x-xml-01.mkii2
-rw-r--r--tex/context/base/x-xml-02.mkii2
-rw-r--r--tex/context/base/x-xml-11.mkii2
-rw-r--r--tex/context/base/x-xtag.mkiv2
-rw-r--r--tex/context/base/xetx-ini.mkii2
-rw-r--r--tex/context/base/xtag-ent.mkii2
-rw-r--r--tex/context/base/xtag-exp.mkii2
-rw-r--r--tex/context/base/xtag-ext.mkii2
-rw-r--r--tex/context/base/xtag-hyp.mkii2
-rw-r--r--tex/context/base/xtag-ini.mkii2
-rw-r--r--tex/context/base/xtag-map.mkii2
-rw-r--r--tex/context/base/xtag-mmc.mkii2
-rw-r--r--tex/context/base/xtag-mml.mkii2
-rw-r--r--tex/context/base/xtag-mmp.mkii2
-rw-r--r--tex/context/base/xtag-pml.mkii2
-rw-r--r--tex/context/base/xtag-pmu.mkii2
-rw-r--r--tex/context/base/xtag-pre.mkii2
-rw-r--r--tex/context/base/xtag-prs.mkii2
-rw-r--r--tex/context/base/xtag-raw.mkii2
-rw-r--r--tex/context/base/xtag-rng.mkii2
-rw-r--r--tex/context/base/xtag-run.mkii2
-rw-r--r--tex/context/base/xtag-stk.mkii2
-rw-r--r--tex/context/base/xtag-utf.mkii2
-rw-r--r--tex/context/base/xtag-xsd.mkii2
-rw-r--r--tex/context/base/xtag-xsl.mkii2
-rw-r--r--tex/context/bib/backup/sample.bib38
-rw-r--r--tex/context/interface/keys-cs.xml1
-rw-r--r--tex/context/interface/keys-de.xml1
-rw-r--r--tex/context/interface/keys-en.xml1
-rw-r--r--tex/context/interface/keys-fr.xml1
-rw-r--r--tex/context/interface/keys-it.xml1
-rw-r--r--tex/context/interface/keys-nl.xml1
-rw-r--r--tex/context/interface/keys-pe.xml1
-rw-r--r--tex/context/interface/keys-ro.xml1
-rw-r--r--tex/generic/context/luatex-basics.tex2
-rw-r--r--tex/generic/context/luatex-fonts-merged.lua36
-rw-r--r--tex/generic/context/luatex-fonts.tex2
-rw-r--r--tex/generic/context/luatex-mplib.tex2
-rw-r--r--tex/generic/context/luatex-preprocessor.tex2
-rw-r--r--tex/generic/context/luatex-test.tex2
-rw-r--r--tex/generic/context/m-metapo.tex2
-rw-r--r--tex/generic/context/mptopdf.tex2
-rw-r--r--web2c/contextcnf.lua58
-rw-r--r--web2c/natural.tcx181
-rw-r--r--web2c/texlive2011cnf.lua40
963 files changed, 9729 insertions, 6858 deletions
diff --git a/metapost/context/base/mp-page.mp b/metapost/context/base/mp-page.mp
index 59d8bccbc..a4f0a86ef 100644
--- a/metapost/context/base/mp-page.mp
+++ b/metapost/context/base/mp-page.mp
@@ -475,4 +475,180 @@ def position_anchor_bar(expr p_b_self, p_e_self, y_b_self, y_e_self, h_b_self, d
StopPage ;
enddef ;
+% Crop stuff
+
+vardef crop_marks_lines (expr box, length, offset) =
+ save p ; picture p ;
+ p := image (
+ draw ((llcorner box) -- (llcorner box) shifted (-length,0)) shifted (-offset,0) ;
+ draw ((llcorner box) -- (llcorner box) shifted (0,-length)) shifted (0,-offset) ;
+ draw ((lrcorner box) -- (lrcorner box) shifted ( length,0)) shifted ( offset,0) ;
+ draw ((lrcorner box) -- (lrcorner box) shifted (0,-length)) shifted (0,-offset) ;
+ draw ((ulcorner box) -- (ulcorner box) shifted (-length,0)) shifted (-offset,0) ;
+ draw ((ulcorner box) -- (ulcorner box) shifted (0, length)) shifted (0, offset) ;
+ draw ((urcorner box) -- (urcorner box) shifted ( length,0)) shifted ( offset,0) ;
+ draw ((urcorner box) -- (urcorner box) shifted (0, length)) shifted (0, offset) ;
+ ) ;
+ setbounds p to box ;
+ p
+enddef ;
+
+vardef crop_marks_cmyk =
+ save p ; picture p ; p := image (
+ fill ulcircle scaled 12.5 withcolor (1,0,0,0) ;
+ fill urcircle scaled 12.5 withcolor (0,1,0,0) ;
+ fill lrcircle scaled 12.5 withcolor (0,0,1,0) ;
+ fill llcircle scaled 12.5 withcolor (0,0,0,1) ;
+ draw (-10,0) -- (10,0) ;
+ draw (0,-10) -- (0,10) ;
+ draw fullcircle scaled 12.5 ;
+ ) ;
+ setbounds p to fullsquare scaled 20 ;
+ p
+enddef ;
+
+vardef crop_marks_gray =
+ save p ; picture p ; p := image (
+ fill ulcircle scaled 12.5 withcolor (0.00) ;
+ fill urcircle scaled 12.5 withcolor (0.25) ;
+ fill lrcircle scaled 12.5 withcolor (0.50) ;
+ fill llcircle scaled 12.5 withcolor (0.75) ;
+ draw (-10,0) -- (10,0) ;
+ draw (0,-10) -- (0,10) ;
+ draw (-6,0) -- (6,0) withcolor white ;
+ draw (0,-6) -- (0,6) withcolor white ;
+ draw fullcircle scaled 12.5 ;
+ ) ;
+ setbounds p to fullsquare scaled 20 ;
+ p
+enddef ;
+
+vardef crop_marks_cmykrgb =
+ save p ; picture p ; p := image (
+ fill ulcircle scaled 15 withcolor (1,0,0) ;
+ fill urcircle scaled 15 withcolor (0,1,0) ;
+ fill lrcircle scaled 15 withcolor (0,0,1) ;
+ fill llcircle scaled 15 withcolor (.5,.5,.5) ;
+ fill ulcircle scaled 10 withcolor (1,0,0,0) ;
+ fill urcircle scaled 10 withcolor (0,1,0,0) ;
+ fill lrcircle scaled 10 withcolor (0,0,1,0) ;
+ fill llcircle scaled 10 withcolor (0,0,0,1) ;
+ draw (-10,0) -- (10,0) ;
+ draw (0,-10) -- (0,10) ;
+ draw fullcircle scaled 10 ;
+ draw fullcircle scaled 15 ;
+ ) ;
+ setbounds p to fullsquare scaled 20 ;
+ p
+enddef ;
+
+vardef crop_color(expr c, h, w, dx, dy, ts) =
+ image (
+ save p ; path p ;
+ for i=1 upto 6 :
+ p := fullsquare
+ xscaled w
+ yscaled h
+ shifted (dx,dy-i*h) ;
+ fill p
+ withcolor (crop_colors[i]*c) ;
+ draw textext("\format{'@0.2f'," & decimal crop_colors[i] & "}")
+ scaled ts
+ shifted center p withcolor white ;
+ endfor ;
+ )
+enddef ;
+
+vardef crop_gray(expr c, h, w, dx, dy, ts) =
+ image (
+ save p ; path p ;
+ for i=.05 step .05 until 1 :
+ p := fullsquare
+ xscaled w
+ yscaled h
+ shifted (20*(i-1)*w+dx,dy) ;
+ fill p
+ withcolor (i*c) ;
+ draw textext("\format{'@0.2f'," & decimal i & "}")
+ scaled ts
+ shifted center p withcolor white ;
+ endfor ;
+ )
+enddef ;
+
+% draw crop_marks_cmyk shifted llcorner more ;
+% draw crop_marks_cmyk shifted lrcorner more ;
+% draw crop_marks_cmyk shifted ulcorner more ;
+% draw crop_marks_cmyk shifted urcorner more ;
+
+def page_marks_add_color(expr width, height, length, offset) = % todo: namespace
+
+ path page ; page := fullsquare xscaled width yscaled height ;
+ path more ; more := page enlarged (offset+length/2,offset+length/2) ;
+
+ numeric crop_colors[] ;
+ crop_colors[1] := 1 ;
+ crop_colors[2] := 0.95 ;
+ crop_colors[3] := 0.75 ;
+ crop_colors[4] := 0.50 ;
+ crop_colors[5] := 0.25 ;
+ crop_colors[6] := 0.05 ;
+
+ numeric h ; h := height / 20 ;
+ numeric w ; w := width / 20 ;
+ numeric d ; d := offset + length/2 ;
+
+ draw crop_color((1,0,0,0),h,length,xpart ulcorner page - d, 10h,length/20) ;
+ draw crop_color((0,1,0,0),h,length,xpart ulcorner page - d,3.5h,length/20) ;
+ draw crop_color((0,0,1,0),h,length,xpart ulcorner page - d, -3h,length/20) ;
+
+ draw crop_color((0,1,1,0),h,length,xpart urcorner page + d, 10h,length/20) ;
+ draw crop_color((1,0,1,0),h,length,xpart urcorner page + d,3.5h,length/20) ;
+ draw crop_color((1,1,0,0),h,length,xpart urcorner page + d, -3h,length/20) ;
+
+ draw crop_gray((0,0,0,1),length, w,-xpart llcorner page,-ypart llcorner page + d ,w/20) ;
+ draw crop_gray((1,0,0,0),length/3,w,-xpart llcorner page, ypart llcorner page - d + 1length/3,w/20) ;
+ draw crop_gray((0,1,0,0),length/3,w,-xpart llcorner page, ypart llcorner page - d - 0length/3,w/20) ;
+ draw crop_gray((0,0,1,0),length/3,w,-xpart llcorner page, ypart llcorner page - d - 1length/3,w/20) ;
+
+ setbounds currentpicture to page ;
+
+enddef ;
+
+def page_marks_add_marking(expr width, height, length, offset) = % todo: namespace
+
+ path page ; page := fullsquare xscaled width yscaled height ;
+ path more ; more := page enlarged (offset+length/2,offset+length/2) ;
+
+ draw crop_marks_gray shifted center(topboundary more) shifted (0, offset+length);
+ draw crop_marks_cmyk shifted center(bottomboundary more) shifted (0,-offset-length);
+
+ setbounds currentpicture to page ;
+
+enddef ;
+
+def page_marks_add_lines(expr width, height, length, offset) = % todo: namespace
+
+ path page ; page := fullsquare xscaled width yscaled height ;
+ path more ; more := page enlarged (offset+length/2,offset+length/2) ;
+
+ draw crop_marks_lines(page,length,offset) ;
+
+ setbounds currentpicture to page ;
+
+enddef ;
+
+def page_marks_add_number(expr width, height, length, offset, n) = % todo: namespace
+
+ path page ; page := fullsquare xscaled width yscaled height ;
+ path more ; more := page enlarged (offset+length/2,offset+length/2) ;
+
+ for s=llcorner more, lrcorner more, ulcorner more, urcorner more :
+ draw textext(decimal n) shifted s ;
+ endfor ;
+
+ setbounds currentpicture to page ;
+
+enddef ;
+
endinput ;
diff --git a/scripts/context/lua/mtx-chars.lua b/scripts/context/lua/mtx-chars.lua
index dc760c4e7..ad2c499be 100644
--- a/scripts/context/lua/mtx-chars.lua
+++ b/scripts/context/lua/mtx-chars.lua
@@ -6,10 +6,12 @@ if not modules then modules = { } end modules ['mtx-chars'] = {
license = "see context related readme files"
}
+-- obsolete: --stix convert stix table to math table
+
local helpinfo = [[
---stix convert stix table to math table
--xtx generate xetx-*.tex (used by xetex)
--pdf generate pdfr-def.tex (used by pdftex)
+--entities generate entities table
]]
local application = logs.application {
@@ -20,7 +22,10 @@ local application = logs.application {
local report = application.report
-local format, concat, utfchar, upper = string.format, table.concat, unicode.utf8.char, string.upper
+local format, gmatch, upper, lower = string.format, string.gmatch, string.upper, string.lower
+local tonumber = tonumber
+local concat = table.concat
+local utfchar = utf.char
scripts = scripts or { }
scripts.chars = scripts.chars or { }
@@ -321,10 +326,63 @@ function scripts.chars.makeencoutf()
end
end
+local entityfiles = {
+ "http://www.w3.org/2003/entities/2007/w3centities-f.ent",
+ "http://www.w3.org/2003/entities/2007/htmlmathml-f.ent",
+}
+
+function scripts.chars.xmlentities()
+ local done = { }
+ local entities = { "local entities = utilities.storage.allocate {" }
+ for i=1,#entityfiles do
+ local f = entityfiles[i]
+ local s = url.hashed(f)
+ local b = file.basename(s.path)
+ local n = resolvers.findfile(b)
+ local data = io.loaddata(n)
+ for name, value in gmatch(data,'<!ENTITY +(%S+) +"(.-)" *>') do
+ if not done[name] then
+ done[name] = true
+ local str, hex
+ local low = lower(name)
+ if name == "newline" then
+ -- let's forget about that one
+ elseif name == "lt" then
+ str, hex = "<", format("%s %05X",hex,c)
+ elseif name == "gt" then
+ str, hex = ">", format("%s %05X",hex,c)
+ elseif name == "amp" then
+ str, hex = "&", format("%s %05X",hex,c)
+ else
+ for t, c in gmatch(value,"&#([x]*)([^;]+);") do
+ if t == "x" then
+ c = tonumber(c,16)
+ else
+ c = tonumber(c)
+ end
+ if str then
+ str, hex = str .. utfchar(c), format("%s %05X",hex,c)
+ else
+ str, hex = utfchar(c), format("U+%05X",c)
+ end
+ end
+ end
+ if str and hex then
+ entities[#entities+1] = format(' ["%s"] = %q, -- %s',name,str,hex)
+ end
+ end
+ end
+ end
+ entities[#entities+1] = "}"
+ io.savedata("xmlentities.tmp",concat(entities,"\n"))
+end
+
if environment.argument("stix") then
local inname = environment.files[1] or ""
local outname = environment.files[2] or ""
scripts.chars.stixtomkiv(inname,outname)
+elseif environment.argument("entities") then
+ scripts.chars.xmlentities()
elseif environment.argument("xtx") then
scripts.chars.makeencoutf()
elseif environment.argument("pdf") then
@@ -332,3 +390,28 @@ elseif environment.argument("pdf") then
else
application.help()
end
+
+-- local http = require("socket.http")
+-- local ltn12 = require("ltn12")
+--
+-- local t = { }
+-- local status, message = http.request {
+-- url = f,
+-- sink = ltn12.sink.table(t)
+-- }
+--
+-- local template = [[
+-- <?xml version='1.0' ?>
+--
+-- <!DOCTYPE dummy [
+--
+-- %s
+--
+-- ]>
+--
+-- <dummy>This is just a placeholder.</dummy>
+-- ]]
+--
+-- local e = string.format(template,io.loaddata(n))
+-- local x = xml.convert(e, { utfize_entities = true } )
+-- local entities = x.entities
diff --git a/scripts/context/lua/mtx-epub.lua b/scripts/context/lua/mtx-epub.lua
index b047d4d16..3ff76ab27 100644
--- a/scripts/context/lua/mtx-epub.lua
+++ b/scripts/context/lua/mtx-epub.lua
@@ -156,9 +156,9 @@ function scripts.epub.make()
os.remove(epubfile)
- os.execute(format("zip %s -0 %s",epubfile,"mimetype"))
- os.execute(format("zip %s -r %s",epubfile,"META-INF"))
- os.execute(format("zip %s -r %s",epubfile,"OPS"))
+ os.execute(format("zip %s -X -0 %s",epubfile,"mimetype"))
+ os.execute(format("zip %s -X -r %s",epubfile,"META-INF"))
+ os.execute(format("zip %s -X -r %s",epubfile,"OPS"))
lfs.chdir("..")
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 23a957f92..8ffadc74b 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -2527,9 +2527,39 @@ function file.join(...)
end
+-- We should be able to use:
+--
+-- function file.is_writable(name)
+-- local a = attributes(name) or attributes(dirname(name,"."))
+-- return a and sub(a.permissions,2,2) == "w"
+-- end
+--
+-- But after some testing Taco and I came up with:
+
function file.is_writable(name)
- local a = attributes(name) or attributes(dirname(name,"."))
- return a and sub(a.permissions,2,2) == "w"
+ if lfs.isdir(name) then
+ name = name .. "/m_t_x_t_e_s_t.tmp"
+ local f = io.open(name,"wb")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ elseif lfs.isfile(name) then
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ return true
+ end
+ else
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ end
+ return false
end
function file.is_readable(name)
@@ -3694,12 +3724,29 @@ end
local lpegmatch = lpeg.match
-local utftype = lpeg.patterns.utftype
+local patterns = lpeg.patterns
+local utftype = patterns.utftype
function unicode.filetype(data)
return data and lpegmatch(utftype,data) or "unknown"
end
+local toentities = lpeg.Cs (
+ (
+ patterns.utf8one
+ + (
+ patterns.utf8two
+ + patterns.utf8three
+ + patterns.utf8four
+ ) / function(s) local b = utfbyte(s) if b < 127 then return s else return format("&#%X;",b) end end
+ )^0
+)
+
+patterns.toentities = toentities
+
+function utf.toentities(str)
+ return lpegmatch(toentities,str)
+end
@@ -3759,7 +3806,7 @@ utilities = utilities or {}
utilities.tables = utilities.tables or { }
local tables = utilities.tables
-local format, gmatch = string.format, string.gmatch
+local format, gmatch, rep = string.format, string.gmatch, string.rep
local concat, insert, remove = table.concat, table.insert, table.remove
local setmetatable, getmetatable, tonumber, tostring = setmetatable, getmetatable, tonumber, tostring
@@ -3828,11 +3875,11 @@ end
-- experimental
-local function toxml(t,d,result)
+local function toxml(t,d,result,step)
for k, v in table.sortedpairs(t) do
if type(v) == "table" then
result[#result+1] = format("%s<%s>",d,k)
- toxml(v,d.." ",result)
+ toxml(v,d..step,result)
result[#result+1] = format("%s</%s>",d,k)
elseif tonumber(k) then
result[#result+1] = format("%s<entry n='%s'>%s</entry>",d,k,v,k)
@@ -3842,13 +3889,15 @@ local function toxml(t,d,result)
end
end
-function table.toxml(t,name,nobanner)
+function table.toxml(t,name,nobanner,indent,spaces)
local noroot = name == false
local result = (nobanner or noroot) and { } or { "<?xml version='1.0' standalone='yes' ?>" }
+ local indent = rep(" ",indent or 0)
+ local spaces = rep(" ",spaces or 1)
if noroot then
- toxml( t, "", result)
+ toxml( t, inndent, result, spaces)
else
- toxml( { [name or "root"] = t }, "", result)
+ toxml( { [name or "root"] = t }, indent, result, spaces)
end
return concat(result,"\n")
end
@@ -6653,6 +6702,10 @@ local function handle_any_entity(str)
a = entities[str]
end
if a then
+if type(a) == "function" then
+ report_xml("expanding entity &%s; (function)",str)
+ a = a(str) or ""
+end
if trace_entities then
report_xml("resolved entity &%s; -> %s (internal)",str,a)
end
@@ -6784,6 +6837,8 @@ local function normalentity(k,v ) entities[k] = v end
local function systementity(k,v,n) entities[k] = v end
local function publicentity(k,v,n) entities[k] = v end
+-- todo: separate dtd parser
+
local begindoctype = open * P("!DOCTYPE")
local enddoctype = close
local beginset = P("[")
@@ -6791,12 +6846,16 @@ local endset = P("]")
local doctypename = C((1-somespace-close)^0)
local elementdoctype = optionalspace * P("<!ELEMENT") * (1-close)^0 * close
+local basiccomment = begincomment * ((1 - endcomment)^0) * endcomment
+
local normalentitytype = (doctypename * somespace * value)/normalentity
local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity
local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity
local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype) * optionalspace * close
-local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + space)^0 * optionalspace * endset
+-- we accept comments in doctypes
+
+local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + basiccomment + space)^0 * optionalspace * endset
local definitiondoctype= doctypename * somespace * doctypeset
local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset
local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset
@@ -11136,8 +11195,56 @@ resolvers.criticalvars = allocate { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARE
resolvers.luacnfname = 'texmfcnf.lua'
resolvers.luacnfstate = "unknown"
--- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' -- what a rubish path
-resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c},}}'
+-- The web2c tex binaries as well as kpse have built in paths for the configuration
+-- files and there can be a depressing truckload of them. This is actually the weak
+-- spot of a distribution. So we don't want:
+--
+-- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}'
+--
+-- but instead use:
+--
+-- resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c}}'
+--
+-- which does not make texlive happy as there is a texmf-local tree one level up
+-- (sigh), so we need this. (We can assume web2c as mkiv does not run on older
+-- texlives anyway.
+--
+-- texlive:
+--
+-- selfautodir:
+-- selfautoparent:
+-- selfautodir:share/texmf-local/web2c
+-- selfautodir:share/texmf/web2c
+-- selfautodir:texmf-local/web2c
+-- selfautodir:texmf/web2c
+-- selfautoparent:share/texmf-local/web2c
+-- selfautoparent:share/texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf/web2c
+--
+-- minimals:
+--
+-- home:texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf-context/web2c
+-- selfautoparent:texmf/web2c
+
+if this_is_texlive then
+ -- resolvers.luacnfspec = '{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = '{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c;selfautoparent:/texmf{-local,}/web2c'
+ resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c'
+else
+ resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c'
+end
+
+-- which (as we want users to use the web2c path) be can be simplified to this:
+--
+-- if environment and environment.ownpath and string.find(environment.ownpath,"[\\/]texlive[\\/]") then
+-- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c,selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- else
+-- resolvers.luacnfspec = 'selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- end
@@ -11332,7 +11439,7 @@ local function makepathexpression(str)
end
end
-local function reportcriticalvariables()
+local function reportcriticalvariables(cnfspec)
if trace_locating then
for i=1,#resolvers.criticalvars do
local k = resolvers.criticalvars[i]
@@ -11340,6 +11447,14 @@ local function reportcriticalvariables()
report_resolving("variable '%s' set to '%s'",k,v)
end
report_resolving()
+ if cnfspec then
+ if type(cnfspec) == "table" then
+ report_resolving("using configuration specification '%s'",concat(cnfspec,","))
+ else
+ report_resolving("using configuration specification '%s'",cnfspec)
+ end
+ end
+ report_resolving()
end
reportcriticalvariables = function() end
end
@@ -11354,7 +11469,7 @@ local function identify_configuration_files()
else
resolvers.luacnfstate = "environment"
end
- reportcriticalvariables()
+ reportcriticalvariables(cnfspec)
local cnfpaths = expandedpathfromlist(resolvers.splitpath(cnfspec))
local luacnfname = resolvers.luacnfname
for i=1,#cnfpaths do
@@ -11390,6 +11505,19 @@ local function load_configuration_files()
if blob then
local setups = instance.setups
local data = blob()
+local parent = data and data.parent
+if parent then
+ local filename = filejoin(pathname,parent)
+ local realname = resolvers.resolve(filename) -- no shortcut
+ local blob = loadfile(realname)
+ if blob then
+ local parentdata = blob()
+ if parentdata then
+ report_resolving("loading configuration file '%s'",filename)
+ data = table.merged(parentdata,data)
+ end
+ end
+end
data = data and data.content
if data then
if trace_locating then
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 23a957f92..8ffadc74b 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -2527,9 +2527,39 @@ function file.join(...)
end
+-- We should be able to use:
+--
+-- function file.is_writable(name)
+-- local a = attributes(name) or attributes(dirname(name,"."))
+-- return a and sub(a.permissions,2,2) == "w"
+-- end
+--
+-- But after some testing Taco and I came up with:
+
function file.is_writable(name)
- local a = attributes(name) or attributes(dirname(name,"."))
- return a and sub(a.permissions,2,2) == "w"
+ if lfs.isdir(name) then
+ name = name .. "/m_t_x_t_e_s_t.tmp"
+ local f = io.open(name,"wb")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ elseif lfs.isfile(name) then
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ return true
+ end
+ else
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ end
+ return false
end
function file.is_readable(name)
@@ -3694,12 +3724,29 @@ end
local lpegmatch = lpeg.match
-local utftype = lpeg.patterns.utftype
+local patterns = lpeg.patterns
+local utftype = patterns.utftype
function unicode.filetype(data)
return data and lpegmatch(utftype,data) or "unknown"
end
+local toentities = lpeg.Cs (
+ (
+ patterns.utf8one
+ + (
+ patterns.utf8two
+ + patterns.utf8three
+ + patterns.utf8four
+ ) / function(s) local b = utfbyte(s) if b < 127 then return s else return format("&#%X;",b) end end
+ )^0
+)
+
+patterns.toentities = toentities
+
+function utf.toentities(str)
+ return lpegmatch(toentities,str)
+end
@@ -3759,7 +3806,7 @@ utilities = utilities or {}
utilities.tables = utilities.tables or { }
local tables = utilities.tables
-local format, gmatch = string.format, string.gmatch
+local format, gmatch, rep = string.format, string.gmatch, string.rep
local concat, insert, remove = table.concat, table.insert, table.remove
local setmetatable, getmetatable, tonumber, tostring = setmetatable, getmetatable, tonumber, tostring
@@ -3828,11 +3875,11 @@ end
-- experimental
-local function toxml(t,d,result)
+local function toxml(t,d,result,step)
for k, v in table.sortedpairs(t) do
if type(v) == "table" then
result[#result+1] = format("%s<%s>",d,k)
- toxml(v,d.." ",result)
+ toxml(v,d..step,result)
result[#result+1] = format("%s</%s>",d,k)
elseif tonumber(k) then
result[#result+1] = format("%s<entry n='%s'>%s</entry>",d,k,v,k)
@@ -3842,13 +3889,15 @@ local function toxml(t,d,result)
end
end
-function table.toxml(t,name,nobanner)
+function table.toxml(t,name,nobanner,indent,spaces)
local noroot = name == false
local result = (nobanner or noroot) and { } or { "<?xml version='1.0' standalone='yes' ?>" }
+ local indent = rep(" ",indent or 0)
+ local spaces = rep(" ",spaces or 1)
if noroot then
- toxml( t, "", result)
+ toxml( t, inndent, result, spaces)
else
- toxml( { [name or "root"] = t }, "", result)
+ toxml( { [name or "root"] = t }, indent, result, spaces)
end
return concat(result,"\n")
end
@@ -6653,6 +6702,10 @@ local function handle_any_entity(str)
a = entities[str]
end
if a then
+if type(a) == "function" then
+ report_xml("expanding entity &%s; (function)",str)
+ a = a(str) or ""
+end
if trace_entities then
report_xml("resolved entity &%s; -> %s (internal)",str,a)
end
@@ -6784,6 +6837,8 @@ local function normalentity(k,v ) entities[k] = v end
local function systementity(k,v,n) entities[k] = v end
local function publicentity(k,v,n) entities[k] = v end
+-- todo: separate dtd parser
+
local begindoctype = open * P("!DOCTYPE")
local enddoctype = close
local beginset = P("[")
@@ -6791,12 +6846,16 @@ local endset = P("]")
local doctypename = C((1-somespace-close)^0)
local elementdoctype = optionalspace * P("<!ELEMENT") * (1-close)^0 * close
+local basiccomment = begincomment * ((1 - endcomment)^0) * endcomment
+
local normalentitytype = (doctypename * somespace * value)/normalentity
local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity
local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity
local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype) * optionalspace * close
-local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + space)^0 * optionalspace * endset
+-- we accept comments in doctypes
+
+local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + basiccomment + space)^0 * optionalspace * endset
local definitiondoctype= doctypename * somespace * doctypeset
local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset
local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset
@@ -11136,8 +11195,56 @@ resolvers.criticalvars = allocate { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARE
resolvers.luacnfname = 'texmfcnf.lua'
resolvers.luacnfstate = "unknown"
--- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' -- what a rubish path
-resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c},}}'
+-- The web2c tex binaries as well as kpse have built in paths for the configuration
+-- files and there can be a depressing truckload of them. This is actually the weak
+-- spot of a distribution. So we don't want:
+--
+-- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}'
+--
+-- but instead use:
+--
+-- resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c}}'
+--
+-- which does not make texlive happy as there is a texmf-local tree one level up
+-- (sigh), so we need this. (We can assume web2c as mkiv does not run on older
+-- texlives anyway.
+--
+-- texlive:
+--
+-- selfautodir:
+-- selfautoparent:
+-- selfautodir:share/texmf-local/web2c
+-- selfautodir:share/texmf/web2c
+-- selfautodir:texmf-local/web2c
+-- selfautodir:texmf/web2c
+-- selfautoparent:share/texmf-local/web2c
+-- selfautoparent:share/texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf/web2c
+--
+-- minimals:
+--
+-- home:texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf-context/web2c
+-- selfautoparent:texmf/web2c
+
+if this_is_texlive then
+ -- resolvers.luacnfspec = '{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = '{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c;selfautoparent:/texmf{-local,}/web2c'
+ resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c'
+else
+ resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c'
+end
+
+-- which (as we want users to use the web2c path) be can be simplified to this:
+--
+-- if environment and environment.ownpath and string.find(environment.ownpath,"[\\/]texlive[\\/]") then
+-- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c,selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- else
+-- resolvers.luacnfspec = 'selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- end
@@ -11332,7 +11439,7 @@ local function makepathexpression(str)
end
end
-local function reportcriticalvariables()
+local function reportcriticalvariables(cnfspec)
if trace_locating then
for i=1,#resolvers.criticalvars do
local k = resolvers.criticalvars[i]
@@ -11340,6 +11447,14 @@ local function reportcriticalvariables()
report_resolving("variable '%s' set to '%s'",k,v)
end
report_resolving()
+ if cnfspec then
+ if type(cnfspec) == "table" then
+ report_resolving("using configuration specification '%s'",concat(cnfspec,","))
+ else
+ report_resolving("using configuration specification '%s'",cnfspec)
+ end
+ end
+ report_resolving()
end
reportcriticalvariables = function() end
end
@@ -11354,7 +11469,7 @@ local function identify_configuration_files()
else
resolvers.luacnfstate = "environment"
end
- reportcriticalvariables()
+ reportcriticalvariables(cnfspec)
local cnfpaths = expandedpathfromlist(resolvers.splitpath(cnfspec))
local luacnfname = resolvers.luacnfname
for i=1,#cnfpaths do
@@ -11390,6 +11505,19 @@ local function load_configuration_files()
if blob then
local setups = instance.setups
local data = blob()
+local parent = data and data.parent
+if parent then
+ local filename = filejoin(pathname,parent)
+ local realname = resolvers.resolve(filename) -- no shortcut
+ local blob = loadfile(realname)
+ if blob then
+ local parentdata = blob()
+ if parentdata then
+ report_resolving("loading configuration file '%s'",filename)
+ data = table.merged(parentdata,data)
+ end
+ end
+end
data = data and data.content
if data then
if trace_locating then
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 23a957f92..8ffadc74b 100755
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -2527,9 +2527,39 @@ function file.join(...)
end
+-- We should be able to use:
+--
+-- function file.is_writable(name)
+-- local a = attributes(name) or attributes(dirname(name,"."))
+-- return a and sub(a.permissions,2,2) == "w"
+-- end
+--
+-- But after some testing Taco and I came up with:
+
function file.is_writable(name)
- local a = attributes(name) or attributes(dirname(name,"."))
- return a and sub(a.permissions,2,2) == "w"
+ if lfs.isdir(name) then
+ name = name .. "/m_t_x_t_e_s_t.tmp"
+ local f = io.open(name,"wb")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ elseif lfs.isfile(name) then
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ return true
+ end
+ else
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ end
+ return false
end
function file.is_readable(name)
@@ -3694,12 +3724,29 @@ end
local lpegmatch = lpeg.match
-local utftype = lpeg.patterns.utftype
+local patterns = lpeg.patterns
+local utftype = patterns.utftype
function unicode.filetype(data)
return data and lpegmatch(utftype,data) or "unknown"
end
+local toentities = lpeg.Cs (
+ (
+ patterns.utf8one
+ + (
+ patterns.utf8two
+ + patterns.utf8three
+ + patterns.utf8four
+ ) / function(s) local b = utfbyte(s) if b < 127 then return s else return format("&#%X;",b) end end
+ )^0
+)
+
+patterns.toentities = toentities
+
+function utf.toentities(str)
+ return lpegmatch(toentities,str)
+end
@@ -3759,7 +3806,7 @@ utilities = utilities or {}
utilities.tables = utilities.tables or { }
local tables = utilities.tables
-local format, gmatch = string.format, string.gmatch
+local format, gmatch, rep = string.format, string.gmatch, string.rep
local concat, insert, remove = table.concat, table.insert, table.remove
local setmetatable, getmetatable, tonumber, tostring = setmetatable, getmetatable, tonumber, tostring
@@ -3828,11 +3875,11 @@ end
-- experimental
-local function toxml(t,d,result)
+local function toxml(t,d,result,step)
for k, v in table.sortedpairs(t) do
if type(v) == "table" then
result[#result+1] = format("%s<%s>",d,k)
- toxml(v,d.." ",result)
+ toxml(v,d..step,result)
result[#result+1] = format("%s</%s>",d,k)
elseif tonumber(k) then
result[#result+1] = format("%s<entry n='%s'>%s</entry>",d,k,v,k)
@@ -3842,13 +3889,15 @@ local function toxml(t,d,result)
end
end
-function table.toxml(t,name,nobanner)
+function table.toxml(t,name,nobanner,indent,spaces)
local noroot = name == false
local result = (nobanner or noroot) and { } or { "<?xml version='1.0' standalone='yes' ?>" }
+ local indent = rep(" ",indent or 0)
+ local spaces = rep(" ",spaces or 1)
if noroot then
- toxml( t, "", result)
+ toxml( t, inndent, result, spaces)
else
- toxml( { [name or "root"] = t }, "", result)
+ toxml( { [name or "root"] = t }, indent, result, spaces)
end
return concat(result,"\n")
end
@@ -6653,6 +6702,10 @@ local function handle_any_entity(str)
a = entities[str]
end
if a then
+if type(a) == "function" then
+ report_xml("expanding entity &%s; (function)",str)
+ a = a(str) or ""
+end
if trace_entities then
report_xml("resolved entity &%s; -> %s (internal)",str,a)
end
@@ -6784,6 +6837,8 @@ local function normalentity(k,v ) entities[k] = v end
local function systementity(k,v,n) entities[k] = v end
local function publicentity(k,v,n) entities[k] = v end
+-- todo: separate dtd parser
+
local begindoctype = open * P("!DOCTYPE")
local enddoctype = close
local beginset = P("[")
@@ -6791,12 +6846,16 @@ local endset = P("]")
local doctypename = C((1-somespace-close)^0)
local elementdoctype = optionalspace * P("<!ELEMENT") * (1-close)^0 * close
+local basiccomment = begincomment * ((1 - endcomment)^0) * endcomment
+
local normalentitytype = (doctypename * somespace * value)/normalentity
local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity
local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity
local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype) * optionalspace * close
-local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + space)^0 * optionalspace * endset
+-- we accept comments in doctypes
+
+local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + basiccomment + space)^0 * optionalspace * endset
local definitiondoctype= doctypename * somespace * doctypeset
local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset
local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset
@@ -11136,8 +11195,56 @@ resolvers.criticalvars = allocate { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARE
resolvers.luacnfname = 'texmfcnf.lua'
resolvers.luacnfstate = "unknown"
--- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' -- what a rubish path
-resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c},}}'
+-- The web2c tex binaries as well as kpse have built in paths for the configuration
+-- files and there can be a depressing truckload of them. This is actually the weak
+-- spot of a distribution. So we don't want:
+--
+-- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}'
+--
+-- but instead use:
+--
+-- resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c}}'
+--
+-- which does not make texlive happy as there is a texmf-local tree one level up
+-- (sigh), so we need this. (We can assume web2c as mkiv does not run on older
+-- texlives anyway.
+--
+-- texlive:
+--
+-- selfautodir:
+-- selfautoparent:
+-- selfautodir:share/texmf-local/web2c
+-- selfautodir:share/texmf/web2c
+-- selfautodir:texmf-local/web2c
+-- selfautodir:texmf/web2c
+-- selfautoparent:share/texmf-local/web2c
+-- selfautoparent:share/texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf/web2c
+--
+-- minimals:
+--
+-- home:texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf-context/web2c
+-- selfautoparent:texmf/web2c
+
+if this_is_texlive then
+ -- resolvers.luacnfspec = '{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = '{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c;selfautoparent:/texmf{-local,}/web2c'
+ resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c'
+else
+ resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c'
+end
+
+-- which (as we want users to use the web2c path) be can be simplified to this:
+--
+-- if environment and environment.ownpath and string.find(environment.ownpath,"[\\/]texlive[\\/]") then
+-- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c,selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- else
+-- resolvers.luacnfspec = 'selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- end
@@ -11332,7 +11439,7 @@ local function makepathexpression(str)
end
end
-local function reportcriticalvariables()
+local function reportcriticalvariables(cnfspec)
if trace_locating then
for i=1,#resolvers.criticalvars do
local k = resolvers.criticalvars[i]
@@ -11340,6 +11447,14 @@ local function reportcriticalvariables()
report_resolving("variable '%s' set to '%s'",k,v)
end
report_resolving()
+ if cnfspec then
+ if type(cnfspec) == "table" then
+ report_resolving("using configuration specification '%s'",concat(cnfspec,","))
+ else
+ report_resolving("using configuration specification '%s'",cnfspec)
+ end
+ end
+ report_resolving()
end
reportcriticalvariables = function() end
end
@@ -11354,7 +11469,7 @@ local function identify_configuration_files()
else
resolvers.luacnfstate = "environment"
end
- reportcriticalvariables()
+ reportcriticalvariables(cnfspec)
local cnfpaths = expandedpathfromlist(resolvers.splitpath(cnfspec))
local luacnfname = resolvers.luacnfname
for i=1,#cnfpaths do
@@ -11390,6 +11505,19 @@ local function load_configuration_files()
if blob then
local setups = instance.setups
local data = blob()
+local parent = data and data.parent
+if parent then
+ local filename = filejoin(pathname,parent)
+ local realname = resolvers.resolve(filename) -- no shortcut
+ local blob = loadfile(realname)
+ if blob then
+ local parentdata = blob()
+ if parentdata then
+ report_resolving("loading configuration file '%s'",filename)
+ data = table.merged(parentdata,data)
+ end
+ end
+end
data = data and data.content
if data then
if trace_locating then
diff --git a/tex/context/base/anch-bar.mkii b/tex/context/base/anch-bar.mkii
index d08573c0f..39d5c7f77 100644
--- a/tex/context/base/anch-bar.mkii
+++ b/tex/context/base/anch-bar.mkii
@@ -5,7 +5,7 @@
%D subtitle=Margin Bars and alike,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-bar.mkiv b/tex/context/base/anch-bar.mkiv
index 1013e7609..47cd4835e 100644
--- a/tex/context/base/anch-bar.mkiv
+++ b/tex/context/base/anch-bar.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Margin Bars and alike,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-pgr.mkii b/tex/context/base/anch-pgr.mkii
index cc7ae77f4..ebcc3fc69 100644
--- a/tex/context/base/anch-pgr.mkii
+++ b/tex/context/base/anch-pgr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Positioning Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-pgr.mkiv b/tex/context/base/anch-pgr.mkiv
index afa881933..8f3804fae 100644
--- a/tex/context/base/anch-pgr.mkiv
+++ b/tex/context/base/anch-pgr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Positioning Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -238,7 +238,7 @@
\fi}
\appendtoks
- \let\dohandlepositionboxes\doinsertpositionboxes % was handle ?
+ \let\dohandlepositionboxes\doinsertpositionboxes % was handle ?
\to \everyinsertpositionaction
\def\docleanpositionboxes#1#2#3% pos tag setups
@@ -247,7 +247,7 @@
\fi}
\appendtoks
- \let\dohandlepositionboxes\docleanpositionboxes
+ \let\dohandlepositionboxes\docleanpositionboxes
\to \everycleanpositionaction
%D A position graphic is a normal (non||reused) \METAPOST\
@@ -352,7 +352,7 @@
\fi}
\appendtoks
- \let\dohandleMPpositiongraphic\doinsertMPpositiongraphic
+ \let\dohandleMPpositiongraphic\doinsertMPpositiongraphic
\to \everyinsertpositionaction
\def\docleanMPpositiongraphic#1#2#3% pos tag setups
@@ -361,7 +361,7 @@
\fi}
\appendtoks
- \let\dohandleMPpositiongraphic\docleanMPpositiongraphic
+ \let\dohandleMPpositiongraphic\docleanMPpositiongraphic
\to \everycleanpositionaction
%D Graphics that span two positions (beware, does not cross pages).
@@ -399,7 +399,7 @@
\fi}
\appendtoks
- \let\dohandleMPpositiongraphicrange\doinsertMPpositiongraphicrange
+ \let\dohandleMPpositiongraphicrange\doinsertMPpositiongraphicrange
\to \everyinsertpositionaction
\def\docleanMPpositiongraphicrange#1#2#3#4% pos tag setups
@@ -408,7 +408,7 @@
\fi}
\appendtoks
- \let\dohandleMPpositiongraphicrange\docleanMPpositiongraphicrange
+ \let\dohandleMPpositiongraphicrange\docleanMPpositiongraphicrange
\to \everycleanpositionaction
% will be overloaded, and/or code below moved to core-box
@@ -609,15 +609,15 @@
\ifx\totalnofparbackgrounds\undefined \newcounter\totalnofparbackgrounds \fi
\appendtoks
- \expanded{\savecurrentvalue\noexpand\totalnofparbackgrounds{\number\nofparbackgrounds}}%
+ \expanded{\savecurrentvalue\noexpand\totalnofparbackgrounds{\number\nofparbackgrounds}}%
\to \everybye
% actually we can just ask lua to give us the nofpositions (or a least n<>0)
\appendtoks
- % a position can be mid paragraph in which case we're behind
- % this will change when we move positions to lua
- \initializeparbackgrounds
+ % a position can be mid paragraph in which case we're behind
+ % this will change when we move positions to lua
+ \initializeparbackgrounds
\to \everystarttext
\def\initializeparbackgrounds
@@ -1362,8 +1362,8 @@
\box\scratchbox}
\appendtoks
- \global\advance\noftabpositions\plusone
- \global\setfalse\tablehaspositions
+ \global\advance\noftabpositions\plusone
+ \global\setfalse\tablehaspositions
\to \everytabulate
% We need to handle paragraphs as well.
@@ -1386,16 +1386,19 @@
\iftrialtypesetting\else\ifconditional\tablehaspositions\doflushtabulateepos\fi\fi}
\appendtoks
- \let\dotablebpos\dotabulatebpos
- \let\dotableepos\dotabulateepos
- \glet\doflushtabulateepos\relax
+ \let\dotablebpos\dotabulatebpos
+ \let\dotableepos\dotabulateepos
+ \glet\doflushtabulateepos\relax
\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
+ \let\GSC\tbGSC
+ \let\GFC\tbGFC
+ \let\GTC\tbGTC
+ \let\XC \tbXC
\to \everytabulate
%D \macros
@@ -1435,14 +1438,17 @@
\def\normalTABLEquote {\unskip\!ttRightGlue&\omit\tablepos&} % "
\appendtoks
- \global\advance\noftabpositions\plusone
- \global\setfalse\tablehaspositions
+ \global\advance\noftabpositions\plusone
+ \global\setfalse\tablehaspositions
\to \everytable
%D Since we don't want nameclashes:
\appendtoks
- \let\GSC\tbGSC \let\GFC\tbGFC \let\GTC\tbGTC \let\XC\tbXC
+ \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
diff --git a/tex/context/base/anch-pos.mkii b/tex/context/base/anch-pos.mkii
index c793f7ba4..b86cee5cc 100644
--- a/tex/context/base/anch-pos.mkii
+++ b/tex/context/base/anch-pos.mkii
@@ -5,7 +5,7 @@
%D subtitle=Positioning Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-pos.mkiv b/tex/context/base/anch-pos.mkiv
index dc231bcff..2893e5e2c 100644
--- a/tex/context/base/anch-pos.mkiv
+++ b/tex/context/base/anch-pos.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Positioning Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-snc.mkii b/tex/context/base/anch-snc.mkii
index cf5b35d69..01704e0c8 100644
--- a/tex/context/base/anch-snc.mkii
+++ b/tex/context/base/anch-snc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Synchronization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/anch-snc.mkiv b/tex/context/base/anch-snc.mkiv
index f976047c9..4940ff274 100644
--- a/tex/context/base/anch-snc.mkiv
+++ b/tex/context/base/anch-snc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Synchronization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/attr-col.mkiv b/tex/context/base/attr-col.mkiv
index 8d61ee8ae..268c2d362 100644
--- a/tex/context/base/attr-col.mkiv
+++ b/tex/context/base/attr-col.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Color,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/attr-eff.mkiv b/tex/context/base/attr-eff.mkiv
index 3526276c7..c78893307 100644
--- a/tex/context/base/attr-eff.mkiv
+++ b/tex/context/base/attr-eff.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Effects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/attr-ini.lua b/tex/context/base/attr-ini.lua
index 96d7c7228..d29809706 100644
--- a/tex/context/base/attr-ini.lua
+++ b/tex/context/base/attr-ini.lua
@@ -34,7 +34,9 @@ storage.register("attributes/list", list, "attributes.list")
function attributes.define(name,number) -- at the tex end
if not numbers[name] then
- numbers[name], names[number], list[number] = number, name, { }
+ numbers[name] = number
+ names[number] = name
+ list[number] = { }
end
end
diff --git a/tex/context/base/attr-ini.mkiv b/tex/context/base/attr-ini.mkiv
index ba6ca369f..578d02c27 100644
--- a/tex/context/base/attr-ini.mkiv
+++ b/tex/context/base/attr-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/attr-lay.mkiv b/tex/context/base/attr-lay.mkiv
index b1f3c944e..293122f42 100644
--- a/tex/context/base/attr-lay.mkiv
+++ b/tex/context/base/attr-lay.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Viewerlayers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/attr-neg.mkiv b/tex/context/base/attr-neg.mkiv
index 2b817bb71..dc8f5e4f9 100644
--- a/tex/context/base/attr-neg.mkiv
+++ b/tex/context/base/attr-neg.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Negation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua
index 7f52223a1..7e27bd259 100644
--- a/tex/context/base/back-exp.lua
+++ b/tex/context/base/back-exp.lua
@@ -12,14 +12,18 @@ if not modules then modules = { } end modules ['back-exp'] = {
-- Because we need to look ahead we now always build a tree (this was optional in
-- the beginning). The extra overhead in the frontend is neglectable.
--- We can consider replacing attributes by the hash entry ... slower in resolving but it's still
--- quite okay.
+-- We can consider replacing attributes by the hash entry ... slower
+-- in resolving but it's still quite okay.
-- todo: less attributes e.g. internal only first node
-- todo: build xml tree in mem (handy for cleaning)
-- delimited: left/right string (needs marking)
+-- we can optimize the code ... currently the overhead is some 10% for xml + html
+
+-- option: pack strings each page so that we save memory
+
local nodecodes = nodes.nodecodes
local traverse_nodes = node.traverse
local hlist_code = nodecodes.hlist
@@ -46,14 +50,13 @@ nodes.locate = locate
local next, type = next, type
local format, match, concat, rep, sub, gsub, gmatch = string.format, string.match, table.concat, string.rep, string.sub, string.gsub, string.gmatch
local lpegmatch = lpeg.match
-local utfchar, utfsub = utf.char, utf.sub
+local utfchar, utfbyte, utfsub, utfgsub = utf.char, utf.byte, utf.sub, utf.gsub
local insert, remove = table.insert, table.remove
local trace_export = false trackers.register ("structures.export", function(v) trace_export = v end)
-local trace_spaces = false trackers.register ("structures.export.spaces", function(v) trace_spaces = v end)
-local trace_tree = false trackers.register ("structures.export.showtree", function(v) trace_tree = v end)
local less_state = false directives.register("structures.export.lessstate", function(v) less_state = v end)
local page_breaks = false directives.register("structures.export.pagebreaks", function(v) page_breaks = v end)
+local show_comment = true directives.register("structures.export.comment", function(v) show_comment = v end)
local report_export = logs.reporter("backend","export")
@@ -86,9 +89,14 @@ local refximage_code = whatsitcodes.pdfrefximage
local userskip_code = skipcodes.userskip
local rightskip_code = skipcodes.rightskip
local parfillskip_code = skipcodes.parfillskip
+local spaceskip_code = skipcodes.spaceskip
+local xspaceskip_code = skipcodes.xspaceskip
local line_code = listcodes.line
+local a_characters = attributes.private('characters')
+local a_exportstatus = attributes.private('exportstatus')
+
local a_tagged = attributes.private('tagged')
local a_image = attributes.private('image')
@@ -100,10 +108,16 @@ local a_taggedpacked = attributes.private("taggedpacked")
local a_taggedsymbol = attributes.private("taggedsymbol")
local a_taggedinsert = attributes.private("taggedinsert")
local a_taggedtag = attributes.private("taggedtag")
+local a_mathcategory = attributes.private("mathcategory")
+local a_mathmode = attributes.private("mathmode")
local a_reference = attributes.private('reference')
+local a_textblock = attributes.private("textblock")
+
local has_attribute = node.has_attribute
+local set_attribute = node.set_attribute
+local traverse_id = node.traverse_id
local traverse_nodes = node.traverse
local slide_nodelist = node.slide
local texattribute = tex.attribute
@@ -116,32 +130,48 @@ local taglist = structurestags.taglist
local properties = structurestags.properties
local userdata = structurestags.userdata -- might be combines with taglist
local tagdata = structurestags.data
+local tagmetadata = structurestags.metadata
local starttiming = statistics.starttiming
local stoptiming = statistics.stoptiming
-- todo: more locals (and optimize)
-local version = "0.20"
-local result = nil -- todo: nofresult
-local entry = nil
-local attributehash = { }
-local hyphen = utfchar(0xAD) -- todo: also emdash etc
-local colonsplitter = lpeg.splitat(":")
-local dashsplitter = lpeg.splitat("-")
-local threshold = 65536
-local indexing = false
-local linedone = false
-local inlinedepth = 0
-local tree = { data = { }, depth = 0 } -- root
-local treestack = { }
-local treehash = { }
-local extras = { }
-local nofbreaks = 0
-local used = { }
-local exporting = false
-local last = nil
-local lastpar = nil
+local exportversion = "0.22"
+
+local nofcurrentcontent = 0 -- so we don't free (less garbage collection)
+local currentcontent = { }
+local currentnesting = nil
+local currentattribute = nil
+local last = nil
+local currentparagraph = nil
+
+local noftextblocks = 0
+
+local attributehash = { } -- to be considered: set the values at the tex end
+local hyphen = utfchar(0xAD) -- todo: also emdash etc
+local colonsplitter = lpeg.splitat(":")
+local dashsplitter = lpeg.splitat("-")
+local threshold = 65536
+local indexing = false
+
+local treestack = { }
+local nesting = { }
+local currentdepth = 0
+
+local tree = { data = { }, depth = 0, fulltag == "root" } -- root
+local treeroot = tree
+local treehash = { }
+local extras = { }
+local nofbreaks = 0
+local used = { }
+local exporting = false
+local restart = false
+local specialspaces = { [0x20] = " " } -- for conversion
+local somespace = { [0x20] = true, [" "] = true } -- for testing
+local entities = { ["&"] = "&amp;", [">"] = "&gt;", ["<"] = "&lt;" }
+
+local defaultnature = "mixed" -- "inline"
setmetatableindex(used, function(t,k)
if k then
@@ -151,16 +181,15 @@ setmetatableindex(used, function(t,k)
end
end)
-local joiner_1 = " "
-local joiner_2 = " " -- todo: test if this one can always be ""
-local joiner_3 = " "
-local joiner_4 = " "
-local joiner_5 = " "
-local joiner_6 = " "
-local joiner_7 = "\n"
-local joiner_8 = " "
-local joiner_9 = " "
-local joiner_0 = " "
+setmetatableindex(specialspaces, function(t,k)
+ local v = utfchar(k)
+ t[k] = v
+ entities[v] = format("&#%X;",k)
+ somespace[k] = true
+ somespace[v] = true
+ return v
+end)
+
local namespaced = {
-- filled on
@@ -185,13 +214,19 @@ local namespaces = {
merror = "m",
math = "m",
mrow = "m",
+ mtable = "m",
+ mtr = "m",
+ mtd = "m",
+ mfenced = "m",
}
setmetatableindex(namespaced, function(t,k)
- local namespace = namespaces[k]
- local v = namespace and namespace .. ":" .. k or k
- t[k] = v
- return v
+ if k then
+ local namespace = namespaces[k]
+ local v = namespace and namespace .. ":" .. k or k
+ t[k] = v
+ return v
+ end
end)
-- local P, C, Cc = lpeg.P, lpeg.C, lpeg.Cc
@@ -218,24 +253,45 @@ end
local spaces = { } -- watch how we also moved the -1 in depth-1 to the creator
-setmetatableindex(spaces, function(t,k) t[k] = rep(" ",k-1) return t[k] end)
+setmetatableindex(spaces, function(t,k) local s = rep(" ",k-1) t[k] = s return s end)
+
+function structurestags.setattributehash(fulltag,key,value)
+ if type(fulltag) == "number" then
+ fulltag = taglist[fulltag]
+ if fulltag then
+ fulltag = fulltag[#fulltag]
+ end
+ end
+ if fulltag then
+ local ah = attributehash[fulltag] -- could be metatable magic
+ if not ah then
+ ah = { }
+ attributehash[fulltag] = ah
+ end
+ ah[key] = value
+ end
+end
properties.vspace = { export = "break", nature = "display" }
properties.pbreak = { export = "pagebreak", nature = "display" }
-local function makebreak(entry)
+local function makebreaklist(list)
nofbreaks = nofbreaks + 1
- local t, tl = { }, entry[1]
- if tl then
- for i=1,#tl do
- t[i] = tl[i]
+ local t = { }
+ if list then
+ for i=1,#list do
+ t[i] = list[i]
end
end
- t[#t+1] = "break-" .. nofbreaks
- return { t, { "" }, 0, 0 }
+ t[#t+1] = "break-" .. nofbreaks -- maybe no number
+ return t
end
-local function makebreaknode(node)
+local breakattributes = {
+ type = "collapse"
+}
+
+local function makebreaknode(node) -- maybe no fulltag
nofbreaks = nofbreaks + 1
return {
tg = "break",
@@ -244,31 +300,49 @@ local function makebreaknode(node)
depth = node.depth,
element = "break",
nature = "display",
- data = { },
- attribute = { } ,
- parnumber = 0,
+ -- attributes = breakattributes,
+ -- data = { }, -- not needed
+ -- attribute = 0, -- not needed
+ -- parnumber = 0,
}
end
local fields = { "title", "subtitle", "author", "keywords" }
-function extras.document(handle,element,detail,n,fulltag,hash)
- handle:write(format(" language=%q",languagenames[tex.count.mainlanguagenumber]))
+local function checkdocument(root)
+ local data = root.data
+ if data then
+ for i=1,#data do
+ local di = data[i]
+ if type(di) == "table" then
+ if di.tg == "ignore" then
+ di.element = ""
+ else
+ checkdocument(di)
+ end
+ end
+ end
+ end
+end
+
+function extras.document(result,element,detail,n,fulltag,di)
+ result[#result+1] = format(" language=%q",languagenames[tex.count.mainlanguagenumber])
if not less_state then
- handle:write(format(" file=%q",tex.jobname))
- handle:write(format(" date=%q",os.date()))
- handle:write(format(" context=%q",environment.version))
- handle:write(format(" version=%q",version))
- handle:write(format(" xmlns:m=%q","http://www.w3.org/1998/Math/MathML"))
+ result[#result+1] = format(" file=%q",tex.jobname)
+ result[#result+1] = format(" date=%q",os.date())
+ result[#result+1] = format(" context=%q",environment.version)
+ result[#result+1] = format(" version=%q",exportversion)
+ result[#result+1] = format(" xmlns:m=%q","http://www.w3.org/1998/Math/MathML")
local identity = interactions.general.getidentity()
for i=1,#fields do
local key = fields[i]
local value = identity[key]
if value and value ~= "" then
- handle:write(format(" %s=%q",key,value))
+ result[#result+1] = format(" %s=%q",key,value)
end
end
end
+ checkdocument(di)
end
local snames, snumbers = { }, { }
@@ -319,51 +393,51 @@ function structurestags.setdescriptionid(tag,n)
end
end
-function extras.descriptiontag(handle,element,detail,n,fulltag,di)
+function extras.descriptiontag(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.insert
v = v and insertids[v]
if v then
- handle:write(" insert='",v,"'")
+ result[#result+1] = format(" insert='%s'",v)
end
end
end
-function extras.descriptionsymbol(handle,element,detail,n,fulltag,di)
+function extras.descriptionsymbol(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.insert
v = v and insertids[v]
if v then
- handle:write(" insert='",v,"'")
+ result[#result+1] = format(" insert='%s'",v)
end
end
end
-function extras.synonym(handle,element,detail,n,fulltag,di)
+function extras.synonym(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.tag
v = v and synonymnames[v]
if v then
- handle:write(" tag='",v,"'")
+ result[#result+1] = format(" tag='%s'",v)
end
end
end
-function extras.sorting(handle,element,detail,n,fulltag,di)
+function extras.sorting(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.tag
v = v and sortingnames[v]
if v then
- handle:write(" tag='",v,"'")
+ result[#result+1] = format(" tag='%s'",v)
end
end
end
-function extras.image(handle,element,detail,n,fulltag,di)
+function extras.image(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.imageindex
@@ -375,13 +449,13 @@ function extras.image(handle,element,detail,n,fulltag,di)
local path = file.dirname(fullname)
local page = figure.page or 1
if name ~= "" then
- handle:write(" name='",name,"'")
+ result[#result+1] = format(" name='%s'",name)
end
if path ~= "" then
- handle:write(" path='",path,"'")
+ result[#result+1] = format(" path='%s'",path)
end
if page > 1 then
- handle:write(" page='",page,"'")
+ result[#result+1] = format(" page='%s'",page)
end
end
end
@@ -393,37 +467,37 @@ end
local evaluators = { }
local specials = { }
-evaluators.inner = function(handle,var)
+evaluators.inner = function(result,var)
local inner = var.inner
- if var.inner then
- handle:write(" location='",inner,"'")
+ if inner then
+ result[#result+1] = format(" location='%s'",inner)
end
end
-evaluators.outer = function(handle,var)
+evaluators.outer = function(result,var)
local file, url = references.checkedfileorurl(var.outer,var.outer)
if url then
- handle:write(" url='",url,"'")
+ result[#result+1] = format(" url='%s'",url)
elseif file then
- handle:write(" file='",file,"'")
+ result[#result+1] = format(" file='%s'",file)
end
end
-evaluators["outer with inner"] = function(handle,var)
+evaluators["outer with inner"] = function(result,var)
local file = references.checkedfile(var.f)
if file then
- handle:write(" file='",file,"'")
+ result[#result+1] = format(" file='%s'",file)
end
local inner = var.inner
- if var.inner then
- handle:write(" location='",inner,"'")
+ if inner then
+ result[#result+1] = format(" location='%s'",inner)
end
end
-evaluators.special = function(handle,var)
+evaluators.special = function(result,var)
local handler = specials[var.special]
if handler then
- handler(handle,var)
+ handler(result,var)
end
end
@@ -431,80 +505,80 @@ evaluators["special outer with operation"] = evaluators.special
evaluators["special operation"] = evaluators.special
evaluators["special operation with arguments"] = evaluators.special
-function specials.url(handle,var)
+function specials.url(result,var)
local url = references.checkedurl(var.operation)
if url then
- handle:write(" url='",url,"'")
+ result[#result+1] = format(" url='%s'",url)
end
end
-function specials.file(handle,var)
+function specials.file(result,var)
local file = references.checkedfile(var.operation)
if file then
- handle:write(" file='",file,"'")
+ result[#result+1] = format(" file='%s'",file)
end
end
-function specials.fileorurl(handle,var)
+function specials.fileorurl(result,var)
local file, url = references.checkedfileorurl(var.operation,var.operation)
if url then
- handle:write(" url='",url,"'")
+ result[#result+1] = format(" url='%s'",url)
elseif file then
- handle:write(" file='",file,"'")
+ result[#result+1] = format(" file='%s'",file)
end
end
-function specials.internal(handle,var)
+function specials.internal(result,var)
local internal = references.checkedurl(var.operation)
if internal then
- handle:write(" location='aut:",internal,"'")
+ result[#result+1] = format(" location='aut:%s'",internal)
end
end
-local function adddestination(handle,references) -- todo: specials -> exporters and then concat
+local function adddestination(result,references) -- todo: specials -> exporters and then concat
if references then
local reference = references.reference
if reference and reference ~= "" then
local prefix = references.prefix
if prefix and prefix ~= "" then
- handle:write(" prefix='",prefix,"'")
+ result[#result+1] = format(" prefix='%s'",prefix)
end
- handle:write(" destination='",reference,"'")
+ result[#result+1] = format(" destination='%s'",reference)
for i=1,#references do
local r = references[i]
local e = evaluators[r.kind]
if e then
- e(handle,r)
+ e(result,r)
end
end
end
end
end
-local function addreference(handle,references)
+local function addreference(result,references)
if references then
local reference = references.reference
if reference and reference ~= "" then
local prefix = references.prefix
if prefix and prefix ~= "" then
- handle:write(" prefix='",prefix,"'")
+ result[#result+1] = format(" prefix='%s'",prefix)
end
- handle:write(" reference='",reference,"'")
+ result[#result+1] = format(" reference='%s'",reference)
end
local internal = references.internal
if internal and internal ~= "" then
- handle:write(" location='aut:",internal,"'")
+ result[#result+1] = format(" location='aut:%s'",internal)
end
end
end
-function extras.link(handle,element,detail,n,fulltag,di)
+function extras.link(result,element,detail,n,fulltag,di)
-- for instance in lists a link has nested elements and no own text
local hash = attributehash[fulltag]
if hash then
local references = hash.reference
if references then
- adddestination(handle,structures.references.get(references))
+ adddestination(result,structures.references.get(references))
end
return true
else
@@ -512,7 +586,7 @@ function extras.link(handle,element,detail,n,fulltag,di)
if data then
for i=1,#data do
local di = data[i]
- if di and extras.link(handle,element,detail,n,di.fulltag,di) then
+ if di and extras.link(result,element,detail,n,di.fulltag,di) then
return true
end
end
@@ -520,10 +594,297 @@ function extras.link(handle,element,detail,n,fulltag,di)
end
end
-function extras.section(handle,element,detail,n,fulltag,di)
+local automathrows = true directives.register("backend.export.math.autorows", function(v) automathrows = v end)
+local automathapply = true directives.register("backend.export.math.autoapply", function(v) automathapply = v end)
+local automathnumber = true directives.register("backend.export.math.autonumber", function(v) automathnumber = v end)
+local automathstrip = true directives.register("backend.export.math.autostrip", function(v) automathstrip = v end)
+
+local functions = mathematics.categories.functions
+
+local function collapse(di,i,data,ndata,detail,element)
+ local collapsing = di.data
+ if data then
+ di.element = element
+ di.detail = nil
+ i = i + 1
+ while i <= ndata do
+ local dn = data[i]
+ if dn.detail == detail then
+ collapsing[#collapsing+1] = dn.data[1]
+ dn.skip = "ignore"
+ i = i + 1
+ else
+ break
+ end
+ end
+ end
+ return i
+end
+
+local function collapse_mn(di,i,data,ndata)
+ local collapsing = di.data
+ if data then
+ i = i + 1
+ while i <= ndata do
+ local dn = data[i]
+ local tg = dn.tg
+ if tg == "mn" then
+ collapsing[#collapsing+1] = dn.data[1]
+ dn.skip = "ignore"
+ i = i + 1
+ elseif tg == "mo" then
+ local d = dn.data[1]
+ if d == "." then
+ collapsing[#collapsing+1] = d
+ dn.skip = "ignore"
+ i = i + 1
+ else
+ break
+ end
+ else
+ break
+ end
+ end
+ end
+ return i
+end
+
+-- maybe delay __i__ till we need it
+
+local function checkmath(root) -- we can provide utf.toentities as an option
+ local data = root.data
+ if data then
+ local ndata = #data
+ local roottg = root.tg
+ if roottg == "msubsup" then
+ local nucleus, superscript, subscript
+ for i=1,ndata do
+ if type(data[i]) == "table" then
+ if not nucleus then
+ nucleus = i
+ elseif not superscript then
+ superscript = i
+ elseif not subscript then
+ subscript = i
+ else
+ -- error
+ end
+ end
+ end
+ if superscript and subscript then
+ local sup, sub = data[superscript], data[subscript]
+ data[superscript], data[subscript] = sub, sup
+ -- sub.__o__, sup.__o__ = subscript, superscript
+ sub.__i__, sup.__i__ = superscript, subscript
+ end
+ elseif roottg == "mfenced" then
+ local new, n = { }, 0
+ local attributes = { }
+ root.attributes = attributes
+ for i=1,ndata do
+ local di = data[i]
+ if type(di) == "table" then
+ local tg = di.tg
+ if tg == "mleft" then
+ attributes.left = tostring(di.data[1].data[1])
+ elseif tg == "mmiddle" then
+ attributes.middle = tostring(di.data[1].data[1])
+ elseif tg == "mright" then
+ attributes.right = tostring(di.data[1].data[1])
+ else
+ n = n + 1
+ di.__i__ = n
+ new[n] = di
+ end
+ else
+ n = n + 1
+ new[n] = di
+ end
+ end
+ root.data = new
+ ndata = n
+ end
+ if ndata == 0 then
+ return
+ elseif ndata == 1 then
+ local d = data[1]
+ if type(d) ~= "table" then
+ return -- can be string or false
+ elseif #root.data == 1 then
+ local tg = d.tg
+ if automathrows and roottg == "mrow" then
+ if tg == "mrow" or tg == "mfenced" or tg == "mfrac" or tg == "mroot" then
+ root.skip = "comment"
+ end
+ elseif roottg == "mo" then
+ if tg == "mo" then
+ root.skip = "comment"
+ end
+ end
+ end
+ end
+ local i = 1
+ while i <= ndata do -- -- -- TOO MUCH NESTED CHECKING -- -- --
+ local di = data[i]
+ if di and type(di) == "table" then
+ local tg = di.tg
+ local detail = di.detail
+ if tg == "math" then
+ -- di.element = "mrow" -- when properties
+ di.skip = "comment"
+ checkmath(di)
+ i = i + 1
+ elseif tg == "mover" or tg == "munder" or tg == "munderover" then
+ if detail == "accent" then
+ di.attributes = { accent = "true" }
+ di.detail = nil
+ end
+ checkmath(di)
+ i = i + 1
+ elseif tg == "break" then
+ di.skip = "comment"
+ i = i + 1
+ elseif detail then
+ -- no checkmath(di) here
+ local category = tonumber(detail) or 0
+ if category == 1 then -- mo
+ i = collapse(di,i,data,ndata,detail,"mo")
+ elseif category == 2 then -- mi
+ i = collapse(di,i,data,ndata,detail,"mi")
+ elseif category == 3 then -- mn
+ i = collapse(di,i,data,ndata,detail,"mn")
+ elseif category == 4 then -- ms
+ i = collapse(di,i,data,ndata,detail,"ms")
+ elseif category >= 1000 then
+ local apply = category >= 2000
+ if apply then
+ category = category - 1000
+ end
+ if tg == "mi" then -- function
+ if root.tg == "mrow" then
+ root.skip = "comment"
+ root.element = "function"
+ end
+ i = collapse(di,i,data,ndata,detail,"mi")
+ local tag = functions[category]
+ if tag then
+ di.data = { tag }
+ end
+ if apply then
+ di.after = {
+ {
+ element = "mo",
+ -- comment = "apply function",
+ -- data = { utfchar(0x2061) },
+ data = { "&#x2061;" },
+ nature = "mixed",
+ depth = di.depth,
+ }
+ }
+ elseif automathapply then -- make function
+ local following
+ if i <= ndata then
+ -- normally not the case
+ following = data[i]
+ else
+ local parent = di.__p__ -- == root
+ if parent.tg == "mrow" then
+ parent = parent.__p__
+ end
+ local index = parent.__i__
+ following = parent.data[index+1]
+ end
+ if following then
+ local tg = following.tg
+ if tg == "mrow" or tg == "mfenced" then -- we need to figure out the right condition
+ di.after = {
+ {
+ element = "mo",
+ -- comment = "apply function",
+ -- data = { utfchar(0x2061) },
+ data = { "&#x2061;" },
+ nature = "mixed",
+ depth = di.depth,
+ }
+ }
+ end
+ end
+ end
+ else -- some problem
+ checkmath(di)
+ i = i + 1
+ end
+ else
+ checkmath(di)
+ i = i + 1
+ end
+ elseif automathnumber and tg == "mn" then
+ checkmath(di)
+ i = collapse_mn(di,i,data,ndata)
+ else
+ checkmath(di)
+ i = i + 1
+ end
+ else -- can be string or boolean
+ if parenttg ~= "mtext" and di == " " then
+ data[i] = false
+ end
+ i = i + 1
+ end
+ end
+ end
+end
+
+function stripmath(di)
+ local tg = di.tg
+ if tg == "mtext" or tg == "ms" then
+ return di
+ else
+ local data = di.data
+ local ndata = #data
+ local n = 0
+ for i=1,ndata do
+ local di = data[i]
+ if type(di) == "table" then
+ di = stripmath(di)
+ end
+ if not di or di == " " or di == "" then
+ -- skip
+ elseif type(di) == "table" then
+ n = n + 1
+ di.__i__ = n
+ data[n] = di
+ else
+ n = n + 1
+ data[n] = di
+ end
+ end
+ for i=ndata,n+1,-1 do
+ data[i] = nil
+ end
+ if #data > 0 then
+ return di
+ end
+ end
+end
+
+function extras.math(result,element,detail,n,fulltag,di)
+ if di then
+ local hash = attributehash[di.fulltag]
+ di.attributes = {
+ display = (hash and hash.mode) == "display" and "block" or "inline"
+ }
+ if automathstrip then
+ stripmath(di)
+ end
+ checkmath(di)
+ end
+end
+
+function extras.section(result,element,detail,n,fulltag,di)
local data = listdata[fulltag]
if data then
- addreference(handle,data.references)
+ addreference(result,data.references)
return true
else
local data = di.data
@@ -532,7 +893,7 @@ function extras.section(handle,element,detail,n,fulltag,di)
local di = data[i]
if di then
local ft = di.fulltag
- if ft and extras.section(handle,element,detail,n,ft,di) then
+ if ft and extras.section(result,element,detail,n,ft,di) then
return true
end
end
@@ -541,17 +902,17 @@ function extras.section(handle,element,detail,n,fulltag,di)
end
end
-function extras.float(handle,element,detail,n,fulltag,di)
+function extras.float(result,element,detail,n,fulltag,di)
local data = listdata[fulltag]
if data then
- addreference(handle,data.references)
+ addreference(result,data.references)
return true
else
local data = di.data
if data then
for i=1,#data do
local di = data[i]
- if di and extras.section(handle,element,detail,n,di.fulltag,di) then
+ if di and extras.section(result,element,detail,n,di.fulltag,di) then
return true
end
end
@@ -559,28 +920,30 @@ function extras.float(handle,element,detail,n,fulltag,di)
end
end
-function extras.itemgroup(handle,element,detail,n,fulltag,di)
+function extras.itemgroup(result,element,detail,n,fulltag,di)
local data = di.data
- for i=1,#data do
- local di = data[i]
- if type(di) == "table" and di.tg == "item" then
- local ddata = di.data
- for i=1,#ddata do
- local ddi = ddata[i]
- if type(ddi) == "table" then
- local tg = ddi.tg
- if tg == "itemtag" or tg == "itemcontent" then
- local hash = attributehash[ddi.fulltag]
- if hash then
- local v = hash.packed
- if v and v == 1 then
- handle:write(" packed='yes'")
- end
- local v = hash.symbol
- if v then
- handle:write(" symbol='",snames[v],"'")
+ if data then
+ for i=1,#data do
+ local di = data[i]
+ if type(di) == "table" and di.tg == "item" then
+ local ddata = di.data
+ for i=1,#ddata do
+ local ddi = ddata[i]
+ if type(ddi) == "table" then
+ local tg = ddi.tg
+ if tg == "itemtag" or tg == "itemcontent" then
+ local hash = attributehash[ddi.fulltag]
+ if hash then
+ local v = hash.packed
+ if v and v == 1 then
+ result[#result+1] = " packed='yes'"
+ end
+ local v = hash.symbol
+ if v then
+ result[#result+1] = format(" symbol='%s'",snames[v])
+ end
+ return
end
- return
end
end
end
@@ -589,276 +952,246 @@ function extras.itemgroup(handle,element,detail,n,fulltag,di)
end
end
-function extras.tablecell(handle,element,detail,n,fulltag,di)
+function extras.tablecell(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.align
if not v or v == 0 then
-- normal
elseif v == 1 then
- handle:write(" align='flushright'")
+ result[#result+1] = " align='flushright'"
elseif v == 2 then
- handle:write(" align='middle'")
+ result[#result+1] = " align='middle'"
elseif v == 3 then
- handle:write(" align='flushleft'")
+ result[#result+1] = " align='flushleft'"
end
local v = hash.columns
if v and v > 1 then
- handle:write(" columns='",v,"'")
+ result[#result+1] = format(" columns='%s'",v)
end
local v = hash.rows
if v and v > 1 then
- handle:write(" rows='",v,"'")
+ result[#result+1] = format(" rows='%s'",v)
end
end
end
-function extras.tabulatecell(handle,element,detail,n,fulltag,di)
+function extras.tabulatecell(result,element,detail,n,fulltag,di)
local hash = attributehash[fulltag]
if hash then
local v = hash.align
if not v or v == 0 then
-- normal
elseif v == 1 then
- handle:write(" align='flushright'")
+ result[#result+1] = " align='flushright'"
elseif v == 2 then
- handle:write(" align='middle'")
+ result[#result+1] = " align='middle'"
elseif v == 3 then
- handle:write(" align='flushleft'")
+ result[#result+1] = " align='flushleft'"
end
end
end
-local function emptytag(handle,element,nature,depth)
- handle:write("\n",spaces[depth],"<",namespaced[element],"/>\n")
+-- flusher
+
+local linedone = false -- can go ... we strip newlines anyway
+local inlinedepth = 0
+
+local function emptytag(result,element,nature,depth)
+ if linedone then
+ result[#result+1] = format("%s<%s/>\n",spaces[depth],namespaced[element])
+ else
+ result[#result+1] = format("\n%s<%s/>\n",spaces[depth],namespaced[element])
+ end
+ linedone = false
end
-local function begintag(handle,element,nature,depth,di,empty)
- local detail, n, fulltag = di.detail, di.n, di.fulltag
+local function begintag(result,element,nature,depth,di,skip)
+ -- if needed we can use a local result with xresult
+--~ local result = { }
+ local detail = di.detail
+ local n = di.n
+ local fulltag = di.fulltag
+ local comment = di.comment
if nature == "inline" then
linedone = false
inlinedepth = inlinedepth + 1
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->",comment)
+ end
elseif nature == "mixed" then
if inlinedepth > 0 then
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->",comment)
+ end
elseif linedone then
- handle:write(spaces[depth])
+ result[#result+1] = spaces[depth]
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->",comment)
+ end
else
- handle:write("\n",spaces[depth])
+ result[#result+1] = format("\n%s",spaces[depth])
linedone = false
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->\n%s",comment,spaces[depth])
+ end
end
inlinedepth = inlinedepth + 1
else
if inlinedepth > 0 then
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->",comment)
+ end
elseif linedone then
- handle:write(spaces[depth])
+ result[#result+1] = spaces[depth]
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->",comment)
+ end
else
- handle:write("\n",spaces[depth])
+ result[#result+1] = format("\n%s",spaces[depth]) -- can introduced extra line in mixed+mixed (filtered later on)
linedone = false
+ if show_comment and comment then
+ result[#result+1] = format("<!-- %s -->\n%s",comment,spaces[depth])
+ end
end
end
- handle:write("<",namespaced[element])
- if detail then
- handle:write(" detail='",detail,"'")
- end
- if indexing and n then
- handle:write(" n='",n,"'")
- end
- local extra = extras[element]
- if extra then
- extra(handle,element,detail,n,fulltag,di)
- end
- local u = userdata[fulltag]
- if u then
- for k, v in next, u do
- handle:write(format(" %s=%q",k,v))
+ if skip == "comment" then
+ if show_comment then
+ result[#result+1] = format("<!-- begin %s -->",namespaced[element])
+ end
+ elseif skip then
+ -- ignore
+ else
+ result[#result+1] = format("<%s",namespaced[element])
+ if detail then
+ result[#result+1] = format(" detail=%q",detail)
+ end
+ if indexing and n then
+ result[#result+1] = format(" n=%q",n)
+ end
+ local extra = extras[element]
+ if extra then
+ extra(result,element,detail,n,fulltag,di)
+ end
+ local u = userdata[fulltag]
+ if u then
+ for k, v in next, u do
+ result[#result+1] = format(" %s=%q",k,v)
+ end
end
+ local a = di.attributes
+ if a then
+ for k, v in next, a do
+ result[#result+1] = format(" %s=%q",k,v)
+ end
+ end
+ result[#result+1] = ">"
end
- if not empty then
- handle:write(">")
- if inlinedepth > 0 then
- elseif nature == "display" then
- handle:write("\n")
- linedone = true
+ if inlinedepth > 0 then
+ elseif nature == "display" then
+ result[#result+1] = "\n"
+ linedone = true
+ end
+--~ xresult[#xresult+1] = concat(result)
+ used[element][detail or ""] = nature -- for template css
+ local metadata = tagmetadata[fulltag]
+ if metadata then
+ -- used[element] = "mixed"
+ metadata = table.toxml(metadata,"metadata",true,depth*2,2) -- nobanner
+ if not linedone then
+ result[#result+1] = format("\n%s\n",metadata)
+ else
+ result[#result+1] = format("%s\n",metadata)
end
+ linedone = true
end
- used[element][detail or ""] = nature
end
-local function endtag(handle,element,nature,depth,empty)
+local function endtag(result,element,nature,depth,skip)
if nature == "display" then
if inlinedepth == 0 then
- if empty then
- handle:write("</>\n")
- else
- if not linedone then
- handle:write("\n")
+ if not linedone then
+ result[#result+1] = "\n"
+ end
+ if skip == "comment" then
+ if show_comment then
+ result[#result+1] = format("%s<!-- end %s -->\n",spaces[depth],namespaced[element])
end
- handle:write(spaces[depth],"</",namespaced[element],">\n")
+ elseif skip then
+ -- ignore
+ else
+ result[#result+1] = format("%s</%s>\n",spaces[depth],namespaced[element])
end
linedone = true
else
- if empty then
- handle:write("/>")
+ if skip == "comment" then
+ if show_comment then
+ result[#result+1] = format("<!-- end %s -->",namespaced[element])
+ end
+ elseif skip then
+ -- ignore
else
- handle:write("</",namespaced[element],">")
+ result[#result+1] = format("</%s>",namespaced[element])
end
end
else
inlinedepth = inlinedepth - 1
- if empty then
- handle:write("/>")
+ if skip == "comment" then
+ if show_comment then
+ result[#result+1] = format("<!-- end %s -->",namespaced[element])
+ end
+ elseif skip then
+ -- ignore
else
- handle:write("</",namespaced[element],">")
+ result[#result+1] = format("</%s>",namespaced[element])
end
linedone = false
end
end
-local function push(fulltag,depth,entry)
- local attribute, parnumber = entry[3], entry[4]
- -- local tg, detail, n = lpegmatch(tagsplitter,fulltag)
- local tag, n = lpegmatch(dashsplitter,fulltag)
- local tg, detail = lpegmatch(colonsplitter,tag)
- local element, nature
- if detail then
- local pd = properties[tag]
- local pt = properties[tg]
- element = pd and pd.export or pt and pt.export or tg
- nature = pd and pd.nature or pt and pt.nature or "inline"
- else
- local p = properties[tg]
- element = p and p.export or tg
- nature = p and p.nature or "inline"
- end
- local t = {
- -- parent = tree,
- tg = tg,
- fulltag = fulltag,
- detail = detail,
- n = tonumber(n), -- more efficient
- depth = depth,
- element = element,
- nature = nature,
- data = { },
- attribute = attribute,
- parnumber = parnumber,
- -- node = entry[5], -- will go
- }
- local treedata = tree.data
- treedata[#treedata+1] = t
- insert(treestack,tree)
- tree = t
- local h = treehash[fulltag]
- if h then
- h[#h+1] = t
- else
- treehash[fulltag] = { t }
- end
-end
-
-local function pop()
- tree = remove(treestack)
-end
-
-local function flushresult(entry)
- local current, content = entry[1], entry[2]
- if not content then
- -- skip, normally this cannot happen
- else
- local newdepth, olddepth, content = #current, #treestack, concat(content)
- if trace_export then
- report_export("%s => %s : handling: %s",olddepth,newdepth,current[newdepth])
- end
- if olddepth <= 0 then
- for i=1,newdepth do
- if trace_export then
- report_export("[1] push : %s",current[i])
- end
- push(current[i],i,entry)
- end
- if content then
- tree.data[#tree.data+1] = content
- end
- elseif newdepth < olddepth then
- for i=newdepth,olddepth-1 do
- if trace_export then
- report_export("[2a] pop : %s",current[i])
- end
- pop()
- end
- -- we can have a pagebreak and for instance a new chapter
- -- will mess up the structure then
- for i=newdepth,1,-1 do
- if current[i] ~= treestack[i].fulltag then -- needs checking
- if trace_export then
- report_export("[2b] pop : %s",current[i])
- end
- pop()
- else
- break
- end
- end
- olddepth = #treestack
- for i=olddepth+1,newdepth do
- if trace_export then
- report_export("[2] push : %s",current[i])
- end
- push(current[i],i,entry)
- end
- if content then
- tree.data[#tree.data+1] = content
- end
- elseif newdepth > olddepth then
- for i=olddepth,1,-1 do
- if current[i] ~= treestack[i].fulltag then
- if trace_export then
- report_export("[3] pop : %s",current[i])
- end
- pop()
+local function flushtree(result,data,nature)
+ local nofdata = #data
+ for i=1,nofdata do
+ local di = data[i]
+ if not di then -- or di == ""
+ -- collapsed
+ elseif type(di) == "string" then
+di = utfgsub(di,".",entities)
+ if i == nofdata and sub(di,-1) == "\n" then
+ if nature == "inline" or nature == "mixed" then
+ result[#result+1] = sub(di,1,-2)
else
- break
- end
- end
- olddepth = #treestack
- for i=olddepth+1,newdepth do
- if trace_export then
- report_export("[3] push : %s",current[i])
+ result[#result+1] = sub(di,1,-2)
+ result[#result+1] = " "
end
- push(current[i],i,entry)
- end
- if content then
- tree.data[#tree.data+1] = content
- end
- elseif current[newdepth] == treestack[olddepth] then --move up ?
- -- continuation
- if content then
- tree.data[#tree.data+1] = content
+ else
+ result[#result+1] = di
end
- else
- for i=olddepth,1,-1 do
- if current[i] ~= treestack[i].fulltag then
- if trace_export then
- report_export("[4] pop : %s",current[i])
- end
- pop()
- else
- break
+ linedone = false
+ elseif not di.collapsed then
+ local element = di.element
+ if element == "break" or element == "pagebreak" then
+ emptytag(result,element,nature,di.depth)
+ elseif element == "" or di.skip == "ignore" then
+ -- skip
+ else
+ if di.before then
+ flushtree(result,di.before,nature)
end
- end
- olddepth = #treestack
- for i=olddepth+1,newdepth do
- if trace_export then
- report_export("[4] push : %s",current[i])
+ local nature, depth, skip = di.nature, di.depth, di.skip
+ begintag(result,element,nature,depth,di,skip)
+ flushtree(result,di.data,nature)
+ endtag(result,element,nature,depth,skip)
+ if di.after then
+ flushtree(result,di.after,nature)
end
- push(current[i],i,entry)
- end
- if content then
- tree.data[#tree.data+1] = content
end
end
end
end
+-- finalizers
+
local function checkinserts(data)
local nofinserts = 0
for i=1,#data do
@@ -876,316 +1209,354 @@ local function checkinserts(data)
-- something is wrong
end
end
- if di.data then
- checkinserts(di.data)
- end
- end
- end
-end
-
-local function flushtree(handle,data,nature)
- local nofdata = #data
- for i=1,nofdata do
- local di = data[i]
- if not di then
- -- collapsed
- elseif type(di) == "string" then
-if i == nofdata and sub(di,-1) == joiner_7 then
- if nature == "inline" or nature == "mixed" then
- handle:write(sub(di,1,-2))
- else
- handle:write(sub(di,1,-2)," ")
- end
-else
- handle:write(di)
-end
- linedone = false
- elseif not di.collapsed then
- local element = di.element
- if element == "break" or element == "pagebreak" then
- emptytag(handle,element,nature,di.depth)
- else
- local nature, depth = di.nature, di.depth
- local did = di.data
- local nid = #did
- if nid == 0 or (nid == 1 and did[1] == "") then
- begintag(handle,element,nature,depth,di,true)
- -- no content
- endtag(handle,element,nature,depth,true)
- else
- begintag(handle,element,nature,depth,di)
- flushtree(handle,did,nature)
- endtag(handle,element,nature,depth)
- end
+ local d = di.data
+ if d then
+ checkinserts(d)
end
end
end
end
-local function collapsetree()
- for k, v in next, treehash do
- local d = v[1].data
- local nd = #d
- for i=2,#v do
- local vi = v[i]
- local vd = vi.data
- local done = false
- local lpn = v[i-1].parnumber
- if lpn and lpn == 0 then lpn = nil end
- if type(d[1]) ~= "string" then lpn = nil end -- no need anyway so no further testing needed
-local justdone = false
- for j=1,#vd do
- local vdj = vd[j]
- if type(vdj) == "string" then
---~ print(vdj)
- -- experiment, should be improved
- -- can be simplified ... lpn instead of done
- if done then
- nd = nd + 1
- d[nd] = joiner_1
- else
- done = true
- local pn = vi.parnumber
- if not pn then
- nd = nd + 1
- d[nd] = joiner_2
- lpn = nil
- elseif not lpn then
- nd = nd + 1
- d[nd] = joiner_3
- lpn = pn
- elseif pn and pn ~= lpn then
+--~ local function collapsetree() -- maybe better traverse tree (par stuff)
+--~ for tag, trees in next, treehash do
+--~ local d = trees[1].data
+--~ if d then
+--~ local nd = #d
+--~ if nd > 0 then
+--~ for i=2,#trees do
+--~ local currenttree = trees[i]
+--~ local currentdata = currenttree.data
+--~ local previouspar = trees[i-1].parnumber
+--~ currenttree.collapsed = true
+--~ if previouspar == 0 or type(currentdata[1]) ~= "string" then
+--~ previouspar = nil -- no need anyway so no further testing needed
+--~ end
+--~ local done = false
+--~ local breakdone = false
+--~ local spacedone = false
+--~ for j=1,#currentdata do
+--~ local cd = currentdata[j]
+--~ if not cd then
+--~ -- skip
+--~ elseif type(cd) == "string" then
+--~ if cd == "" then
+--~ -- skip
+--~ elseif cd == " " then
+--~ -- done check ?
+--~ if not spacedone and not breakdone then
+--~ nd = nd + 1
+--~ d[nd] = cd
+--~ spacedone = true
+--~ end
+--~ elseif done then
+--~ if not spacedone and not breakdone then
+--~ nd = nd + 1
+--~ d[nd] = " "
+--~ spacedone = true
+--~ end
+--~ nd = nd + 1
+--~ d[nd] = cd
+--~ else
+--~ done = true
+--~ local currentpar = d.parnumber
+--~ if not currentpar then
+--~ if not spacedone and not breakdone then
+--~ nd = nd + 1
+--~ d[nd] = " " --
+--~ spacedone = true
+--~ end
+--~ previouspar = nil
+--~ elseif not previouspar then
+--~ if not spacedone and not breakdone then
+--~ nd = nd + 1
+--~ d[nd] = " "
+--~ spacedone = true
+--~ end
+--~ previouspar = currentpar
+--~ elseif currentpar ~= previouspar then
+--~ if not breakdone then
+--~ if not spacedone then
+--~ nd = nd + 1
+--~ end
+--~ d[nd] = makebreaknode(currenttree)
+--~ breakdone = true
+--~ end
+--~ previouspar = currentpar
+--~ else
+--~ spacedone = false
+--~ breakdone = false
+--~ end
+--~ nd = nd + 1
+--~ d[nd] = cd
+--~ end
+--~ else
+--~ if cd.tg == "break" then
+--~ breakdone = true
+--~ end
+--~ nd = nd + 1
+--~ d[nd] = cd
+--~ end
+--~ currentdata[j] = false
+--~ end
+--~ end
+--~ end
+--~ end
+--~ end
+--~ end
+
+local function collapsetree() -- maybe better traverse tree (par stuff)
+ for tag, trees in next, treehash do
+ local d = trees[1].data
+ if d then
+ local nd = #d
+ if nd > 0 then
+ for i=2,#trees do
+ local currenttree = trees[i]
+ local currentdata = currenttree.data
+ local previouspar = trees[i-1].parnumber
+ currenttree.collapsed = true
+ if previouspar == 0 or type(currentdata[1]) ~= "string" then
+ previouspar = nil -- no need anyway so no further testing needed
+ end
+ for j=1,#currentdata do
+ local cd = currentdata[j]
+ if not cd or cd == "" then
+ -- skip
+ elseif type(cd) == "string" then
+ local currentpar = d.parnumber
+ if not currentpar then
+ -- add space ?
+ elseif not previouspar then
+ -- add space ?
+ elseif currentpar ~= previouspar then
+ nd = nd + 1
+ d[nd] = makebreaknode(currenttree)
+ end
+ previouspar = currentpar
nd = nd + 1
- d[nd] = makebreaknode(vi)
- lpn = pn
+ d[nd] = cd
else
- -- nd = nd + 1
- -- d[nd] = joiner_4 -- we need to be more clever
+ nd = nd + 1
+ d[nd] = cd
end
+ currentdata[j] = false
end
- else
---~ nd = nd + 1
---~ d[nd] = joiner_3
- -- lpn = nil
end
- if vdj ~= "" then
- nd = nd + 1
- d[nd] = vdj -- hm, any?
- end
- vd[j] = false
end
- v[i].collapsed = true
end
end
end
-local function prunetree(tree)
- if not tree.collapsed then
- local data = tree.data
- if data then
- local p, np = { }, 0
- for i=1,#data do
- local d = data[i]
- if type(d) == "table" then
- if not d.collapsed then
- prunetree(d)
- np = np + 1
- p[np] = d
- end
- elseif type(d) == "string" then
- np = np + 1
- p[np] = d
- end
+local function indextree(tree)
+ local data = tree.data
+ if data then
+ for i=1,#data do
+ local d = data[i]
+ if type(d) == "table" then
+ d.__i__ = i
+ d.__p__ = tree
+ indextree(d)
end
- tree.data = np > 0 and p
end
end
end
-local function finishexport()
- if entry then
- local result = entry[2]
- if result and result[#result] == " " then
- result[#result] = nil -- nicer, remove last space
- end
- flushresult(entry)
+-- collector code
+
+local function push(fulltag,depth)
+ local tag, n = lpegmatch(dashsplitter,fulltag)
+ local tg, detail = lpegmatch(colonsplitter,tag)
+ local element, nature
+ if detail then
+ local pd = properties[tag]
+ local pt = properties[tg]
+ element = pd and pd.export or pt and pt.export or tg
+ nature = pd and pd.nature or pt and pt.nature or defaultnature
+ else
+ local p = properties[tg]
+ element = p and p.export or tg
+ nature = p and p.nature or "inline"
end
- for i=#treestack,1,-1 do
- pop()
+ local treedata = tree.data
+ local t = {
+ tg = tg,
+ fulltag = fulltag,
+ detail = detail,
+ n = tonumber(n), -- more efficient
+ depth = depth,
+ element = element,
+ nature = nature,
+ data = { },
+ attribute = currentattribute,
+ parnumber = currentparagraph,
+ }
+ treedata[#treedata+1] = t
+ currentdepth = currentdepth + 1
+ nesting[currentdepth] = fulltag
+ treestack[currentdepth] = tree
+ if trace_export then
+ report_export("%s<%s trigger='%s' index='%s'>",spaces[currentdepth-1],fulltag,currentattribute,#treedata)
+ end
+ tree = t
+ if tg == "break" then
+ -- no need for this
+ else
+ local h = treehash[fulltag]
+ if h then
+ h[#h+1] = t
+ else
+ treehash[fulltag] = { t }
+ end
end
end
-local displaymapping = {
- inline = "inline",
- display = "block",
- mixed = "inline",
-}
-
-local e_template = [[
-%s {
- display: %s ;
-}]]
-
-local d_template = [[
-%s[detail=%s] {
- display: %s ;
-}]]
-
--- encoding='utf-8'
-
-local xmlpreamble = [[
-<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
-
-<!-- input filename : %- 17s -->
-<!-- processing date : %- 17s -->
-<!-- context version : %- 17s -->
-<!-- exporter version : %- 17s -->
-]]
-
-local csspreamble = [[
-
-<?xml-stylesheet type="text/css" href="%s"?>
-]]
-
-local cssfile, xhtmlfile = nil, nil
-
-directives.register("backend.export.css", function(v) cssfile = v end)
-directives.register("backend.export.xhtml",function(v) xhtmlfile = v end)
-
-local function stopexport(v)
- starttiming(treehash)
- report_export("finalizing")
- finishexport()
- collapsetree()
- if trace_tree then
- prunetree(tree)
- report_export(table.serialize(tree,"root"))
+local function pop()
+ local top = nesting[currentdepth]
+ tree = treestack[currentdepth]
+ currentdepth = currentdepth - 1
+ if trace_export then
+ if top then
+ report_export("%s</%s>",spaces[currentdepth],top)
+ else
+ report_export("</%s>",top)
+ end
end
- checkinserts(tree.data)
- hashlistdata()
- if type(v) ~= "string" or v == variables.yes or v == "" then
- v = tex.jobname
+end
+
+local function continueexport()
+ if nofcurrentcontent > 0 then
+ if trace_export then
+ report_export("%s<!-- injecting pagebreak space -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " " -- pagebreak
end
- local xmlfile = file.addsuffix(v,"export")
- local handle = io.open(xmlfile,"wb")
- if handle then
- local files = { }
- local specification = {
- name = file.removesuffix(v),
- identifier = os.uuid(),
- files = files,
- }
- report_export("saving xml data in '%s",xmlfile)
- handle:write(format(xmlpreamble,tex.jobname,os.date(),environment.version,version))
- if type(cssfile) == "string" then
- local cssfiles = settings_to_array(cssfile)
- for i=1,#cssfiles do
- local cssfile = cssfiles[i]
- files[#files+1] = cssfile
- if type(cssfile) ~= "string" or cssfile == variables.yes or cssfile == "" or cssfile == xmlfile then
- cssfile = file.replacesuffix(xmlfile,"css")
- else
- cssfile = file.addsuffix(cssfile,"css")
- end
- report_export("adding css reference '%s",cssfile)
- handle:write(format(csspreamble,cssfile))
- end
+end
+
+local function pushentry(current)
+ if current then
+ if restart then
+ continueexport()
+ restart = false
end
- flushtree(handle,tree.data)
- handle:close()
- -- css template file
- local cssfile = file.replacesuffix(xmlfile,"template")
- report_export("saving css template in '%s",cssfile)
- local templates = { format("/* template for file %s */",xmlfile) }
- for element, details in table.sortedhash(used) do
- templates[#templates+1] = format("/* category: %s */",element)
- for detail, nature in table.sortedhash(details) do
- local d = displaymapping[nature or "display"] or "block"
- if detail == "" then
- templates[#templates+1] = format(e_template,element,d)
- else
- templates[#templates+1] = format(d_template,element,detail,d)
- end
- end
+ local newdepth = #current
+ local olddepth = currentdepth
+ if trace_export then
+ report_export("%s<!-- moving from depth %s to %s (%s) -->",spaces[currentdepth],olddepth,newdepth,current[newdepth])
end
- io.savedata(cssfile,concat(templates,"\n\n"))
- -- xhtml references
- if xhtmlfile then
- -- messy
- if type(v) ~= "string" or xhtmlfile == true or xhtmlfile == variables.yes or xhtmlfile == "" or xhtmlfile == xmlfile then
- xhtmlfile = file.replacesuffix(xmlfile,"xhtml")
- else
- xhtmlfile = file.addsuffix(xhtmlfile,"xhtml")
+ if olddepth <= 0 then
+ for i=1,newdepth do
+ push(current[i],i)
end
- report_export("saving xhtml variant in '%s",xhtmlfile)
- local xmltree = xml.load(xmlfile)
- if xmltree then
- local xmlwrap = xml.wrap
- for e in xml.collected(xmltree,"/document") do
- e.at["xmlns:xhtml"] = "http://www.w3.org/1999/xhtml"
- break
- end
- local wrapper = { tg = "a", ns = "xhtml", at = { href = "unknown" } }
- for e in xml.collected(xmltree,"link") do
- local location = e.at.location
- if location then
- wrapper.at.href = "#" .. gsub(location,":","_")
- xmlwrap(e,wrapper)
+ else
+ local difference
+ if olddepth < newdepth then
+ for i=1,olddepth do
+ if current[i] ~= nesting[i] then
+ difference = i
+ break
end
end
- local wrapper = { tg = "a", ns = "xhtml", at = { name = "unknown" } }
- for e in xml.collected(xmltree,"!link[@location]") do
- local location = e.at.location
- if location then
- wrapper.at.name = gsub(location,":","_")
- xmlwrap(e,wrapper)
+ else
+ for i=1,newdepth do
+ if current[i] ~= nesting[i] then
+ difference = i
+ break
end
end
- xml.save(xmltree,xhtmlfile)
end
- files[#files+1] = xhtmlfile
- specification.root = xhtmlfile
- local specfile = file.replacesuffix(xmlfile,"specification")
- report_export("saving specification in '%s' (mtxrun --script epub --make %s)",specfile,specfile)
- io.savedata(specfile,table.serialize(specification,true))
+ if difference then
+ for i=olddepth,difference,-1 do
+ pop()
+ end
+ for i=difference,newdepth do
+ push(current[i],i)
+ end
+ elseif newdepth > olddepth then
+ for i=olddepth+1,newdepth do
+ push(current[i],i)
+ end
+ elseif newdepth < olddepth then
+ for i=olddepth,newdepth,-1 do
+ pop()
+ end
+ elseif trace_export then
+ report_export("%s<!-- staying at depth %s (%s) -->",spaces[currentdepth],newdepth,nesting[newdepth] or "?")
+ end
end
- else
- report_export("unable to saving xml in '%s",xmlfile)
+ return olddepth, newdepth
end
- stoptiming(treehash)
end
-local function startexport(v)
- if v and not exporting then
- nodes.tasks.appendaction("shipouts", "normalizers", "nodes.handlers.export")
- report_export("enabling export to xml")
- luatex.registerstopactions(function() stopexport(v) end)
- if trace_spaces then
- joiner_1 = "<S1/>" joiner_2 = "<S2/>" joiner_3 = "<S3/>" joiner_4 = "<S4/>" joiner_5 = "<S5/>"
- joiner_6 = "<S6/>" joiner_7 = "<S7/>" joiner_8 = "<S8/>" joiner_9 = "<S9/>" joiner_0 = "<S0/>"
+local function pushcontent(addbreak)
+ if nofcurrentcontent > 0 then
+ if addbreak then
+ if currentcontent[nofcurrentcontent] == "\n" then
+ if trace_export then
+ report_export("%s<!-- removing newline -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent - 1
+ end
end
- exporting = true
+ local content = concat(currentcontent,"",1,nofcurrentcontent)
+ if content == "" then
+ -- omit; when addbreak we could push, remove spaces, pop
+--~ elseif content == " " and addbreak then
+ elseif somespace[content] and addbreak then
+ -- omit; when addbreak we could push, remove spaces, pop
+ else
+ local olddepth, newdepth
+ local list = taglist[currentattribute]
+ if list then
+ olddepth, newdepth = pushentry(list)
+ end
+ local td = tree.data
+ local nd = #td
+ td[nd+1] = content
+ if trace_export then
+ report_export("%s<!-- start content with length %s -->",spaces[currentdepth],#content)
+ report_export("%s%s",spaces[currentdepth],content)
+ report_export("%s<!-- stop content -->",spaces[currentdepth])
+ end
+ if olddepth then
+ for i=newdepth-1,olddepth,-1 do
+ pop()
+ end
+ end
+ end
+ nofcurrentcontent = 0
+ end
+ if addbreak then
+ pushentry(makebreaklist(currentnesting))
+ -- if trace_export then
+ -- report_export("%s<!-- add break -->",spaces[currentdepth])
+ -- end
end
end
-directives.register("backend.export",startexport) -- maybe .name
-
-local function injectbreak()
- flushresult(entry)
- flushresult(makebreak(entry))
- result = { }
- entry = { entry[1], result, last, lastpar } -- entry[1] ?
-end
-
-local function injectspace(a,joiner)
- flushresult(entry)
- result = { joiner }
- local tl = taglist[a]
- entry = { tl , result, a, lastpar, n }
+local function finishexport()
+ if trace_export then
+ report_export("%s<!-- start finalizing -->",spaces[currentdepth])
+ end
+ if nofcurrentcontent > 0 then
+ if somespace[currentcontent[nofcurrentcontent]] then
+ if trace_export then
+ report_export("%s<!-- removing space -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent - 1
+ end
+ pushcontent()
+ end
+ for i=currentdepth,1,-1 do
+ pop()
+ end
+ currentcontent = { } -- we're nice and do a cleanup
+ if trace_export then
+ report_export("%s<!-- stop finalizing -->",spaces[currentdepth])
+ end
end
-local function collectresults(head,list,p)
- local preceding = p or false
+local function collectresults(head,list)
for n in traverse_nodes(head) do
local id = n.id -- 14: image, 8: literal (mp)
if id == glyph_code then
@@ -1198,23 +1569,19 @@ local function collectresults(head,list,p)
-- we could add tonunicodes for ligatures (todo)
local components = n.components
if components then -- we loose data
- collectresults(components,nil,preceding)
---~ preceding = true
+ collectresults(components,nil)
else
+ local c = n.char
if last ~= at then
local tl = taglist[at]
- if entry then
- flushresult(entry)
- end
- if preceding then
- preceding = false
- result = { joiner_5 }
- else
- result = { }
+ if trace_export then
+ report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),at)
end
- lastpar = has_attribute(n,a_taggedpar)
- entry = { tl, result, at, lastpar, n }
- local ah = { -- this includes detail !
+ pushcontent()
+ currentparagraph = has_attribute(n,a_taggedpar)
+ currentnesting = tl
+ currentattribute = at
+ local ah = { -- this includes detail ! -- we can move some to te tex end
align = has_attribute(n,a_taggedalign ),
columns = has_attribute(n,a_taggedcolumns),
rows = has_attribute(n,a_taggedrows ),
@@ -1228,22 +1595,62 @@ local function collectresults(head,list,p)
attributehash[tl[#tl]] = ah
end
last = at
+ pushentry(currentnesting)
elseif last then
local at = has_attribute(n,a_taggedpar)
- if at ~= lastpar then
- injectbreak()
- lastpar = at
+ if at ~= currentparagraph then
+ -- inject break
+ pushcontent(true) -- add break
+ pushentry(currentnesting)
+ currentattribute = last
+ currentparagraph = at
+ end
+ if trace_export then
+ report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),last)
+ end
+ else
+ if trace_export then
+ report_export("%s<!-- processing glyph %s (tag %s) -->",spaces[currentdepth],utfchar(c),at)
end
end
- local c = n.char
- if c == 0x26 then
- result[#result+1] = "&amp;"
- elseif c == 0x3E then
- result[#result+1] = "&gt;"
- elseif c == 0x3C then
- result[#result+1] = "&lt;"
- elseif c == 0 then
- result[#result+1] = "" -- utfchar(0) -- todo: check if "" is needed
+ local s = has_attribute(n,a_exportstatus)
+ if s then
+ c = s
+ end
+ if c == 0 then
+ if trace_export then
+ report_export("%s<!-- skipping last glyph -->",spaces[currentdepth])
+ end
+ -- skip
+--~ elseif c == 0x26 then
+--~ nofcurrentcontent = nofcurrentcontent + 1
+--~ currentcontent[nofcurrentcontent] = "&amp;"
+--~ if trace_export then
+--~ report_export("%s<!-- turning last glyph into entity &amp;-->",spaces[currentdepth])
+--~ end
+--~ elseif c == 0x3E then
+--~ nofcurrentcontent = nofcurrentcontent + 1
+--~ currentcontent[nofcurrentcontent] = "&gt;"
+--~ if trace_export then
+--~ report_export("%s<!-- turning last glyph into entity &gt;-->",spaces[currentdepth])
+--~ end
+--~ elseif c == 0x3C then
+--~ nofcurrentcontent = nofcurrentcontent + 1
+--~ currentcontent[nofcurrentcontent] = "&lt;"
+--~ if trace_export then
+--~ report_export("%s<!-- turning last glyph into entity &lt;-->",spaces[currentdepth])
+--~ end
+ elseif c == 0x20 then
+ local a = has_attribute(n,a_characters)
+ nofcurrentcontent = nofcurrentcontent + 1
+ if a then
+ if trace_export then
+ report_export("%s<!-- turning last space into special space U+%05X -->",spaces[currentdepth],a)
+ end
+ currentcontent[nofcurrentcontent] = specialspaces[a] -- special space
+ else
+ currentcontent[nofcurrentcontent] = " "
+ end
else
local fc = fontchar[n.font]
if fc then
@@ -1251,17 +1658,22 @@ local function collectresults(head,list,p)
if fc then
local u = fc.tounicode
if u and u ~= "" then
+ -- tracing
for s in gmatch(u,"....") do -- is this ok?
- result[#result+1] = utfchar(tonumber(s,16))
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = utfchar(tonumber(s,16))
end
else
- result[#result+1] = utfchar(c)
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = utfchar(c)
end
else -- weird, happens in hz (we really need to get rid of the pseudo fonts)
- result[#result+1] = utfchar(c)
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = utfchar(c)
end
else
- result[#result+1] = utfchar(c)
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = utfchar(c)
end
end
end
@@ -1270,112 +1682,357 @@ local function collectresults(head,list,p)
local ai = has_attribute(n,a_image)
if ai then
local at = has_attribute(n,a_tagged)
- if entry then
- flushresult(entry)
- result = { }
- entry[2] = result -- mess, to be sorted out, but otherwise duplicates (still some spacing issues)
+ if nofcurrentcontent > 0 then
+ pushcontent()
+ pushentry(currentnesting) -- ??
end
local tl = taglist[at]
local i = locate_node(n,whatsit_code,refximage_code)
if i then
attributehash[tl[#tl]] = { imageindex = i.index }
end
- flushresult { tl, { }, 0, 0 } -- has an index, todo: flag empty element
+ pushentry(tl) -- has an index, todo: flag empty element
+ if trace_export then
+ report_export("%s<!-- processing image (tag %s)",spaces[currentdepth],last)
+ end
last = nil
- lastpar = nil
+ currentparagraph = nil
else
---~ if result and #result > 0 then -- and n.subtype == line_code then
---~ local r = result[#result]
---~ if type(r) == "string" and r ~= " " then
---~ local s = utfsub(r,-1)
---~ if s == hyphen then
---~ result[#result] = utfsub(r,1,-2)
---~ elseif s ~= joiner_7 then
---~ result[#result] = r .. joiner_7
---~ --~ preceding = true
---~ end
---~ end
---~ preceding = false
---~ end
-- we need to determine an end-of-line
- preceding = collectresults(n.list,n,preceding)
- preceding = false
+ collectresults(n.list,n)
end
elseif id == disc_code then -- probably too late
collectresults(n.replace,nil)
- preceding = false
elseif id == glue_code then
-- we need to distinguish between hskips and vskips
local subtype = n.subtype
- if subtype == userskip_code then -- todo space_code
- if n.spec.width > threshold then
---~ preceding = true
- if result and last and #result > 0 and result[#result] ~= " " then
+ if subtype == userskip_code then
+ local ca = has_attribute(n,a_characters)
+ if ca then
+ if ca == 0 then
+ -- skip this one ... already converted special character (node-acc)
+ else
+ local a = has_attribute(n,a_tagged)
+ if somespace[currentcontent[nofcurrentcontent]] then
+ if trace_export then
+ report_export("%s<!-- removing space -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent - 1
+ end
+ if last ~= a then
+ pushcontent()
+ last = a
+ currentnesting = taglist[last]
+ pushentry(currentnesting)
+ currentattribute = last
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = specialspaces[ca] -- utfchar(ca)
+ if trace_export then
+ report_export("%s<!-- adding special space/glue (tag %s => %s) -->",spaces[currentdepth],last,a)
+ end
+ end
+ elseif n.spec.width > threshold then
+--~ if has_attribute(n,a_textblock) then
+--~ -- todo
+--~ else
+ if last and not somespace[currentcontent[nofcurrentcontent]] then
local a = has_attribute(n,a_tagged)
if a == last then
- result[#result+1] = joiner_6
- preceding = false
+ if trace_export then
+ report_export("%s<!-- injecting spacing 5a -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " "
elseif a then
-- e.g LOGO<space>LOGO
- preceding = false
+ if trace_export then
+ report_export("%s<!-- processing glue > threshold (tag %s => %s) -->",spaces[currentdepth],last,a)
+ end
+ pushcontent()
+ if trace_export then
+ report_export("%s<!-- injecting spacing 5b -->",spaces[currentdepth])
+ end
last = a
- injectspace(last,joiner_6)
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " "
+ currentnesting = taglist[last]
+ pushentry(currentnesting)
+ currentattribute = last
end
end
end
+--~ end
+ elseif subtype == spaceskip_code or subtype == xspaceskip_code then
+ if not somespace[currentcontent[nofcurrentcontent]] then
+ if trace_export then
+ report_export("%s<!-- injecting spacing 7 -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " "
+ end
elseif subtype == rightskip_code or subtype == parfillskip_code then
-if result and #result > 0 then -- and n.subtype == line_code then
- local r = result[#result]
- if type(r) == "string" and r ~= " " then
- local s = utfsub(r,-1)
- if s == hyphen then
- result[#result] = utfsub(r,1,-2)
- elseif s ~= joiner_7 then
- result[#result] = r .. joiner_7
---~ preceding = true
- end
- end
- preceding = false
-end
+ if nofcurrentcontent > 0 then -- and n.subtype == line_code then
+ local r = currentcontent[nofcurrentcontent]
+ if type(r) == "string" and r ~= " " then
+ local s = utfsub(r,-1)
+ if s == hyphen then
+ currentcontent[nofcurrentcontent] = utfsub(r,1,-2)
+ elseif s ~= "\n" then
+ if trace_export then
+ report_export("%s<!-- injecting newline 1 -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = "\n"
+ end
+ end
+ end
end
elseif id == kern_code then
if n.kern > threshold then
---~ preceding = true
- if result and last and #result > 0 and result[#result] ~= " " then
+ if last and not somespace[currentcontent[nofcurrentcontent]] then
local a = has_attribute(n,a_tagged)
if a == last then
- result[#result+1] = joiner_8
- preceding = false
+ if not somespace[currentcontent[nofcurrentcontent]] then
+ if trace_export then
+ report_export("%s<!-- injecting spacing 8 -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " "
+ end
elseif a then
-- e.g LOGO<space>LOGO
- preceding = false
+ if trace_export then
+ report_export("%s<!-- processing kern > threshold (tag %s => %s)",spaces[currentdepth],last,a)
+ end
last = a
- injectspace(last,joiner_8)
+ pushcontent()
+ if trace_export then
+ report_export("%s<!-- injecting spacing 9 -->",spaces[currentdepth])
+ end
+ nofcurrentcontent = nofcurrentcontent + 1
+ currentcontent[nofcurrentcontent] = " "
+ currentnesting = taglist[last]
+ pushentry(currentnesting)
+ currentattribute = last
end
end
end
end
end
- return preceding
end
-function nodes.handlers.export(head)
- if result then
- -- maybe we need a better test for what is in result so far
- if page_breaks then
- joiner_0 = "<pagebreak/>"
- end
- result[#result+1] = joiner_0
- end
+function nodes.handlers.export(head) -- hooks into the page builder
starttiming(treehash)
+ if trace_export then
+ report_export("%s<!-- start flushing page -->",spaces[currentdepth])
+ end
+ -- continueexport()
+ restart = true
collectresults(head)
- -- no flush here, pending page stuff
+ if trace_export then
+ report_export("%s<!-- stop flushing page -->",spaces[currentdepth])
+ end
stoptiming(treehash)
return head, true
end
+function builders.paragraphs.tag(head)
+ noftextblocks = noftextblocks + 1
+ for n in traverse_id(hlist_code,head) do
+ local subtype = n.subtype
+ if subtype == line_code then
+ set_attribute(n,a_textblock,noftextblocks)
+ elseif subtype == glue_code or subtype == kern_code then
+ set_attribute(n,a_textblock,0)
+ end
+ end
+ return false
+end
+
+-- wrapper
+
+local displaymapping = {
+ inline = "inline",
+ display = "block",
+ mixed = "inline",
+}
+
+local e_template = [[
+%s {
+ display: %s ;
+}]]
+
+local d_template = [[
+%s[detail=%s] {
+ display: %s ;
+}]]
+
+-- encoding='utf-8'
+
+local xmlpreamble = [[
+<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
+
+<!-- input filename : %- 17s -->
+<!-- processing date : %- 17s -->
+<!-- context version : %- 17s -->
+<!-- exporter version : %- 17s -->
+]]
+
+local csspreamble = [[
+
+<?xml-stylesheet type="text/css" href="%s"?>
+]]
+
+-- local xhtmlpreamble = [[
+-- <!DOCTYPE html PUBLIC
+-- "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
+-- "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"
+-- >
+-- ]]
+
+local cssfile, xhtmlfile = nil, nil
+
+directives.register("backend.export.css", function(v) cssfile = v end)
+directives.register("backend.export.xhtml",function(v) xhtmlfile = v end)
+
+local function stopexport(v)
+ starttiming(treehash)
+ finishexport()
+ collapsetree(tree)
+ indextree(tree)
+ checkinserts(tree.data)
+ hashlistdata()
+ if type(v) ~= "string" or v == variables.yes or v == "" then
+ v = tex.jobname
+ end
+ local xmlfile = file.addsuffix(v,"export")
+ if type(cssfile) ~= "string" or cssfile == "" then
+ cssfile = nil
+ end
+ local files = { }
+ local specification = {
+ name = file.removesuffix(v),
+ identifier = os.uuid(),
+ files = files,
+ }
+ report_export("saving xml data in '%s",xmlfile)
+ local results = { }
+ results[#results+1] = format(xmlpreamble,tex.jobname,os.date(),environment.version,exportversion)
+ if cssfile then
+ local cssfiles = settings_to_array(cssfile)
+ for i=1,#cssfiles do
+ local cssfile = cssfiles[i]
+ files[#files+1] = cssfile
+ if type(cssfile) ~= "string" or cssfile == variables.yes or cssfile == "" or cssfile == xmlfile then
+ cssfile = file.replacesuffix(xmlfile,"css")
+ else
+ cssfile = file.addsuffix(cssfile,"css")
+ end
+ report_export("adding css reference '%s",cssfile)
+ results[#results+1] = format(csspreamble,cssfile)
+ end
+ end
+ -- collect tree
+ local result = { }
+ flushtree(result,tree.data)
+ result = concat(result)
+ result = gsub(result,"\n *\n","\n")
+ results[#results+1] = result
+ results = concat(results)
+ -- if needed we can do a cleanup of the tree (no need to load for xhtml then)
+ -- write to file
+ io.savedata(xmlfile,results)
+ -- css template file
+ if cssfile then
+ local cssfile = file.replacesuffix(xmlfile,"template")
+ report_export("saving css template in '%s",cssfile)
+ local templates = { format("/* template for file %s */",xmlfile) }
+ for element, details in table.sortedhash(used) do
+ templates[#templates+1] = format("/* category: %s */",element)
+ for detail, nature in table.sortedhash(details) do
+ local d = displaymapping[nature or "display"] or "block"
+ if detail == "" then
+ templates[#templates+1] = format(e_template,element,d)
+ else
+ templates[#templates+1] = format(d_template,element,detail,d)
+ end
+ end
+ end
+ io.savedata(cssfile,concat(templates,"\n\n"))
+ end
+ -- xhtml references
+ if xhtmlfile then
+ -- messy
+ if type(v) ~= "string" or xhtmlfile == true or xhtmlfile == variables.yes or xhtmlfile == "" or xhtmlfile == xmlfile then
+ xhtmlfile = file.replacesuffix(xmlfile,"xhtml")
+ else
+ xhtmlfile = file.addsuffix(xhtmlfile,"xhtml")
+ end
+ report_export("saving xhtml variant in '%s",xhtmlfile)
+ -- local xmltree = xml.load(xmlfile)
+ local xmltree = xml.convert(results)
+ if xmltree then
+ local xmlwrap = xml.wrap
+ for e in xml.collected(xmltree,"/document") do
+ e.at["xmlns:xhtml"] = "http://www.w3.org/1999/xhtml"
+ break
+ end
+ -- todo: inject xhtmlpreamble (xmlns should have be enough)
+ local wrapper = { tg = "a", ns = "xhtml", at = { href = "unknown" } }
+ for e in xml.collected(xmltree,"link") do
+ local location = e.at.location
+ if location then
+ wrapper.at.href = "#" .. gsub(location,":","_")
+ xmlwrap(e,wrapper)
+ end
+ end
+ local wrapper = { tg = "a", ns = "xhtml", at = { name = "unknown" } }
+ for e in xml.collected(xmltree,"!link[@location]") do
+ local location = e.at.location
+ if location then
+ wrapper.at.name = gsub(location,":","_")
+ xmlwrap(e,wrapper)
+ end
+ end
+ xml.save(xmltree,xhtmlfile)
+ end
+ files[#files+1] = xhtmlfile
+ specification.root = xhtmlfile
+ local specfile = file.replacesuffix(xmlfile,"specification")
+ report_export("saving specification in '%s' (mtxrun --script epub --make %s)",specfile,specfile)
+ io.savedata(specfile,table.serialize(specification,true))
+ end
+ stoptiming(treehash)
+end
+
+local appendaction = nodes.tasks.appendaction
+local enableaction = nodes.tasks.enableaction
+
+local function startexport(v)
+ if v and not exporting then
+ report_export("enabling export to xml")
+-- not yet known in task-ini
+ appendaction("shipouts", "normalizers", "nodes.handlers.export")
+-- enableaction("shipouts","nodes.handlers.export")
+--
+ enableaction("shipouts","nodes.handlers.accessibility")
+ enableaction("math", "noads.handlers.tags")
+--~ enableaction("finalizers","builders.paragraphs.tag")
+ luatex.registerstopactions(function() stopexport(v) end)
+ exporting = true
+ end
+end
+
+directives.register("backend.export",startexport) -- maybe .name
+
statistics.register("xml exporting time", function()
if exporting then
- return format("%s seconds", statistics.elapsedtime(treehash))
+ return format("%s seconds, version %s", statistics.elapsedtime(treehash),exportversion)
end
end)
+
+commands.settagitemgroup = structurestags.setitemgroup
+commands.settagsynonym = structurestags.setsynonym
+commands.settagsorting = structurestags.setsorting
+commands.settagdescriptionid = structurestags.setdescriptionid
diff --git a/tex/context/base/back-exp.mkiv b/tex/context/base/back-exp.mkiv
index 88272fca7..d6fb74a97 100644
--- a/tex/context/base/back-exp.mkiv
+++ b/tex/context/base/back-exp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=XML export,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -38,13 +38,16 @@
\def\setelementexporttag
{\dotripleargument\dosetelementexporttag}
-\def\dosetelementexporttag[#1][#2][#3]%
+\def\dosetelementexporttag
{\ifthirdargument
- \ctxlua{structures.tags.settagproperty("#1","#2", "#3")}%
+ \expandafter\dosetelementexporttaga
\else\ifsecondargument
- \ctxlua{structures.tags.settagproperty("#1","export", "#2")}%
+ \expandafter\expandafter\expandafter\dosetelementexporttagb
\fi\fi}
+\def\dosetelementexporttaga[#1][#2][#3]{\ctxcommand{settagproperty("#1","#2","#3")}}
+\def\dosetelementexporttagb[#1][#2][#3]{\ctxcommand{settagproperty("#1","export","#2")}}
+
\newcount\tagparcounter
\let\dotagsetparcounter\relax
@@ -62,13 +65,17 @@
\to \everytabulatepar % tricky, maybe this should be neverypar
\appendtoks
- \def\dotagnoftablecolumns{\attribute\taggedcolumnsattribute\!!counta}%
- \def\dotagnoftablerows {\attribute\taggedrowsattribute \!!countb}%
+ \def\dotagnofTABLEcolumns{\attribute\taggedcolumnsattribute\!!counta}%
+ \def\dotagnofTABLErows {\attribute\taggedrowsattribute \!!countb}%
\to \everyenableelements
\appendtoks
\def\dotagTABLEalign{\attribute\taggedalignattribute\raggedstatus}%
- \def\dotagTABLEcell {\char\zerocount}%
+ \def\dotagTABLEcell {\char\zerocount}% brrr, we need to tag empty cells (unless we start numbering)
+\to \everyenableelements
+
+\appendtoks
+ \def\dotagtabulatesignal{\dontleavehmode\char\zerocount\ignorespaces}%
\to \everyenableelements
\appendtoks
@@ -76,11 +83,11 @@
\to \everyenableelements
\appendtoks
- \def\dotagsynonym{\ctxlua{structures.tags.setsynonym("\currentsynonym","\currentsynonymtag")}}%
+ \def\dotagsynonym{\ctxcommand{settagsynonym("\currentsynonym","\currentsynonymtag")}}%
\to \everyenableelements
\appendtoks
- \def\dotagsorting{\ctxlua{structures.tags.setsorting("\currentsorting","\currentsortingtag")}}%
+ \def\dotagsorting{\ctxcommand{settagsorting("\currentsorting","\currentsortingtag")}}%
\to \everyenableelements
\appendtoks
@@ -88,15 +95,15 @@
\to \everyenableelements
\appendtoks
- \def\dotagsetitemize{\ctxlua{structures.tags.setitemgroup(\ifconditional\packlistitem true\else false\fi,"\currentitemsymbol")}}%
+ \def\dotagsetitemize{\ctxcommand{settagitemgroup(\ifconditional\packlistitem true\else false\fi,"\currentitemsymbol")}}%
\to \everyenableelements
\appendtoks
- \def\dotagsetdescriptiontag{\ctxlua{structures.tags.setdescriptionid("\currentdescription",\currentdescriptionnumberentry)}}%
+ \def\dotagsetdescriptiontag{\ctxcommand{settagdescriptionid("\currentdescription",\currentdescriptionnumberentry)}}%
\to \everyenableelements
\appendtoks
- \def\dotagsetnotesymbol{\ctxlua{structures.tags.setdescriptionid("\currentnote",\currentnotenumber)}}%
+ \def\dotagsetnotesymbol{\ctxcommand{settagdescriptionid("\currentnote",\currentnotenumber)}}%
\to \everyenableelements
\appendtoks
diff --git a/tex/context/base/back-ini.mkiv b/tex/context/base/back-ini.mkiv
index a3cf2ca54..518057a8f 100644
--- a/tex/context/base/back-ini.mkiv
+++ b/tex/context/base/back-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/back-pdf.lua b/tex/context/base/back-pdf.lua
index 32f5d3504..63261aa3b 100644
--- a/tex/context/base/back-pdf.lua
+++ b/tex/context/base/back-pdf.lua
@@ -6,574 +6,7 @@ if not modules then modules = { } end modules ['back-pdf'] = {
license = "see context related readme files"
}
--- we will move code to lpdf-* files (second cleanup stage in 2011/2012)
-
--- the push/pop is a mess (only needed for calculate ...) .. will be done differently
-
---[[ldx--
-<p>This module implements a couple of cleanup methods. We need these
-in order to meet the <l n='pdf'/> specification. Watch the double
-parenthesis; they are needed because otherwise we would pass more
-than one argument to <l n='tex'/>.</p>
---ldx]]--
-
-local type, next, tostring = type, next, tostring
-local char, byte, format, gsub, rep, gmatch = string.char, string.byte, string.format, string.gsub, string.rep, string.gmatch
-local concat = table.concat
-local round = math.round
-local utfcharacters, utfvalues = string.utfcharacters, string.utfvalues
-
-local backends, lpdf, nodes, node = backends, lpdf, nodes, node
-
-local copy_node = node.copy
-
-local nodeinjections = backends.pdf.nodeinjections
-local codeinjections = backends.pdf.codeinjections
-local registrations = backends.pdf.registrations
-
-local nodepool = nodes.pool
-
-local register = nodepool.register
-
-local pdfconstant = lpdf.constant
-local pdfstring = lpdf.string
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfreference = lpdf.reference
-local pdfverbose = lpdf.verbose
-local pdfflushobject = lpdf.flushobject
-local pdfimmediateobject = lpdf.immediateobject
-
-local pdfliteral = nodepool.pdfliteral
-local pdfannotation_node = nodepool.pdfannotation
-
-function nodeinjections.rgbcolor(r,g,b)
- return register(pdfliteral(format("%s %s %s rg %s %s %s RG",r,g,b,r,g,b)))
-end
-
-function nodeinjections.cmykcolor(c,m,y,k)
- return register(pdfliteral(format("%s %s %s %s k %s %s %s %s K",c,m,y,k,c,m,y,k)))
-end
-
-function nodeinjections.graycolor(s) -- caching 0/1 does not pay off
- return register(pdfliteral(format("%s g %s G",s,s)))
-end
-
-function nodeinjections.spotcolor(n,f,d,p)
- if type(p) == "string" then
- p = gsub(p,","," ") -- brr misuse of spot
- end
- return register(pdfliteral(format("/%s cs /%s CS %s SCN %s scn",n,n,p,p)))
-end
-
-function nodeinjections.transparency(n)
- return register(pdfliteral(format("/Tr%s gs",n)))
-end
-
-local effects = {
- normal = 0,
- inner = 0,
- outer = 1,
- both = 2,
- hidden = 3,
-}
-
-function nodeinjections.effect(effect,stretch,rulethickness)
- -- always, no zero test (removed)
- rulethickness = number.dimenfactors["bp"] * rulethickness
- effect = effects[effect] or effects['normal']
- return register(pdfliteral(format("%s Tc %s w %s Tr",stretch,rulethickness,effect))) -- watch order
-end
-
--- cached ..
-
-local cache = { }
-
-function codeinjections.startlayer(name)
- codeinjections.useviewerlayer(name)
- return format("/OC /%s BDC",name)
-end
-
-function codeinjections.stoplayer(name)
- return "EMC"
-end
-
-function nodeinjections.startlayer(name)
- local c = cache[name]
- if not c then
- codeinjections.useviewerlayer(name)
- c = register(pdfliteral(format("/OC /%s BDC",name)))
- cache[name] = c
- end
- return copy_node(c)
-end
-
-local stop = register(pdfliteral("EMC"))
-
-function nodeinjections.stoplayer()
- return copy_node(stop)
-end
-
-local cache = { }
-
-function nodeinjections.switchlayer(name) -- not used, optimization
- local c = cache[name]
- if not c then
- codeinjections.useviewerlayer(name)
- c = register(pdfliteral(format("EMC /OC /%s BDC",name)))
- end
- return copy_node(c)
-end
-
--- code, will move to lpdf-*
-
-function nodeinjections.insertmovie(specification)
- -- managed in figure inclusion: width, height, factor, repeat, controls, preview, label, foundname
- local width = specification.width
- local height = specification.height
- local factor = specification.factor or number.dimenfactors.bp
- local moviedict = pdfdictionary {
- F = specification.foundname,
- Aspect = pdfarray { factor * width, factor * height },
- Poster = (specification.preview and true) or false,
- }
- local controldict = pdfdictionary {
- ShowControls = (specification.controls and true) or false,
- Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil,
- }
- local action = pdfdictionary {
- Subtype = pdfconstant("Movie"),
- Border = pdfarray { 0, 0, 0 },
- T = format("movie %s",specification.label),
- Movie = moviedict,
- A = controldict,
- }
- node.write(pdfannotation_node(width,height,0,action()))
-end
-
-function nodeinjections.insertsound(specification)
- -- rmanaged in interaction: repeat, label, foundname
- local soundclip = interactions.soundclips.soundclip(specification.label)
- if soundclip then
- local controldict = pdfdictionary {
- Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil
- }
- local sounddict = pdfdictionary {
- F = soundclip.filename
- }
- local action = pdfdictionary {
- Subtype = pdfconstant("Movie"),
- Border = pdfarray { 0, 0, 0 },
- T = format("sound %s",specification.label),
- Movie = sounddict,
- A = controldict,
- }
- node.write(pdfannotation_node(0,0,0,action()))
- end
-end
-
--- spot- and indexcolors
-
-local pdf_separation = pdfconstant("Separation")
-local pdf_indexed = pdfconstant("Indexed")
-local pdf_device_n = pdfconstant("DeviceN")
-local pdf_device_rgb = pdfconstant("DeviceRGB")
-local pdf_device_cmyk = pdfconstant("DeviceCMYK")
-local pdf_device_gray = pdfconstant("DeviceGray")
-local pdf_extgstate = pdfconstant("ExtGState")
-
-local pdf_rbg_range = pdfarray { 0, 1, 0, 1, 0, 1 }
-local pdf_cmyk_range = pdfarray { 0, 1, 0, 1, 0, 1, 0, 1 }
-local pdf_gray_range = pdfarray { 0, 1 }
-
-local rgb_function = "dup %s mul exch dup %s mul exch %s mul"
-local cmyk_function = "dup %s mul exch dup %s mul exch dup %s mul exch %s mul"
-local gray_function = "%s mul"
-
-local documentcolorspaces = pdfdictionary()
-
-local spotcolorhash = { } -- not needed
-local spotcolornames = { }
-local indexcolorhash = { }
-local delayedindexcolors = { }
-
-function registrations.spotcolorname(name,e)
- spotcolornames[name] = e or name
-end
-
-function registrations.getspotcolorreference(name)
- return spotcolorhash[name]
-end
-
--- beware: xpdf/okular/evince cannot handle the spot->process shade
-
--- This should become delayed i.e. only flush when used; in that case we need
--- need to store the specification and then flush them when accesssomespotcolor
--- is called. At this moment we assume that splotcolors that get defined are
--- also used which keeps the overhad small anyway.
-
-local processcolors
-
-local function registersomespotcolor(name,noffractions,names,p,colorspace,range,funct)
- noffractions = tonumber(noffractions) or 1 -- to be checked
- if noffractions == 0 then
- -- can't happen
- elseif noffractions == 1 then
- local dictionary = pdfdictionary {
- FunctionType = 4,
- Domain = { 0, 1 },
- Range = range,
- }
- local calculations = pdfimmediateobject("stream",format("{ %s }",funct),dictionary()) -- todo: lpdf.stream
- -- local calculations = pdfobject {
- -- type = "stream",
- -- immediate = true,
- -- string = format("{ %s }",funct),
- -- attr = dictionary(),
- -- }
- local array = pdfarray {
- pdf_separation,
- pdfconstant(spotcolornames[name] or name),
- colorspace,
- pdfreference(calculations),
- }
- local m = pdfimmediateobject(tostring(array))
- local mr = pdfreference(m)
- spotcolorhash[name] = m
- documentcolorspaces[name] = mr
- lpdf.adddocumentcolorspace(name,mr)
- else
- local cnames = pdfarray()
- local domain = pdfarray()
- local colorants = pdfdictionary()
- for n in gmatch(names,"[^,]+") do
- local name = spotcolornames[n] or n
- if n == "cyan" then
- name = "Cyan"
- elseif n == "magenta" then
- name = "Magenta"
- elseif n == "yellow" then
- name = "Yellow"
- elseif n == "black" then
- name = "Black"
- else
- colorants[name] = pdfreference(spotcolorhash[name] or spotcolorhash[n])
- end
- cnames[#cnames+1] = pdfconstant(name)
- domain[#domain+1] = 0
- domain[#domain+1] = 1
- end
- if not processcolors then
- local specification = pdfdictionary {
- ColorSpace = pdfconstant("DeviceCMYK"),
- Components = pdfarray {
- pdfconstant("Cyan"),
- pdfconstant("Magenta"),
- pdfconstant("Yellow"),
- pdfconstant("Black")
- }
- }
- processcolors = pdfreference(pdfimmediateobject(tostring(specification)))
- end
- local dictionary = pdfdictionary {
- FunctionType = 4,
- Domain = domain,
- Range = range,
- }
- local calculation = pdfimmediateobject("stream",format("{ %s %s }",rep("pop ",noffractions),funct),dictionary())
- local channels = pdfdictionary {
- Subtype = pdfconstant("NChannel"),
- Colorants = colorants,
- Process = processcolors,
- }
- local array = pdfarray {
- pdf_device_n,
- cnames,
- colorspace,
- pdfreference(calculation),
- lpdf.shareobjectreference(tostring(channels)), -- optional but needed for shades
- }
- local m = pdfimmediateobject(tostring(array))
- local mr = pdfreference(m)
- spotcolorhash[name] = m
- documentcolorspaces[name] = mr
- lpdf.adddocumentcolorspace(name,mr)
- end
-end
-
--- wrong name
-
-local function registersomeindexcolor(name,noffractions,names,p,colorspace,range,funct)
- noffractions = tonumber(noffractions) or 1 -- to be checked
- local cnames = pdfarray()
- local domain = pdfarray()
- if names == "" then
- names = name .. ",None"
- else
- names = names .. ",None"
- end
- for n in gmatch(names,"[^,]+") do
- cnames[#cnames+1] = pdfconstant(spotcolornames[n] or n)
- domain[#domain+1] = 0
- domain[#domain+1] = 1
- end
- local dictionary = pdfdictionary {
- FunctionType = 4,
- Domain = domain,
- Range = range,
- }
- local n = pdfimmediateobject("stream",format("{ %s %s }",rep("exch pop ",noffractions),funct),dictionary()) -- exch pop
- local a = pdfarray {
- pdf_device_n,
- cnames,
- colorspace,
- pdfreference(n),
- }
- if p == "" then
- p = "1"
- else
- p = p .. ",1"
- end
- local pi = { }
- for pp in gmatch(p,"[^,]+") do
- pi[#pi+1] = tonumber(pp)
- end
- local vector, set, n = { }, { }, #pi
- for i=255,0,-1 do
- for j=1,n do
- set[j] = format("%02X",round(pi[j]*i))
- end
- vector[#vector+1] = concat(set)
- end
- vector = pdfverbose { "<", concat(vector, " "), ">" }
- local n = pdfimmediateobject(tostring(pdfarray{ pdf_indexed, a, 255, vector }))
- lpdf.adddocumentcolorspace(format("%s_indexed",name),pdfreference(n))
- return n
-end
-
--- actually, names (parent) is the hash
-
-local function delayindexcolor(name,names,func)
- local hash = (names ~= "" and names) or name
- delayedindexcolors[hash] = func
-end
-
-local function indexcolorref(name) -- actually, names (parent) is the hash
- if not indexcolorhash[name] then
- local delayedindexcolor = delayedindexcolors[name]
- if type(delayedindexcolor) == "function" then
- indexcolorhash[name] = delayedindexcolor()
- delayedindexcolors[name] = true
- end
- end
- return indexcolorhash[name]
-end
-
-function registrations.rgbspotcolor(name,noffractions,names,p,r,g,b)
- if noffractions == 1 then
- registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format(rgb_function,r,g,b))
- else
- registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format("%s %s %s",r,g,b))
- end
- delayindexcolor(name,names,function()
- return registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b))
- end)
-end
-
-function registrations.cmykspotcolor(name,noffractions,names,p,c,m,y,k)
- if noffractions == 1 then
- registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
- else
- registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format("%s %s %s %s",c,m,y,k))
- end
- delayindexcolor(name,names,function()
- return registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
- end)
-end
-
-function registrations.grayspotcolor(name,noffractions,names,p,s)
- if noffractions == 1 then
- registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s))
- else
- registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,s)
- end
- delayindexcolor(name,names,function()
- return registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s))
- end)
-end
-
-function registrations.rgbindexcolor(name,noffractions,names,p,r,g,b)
- registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b))
-end
-
-function registrations.cmykindexcolor(name,noffractions,names,p,c,m,y,k)
- registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
-end
-
-function registrations.grayindexcolor(name,noffractions,names,p,s)
- registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,gray_function)
-end
-
-function codeinjections.setfigurecolorspace(data,figure)
- local color = data.request.color
- if color then
- local ref = indexcolorref(color)
- if ref then
- figure.colorspace = ref
- data.used.color = color
- end
- end
-end
-
--- transparency
-
-local transparencies = { [0] =
- pdfconstant("Normal"),
- pdfconstant("Normal"),
- pdfconstant("Multiply"),
- pdfconstant("Screen"),
- pdfconstant("Overlay"),
- pdfconstant("SoftLight"),
- pdfconstant("HardLight"),
- pdfconstant("ColorDodge"),
- pdfconstant("ColorBurn"),
- pdfconstant("Darken"),
- pdfconstant("Lighten"),
- pdfconstant("Difference"),
- pdfconstant("Exclusion"),
- pdfconstant("Compatible"),
-}
-
-local documenttransparencies = { }
-local transparencyhash = { } -- share objects
-
-local done = false
-
-function registrations.transparency(n,a,t)
- if not done then
- local d = pdfdictionary {
- Type = pdf_extgstate,
- ca = 1,
- CA = 1,
- BM = transparencies[1],
- AIS = false,
- }
- local m = pdfimmediateobject(tostring(d))
- local mr = pdfreference(m)
- transparencyhash[0] = m
- documenttransparencies[0] = mr
- lpdf.adddocumentextgstate("Tr0",mr)
- done = true
- end
- if n > 0 and not transparencyhash[n] then
- local d = pdfdictionary {
- Type = pdf_extgstate,
- ca = tonumber(t),
- CA = tonumber(t),
- BM = transparencies[tonumber(a)] or transparencies[0],
- AIS = false,
- }
- local m = pdfimmediateobject(tostring(d))
- local mr = pdfreference(m)
- transparencyhash[n] = m
- documenttransparencies[n] = mr
- lpdf.adddocumentextgstate(format("Tr%s",n),mr)
- end
-end
-
--- overloaded in lpdf-xmp:
-
-function codeinjections.adddocumentinfo(key,value)
- lpdf.addtoinfo(key,lpdf.tosixteen(value))
-end
-
--- graphics
-
-function codeinjections.setfigurealternative(data,figure)
- local request = data.request
- local display = request.display
- if display and display ~= "" then
- local nested = figures.push {
- name = display,
- page = request.page,
- size = request.size,
- prefix = request.prefix,
- cache = request.cache,
- width = request.width,
- height = request.height,
- }
- figures.identify()
- local displayfigure = figures.check()
- if displayfigure then
- -- figure.aform = true
- img.immediatewrite(figure)
- local a = pdfarray {
- pdfdictionary {
- Image = pdfreference(figure.objnum),
- DefaultForPrinting = true,
- }
- }
- local d = pdfdictionary {
- Alternates = pdfreference(pdfimmediateobject(tostring(a))),
- }
- displayfigure.attr = d()
- figures.pop()
- return displayfigure, nested
- else
- figures.pop()
- end
- end
-end
-
-function codeinjections.getpreviewfigure(request)
- local figure = figures.initialize(request)
- if not figure then
- return
- end
- figure = figures.identify(figure)
- if not figure then
- return
- end
- figure = figures.check(figure)
- if not figure then
- return
- end
- local image = figure.status.private
- if image then
- img.immediatewrite(image)
- end
- return figure
-end
-
-function codeinjections.setfiguremask(data,figure) -- mark
- local request = data.request
- local mask = request.mask
- if mask and mask ~= "" then
- figures.push {
- name = mask,
- page = request.page,
- size = request.size,
- prefix = request.prefix,
- cache = request.cache,
- width = request.width,
- height = request.height,
- }
- figures.identify()
- local maskfigure = figures.check()
- if maskfigure then
- local image = maskfigure.status.private
- if image then
- img.immediatewrite(image)
- local d = pdfdictionary {
- Interpolate = false,
- SMask = pdfreference(image.objnum),
- }
- figure.attr = d()
- end
- end
- figures.pop()
- end
-end
+local codeinjections = backends.pdf.codeinjections
local outputfilename
@@ -584,35 +17,4 @@ function codeinjections.getoutputfilename()
return outputfilename
end
--- temp hack
-
-local factor = number.dimenfactors.bp
-
-function img.package(image)
- local boundingbox = image.bbox
- local imagetag = "Im" .. image.index
- local resources = pdfdictionary {
- ProcSet = pdfarray {
- pdfconstant("PDF"),
- pdfconstant("ImageC")
- },
- Resources = pdfdictionary {
- XObject = pdfdictionary {
- [imagetag] = pdfreference(image.objnum)
- }
- }
- }
- local width = boundingbox[3]
- local height = boundingbox[4]
- local xform = img.scan {
- attr = resources(),
- stream = format("%s 0 0 %s 0 0 cm /%s Do",width,height,imagetag),
- bbox = { 0, 0, width/factor, height/factor },
- }
- img.immediatewrite(xform)
- return xform
-end
-
--- till here
-
backends.install("pdf")
diff --git a/tex/context/base/back-pdf.mkiv b/tex/context/base/back-pdf.mkiv
index 5b7de128d..30beb2fb9 100644
--- a/tex/context/base/back-pdf.mkiv
+++ b/tex/context/base/back-pdf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\PDF,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -14,15 +14,16 @@
\writestatus{loading}{ConTeXt Backend Macros / PDF}
\registerctxluafile{lpdf-ini}{1.001}
+\registerctxluafile{lpdf-nod}{1.001}
\registerctxluafile{lpdf-col}{1.000}
\registerctxluafile{lpdf-xmp}{1.001}
-\registerctxluafile{lpdf-nod}{1.001}
\registerctxluafile{lpdf-mis}{1.001}
\registerctxluafile{lpdf-ano}{1.001}
\registerctxluafile{lpdf-ren}{1.001}
\registerctxluafile{lpdf-grp}{1.001}
\registerctxluafile{lpdf-wid}{1.001}
\registerctxluafile{lpdf-fld}{1.001}
+\registerctxluafile{lpdf-mov}{1.001}
\registerctxluafile{lpdf-u3d}{1.001}
\registerctxluafile{lpdf-swf}{1.001}
\registerctxluafile{lpdf-tag}{1.001}
@@ -140,7 +141,7 @@
\def\dostartmirroring{\pdfliteral{-1 0 0 1 0 0 cm}}
\def\dostopmirroring {\pdfliteral{-1 0 0 1 0 0 cm}}
-\def\dostartclipping#1#2#3% todo (still needed?)
+\def\dostartclipping#1#2#3% todo (still needed?) (can move to lua)
{\PointsToBigPoints{#2}\width
\PointsToBigPoints{#3}\height
\grabMPclippath{#1}{1}\width\height{0 0 m \width\space 0 l \width \height l 0 \height l}%
diff --git a/tex/context/base/back-u3d.mkiv b/tex/context/base/back-u3d.mkiv
index e26094496..dfe8a90c2 100644
--- a/tex/context/base/back-u3d.mkiv
+++ b/tex/context/base/back-u3d.mkiv
@@ -5,7 +5,7 @@
%D subtitle=U3D Experiment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/bibl-bib.mkiv b/tex/context/base/bibl-bib.mkiv
index 681be325f..760338f39 100644
--- a/tex/context/base/bibl-bib.mkiv
+++ b/tex/context/base/bibl-bib.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen \& Taco Hoekwater,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/bibl-tra.mkii b/tex/context/base/bibl-tra.mkii
index 2c03a7f91..a9ce392a2 100644
--- a/tex/context/base/bibl-tra.mkii
+++ b/tex/context/base/bibl-tra.mkii
@@ -5,7 +5,7 @@
%D subtitle=Publications,
%D author=Taco Hoekwater,
%D date=\currentdate,
-%D copyright=Public Domain]
+%D copyright={Public Domain}]
%C
%C Donated to the public domain.
diff --git a/tex/context/base/bibl-tra.mkiv b/tex/context/base/bibl-tra.mkiv
index 8e2f61641..77df70b69 100644
--- a/tex/context/base/bibl-tra.mkiv
+++ b/tex/context/base/bibl-tra.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Publications,
%D author=Taco Hoekwater,
%D date=\currentdate,
-%D copyright=Public Domain]
+%D copyright={Public Domain}]
%C
%C Donated to the public domain.
diff --git a/tex/context/base/blob-ini.mkiv b/tex/context/base/blob-ini.mkiv
index 7f63ec73d..eaaae844c 100644
--- a/tex/context/base/blob-ini.mkiv
+++ b/tex/context/base/blob-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-default.mkiv b/tex/context/base/buff-imp-default.mkiv
index 7a935e218..5cff34c70 100644
--- a/tex/context/base/buff-imp-default.mkiv
+++ b/tex/context/base/buff-imp-default.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-escaped.mkiv b/tex/context/base/buff-imp-escaped.mkiv
index 55d2fb093..13850475a 100644
--- a/tex/context/base/buff-imp-escaped.mkiv
+++ b/tex/context/base/buff-imp-escaped.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Escaped,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-lua.mkiv b/tex/context/base/buff-imp-lua.mkiv
index a04e23851..dc601bd7b 100644
--- a/tex/context/base/buff-imp-lua.mkiv
+++ b/tex/context/base/buff-imp-lua.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\LUA,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-mp.mkiv b/tex/context/base/buff-imp-mp.mkiv
index 55e13b12d..a40eb6c30 100644
--- a/tex/context/base/buff-imp-mp.mkiv
+++ b/tex/context/base/buff-imp-mp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-nested.mkiv b/tex/context/base/buff-imp-nested.mkiv
index 627acc685..7815086db 100644
--- a/tex/context/base/buff-imp-nested.mkiv
+++ b/tex/context/base/buff-imp-nested.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Nested,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-parsed-xml.mkiv b/tex/context/base/buff-imp-parsed-xml.mkiv
index 1aa8fbc74..bd348a67d 100644
--- a/tex/context/base/buff-imp-parsed-xml.mkiv
+++ b/tex/context/base/buff-imp-parsed-xml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Parsed \XML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-tex.mkiv b/tex/context/base/buff-imp-tex.mkiv
index 384975729..6f5ba6b10 100644
--- a/tex/context/base/buff-imp-tex.mkiv
+++ b/tex/context/base/buff-imp-tex.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\TEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-imp-xml.mkiv b/tex/context/base/buff-imp-xml.mkiv
index 68dc9ed13..f880ab882 100644
--- a/tex/context/base/buff-imp-xml.mkiv
+++ b/tex/context/base/buff-imp-xml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\XML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua
index 70328f0f1..c52753cf9 100644
--- a/tex/context/base/buff-ini.lua
+++ b/tex/context/base/buff-ini.lua
@@ -59,11 +59,14 @@ local function collectcontent(names,separator) -- no print
if type(names) == "string" then
names = settings_to_array(names)
end
- if #names == 1 then
+ local nnames = #names
+ if nnames == 0 then
+ return data[""] or "" -- default buffer
+ elseif nnames == 1 then
return getcontent(names[1])
else
local t, n = { }, 0
- for i=1,#names do
+ for i=1,nnames do
local c = getcontent(names[i])
if c ~= "" then
n = n + 1
diff --git a/tex/context/base/buff-ini.mkii b/tex/context/base/buff-ini.mkii
index fc147d090..40baaec93 100644
--- a/tex/context/base/buff-ini.mkii
+++ b/tex/context/base/buff-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Buffers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-ini.mkiv b/tex/context/base/buff-ini.mkiv
index 7bd382fe2..4db373836 100644
--- a/tex/context/base/buff-ini.mkiv
+++ b/tex/context/base/buff-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Buffers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-par.mkiv b/tex/context/base/buff-par.mkiv
index c44a75050..02e250b81 100644
--- a/tex/context/base/buff-par.mkiv
+++ b/tex/context/base/buff-par.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Parallel,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-ver.mkii b/tex/context/base/buff-ver.mkii
index 355296101..fbe56892e 100644
--- a/tex/context/base/buff-ver.mkii
+++ b/tex/context/base/buff-ver.mkii
@@ -5,7 +5,7 @@
%D subtitle=Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/buff-ver.mkiv b/tex/context/base/buff-ver.mkiv
index c8f07ddb4..15a8d2887 100644
--- a/tex/context/base/buff-ver.mkiv
+++ b/tex/context/base/buff-ver.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/bxml-apa.mkiv b/tex/context/base/bxml-apa.mkiv
index 5fc87e5ef..35319e4ce 100644
--- a/tex/context/base/bxml-apa.mkiv
+++ b/tex/context/base/bxml-apa.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Publications,
%D author={Taco Hoekwater \& Hans Hagen},
%D date=\currentdate,
-%D copyright={Hans Hagen \& Taco Hoekwater}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-act.mkii b/tex/context/base/catc-act.mkii
index 41b7e8b98..6535afc56 100644
--- a/tex/context/base/catc-act.mkii
+++ b/tex/context/base/catc-act.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Catcode Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-act.mkiv b/tex/context/base/catc-act.mkiv
index 2cde28e44..c1a044df1 100644
--- a/tex/context/base/catc-act.mkiv
+++ b/tex/context/base/catc-act.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Catcode Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-ctx.mkii b/tex/context/base/catc-ctx.mkii
index 6bf4e9cfb..8bb43c1f9 100644
--- a/tex/context/base/catc-ctx.mkii
+++ b/tex/context/base/catc-ctx.mkii
@@ -5,7 +5,7 @@
%D subtitle=Extra Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-ctx.mkiv b/tex/context/base/catc-ctx.mkiv
index bdba6aeee..347c37da4 100644
--- a/tex/context/base/catc-ctx.mkiv
+++ b/tex/context/base/catc-ctx.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Extra Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -46,9 +46,10 @@
\catcode\formfeedasciicode \endoflinecatcode
\catcode\spaceasciicode \spacecatcode
\catcode\endoffileasciicode \ignorecatcode
- \catcode\circumflexasciicode\superscriptcatcode
+ \catcode\circumflexasciicode\superscriptcatcode % candidate
\catcode\underscoreasciicode\lettercatcode
\catcode\ampersandasciicode \alignmentcatcode
+% \catcode\colonasciicode \lettercatcode % candidate
\catcode\backslashasciicode \escapecatcode
\catcode\leftbraceasciicode \begingroupcatcode
\catcode\rightbraceasciicode\endgroupcatcode
diff --git a/tex/context/base/catc-def.mkii b/tex/context/base/catc-def.mkii
index 275a9a6cd..25044bdf0 100644
--- a/tex/context/base/catc-def.mkii
+++ b/tex/context/base/catc-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-def.mkiv b/tex/context/base/catc-def.mkiv
index 0bd7deed7..0c6c5370d 100644
--- a/tex/context/base/catc-def.mkiv
+++ b/tex/context/base/catc-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-ini.mkii b/tex/context/base/catc-ini.mkii
index 900f61756..7527466e1 100644
--- a/tex/context/base/catc-ini.mkii
+++ b/tex/context/base/catc-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Catcode Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-ini.mkiv b/tex/context/base/catc-ini.mkiv
index 9221d17c5..9e7693203 100644
--- a/tex/context/base/catc-ini.mkiv
+++ b/tex/context/base/catc-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Catcode Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -48,6 +48,7 @@
\setnewconstant\dollarasciicode 36
\setnewconstant\commentasciicode 37
\setnewconstant\ampersandasciicode 38
+\setnewconstant\colonasciicode 58
\setnewconstant\backslashasciicode 92 % `\\
\setnewconstant\circumflexasciicode 94
\setnewconstant\underscoreasciicode 95
diff --git a/tex/context/base/catc-sym.mkii b/tex/context/base/catc-sym.mkii
index 91cac5f90..55782f11e 100644
--- a/tex/context/base/catc-sym.mkii
+++ b/tex/context/base/catc-sym.mkii
@@ -5,7 +5,7 @@
%D subtitle=Some Handy Constants,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-sym.mkiv b/tex/context/base/catc-sym.mkiv
index 91cac5f90..55782f11e 100644
--- a/tex/context/base/catc-sym.mkiv
+++ b/tex/context/base/catc-sym.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Some Handy Constants,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-xml.mkii b/tex/context/base/catc-xml.mkii
index 2349e01a2..45eb5a421 100644
--- a/tex/context/base/catc-xml.mkii
+++ b/tex/context/base/catc-xml.mkii
@@ -5,7 +5,7 @@
%D subtitle=\XML\ Catcode Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/catc-xml.mkiv b/tex/context/base/catc-xml.mkiv
index 1f11d353a..5e7df11f5 100644
--- a/tex/context/base/catc-xml.mkiv
+++ b/tex/context/base/catc-xml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\XML\ Catcode Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/char-act.mkiv b/tex/context/base/char-act.mkiv
index 1045d5975..9e219bccf 100644
--- a/tex/context/base/char-act.mkiv
+++ b/tex/context/base/char-act.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Active,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua
index c830774cb..529cf8fee 100644
--- a/tex/context/base/char-def.lua
+++ b/tex/context/base/char-def.lua
@@ -458,6 +458,7 @@ characters.data={
description="SOLIDUS",
direction="cs",
linebreak="sy",
+ mathclass="binary",
mathsymbol=0x2044,
unicodeslot=0x002F,
},
@@ -50190,7 +50191,7 @@ characters.data={
},
[0x200A]={
category="zs",
- contextname="figurespace",
+ contextname="hairspace",
description="HAIR SPACE",
direction="ws",
linebreak="ba",
@@ -53010,6 +53011,7 @@ characters.data={
},
},
mathstretch="h",
+ mathfiller="leftarrowfill",
unicodeslot=0x2190,
},
[0x2191]={
@@ -53048,6 +53050,7 @@ characters.data={
name="overrightarrow",
},
},
+ mathfiller="rightarrowfill",
mathstretch="h",
unicodeslot=0x2192,
},
@@ -56858,7 +56861,7 @@ characters.data={
direction="on",
linebreak="al",
mathclass="open",
- mathname="lceil",
+ mathname="lceiling",
mirror=0x2309,
unicodeslot=0x2308,
},
@@ -56868,7 +56871,7 @@ characters.data={
direction="on",
linebreak="al",
mathclass="close",
- mathname="rceil",
+ mathname="rceiling",
mirror=0x2308,
unicodeslot=0x2309,
},
diff --git a/tex/context/base/char-enc.mkiv b/tex/context/base/char-enc.mkiv
index 9fe9a363b..86ab2591a 100644
--- a/tex/context/base/char-enc.mkiv
+++ b/tex/context/base/char-enc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Encodings,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/char-ent.lua b/tex/context/base/char-ent.lua
new file mode 100644
index 000000000..c330d81a4
--- /dev/null
+++ b/tex/context/base/char-ent.lua
@@ -0,0 +1,2258 @@
+if not modules then modules = { } end modules ['math-ent'] = {
+ version = 1.001,
+ comment = "companion to math-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "derived from the mathml 2.0 specification",
+}
+
+-- http://www.w3.org/2003/entities/2007/w3centities-f.ent
+-- http://www.w3.org/2003/entities/2007/htmlmathml-f.ent
+
+-- this might go into char-def
+
+local entities = utilities.storage.allocate {
+ ["AElig"] = "Æ", -- U+000C6
+ ["AMP"] = "&", -- U+00026
+ ["Aacgr"] = "Ά", -- U+00386
+ ["Aacute"] = "Á", -- U+000C1
+ ["Abreve"] = "Ă", -- U+00102
+ ["Acirc"] = "Â", -- U+000C2
+ ["Acy"] = "А", -- U+00410
+ ["Afr"] = "𝔄", -- U+1D504
+ ["Agr"] = "Α", -- U+00391
+ ["Agrave"] = "À", -- U+000C0
+ ["Alpha"] = "Α", -- U+00391
+ ["Amacr"] = "Ā", -- U+00100
+ ["And"] = "⩓", -- U+02A53
+ ["Aogon"] = "Ą", -- U+00104
+ ["Aopf"] = "𝔸", -- U+1D538
+ ["ApplyFunction"] = "⁡", -- U+02061
+ ["Aring"] = "Å", -- U+000C5
+ ["Ascr"] = "𝒜", -- U+1D49C
+ ["Assign"] = "≔", -- U+02254
+ ["Atilde"] = "Ã", -- U+000C3
+ ["Auml"] = "Ä", -- U+000C4
+ ["Backslash"] = "∖", -- U+02216
+ ["Barv"] = "⫧", -- U+02AE7
+ ["Barwed"] = "⌆", -- U+02306
+ ["Bcy"] = "Б", -- U+00411
+ ["Because"] = "∵", -- U+02235
+ ["Bernoullis"] = "ℬ", -- U+0212C
+ ["Beta"] = "Β", -- U+00392
+ ["Bfr"] = "𝔅", -- U+1D505
+ ["Bgr"] = "Β", -- U+00392
+ ["Bopf"] = "𝔹", -- U+1D539
+ ["Breve"] = "˘", -- U+002D8
+ ["Bscr"] = "ℬ", -- U+0212C
+ ["Bumpeq"] = "≎", -- U+0224E
+ ["CHcy"] = "Ч", -- U+00427
+ ["COPY"] = "©", -- U+000A9
+ ["Cacute"] = "Ć", -- U+00106
+ ["Cap"] = "⋒", -- U+022D2
+ ["CapitalDifferentialD"] = "ⅅ", -- U+02145
+ ["Cayleys"] = "ℭ", -- U+0212D
+ ["Ccaron"] = "Č", -- U+0010C
+ ["Ccedil"] = "Ç", -- U+000C7
+ ["Ccirc"] = "Ĉ", -- U+00108
+ ["Cconint"] = "∰", -- U+02230
+ ["Cdot"] = "Ċ", -- U+0010A
+ ["Cedilla"] = "¸", -- U+000B8
+ ["CenterDot"] = "·", -- U+000B7
+ ["Cfr"] = "ℭ", -- U+0212D
+ ["Chi"] = "Χ", -- U+003A7
+ ["CircleDot"] = "⊙", -- U+02299
+ ["CircleMinus"] = "⊖", -- U+02296
+ ["CirclePlus"] = "⊕", -- U+02295
+ ["CircleTimes"] = "⊗", -- U+02297
+ ["ClockwiseContourIntegral"] = "∲", -- U+02232
+ ["CloseCurlyDoubleQuote"] = "”", -- U+0201D
+ ["CloseCurlyQuote"] = "’", -- U+02019
+ ["Colon"] = "∷", -- U+02237
+ ["Colone"] = "⩴", -- U+02A74
+ ["Congruent"] = "≡", -- U+02261
+ ["Conint"] = "∯", -- U+0222F
+ ["ContourIntegral"] = "∮", -- U+0222E
+ ["Copf"] = "ℂ", -- U+02102
+ ["Coproduct"] = "∐", -- U+02210
+ ["CounterClockwiseContourIntegral"] = "∳", -- U+02233
+ ["Cross"] = "⨯", -- U+02A2F
+ ["Cscr"] = "𝒞", -- U+1D49E
+ ["Cup"] = "⋓", -- U+022D3
+ ["CupCap"] = "≍", -- U+0224D
+ ["DD"] = "ⅅ", -- U+02145
+ ["DDotrahd"] = "⤑", -- U+02911
+ ["DJcy"] = "Ђ", -- U+00402
+ ["DScy"] = "Ѕ", -- U+00405
+ ["DZcy"] = "Џ", -- U+0040F
+ ["Dagger"] = "‡", -- U+02021
+ ["Darr"] = "↡", -- U+021A1
+ ["Dashv"] = "⫤", -- U+02AE4
+ ["Dcaron"] = "Ď", -- U+0010E
+ ["Dcy"] = "Д", -- U+00414
+ ["Del"] = "∇", -- U+02207
+ ["Delta"] = "Δ", -- U+00394
+ ["Dfr"] = "𝔇", -- U+1D507
+ ["Dgr"] = "Δ", -- U+00394
+ ["DiacriticalAcute"] = "´", -- U+000B4
+ ["DiacriticalDot"] = "˙", -- U+002D9
+ ["DiacriticalDoubleAcute"] = "˝", -- U+002DD
+ ["DiacriticalGrave"] = "`", -- U+00060
+ ["DiacriticalTilde"] = "˜", -- U+002DC
+ ["Diamond"] = "⋄", -- U+022C4
+ ["DifferentialD"] = "ⅆ", -- U+02146
+ ["Dopf"] = "𝔻", -- U+1D53B
+ ["Dot"] = "¨", -- U+000A8
+ ["DotDot"] = "⃜", -- U+020DC
+ ["DotEqual"] = "≐", -- U+02250
+ ["DoubleContourIntegral"] = "∯", -- U+0222F
+ ["DoubleDot"] = "¨", -- U+000A8
+ ["DoubleDownArrow"] = "⇓", -- U+021D3
+ ["DoubleLeftArrow"] = "⇐", -- U+021D0
+ ["DoubleLeftRightArrow"] = "⇔", -- U+021D4
+ ["DoubleLeftTee"] = "⫤", -- U+02AE4
+ ["DoubleLongLeftArrow"] = "⟸", -- U+027F8
+ ["DoubleLongLeftRightArrow"] = "⟺", -- U+027FA
+ ["DoubleLongRightArrow"] = "⟹", -- U+027F9
+ ["DoubleRightArrow"] = "⇒", -- U+021D2
+ ["DoubleRightTee"] = "⊨", -- U+022A8
+ ["DoubleUpArrow"] = "⇑", -- U+021D1
+ ["DoubleUpDownArrow"] = "⇕", -- U+021D5
+ ["DoubleVerticalBar"] = "∥", -- U+02225
+ ["DownArrow"] = "↓", -- U+02193
+ ["DownArrowBar"] = "⤓", -- U+02913
+ ["DownArrowUpArrow"] = "⇵", -- U+021F5
+ ["DownBreve"] = "̑", -- U+00311
+ ["DownLeftRightVector"] = "⥐", -- U+02950
+ ["DownLeftTeeVector"] = "⥞", -- U+0295E
+ ["DownLeftVector"] = "↽", -- U+021BD
+ ["DownLeftVectorBar"] = "⥖", -- U+02956
+ ["DownRightTeeVector"] = "⥟", -- U+0295F
+ ["DownRightVector"] = "⇁", -- U+021C1
+ ["DownRightVectorBar"] = "⥗", -- U+02957
+ ["DownTee"] = "⊤", -- U+022A4
+ ["DownTeeArrow"] = "↧", -- U+021A7
+ ["Downarrow"] = "⇓", -- U+021D3
+ ["Dscr"] = "𝒟", -- U+1D49F
+ ["Dstrok"] = "Đ", -- U+00110
+ ["EEacgr"] = "Ή", -- U+00389
+ ["EEgr"] = "Η", -- U+00397
+ ["ENG"] = "Ŋ", -- U+0014A
+ ["ETH"] = "Ð", -- U+000D0
+ ["Eacgr"] = "Έ", -- U+00388
+ ["Eacute"] = "É", -- U+000C9
+ ["Ecaron"] = "Ě", -- U+0011A
+ ["Ecirc"] = "Ê", -- U+000CA
+ ["Ecy"] = "Э", -- U+0042D
+ ["Edot"] = "Ė", -- U+00116
+ ["Efr"] = "𝔈", -- U+1D508
+ ["Egr"] = "Ε", -- U+00395
+ ["Egrave"] = "È", -- U+000C8
+ ["Element"] = "∈", -- U+02208
+ ["Emacr"] = "Ē", -- U+00112
+ ["EmptySmallSquare"] = "◻", -- U+025FB
+ ["EmptyVerySmallSquare"] = "▫", -- U+025AB
+ ["Eogon"] = "Ę", -- U+00118
+ ["Eopf"] = "𝔼", -- U+1D53C
+ ["Epsilon"] = "Ε", -- U+00395
+ ["Equal"] = "⩵", -- U+02A75
+ ["EqualTilde"] = "≂", -- U+02242
+ ["Equilibrium"] = "⇌", -- U+021CC
+ ["Escr"] = "ℰ", -- U+02130
+ ["Esim"] = "⩳", -- U+02A73
+ ["Eta"] = "Η", -- U+00397
+ ["Euml"] = "Ë", -- U+000CB
+ ["Exists"] = "∃", -- U+02203
+ ["ExponentialE"] = "ⅇ", -- U+02147
+ ["Fcy"] = "Ф", -- U+00424
+ ["Ffr"] = "𝔉", -- U+1D509
+ ["FilledSmallSquare"] = "◼", -- U+025FC
+ ["FilledVerySmallSquare"] = "▪", -- U+025AA
+ ["Fopf"] = "𝔽", -- U+1D53D
+ ["ForAll"] = "∀", -- U+02200
+ ["Fouriertrf"] = "ℱ", -- U+02131
+ ["Fscr"] = "ℱ", -- U+02131
+ ["GJcy"] = "Ѓ", -- U+00403
+ ["GT"] = ">", -- U+0003E
+ ["Gamma"] = "Γ", -- U+00393
+ ["Gammad"] = "Ϝ", -- U+003DC
+ ["Gbreve"] = "Ğ", -- U+0011E
+ ["Gcedil"] = "Ģ", -- U+00122
+ ["Gcirc"] = "Ĝ", -- U+0011C
+ ["Gcy"] = "Г", -- U+00413
+ ["Gdot"] = "Ġ", -- U+00120
+ ["Gfr"] = "𝔊", -- U+1D50A
+ ["Gg"] = "⋙", -- U+022D9
+ ["Ggr"] = "Γ", -- U+00393
+ ["Gopf"] = "𝔾", -- U+1D53E
+ ["GreaterEqual"] = "≥", -- U+02265
+ ["GreaterEqualLess"] = "⋛", -- U+022DB
+ ["GreaterFullEqual"] = "≧", -- U+02267
+ ["GreaterGreater"] = "⪢", -- U+02AA2
+ ["GreaterLess"] = "≷", -- U+02277
+ ["GreaterSlantEqual"] = "⩾", -- U+02A7E
+ ["GreaterTilde"] = "≳", -- U+02273
+ ["Gscr"] = "𝒢", -- U+1D4A2
+ ["Gt"] = "≫", -- U+0226B
+ ["HARDcy"] = "Ъ", -- U+0042A
+ ["Hacek"] = "ˇ", -- U+002C7
+ ["Hat"] = "^", -- U+0005E
+ ["Hcirc"] = "Ĥ", -- U+00124
+ ["Hfr"] = "ℌ", -- U+0210C
+ ["HilbertSpace"] = "ℋ", -- U+0210B
+ ["Hopf"] = "ℍ", -- U+0210D
+ ["HorizontalLine"] = "─", -- U+02500
+ ["Hscr"] = "ℋ", -- U+0210B
+ ["Hstrok"] = "Ħ", -- U+00126
+ ["HumpDownHump"] = "≎", -- U+0224E
+ ["HumpEqual"] = "≏", -- U+0224F
+ ["IEcy"] = "Е", -- U+00415
+ ["IJlig"] = "IJ", -- U+00132
+ ["IOcy"] = "Ё", -- U+00401
+ ["Iacgr"] = "Ί", -- U+0038A
+ ["Iacute"] = "Í", -- U+000CD
+ ["Icirc"] = "Î", -- U+000CE
+ ["Icy"] = "И", -- U+00418
+ ["Idigr"] = "Ϊ", -- U+003AA
+ ["Idot"] = "İ", -- U+00130
+ ["Ifr"] = "ℑ", -- U+02111
+ ["Igr"] = "Ι", -- U+00399
+ ["Igrave"] = "Ì", -- U+000CC
+ ["Im"] = "ℑ", -- U+02111
+ ["Imacr"] = "Ī", -- U+0012A
+ ["ImaginaryI"] = "ⅈ", -- U+02148
+ ["Implies"] = "⇒", -- U+021D2
+ ["Int"] = "∬", -- U+0222C
+ ["Integral"] = "∫", -- U+0222B
+ ["Intersection"] = "⋂", -- U+022C2
+ ["InvisibleComma"] = "⁣", -- U+02063
+ ["InvisibleTimes"] = "⁢", -- U+02062
+ ["Iogon"] = "Į", -- U+0012E
+ ["Iopf"] = "𝕀", -- U+1D540
+ ["Iota"] = "Ι", -- U+00399
+ ["Iscr"] = "ℐ", -- U+02110
+ ["Itilde"] = "Ĩ", -- U+00128
+ ["Iukcy"] = "І", -- U+00406
+ ["Iuml"] = "Ï", -- U+000CF
+ ["Jcirc"] = "Ĵ", -- U+00134
+ ["Jcy"] = "Й", -- U+00419
+ ["Jfr"] = "𝔍", -- U+1D50D
+ ["Jopf"] = "𝕁", -- U+1D541
+ ["Jscr"] = "𝒥", -- U+1D4A5
+ ["Jsercy"] = "Ј", -- U+00408
+ ["Jukcy"] = "Є", -- U+00404
+ ["KHcy"] = "Х", -- U+00425
+ ["KHgr"] = "Χ", -- U+003A7
+ ["KJcy"] = "Ќ", -- U+0040C
+ ["Kappa"] = "Κ", -- U+0039A
+ ["Kcedil"] = "Ķ", -- U+00136
+ ["Kcy"] = "К", -- U+0041A
+ ["Kfr"] = "𝔎", -- U+1D50E
+ ["Kgr"] = "Κ", -- U+0039A
+ ["Kopf"] = "𝕂", -- U+1D542
+ ["Kscr"] = "𝒦", -- U+1D4A6
+ ["LJcy"] = "Љ", -- U+00409
+ ["LT"] = "<", -- U+00026
+ ["Lacute"] = "Ĺ", -- U+00139
+ ["Lambda"] = "Λ", -- U+0039B
+ ["Lang"] = "⟪", -- U+027EA
+ ["Laplacetrf"] = "ℒ", -- U+02112
+ ["Larr"] = "↞", -- U+0219E
+ ["Lcaron"] = "Ľ", -- U+0013D
+ ["Lcedil"] = "Ļ", -- U+0013B
+ ["Lcy"] = "Л", -- U+0041B
+ ["LeftAngleBracket"] = "⟨", -- U+027E8
+ ["LeftArrow"] = "←", -- U+02190
+ ["LeftArrowBar"] = "⇤", -- U+021E4
+ ["LeftArrowRightArrow"] = "⇆", -- U+021C6
+ ["LeftCeiling"] = "⌈", -- U+02308
+ ["LeftDoubleBracket"] = "⟦", -- U+027E6
+ ["LeftDownTeeVector"] = "⥡", -- U+02961
+ ["LeftDownVector"] = "⇃", -- U+021C3
+ ["LeftDownVectorBar"] = "⥙", -- U+02959
+ ["LeftFloor"] = "⌊", -- U+0230A
+ ["LeftRightArrow"] = "↔", -- U+02194
+ ["LeftRightVector"] = "⥎", -- U+0294E
+ ["LeftTee"] = "⊣", -- U+022A3
+ ["LeftTeeArrow"] = "↤", -- U+021A4
+ ["LeftTeeVector"] = "⥚", -- U+0295A
+ ["LeftTriangle"] = "⊲", -- U+022B2
+ ["LeftTriangleBar"] = "⧏", -- U+029CF
+ ["LeftTriangleEqual"] = "⊴", -- U+022B4
+ ["LeftUpDownVector"] = "⥑", -- U+02951
+ ["LeftUpTeeVector"] = "⥠", -- U+02960
+ ["LeftUpVector"] = "↿", -- U+021BF
+ ["LeftUpVectorBar"] = "⥘", -- U+02958
+ ["LeftVector"] = "↼", -- U+021BC
+ ["LeftVectorBar"] = "⥒", -- U+02952
+ ["Leftarrow"] = "⇐", -- U+021D0
+ ["Leftrightarrow"] = "⇔", -- U+021D4
+ ["LessEqualGreater"] = "⋚", -- U+022DA
+ ["LessFullEqual"] = "≦", -- U+02266
+ ["LessGreater"] = "≶", -- U+02276
+ ["LessLess"] = "⪡", -- U+02AA1
+ ["LessSlantEqual"] = "⩽", -- U+02A7D
+ ["LessTilde"] = "≲", -- U+02272
+ ["Lfr"] = "𝔏", -- U+1D50F
+ ["Lgr"] = "Λ", -- U+0039B
+ ["Ll"] = "⋘", -- U+022D8
+ ["Lleftarrow"] = "⇚", -- U+021DA
+ ["Lmidot"] = "Ŀ", -- U+0013F
+ ["LongLeftArrow"] = "⟵", -- U+027F5
+ ["LongLeftRightArrow"] = "⟷", -- U+027F7
+ ["LongRightArrow"] = "⟶", -- U+027F6
+ ["Longleftarrow"] = "⟸", -- U+027F8
+ ["Longleftrightarrow"] = "⟺", -- U+027FA
+ ["Longrightarrow"] = "⟹", -- U+027F9
+ ["Lopf"] = "𝕃", -- U+1D543
+ ["LowerLeftArrow"] = "↙", -- U+02199
+ ["LowerRightArrow"] = "↘", -- U+02198
+ ["Lscr"] = "ℒ", -- U+02112
+ ["Lsh"] = "↰", -- U+021B0
+ ["Lstrok"] = "Ł", -- U+00141
+ ["Lt"] = "≪", -- U+0226A
+ ["Map"] = "⤅", -- U+02905
+ ["Mcy"] = "М", -- U+0041C
+ ["MediumSpace"] = " ", -- U+0205F
+ ["Mellintrf"] = "ℳ", -- U+02133
+ ["Mfr"] = "𝔐", -- U+1D510
+ ["Mgr"] = "Μ", -- U+0039C
+ ["MinusPlus"] = "∓", -- U+02213
+ ["Mopf"] = "𝕄", -- U+1D544
+ ["Mscr"] = "ℳ", -- U+02133
+ ["Mu"] = "Μ", -- U+0039C
+ ["NJcy"] = "Њ", -- U+0040A
+ ["Nacute"] = "Ń", -- U+00143
+ ["Ncaron"] = "Ň", -- U+00147
+ ["Ncedil"] = "Ņ", -- U+00145
+ ["Ncy"] = "Н", -- U+0041D
+ ["NegativeMediumSpace"] = "​", -- U+0200B
+ ["NegativeThickSpace"] = "​", -- U+0200B
+ ["NegativeThinSpace"] = "​", -- U+0200B
+ ["NegativeVeryThinSpace"] = "​", -- U+0200B
+ ["NestedGreaterGreater"] = "≫", -- U+0226B
+ ["NestedLessLess"] = "≪", -- U+0226A
+ ["Nfr"] = "𝔑", -- U+1D511
+ ["Ngr"] = "Ν", -- U+0039D
+ ["NoBreak"] = "⁠", -- U+02060
+ ["NonBreakingSpace"] = " ", -- U+000A0
+ ["Nopf"] = "ℕ", -- U+02115
+ ["Not"] = "⫬", -- U+02AEC
+ ["NotCongruent"] = "≢", -- U+02262
+ ["NotCupCap"] = "≭", -- U+0226D
+ ["NotDoubleVerticalBar"] = "∦", -- U+02226
+ ["NotElement"] = "∉", -- U+02209
+ ["NotEqual"] = "≠", -- U+02260
+ ["NotEqualTilde"] = "≂̸", -- U+02242 00338
+ ["NotExists"] = "∄", -- U+02204
+ ["NotGreater"] = "≯", -- U+0226F
+ ["NotGreaterEqual"] = "≱", -- U+02271
+ ["NotGreaterFullEqual"] = "≧̸", -- U+02267 00338
+ ["NotGreaterGreater"] = "≫̸", -- U+0226B 00338
+ ["NotGreaterLess"] = "≹", -- U+02279
+ ["NotGreaterSlantEqual"] = "⩾̸", -- U+02A7E 00338
+ ["NotGreaterTilde"] = "≵", -- U+02275
+ ["NotHumpDownHump"] = "≎̸", -- U+0224E 00338
+ ["NotHumpEqual"] = "≏̸", -- U+0224F 00338
+ ["NotLeftTriangle"] = "⋪", -- U+022EA
+ ["NotLeftTriangleBar"] = "⧏̸", -- U+029CF 00338
+ ["NotLeftTriangleEqual"] = "⋬", -- U+022EC
+ ["NotLess"] = "≮", -- U+0226E
+ ["NotLessEqual"] = "≰", -- U+02270
+ ["NotLessGreater"] = "≸", -- U+02278
+ ["NotLessLess"] = "≪̸", -- U+0226A 00338
+ ["NotLessSlantEqual"] = "⩽̸", -- U+02A7D 00338
+ ["NotLessTilde"] = "≴", -- U+02274
+ ["NotNestedGreaterGreater"] = "⪢̸", -- U+02AA2 00338
+ ["NotNestedLessLess"] = "⪡̸", -- U+02AA1 00338
+ ["NotPrecedes"] = "⊀", -- U+02280
+ ["NotPrecedesEqual"] = "⪯̸", -- U+02AAF 00338
+ ["NotPrecedesSlantEqual"] = "⋠", -- U+022E0
+ ["NotReverseElement"] = "∌", -- U+0220C
+ ["NotRightTriangle"] = "⋫", -- U+022EB
+ ["NotRightTriangleBar"] = "⧐̸", -- U+029D0 00338
+ ["NotRightTriangleEqual"] = "⋭", -- U+022ED
+ ["NotSquareSubset"] = "⊏̸", -- U+0228F 00338
+ ["NotSquareSubsetEqual"] = "⋢", -- U+022E2
+ ["NotSquareSuperset"] = "⊐̸", -- U+02290 00338
+ ["NotSquareSupersetEqual"] = "⋣", -- U+022E3
+ ["NotSubset"] = "⊂⃒", -- U+02282 020D2
+ ["NotSubsetEqual"] = "⊈", -- U+02288
+ ["NotSucceeds"] = "⊁", -- U+02281
+ ["NotSucceedsEqual"] = "⪰̸", -- U+02AB0 00338
+ ["NotSucceedsSlantEqual"] = "⋡", -- U+022E1
+ ["NotSucceedsTilde"] = "≿̸", -- U+0227F 00338
+ ["NotSuperset"] = "⊃⃒", -- U+02283 020D2
+ ["NotSupersetEqual"] = "⊉", -- U+02289
+ ["NotTilde"] = "≁", -- U+02241
+ ["NotTildeEqual"] = "≄", -- U+02244
+ ["NotTildeFullEqual"] = "≇", -- U+02247
+ ["NotTildeTilde"] = "≉", -- U+02249
+ ["NotVerticalBar"] = "∤", -- U+02224
+ ["Nscr"] = "𝒩", -- U+1D4A9
+ ["Ntilde"] = "Ñ", -- U+000D1
+ ["Nu"] = "Ν", -- U+0039D
+ ["OElig"] = "Œ", -- U+00152
+ ["OHacgr"] = "Ώ", -- U+0038F
+ ["OHgr"] = "Ω", -- U+003A9
+ ["Oacgr"] = "Ό", -- U+0038C
+ ["Oacute"] = "Ó", -- U+000D3
+ ["Ocirc"] = "Ô", -- U+000D4
+ ["Ocy"] = "О", -- U+0041E
+ ["Odblac"] = "Ő", -- U+00150
+ ["Ofr"] = "𝔒", -- U+1D512
+ ["Ogr"] = "Ο", -- U+0039F
+ ["Ograve"] = "Ò", -- U+000D2
+ ["Omacr"] = "Ō", -- U+0014C
+ ["Omega"] = "Ω", -- U+003A9
+ ["Omicron"] = "Ο", -- U+0039F
+ ["Oopf"] = "𝕆", -- U+1D546
+ ["OpenCurlyDoubleQuote"] = "“", -- U+0201C
+ ["OpenCurlyQuote"] = "‘", -- U+02018
+ ["Or"] = "⩔", -- U+02A54
+ ["Oscr"] = "𝒪", -- U+1D4AA
+ ["Oslash"] = "Ø", -- U+000D8
+ ["Otilde"] = "Õ", -- U+000D5
+ ["Otimes"] = "⨷", -- U+02A37
+ ["Ouml"] = "Ö", -- U+000D6
+ ["OverBar"] = "‾", -- U+0203E
+ ["OverBrace"] = "⏞", -- U+023DE
+ ["OverBracket"] = "⎴", -- U+023B4
+ ["OverParenthesis"] = "⏜", -- U+023DC
+ ["PHgr"] = "Φ", -- U+003A6
+ ["PSgr"] = "Ψ", -- U+003A8
+ ["PartialD"] = "∂", -- U+02202
+ ["Pcy"] = "П", -- U+0041F
+ ["Pfr"] = "𝔓", -- U+1D513
+ ["Pgr"] = "Π", -- U+003A0
+ ["Phi"] = "Φ", -- U+003A6
+ ["Pi"] = "Π", -- U+003A0
+ ["PlusMinus"] = "±", -- U+000B1
+ ["Poincareplane"] = "ℌ", -- U+0210C
+ ["Popf"] = "ℙ", -- U+02119
+ ["Pr"] = "⪻", -- U+02ABB
+ ["Precedes"] = "≺", -- U+0227A
+ ["PrecedesEqual"] = "⪯", -- U+02AAF
+ ["PrecedesSlantEqual"] = "≼", -- U+0227C
+ ["PrecedesTilde"] = "≾", -- U+0227E
+ ["Prime"] = "″", -- U+02033
+ ["Product"] = "∏", -- U+0220F
+ ["Proportion"] = "∷", -- U+02237
+ ["Proportional"] = "∝", -- U+0221D
+ ["Pscr"] = "𝒫", -- U+1D4AB
+ ["Psi"] = "Ψ", -- U+003A8
+ ["QUOT"] = "\"", -- U+00022
+ ["Qfr"] = "𝔔", -- U+1D514
+ ["Qopf"] = "ℚ", -- U+0211A
+ ["Qscr"] = "𝒬", -- U+1D4AC
+ ["RBarr"] = "⤐", -- U+02910
+ ["REG"] = "®", -- U+000AE
+ ["Racute"] = "Ŕ", -- U+00154
+ ["Rang"] = "⟫", -- U+027EB
+ ["Rarr"] = "↠", -- U+021A0
+ ["Rarrtl"] = "⤖", -- U+02916
+ ["Rcaron"] = "Ř", -- U+00158
+ ["Rcedil"] = "Ŗ", -- U+00156
+ ["Rcy"] = "Р", -- U+00420
+ ["Re"] = "ℜ", -- U+0211C
+ ["ReverseElement"] = "∋", -- U+0220B
+ ["ReverseEquilibrium"] = "⇋", -- U+021CB
+ ["ReverseUpEquilibrium"] = "⥯", -- U+0296F
+ ["Rfr"] = "ℜ", -- U+0211C
+ ["Rgr"] = "Ρ", -- U+003A1
+ ["Rho"] = "Ρ", -- U+003A1
+ ["RightAngleBracket"] = "⟩", -- U+027E9
+ ["RightArrow"] = "→", -- U+02192
+ ["RightArrowBar"] = "⇥", -- U+021E5
+ ["RightArrowLeftArrow"] = "⇄", -- U+021C4
+ ["RightCeiling"] = "⌉", -- U+02309
+ ["RightDoubleBracket"] = "⟧", -- U+027E7
+ ["RightDownTeeVector"] = "⥝", -- U+0295D
+ ["RightDownVector"] = "⇂", -- U+021C2
+ ["RightDownVectorBar"] = "⥕", -- U+02955
+ ["RightFloor"] = "⌋", -- U+0230B
+ ["RightTee"] = "⊢", -- U+022A2
+ ["RightTeeArrow"] = "↦", -- U+021A6
+ ["RightTeeVector"] = "⥛", -- U+0295B
+ ["RightTriangle"] = "⊳", -- U+022B3
+ ["RightTriangleBar"] = "⧐", -- U+029D0
+ ["RightTriangleEqual"] = "⊵", -- U+022B5
+ ["RightUpDownVector"] = "⥏", -- U+0294F
+ ["RightUpTeeVector"] = "⥜", -- U+0295C
+ ["RightUpVector"] = "↾", -- U+021BE
+ ["RightUpVectorBar"] = "⥔", -- U+02954
+ ["RightVector"] = "⇀", -- U+021C0
+ ["RightVectorBar"] = "⥓", -- U+02953
+ ["Rightarrow"] = "⇒", -- U+021D2
+ ["Ropf"] = "ℝ", -- U+0211D
+ ["RoundImplies"] = "⥰", -- U+02970
+ ["Rrightarrow"] = "⇛", -- U+021DB
+ ["Rscr"] = "ℛ", -- U+0211B
+ ["Rsh"] = "↱", -- U+021B1
+ ["RuleDelayed"] = "⧴", -- U+029F4
+ ["SHCHcy"] = "Щ", -- U+00429
+ ["SHcy"] = "Ш", -- U+00428
+ ["SOFTcy"] = "Ь", -- U+0042C
+ ["Sacute"] = "Ś", -- U+0015A
+ ["Sc"] = "⪼", -- U+02ABC
+ ["Scaron"] = "Š", -- U+00160
+ ["Scedil"] = "Ş", -- U+0015E
+ ["Scirc"] = "Ŝ", -- U+0015C
+ ["Scy"] = "С", -- U+00421
+ ["Sfr"] = "𝔖", -- U+1D516
+ ["Sgr"] = "Σ", -- U+003A3
+ ["ShortDownArrow"] = "↓", -- U+02193
+ ["ShortLeftArrow"] = "←", -- U+02190
+ ["ShortRightArrow"] = "→", -- U+02192
+ ["ShortUpArrow"] = "↑", -- U+02191
+ ["Sigma"] = "Σ", -- U+003A3
+ ["SmallCircle"] = "∘", -- U+02218
+ ["Sopf"] = "𝕊", -- U+1D54A
+ ["Sqrt"] = "√", -- U+0221A
+ ["Square"] = "□", -- U+025A1
+ ["SquareIntersection"] = "⊓", -- U+02293
+ ["SquareSubset"] = "⊏", -- U+0228F
+ ["SquareSubsetEqual"] = "⊑", -- U+02291
+ ["SquareSuperset"] = "⊐", -- U+02290
+ ["SquareSupersetEqual"] = "⊒", -- U+02292
+ ["SquareUnion"] = "⊔", -- U+02294
+ ["Sscr"] = "𝒮", -- U+1D4AE
+ ["Star"] = "⋆", -- U+022C6
+ ["Sub"] = "⋐", -- U+022D0
+ ["Subset"] = "⋐", -- U+022D0
+ ["SubsetEqual"] = "⊆", -- U+02286
+ ["Succeeds"] = "≻", -- U+0227B
+ ["SucceedsEqual"] = "⪰", -- U+02AB0
+ ["SucceedsSlantEqual"] = "≽", -- U+0227D
+ ["SucceedsTilde"] = "≿", -- U+0227F
+ ["SuchThat"] = "∋", -- U+0220B
+ ["Sum"] = "∑", -- U+02211
+ ["Sup"] = "⋑", -- U+022D1
+ ["Superset"] = "⊃", -- U+02283
+ ["SupersetEqual"] = "⊇", -- U+02287
+ ["Supset"] = "⋑", -- U+022D1
+ ["THORN"] = "Þ", -- U+000DE
+ ["THgr"] = "Θ", -- U+00398
+ ["TRADE"] = "™", -- U+02122
+ ["TSHcy"] = "Ћ", -- U+0040B
+ ["TScy"] = "Ц", -- U+00426
+ ["Tab"] = "\9", -- U+00009
+ ["Tau"] = "Τ", -- U+003A4
+ ["Tcaron"] = "Ť", -- U+00164
+ ["Tcedil"] = "Ţ", -- U+00162
+ ["Tcy"] = "Т", -- U+00422
+ ["Tfr"] = "𝔗", -- U+1D517
+ ["Tgr"] = "Τ", -- U+003A4
+ ["Therefore"] = "∴", -- U+02234
+ ["Theta"] = "Θ", -- U+00398
+ ["ThickSpace"] = "  ", -- U+0205F 0200A
+ ["ThinSpace"] = " ", -- U+02009
+ ["Tilde"] = "∼", -- U+0223C
+ ["TildeEqual"] = "≃", -- U+02243
+ ["TildeFullEqual"] = "≅", -- U+02245
+ ["TildeTilde"] = "≈", -- U+02248
+ ["Topf"] = "𝕋", -- U+1D54B
+ ["TripleDot"] = "⃛", -- U+020DB
+ ["Tscr"] = "𝒯", -- U+1D4AF
+ ["Tstrok"] = "Ŧ", -- U+00166
+ ["Uacgr"] = "Ύ", -- U+0038E
+ ["Uacute"] = "Ú", -- U+000DA
+ ["Uarr"] = "↟", -- U+0219F
+ ["Uarrocir"] = "⥉", -- U+02949
+ ["Ubrcy"] = "Ў", -- U+0040E
+ ["Ubreve"] = "Ŭ", -- U+0016C
+ ["Ucirc"] = "Û", -- U+000DB
+ ["Ucy"] = "У", -- U+00423
+ ["Udblac"] = "Ű", -- U+00170
+ ["Udigr"] = "Ϋ", -- U+003AB
+ ["Ufr"] = "𝔘", -- U+1D518
+ ["Ugr"] = "Υ", -- U+003A5
+ ["Ugrave"] = "Ù", -- U+000D9
+ ["Umacr"] = "Ū", -- U+0016A
+ ["UnderBar"] = "_", -- U+0005F
+ ["UnderBrace"] = "⏟", -- U+023DF
+ ["UnderBracket"] = "⎵", -- U+023B5
+ ["UnderParenthesis"] = "⏝", -- U+023DD
+ ["Union"] = "⋃", -- U+022C3
+ ["UnionPlus"] = "⊎", -- U+0228E
+ ["Uogon"] = "Ų", -- U+00172
+ ["Uopf"] = "𝕌", -- U+1D54C
+ ["UpArrow"] = "↑", -- U+02191
+ ["UpArrowBar"] = "⤒", -- U+02912
+ ["UpArrowDownArrow"] = "⇅", -- U+021C5
+ ["UpDownArrow"] = "↕", -- U+02195
+ ["UpEquilibrium"] = "⥮", -- U+0296E
+ ["UpTee"] = "⊥", -- U+022A5
+ ["UpTeeArrow"] = "↥", -- U+021A5
+ ["Uparrow"] = "⇑", -- U+021D1
+ ["Updownarrow"] = "⇕", -- U+021D5
+ ["UpperLeftArrow"] = "↖", -- U+02196
+ ["UpperRightArrow"] = "↗", -- U+02197
+ ["Upsi"] = "ϒ", -- U+003D2
+ ["Upsilon"] = "Υ", -- U+003A5
+ ["Uring"] = "Ů", -- U+0016E
+ ["Uscr"] = "𝒰", -- U+1D4B0
+ ["Utilde"] = "Ũ", -- U+00168
+ ["Uuml"] = "Ü", -- U+000DC
+ ["VDash"] = "⊫", -- U+022AB
+ ["Vbar"] = "⫫", -- U+02AEB
+ ["Vcy"] = "В", -- U+00412
+ ["Vdash"] = "⊩", -- U+022A9
+ ["Vdashl"] = "⫦", -- U+02AE6
+ ["Vee"] = "⋁", -- U+022C1
+ ["Verbar"] = "‖", -- U+02016
+ ["Vert"] = "‖", -- U+02016
+ ["VerticalBar"] = "∣", -- U+02223
+ ["VerticalLine"] = "|", -- U+0007C
+ ["VerticalSeparator"] = "❘", -- U+02758
+ ["VerticalTilde"] = "≀", -- U+02240
+ ["VeryThinSpace"] = " ", -- U+0200A
+ ["Vfr"] = "𝔙", -- U+1D519
+ ["Vopf"] = "𝕍", -- U+1D54D
+ ["Vscr"] = "𝒱", -- U+1D4B1
+ ["Vvdash"] = "⊪", -- U+022AA
+ ["Wcirc"] = "Ŵ", -- U+00174
+ ["Wedge"] = "⋀", -- U+022C0
+ ["Wfr"] = "𝔚", -- U+1D51A
+ ["Wopf"] = "𝕎", -- U+1D54E
+ ["Wscr"] = "𝒲", -- U+1D4B2
+ ["Xfr"] = "𝔛", -- U+1D51B
+ ["Xgr"] = "Ξ", -- U+0039E
+ ["Xi"] = "Ξ", -- U+0039E
+ ["Xopf"] = "𝕏", -- U+1D54F
+ ["Xscr"] = "𝒳", -- U+1D4B3
+ ["YAcy"] = "Я", -- U+0042F
+ ["YIcy"] = "Ї", -- U+00407
+ ["YUcy"] = "Ю", -- U+0042E
+ ["Yacute"] = "Ý", -- U+000DD
+ ["Ycirc"] = "Ŷ", -- U+00176
+ ["Ycy"] = "Ы", -- U+0042B
+ ["Yfr"] = "𝔜", -- U+1D51C
+ ["Yopf"] = "𝕐", -- U+1D550
+ ["Yscr"] = "𝒴", -- U+1D4B4
+ ["Yuml"] = "Ÿ", -- U+00178
+ ["ZHcy"] = "Ж", -- U+00416
+ ["Zacute"] = "Ź", -- U+00179
+ ["Zcaron"] = "Ž", -- U+0017D
+ ["Zcy"] = "З", -- U+00417
+ ["Zdot"] = "Ż", -- U+0017B
+ ["ZeroWidthSpace"] = "​", -- U+0200B
+ ["Zeta"] = "Ζ", -- U+00396
+ ["Zfr"] = "ℨ", -- U+02128
+ ["Zgr"] = "Ζ", -- U+00396
+ ["Zopf"] = "ℤ", -- U+02124
+ ["Zscr"] = "𝒵", -- U+1D4B5
+ ["aacgr"] = "ά", -- U+003AC
+ ["aacute"] = "á", -- U+000E1
+ ["abreve"] = "ă", -- U+00103
+ ["ac"] = "∾", -- U+0223E
+ ["acE"] = "∾̳", -- U+0223E 00333
+ ["acd"] = "∿", -- U+0223F
+ ["acirc"] = "â", -- U+000E2
+ ["acute"] = "´", -- U+000B4
+ ["acy"] = "а", -- U+00430
+ ["aelig"] = "æ", -- U+000E6
+ ["af"] = "⁡", -- U+02061
+ ["afr"] = "𝔞", -- U+1D51E
+ ["agr"] = "α", -- U+003B1
+ ["agrave"] = "à", -- U+000E0
+ ["alefsym"] = "ℵ", -- U+02135
+ ["aleph"] = "ℵ", -- U+02135
+ ["alpha"] = "α", -- U+003B1
+ ["amacr"] = "ā", -- U+00101
+ ["amalg"] = "⨿", -- U+02A3F
+ ["amp"] = "&", -- U+00026
+ ["and"] = "∧", -- U+02227
+ ["andand"] = "⩕", -- U+02A55
+ ["andd"] = "⩜", -- U+02A5C
+ ["andslope"] = "⩘", -- U+02A58
+ ["andv"] = "⩚", -- U+02A5A
+ ["ang"] = "∠", -- U+02220
+ ["ange"] = "⦤", -- U+029A4
+ ["angle"] = "∠", -- U+02220
+ ["angmsd"] = "∡", -- U+02221
+ ["angmsdaa"] = "⦨", -- U+029A8
+ ["angmsdab"] = "⦩", -- U+029A9
+ ["angmsdac"] = "⦪", -- U+029AA
+ ["angmsdad"] = "⦫", -- U+029AB
+ ["angmsdae"] = "⦬", -- U+029AC
+ ["angmsdaf"] = "⦭", -- U+029AD
+ ["angmsdag"] = "⦮", -- U+029AE
+ ["angmsdah"] = "⦯", -- U+029AF
+ ["angrt"] = "∟", -- U+0221F
+ ["angrtvb"] = "⊾", -- U+022BE
+ ["angrtvbd"] = "⦝", -- U+0299D
+ ["angsph"] = "∢", -- U+02222
+ ["angst"] = "Å", -- U+000C5
+ ["angzarr"] = "⍼", -- U+0237C
+ ["aogon"] = "ą", -- U+00105
+ ["aopf"] = "𝕒", -- U+1D552
+ ["ap"] = "≈", -- U+02248
+ ["apE"] = "⩰", -- U+02A70
+ ["apacir"] = "⩯", -- U+02A6F
+ ["ape"] = "≊", -- U+0224A
+ ["apid"] = "≋", -- U+0224B
+ ["apos"] = "'", -- U+00027
+ ["approx"] = "≈", -- U+02248
+ ["approxeq"] = "≊", -- U+0224A
+ ["aring"] = "å", -- U+000E5
+ ["ascr"] = "𝒶", -- U+1D4B6
+ ["ast"] = "*", -- U+0002A
+ ["asymp"] = "≈", -- U+02248
+ ["asympeq"] = "≍", -- U+0224D
+ ["atilde"] = "ã", -- U+000E3
+ ["auml"] = "ä", -- U+000E4
+ ["awconint"] = "∳", -- U+02233
+ ["awint"] = "⨑", -- U+02A11
+ ["b.Delta"] = "𝚫", -- U+1D6AB
+ ["b.Gamma"] = "𝚪", -- U+1D6AA
+ ["b.Gammad"] = "𝟊", -- U+1D7CA
+ ["b.Lambda"] = "𝚲", -- U+1D6B2
+ ["b.Omega"] = "𝛀", -- U+1D6C0
+ ["b.Phi"] = "𝚽", -- U+1D6BD
+ ["b.Pi"] = "𝚷", -- U+1D6B7
+ ["b.Psi"] = "𝚿", -- U+1D6BF
+ ["b.Sigma"] = "𝚺", -- U+1D6BA
+ ["b.Theta"] = "𝚯", -- U+1D6AF
+ ["b.Upsi"] = "𝚼", -- U+1D6BC
+ ["b.Xi"] = "𝚵", -- U+1D6B5
+ ["b.alpha"] = "𝛂", -- U+1D6C2
+ ["b.beta"] = "𝛃", -- U+1D6C3
+ ["b.chi"] = "𝛘", -- U+1D6D8
+ ["b.delta"] = "𝛅", -- U+1D6C5
+ ["b.epsi"] = "𝛆", -- U+1D6C6
+ ["b.epsiv"] = "𝛜", -- U+1D6DC
+ ["b.eta"] = "𝛈", -- U+1D6C8
+ ["b.gamma"] = "𝛄", -- U+1D6C4
+ ["b.gammad"] = "𝟋", -- U+1D7CB
+ ["b.iota"] = "𝛊", -- U+1D6CA
+ ["b.kappa"] = "𝛋", -- U+1D6CB
+ ["b.kappav"] = "𝛞", -- U+1D6DE
+ ["b.lambda"] = "𝛌", -- U+1D6CC
+ ["b.mu"] = "𝛍", -- U+1D6CD
+ ["b.nu"] = "𝛎", -- U+1D6CE
+ ["b.omega"] = "𝛚", -- U+1D6DA
+ ["b.phi"] = "𝛗", -- U+1D6D7
+ ["b.phiv"] = "𝛟", -- U+1D6DF
+ ["b.pi"] = "𝛑", -- U+1D6D1
+ ["b.piv"] = "𝛡", -- U+1D6E1
+ ["b.psi"] = "𝛙", -- U+1D6D9
+ ["b.rho"] = "𝛒", -- U+1D6D2
+ ["b.rhov"] = "𝛠", -- U+1D6E0
+ ["b.sigma"] = "𝛔", -- U+1D6D4
+ ["b.sigmav"] = "𝛓", -- U+1D6D3
+ ["b.tau"] = "𝛕", -- U+1D6D5
+ ["b.thetas"] = "𝛉", -- U+1D6C9
+ ["b.thetav"] = "𝛝", -- U+1D6DD
+ ["b.upsi"] = "𝛖", -- U+1D6D6
+ ["b.xi"] = "𝛏", -- U+1D6CF
+ ["b.zeta"] = "𝛇", -- U+1D6C7
+ ["bNot"] = "⫭", -- U+02AED
+ ["backcong"] = "≌", -- U+0224C
+ ["backepsilon"] = "϶", -- U+003F6
+ ["backprime"] = "‵", -- U+02035
+ ["backsim"] = "∽", -- U+0223D
+ ["backsimeq"] = "⋍", -- U+022CD
+ ["barvee"] = "⊽", -- U+022BD
+ ["barwed"] = "⌅", -- U+02305
+ ["barwedge"] = "⌅", -- U+02305
+ ["bbrk"] = "⎵", -- U+023B5
+ ["bbrktbrk"] = "⎶", -- U+023B6
+ ["bcong"] = "≌", -- U+0224C
+ ["bcy"] = "б", -- U+00431
+ ["bdquo"] = "„", -- U+0201E
+ ["becaus"] = "∵", -- U+02235
+ ["because"] = "∵", -- U+02235
+ ["bemptyv"] = "⦰", -- U+029B0
+ ["bepsi"] = "϶", -- U+003F6
+ ["bernou"] = "ℬ", -- U+0212C
+ ["beta"] = "β", -- U+003B2
+ ["beth"] = "ℶ", -- U+02136
+ ["between"] = "≬", -- U+0226C
+ ["bfr"] = "𝔟", -- U+1D51F
+ ["bgr"] = "β", -- U+003B2
+ ["bigcap"] = "⋂", -- U+022C2
+ ["bigcirc"] = "◯", -- U+025EF
+ ["bigcup"] = "⋃", -- U+022C3
+ ["bigodot"] = "⨀", -- U+02A00
+ ["bigoplus"] = "⨁", -- U+02A01
+ ["bigotimes"] = "⨂", -- U+02A02
+ ["bigsqcup"] = "⨆", -- U+02A06
+ ["bigstar"] = "★", -- U+02605
+ ["bigtriangledown"] = "▽", -- U+025BD
+ ["bigtriangleup"] = "△", -- U+025B3
+ ["biguplus"] = "⨄", -- U+02A04
+ ["bigvee"] = "⋁", -- U+022C1
+ ["bigwedge"] = "⋀", -- U+022C0
+ ["bkarow"] = "⤍", -- U+0290D
+ ["blacklozenge"] = "⧫", -- U+029EB
+ ["blacksquare"] = "▪", -- U+025AA
+ ["blacktriangle"] = "▴", -- U+025B4
+ ["blacktriangledown"] = "▾", -- U+025BE
+ ["blacktriangleleft"] = "◂", -- U+025C2
+ ["blacktriangleright"] = "▸", -- U+025B8
+ ["blank"] = "␣", -- U+02423
+ ["blk12"] = "▒", -- U+02592
+ ["blk14"] = "░", -- U+02591
+ ["blk34"] = "▓", -- U+02593
+ ["block"] = "█", -- U+02588
+ ["bne"] = "=⃥", -- U+0003D 020E5
+ ["bnequiv"] = "≡⃥", -- U+02261 020E5
+ ["bnot"] = "⌐", -- U+02310
+ ["bopf"] = "𝕓", -- U+1D553
+ ["bot"] = "⊥", -- U+022A5
+ ["bottom"] = "⊥", -- U+022A5
+ ["bowtie"] = "⋈", -- U+022C8
+ ["boxDL"] = "╗", -- U+02557
+ ["boxDR"] = "╔", -- U+02554
+ ["boxDl"] = "╖", -- U+02556
+ ["boxDr"] = "╓", -- U+02553
+ ["boxH"] = "═", -- U+02550
+ ["boxHD"] = "╦", -- U+02566
+ ["boxHU"] = "╩", -- U+02569
+ ["boxHd"] = "╤", -- U+02564
+ ["boxHu"] = "╧", -- U+02567
+ ["boxUL"] = "╝", -- U+0255D
+ ["boxUR"] = "╚", -- U+0255A
+ ["boxUl"] = "╜", -- U+0255C
+ ["boxUr"] = "╙", -- U+02559
+ ["boxV"] = "║", -- U+02551
+ ["boxVH"] = "╬", -- U+0256C
+ ["boxVL"] = "╣", -- U+02563
+ ["boxVR"] = "╠", -- U+02560
+ ["boxVh"] = "╫", -- U+0256B
+ ["boxVl"] = "╢", -- U+02562
+ ["boxVr"] = "╟", -- U+0255F
+ ["boxbox"] = "⧉", -- U+029C9
+ ["boxdL"] = "╕", -- U+02555
+ ["boxdR"] = "╒", -- U+02552
+ ["boxdl"] = "┐", -- U+02510
+ ["boxdr"] = "┌", -- U+0250C
+ ["boxh"] = "─", -- U+02500
+ ["boxhD"] = "╥", -- U+02565
+ ["boxhU"] = "╨", -- U+02568
+ ["boxhd"] = "┬", -- U+0252C
+ ["boxhu"] = "┴", -- U+02534
+ ["boxminus"] = "⊟", -- U+0229F
+ ["boxplus"] = "⊞", -- U+0229E
+ ["boxtimes"] = "⊠", -- U+022A0
+ ["boxuL"] = "╛", -- U+0255B
+ ["boxuR"] = "╘", -- U+02558
+ ["boxul"] = "┘", -- U+02518
+ ["boxur"] = "└", -- U+02514
+ ["boxv"] = "│", -- U+02502
+ ["boxvH"] = "╪", -- U+0256A
+ ["boxvL"] = "╡", -- U+02561
+ ["boxvR"] = "╞", -- U+0255E
+ ["boxvh"] = "┼", -- U+0253C
+ ["boxvl"] = "┤", -- U+02524
+ ["boxvr"] = "├", -- U+0251C
+ ["bprime"] = "‵", -- U+02035
+ ["breve"] = "˘", -- U+002D8
+ ["brvbar"] = "¦", -- U+000A6
+ ["bscr"] = "𝒷", -- U+1D4B7
+ ["bsemi"] = "⁏", -- U+0204F
+ ["bsim"] = "∽", -- U+0223D
+ ["bsime"] = "⋍", -- U+022CD
+ ["bsol"] = "\\", -- U+0005C
+ ["bsolb"] = "⧅", -- U+029C5
+ ["bsolhsub"] = "⟈", -- U+027C8
+ ["bull"] = "•", -- U+02022
+ ["bullet"] = "•", -- U+02022
+ ["bump"] = "≎", -- U+0224E
+ ["bumpE"] = "⪮", -- U+02AAE
+ ["bumpe"] = "≏", -- U+0224F
+ ["bumpeq"] = "≏", -- U+0224F
+ ["cacute"] = "ć", -- U+00107
+ ["cap"] = "∩", -- U+02229
+ ["capand"] = "⩄", -- U+02A44
+ ["capbrcup"] = "⩉", -- U+02A49
+ ["capcap"] = "⩋", -- U+02A4B
+ ["capcup"] = "⩇", -- U+02A47
+ ["capdot"] = "⩀", -- U+02A40
+ ["caps"] = "∩︀", -- U+02229 0FE00
+ ["caret"] = "⁁", -- U+02041
+ ["caron"] = "ˇ", -- U+002C7
+ ["ccaps"] = "⩍", -- U+02A4D
+ ["ccaron"] = "č", -- U+0010D
+ ["ccedil"] = "ç", -- U+000E7
+ ["ccirc"] = "ĉ", -- U+00109
+ ["ccups"] = "⩌", -- U+02A4C
+ ["ccupssm"] = "⩐", -- U+02A50
+ ["cdot"] = "ċ", -- U+0010B
+ ["cedil"] = "¸", -- U+000B8
+ ["cemptyv"] = "⦲", -- U+029B2
+ ["cent"] = "¢", -- U+000A2
+ ["centerdot"] = "·", -- U+000B7
+ ["cfr"] = "𝔠", -- U+1D520
+ ["chcy"] = "ч", -- U+00447
+ ["check"] = "✓", -- U+02713
+ ["checkmark"] = "✓", -- U+02713
+ ["chi"] = "χ", -- U+003C7
+ ["cir"] = "○", -- U+025CB
+ ["cirE"] = "⧃", -- U+029C3
+ ["circ"] = "ˆ", -- U+002C6
+ ["circeq"] = "≗", -- U+02257
+ ["circlearrowleft"] = "↺", -- U+021BA
+ ["circlearrowright"] = "↻", -- U+021BB
+ ["circledR"] = "®", -- U+000AE
+ ["circledS"] = "Ⓢ", -- U+024C8
+ ["circledast"] = "⊛", -- U+0229B
+ ["circledcirc"] = "⊚", -- U+0229A
+ ["circleddash"] = "⊝", -- U+0229D
+ ["cire"] = "≗", -- U+02257
+ ["cirfnint"] = "⨐", -- U+02A10
+ ["cirmid"] = "⫯", -- U+02AEF
+ ["cirscir"] = "⧂", -- U+029C2
+ ["clubs"] = "♣", -- U+02663
+ ["clubsuit"] = "♣", -- U+02663
+ ["colon"] = ":", -- U+0003A
+ ["colone"] = "≔", -- U+02254
+ ["coloneq"] = "≔", -- U+02254
+ ["comma"] = ",", -- U+0002C
+ ["commat"] = "@", -- U+00040
+ ["comp"] = "∁", -- U+02201
+ ["compfn"] = "∘", -- U+02218
+ ["complement"] = "∁", -- U+02201
+ ["complexes"] = "ℂ", -- U+02102
+ ["cong"] = "≅", -- U+02245
+ ["congdot"] = "⩭", -- U+02A6D
+ ["conint"] = "∮", -- U+0222E
+ ["copf"] = "𝕔", -- U+1D554
+ ["coprod"] = "∐", -- U+02210
+ ["copy"] = "©", -- U+000A9
+ ["copysr"] = "℗", -- U+02117
+ ["crarr"] = "↵", -- U+021B5
+ ["cross"] = "✗", -- U+02717
+ ["cscr"] = "𝒸", -- U+1D4B8
+ ["csub"] = "⫏", -- U+02ACF
+ ["csube"] = "⫑", -- U+02AD1
+ ["csup"] = "⫐", -- U+02AD0
+ ["csupe"] = "⫒", -- U+02AD2
+ ["ctdot"] = "⋯", -- U+022EF
+ ["cudarrl"] = "⤸", -- U+02938
+ ["cudarrr"] = "⤵", -- U+02935
+ ["cuepr"] = "⋞", -- U+022DE
+ ["cuesc"] = "⋟", -- U+022DF
+ ["cularr"] = "↶", -- U+021B6
+ ["cularrp"] = "⤽", -- U+0293D
+ ["cup"] = "∪", -- U+0222A
+ ["cupbrcap"] = "⩈", -- U+02A48
+ ["cupcap"] = "⩆", -- U+02A46
+ ["cupcup"] = "⩊", -- U+02A4A
+ ["cupdot"] = "⊍", -- U+0228D
+ ["cupor"] = "⩅", -- U+02A45
+ ["cups"] = "∪︀", -- U+0222A 0FE00
+ ["curarr"] = "↷", -- U+021B7
+ ["curarrm"] = "⤼", -- U+0293C
+ ["curlyeqprec"] = "⋞", -- U+022DE
+ ["curlyeqsucc"] = "⋟", -- U+022DF
+ ["curlyvee"] = "⋎", -- U+022CE
+ ["curlywedge"] = "⋏", -- U+022CF
+ ["curren"] = "¤", -- U+000A4
+ ["curvearrowleft"] = "↶", -- U+021B6
+ ["curvearrowright"] = "↷", -- U+021B7
+ ["cuvee"] = "⋎", -- U+022CE
+ ["cuwed"] = "⋏", -- U+022CF
+ ["cwconint"] = "∲", -- U+02232
+ ["cwint"] = "∱", -- U+02231
+ ["cylcty"] = "⌭", -- U+0232D
+ ["dArr"] = "⇓", -- U+021D3
+ ["dHar"] = "⥥", -- U+02965
+ ["dagger"] = "†", -- U+02020
+ ["daleth"] = "ℸ", -- U+02138
+ ["darr"] = "↓", -- U+02193
+ ["dash"] = "‐", -- U+02010
+ ["dashv"] = "⊣", -- U+022A3
+ ["dbkarow"] = "⤏", -- U+0290F
+ ["dblac"] = "˝", -- U+002DD
+ ["dcaron"] = "ď", -- U+0010F
+ ["dcy"] = "д", -- U+00434
+ ["dd"] = "ⅆ", -- U+02146
+ ["ddagger"] = "‡", -- U+02021
+ ["ddarr"] = "⇊", -- U+021CA
+ ["ddotseq"] = "⩷", -- U+02A77
+ ["deg"] = "°", -- U+000B0
+ ["delta"] = "δ", -- U+003B4
+ ["demptyv"] = "⦱", -- U+029B1
+ ["dfisht"] = "⥿", -- U+0297F
+ ["dfr"] = "𝔡", -- U+1D521
+ ["dgr"] = "δ", -- U+003B4
+ ["dharl"] = "⇃", -- U+021C3
+ ["dharr"] = "⇂", -- U+021C2
+ ["diam"] = "⋄", -- U+022C4
+ ["diamond"] = "⋄", -- U+022C4
+ ["diamondsuit"] = "♦", -- U+02666
+ ["diams"] = "♦", -- U+02666
+ ["die"] = "¨", -- U+000A8
+ ["digamma"] = "ϝ", -- U+003DD
+ ["disin"] = "⋲", -- U+022F2
+ ["div"] = "÷", -- U+000F7
+ ["divide"] = "÷", -- U+000F7
+ ["divideontimes"] = "⋇", -- U+022C7
+ ["divonx"] = "⋇", -- U+022C7
+ ["djcy"] = "ђ", -- U+00452
+ ["dlcorn"] = "⌞", -- U+0231E
+ ["dlcrop"] = "⌍", -- U+0230D
+ ["dollar"] = "$", -- U+00024
+ ["dopf"] = "𝕕", -- U+1D555
+ ["dot"] = "˙", -- U+002D9
+ ["doteq"] = "≐", -- U+02250
+ ["doteqdot"] = "≑", -- U+02251
+ ["dotminus"] = "∸", -- U+02238
+ ["dotplus"] = "∔", -- U+02214
+ ["dotsquare"] = "⊡", -- U+022A1
+ ["doublebarwedge"] = "⌆", -- U+02306
+ ["downarrow"] = "↓", -- U+02193
+ ["downdownarrows"] = "⇊", -- U+021CA
+ ["downharpoonleft"] = "⇃", -- U+021C3
+ ["downharpoonright"] = "⇂", -- U+021C2
+ ["drbkarow"] = "⤐", -- U+02910
+ ["drcorn"] = "⌟", -- U+0231F
+ ["drcrop"] = "⌌", -- U+0230C
+ ["dscr"] = "𝒹", -- U+1D4B9
+ ["dscy"] = "ѕ", -- U+00455
+ ["dsol"] = "⧶", -- U+029F6
+ ["dstrok"] = "đ", -- U+00111
+ ["dtdot"] = "⋱", -- U+022F1
+ ["dtri"] = "▿", -- U+025BF
+ ["dtrif"] = "▾", -- U+025BE
+ ["duarr"] = "⇵", -- U+021F5
+ ["duhar"] = "⥯", -- U+0296F
+ ["dwangle"] = "⦦", -- U+029A6
+ ["dzcy"] = "џ", -- U+0045F
+ ["dzigrarr"] = "⟿", -- U+027FF
+ ["eDDot"] = "⩷", -- U+02A77
+ ["eDot"] = "≑", -- U+02251
+ ["eacgr"] = "έ", -- U+003AD
+ ["eacute"] = "é", -- U+000E9
+ ["easter"] = "⩮", -- U+02A6E
+ ["ecaron"] = "ě", -- U+0011B
+ ["ecir"] = "≖", -- U+02256
+ ["ecirc"] = "ê", -- U+000EA
+ ["ecolon"] = "≕", -- U+02255
+ ["ecy"] = "э", -- U+0044D
+ ["edot"] = "ė", -- U+00117
+ ["ee"] = "ⅇ", -- U+02147
+ ["eeacgr"] = "ή", -- U+003AE
+ ["eegr"] = "η", -- U+003B7
+ ["efDot"] = "≒", -- U+02252
+ ["efr"] = "𝔢", -- U+1D522
+ ["eg"] = "⪚", -- U+02A9A
+ ["egr"] = "ε", -- U+003B5
+ ["egrave"] = "è", -- U+000E8
+ ["egs"] = "⪖", -- U+02A96
+ ["egsdot"] = "⪘", -- U+02A98
+ ["el"] = "⪙", -- U+02A99
+ ["elinters"] = "⏧", -- U+023E7
+ ["ell"] = "ℓ", -- U+02113
+ ["els"] = "⪕", -- U+02A95
+ ["elsdot"] = "⪗", -- U+02A97
+ ["emacr"] = "ē", -- U+00113
+ ["empty"] = "∅", -- U+02205
+ ["emptyset"] = "∅", -- U+02205
+ ["emptyv"] = "∅", -- U+02205
+ ["emsp"] = " ", -- U+02003
+ ["emsp13"] = " ", -- U+02004
+ ["emsp14"] = " ", -- U+02005
+ ["eng"] = "ŋ", -- U+0014B
+ ["ensp"] = " ", -- U+02002
+ ["eogon"] = "ę", -- U+00119
+ ["eopf"] = "𝕖", -- U+1D556
+ ["epar"] = "⋕", -- U+022D5
+ ["eparsl"] = "⧣", -- U+029E3
+ ["eplus"] = "⩱", -- U+02A71
+ ["epsi"] = "ε", -- U+003B5
+ ["epsilon"] = "ε", -- U+003B5
+ ["epsiv"] = "ϵ", -- U+003F5
+ ["eqcirc"] = "≖", -- U+02256
+ ["eqcolon"] = "≕", -- U+02255
+ ["eqsim"] = "≂", -- U+02242
+ ["eqslantgtr"] = "⪖", -- U+02A96
+ ["eqslantless"] = "⪕", -- U+02A95
+ ["equals"] = "=", -- U+0003D
+ ["equest"] = "≟", -- U+0225F
+ ["equiv"] = "≡", -- U+02261
+ ["equivDD"] = "⩸", -- U+02A78
+ ["eqvparsl"] = "⧥", -- U+029E5
+ ["erDot"] = "≓", -- U+02253
+ ["erarr"] = "⥱", -- U+02971
+ ["escr"] = "ℯ", -- U+0212F
+ ["esdot"] = "≐", -- U+02250
+ ["esim"] = "≂", -- U+02242
+ ["eta"] = "η", -- U+003B7
+ ["eth"] = "ð", -- U+000F0
+ ["euml"] = "ë", -- U+000EB
+ ["euro"] = "€", -- U+020AC
+ ["excl"] = "!", -- U+00021
+ ["exist"] = "∃", -- U+02203
+ ["expectation"] = "ℰ", -- U+02130
+ ["exponentiale"] = "ⅇ", -- U+02147
+ ["fallingdotseq"] = "≒", -- U+02252
+ ["fcy"] = "ф", -- U+00444
+ ["female"] = "♀", -- U+02640
+ ["ffilig"] = "ffi", -- U+0FB03
+ ["fflig"] = "ff", -- U+0FB00
+ ["ffllig"] = "ffl", -- U+0FB04
+ ["ffr"] = "𝔣", -- U+1D523
+ ["filig"] = "fi", -- U+0FB01
+ ["fjlig"] = "fj", -- U+00066 0006A
+ ["flat"] = "♭", -- U+0266D
+ ["fllig"] = "fl", -- U+0FB02
+ ["fltns"] = "▱", -- U+025B1
+ ["fnof"] = "ƒ", -- U+00192
+ ["fopf"] = "𝕗", -- U+1D557
+ ["forall"] = "∀", -- U+02200
+ ["fork"] = "⋔", -- U+022D4
+ ["forkv"] = "⫙", -- U+02AD9
+ ["fpartint"] = "⨍", -- U+02A0D
+ ["frac12"] = "½", -- U+000BD
+ ["frac13"] = "⅓", -- U+02153
+ ["frac14"] = "¼", -- U+000BC
+ ["frac15"] = "⅕", -- U+02155
+ ["frac16"] = "⅙", -- U+02159
+ ["frac18"] = "⅛", -- U+0215B
+ ["frac23"] = "⅔", -- U+02154
+ ["frac25"] = "⅖", -- U+02156
+ ["frac34"] = "¾", -- U+000BE
+ ["frac35"] = "⅗", -- U+02157
+ ["frac38"] = "⅜", -- U+0215C
+ ["frac45"] = "⅘", -- U+02158
+ ["frac56"] = "⅚", -- U+0215A
+ ["frac58"] = "⅝", -- U+0215D
+ ["frac78"] = "⅞", -- U+0215E
+ ["frasl"] = "⁄", -- U+02044
+ ["frown"] = "⌢", -- U+02322
+ ["fscr"] = "𝒻", -- U+1D4BB
+ ["gE"] = "≧", -- U+02267
+ ["gEl"] = "⪌", -- U+02A8C
+ ["gacute"] = "ǵ", -- U+001F5
+ ["gamma"] = "γ", -- U+003B3
+ ["gammad"] = "ϝ", -- U+003DD
+ ["gap"] = "⪆", -- U+02A86
+ ["gbreve"] = "ğ", -- U+0011F
+ ["gcirc"] = "ĝ", -- U+0011D
+ ["gcy"] = "г", -- U+00433
+ ["gdot"] = "ġ", -- U+00121
+ ["ge"] = "≥", -- U+02265
+ ["gel"] = "⋛", -- U+022DB
+ ["geq"] = "≥", -- U+02265
+ ["geqq"] = "≧", -- U+02267
+ ["geqslant"] = "⩾", -- U+02A7E
+ ["ges"] = "⩾", -- U+02A7E
+ ["gescc"] = "⪩", -- U+02AA9
+ ["gesdot"] = "⪀", -- U+02A80
+ ["gesdoto"] = "⪂", -- U+02A82
+ ["gesdotol"] = "⪄", -- U+02A84
+ ["gesl"] = "⋛︀", -- U+022DB 0FE00
+ ["gesles"] = "⪔", -- U+02A94
+ ["gfr"] = "𝔤", -- U+1D524
+ ["gg"] = "≫", -- U+0226B
+ ["ggg"] = "⋙", -- U+022D9
+ ["ggr"] = "γ", -- U+003B3
+ ["gimel"] = "ℷ", -- U+02137
+ ["gjcy"] = "ѓ", -- U+00453
+ ["gl"] = "≷", -- U+02277
+ ["glE"] = "⪒", -- U+02A92
+ ["gla"] = "⪥", -- U+02AA5
+ ["glj"] = "⪤", -- U+02AA4
+ ["gnE"] = "≩", -- U+02269
+ ["gnap"] = "⪊", -- U+02A8A
+ ["gnapprox"] = "⪊", -- U+02A8A
+ ["gne"] = "⪈", -- U+02A88
+ ["gneq"] = "⪈", -- U+02A88
+ ["gneqq"] = "≩", -- U+02269
+ ["gnsim"] = "⋧", -- U+022E7
+ ["gopf"] = "𝕘", -- U+1D558
+ ["grave"] = "`", -- U+00060
+ ["gscr"] = "ℊ", -- U+0210A
+ ["gsim"] = "≳", -- U+02273
+ ["gsime"] = "⪎", -- U+02A8E
+ ["gsiml"] = "⪐", -- U+02A90
+ ["gt"] = ">", -- U+0003E
+ ["gtcc"] = "⪧", -- U+02AA7
+ ["gtcir"] = "⩺", -- U+02A7A
+ ["gtdot"] = "⋗", -- U+022D7
+ ["gtlPar"] = "⦕", -- U+02995
+ ["gtquest"] = "⩼", -- U+02A7C
+ ["gtrapprox"] = "⪆", -- U+02A86
+ ["gtrarr"] = "⥸", -- U+02978
+ ["gtrdot"] = "⋗", -- U+022D7
+ ["gtreqless"] = "⋛", -- U+022DB
+ ["gtreqqless"] = "⪌", -- U+02A8C
+ ["gtrless"] = "≷", -- U+02277
+ ["gtrsim"] = "≳", -- U+02273
+ ["gvertneqq"] = "≩︀", -- U+02269 0FE00
+ ["gvnE"] = "≩︀", -- U+02269 0FE00
+ ["hArr"] = "⇔", -- U+021D4
+ ["hairsp"] = " ", -- U+0200A
+ ["half"] = "½", -- U+000BD
+ ["hamilt"] = "ℋ", -- U+0210B
+ ["hardcy"] = "ъ", -- U+0044A
+ ["harr"] = "↔", -- U+02194
+ ["harrcir"] = "⥈", -- U+02948
+ ["harrw"] = "↭", -- U+021AD
+ ["hbar"] = "ℏ", -- U+0210F
+ ["hcirc"] = "ĥ", -- U+00125
+ ["hearts"] = "♥", -- U+02665
+ ["heartsuit"] = "♥", -- U+02665
+ ["hellip"] = "…", -- U+02026
+ ["hercon"] = "⊹", -- U+022B9
+ ["hfr"] = "𝔥", -- U+1D525
+ ["hksearow"] = "⤥", -- U+02925
+ ["hkswarow"] = "⤦", -- U+02926
+ ["hoarr"] = "⇿", -- U+021FF
+ ["homtht"] = "∻", -- U+0223B
+ ["hookleftarrow"] = "↩", -- U+021A9
+ ["hookrightarrow"] = "↪", -- U+021AA
+ ["hopf"] = "𝕙", -- U+1D559
+ ["horbar"] = "―", -- U+02015
+ ["hscr"] = "𝒽", -- U+1D4BD
+ ["hslash"] = "ℏ", -- U+0210F
+ ["hstrok"] = "ħ", -- U+00127
+ ["hybull"] = "⁃", -- U+02043
+ ["hyphen"] = "‐", -- U+02010
+ ["iacgr"] = "ί", -- U+003AF
+ ["iacute"] = "í", -- U+000ED
+ ["ic"] = "⁣", -- U+02063
+ ["icirc"] = "î", -- U+000EE
+ ["icy"] = "и", -- U+00438
+ ["idiagr"] = "ΐ", -- U+00390
+ ["idigr"] = "ϊ", -- U+003CA
+ ["iecy"] = "е", -- U+00435
+ ["iexcl"] = "¡", -- U+000A1
+ ["iff"] = "⇔", -- U+021D4
+ ["ifr"] = "𝔦", -- U+1D526
+ ["igr"] = "ι", -- U+003B9
+ ["igrave"] = "ì", -- U+000EC
+ ["ii"] = "ⅈ", -- U+02148
+ ["iiiint"] = "⨌", -- U+02A0C
+ ["iiint"] = "∭", -- U+0222D
+ ["iinfin"] = "⧜", -- U+029DC
+ ["iiota"] = "℩", -- U+02129
+ ["ijlig"] = "ij", -- U+00133
+ ["imacr"] = "ī", -- U+0012B
+ ["image"] = "ℑ", -- U+02111
+ ["imagline"] = "ℐ", -- U+02110
+ ["imagpart"] = "ℑ", -- U+02111
+ ["imath"] = "ı", -- U+00131
+ ["imof"] = "⊷", -- U+022B7
+ ["imped"] = "Ƶ", -- U+001B5
+ ["in"] = "∈", -- U+02208
+ ["incare"] = "℅", -- U+02105
+ ["infin"] = "∞", -- U+0221E
+ ["infintie"] = "⧝", -- U+029DD
+ ["inodot"] = "ı", -- U+00131
+ ["int"] = "∫", -- U+0222B
+ ["intcal"] = "⊺", -- U+022BA
+ ["integers"] = "ℤ", -- U+02124
+ ["intercal"] = "⊺", -- U+022BA
+ ["intlarhk"] = "⨗", -- U+02A17
+ ["intprod"] = "⨼", -- U+02A3C
+ ["iocy"] = "ё", -- U+00451
+ ["iogon"] = "į", -- U+0012F
+ ["iopf"] = "𝕚", -- U+1D55A
+ ["iota"] = "ι", -- U+003B9
+ ["iprod"] = "⨼", -- U+02A3C
+ ["iquest"] = "¿", -- U+000BF
+ ["iscr"] = "𝒾", -- U+1D4BE
+ ["isin"] = "∈", -- U+02208
+ ["isinE"] = "⋹", -- U+022F9
+ ["isindot"] = "⋵", -- U+022F5
+ ["isins"] = "⋴", -- U+022F4
+ ["isinsv"] = "⋳", -- U+022F3
+ ["isinv"] = "∈", -- U+02208
+ ["it"] = "⁢", -- U+02062
+ ["itilde"] = "ĩ", -- U+00129
+ ["iukcy"] = "і", -- U+00456
+ ["iuml"] = "ï", -- U+000EF
+ ["jcirc"] = "ĵ", -- U+00135
+ ["jcy"] = "й", -- U+00439
+ ["jfr"] = "𝔧", -- U+1D527
+ ["jmath"] = "ȷ", -- U+00237
+ ["jopf"] = "𝕛", -- U+1D55B
+ ["jscr"] = "𝒿", -- U+1D4BF
+ ["jsercy"] = "ј", -- U+00458
+ ["jukcy"] = "є", -- U+00454
+ ["kappa"] = "κ", -- U+003BA
+ ["kappav"] = "ϰ", -- U+003F0
+ ["kcedil"] = "ķ", -- U+00137
+ ["kcy"] = "к", -- U+0043A
+ ["kfr"] = "𝔨", -- U+1D528
+ ["kgr"] = "κ", -- U+003BA
+ ["kgreen"] = "ĸ", -- U+00138
+ ["khcy"] = "х", -- U+00445
+ ["khgr"] = "χ", -- U+003C7
+ ["kjcy"] = "ќ", -- U+0045C
+ ["kopf"] = "𝕜", -- U+1D55C
+ ["kscr"] = "𝓀", -- U+1D4C0
+ ["lAarr"] = "⇚", -- U+021DA
+ ["lArr"] = "⇐", -- U+021D0
+ ["lAtail"] = "⤛", -- U+0291B
+ ["lBarr"] = "⤎", -- U+0290E
+ ["lE"] = "≦", -- U+02266
+ ["lEg"] = "⪋", -- U+02A8B
+ ["lHar"] = "⥢", -- U+02962
+ ["lacute"] = "ĺ", -- U+0013A
+ ["laemptyv"] = "⦴", -- U+029B4
+ ["lagran"] = "ℒ", -- U+02112
+ ["lambda"] = "λ", -- U+003BB
+ ["lang"] = "⟨", -- U+027E8
+ ["langd"] = "⦑", -- U+02991
+ ["langle"] = "⟨", -- U+027E8
+ ["lap"] = "⪅", -- U+02A85
+ ["laquo"] = "«", -- U+000AB
+ ["larr"] = "←", -- U+02190
+ ["larrb"] = "⇤", -- U+021E4
+ ["larrbfs"] = "⤟", -- U+0291F
+ ["larrfs"] = "⤝", -- U+0291D
+ ["larrhk"] = "↩", -- U+021A9
+ ["larrlp"] = "↫", -- U+021AB
+ ["larrpl"] = "⤹", -- U+02939
+ ["larrsim"] = "⥳", -- U+02973
+ ["larrtl"] = "↢", -- U+021A2
+ ["lat"] = "⪫", -- U+02AAB
+ ["latail"] = "⤙", -- U+02919
+ ["late"] = "⪭", -- U+02AAD
+ ["lates"] = "⪭︀", -- U+02AAD 0FE00
+ ["lbarr"] = "⤌", -- U+0290C
+ ["lbbrk"] = "❲", -- U+02772
+ ["lbrace"] = "{", -- U+0007B
+ ["lbrack"] = "[", -- U+0005B
+ ["lbrke"] = "⦋", -- U+0298B
+ ["lbrksld"] = "⦏", -- U+0298F
+ ["lbrkslu"] = "⦍", -- U+0298D
+ ["lcaron"] = "ľ", -- U+0013E
+ ["lcedil"] = "ļ", -- U+0013C
+ ["lceil"] = "⌈", -- U+02308
+ ["lcub"] = "{", -- U+0007B
+ ["lcy"] = "л", -- U+0043B
+ ["ldca"] = "⤶", -- U+02936
+ ["ldquo"] = "“", -- U+0201C
+ ["ldquor"] = "„", -- U+0201E
+ ["ldrdhar"] = "⥧", -- U+02967
+ ["ldrushar"] = "⥋", -- U+0294B
+ ["ldsh"] = "↲", -- U+021B2
+ ["le"] = "≤", -- U+02264
+ ["leftarrow"] = "←", -- U+02190
+ ["leftarrowtail"] = "↢", -- U+021A2
+ ["leftharpoondown"] = "↽", -- U+021BD
+ ["leftharpoonup"] = "↼", -- U+021BC
+ ["leftleftarrows"] = "⇇", -- U+021C7
+ ["leftrightarrow"] = "↔", -- U+02194
+ ["leftrightarrows"] = "⇆", -- U+021C6
+ ["leftrightharpoons"] = "⇋", -- U+021CB
+ ["leftrightsquigarrow"] = "↭", -- U+021AD
+ ["leftthreetimes"] = "⋋", -- U+022CB
+ ["leg"] = "⋚", -- U+022DA
+ ["leq"] = "≤", -- U+02264
+ ["leqq"] = "≦", -- U+02266
+ ["leqslant"] = "⩽", -- U+02A7D
+ ["les"] = "⩽", -- U+02A7D
+ ["lescc"] = "⪨", -- U+02AA8
+ ["lesdot"] = "⩿", -- U+02A7F
+ ["lesdoto"] = "⪁", -- U+02A81
+ ["lesdotor"] = "⪃", -- U+02A83
+ ["lesg"] = "⋚︀", -- U+022DA 0FE00
+ ["lesges"] = "⪓", -- U+02A93
+ ["lessapprox"] = "⪅", -- U+02A85
+ ["lessdot"] = "⋖", -- U+022D6
+ ["lesseqgtr"] = "⋚", -- U+022DA
+ ["lesseqqgtr"] = "⪋", -- U+02A8B
+ ["lessgtr"] = "≶", -- U+02276
+ ["lesssim"] = "≲", -- U+02272
+ ["lfisht"] = "⥼", -- U+0297C
+ ["lfloor"] = "⌊", -- U+0230A
+ ["lfr"] = "𝔩", -- U+1D529
+ ["lg"] = "≶", -- U+02276
+ ["lgE"] = "⪑", -- U+02A91
+ ["lgr"] = "λ", -- U+003BB
+ ["lhard"] = "↽", -- U+021BD
+ ["lharu"] = "↼", -- U+021BC
+ ["lharul"] = "⥪", -- U+0296A
+ ["lhblk"] = "▄", -- U+02584
+ ["ljcy"] = "љ", -- U+00459
+ ["ll"] = "≪", -- U+0226A
+ ["llarr"] = "⇇", -- U+021C7
+ ["llcorner"] = "⌞", -- U+0231E
+ ["llhard"] = "⥫", -- U+0296B
+ ["lltri"] = "◺", -- U+025FA
+ ["lmidot"] = "ŀ", -- U+00140
+ ["lmoust"] = "⎰", -- U+023B0
+ ["lmoustache"] = "⎰", -- U+023B0
+ ["lnE"] = "≨", -- U+02268
+ ["lnap"] = "⪉", -- U+02A89
+ ["lnapprox"] = "⪉", -- U+02A89
+ ["lne"] = "⪇", -- U+02A87
+ ["lneq"] = "⪇", -- U+02A87
+ ["lneqq"] = "≨", -- U+02268
+ ["lnsim"] = "⋦", -- U+022E6
+ ["loang"] = "⟬", -- U+027EC
+ ["loarr"] = "⇽", -- U+021FD
+ ["lobrk"] = "⟦", -- U+027E6
+ ["longleftarrow"] = "⟵", -- U+027F5
+ ["longleftrightarrow"] = "⟷", -- U+027F7
+ ["longmapsto"] = "⟼", -- U+027FC
+ ["longrightarrow"] = "⟶", -- U+027F6
+ ["looparrowleft"] = "↫", -- U+021AB
+ ["looparrowright"] = "↬", -- U+021AC
+ ["lopar"] = "⦅", -- U+02985
+ ["lopf"] = "𝕝", -- U+1D55D
+ ["loplus"] = "⨭", -- U+02A2D
+ ["lotimes"] = "⨴", -- U+02A34
+ ["lowast"] = "∗", -- U+02217
+ ["lowbar"] = "_", -- U+0005F
+ ["loz"] = "◊", -- U+025CA
+ ["lozenge"] = "◊", -- U+025CA
+ ["lozf"] = "⧫", -- U+029EB
+ ["lpar"] = "(", -- U+00028
+ ["lparlt"] = "⦓", -- U+02993
+ ["lrarr"] = "⇆", -- U+021C6
+ ["lrcorner"] = "⌟", -- U+0231F
+ ["lrhar"] = "⇋", -- U+021CB
+ ["lrhard"] = "⥭", -- U+0296D
+ ["lrm"] = "‎", -- U+0200E
+ ["lrtri"] = "⊿", -- U+022BF
+ ["lsaquo"] = "‹", -- U+02039
+ ["lscr"] = "𝓁", -- U+1D4C1
+ ["lsh"] = "↰", -- U+021B0
+ ["lsim"] = "≲", -- U+02272
+ ["lsime"] = "⪍", -- U+02A8D
+ ["lsimg"] = "⪏", -- U+02A8F
+ ["lsqb"] = "[", -- U+0005B
+ ["lsquo"] = "‘", -- U+02018
+ ["lsquor"] = "‚", -- U+0201A
+ ["lstrok"] = "ł", -- U+00142
+ ["lt"] = "<", -- U+00026
+ ["ltcc"] = "⪦", -- U+02AA6
+ ["ltcir"] = "⩹", -- U+02A79
+ ["ltdot"] = "⋖", -- U+022D6
+ ["lthree"] = "⋋", -- U+022CB
+ ["ltimes"] = "⋉", -- U+022C9
+ ["ltlarr"] = "⥶", -- U+02976
+ ["ltquest"] = "⩻", -- U+02A7B
+ ["ltrPar"] = "⦖", -- U+02996
+ ["ltri"] = "◃", -- U+025C3
+ ["ltrie"] = "⊴", -- U+022B4
+ ["ltrif"] = "◂", -- U+025C2
+ ["lurdshar"] = "⥊", -- U+0294A
+ ["luruhar"] = "⥦", -- U+02966
+ ["lvertneqq"] = "≨︀", -- U+02268 0FE00
+ ["lvnE"] = "≨︀", -- U+02268 0FE00
+ ["mDDot"] = "∺", -- U+0223A
+ ["macr"] = "¯", -- U+000AF
+ ["male"] = "♂", -- U+02642
+ ["malt"] = "✠", -- U+02720
+ ["maltese"] = "✠", -- U+02720
+ ["map"] = "↦", -- U+021A6
+ ["mapsto"] = "↦", -- U+021A6
+ ["mapstodown"] = "↧", -- U+021A7
+ ["mapstoleft"] = "↤", -- U+021A4
+ ["mapstoup"] = "↥", -- U+021A5
+ ["marker"] = "▮", -- U+025AE
+ ["mcomma"] = "⨩", -- U+02A29
+ ["mcy"] = "м", -- U+0043C
+ ["mdash"] = "—", -- U+02014
+ ["measuredangle"] = "∡", -- U+02221
+ ["mfr"] = "𝔪", -- U+1D52A
+ ["mgr"] = "μ", -- U+003BC
+ ["mho"] = "℧", -- U+02127
+ ["micro"] = "µ", -- U+000B5
+ ["mid"] = "∣", -- U+02223
+ ["midast"] = "*", -- U+0002A
+ ["midcir"] = "⫰", -- U+02AF0
+ ["middot"] = "·", -- U+000B7
+ ["minus"] = "−", -- U+02212
+ ["minusb"] = "⊟", -- U+0229F
+ ["minusd"] = "∸", -- U+02238
+ ["minusdu"] = "⨪", -- U+02A2A
+ ["mlcp"] = "⫛", -- U+02ADB
+ ["mldr"] = "…", -- U+02026
+ ["mnplus"] = "∓", -- U+02213
+ ["models"] = "⊧", -- U+022A7
+ ["mopf"] = "𝕞", -- U+1D55E
+ ["mp"] = "∓", -- U+02213
+ ["mscr"] = "𝓂", -- U+1D4C2
+ ["mstpos"] = "∾", -- U+0223E
+ ["mu"] = "μ", -- U+003BC
+ ["multimap"] = "⊸", -- U+022B8
+ ["mumap"] = "⊸", -- U+022B8
+ ["nGg"] = "⋙̸", -- U+022D9 00338
+ ["nGt"] = "≫⃒", -- U+0226B 020D2
+ ["nGtv"] = "≫̸", -- U+0226B 00338
+ ["nLeftarrow"] = "⇍", -- U+021CD
+ ["nLeftrightarrow"] = "⇎", -- U+021CE
+ ["nLl"] = "⋘̸", -- U+022D8 00338
+ ["nLt"] = "≪⃒", -- U+0226A 020D2
+ ["nLtv"] = "≪̸", -- U+0226A 00338
+ ["nRightarrow"] = "⇏", -- U+021CF
+ ["nVDash"] = "⊯", -- U+022AF
+ ["nVdash"] = "⊮", -- U+022AE
+ ["nabla"] = "∇", -- U+02207
+ ["nacute"] = "ń", -- U+00144
+ ["nang"] = "∠⃒", -- U+02220 020D2
+ ["nap"] = "≉", -- U+02249
+ ["napE"] = "⩰̸", -- U+02A70 00338
+ ["napid"] = "≋̸", -- U+0224B 00338
+ ["napos"] = "ʼn", -- U+00149
+ ["napprox"] = "≉", -- U+02249
+ ["natur"] = "♮", -- U+0266E
+ ["natural"] = "♮", -- U+0266E
+ ["naturals"] = "ℕ", -- U+02115
+ ["nbsp"] = " ", -- U+000A0
+ ["nbump"] = "≎̸", -- U+0224E 00338
+ ["nbumpe"] = "≏̸", -- U+0224F 00338
+ ["ncap"] = "⩃", -- U+02A43
+ ["ncaron"] = "ň", -- U+00148
+ ["ncedil"] = "ņ", -- U+00146
+ ["ncong"] = "≇", -- U+02247
+ ["ncongdot"] = "⩭̸", -- U+02A6D 00338
+ ["ncup"] = "⩂", -- U+02A42
+ ["ncy"] = "н", -- U+0043D
+ ["ndash"] = "–", -- U+02013
+ ["ne"] = "≠", -- U+02260
+ ["neArr"] = "⇗", -- U+021D7
+ ["nearhk"] = "⤤", -- U+02924
+ ["nearr"] = "↗", -- U+02197
+ ["nearrow"] = "↗", -- U+02197
+ ["nedot"] = "≐̸", -- U+02250 00338
+ ["nequiv"] = "≢", -- U+02262
+ ["nesear"] = "⤨", -- U+02928
+ ["nesim"] = "≂̸", -- U+02242 00338
+ ["nexist"] = "∄", -- U+02204
+ ["nexists"] = "∄", -- U+02204
+ ["nfr"] = "𝔫", -- U+1D52B
+ ["ngE"] = "≧̸", -- U+02267 00338
+ ["nge"] = "≱", -- U+02271
+ ["ngeq"] = "≱", -- U+02271
+ ["ngeqq"] = "≧̸", -- U+02267 00338
+ ["ngeqslant"] = "⩾̸", -- U+02A7E 00338
+ ["nges"] = "⩾̸", -- U+02A7E 00338
+ ["ngr"] = "ν", -- U+003BD
+ ["ngsim"] = "≵", -- U+02275
+ ["ngt"] = "≯", -- U+0226F
+ ["ngtr"] = "≯", -- U+0226F
+ ["nhArr"] = "⇎", -- U+021CE
+ ["nharr"] = "↮", -- U+021AE
+ ["nhpar"] = "⫲", -- U+02AF2
+ ["ni"] = "∋", -- U+0220B
+ ["nis"] = "⋼", -- U+022FC
+ ["nisd"] = "⋺", -- U+022FA
+ ["niv"] = "∋", -- U+0220B
+ ["njcy"] = "њ", -- U+0045A
+ ["nlArr"] = "⇍", -- U+021CD
+ ["nlE"] = "≦̸", -- U+02266 00338
+ ["nlarr"] = "↚", -- U+0219A
+ ["nldr"] = "‥", -- U+02025
+ ["nle"] = "≰", -- U+02270
+ ["nleftarrow"] = "↚", -- U+0219A
+ ["nleftrightarrow"] = "↮", -- U+021AE
+ ["nleq"] = "≰", -- U+02270
+ ["nleqq"] = "≦̸", -- U+02266 00338
+ ["nleqslant"] = "⩽̸", -- U+02A7D 00338
+ ["nles"] = "⩽̸", -- U+02A7D 00338
+ ["nless"] = "≮", -- U+0226E
+ ["nlsim"] = "≴", -- U+02274
+ ["nlt"] = "≮", -- U+0226E
+ ["nltri"] = "⋪", -- U+022EA
+ ["nltrie"] = "⋬", -- U+022EC
+ ["nmid"] = "∤", -- U+02224
+ ["nopf"] = "𝕟", -- U+1D55F
+ ["not"] = "¬", -- U+000AC
+ ["notin"] = "∉", -- U+02209
+ ["notinE"] = "⋹̸", -- U+022F9 00338
+ ["notindot"] = "⋵̸", -- U+022F5 00338
+ ["notinva"] = "∉", -- U+02209
+ ["notinvb"] = "⋷", -- U+022F7
+ ["notinvc"] = "⋶", -- U+022F6
+ ["notni"] = "∌", -- U+0220C
+ ["notniva"] = "∌", -- U+0220C
+ ["notnivb"] = "⋾", -- U+022FE
+ ["notnivc"] = "⋽", -- U+022FD
+ ["npar"] = "∦", -- U+02226
+ ["nparallel"] = "∦", -- U+02226
+ ["nparsl"] = "⫽⃥", -- U+02AFD 020E5
+ ["npart"] = "∂̸", -- U+02202 00338
+ ["npolint"] = "⨔", -- U+02A14
+ ["npr"] = "⊀", -- U+02280
+ ["nprcue"] = "⋠", -- U+022E0
+ ["npre"] = "⪯̸", -- U+02AAF 00338
+ ["nprec"] = "⊀", -- U+02280
+ ["npreceq"] = "⪯̸", -- U+02AAF 00338
+ ["nrArr"] = "⇏", -- U+021CF
+ ["nrarr"] = "↛", -- U+0219B
+ ["nrarrc"] = "⤳̸", -- U+02933 00338
+ ["nrarrw"] = "↝̸", -- U+0219D 00338
+ ["nrightarrow"] = "↛", -- U+0219B
+ ["nrtri"] = "⋫", -- U+022EB
+ ["nrtrie"] = "⋭", -- U+022ED
+ ["nsc"] = "⊁", -- U+02281
+ ["nsccue"] = "⋡", -- U+022E1
+ ["nsce"] = "⪰̸", -- U+02AB0 00338
+ ["nscr"] = "𝓃", -- U+1D4C3
+ ["nshortmid"] = "∤", -- U+02224
+ ["nshortparallel"] = "∦", -- U+02226
+ ["nsim"] = "≁", -- U+02241
+ ["nsime"] = "≄", -- U+02244
+ ["nsimeq"] = "≄", -- U+02244
+ ["nsmid"] = "∤", -- U+02224
+ ["nspar"] = "∦", -- U+02226
+ ["nsqsube"] = "⋢", -- U+022E2
+ ["nsqsupe"] = "⋣", -- U+022E3
+ ["nsub"] = "⊄", -- U+02284
+ ["nsubE"] = "⫅̸", -- U+02AC5 00338
+ ["nsube"] = "⊈", -- U+02288
+ ["nsubset"] = "⊂⃒", -- U+02282 020D2
+ ["nsubseteq"] = "⊈", -- U+02288
+ ["nsubseteqq"] = "⫅̸", -- U+02AC5 00338
+ ["nsucc"] = "⊁", -- U+02281
+ ["nsucceq"] = "⪰̸", -- U+02AB0 00338
+ ["nsup"] = "⊅", -- U+02285
+ ["nsupE"] = "⫆̸", -- U+02AC6 00338
+ ["nsupe"] = "⊉", -- U+02289
+ ["nsupset"] = "⊃⃒", -- U+02283 020D2
+ ["nsupseteq"] = "⊉", -- U+02289
+ ["nsupseteqq"] = "⫆̸", -- U+02AC6 00338
+ ["ntgl"] = "≹", -- U+02279
+ ["ntilde"] = "ñ", -- U+000F1
+ ["ntlg"] = "≸", -- U+02278
+ ["ntriangleleft"] = "⋪", -- U+022EA
+ ["ntrianglelefteq"] = "⋬", -- U+022EC
+ ["ntriangleright"] = "⋫", -- U+022EB
+ ["ntrianglerighteq"] = "⋭", -- U+022ED
+ ["nu"] = "ν", -- U+003BD
+ ["num"] = "#", -- U+00023
+ ["numero"] = "№", -- U+02116
+ ["numsp"] = " ", -- U+02007
+ ["nvDash"] = "⊭", -- U+022AD
+ ["nvHarr"] = "⤄", -- U+02904
+ ["nvap"] = "≍⃒", -- U+0224D 020D2
+ ["nvdash"] = "⊬", -- U+022AC
+ ["nvge"] = "≥⃒", -- U+02265 020D2
+ ["nvgt"] = ">⃒", -- U+0003E 020D2
+ ["nvinfin"] = "⧞", -- U+029DE
+ ["nvlArr"] = "⤂", -- U+02902
+ ["nvle"] = "≤⃒", -- U+02264 020D2
+ ["nvlt"] = "&⃒", -- U+00026 020D2
+ ["nvltrie"] = "⊴⃒", -- U+022B4 020D2
+ ["nvrArr"] = "⤃", -- U+02903
+ ["nvrtrie"] = "⊵⃒", -- U+022B5 020D2
+ ["nvsim"] = "∼⃒", -- U+0223C 020D2
+ ["nwArr"] = "⇖", -- U+021D6
+ ["nwarhk"] = "⤣", -- U+02923
+ ["nwarr"] = "↖", -- U+02196
+ ["nwarrow"] = "↖", -- U+02196
+ ["nwnear"] = "⤧", -- U+02927
+ ["oS"] = "Ⓢ", -- U+024C8
+ ["oacgr"] = "ό", -- U+003CC
+ ["oacute"] = "ó", -- U+000F3
+ ["oast"] = "⊛", -- U+0229B
+ ["ocir"] = "⊚", -- U+0229A
+ ["ocirc"] = "ô", -- U+000F4
+ ["ocy"] = "о", -- U+0043E
+ ["odash"] = "⊝", -- U+0229D
+ ["odblac"] = "ő", -- U+00151
+ ["odiv"] = "⨸", -- U+02A38
+ ["odot"] = "⊙", -- U+02299
+ ["odsold"] = "⦼", -- U+029BC
+ ["oelig"] = "œ", -- U+00153
+ ["ofcir"] = "⦿", -- U+029BF
+ ["ofr"] = "𝔬", -- U+1D52C
+ ["ogon"] = "˛", -- U+002DB
+ ["ogr"] = "ο", -- U+003BF
+ ["ograve"] = "ò", -- U+000F2
+ ["ogt"] = "⧁", -- U+029C1
+ ["ohacgr"] = "ώ", -- U+003CE
+ ["ohbar"] = "⦵", -- U+029B5
+ ["ohgr"] = "ω", -- U+003C9
+ ["ohm"] = "Ω", -- U+003A9
+ ["oint"] = "∮", -- U+0222E
+ ["olarr"] = "↺", -- U+021BA
+ ["olcir"] = "⦾", -- U+029BE
+ ["olcross"] = "⦻", -- U+029BB
+ ["oline"] = "‾", -- U+0203E
+ ["olt"] = "⧀", -- U+029C0
+ ["omacr"] = "ō", -- U+0014D
+ ["omega"] = "ω", -- U+003C9
+ ["omicron"] = "ο", -- U+003BF
+ ["omid"] = "⦶", -- U+029B6
+ ["ominus"] = "⊖", -- U+02296
+ ["oopf"] = "𝕠", -- U+1D560
+ ["opar"] = "⦷", -- U+029B7
+ ["operp"] = "⦹", -- U+029B9
+ ["oplus"] = "⊕", -- U+02295
+ ["or"] = "∨", -- U+02228
+ ["orarr"] = "↻", -- U+021BB
+ ["ord"] = "⩝", -- U+02A5D
+ ["order"] = "ℴ", -- U+02134
+ ["orderof"] = "ℴ", -- U+02134
+ ["ordf"] = "ª", -- U+000AA
+ ["ordm"] = "º", -- U+000BA
+ ["origof"] = "⊶", -- U+022B6
+ ["oror"] = "⩖", -- U+02A56
+ ["orslope"] = "⩗", -- U+02A57
+ ["orv"] = "⩛", -- U+02A5B
+ ["oscr"] = "ℴ", -- U+02134
+ ["oslash"] = "ø", -- U+000F8
+ ["osol"] = "⊘", -- U+02298
+ ["otilde"] = "õ", -- U+000F5
+ ["otimes"] = "⊗", -- U+02297
+ ["otimesas"] = "⨶", -- U+02A36
+ ["ouml"] = "ö", -- U+000F6
+ ["ovbar"] = "⌽", -- U+0233D
+ ["par"] = "∥", -- U+02225
+ ["para"] = "¶", -- U+000B6
+ ["parallel"] = "∥", -- U+02225
+ ["parsim"] = "⫳", -- U+02AF3
+ ["parsl"] = "⫽", -- U+02AFD
+ ["part"] = "∂", -- U+02202
+ ["pcy"] = "п", -- U+0043F
+ ["percnt"] = "%", -- U+00025
+ ["period"] = ".", -- U+0002E
+ ["permil"] = "‰", -- U+02030
+ ["perp"] = "⊥", -- U+022A5
+ ["pertenk"] = "‱", -- U+02031
+ ["pfr"] = "𝔭", -- U+1D52D
+ ["pgr"] = "π", -- U+003C0
+ ["phgr"] = "φ", -- U+003C6
+ ["phi"] = "φ", -- U+003C6
+ ["phiv"] = "ϕ", -- U+003D5
+ ["phmmat"] = "ℳ", -- U+02133
+ ["phone"] = "☎", -- U+0260E
+ ["pi"] = "π", -- U+003C0
+ ["pitchfork"] = "⋔", -- U+022D4
+ ["piv"] = "ϖ", -- U+003D6
+ ["planck"] = "ℏ", -- U+0210F
+ ["planckh"] = "ℎ", -- U+0210E
+ ["plankv"] = "ℏ", -- U+0210F
+ ["plus"] = "+", -- U+0002B
+ ["plusacir"] = "⨣", -- U+02A23
+ ["plusb"] = "⊞", -- U+0229E
+ ["pluscir"] = "⨢", -- U+02A22
+ ["plusdo"] = "∔", -- U+02214
+ ["plusdu"] = "⨥", -- U+02A25
+ ["pluse"] = "⩲", -- U+02A72
+ ["plusmn"] = "±", -- U+000B1
+ ["plussim"] = "⨦", -- U+02A26
+ ["plustwo"] = "⨧", -- U+02A27
+ ["pm"] = "±", -- U+000B1
+ ["pointint"] = "⨕", -- U+02A15
+ ["popf"] = "𝕡", -- U+1D561
+ ["pound"] = "£", -- U+000A3
+ ["pr"] = "≺", -- U+0227A
+ ["prE"] = "⪳", -- U+02AB3
+ ["prap"] = "⪷", -- U+02AB7
+ ["prcue"] = "≼", -- U+0227C
+ ["pre"] = "⪯", -- U+02AAF
+ ["prec"] = "≺", -- U+0227A
+ ["precapprox"] = "⪷", -- U+02AB7
+ ["preccurlyeq"] = "≼", -- U+0227C
+ ["preceq"] = "⪯", -- U+02AAF
+ ["precnapprox"] = "⪹", -- U+02AB9
+ ["precneqq"] = "⪵", -- U+02AB5
+ ["precnsim"] = "⋨", -- U+022E8
+ ["precsim"] = "≾", -- U+0227E
+ ["prime"] = "′", -- U+02032
+ ["primes"] = "ℙ", -- U+02119
+ ["prnE"] = "⪵", -- U+02AB5
+ ["prnap"] = "⪹", -- U+02AB9
+ ["prnsim"] = "⋨", -- U+022E8
+ ["prod"] = "∏", -- U+0220F
+ ["profalar"] = "⌮", -- U+0232E
+ ["profline"] = "⌒", -- U+02312
+ ["profsurf"] = "⌓", -- U+02313
+ ["prop"] = "∝", -- U+0221D
+ ["propto"] = "∝", -- U+0221D
+ ["prsim"] = "≾", -- U+0227E
+ ["prurel"] = "⊰", -- U+022B0
+ ["pscr"] = "𝓅", -- U+1D4C5
+ ["psgr"] = "ψ", -- U+003C8
+ ["psi"] = "ψ", -- U+003C8
+ ["puncsp"] = " ", -- U+02008
+ ["qfr"] = "𝔮", -- U+1D52E
+ ["qint"] = "⨌", -- U+02A0C
+ ["qopf"] = "𝕢", -- U+1D562
+ ["qprime"] = "⁗", -- U+02057
+ ["qscr"] = "𝓆", -- U+1D4C6
+ ["quaternions"] = "ℍ", -- U+0210D
+ ["quatint"] = "⨖", -- U+02A16
+ ["quest"] = "?", -- U+0003F
+ ["questeq"] = "≟", -- U+0225F
+ ["quot"] = "\"", -- U+00022
+ ["rAarr"] = "⇛", -- U+021DB
+ ["rArr"] = "⇒", -- U+021D2
+ ["rAtail"] = "⤜", -- U+0291C
+ ["rBarr"] = "⤏", -- U+0290F
+ ["rHar"] = "⥤", -- U+02964
+ ["race"] = "∽̱", -- U+0223D 00331
+ ["racute"] = "ŕ", -- U+00155
+ ["radic"] = "√", -- U+0221A
+ ["raemptyv"] = "⦳", -- U+029B3
+ ["rang"] = "⟩", -- U+027E9
+ ["rangd"] = "⦒", -- U+02992
+ ["range"] = "⦥", -- U+029A5
+ ["rangle"] = "⟩", -- U+027E9
+ ["raquo"] = "»", -- U+000BB
+ ["rarr"] = "→", -- U+02192
+ ["rarrap"] = "⥵", -- U+02975
+ ["rarrb"] = "⇥", -- U+021E5
+ ["rarrbfs"] = "⤠", -- U+02920
+ ["rarrc"] = "⤳", -- U+02933
+ ["rarrfs"] = "⤞", -- U+0291E
+ ["rarrhk"] = "↪", -- U+021AA
+ ["rarrlp"] = "↬", -- U+021AC
+ ["rarrpl"] = "⥅", -- U+02945
+ ["rarrsim"] = "⥴", -- U+02974
+ ["rarrtl"] = "↣", -- U+021A3
+ ["rarrw"] = "↝", -- U+0219D
+ ["ratail"] = "⤚", -- U+0291A
+ ["ratio"] = "∶", -- U+02236
+ ["rationals"] = "ℚ", -- U+0211A
+ ["rbarr"] = "⤍", -- U+0290D
+ ["rbbrk"] = "❳", -- U+02773
+ ["rbrace"] = "}", -- U+0007D
+ ["rbrack"] = "]", -- U+0005D
+ ["rbrke"] = "⦌", -- U+0298C
+ ["rbrksld"] = "⦎", -- U+0298E
+ ["rbrkslu"] = "⦐", -- U+02990
+ ["rcaron"] = "ř", -- U+00159
+ ["rcedil"] = "ŗ", -- U+00157
+ ["rceil"] = "⌉", -- U+02309
+ ["rcub"] = "}", -- U+0007D
+ ["rcy"] = "р", -- U+00440
+ ["rdca"] = "⤷", -- U+02937
+ ["rdldhar"] = "⥩", -- U+02969
+ ["rdquo"] = "”", -- U+0201D
+ ["rdquor"] = "”", -- U+0201D
+ ["rdsh"] = "↳", -- U+021B3
+ ["real"] = "ℜ", -- U+0211C
+ ["realine"] = "ℛ", -- U+0211B
+ ["realpart"] = "ℜ", -- U+0211C
+ ["reals"] = "ℝ", -- U+0211D
+ ["rect"] = "▭", -- U+025AD
+ ["reg"] = "®", -- U+000AE
+ ["rfisht"] = "⥽", -- U+0297D
+ ["rfloor"] = "⌋", -- U+0230B
+ ["rfr"] = "𝔯", -- U+1D52F
+ ["rgr"] = "ρ", -- U+003C1
+ ["rhard"] = "⇁", -- U+021C1
+ ["rharu"] = "⇀", -- U+021C0
+ ["rharul"] = "⥬", -- U+0296C
+ ["rho"] = "ρ", -- U+003C1
+ ["rhov"] = "ϱ", -- U+003F1
+ ["rightarrow"] = "→", -- U+02192
+ ["rightarrowtail"] = "↣", -- U+021A3
+ ["rightharpoondown"] = "⇁", -- U+021C1
+ ["rightharpoonup"] = "⇀", -- U+021C0
+ ["rightleftarrows"] = "⇄", -- U+021C4
+ ["rightleftharpoons"] = "⇌", -- U+021CC
+ ["rightrightarrows"] = "⇉", -- U+021C9
+ ["rightsquigarrow"] = "↝", -- U+0219D
+ ["rightthreetimes"] = "⋌", -- U+022CC
+ ["ring"] = "˚", -- U+002DA
+ ["risingdotseq"] = "≓", -- U+02253
+ ["rlarr"] = "⇄", -- U+021C4
+ ["rlhar"] = "⇌", -- U+021CC
+ ["rlm"] = "‏", -- U+0200F
+ ["rmoust"] = "⎱", -- U+023B1
+ ["rmoustache"] = "⎱", -- U+023B1
+ ["rnmid"] = "⫮", -- U+02AEE
+ ["roang"] = "⟭", -- U+027ED
+ ["roarr"] = "⇾", -- U+021FE
+ ["robrk"] = "⟧", -- U+027E7
+ ["ropar"] = "⦆", -- U+02986
+ ["ropf"] = "𝕣", -- U+1D563
+ ["roplus"] = "⨮", -- U+02A2E
+ ["rotimes"] = "⨵", -- U+02A35
+ ["rpar"] = ")", -- U+00029
+ ["rpargt"] = "⦔", -- U+02994
+ ["rppolint"] = "⨒", -- U+02A12
+ ["rrarr"] = "⇉", -- U+021C9
+ ["rsaquo"] = "›", -- U+0203A
+ ["rscr"] = "𝓇", -- U+1D4C7
+ ["rsh"] = "↱", -- U+021B1
+ ["rsqb"] = "]", -- U+0005D
+ ["rsquo"] = "’", -- U+02019
+ ["rsquor"] = "’", -- U+02019
+ ["rthree"] = "⋌", -- U+022CC
+ ["rtimes"] = "⋊", -- U+022CA
+ ["rtri"] = "▹", -- U+025B9
+ ["rtrie"] = "⊵", -- U+022B5
+ ["rtrif"] = "▸", -- U+025B8
+ ["rtriltri"] = "⧎", -- U+029CE
+ ["ruluhar"] = "⥨", -- U+02968
+ ["rx"] = "℞", -- U+0211E
+ ["sacute"] = "ś", -- U+0015B
+ ["sbquo"] = "‚", -- U+0201A
+ ["sc"] = "≻", -- U+0227B
+ ["scE"] = "⪴", -- U+02AB4
+ ["scap"] = "⪸", -- U+02AB8
+ ["scaron"] = "š", -- U+00161
+ ["sccue"] = "≽", -- U+0227D
+ ["sce"] = "⪰", -- U+02AB0
+ ["scedil"] = "ş", -- U+0015F
+ ["scirc"] = "ŝ", -- U+0015D
+ ["scnE"] = "⪶", -- U+02AB6
+ ["scnap"] = "⪺", -- U+02ABA
+ ["scnsim"] = "⋩", -- U+022E9
+ ["scpolint"] = "⨓", -- U+02A13
+ ["scsim"] = "≿", -- U+0227F
+ ["scy"] = "с", -- U+00441
+ ["sdot"] = "⋅", -- U+022C5
+ ["sdotb"] = "⊡", -- U+022A1
+ ["sdote"] = "⩦", -- U+02A66
+ ["seArr"] = "⇘", -- U+021D8
+ ["searhk"] = "⤥", -- U+02925
+ ["searr"] = "↘", -- U+02198
+ ["searrow"] = "↘", -- U+02198
+ ["sect"] = "§", -- U+000A7
+ ["semi"] = ";", -- U+0003B
+ ["seswar"] = "⤩", -- U+02929
+ ["setminus"] = "∖", -- U+02216
+ ["setmn"] = "∖", -- U+02216
+ ["sext"] = "✶", -- U+02736
+ ["sfgr"] = "ς", -- U+003C2
+ ["sfr"] = "𝔰", -- U+1D530
+ ["sfrown"] = "⌢", -- U+02322
+ ["sgr"] = "σ", -- U+003C3
+ ["sharp"] = "♯", -- U+0266F
+ ["shchcy"] = "щ", -- U+00449
+ ["shcy"] = "ш", -- U+00448
+ ["shortmid"] = "∣", -- U+02223
+ ["shortparallel"] = "∥", -- U+02225
+ ["shy"] = "­", -- U+000AD
+ ["sigma"] = "σ", -- U+003C3
+ ["sigmaf"] = "ς", -- U+003C2
+ ["sigmav"] = "ς", -- U+003C2
+ ["sim"] = "∼", -- U+0223C
+ ["simdot"] = "⩪", -- U+02A6A
+ ["sime"] = "≃", -- U+02243
+ ["simeq"] = "≃", -- U+02243
+ ["simg"] = "⪞", -- U+02A9E
+ ["simgE"] = "⪠", -- U+02AA0
+ ["siml"] = "⪝", -- U+02A9D
+ ["simlE"] = "⪟", -- U+02A9F
+ ["simne"] = "≆", -- U+02246
+ ["simplus"] = "⨤", -- U+02A24
+ ["simrarr"] = "⥲", -- U+02972
+ ["slarr"] = "←", -- U+02190
+ ["smallsetminus"] = "∖", -- U+02216
+ ["smashp"] = "⨳", -- U+02A33
+ ["smeparsl"] = "⧤", -- U+029E4
+ ["smid"] = "∣", -- U+02223
+ ["smile"] = "⌣", -- U+02323
+ ["smt"] = "⪪", -- U+02AAA
+ ["smte"] = "⪬", -- U+02AAC
+ ["smtes"] = "⪬︀", -- U+02AAC 0FE00
+ ["softcy"] = "ь", -- U+0044C
+ ["sol"] = "/", -- U+0002F
+ ["solb"] = "⧄", -- U+029C4
+ ["solbar"] = "⌿", -- U+0233F
+ ["sopf"] = "𝕤", -- U+1D564
+ ["spades"] = "♠", -- U+02660
+ ["spadesuit"] = "♠", -- U+02660
+ ["spar"] = "∥", -- U+02225
+ ["sqcap"] = "⊓", -- U+02293
+ ["sqcaps"] = "⊓︀", -- U+02293 0FE00
+ ["sqcup"] = "⊔", -- U+02294
+ ["sqcups"] = "⊔︀", -- U+02294 0FE00
+ ["sqsub"] = "⊏", -- U+0228F
+ ["sqsube"] = "⊑", -- U+02291
+ ["sqsubset"] = "⊏", -- U+0228F
+ ["sqsubseteq"] = "⊑", -- U+02291
+ ["sqsup"] = "⊐", -- U+02290
+ ["sqsupe"] = "⊒", -- U+02292
+ ["sqsupset"] = "⊐", -- U+02290
+ ["sqsupseteq"] = "⊒", -- U+02292
+ ["squ"] = "□", -- U+025A1
+ ["square"] = "□", -- U+025A1
+ ["squarf"] = "▪", -- U+025AA
+ ["squf"] = "▪", -- U+025AA
+ ["srarr"] = "→", -- U+02192
+ ["sscr"] = "𝓈", -- U+1D4C8
+ ["ssetmn"] = "∖", -- U+02216
+ ["ssmile"] = "⌣", -- U+02323
+ ["sstarf"] = "⋆", -- U+022C6
+ ["star"] = "☆", -- U+02606
+ ["starf"] = "★", -- U+02605
+ ["straightepsilon"] = "ϵ", -- U+003F5
+ ["straightphi"] = "ϕ", -- U+003D5
+ ["strns"] = "¯", -- U+000AF
+ ["sub"] = "⊂", -- U+02282
+ ["subE"] = "⫅", -- U+02AC5
+ ["subdot"] = "⪽", -- U+02ABD
+ ["sube"] = "⊆", -- U+02286
+ ["subedot"] = "⫃", -- U+02AC3
+ ["submult"] = "⫁", -- U+02AC1
+ ["subnE"] = "⫋", -- U+02ACB
+ ["subne"] = "⊊", -- U+0228A
+ ["subplus"] = "⪿", -- U+02ABF
+ ["subrarr"] = "⥹", -- U+02979
+ ["subset"] = "⊂", -- U+02282
+ ["subseteq"] = "⊆", -- U+02286
+ ["subseteqq"] = "⫅", -- U+02AC5
+ ["subsetneq"] = "⊊", -- U+0228A
+ ["subsetneqq"] = "⫋", -- U+02ACB
+ ["subsim"] = "⫇", -- U+02AC7
+ ["subsub"] = "⫕", -- U+02AD5
+ ["subsup"] = "⫓", -- U+02AD3
+ ["succ"] = "≻", -- U+0227B
+ ["succapprox"] = "⪸", -- U+02AB8
+ ["succcurlyeq"] = "≽", -- U+0227D
+ ["succeq"] = "⪰", -- U+02AB0
+ ["succnapprox"] = "⪺", -- U+02ABA
+ ["succneqq"] = "⪶", -- U+02AB6
+ ["succnsim"] = "⋩", -- U+022E9
+ ["succsim"] = "≿", -- U+0227F
+ ["sum"] = "∑", -- U+02211
+ ["sung"] = "♪", -- U+0266A
+ ["sup"] = "⊃", -- U+02283
+ ["sup1"] = "¹", -- U+000B9
+ ["sup2"] = "²", -- U+000B2
+ ["sup3"] = "³", -- U+000B3
+ ["supE"] = "⫆", -- U+02AC6
+ ["supdot"] = "⪾", -- U+02ABE
+ ["supdsub"] = "⫘", -- U+02AD8
+ ["supe"] = "⊇", -- U+02287
+ ["supedot"] = "⫄", -- U+02AC4
+ ["suphsol"] = "⟉", -- U+027C9
+ ["suphsub"] = "⫗", -- U+02AD7
+ ["suplarr"] = "⥻", -- U+0297B
+ ["supmult"] = "⫂", -- U+02AC2
+ ["supnE"] = "⫌", -- U+02ACC
+ ["supne"] = "⊋", -- U+0228B
+ ["supplus"] = "⫀", -- U+02AC0
+ ["supset"] = "⊃", -- U+02283
+ ["supseteq"] = "⊇", -- U+02287
+ ["supseteqq"] = "⫆", -- U+02AC6
+ ["supsetneq"] = "⊋", -- U+0228B
+ ["supsetneqq"] = "⫌", -- U+02ACC
+ ["supsim"] = "⫈", -- U+02AC8
+ ["supsub"] = "⫔", -- U+02AD4
+ ["supsup"] = "⫖", -- U+02AD6
+ ["swArr"] = "⇙", -- U+021D9
+ ["swarhk"] = "⤦", -- U+02926
+ ["swarr"] = "↙", -- U+02199
+ ["swarrow"] = "↙", -- U+02199
+ ["swnwar"] = "⤪", -- U+0292A
+ ["szlig"] = "ß", -- U+000DF
+ ["target"] = "⌖", -- U+02316
+ ["tau"] = "τ", -- U+003C4
+ ["tbrk"] = "⎴", -- U+023B4
+ ["tcaron"] = "ť", -- U+00165
+ ["tcedil"] = "ţ", -- U+00163
+ ["tcy"] = "т", -- U+00442
+ ["tdot"] = "⃛", -- U+020DB
+ ["telrec"] = "⌕", -- U+02315
+ ["tfr"] = "𝔱", -- U+1D531
+ ["tgr"] = "τ", -- U+003C4
+ ["there4"] = "∴", -- U+02234
+ ["therefore"] = "∴", -- U+02234
+ ["theta"] = "θ", -- U+003B8
+ ["thetasym"] = "ϑ", -- U+003D1
+ ["thetav"] = "ϑ", -- U+003D1
+ ["thgr"] = "θ", -- U+003B8
+ ["thickapprox"] = "≈", -- U+02248
+ ["thicksim"] = "∼", -- U+0223C
+ ["thinsp"] = " ", -- U+02009
+ ["thkap"] = "≈", -- U+02248
+ ["thksim"] = "∼", -- U+0223C
+ ["thorn"] = "þ", -- U+000FE
+ ["tilde"] = "˜", -- U+002DC
+ ["times"] = "×", -- U+000D7
+ ["timesb"] = "⊠", -- U+022A0
+ ["timesbar"] = "⨱", -- U+02A31
+ ["timesd"] = "⨰", -- U+02A30
+ ["tint"] = "∭", -- U+0222D
+ ["toea"] = "⤨", -- U+02928
+ ["top"] = "⊤", -- U+022A4
+ ["topbot"] = "⌶", -- U+02336
+ ["topcir"] = "⫱", -- U+02AF1
+ ["topf"] = "𝕥", -- U+1D565
+ ["topfork"] = "⫚", -- U+02ADA
+ ["tosa"] = "⤩", -- U+02929
+ ["tprime"] = "‴", -- U+02034
+ ["trade"] = "™", -- U+02122
+ ["triangle"] = "▵", -- U+025B5
+ ["triangledown"] = "▿", -- U+025BF
+ ["triangleleft"] = "◃", -- U+025C3
+ ["trianglelefteq"] = "⊴", -- U+022B4
+ ["triangleq"] = "≜", -- U+0225C
+ ["triangleright"] = "▹", -- U+025B9
+ ["trianglerighteq"] = "⊵", -- U+022B5
+ ["tridot"] = "◬", -- U+025EC
+ ["trie"] = "≜", -- U+0225C
+ ["triminus"] = "⨺", -- U+02A3A
+ ["triplus"] = "⨹", -- U+02A39
+ ["trisb"] = "⧍", -- U+029CD
+ ["tritime"] = "⨻", -- U+02A3B
+ ["trpezium"] = "⏢", -- U+023E2
+ ["tscr"] = "𝓉", -- U+1D4C9
+ ["tscy"] = "ц", -- U+00446
+ ["tshcy"] = "ћ", -- U+0045B
+ ["tstrok"] = "ŧ", -- U+00167
+ ["twixt"] = "≬", -- U+0226C
+ ["twoheadleftarrow"] = "↞", -- U+0219E
+ ["twoheadrightarrow"] = "↠", -- U+021A0
+ ["uArr"] = "⇑", -- U+021D1
+ ["uHar"] = "⥣", -- U+02963
+ ["uacgr"] = "ύ", -- U+003CD
+ ["uacute"] = "ú", -- U+000FA
+ ["uarr"] = "↑", -- U+02191
+ ["ubrcy"] = "ў", -- U+0045E
+ ["ubreve"] = "ŭ", -- U+0016D
+ ["ucirc"] = "û", -- U+000FB
+ ["ucy"] = "у", -- U+00443
+ ["udarr"] = "⇅", -- U+021C5
+ ["udblac"] = "ű", -- U+00171
+ ["udhar"] = "⥮", -- U+0296E
+ ["udiagr"] = "ΰ", -- U+003B0
+ ["udigr"] = "ϋ", -- U+003CB
+ ["ufisht"] = "⥾", -- U+0297E
+ ["ufr"] = "𝔲", -- U+1D532
+ ["ugr"] = "υ", -- U+003C5
+ ["ugrave"] = "ù", -- U+000F9
+ ["uharl"] = "↿", -- U+021BF
+ ["uharr"] = "↾", -- U+021BE
+ ["uhblk"] = "▀", -- U+02580
+ ["ulcorn"] = "⌜", -- U+0231C
+ ["ulcorner"] = "⌜", -- U+0231C
+ ["ulcrop"] = "⌏", -- U+0230F
+ ["ultri"] = "◸", -- U+025F8
+ ["umacr"] = "ū", -- U+0016B
+ ["uml"] = "¨", -- U+000A8
+ ["uogon"] = "ų", -- U+00173
+ ["uopf"] = "𝕦", -- U+1D566
+ ["uparrow"] = "↑", -- U+02191
+ ["updownarrow"] = "↕", -- U+02195
+ ["upharpoonleft"] = "↿", -- U+021BF
+ ["upharpoonright"] = "↾", -- U+021BE
+ ["uplus"] = "⊎", -- U+0228E
+ ["upsi"] = "υ", -- U+003C5
+ ["upsih"] = "ϒ", -- U+003D2
+ ["upsilon"] = "υ", -- U+003C5
+ ["upuparrows"] = "⇈", -- U+021C8
+ ["urcorn"] = "⌝", -- U+0231D
+ ["urcorner"] = "⌝", -- U+0231D
+ ["urcrop"] = "⌎", -- U+0230E
+ ["uring"] = "ů", -- U+0016F
+ ["urtri"] = "◹", -- U+025F9
+ ["uscr"] = "𝓊", -- U+1D4CA
+ ["utdot"] = "⋰", -- U+022F0
+ ["utilde"] = "ũ", -- U+00169
+ ["utri"] = "▵", -- U+025B5
+ ["utrif"] = "▴", -- U+025B4
+ ["uuarr"] = "⇈", -- U+021C8
+ ["uuml"] = "ü", -- U+000FC
+ ["uwangle"] = "⦧", -- U+029A7
+ ["vArr"] = "⇕", -- U+021D5
+ ["vBar"] = "⫨", -- U+02AE8
+ ["vBarv"] = "⫩", -- U+02AE9
+ ["vDash"] = "⊨", -- U+022A8
+ ["vangrt"] = "⦜", -- U+0299C
+ ["varepsilon"] = "ϵ", -- U+003F5
+ ["varkappa"] = "ϰ", -- U+003F0
+ ["varnothing"] = "∅", -- U+02205
+ ["varphi"] = "ϕ", -- U+003D5
+ ["varpi"] = "ϖ", -- U+003D6
+ ["varpropto"] = "∝", -- U+0221D
+ ["varr"] = "↕", -- U+02195
+ ["varrho"] = "ϱ", -- U+003F1
+ ["varsigma"] = "ς", -- U+003C2
+ ["varsubsetneq"] = "⊊︀", -- U+0228A 0FE00
+ ["varsubsetneqq"] = "⫋︀", -- U+02ACB 0FE00
+ ["varsupsetneq"] = "⊋︀", -- U+0228B 0FE00
+ ["varsupsetneqq"] = "⫌︀", -- U+02ACC 0FE00
+ ["vartheta"] = "ϑ", -- U+003D1
+ ["vartriangleleft"] = "⊲", -- U+022B2
+ ["vartriangleright"] = "⊳", -- U+022B3
+ ["vcy"] = "в", -- U+00432
+ ["vdash"] = "⊢", -- U+022A2
+ ["vee"] = "∨", -- U+02228
+ ["veebar"] = "⊻", -- U+022BB
+ ["veeeq"] = "≚", -- U+0225A
+ ["vellip"] = "⋮", -- U+022EE
+ ["verbar"] = "|", -- U+0007C
+ ["vert"] = "|", -- U+0007C
+ ["vfr"] = "𝔳", -- U+1D533
+ ["vltri"] = "⊲", -- U+022B2
+ ["vnsub"] = "⊂⃒", -- U+02282 020D2
+ ["vnsup"] = "⊃⃒", -- U+02283 020D2
+ ["vopf"] = "𝕧", -- U+1D567
+ ["vprop"] = "∝", -- U+0221D
+ ["vrtri"] = "⊳", -- U+022B3
+ ["vscr"] = "𝓋", -- U+1D4CB
+ ["vsubnE"] = "⫋︀", -- U+02ACB 0FE00
+ ["vsubne"] = "⊊︀", -- U+0228A 0FE00
+ ["vsupnE"] = "⫌︀", -- U+02ACC 0FE00
+ ["vsupne"] = "⊋︀", -- U+0228B 0FE00
+ ["vzigzag"] = "⦚", -- U+0299A
+ ["wcirc"] = "ŵ", -- U+00175
+ ["wedbar"] = "⩟", -- U+02A5F
+ ["wedge"] = "∧", -- U+02227
+ ["wedgeq"] = "≙", -- U+02259
+ ["weierp"] = "℘", -- U+02118
+ ["wfr"] = "𝔴", -- U+1D534
+ ["wopf"] = "𝕨", -- U+1D568
+ ["wp"] = "℘", -- U+02118
+ ["wr"] = "≀", -- U+02240
+ ["wreath"] = "≀", -- U+02240
+ ["wscr"] = "𝓌", -- U+1D4CC
+ ["xcap"] = "⋂", -- U+022C2
+ ["xcirc"] = "◯", -- U+025EF
+ ["xcup"] = "⋃", -- U+022C3
+ ["xdtri"] = "▽", -- U+025BD
+ ["xfr"] = "𝔵", -- U+1D535
+ ["xgr"] = "ξ", -- U+003BE
+ ["xhArr"] = "⟺", -- U+027FA
+ ["xharr"] = "⟷", -- U+027F7
+ ["xi"] = "ξ", -- U+003BE
+ ["xlArr"] = "⟸", -- U+027F8
+ ["xlarr"] = "⟵", -- U+027F5
+ ["xmap"] = "⟼", -- U+027FC
+ ["xnis"] = "⋻", -- U+022FB
+ ["xodot"] = "⨀", -- U+02A00
+ ["xopf"] = "𝕩", -- U+1D569
+ ["xoplus"] = "⨁", -- U+02A01
+ ["xotime"] = "⨂", -- U+02A02
+ ["xrArr"] = "⟹", -- U+027F9
+ ["xrarr"] = "⟶", -- U+027F6
+ ["xscr"] = "𝓍", -- U+1D4CD
+ ["xsqcup"] = "⨆", -- U+02A06
+ ["xuplus"] = "⨄", -- U+02A04
+ ["xutri"] = "△", -- U+025B3
+ ["xvee"] = "⋁", -- U+022C1
+ ["xwedge"] = "⋀", -- U+022C0
+ ["yacute"] = "ý", -- U+000FD
+ ["yacy"] = "я", -- U+0044F
+ ["ycirc"] = "ŷ", -- U+00177
+ ["ycy"] = "ы", -- U+0044B
+ ["yen"] = "¥", -- U+000A5
+ ["yfr"] = "𝔶", -- U+1D536
+ ["yicy"] = "ї", -- U+00457
+ ["yopf"] = "𝕪", -- U+1D56A
+ ["yscr"] = "𝓎", -- U+1D4CE
+ ["yucy"] = "ю", -- U+0044E
+ ["yuml"] = "ÿ", -- U+000FF
+ ["zacute"] = "ź", -- U+0017A
+ ["zcaron"] = "ž", -- U+0017E
+ ["zcy"] = "з", -- U+00437
+ ["zdot"] = "ż", -- U+0017C
+ ["zeetrf"] = "ℨ", -- U+02128
+ ["zeta"] = "ζ", -- U+003B6
+ ["zfr"] = "𝔷", -- U+1D537
+ ["zgr"] = "ζ", -- U+003B6
+ ["zhcy"] = "ж", -- U+00436
+ ["zigrarr"] = "⇝", -- U+021DD
+ ["zopf"] = "𝕫", -- U+1D56B
+ ["zscr"] = "𝓏", -- U+1D4CF
+ ["zwj"] = "‍", -- U+0200D
+ ["zwnj"] = "‌", -- U+0200C
+}
+
+characters = characters or { }
+characters.entities = entities
+
+entities.plusminus = "±" -- 0x000B1
+entities.minusplus = "∓" -- 0x02213
+entities.cdots = utf.char(0x02026) -- U+02026
+
diff --git a/tex/context/base/char-ini.lua b/tex/context/base/char-ini.lua
index 89f8336f8..930ca8eb2 100644
--- a/tex/context/base/char-ini.lua
+++ b/tex/context/base/char-ini.lua
@@ -8,6 +8,8 @@ if not modules then modules = { } end modules ['char-ini'] = {
-- todo: make two files, one for format generation, one for format use
+-- we can remove the tag range starting at 0xE0000 (special applications)
+
local tex = tex
local utf = unicode.utf8
@@ -29,7 +31,7 @@ local ctxcatcodes = tex.ctxcatcodes
local texcatcodes = tex.texcatcodes
local setmetatableindex = table.setmetatableindex
-local trace_defining = false trackers.register("characters.defining", function(v) characters_defining = v end)
+local trace_defining = false trackers.register("characters.defining", function(v) characters_defining = v end)
local report_defining = logs.reporter("characters")
@@ -499,6 +501,14 @@ function tex.uprint(c,n)
end
end
+local temphack = table.tohash {
+ 0x00A0,
+ 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B,
+ 0x202F,
+ 0x205F,
+ -- 0xFEFF,
+}
+
function characters.define(tobelettered, tobeactivated) -- catcodetables
if trace_defining then
@@ -528,9 +538,11 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables
texprint(ctxcatcodes,format("\\def\\%s{%s}",contextname,utfchar(u)))
end
elseif is_command[category] then
+if not temphack[u] then
texsprint("{\\catcode",u,"=13\\unexpanded\\gdef ",utfchar(u),"{\\"..contextname,"}}") -- no texprint
a = a + 1
activated[a] = u
+end
end
end
end
@@ -564,7 +576,9 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables
if tobeactivated and nofactivated > 0 then
for i=1,nofactivated do
local u = activated[i]
- report_defining("character 0x%05X is active in sets %s (%s)",u,concat(tobeactivated,","),data[u].description)
+ if u then
+ report_defining("character 0x%05X is active in sets %s (%s)",u,concat(tobeactivated,","),data[u].description)
+ end
end
local saved = tex.catcodetable
for i=1,#tobeactivated do
@@ -574,7 +588,10 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables
end
tex.catcodetable = vector
for i=1,nofactivated do
- texsetcatcode(activated[i],13)
+ local u = activated[i]
+ if u then
+ texsetcatcode(u,13)
+ end
end
end
tex.catcodetable = saved
diff --git a/tex/context/base/char-ini.mkiv b/tex/context/base/char-ini.mkiv
index 68bc3b497..22c233dac 100644
--- a/tex/context/base/char-ini.mkiv
+++ b/tex/context/base/char-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/char-utf.lua b/tex/context/base/char-utf.lua
index 30124a6a2..43591dd76 100644
--- a/tex/context/base/char-utf.lua
+++ b/tex/context/base/char-utf.lua
@@ -27,6 +27,7 @@ local allocate = utilities.storage.allocate
local charfromnumber = characters.fromnumber
-- todo: trackers
+-- graphemes: basic symbols
characters = characters or { }
local characters = characters
diff --git a/tex/context/base/char-utf.mkiv b/tex/context/base/char-utf.mkiv
index 261735656..280e7ef6d 100644
--- a/tex/context/base/char-utf.mkiv
+++ b/tex/context/base/char-utf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Unicode UTF,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/chem-ini.mkiv b/tex/context/base/chem-ini.mkiv
index c64575181..c0a1d021e 100644
--- a/tex/context/base/chem-ini.mkiv
+++ b/tex/context/base/chem-ini.mkiv
@@ -4,7 +4,7 @@
%D subtitle=Chemistry,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/chem-str.mkiv b/tex/context/base/chem-str.mkiv
index 6430830f7..0f8044119 100644
--- a/tex/context/base/chem-str.mkiv
+++ b/tex/context/base/chem-str.mkiv
@@ -4,7 +4,7 @@
%D subtitle=Chemistry,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cldf-com.lua b/tex/context/base/cldf-com.lua
index e966b167b..08116974f 100644
--- a/tex/context/base/cldf-com.lua
+++ b/tex/context/base/cldf-com.lua
@@ -8,6 +8,7 @@ if not modules then modules = { } end modules ['cldf-com'] = {
local tostring, type = tostring, type
local format = string.format
+local utfchar = utf.char
local context = context
local generics = context.generics
@@ -40,7 +41,7 @@ function context.tabulaterowtyp (...) tabulaterow("typ", ...) end
-- these will move up, just after cld definitions
-function context.char(k) -- todo: if catcode == letter or other then just the utf
+function context.char(k) -- used as escape too, so don't change to utf
if type(k) == "table" then
for i=1,#k do
context(format([[\char%s\relax]],k[i]))
diff --git a/tex/context/base/cldf-com.mkiv b/tex/context/base/cldf-com.mkiv
index 43071a580..491909888 100644
--- a/tex/context/base/cldf-com.mkiv
+++ b/tex/context/base/cldf-com.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cldf-ini.lua b/tex/context/base/cldf-ini.lua
index 8edc05023..a7f7ce332 100644
--- a/tex/context/base/cldf-ini.lua
+++ b/tex/context/base/cldf-ini.lua
@@ -270,13 +270,13 @@ local function writer(parent,command,first,...)
if v == "" then
flush(currentcatcodes,",",k,'=')
else
- flush(currentcatcodes,",",k,'=',v)
+ flush(currentcatcodes,",",k,"={",v,"}")
end
else
if v == "" then
- flush(currentcatcodes,"[",k,'=')
+ flush(currentcatcodes,"[",k,"=")
else
- flush(currentcatcodes,"[",k,'=',v)
+ flush(currentcatcodes,"[",k,"={",v,"}")
end
done = true
end
diff --git a/tex/context/base/cldf-ini.mkiv b/tex/context/base/cldf-ini.mkiv
index 8aef17f93..1b6786013 100644
--- a/tex/context/base/cldf-ini.mkiv
+++ b/tex/context/base/cldf-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cldf-int.mkiv b/tex/context/base/cldf-int.mkiv
index cedac8fc0..e20ca54de 100644
--- a/tex/context/base/cldf-int.mkiv
+++ b/tex/context/base/cldf-int.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cldf-ver.mkiv b/tex/context/base/cldf-ver.mkiv
index f85b28a0c..4dcefc437 100644
--- a/tex/context/base/cldf-ver.mkiv
+++ b/tex/context/base/cldf-ver.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-ema.mkii b/tex/context/base/colo-ema.mkii
index e5e90b235..11d76f342 100644
--- a/tex/context/base/colo-ema.mkii
+++ b/tex/context/base/colo-ema.mkii
@@ -5,7 +5,7 @@
%D subtitle=Emacs Colors,
%D author=Peter Rolf,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-ext.mkii b/tex/context/base/colo-ext.mkii
index 473c010e0..5b39a8e85 100644
--- a/tex/context/base/colo-ext.mkii
+++ b/tex/context/base/colo-ext.mkii
@@ -5,7 +5,7 @@
%D subtitle=Extras,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-ext.mkiv b/tex/context/base/colo-ext.mkiv
index 771974d4d..688b3d441 100644
--- a/tex/context/base/colo-ext.mkiv
+++ b/tex/context/base/colo-ext.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Extras,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-hex.mkii b/tex/context/base/colo-hex.mkii
index db67f1841..ddf2d4706 100644
--- a/tex/context/base/colo-hex.mkii
+++ b/tex/context/base/colo-hex.mkii
@@ -5,7 +5,7 @@
%D subtitle=Hex Colors,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-imp-ema.mkiv b/tex/context/base/colo-imp-ema.mkiv
index e5e90b235..11d76f342 100644
--- a/tex/context/base/colo-imp-ema.mkiv
+++ b/tex/context/base/colo-imp-ema.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Emacs Colors,
%D author=Peter Rolf,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-imp-rgb.mkiv b/tex/context/base/colo-imp-rgb.mkiv
index 038e0ab0b..f734c7a01 100644
--- a/tex/context/base/colo-imp-rgb.mkiv
+++ b/tex/context/base/colo-imp-rgb.mkiv
@@ -5,7 +5,7 @@
%D subtitle=RGB,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-imp-xwi.mkiv b/tex/context/base/colo-imp-xwi.mkiv
index 81e09d871..557e9c57c 100644
--- a/tex/context/base/colo-imp-xwi.mkiv
+++ b/tex/context/base/colo-imp-xwi.mkiv
@@ -5,7 +5,7 @@
%D subtitle=X Windows,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-ini.mkii b/tex/context/base/colo-ini.mkii
index 484a085fe..c81cec43c 100644
--- a/tex/context/base/colo-ini.mkii
+++ b/tex/context/base/colo-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-ini.mkiv b/tex/context/base/colo-ini.mkiv
index 45fe14633..1ba6026ce 100644
--- a/tex/context/base/colo-ini.mkiv
+++ b/tex/context/base/colo-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-rgb.mkii b/tex/context/base/colo-rgb.mkii
index 038e0ab0b..f734c7a01 100644
--- a/tex/context/base/colo-rgb.mkii
+++ b/tex/context/base/colo-rgb.mkii
@@ -5,7 +5,7 @@
%D subtitle=RGB,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-run.mkii b/tex/context/base/colo-run.mkii
index d94ea9801..02da462d3 100644
--- a/tex/context/base/colo-run.mkii
+++ b/tex/context/base/colo-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime loaded commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-run.mkiv b/tex/context/base/colo-run.mkiv
index d94ea9801..02da462d3 100644
--- a/tex/context/base/colo-run.mkiv
+++ b/tex/context/base/colo-run.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Runtime loaded commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/colo-xwi.mkii b/tex/context/base/colo-xwi.mkii
index 81e09d871..557e9c57c 100644
--- a/tex/context/base/colo-xwi.mkii
+++ b/tex/context/base/colo-xwi.mkii
@@ -5,7 +5,7 @@
%D subtitle=X Windows,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-cs.mkii b/tex/context/base/cont-cs.mkii
index 714bf9568..89b781c37 100644
--- a/tex/context/base/cont-cs.mkii
+++ b/tex/context/base/cont-cs.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Czech Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-cs.mkiv b/tex/context/base/cont-cs.mkiv
index e1805b1c9..75e30fe69 100644
--- a/tex/context/base/cont-cs.mkiv
+++ b/tex/context/base/cont-cs.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Czech Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-de.mkii b/tex/context/base/cont-de.mkii
index a110f67d2..5badc59d0 100644
--- a/tex/context/base/cont-de.mkii
+++ b/tex/context/base/cont-de.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ German Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-de.mkiv b/tex/context/base/cont-de.mkiv
index 1f4179781..998f76466 100644
--- a/tex/context/base/cont-de.mkiv
+++ b/tex/context/base/cont-de.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ German Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-en.mkii b/tex/context/base/cont-en.mkii
index c3d510f98..9d0d4de2e 100644
--- a/tex/context/base/cont-en.mkii
+++ b/tex/context/base/cont-en.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ English Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-en.mkiv b/tex/context/base/cont-en.mkiv
index 1bf182cd8..f25ab69cb 100644
--- a/tex/context/base/cont-en.mkiv
+++ b/tex/context/base/cont-en.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ English Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-err.mkii b/tex/context/base/cont-err.mkii
index f01ce87aa..00118f6cc 100644
--- a/tex/context/base/cont-err.mkii
+++ b/tex/context/base/cont-err.mkii
@@ -5,7 +5,7 @@
%D subtitle=Just A warning,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-fil.mkii b/tex/context/base/cont-fil.mkii
index b295872ca..a6276a482 100644
--- a/tex/context/base/cont-fil.mkii
+++ b/tex/context/base/cont-fil.mkii
@@ -5,7 +5,7 @@
%D subtitle=File Synonyms,
%D author=J. Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-fil.mkiv b/tex/context/base/cont-fil.mkiv
index 2468f2998..b6d716237 100644
--- a/tex/context/base/cont-fil.mkiv
+++ b/tex/context/base/cont-fil.mkiv
@@ -5,7 +5,7 @@
%D subtitle=File Synonyms,
%D author=J. Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-fr.mkii b/tex/context/base/cont-fr.mkii
index 6f1e806ad..e70cfe65e 100644
--- a/tex/context/base/cont-fr.mkii
+++ b/tex/context/base/cont-fr.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ French Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-fr.mkiv b/tex/context/base/cont-fr.mkiv
index 5b0946625..f45ec88c3 100644
--- a/tex/context/base/cont-fr.mkiv
+++ b/tex/context/base/cont-fr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ French Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-gb.mkii b/tex/context/base/cont-gb.mkii
index 35b7c85a4..5cd0a9635 100644
--- a/tex/context/base/cont-gb.mkii
+++ b/tex/context/base/cont-gb.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ English Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-gb.mkiv b/tex/context/base/cont-gb.mkiv
index 3a4ed609b..f6dd4ba9e 100644
--- a/tex/context/base/cont-gb.mkiv
+++ b/tex/context/base/cont-gb.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ English Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-it.mkii b/tex/context/base/cont-it.mkii
index c594a0659..f15171403 100644
--- a/tex/context/base/cont-it.mkii
+++ b/tex/context/base/cont-it.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Italian Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-it.mkiv b/tex/context/base/cont-it.mkiv
index af7a1149e..483eb8589 100644
--- a/tex/context/base/cont-it.mkiv
+++ b/tex/context/base/cont-it.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Italian Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-log.mkii b/tex/context/base/cont-log.mkii
index c89a2dd8f..6a7a70795 100644
--- a/tex/context/base/cont-log.mkii
+++ b/tex/context/base/cont-log.mkii
@@ -5,7 +5,7 @@
%D subtitle=\TEX\ Logos,
%D author=J. Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-log.mkiv b/tex/context/base/cont-log.mkiv
index 171949ba0..3f2f34bc8 100644
--- a/tex/context/base/cont-log.mkiv
+++ b/tex/context/base/cont-log.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\TEX\ Logos,
%D author=J. Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii
index a147f13e5..839324aff 100644
--- a/tex/context/base/cont-new.mkii
+++ b/tex/context/base/cont-new.mkii
@@ -5,13 +5,13 @@
%D subtitle=New Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2011.05.18 22:26}
+\newcontextversion{2011.06.08 19:06}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 3de057567..2b07231c8 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -5,13 +5,13 @@
%D subtitle=New Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2011.05.18 22:26}
+\newcontextversion{2011.06.08 19:06}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/cont-nl.mkii b/tex/context/base/cont-nl.mkii
index 925ec8999..f9cefaaac 100644
--- a/tex/context/base/cont-nl.mkii
+++ b/tex/context/base/cont-nl.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Dutch Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-nl.mkiv b/tex/context/base/cont-nl.mkiv
index f6d2671e3..890ad8ca5 100644
--- a/tex/context/base/cont-nl.mkiv
+++ b/tex/context/base/cont-nl.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Dutch Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-pe.mkiv b/tex/context/base/cont-pe.mkiv
index e65ad1328..4f7efe959 100644
--- a/tex/context/base/cont-pe.mkiv
+++ b/tex/context/base/cont-pe.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ English Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-ro.mkii b/tex/context/base/cont-ro.mkii
index 595613194..d68cf5a45 100644
--- a/tex/context/base/cont-ro.mkii
+++ b/tex/context/base/cont-ro.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Romanian Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/cont-ro.mkiv b/tex/context/base/cont-ro.mkiv
index 90bbc27dc..ac6f159f5 100644
--- a/tex/context/base/cont-ro.mkiv
+++ b/tex/context/base/cont-ro.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Romanian Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii
index 1613819a6..884a21051 100644
--- a/tex/context/base/context.mkii
+++ b/tex/context/base/context.mkii
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2011.05.18 22:26}
+\edef\contextversion{2011.06.08 19:06}
%D For those who want to use this:
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 74ea5ff80..78601ae7c 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2011.05.18 22:26}
+\edef\contextversion{2011.06.08 19:06}
%D For those who want to use this:
@@ -54,8 +54,8 @@
%D We just quit if new functionality is expected.
-\ifnum\luatexversion<60 % also change message
- \writestatus{!!!!}{Your luatex binary is too old, you need at least version 0.60!}
+\ifnum\luatexversion<70 % also change message
+ \writestatus{!!!!}{Your luatex binary is too old, you need at least version 0.70!}
\expandafter\end
\fi
@@ -303,6 +303,8 @@
\loadmarkfile{font-col}
\loadmarkfile{font-gds}
+\loadmarkfile{spac-chr} % depends on fonts
+
\loadmarkfile{blob-ini} % not to be used, we only use a helper
\loadmarkfile{typo-cln}
@@ -330,6 +332,8 @@
\loadmarkfile{meta-fun}
\loadmarkfile{meta-pag}
+\loadmarkfile{page-mrk} % depends on mp
+
\loadmarkfile{page-flw}
\loadmarkfile{page-spr}
\loadmarkfile{page-plg}
@@ -351,7 +355,7 @@
\loadmarkfile{math-del}
\loadmarkfile{math-inl}
\loadmarkfile{math-dis}
-\loadmarkfile{math-lan}
+%loadmarkfile{math-lan}
\loadmarkfile{strc-mat}
diff --git a/tex/context/base/core-con.mkii b/tex/context/base/core-con.mkii
index c39bdd9d4..46fbe9b9e 100644
--- a/tex/context/base/core-con.mkii
+++ b/tex/context/base/core-con.mkii
@@ -5,7 +5,7 @@
%D subtitle=Conversion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-con.mkiv b/tex/context/base/core-con.mkiv
index e43e4ecda..c82c9901c 100644
--- a/tex/context/base/core-con.mkiv
+++ b/tex/context/base/core-con.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Conversion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-ctx.mkii b/tex/context/base/core-ctx.mkii
index 93cf8b4be..c693d10db 100644
--- a/tex/context/base/core-ctx.mkii
+++ b/tex/context/base/core-ctx.mkii
@@ -5,7 +5,7 @@
%D subtitle=Job Control,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-ctx.mkiv b/tex/context/base/core-ctx.mkiv
index f6e5a33f1..0595d0897 100644
--- a/tex/context/base/core-ctx.mkiv
+++ b/tex/context/base/core-ctx.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Job Control,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-def.mkii b/tex/context/base/core-def.mkii
index ff7283356..971e8953d 100644
--- a/tex/context/base/core-def.mkii
+++ b/tex/context/base/core-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Defaults,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-def.mkiv b/tex/context/base/core-def.mkiv
index 59c2c89c1..59fdceb85 100644
--- a/tex/context/base/core-def.mkiv
+++ b/tex/context/base/core-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Defaults,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-env.lua b/tex/context/base/core-env.lua
index 694b2f07c..737904d23 100644
--- a/tex/context/base/core-env.lua
+++ b/tex/context/base/core-env.lua
@@ -99,3 +99,39 @@ local pattern = (
function commands.autosetups(str)
lpegmatch(pattern,str)
end
+
+-- new (inefficient)
+
+local lookuptoken = token.lookup
+
+local dimencode = lookuptoken("scratchdimen" )[1]
+local countcode = lookuptoken("scratchcounter")[1]
+local tokencode = lookuptoken("scratchtoken" )[1]
+local skipcode = lookuptoken("scratchskip" )[1]
+
+local types = {
+ [dimencode] = "dimen",
+ [countcode] = "count",
+ [tokencode] = "token",
+ [skipcode ] = "skip",
+}
+
+function tex.isdimen(name)
+ return lookuptoken(name)[1] == dimencode
+end
+function tex.iscount(name)
+ return lookuptoken(name)[1] == countcode
+end
+function tex.istoken(name)
+ return lookuptoken(name)[1] == tokencode
+end
+function tex.isskip(name)
+ return lookuptoken(name)[1] == skipcode
+end
+
+function tex.type(name)
+ return types[lookuptoken(name)[1]] or "macro"
+end
+
+-- inspect(tex.isdimen("xxxxxxxxxxxxxxx"))
+-- inspect(tex.isdimen("textwidth"))
diff --git a/tex/context/base/core-env.mkii b/tex/context/base/core-env.mkii
index a22594b27..6058c4c9f 100644
--- a/tex/context/base/core-env.mkii
+++ b/tex/context/base/core-env.mkii
@@ -5,7 +5,7 @@
%D subtitle=New ones,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-env.mkiv b/tex/context/base/core-env.mkiv
index 2451b5950..ce2155153 100644
--- a/tex/context/base/core-env.mkiv
+++ b/tex/context/base/core-env.mkiv
@@ -5,7 +5,7 @@
%D subtitle=New ones,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-fil.mkii b/tex/context/base/core-fil.mkii
index 0355920c7..6b0d8caf5 100644
--- a/tex/context/base/core-fil.mkii
+++ b/tex/context/base/core-fil.mkii
@@ -5,7 +5,7 @@
%D subtitle=File Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-fil.mkiv b/tex/context/base/core-fil.mkiv
index 263030a9b..78900215f 100644
--- a/tex/context/base/core-fil.mkiv
+++ b/tex/context/base/core-fil.mkiv
@@ -5,7 +5,7 @@
%D subtitle=File Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-fnt.mkii b/tex/context/base/core-fnt.mkii
index 9bc2a66f5..542ca062a 100644
--- a/tex/context/base/core-fnt.mkii
+++ b/tex/context/base/core-fnt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-fnt.mkiv b/tex/context/base/core-fnt.mkiv
index 90dd93496..1ca8b8426 100644
--- a/tex/context/base/core-fnt.mkiv
+++ b/tex/context/base/core-fnt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-gen.mkii b/tex/context/base/core-gen.mkii
index b6ab2a208..0d7fcebe0 100644
--- a/tex/context/base/core-gen.mkii
+++ b/tex/context/base/core-gen.mkii
@@ -5,7 +5,7 @@
%D subtitle=General,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-gen.mkiv b/tex/context/base/core-gen.mkiv
index b6ab2a208..0d7fcebe0 100644
--- a/tex/context/base/core-gen.mkiv
+++ b/tex/context/base/core-gen.mkiv
@@ -5,7 +5,7 @@
%D subtitle=General,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-ini.mkii b/tex/context/base/core-ini.mkii
index 69edf9735..04535bec6 100644
--- a/tex/context/base/core-ini.mkii
+++ b/tex/context/base/core-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Additional Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-ini.mkiv b/tex/context/base/core-ini.mkiv
index c823c9594..cdaa02a21 100644
--- a/tex/context/base/core-ini.mkiv
+++ b/tex/context/base/core-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Additional Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-job.mkii b/tex/context/base/core-job.mkii
index 2cd22e409..e2dc16031 100644
--- a/tex/context/base/core-job.mkii
+++ b/tex/context/base/core-job.mkii
@@ -5,7 +5,7 @@
%D subtitle=Job Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-job.mkiv b/tex/context/base/core-job.mkiv
index db8d3ed93..a413d1d6a 100644
--- a/tex/context/base/core-job.mkiv
+++ b/tex/context/base/core-job.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Job Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-mis.mkii b/tex/context/base/core-mis.mkii
index 6d77ef18e..c44d61cbc 100644
--- a/tex/context/base/core-mis.mkii
+++ b/tex/context/base/core-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-mis.mkiv b/tex/context/base/core-mis.mkiv
index 06ee5b617..bb07f0628 100644
--- a/tex/context/base/core-mis.mkiv
+++ b/tex/context/base/core-mis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-par.mkii b/tex/context/base/core-par.mkii
index 0b283b294..69e2976d1 100644
--- a/tex/context/base/core-par.mkii
+++ b/tex/context/base/core-par.mkii
@@ -5,7 +5,7 @@
%D subtitle=Paragraph Tricks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-stg.mkii b/tex/context/base/core-stg.mkii
index 429e1e894..0d98da851 100644
--- a/tex/context/base/core-stg.mkii
+++ b/tex/context/base/core-stg.mkii
@@ -5,7 +5,7 @@
%D subtitle=Strategies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-sys.mkii b/tex/context/base/core-sys.mkii
index 24975ffb6..54778eeed 100644
--- a/tex/context/base/core-sys.mkii
+++ b/tex/context/base/core-sys.mkii
@@ -5,7 +5,7 @@
%D subtitle=System,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-sys.mkiv b/tex/context/base/core-sys.mkiv
index f61cabec3..253ea6ece 100644
--- a/tex/context/base/core-sys.mkiv
+++ b/tex/context/base/core-sys.mkiv
@@ -5,7 +5,7 @@
%D subtitle=System,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-two.mkii b/tex/context/base/core-two.mkii
index 0f2e0048c..235be988e 100644
--- a/tex/context/base/core-two.mkii
+++ b/tex/context/base/core-two.mkii
@@ -5,7 +5,7 @@
%D subtitle=Two Pass Data,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-two.mkiv b/tex/context/base/core-two.mkiv
index 332b2c89b..adea52f90 100644
--- a/tex/context/base/core-two.mkiv
+++ b/tex/context/base/core-two.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Two Pass Data,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-uti.mkii b/tex/context/base/core-uti.mkii
index 5b8f66f50..bd2fa46a0 100644
--- a/tex/context/base/core-uti.mkii
+++ b/tex/context/base/core-uti.mkii
@@ -5,7 +5,7 @@
%D subtitle=Utility File Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-uti.mkiv b/tex/context/base/core-uti.mkiv
index 46a1e398a..6153bc847 100644
--- a/tex/context/base/core-uti.mkiv
+++ b/tex/context/base/core-uti.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Utility File Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-var.mkii b/tex/context/base/core-var.mkii
index 4de1b8718..55c587fbf 100644
--- a/tex/context/base/core-var.mkii
+++ b/tex/context/base/core-var.mkii
@@ -5,7 +5,7 @@
%D subtitle=Variables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/core-var.mkiv b/tex/context/base/core-var.mkiv
index 45a593ee7..30ec91616 100644
--- a/tex/context/base/core-var.mkiv
+++ b/tex/context/base/core-var.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Variables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/data-res.lua b/tex/context/base/data-res.lua
index 842eed169..695534377 100644
--- a/tex/context/base/data-res.lua
+++ b/tex/context/base/data-res.lua
@@ -55,17 +55,65 @@ resolvers.criticalvars = allocate { "SELFAUTOLOC", "SELFAUTODIR", "SELFAUTOPARE
resolvers.luacnfname = 'texmfcnf.lua'
resolvers.luacnfstate = "unknown"
--- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}' -- what a rubish path
-resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c},}}'
+-- The web2c tex binaries as well as kpse have built in paths for the configuration
+-- files and there can be a depressing truckload of them. This is actually the weak
+-- spot of a distribution. So we don't want:
+--
+-- resolvers.luacnfspec = '{$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}'
+--
+-- but instead use:
+--
+-- resolvers.luacnfspec = 'selfautoparent:{/texmf{-local,}{,/web2c}}'
+--
+-- which does not make texlive happy as there is a texmf-local tree one level up
+-- (sigh), so we need this. (We can assume web2c as mkiv does not run on older
+-- texlives anyway.
+--
+-- texlive:
+--
+-- selfautodir:
+-- selfautoparent:
+-- selfautodir:share/texmf-local/web2c
+-- selfautodir:share/texmf/web2c
+-- selfautodir:texmf-local/web2c
+-- selfautodir:texmf/web2c
+-- selfautoparent:share/texmf-local/web2c
+-- selfautoparent:share/texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf/web2c
+--
+-- minimals:
+--
+-- home:texmf/web2c
+-- selfautoparent:texmf-local/web2c
+-- selfautoparent:texmf-context/web2c
+-- selfautoparent:texmf/web2c
+
+if this_is_texlive then
+ -- resolvers.luacnfspec = '{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = '{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}'
+ -- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c;selfautoparent:/texmf{-local,}/web2c'
+ resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c'
+else
+ resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c'
+end
+
+-- which (as we want users to use the web2c path) be can be simplified to this:
+--
+-- if environment and environment.ownpath and string.find(environment.ownpath,"[\\/]texlive[\\/]") then
+-- resolvers.luacnfspec = 'selfautodir:/texmf-local/web2c,selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- else
+-- resolvers.luacnfspec = 'selfautoparent:/texmf-local/web2c,selfautoparent:/texmf/web2c'
+-- end
--~ -- not yet, some reporters expect strings
--~ resolvers.luacnfspec = {
---~ "selfautoparent:/texmf-local",
+--~ "selfautoparent:/texmf-local", -- is actually a user mistake
--~ "selfautoparent:/texmf-local/web2c",
---~ "selfautoparent:/texmf",
+--~ "selfautoparent:/texmf", -- idem
--~ "selfautoparent:/texmf/web2c",
---~ "selfautoparent:",
+--~ "selfautoparent:", -- idem
--~ }
local unset_variable = "unset"
@@ -259,7 +307,7 @@ local function makepathexpression(str)
end
end
-local function reportcriticalvariables()
+local function reportcriticalvariables(cnfspec)
if trace_locating then
for i=1,#resolvers.criticalvars do
local k = resolvers.criticalvars[i]
@@ -267,6 +315,14 @@ local function reportcriticalvariables()
report_resolving("variable '%s' set to '%s'",k,v)
end
report_resolving()
+ if cnfspec then
+ if type(cnfspec) == "table" then
+ report_resolving("using configuration specification '%s'",concat(cnfspec,","))
+ else
+ report_resolving("using configuration specification '%s'",cnfspec)
+ end
+ end
+ report_resolving()
end
reportcriticalvariables = function() end
end
@@ -281,7 +337,7 @@ local function identify_configuration_files()
else
resolvers.luacnfstate = "environment"
end
- reportcriticalvariables()
+ reportcriticalvariables(cnfspec)
local cnfpaths = expandedpathfromlist(resolvers.splitpath(cnfspec))
local luacnfname = resolvers.luacnfname
for i=1,#cnfpaths do
@@ -317,6 +373,19 @@ local function load_configuration_files()
if blob then
local setups = instance.setups
local data = blob()
+local parent = data and data.parent
+if parent then
+ local filename = filejoin(pathname,parent)
+ local realname = resolvers.resolve(filename) -- no shortcut
+ local blob = loadfile(realname)
+ if blob then
+ local parentdata = blob()
+ if parentdata then
+ report_resolving("loading configuration file '%s'",filename)
+ data = table.merged(parentdata,data)
+ end
+ end
+end
data = data and data.content
if data then
if trace_locating then
diff --git a/tex/context/base/enco-032.mkii b/tex/context/base/enco-032.mkii
index d7e15126c..e3c24271e 100644
--- a/tex/context/base/enco-032.mkii
+++ b/tex/context/base/enco-032.mkii
@@ -5,7 +5,7 @@
%D subtitle=Unicode Goodies,
%D author={Taco Hoekwater},
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-037.mkii b/tex/context/base/enco-037.mkii
index d9fc653b2..a2aad46a5 100644
--- a/tex/context/base/enco-037.mkii
+++ b/tex/context/base/enco-037.mkii
@@ -5,7 +5,7 @@
%D subtitle=Encoding for vector 37,
%D author=Luigi Scarso,
%D date=\currentdate,
-%D copyright={PRAGMA}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-acc.mkii b/tex/context/base/enco-acc.mkii
index e02536be6..7484fd50e 100644
--- a/tex/context/base/enco-acc.mkii
+++ b/tex/context/base/enco-acc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Composed Characters Commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen \& Ton Otten]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ans.mkii b/tex/context/base/enco-ans.mkii
index 88baf0ad0..c71b2451a 100644
--- a/tex/context/base/enco-ans.mkii
+++ b/tex/context/base/enco-ans.mkii
@@ -5,7 +5,7 @@
%D subtitle=\YandY\ texnansi Encoding,
%D author={Patrick Gundlach, Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-cas.mkii b/tex/context/base/enco-cas.mkii
index 38d12f9fa..6ac35eb32 100644
--- a/tex/context/base/enco-cas.mkii
+++ b/tex/context/base/enco-cas.mkii
@@ -5,7 +5,7 @@
%D subtitle=Named Glyph Case Mapping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-chi.mkii b/tex/context/base/enco-chi.mkii
index 9d77893a0..727720565 100644
--- a/tex/context/base/enco-chi.mkii
+++ b/tex/context/base/enco-chi.mkii
@@ -5,7 +5,7 @@
%D subtitle=Traditional and Simplified Chinese,
%D author={Wang Lei \& Hans Hagen},
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-com.mkii b/tex/context/base/enco-com.mkii
index 42d0d4774..620ac0c96 100644
--- a/tex/context/base/enco-com.mkii
+++ b/tex/context/base/enco-com.mkii
@@ -5,7 +5,7 @@
%D subtitle=Composed Characters Commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen \& Ton Otten]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-cyr.mkii b/tex/context/base/enco-cyr.mkii
index 36bca82b5..aa412d8d3 100644
--- a/tex/context/base/enco-cyr.mkii
+++ b/tex/context/base/enco-cyr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cyrillic,
%D author=...,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-def.mkii b/tex/context/base/enco-def.mkii
index 4d8e280cb..20c885d4d 100644
--- a/tex/context/base/enco-def.mkii
+++ b/tex/context/base/enco-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Character Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ec.mkii b/tex/context/base/enco-ec.mkii
index f0964897f..918c85e12 100644
--- a/tex/context/base/enco-ec.mkii
+++ b/tex/context/base/enco-ec.mkii
@@ -5,7 +5,7 @@
%D subtitle=\LATEX\ EC Encoding,
%D author={Patrick Gundlach, Hans Hagen, Taco Hoekwater, Mojca Miklavec},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ecm.mkii b/tex/context/base/enco-ecm.mkii
index b74473960..8a9706574 100644
--- a/tex/context/base/enco-ecm.mkii
+++ b/tex/context/base/enco-ecm.mkii
@@ -5,7 +5,7 @@
%D subtitle=Glyphs that may not be present in EC,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-el.mkii b/tex/context/base/enco-el.mkii
index 24729967b..f268dcb3c 100644
--- a/tex/context/base/enco-el.mkii
+++ b/tex/context/base/enco-el.mkii
@@ -5,7 +5,7 @@
%D subtitle=EuroLetter,
%D author={Several Users},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-fde.mkii b/tex/context/base/enco-fde.mkii
index da104b802..57e572c04 100644
--- a/tex/context/base/enco-fde.mkii
+++ b/tex/context/base/enco-fde.mkii
@@ -5,7 +5,7 @@
%D subtitle=German Input Filter,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ffr.mkii b/tex/context/base/enco-ffr.mkii
index 259b59949..7e605bb05 100644
--- a/tex/context/base/enco-ffr.mkii
+++ b/tex/context/base/enco-ffr.mkii
@@ -5,7 +5,7 @@
%D subtitle=French Input Filter,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-fpl.mkii b/tex/context/base/enco-fpl.mkii
index 14d102ff1..ddf865698 100644
--- a/tex/context/base/enco-fpl.mkii
+++ b/tex/context/base/enco-fpl.mkii
@@ -5,7 +5,7 @@
%D subtitle=Polish Input Filter,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-fro.mkii b/tex/context/base/enco-fro.mkii
index e5f5e1257..af1272163 100644
--- a/tex/context/base/enco-fro.mkii
+++ b/tex/context/base/enco-fro.mkii
@@ -5,7 +5,7 @@
%D subtitle=Romanian Input Filter,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-fsl.mkii b/tex/context/base/enco-fsl.mkii
index 86a41c88a..8fbca98ca 100644
--- a/tex/context/base/enco-fsl.mkii
+++ b/tex/context/base/enco-fsl.mkii
@@ -5,7 +5,7 @@
%D subtitle=Slovenian Specialities,
%D author={Hans Hagen, Mojka Miklavec},
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-grk.mkii b/tex/context/base/enco-grk.mkii
index 882a3c9b0..6264f362e 100644
--- a/tex/context/base/enco-grk.mkii
+++ b/tex/context/base/enco-grk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Greek,
%D author=Apostolos Syropoulos,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-heb.mkii b/tex/context/base/enco-heb.mkii
index 443745752..a4ef2cd2c 100644
--- a/tex/context/base/enco-heb.mkii
+++ b/tex/context/base/enco-heb.mkii
@@ -5,7 +5,7 @@
%D subtitle=Hebrew,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-il2.mkii b/tex/context/base/enco-il2.mkii
index 9fb87b2fd..9b08dc897 100644
--- a/tex/context/base/enco-il2.mkii
+++ b/tex/context/base/enco-il2.mkii
@@ -5,7 +5,7 @@
%D subtitle=Czech and Slovak ISO Latin 2 Encoding,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ini.mkii b/tex/context/base/enco-ini.mkii
index a277e7450..8603f2420 100644
--- a/tex/context/base/enco-ini.mkii
+++ b/tex/context/base/enco-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-ini.mkiv b/tex/context/base/enco-ini.mkiv
index 491084b8c..a5dc60f93 100644
--- a/tex/context/base/enco-ini.mkiv
+++ b/tex/context/base/enco-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-l7x.mkii b/tex/context/base/enco-l7x.mkii
index 776c683c1..2a0d12c9f 100644
--- a/tex/context/base/enco-l7x.mkii
+++ b/tex/context/base/enco-l7x.mkii
@@ -5,7 +5,7 @@
%D subtitle=\LATEX\ L7x Encoding,
%D author={Hans Hagen \& Mojca Miklavec},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-mis.mkii b/tex/context/base/enco-mis.mkii
index 92dc61b3f..28523685e 100644
--- a/tex/context/base/enco-mis.mkii
+++ b/tex/context/base/enco-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Missing Glyphs,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-pdf.mkii b/tex/context/base/enco-pdf.mkii
index a03e81df2..28e960673 100644
--- a/tex/context/base/enco-pdf.mkii
+++ b/tex/context/base/enco-pdf.mkii
@@ -5,7 +5,7 @@
%D subtitle=\YandY\ texnansi Encoding,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-pfr.mkii b/tex/context/base/enco-pfr.mkii
index b279e40aa..aca2436c1 100644
--- a/tex/context/base/enco-pfr.mkii
+++ b/tex/context/base/enco-pfr.mkii
@@ -5,7 +5,7 @@
%D subtitle=PDF Resources,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-pol.mkii b/tex/context/base/enco-pol.mkii
index a012f0370..ec49c6e1d 100644
--- a/tex/context/base/enco-pol.mkii
+++ b/tex/context/base/enco-pol.mkii
@@ -5,7 +5,7 @@
%D subtitle=Polish Mixed Encoding,
%D author={Taco Hoekwater \& Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-qx.mkii b/tex/context/base/enco-qx.mkii
index 798a18249..b184fe0ac 100644
--- a/tex/context/base/enco-qx.mkii
+++ b/tex/context/base/enco-qx.mkii
@@ -5,7 +5,7 @@
%D subtitle=Polish QX Encoding,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-run.mkii b/tex/context/base/enco-run.mkii
index 50fb52e15..2f60a35b8 100644
--- a/tex/context/base/enco-run.mkii
+++ b/tex/context/base/enco-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen \& Ton Otten]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-t5.mkii b/tex/context/base/enco-t5.mkii
index a8d80be14..3f51b8585 100644
--- a/tex/context/base/enco-t5.mkii
+++ b/tex/context/base/enco-t5.mkii
@@ -5,7 +5,7 @@
%D subtitle=New Vietnamese Encoding,
%D author=Hans Hagen \& Adam Lindsay,
%D date=\currentdate,
-%D copyright=PRAGMA \& Adam Lindsay]
+%D copyright={Adam Lindsay \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-tbo.mkii b/tex/context/base/enco-tbo.mkii
index 475be4602..5733acd32 100644
--- a/tex/context/base/enco-tbo.mkii
+++ b/tex/context/base/enco-tbo.mkii
@@ -5,7 +5,7 @@
%D subtitle=TeXBaseOne Encoding,
%D author={Patrick Gundlach, Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-uc.mkii b/tex/context/base/enco-uc.mkii
index 981eb6ae4..0be22318a 100644
--- a/tex/context/base/enco-uc.mkii
+++ b/tex/context/base/enco-uc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Unicode (backwards mapping),
%D author={Adam Lindsay \& Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-vna.mkii b/tex/context/base/enco-vna.mkii
index 05753f37b..42fee4341 100644
--- a/tex/context/base/enco-vna.mkii
+++ b/tex/context/base/enco-vna.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vietnamese Accents,
%D author=Han The Thanh & Adam Lindsay & Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/enco-x5.mkii b/tex/context/base/enco-x5.mkii
index d3b701c1a..cde394e29 100644
--- a/tex/context/base/enco-x5.mkii
+++ b/tex/context/base/enco-x5.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vietnamese Encoding,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/filt-bas.mkii b/tex/context/base/filt-bas.mkii
index ca3bc3d70..fedeb694b 100644
--- a/tex/context/base/filt-bas.mkii
+++ b/tex/context/base/filt-bas.mkii
@@ -5,7 +5,7 @@
%D subtitle=A Base Collection,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/filt-ini.mkii b/tex/context/base/filt-ini.mkii
index 6e1a16e9a..f2f59349a 100644
--- a/tex/context/base/filt-ini.mkii
+++ b/tex/context/base/filt-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-bfm.mkii b/tex/context/base/font-bfm.mkii
index 23e3176c4..0a25ec742 100644
--- a/tex/context/base/font-bfm.mkii
+++ b/tex/context/base/font-bfm.mkii
@@ -5,7 +5,7 @@
%D subtitle=Mixed Normal and Bold Math,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-chi.mkii b/tex/context/base/font-chi.mkii
index 0acf710d5..5e5457227 100644
--- a/tex/context/base/font-chi.mkii
+++ b/tex/context/base/font-chi.mkii
@@ -6,7 +6,7 @@
%D author=Hans Hagen,
%D date=\currentdate,
%D suggestions=Wang Lei,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-col.mkiv b/tex/context/base/font-col.mkiv
index f4f9a9dc7..038a618b7 100644
--- a/tex/context/base/font-col.mkiv
+++ b/tex/context/base/font-col.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fallbacks (collections),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua
index 887aa9984..329894407 100644
--- a/tex/context/base/font-ctx.lua
+++ b/tex/context/base/font-ctx.lua
@@ -21,11 +21,13 @@ local round = math.round
local P, S, C, Cc, Cf, Cg, Ct, lpegmatch = lpeg.P, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Cf, lpeg.Cg, lpeg.Ct, lpeg.match
+local trace_features = false trackers.register("fonts.features", function(v) trace_features = v end)
local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end)
local trace_usage = false trackers.register("fonts.usage", function(v) trace_usage = v end)
-local trace_mapfiles = false trackers.register("fonts.mapfiles", function(v) trace_mapfiles = v end)
-local trace_automode = false trackers.register("fonts.automode", function(v) trace_automode = v end)
+local trace_mapfiles = false trackers.register("fonts.mapfiles", function(v) trace_mapfiles = v end)
+local trace_automode = false trackers.register("fonts.automode", function(v) trace_automode = v end)
+local report_features = logs.reporter("fonts","features")
local report_defining = logs.reporter("fonts","defining")
local report_status = logs.reporter("fonts","status")
local report_mapfiles = logs.reporter("fonts","mapfiles")
@@ -149,6 +151,9 @@ local needsnodemode = {
}
local function modechecker(tfmdata,features,mode) -- we cannot adapt features as they are shared!
+ if trace_features then
+ report_features(serialize(features,"used"))
+ end
if mode == "auto" then
local rawdata = tfmdata.shared.rawdata
local resources = rawdata and rawdata.resources
@@ -726,10 +731,17 @@ function definers.stage_two(global,cs,str,size,inheritancemode,classfeatures,fon
setsomefontsize(fontdata[tfmdata].parameters.size .. "sp")
texsetcount("global","lastfontid",tfmdata)
else
-tfmdata.characters[0] = nil -- we use char0 as signal
- -- local t = os.clock(t)
+ -- setting the extra characters will move elsewhere
+ local characters = tfmdata.characters
+ local parameters = tfmdata.parameters
+ -- we use char0 as signal
+ characters[0] = nil
+ -- cf the spec pdf can handle this (no char in slot)
+ -- characters[0x00A0] = { width = parameters.space }
+ -- characters[0x2007] = { width = characters[0x0030] and characters[0x0030].width or parameters.space } -- figure
+ -- characters[0x2008] = { width = characters[0x002E] and characters[0x002E].width or parameters.space } -- period
+ --
local id = font.define(tfmdata)
- -- print(name,os.clock()-t)
tfmdata.properties.id = id
definers.register(tfmdata,id) -- to be sure, normally already done
tex.definefont(global,cs,id)
diff --git a/tex/context/base/font-fbk.lua b/tex/context/base/font-fbk.lua
index 6712fbe88..fc12ea2b1 100644
--- a/tex/context/base/font-fbk.lua
+++ b/tex/context/base/font-fbk.lua
@@ -10,11 +10,13 @@ local cos, tan, rad, format = math.cos, math.tan, math.rad, string.format
local utfbyte, utfchar = utf.byte, utf.char
local trace_combining = false trackers.register("fonts.combining", function(v) trace_combining = v end)
-local trace_combining_all = false trackers.register("fonts.combining.all", function(v) trace_combining_all = v end)
+local trace_combining_all = false trackers.register("fonts.combining.all", function(v) trace_combining = v
+ trace_combining_all = v end)
local force_combining = false -- just for demo purposes (see mk)
-trackers.register("fonts.composing", "fonts.combining")
+trackers.register("fonts.composing", "fonts.combining")
+trackers.register("fonts.composing.all", "fonts.combining.all")
local report_combining = logs.reporter("fonts","combining")
@@ -71,7 +73,7 @@ local function composecharacters(tfmdata)
report_combining("using compose information from goodies file")
end
local done = false
- for i,c in next, unicodecharacters do -- loop over all characters ... not that efficient but a specials hash takes memory
+ for i, c in next, unicodecharacters do -- loop over all characters ... not that efficient but a specials hash takes memory
if force_combining or not characters[i] then
local s = c.specials
if s and s[1] == 'char' then
@@ -118,57 +120,104 @@ local function composecharacters(tfmdata)
local ab = descriptions[acc].boundingbox
-- todo: adapt height
if cb and ab then
- -- can be sped up for scale == 1
local c_llx, c_lly, c_urx, c_ury = scale*cb[1], scale*cb[2], scale*cb[3], scale*cb[4]
local a_llx, a_lly, a_urx, a_ury = scale*ab[1], scale*ab[2], scale*ab[3], scale*ab[4]
- local dx = (c_urx - a_urx - a_llx + c_llx)/2
- local dd = (c_urx - c_llx)*italicfactor
- if a_ury < 0 then
- if trace_combining then
- t.commands = { push, {"right", dx-dd}, red, acc_t, black, pop, chr_t }
- else
- t.commands = { push, {"right", dx-dd}, acc_t, pop, chr_t }
- end
- elseif c_ury > a_lly then -- messy test
- local dy
- if compose then
- -- experimental: we could use sx but all that testing
- -- takes time and code
- dy = compose[i]
- if dy then
- dy = dy.DY
+local done = false
+if compose then
+ local i_compose = compose[i]
+ local i_anchored = i_compose and i_compose.anchored
+ if i_anchored then
+ local c_compose = compose[chr]
+ local a_compose = compose[acc]
+ local c_anchors = c_compose and c_compose.anchors
+ local a_anchors = a_compose and a_compose.anchors
+ if c_anchors and a_anchors then
+ local c_anchor = c_anchors[i_anchored]
+ local a_anchor = a_anchors[i_anchored]
+ if c_anchor and a_anchor then
+ local cx = c_anchor.x or 0
+ local cy = c_anchor.y or 0
+ local ax = a_anchor.x or 0
+ local ay = a_anchor.y or 0
+ local dx = cx - ax
+ local dy = cy - ay
+ if trace_combining_all then
+ report_combining("building U+%05X (%s) from U+%05X (%s) and U+%05X (%s)",i,utfchar(i),chr,utfchar(chr),acc,utfchar(acc))
+ report_combining(" boundingbox:")
+ report_combining(" chr: %3i %3i %3i %3i",unpack(cb))
+ report_combining(" acc: %3i %3i %3i %3i",unpack(ab))
+ report_combining(" anchors:")
+ report_combining(" chr: %3i %3i",cx,cy)
+ report_combining(" acc: %3i %3i",ax,ay)
+ report_combining(" delta:")
+ report_combining(" %s: %3i %3i",i_anchored,dx,dy)
+ end
+ if trace_combining then
+ t.commands = { push, {"right", scale*dx}, {"down",-scale*dy}, green, acc_t, black, pop, chr_t }
+ -- t.commands = {
+ -- push, {"right", scale*cx}, {"down", -scale*cy}, red, {"rule",10000,10000,10000}, pop,
+ -- push, {"right", scale*ax}, {"down", -scale*ay}, blue, {"rule",10000,10000,10000}, pop,
+ -- push, {"right", scale*dx}, {"down", -scale*dy}, green, acc_t, black, pop, chr_t
+ -- }
+ else
+ t.commands = { push, {"right", scale*dx}, {"down",-scale*dy}, acc_t, pop, chr_t }
+ end
+ done = true
+ end
+ end
+ end
+end
+ if not done then
+ -- can be sped up for scale == 1
+ local dx = (c_urx - a_urx - a_llx + c_llx)/2
+ local dd = (c_urx - c_llx)*italicfactor
+ if a_ury < 0 then
+ if trace_combining then
+ t.commands = { push, {"right", dx-dd}, red, acc_t, black, pop, chr_t }
+ else
+ t.commands = { push, {"right", dx-dd}, acc_t, pop, chr_t }
end
- if not dy then
- dy = compose[acc]
+ elseif c_ury > a_lly then -- messy test
+ local dy
+ if compose then
+ -- experimental: we could use sx but all that testing
+ -- takes time and code
+ dy = compose[i]
if dy then
- dy = dy and dy.DY
+ dy = dy.DY
end
- end
- if not dy then
- dy = compose.DY
- end
- if not dy then
+ if not dy then
+ dy = compose[acc]
+ if dy then
+ dy = dy and dy.DY
+ end
+ end
+ if not dy then
+ dy = compose.DY
+ end
+ if not dy then
+ dy = - deltaxheight + extraxheight
+ elseif dy > -1.5 and dy < 1.5 then
+ -- we assume a fraction of (percentage)
+ dy = - dy * deltaxheight
+ else
+ -- we assume fontunits (value smaller than 2 make no sense)
+ dy = - dy * scale
+ end
+ else
dy = - deltaxheight + extraxheight
- elseif dy > -1.5 and dy < 1.5 then
- -- we assume a fraction of (percentage)
- dy = - dy * deltaxheight
+ end
+ if trace_combining then
+ t.commands = { push, {"right", dx+dd}, {"down", dy}, green, acc_t, black, pop, chr_t }
else
- -- we assume fontunits (value smaller than 2 make no sense)
- dy = - dy * scale
+ t.commands = { push, {"right", dx+dd}, {"down", dy}, acc_t, pop, chr_t }
end
else
- dy = - deltaxheight + extraxheight
- end
- if trace_combining then
- t.commands = { push, {"right", dx+dd}, {"down", dy}, green, acc_t, black, pop, chr_t }
- else
- t.commands = { push, {"right", dx+dd}, {"down", dy}, acc_t, pop, chr_t }
- end
- else
- if trace_combining then
- t.commands = { push, {"right", dx+dd}, blue, acc_t, black, pop, chr_t }
- else
- t.commands = { push, {"right", dx+dd}, acc_t, pop, chr_t }
+ if trace_combining then
+ t.commands = { push, {"right", dx+dd}, blue, acc_t, black, pop, chr_t }
+ else
+ t.commands = { push, {"right", dx+dd}, acc_t, pop, chr_t }
+ end
end
end
else
diff --git a/tex/context/base/font-gds.mkiv b/tex/context/base/font-gds.mkiv
index 083cd9128..7932a85ca 100644
--- a/tex/context/base/font-gds.mkiv
+++ b/tex/context/base/font-gds.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Colorschemes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-ini.mkii b/tex/context/base/font-ini.mkii
index 7b84125fa..2bee00637 100644
--- a/tex/context/base/font-ini.mkii
+++ b/tex/context/base/font-ini.mkii
@@ -6,7 +6,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv
index 1c9cdcd32..0613ac709 100644
--- a/tex/context/base/font-ini.mkiv
+++ b/tex/context/base/font-ini.mkiv
@@ -6,7 +6,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-jap.mkii b/tex/context/base/font-jap.mkii
index 42480df43..b8aa3d836 100644
--- a/tex/context/base/font-jap.mkii
+++ b/tex/context/base/font-jap.mkii
@@ -6,7 +6,7 @@
%D author=Hans Hagen,
%D date=\currentdate,
%D suggestions=Wang Lei,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-run.mkii b/tex/context/base/font-run.mkii
index 0a0ddd057..04fcd576a 100644
--- a/tex/context/base/font-run.mkii
+++ b/tex/context/base/font-run.mkii
@@ -6,7 +6,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-run.mkiv b/tex/context/base/font-run.mkiv
index 7a6764ac8..537272085 100644
--- a/tex/context/base/font-run.mkiv
+++ b/tex/context/base/font-run.mkiv
@@ -6,7 +6,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-tra.mkiv b/tex/context/base/font-tra.mkiv
index 37ea4541a..8344b7658 100644
--- a/tex/context/base/font-tra.mkiv
+++ b/tex/context/base/font-tra.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-uni.mkii b/tex/context/base/font-uni.mkii
index 02ab6ce2c..77eb680e2 100644
--- a/tex/context/base/font-uni.mkii
+++ b/tex/context/base/font-uni.mkii
@@ -5,7 +5,7 @@
%D subtitle=\UNICODE,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-uni.mkiv b/tex/context/base/font-uni.mkiv
index 8fb5d0996..223d27606 100644
--- a/tex/context/base/font-uni.mkiv
+++ b/tex/context/base/font-uni.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\UNICODE,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-unk.mkii b/tex/context/base/font-unk.mkii
index 30f824781..241369f68 100644
--- a/tex/context/base/font-unk.mkii
+++ b/tex/context/base/font-unk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Unknown Defaults,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-unk.mkiv b/tex/context/base/font-unk.mkiv
index bd699ef71..3cf0852be 100644
--- a/tex/context/base/font-unk.mkiv
+++ b/tex/context/base/font-unk.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Unknown Defaults,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/font-xtx.mkii b/tex/context/base/font-xtx.mkii
index 9930124be..e7a6c8d80 100644
--- a/tex/context/base/font-xtx.mkii
+++ b/tex/context/base/font-xtx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\XETEX\ Hacks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/grph-epd.mkiv b/tex/context/base/grph-epd.mkiv
index b066e1adc..f3f29ebd8 100644
--- a/tex/context/base/grph-epd.mkiv
+++ b/tex/context/base/grph-epd.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Merging Goodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/grph-fig.mkii b/tex/context/base/grph-fig.mkii
index c7f990af2..c488ccc4f 100644
--- a/tex/context/base/grph-fig.mkii
+++ b/tex/context/base/grph-fig.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -285,7 +285,7 @@
\processcommalist[#1]\docommand}%
\global\setbox\colorbarbox\vbox
{\hskip2em\box\colorbarbox}%
- \global\wd\colorbarbox\zeropoint}
+ \wd\colorbarbox\zeropoint}
\def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]%
{\hbox
diff --git a/tex/context/base/grph-fig.mkiv b/tex/context/base/grph-fig.mkiv
index fad1c864a..603604fd1 100644
--- a/tex/context/base/grph-fig.mkiv
+++ b/tex/context/base/grph-fig.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Figure Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -370,7 +370,7 @@
\processcommalist[#1]\docommand}%
\global\setbox\colorbarbox\vbox
{\hskip2em\box\colorbarbox}%
- \global\wd\colorbarbox\zeropoint}
+ \wd\colorbarbox\zeropoint}
\unexpanded\def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]%
{\hbox
diff --git a/tex/context/base/grph-inc.mkii b/tex/context/base/grph-inc.mkii
index 1bd7544d8..33f11a2bc 100644
--- a/tex/context/base/grph-inc.mkii
+++ b/tex/context/base/grph-inc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -660,8 +660,8 @@
\xdef\noffigurepages{\number\nofinsertpages}%
\fi
\fi
- \global\wd\foundexternalfigure\finalscaleboxwidth
- \global\ht\foundexternalfigure\finalscaleboxheight
+ \wd\foundexternalfigure\finalscaleboxwidth
+ \ht\foundexternalfigure\finalscaleboxheight
\global\let\lastfigureobjectname\externalfigurestamp
\doresetobjects} % clean up driver left overs
diff --git a/tex/context/base/grph-inc.mkiv b/tex/context/base/grph-inc.mkiv
index aa2157b9f..f63848587 100644
--- a/tex/context/base/grph-inc.mkiv
+++ b/tex/context/base/grph-inc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Figure Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/grph-raw.mkiv b/tex/context/base/grph-raw.mkiv
index 426262b4f..8b8c80e1c 100644
--- a/tex/context/base/grph-raw.mkiv
+++ b/tex/context/base/grph-raw.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Raw Bitmaps,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/grph-trf.mkii b/tex/context/base/grph-trf.mkii
index 3e32395b4..bd9875806 100644
--- a/tex/context/base/grph-trf.mkii
+++ b/tex/context/base/grph-trf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Transformations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/grph-trf.mkiv b/tex/context/base/grph-trf.mkiv
index 9924a68e8..9b4201116 100644
--- a/tex/context/base/grph-trf.mkiv
+++ b/tex/context/base/grph-trf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Transformations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/hand-def.mkii b/tex/context/base/hand-def.mkii
index 0a19ce270..ab0044a8e 100644
--- a/tex/context/base/hand-def.mkii
+++ b/tex/context/base/hand-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Protruding Factors,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/hand-ini.mkii b/tex/context/base/hand-ini.mkii
index ac8a94696..1d41c3ada 100644
--- a/tex/context/base/hand-ini.mkii
+++ b/tex/context/base/hand-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/hand-ini.mkiv b/tex/context/base/hand-ini.mkiv
index 7b9732059..cf659389b 100644
--- a/tex/context/base/hand-ini.mkiv
+++ b/tex/context/base/hand-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-ans.mkii b/tex/context/base/java-ans.mkii
index 636c894f9..7e310baa4 100644
--- a/tex/context/base/java-ans.mkii
+++ b/tex/context/base/java-ans.mkii
@@ -5,7 +5,7 @@
%D subtitle=Answer Analization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-exa.mkii b/tex/context/base/java-exa.mkii
index f40f70f84..584ee1351 100644
--- a/tex/context/base/java-exa.mkii
+++ b/tex/context/base/java-exa.mkii
@@ -5,7 +5,7 @@
%D subtitle=Example Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-fil.mkii b/tex/context/base/java-fil.mkii
index 4d79a2ace..20376af44 100644
--- a/tex/context/base/java-fil.mkii
+++ b/tex/context/base/java-fil.mkii
@@ -5,7 +5,7 @@
%D subtitle=Filing and Printing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-fld.mkii b/tex/context/base/java-fld.mkii
index 93a90dc0a..0a76cc93c 100644
--- a/tex/context/base/java-fld.mkii
+++ b/tex/context/base/java-fld.mkii
@@ -5,7 +5,7 @@
%D subtitle=Field Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-imp-exa.mkiv b/tex/context/base/java-imp-exa.mkiv
index f40f70f84..584ee1351 100644
--- a/tex/context/base/java-imp-exa.mkiv
+++ b/tex/context/base/java-imp-exa.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Example Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-imp-fil.mkiv b/tex/context/base/java-imp-fil.mkiv
index 592e9460d..808950f28 100644
--- a/tex/context/base/java-imp-fil.mkiv
+++ b/tex/context/base/java-imp-fil.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Filing and Printing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-imp-fld.mkiv b/tex/context/base/java-imp-fld.mkiv
index a0909f594..625bfce11 100644
--- a/tex/context/base/java-imp-fld.mkiv
+++ b/tex/context/base/java-imp-fld.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Field Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-imp-stp.mkiv b/tex/context/base/java-imp-stp.mkiv
index ebddd8cc6..8ac5d58b8 100644
--- a/tex/context/base/java-imp-stp.mkiv
+++ b/tex/context/base/java-imp-stp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Stepping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-ini.mkii b/tex/context/base/java-ini.mkii
index 68516ec4e..2e62ca166 100644
--- a/tex/context/base/java-ini.mkii
+++ b/tex/context/base/java-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-ini.mkiv b/tex/context/base/java-ini.mkiv
index 4013d82af..16d145ba0 100644
--- a/tex/context/base/java-ini.mkiv
+++ b/tex/context/base/java-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/java-stp.mkii b/tex/context/base/java-stp.mkii
index df4fbcc2f..7283c8ceb 100644
--- a/tex/context/base/java-stp.mkii
+++ b/tex/context/base/java-stp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Stepping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/l-file.lua b/tex/context/base/l-file.lua
index c3199f022..bb5a5d49c 100644
--- a/tex/context/base/l-file.lua
+++ b/tex/context/base/l-file.lua
@@ -146,9 +146,39 @@ end
--~ print(file.join("http:///a","/y"))
--~ print(file.join("//nas-1","/y"))
+-- We should be able to use:
+--
+-- function file.is_writable(name)
+-- local a = attributes(name) or attributes(dirname(name,"."))
+-- return a and sub(a.permissions,2,2) == "w"
+-- end
+--
+-- But after some testing Taco and I came up with:
+
function file.is_writable(name)
- local a = attributes(name) or attributes(dirname(name,"."))
- return a and sub(a.permissions,2,2) == "w"
+ if lfs.isdir(name) then
+ name = name .. "/m_t_x_t_e_s_t.tmp"
+ local f = io.open(name,"wb")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ elseif lfs.isfile(name) then
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ return true
+ end
+ else
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ end
+ return false
end
function file.is_readable(name)
diff --git a/tex/context/base/l-unicode.lua b/tex/context/base/l-unicode.lua
index 2fa50282f..0c7b24bd4 100644
--- a/tex/context/base/l-unicode.lua
+++ b/tex/context/base/l-unicode.lua
@@ -380,12 +380,29 @@ end
--~ print(unicode.utfcodes(str))
local lpegmatch = lpeg.match
-local utftype = lpeg.patterns.utftype
+local patterns = lpeg.patterns
+local utftype = patterns.utftype
function unicode.filetype(data)
return data and lpegmatch(utftype,data) or "unknown"
end
+local toentities = lpeg.Cs (
+ (
+ patterns.utf8one
+ + (
+ patterns.utf8two
+ + patterns.utf8three
+ + patterns.utf8four
+ ) / function(s) local b = utfbyte(s) if b < 127 then return s else return format("&#%X;",b) end end
+ )^0
+)
+
+patterns.toentities = toentities
+
+function utf.toentities(str)
+ return lpegmatch(toentities,str)
+end
--~ local utfchr = { } -- 60K -> 2.638 M extra mem but currently not called that often (on latin)
--~
--~ setmetatable(utfchr, { __index = function(t,k) local v = utfchar(k) t[k] = v return v end } )
diff --git a/tex/context/base/lang-alt.mkii b/tex/context/base/lang-alt.mkii
index f65acbda3..1e49945d5 100644
--- a/tex/context/base/lang-alt.mkii
+++ b/tex/context/base/lang-alt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Altaic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ana.mkii b/tex/context/base/lang-ana.mkii
index c108655c4..f2dc4a17c 100644
--- a/tex/context/base/lang-ana.mkii
+++ b/tex/context/base/lang-ana.mkii
@@ -5,7 +5,7 @@
%D subtitle=Anatolian Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-art.mkii b/tex/context/base/lang-art.mkii
index e8be91630..20216b571 100644
--- a/tex/context/base/lang-art.mkii
+++ b/tex/context/base/lang-art.mkii
@@ -5,7 +5,7 @@
%D subtitle=Artificial Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-bal.mkii b/tex/context/base/lang-bal.mkii
index 394e9d93c..4ab751a44 100644
--- a/tex/context/base/lang-bal.mkii
+++ b/tex/context/base/lang-bal.mkii
@@ -5,7 +5,7 @@
%D subtitle=Baltic Languages,
%D author=Marius Aleknevičius,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-cel.mkii b/tex/context/base/lang-cel.mkii
index 4d93957f1..e6519497b 100644
--- a/tex/context/base/lang-cel.mkii
+++ b/tex/context/base/lang-cel.mkii
@@ -5,7 +5,7 @@
%D subtitle=Celtic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-chi.mkii b/tex/context/base/lang-chi.mkii
index 278e10745..5d61281b0 100644
--- a/tex/context/base/lang-chi.mkii
+++ b/tex/context/base/lang-chi.mkii
@@ -5,7 +5,7 @@
%D subtitle=Chinese,
%D author={Hans Hagen \& Wang Lei},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ctx.mkii b/tex/context/base/lang-ctx.mkii
index 09f28dda1..2aecb918e 100644
--- a/tex/context/base/lang-ctx.mkii
+++ b/tex/context/base/lang-ctx.mkii
@@ -5,7 +5,7 @@
%D subtitle=Generic Patterns,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-cyr.mkii b/tex/context/base/lang-cyr.mkii
index 470402bb1..eed3ec80e 100644
--- a/tex/context/base/lang-cyr.mkii
+++ b/tex/context/base/lang-cyr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cyrillic Languages,
%D author=see below,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-def.mkiv b/tex/context/base/lang-def.mkiv
index 359006fef..b720a1813 100644
--- a/tex/context/base/lang-def.mkiv
+++ b/tex/context/base/lang-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Languages Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-dis.mkii b/tex/context/base/lang-dis.mkii
index f081bf4a9..213c5110f 100644
--- a/tex/context/base/lang-dis.mkii
+++ b/tex/context/base/lang-dis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Distribution Patterns,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-frd.mkii b/tex/context/base/lang-frd.mkii
index 6cc27080b..be4e07b75 100644
--- a/tex/context/base/lang-frd.mkii
+++ b/tex/context/base/lang-frd.mkii
@@ -5,7 +5,7 @@
%D subtitle=Language Frequency Table Data,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-frq.mkii b/tex/context/base/lang-frq.mkii
index 773230e6c..afeb5329c 100644
--- a/tex/context/base/lang-frq.mkii
+++ b/tex/context/base/lang-frq.mkii
@@ -5,7 +5,7 @@
%D subtitle=Frequency Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ger.mkii b/tex/context/base/lang-ger.mkii
index 04551a891..d33620cc7 100644
--- a/tex/context/base/lang-ger.mkii
+++ b/tex/context/base/lang-ger.mkii
@@ -5,7 +5,7 @@
%D subtitle=Germanic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-grk.mkii b/tex/context/base/lang-grk.mkii
index 862f3c5f4..9fd59382a 100644
--- a/tex/context/base/lang-grk.mkii
+++ b/tex/context/base/lang-grk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Uralic Languages,
%D author=Apostolos Syropoulos
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ind.mkii b/tex/context/base/lang-ind.mkii
index 9b6e5ff1d..bb33dacfd 100644
--- a/tex/context/base/lang-ind.mkii
+++ b/tex/context/base/lang-ind.mkii
@@ -5,7 +5,7 @@
%D subtitle=Indo Iranian Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ini.mkii b/tex/context/base/lang-ini.mkii
index 50a3689cf..6ad6f02e3 100644
--- a/tex/context/base/lang-ini.mkii
+++ b/tex/context/base/lang-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ini.mkiv b/tex/context/base/lang-ini.mkiv
index 5dccab4dc..6504b82b8 100644
--- a/tex/context/base/lang-ini.mkiv
+++ b/tex/context/base/lang-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ita.mkii b/tex/context/base/lang-ita.mkii
index 03efb0614..04acf3265 100644
--- a/tex/context/base/lang-ita.mkii
+++ b/tex/context/base/lang-ita.mkii
@@ -5,7 +5,7 @@
%D subtitle=Italic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-jap.mkii b/tex/context/base/lang-jap.mkii
index 05c9b1d41..1417e8ec5 100644
--- a/tex/context/base/lang-jap.mkii
+++ b/tex/context/base/lang-jap.mkii
@@ -5,7 +5,7 @@
%D subtitle=Japanese,
%D author={Richard Gabriel},
%D date=\currentdate,
-%D copyright={PRAGMA / RG}]
+%D copyright={Richard Gabriel \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-lab.mkii b/tex/context/base/lang-lab.mkii
index 269ac249b..1ff964615 100644
--- a/tex/context/base/lang-lab.mkii
+++ b/tex/context/base/lang-lab.mkii
@@ -5,7 +5,7 @@
%D subtitle=Labels,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-lab.mkiv b/tex/context/base/lang-lab.mkiv
index 025958ade..ea845450e 100644
--- a/tex/context/base/lang-lab.mkiv
+++ b/tex/context/base/lang-lab.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Labels,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -85,18 +85,6 @@
\def#4{\reallanguagetag{\defaultlanguage\currentmainlanguage}}%
\ifnum#2=\plustwo
\def#3{#5#4}%
-% \def#5##1##2% ##1=language
-% {\ifcsname\??ml:#1:##1:##2\endcsname
-% \csname\??ml:#1:##1:##2\endcsname
-% \else\ifcsname\??la#4\s!default\endcsname
-% \expandafter#5\csname\??la#4\s!default\endcsname{##2}%
-% \else\ifcsname\??ml:#1:##2\endcsname
-% \csname\??ml:#1:##2\endcsname
-% \else\ifcsname\??ml:#1:\s!en:##2\endcsname
-% \csname\??ml:#1:\s!en:##2\endcsname
-% \else
-% ##2%
-% \fi\fi\fi\fi}%
\def#5##1##2% ##1=language
{\ifcsname\??ml:\currentlabelcategory#1:##1:##2\endcsname
\csname\??ml:\currentlabelcategory#1:##1:##2\endcsname
diff --git a/tex/context/base/lang-mis.mkii b/tex/context/base/lang-mis.mkii
index eb7bb1a04..3923df3e8 100644
--- a/tex/context/base/lang-mis.mkii
+++ b/tex/context/base/lang-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Compounds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-mis.mkiv b/tex/context/base/lang-mis.mkiv
index 231697c7e..610624f97 100644
--- a/tex/context/base/lang-mis.mkiv
+++ b/tex/context/base/lang-mis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Compounds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-run.mkii b/tex/context/base/lang-run.mkii
index 4b332cfb9..320ee8dab 100644
--- a/tex/context/base/lang-run.mkii
+++ b/tex/context/base/lang-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-sla.mkii b/tex/context/base/lang-sla.mkii
index 2834b652f..81f9a9bf7 100644
--- a/tex/context/base/lang-sla.mkii
+++ b/tex/context/base/lang-sla.mkii
@@ -5,7 +5,7 @@
%D subtitle=Slavic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-spa.mkii b/tex/context/base/lang-spa.mkii
index f6e22aa51..313e5f3e6 100644
--- a/tex/context/base/lang-spa.mkii
+++ b/tex/context/base/lang-spa.mkii
@@ -5,7 +5,7 @@
%D subtitle=Spacing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-spa.mkiv b/tex/context/base/lang-spa.mkiv
index 2cc88b84f..e7cb0025f 100644
--- a/tex/context/base/lang-spa.mkiv
+++ b/tex/context/base/lang-spa.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Spacing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-spe.mkii b/tex/context/base/lang-spe.mkii
index 7911b0c95..11c57af3f 100644
--- a/tex/context/base/lang-spe.mkii
+++ b/tex/context/base/lang-spe.mkii
@@ -5,7 +5,7 @@
%D subtitle=Specifics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-ura.mkii b/tex/context/base/lang-ura.mkii
index a2bcd3d2b..21bc8d94a 100644
--- a/tex/context/base/lang-ura.mkii
+++ b/tex/context/base/lang-ura.mkii
@@ -5,7 +5,7 @@
%D subtitle=Uralic Languages,
%D author=Hans Hagen / Tobias Burnus,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-url.mkii b/tex/context/base/lang-url.mkii
index fdf530b45..1f340ffb0 100644
--- a/tex/context/base/lang-url.mkii
+++ b/tex/context/base/lang-url.mkii
@@ -5,7 +5,7 @@
%D subtitle=Language Options,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-url.mkiv b/tex/context/base/lang-url.mkiv
index cba013324..d34b33bd5 100644
--- a/tex/context/base/lang-url.mkiv
+++ b/tex/context/base/lang-url.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Language Options,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-vn.mkii b/tex/context/base/lang-vn.mkii
index 27d2a48a1..e564d989c 100644
--- a/tex/context/base/lang-vn.mkii
+++ b/tex/context/base/lang-vn.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vietnamese,
%D author={Han The Thanh \& Adam Lindsay \& Hans Hagen},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lang-wrd.mkiv b/tex/context/base/lang-wrd.mkiv
index 22c234d0c..2fda3b344 100644
--- a/tex/context/base/lang-wrd.mkiv
+++ b/tex/context/base/lang-wrd.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Checking,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/layo-ini.mkiv b/tex/context/base/layo-ini.mkiv
index 463612978..9097265c9 100644
--- a/tex/context/base/layo-ini.mkiv
+++ b/tex/context/base/layo-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lpdf-ano.lua b/tex/context/base/lpdf-ano.lua
index 9f452c34d..a133c24d7 100644
--- a/tex/context/base/lpdf-ano.lua
+++ b/tex/context/base/lpdf-ano.lua
@@ -52,7 +52,6 @@ local pdfunicode = lpdf.unicode
local pdfconstant = lpdf.constant
local pdfflushobject = lpdf.flushobject
local pdfshareobjectreference = lpdf.shareobjectreference
-local pdfimmediateobject = lpdf.immediateobject
local pdfreserveobject = lpdf.reserveobject
local pdfpagereference = lpdf.pagereference
local pdfdelayedobject = lpdf.delayedobject
@@ -245,7 +244,7 @@ local function use_normal_annotations()
end
--- evenrually we can do this for special refs only
+-- eventually we can do this for special refs only
local hashed, nofunique, nofused = { }, 0, 0
diff --git a/tex/context/base/lpdf-col.lua b/tex/context/base/lpdf-col.lua
index dc40e555c..6aa412d6a 100644
--- a/tex/context/base/lpdf-col.lua
+++ b/tex/context/base/lpdf-col.lua
@@ -6,10 +6,29 @@ if not modules then modules = { } end modules ['lpdf-mis'] = {
license = "see context related readme files"
}
-local type = type
-local format, gsub = string.format, string.gsub
+local type, next, tostring = type, next, tostring
+local char, byte, format, gsub, rep, gmatch = string.char, string.byte, string.format, string.gsub, string.rep, string.gmatch
+local concat = table.concat
+local round = math.round
-local backends, lpdf = backends, lpdf
+local backends, lpdf, nodes = backends, lpdf, nodes
+
+local nodeinjections = backends.pdf.nodeinjections
+local codeinjections = backends.pdf.codeinjections
+local registrations = backends.pdf.registrations
+
+local nodepool = nodes.pool
+local register = nodepool.register
+local pdfliteral = nodepool.pdfliteral
+
+local pdfconstant = lpdf.constant
+local pdfstring = lpdf.string
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local pdfreference = lpdf.reference
+local pdfverbose = lpdf.verbose
+local pdfflushobject = lpdf.flushobject
+local pdfflushstreamobject = lpdf.flushstreamobject
local colors = attributes.colors
local transparencies = attributes.transparencies
@@ -19,6 +38,361 @@ local colorsvalue = colors.value
local transparenciesvalue = transparencies.value
local forcedmodel = colors.forcedmodel
+-- injection code (needs a bit reordering)
+
+-- color injection
+
+function nodeinjections.rgbcolor(r,g,b)
+ return register(pdfliteral(format("%s %s %s rg %s %s %s RG",r,g,b,r,g,b)))
+end
+
+function nodeinjections.cmykcolor(c,m,y,k)
+ return register(pdfliteral(format("%s %s %s %s k %s %s %s %s K",c,m,y,k,c,m,y,k)))
+end
+
+function nodeinjections.graycolor(s) -- caching 0/1 does not pay off
+ return register(pdfliteral(format("%s g %s G",s,s)))
+end
+
+function nodeinjections.spotcolor(n,f,d,p)
+ if type(p) == "string" then
+ p = gsub(p,","," ") -- brr misuse of spot
+ end
+ return register(pdfliteral(format("/%s cs /%s CS %s SCN %s scn",n,n,p,p)))
+end
+
+function nodeinjections.transparency(n)
+ return register(pdfliteral(format("/Tr%s gs",n)))
+end
+
+-- a bit weird but let's keep it here for a while
+
+local effects = {
+ normal = 0,
+ inner = 0,
+ outer = 1,
+ both = 2,
+ hidden = 3,
+}
+
+local bp = number.dimenfactors.bp
+
+function nodeinjections.effect(effect,stretch,rulethickness)
+ -- always, no zero test (removed)
+ rulethickness = bp * rulethickness
+ effect = effects[effect] or effects['normal']
+ return register(pdfliteral(format("%s Tc %s w %s Tr",stretch,rulethickness,effect))) -- watch order
+end
+
+-- spot- and indexcolors
+
+local pdf_separation = pdfconstant("Separation")
+local pdf_indexed = pdfconstant("Indexed")
+local pdf_device_n = pdfconstant("DeviceN")
+local pdf_device_rgb = pdfconstant("DeviceRGB")
+local pdf_device_cmyk = pdfconstant("DeviceCMYK")
+local pdf_device_gray = pdfconstant("DeviceGray")
+local pdf_extgstate = pdfconstant("ExtGState")
+
+local pdf_rbg_range = pdfarray { 0, 1, 0, 1, 0, 1 }
+local pdf_cmyk_range = pdfarray { 0, 1, 0, 1, 0, 1, 0, 1 }
+local pdf_gray_range = pdfarray { 0, 1 }
+
+local rgb_function = "dup %s mul exch dup %s mul exch %s mul"
+local cmyk_function = "dup %s mul exch dup %s mul exch dup %s mul exch %s mul"
+local gray_function = "%s mul"
+
+local documentcolorspaces = pdfdictionary()
+
+local spotcolorhash = { } -- not needed
+local spotcolornames = { }
+local indexcolorhash = { }
+local delayedindexcolors = { }
+
+function registrations.spotcolorname(name,e)
+ spotcolornames[name] = e or name
+end
+
+function registrations.getspotcolorreference(name)
+ return spotcolorhash[name]
+end
+
+-- beware: xpdf/okular/evince cannot handle the spot->process shade
+
+-- This should become delayed i.e. only flush when used; in that case we need
+-- need to store the specification and then flush them when accesssomespotcolor
+-- is called. At this moment we assume that splotcolors that get defined are
+-- also used which keeps the overhad small anyway.
+
+local processcolors
+
+local function registersomespotcolor(name,noffractions,names,p,colorspace,range,funct)
+ noffractions = tonumber(noffractions) or 1 -- to be checked
+ if noffractions == 0 then
+ -- can't happen
+ elseif noffractions == 1 then
+ local dictionary = pdfdictionary {
+ FunctionType = 4,
+ Domain = { 0, 1 },
+ Range = range,
+ }
+ local calculations = pdfflushstreamobject(format("{ %s }",funct),dictionary)
+ -- local calculations = pdfobject {
+ -- type = "stream",
+ -- immediate = true,
+ -- string = format("{ %s }",funct),
+ -- attr = dictionary(),
+ -- }
+ local array = pdfarray {
+ pdf_separation,
+ pdfconstant(spotcolornames[name] or name),
+ colorspace,
+ pdfreference(calculations),
+ }
+ local m = pdfflushobject(array)
+ local mr = pdfreference(m)
+ spotcolorhash[name] = m
+ documentcolorspaces[name] = mr
+ lpdf.adddocumentcolorspace(name,mr)
+ else
+ local cnames = pdfarray()
+ local domain = pdfarray()
+ local colorants = pdfdictionary()
+ for n in gmatch(names,"[^,]+") do
+ local name = spotcolornames[n] or n
+ if n == "cyan" then
+ name = "Cyan"
+ elseif n == "magenta" then
+ name = "Magenta"
+ elseif n == "yellow" then
+ name = "Yellow"
+ elseif n == "black" then
+ name = "Black"
+ else
+ colorants[name] = pdfreference(spotcolorhash[name] or spotcolorhash[n])
+ end
+ cnames[#cnames+1] = pdfconstant(name)
+ domain[#domain+1] = 0
+ domain[#domain+1] = 1
+ end
+ if not processcolors then
+ local specification = pdfdictionary {
+ ColorSpace = pdfconstant("DeviceCMYK"),
+ Components = pdfarray {
+ pdfconstant("Cyan"),
+ pdfconstant("Magenta"),
+ pdfconstant("Yellow"),
+ pdfconstant("Black")
+ }
+ }
+ processcolors = pdfreference(pdfflushobject(specification))
+ end
+ local dictionary = pdfdictionary {
+ FunctionType = 4,
+ Domain = domain,
+ Range = range,
+ }
+ local calculation = pdfflushstreamobject(format("{ %s %s }",rep("pop ",noffractions),funct),dictionary)
+ local channels = pdfdictionary {
+ Subtype = pdfconstant("NChannel"),
+ Colorants = colorants,
+ Process = processcolors,
+ }
+ local array = pdfarray {
+ pdf_device_n,
+ cnames,
+ colorspace,
+ pdfreference(calculation),
+ lpdf.shareobjectreference(tostring(channels)), -- optional but needed for shades
+ }
+ local m = pdfflushobject(array)
+ local mr = pdfreference(m)
+ spotcolorhash[name] = m
+ documentcolorspaces[name] = mr
+ lpdf.adddocumentcolorspace(name,mr)
+ end
+end
+
+-- wrong name
+
+local function registersomeindexcolor(name,noffractions,names,p,colorspace,range,funct)
+ noffractions = tonumber(noffractions) or 1 -- to be checked
+ local cnames = pdfarray()
+ local domain = pdfarray()
+ if names == "" then
+ names = name .. ",None"
+ else
+ names = names .. ",None"
+ end
+ for n in gmatch(names,"[^,]+") do
+ cnames[#cnames+1] = pdfconstant(spotcolornames[n] or n)
+ domain[#domain+1] = 0
+ domain[#domain+1] = 1
+ end
+ local dictionary = pdfdictionary {
+ FunctionType = 4,
+ Domain = domain,
+ Range = range,
+ }
+ local n = pdfflushstreamobject(format("{ %s %s }",rep("exch pop ",noffractions),funct),dictionary) -- exch pop
+ local a = pdfarray {
+ pdf_device_n,
+ cnames,
+ colorspace,
+ pdfreference(n),
+ }
+ if p == "" then
+ p = "1"
+ else
+ p = p .. ",1"
+ end
+ local pi = { }
+ for pp in gmatch(p,"[^,]+") do
+ pi[#pi+1] = tonumber(pp)
+ end
+ local vector, set, n = { }, { }, #pi
+ for i=255,0,-1 do
+ for j=1,n do
+ set[j] = format("%02X",round(pi[j]*i))
+ end
+ vector[#vector+1] = concat(set)
+ end
+ vector = pdfverbose { "<", concat(vector, " "), ">" }
+ local n = pdfflushobject(pdfarray{ pdf_indexed, a, 255, vector })
+ lpdf.adddocumentcolorspace(format("%s_indexed",name),pdfreference(n))
+ return n
+end
+
+-- actually, names (parent) is the hash
+
+local function delayindexcolor(name,names,func)
+ local hash = (names ~= "" and names) or name
+ delayedindexcolors[hash] = func
+end
+
+local function indexcolorref(name) -- actually, names (parent) is the hash
+ if not indexcolorhash[name] then
+ local delayedindexcolor = delayedindexcolors[name]
+ if type(delayedindexcolor) == "function" then
+ indexcolorhash[name] = delayedindexcolor()
+ delayedindexcolors[name] = true
+ end
+ end
+ return indexcolorhash[name]
+end
+
+function registrations.rgbspotcolor(name,noffractions,names,p,r,g,b)
+ if noffractions == 1 then
+ registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format(rgb_function,r,g,b))
+ else
+ registersomespotcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rbg_range,format("%s %s %s",r,g,b))
+ end
+ delayindexcolor(name,names,function()
+ return registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b))
+ end)
+end
+
+function registrations.cmykspotcolor(name,noffractions,names,p,c,m,y,k)
+ if noffractions == 1 then
+ registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
+ else
+ registersomespotcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format("%s %s %s %s",c,m,y,k))
+ end
+ delayindexcolor(name,names,function()
+ return registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
+ end)
+end
+
+function registrations.grayspotcolor(name,noffractions,names,p,s)
+ if noffractions == 1 then
+ registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s))
+ else
+ registersomespotcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,s)
+ end
+ delayindexcolor(name,names,function()
+ return registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,format(gray_function,s))
+ end)
+end
+
+function registrations.rgbindexcolor(name,noffractions,names,p,r,g,b)
+ registersomeindexcolor(name,noffractions,names,p,pdf_device_rgb,pdf_rgb_range,format(rgb_function,r,g,b))
+end
+
+function registrations.cmykindexcolor(name,noffractions,names,p,c,m,y,k)
+ registersomeindexcolor(name,noffractions,names,p,pdf_device_cmyk,pdf_cmyk_range,format(cmyk_function,c,m,y,k))
+end
+
+function registrations.grayindexcolor(name,noffractions,names,p,s)
+ registersomeindexcolor(name,noffractions,names,p,pdf_device_gray,pdf_gray_range,gray_function)
+end
+
+function codeinjections.setfigurecolorspace(data,figure)
+ local color = data.request.color
+ if color then
+ local ref = indexcolorref(color)
+ if ref then
+ figure.colorspace = ref
+ data.used.color = color
+ end
+ end
+end
+
+-- transparency
+
+local transparencies = { [0] =
+ pdfconstant("Normal"),
+ pdfconstant("Normal"),
+ pdfconstant("Multiply"),
+ pdfconstant("Screen"),
+ pdfconstant("Overlay"),
+ pdfconstant("SoftLight"),
+ pdfconstant("HardLight"),
+ pdfconstant("ColorDodge"),
+ pdfconstant("ColorBurn"),
+ pdfconstant("Darken"),
+ pdfconstant("Lighten"),
+ pdfconstant("Difference"),
+ pdfconstant("Exclusion"),
+ pdfconstant("Compatible"),
+}
+
+local documenttransparencies = { }
+local transparencyhash = { } -- share objects
+
+local done = false
+
+function registrations.transparency(n,a,t)
+ if not done then
+ local d = pdfdictionary {
+ Type = pdf_extgstate,
+ ca = 1,
+ CA = 1,
+ BM = transparencies[1],
+ AIS = false,
+ }
+ local m = pdfflushobject(d)
+ local mr = pdfreference(m)
+ transparencyhash[0] = m
+ documenttransparencies[0] = mr
+ lpdf.adddocumentextgstate("Tr0",mr)
+ done = true
+ end
+ if n > 0 and not transparencyhash[n] then
+ local d = pdfdictionary {
+ Type = pdf_extgstate,
+ ca = tonumber(t),
+ CA = tonumber(t),
+ BM = transparencies[tonumber(a)] or transparencies[0],
+ AIS = false,
+ }
+ local m = pdfflushobject(d)
+ local mr = pdfreference(m)
+ transparencyhash[n] = m
+ documenttransparencies[n] = mr
+ lpdf.adddocumentextgstate(format("Tr%s",n),mr)
+ end
+end
+
-- Literals needed to inject code in the mp stream, we cannot use attributes there
-- since literals may have qQ's, much may go away once we have mplib code in place.
--
@@ -59,6 +433,29 @@ end
lpdf.color = lpdfcolor
+function lpdf.colorspec(model,ca,default)
+ if ca and ca > 0 then
+ local cv = colors.value(ca)
+ if cv then
+ if model == 1 then
+ model = cv[1]
+ end
+ if model == 2 then
+ return pdfarray { cv[2] }
+ elseif model == 3 then
+ return pdfarray { cv[3],cv[4],cv[5] }
+ elseif model == 4 then
+ return pdfarray { cv[6],cv[7],cv[8],cv[9] }
+ elseif model == 5 then
+ return pdfarray { cv[13] }
+ end
+ end
+ end
+ if default then
+ return default
+ end
+end
+
function lpdf.pdfcolor(attribute) -- bonus, for pgf and friends
context(lpdfcolor(1,attribute))
end
@@ -214,6 +611,7 @@ function lpdf.transparencycode(a,t)
return ""
end
end
+
function lpdf.finishtransparencycode()
if transparencies.supported and intransparency then
intransparency = false
diff --git a/tex/context/base/lpdf-fld.lua b/tex/context/base/lpdf-fld.lua
index 590aee1ab..f24e39e1a 100644
--- a/tex/context/base/lpdf-fld.lua
+++ b/tex/context/base/lpdf-fld.lua
@@ -53,7 +53,6 @@ local pdfstring = lpdf.string
local pdfconstant = lpdf.constant
local pdftoeight = lpdf.toeight
local pdfflushobject = lpdf.flushobject
-local pdfimmediateobject = lpdf.immediateobject
local pdfshareobjectreference = lpdf.shareobjectreference
local pdfshareobject = lpdf.shareobject
local pdfreserveobject = lpdf.reserveobject
@@ -369,11 +368,19 @@ local function fieldstates(specification,forceyes,values,default)
else
default = pdf_off
end
- local appearance = pdfdictionary { -- maybe also cache components
- N = pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) },
- R = pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) },
- D = pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) }
- }
+ if false then -- needs testing
+ local appearance = pdfdictionary { -- maybe also cache components
+ N = pdfshareobjectreference(pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) }),
+ R = pdfshareobjectreference(pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) }),
+ D = pdfshareobjectreference(pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) }),
+ }
+ else
+ local appearance = pdfdictionary { -- maybe also cache components
+ N = pdfdictionary { [forceyes or yesn] = registeredsymbol(yesn), Off = registeredsymbol(offn) },
+ R = pdfdictionary { [forceyes or yesr] = registeredsymbol(yesr), Off = registeredsymbol(offr) },
+ D = pdfdictionary { [forceyes or yesd] = registeredsymbol(yesd), Off = registeredsymbol(offd) }
+ }
+ end
local appearanceref = pdfshareobjectreference(appearance)
return appearanceref, default, yesvalue
end
diff --git a/tex/context/base/lpdf-fmt.lua b/tex/context/base/lpdf-fmt.lua
index 017e28ebb..29f2ef5a0 100644
--- a/tex/context/base/lpdf-fmt.lua
+++ b/tex/context/base/lpdf-fmt.lua
@@ -10,6 +10,9 @@ if not modules then modules = { } end modules ['lpdf-fmt'] = {
-- context --directives="backend.format=PDF/X-1a:2001" --trackers=backend.format yourfile
+local lower, gmatch, format, find = string.lower, string.gmatch, string.format, string.find
+local concat, serialize = table.concat, table.serialize
+
local trace_format = false trackers.register("backend.format", function(v) trace_format = v end)
local trace_variables = false trackers.register("backend.variables", function(v) trace_variables = v end)
@@ -17,27 +20,28 @@ local report_backend = logs.reporter("backend","profiles")
local backends, lpdf = backends, lpdf
-local codeinjections = backends.pdf.codeinjections
+local codeinjections = backends.pdf.codeinjections
-local variables = interfaces.variables
-local viewerlayers = attributes.viewerlayers
-local colors = attributes.colors
-local transparencies = attributes.transparencies
+local variables = interfaces.variables
+local viewerlayers = attributes.viewerlayers
+local colors = attributes.colors
+local transparencies = attributes.transparencies
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfconstant = lpdf.constant
-local pdfreference = lpdf.reference
-local pdfflushobject = lpdf.flushobject
-local pdfstring = lpdf.string
-local pdfverbose = lpdf.verbose
-local pdfobject = lpdf.object
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local pdfconstant = lpdf.constant
+local pdfreference = lpdf.reference
+local pdfflushobject = lpdf.flushobject
+local pdfstring = lpdf.string
+local pdfverbose = lpdf.verbose
+local pdfflushstreamfileobject = lpdf.flushstreamfileobject
-local addtoinfo, injectxmpinfo, insertxmpinfo = lpdf.addtoinfo, lpdf.injectxmpinfo, lpdf.insertxmpinfo
+local addtoinfo = lpdf.addtoinfo
+local injectxmpinfo = lpdf.injectxmpinfo
+local insertxmpinfo = lpdf.insertxmpinfo
-local lower, gmatch, format, find = string.lower, string.gmatch, string.format, string.find
-local concat, serialize = table.concat, table.serialize
-local settings_to_array, settings_to_hash = utilities.parsers.settings_to_array, utilities.parsers.settings_to_hash
+local settings_to_array = utilities.parsers.settings_to_array
+local settings_to_hash = utilities.parsers.settings_to_hash
--[[
Comments by Peter:
@@ -434,14 +438,7 @@ local function handleinternalprofile(s,include)
elseif not channel then
report_backend("error, couldn't resolve channel entry for colorspace '%s'",colorspace)
else
- local a = pdfdictionary { N = channel }
- profile = pdfobject { -- does a flush too
- compresslevel = 0,
- immediate = true, -- !
- type = "stream",
- file = fullname,
- attr = a(),
- }
+ profile = pdfflushstreamfileobject(fullname,{ N = channel },false) -- uncompressed
internalprofiles[tag] = profile
if trace_format then
report_backend("including '%s' color profile from '%s'",colorspace,fullname)
diff --git a/tex/context/base/lpdf-grp.lua b/tex/context/base/lpdf-grp.lua
index 2f7684a4d..5ea0442b6 100644
--- a/tex/context/base/lpdf-grp.lua
+++ b/tex/context/base/lpdf-grp.lua
@@ -6,7 +6,9 @@ if not modules then modules = { } end modules ['lpdf-grp'] = {
license = "see context related readme files"
}
-local format = string.format
+local format, gsub = string.format, string.gsub
+local concat = table.concat
+local round = math.round
local backends, lpdf = backends, lpdf
@@ -61,29 +63,6 @@ function lpdf.linearshade(name,domain,color_a,color_b,n,colorspace,coordinates,s
shade(2,name,domain,color_a,color_b,n,colorspace,coordinates,separation)
end
-function lpdf.colorspec(model,ca,default)
- if ca and ca > 0 then
- local cv = colors.value(ca)
- if cv then
- if model == 1 then
- model = cv[1]
- end
- if model == 2 then
- return pdfarray { cv[2] }
- elseif model == 3 then
- return pdfarray { cv[3],cv[4],cv[5] }
- elseif model == 4 then
- return pdfarray { cv[6],cv[7],cv[8],cv[9] }
- elseif model == 5 then
- return pdfarray { cv[13] }
- end
- end
- end
- if default then
- return default
- end
-end
-
-- inline bitmaps but xform'd
--
-- we could derive the colorspace if we strip the data
@@ -101,7 +80,7 @@ function nodeinjections.injectbitmap(t)
local colorspace = t.colorspace
if colorspace ~= "rgb" and colorspace ~= "cmyk" and colorspace ~= "gray" then
-- not that efficient but ok
- local d = string.gsub(t.data,"[^0-9a-f]","")
+ local d = gsub(t.data,"[^0-9a-f]","")
local b = math.round(#d / (xresolution * yresolution))
if b == 2 then
colorspace = "gray"
@@ -148,3 +127,120 @@ function nodeinjections.injectbitmap(t)
}
return img.node(image)
end
+
+-- general graphic helpers
+
+function codeinjections.setfigurealternative(data,figure)
+ local request = data.request
+ local display = request.display
+ if display and display ~= "" then
+ local nested = figures.push {
+ name = display,
+ page = request.page,
+ size = request.size,
+ prefix = request.prefix,
+ cache = request.cache,
+ width = request.width,
+ height = request.height,
+ }
+ figures.identify()
+ local displayfigure = figures.check()
+ if displayfigure then
+ -- figure.aform = true
+ img.immediatewrite(figure)
+ local a = pdfarray {
+ pdfdictionary {
+ Image = pdfreference(figure.objnum),
+ DefaultForPrinting = true,
+ }
+ }
+ local d = pdfdictionary {
+ Alternates = pdfreference(pdfflushobject(a)),
+ }
+ displayfigure.attr = d()
+ figures.pop()
+ return displayfigure, nested
+ else
+ figures.pop()
+ end
+ end
+end
+
+function codeinjections.getpreviewfigure(request)
+ local figure = figures.initialize(request)
+ if not figure then
+ return
+ end
+ figure = figures.identify(figure)
+ if not figure then
+ return
+ end
+ figure = figures.check(figure)
+ if not figure then
+ return
+ end
+ local image = figure.status.private
+ if image then
+ img.immediatewrite(image)
+ end
+ return figure
+end
+
+function codeinjections.setfiguremask(data,figure) -- mark
+ local request = data.request
+ local mask = request.mask
+ if mask and mask ~= "" then
+ figures.push {
+ name = mask,
+ page = request.page,
+ size = request.size,
+ prefix = request.prefix,
+ cache = request.cache,
+ width = request.width,
+ height = request.height,
+ }
+ figures.identify()
+ local maskfigure = figures.check()
+ if maskfigure then
+ local image = maskfigure.status.private
+ if image then
+ img.immediatewrite(image)
+ local d = pdfdictionary {
+ Interpolate = false,
+ SMask = pdfreference(image.objnum),
+ }
+ figure.attr = d()
+ end
+ end
+ figures.pop()
+ end
+end
+
+-- temp hack
+
+local factor = number.dimenfactors.bp
+
+function img.package(image) -- see lpdf-u3d **
+ local boundingbox = image.bbox
+ local imagetag = "Im" .. image.index
+ local resources = pdfdictionary {
+ ProcSet = pdfarray {
+ pdfconstant("PDF"),
+ pdfconstant("ImageC")
+ },
+ Resources = pdfdictionary {
+ XObject = pdfdictionary {
+ [imagetag] = pdfreference(image.objnum)
+ }
+ }
+ }
+ local width = boundingbox[3]
+ local height = boundingbox[4]
+ local xform = img.scan {
+ attr = resources(),
+ stream = format("%s 0 0 %s 0 0 cm /%s Do",width,height,imagetag),
+ bbox = { 0, 0, width/factor, height/factor },
+ }
+ img.immediatewrite(xform)
+ return xform
+end
diff --git a/tex/context/base/lpdf-ini.lua b/tex/context/base/lpdf-ini.lua
index 74ecb36de..e22e33b4d 100644
--- a/tex/context/base/lpdf-ini.lua
+++ b/tex/context/base/lpdf-ini.lua
@@ -13,14 +13,13 @@ local texset = tex.set
local sind, cosd = math.sind, math.cosd
local lpegmatch = lpeg.match
---~ local pdfreserveobject = pdf and pdf.reserveobj or function() return 1 end -- for testing
---~ local pdfimmediateobject = pdf and pdf.immediateobj or function() return 2 end -- for testing
-
local pdfreserveobject = pdf.reserveobj
local pdfimmediateobject = pdf.immediateobj
local pdfdeferredobject = pdf.obj
local pdfreferenceobject = pdf.refobj
+local pdfobject = pdf.obj
+
local trace_finalizers = false trackers.register("backend.finalizers", function(v) trace_finalizers = v end)
local trace_resources = false trackers.register("backend.resources", function(v) trace_resources = v end)
local trace_objects = false trackers.register("backend.objects", function(v) trace_objects = v end)
@@ -374,14 +373,15 @@ function lpdf.reserveannotation()
return pdfreserveobject("annot")
end
-lpdf.immediateobject = pdfimmediateobject
-lpdf.object = pdfdeferredobject -- the table interface, todo: auto attr() and so
-lpdf.deferredobject = pdfdeferredobject
-lpdf.referenceobject = pdfreferenceobject
+-- lpdf.immediateobject = pdfimmediateobject
+-- lpdf.deferredobject = pdfdeferredobject
+-- lpdf.object = pdfdeferredobject
+-- lpdf.referenceobject = pdfreferenceobject
+
lpdf.pagereference = pdf.pageref or tex.pdfpageref
lpdf.registerannotation = pdf.registerannot
-function lpdf.delayedobject(data)
+function lpdf.delayedobject(data) -- we will get rid of this one
local n = pdfdeferredobject(data)
pdfreferenceobject(n)
return n
@@ -415,6 +415,35 @@ function lpdf.flushobject(name,data)
end
end
+
+function lpdf.flushstreamobject(data,dict,compressed) -- default compressed
+ if trace_objects then
+ report_objects("flushing stream object of %s bytes",#data)
+ end
+ local dtype = type(dict)
+ return pdfobject {
+ immediate = true,
+ compresslevel = compressed == false and 0 or nil,
+ type = "stream",
+ string = data,
+ attr = (dtype == "string" and dict) or (dtype == "table" and dict()) or nil,
+ }
+end
+
+function lpdf.flushstreamfileobject(filename,dict,compressed) -- default compressed
+ if trace_objects then
+ report_objects("flushing stream file object '%s'",filename)
+ end
+ local dtype = type(dict)
+ return pdfobject {
+ immediate = true,
+ compresslevel = compressed == false and 0 or nil,
+ type = "stream",
+ file = filename,
+ attr = (dtype == "string" and dict) or (dtype == "table" and dict()) or nil,
+ }
+end
+
local shareobjectcache, shareobjectreferencecache = { }, { }
function lpdf.shareobject(content)
diff --git a/tex/context/base/lpdf-mis.lua b/tex/context/base/lpdf-mis.lua
index 426c00286..024127a4c 100644
--- a/tex/context/base/lpdf-mis.lua
+++ b/tex/context/base/lpdf-mis.lua
@@ -21,35 +21,33 @@ local texset = tex.set
local backends, lpdf, nodes = backends, lpdf, nodes
-local nodeinjections = backends.pdf.nodeinjections
-local codeinjections = backends.pdf.codeinjections
-local registrations = backends.pdf.registrations
-
-local copy_node = node.copy
-
-local nodepool = nodes.pool
-
-local pdfliteral, register = nodepool.pdfliteral, nodepool.register
-
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfboolean = lpdf.boolean
-local pdfconstant = lpdf.constant
-local pdfreference = lpdf.reference
-local pdfunicode = lpdf.unicode
-local pdfverbose = lpdf.verbose
-local pdfstring = lpdf.string
-local pdfflushobject = lpdf.flushobject
-local pdfimmediateobject = lpdf.immediateobject
-
-local variables = interfaces.variables
-
---
-
-local positive = register(pdfliteral("/GSpositive gs"))
-local negative = register(pdfliteral("/GSnegative gs"))
-local overprint = register(pdfliteral("/GSoverprint gs"))
-local knockout = register(pdfliteral("/GSknockout gs"))
+local nodeinjections = backends.pdf.nodeinjections
+local codeinjections = backends.pdf.codeinjections
+local registrations = backends.pdf.registrations
+
+local copy_node = node.copy
+
+local nodepool = nodes.pool
+local pdfliteral = nodepool.pdfliteral
+local register = nodepool.register
+
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local pdfboolean = lpdf.boolean
+local pdfconstant = lpdf.constant
+local pdfreference = lpdf.reference
+local pdfunicode = lpdf.unicode
+local pdfverbose = lpdf.verbose
+local pdfstring = lpdf.string
+local pdfflushobject = lpdf.flushobject
+local pdfflushstreamobject = lpdf.flushstreamobject
+
+local variables = interfaces.variables
+
+local positive = register(pdfliteral("/GSpositive gs"))
+local negative = register(pdfliteral("/GSnegative gs"))
+local overprint = register(pdfliteral("/GSoverprint gs"))
+local knockout = register(pdfliteral("/GSknockout gs"))
local function initializenegative()
local a = pdfarray { 0, 1 }
@@ -59,7 +57,7 @@ local function initializenegative()
Range = a,
Domain = a,
}
- local negative = pdfdictionary { Type = g, TR = pdfreference(pdfimmediateobject("stream","1 exch sub",d())) }
+ local negative = pdfdictionary { Type = g, TR = pdfreference(pdfflushstreamobject("1 exch sub",d)) }
local positive = pdfdictionary { Type = g, TR = pdfconstant("Identity") }
lpdf.adddocumentextgstate("GSnegative", pdfreference(pdfflushobject(negative)))
lpdf.adddocumentextgstate("GSPositive", pdfreference(pdfflushobject(positive)))
@@ -212,7 +210,7 @@ local function flushjavascripts()
local name, script = t[i][1], t[i][2]
local j = pdfdictionary {
S = pdf_javascript,
- JS = pdfreference(pdfimmediateobject("stream",script)),
+ JS = pdfreference(pdfflushstreamobject(script)),
}
a[#a+1] = pdfstring(name)
a[#a+1] = pdfreference(pdfflushobject(j))
diff --git a/tex/context/base/lpdf-mov.lua b/tex/context/base/lpdf-mov.lua
new file mode 100644
index 000000000..47e2fbb2a
--- /dev/null
+++ b/tex/context/base/lpdf-mov.lua
@@ -0,0 +1,63 @@
+if not modules then modules = { } end modules ['lpdf-mov'] = {
+ version = 1.001,
+ comment = "companion to lpdf-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local format = string.format
+
+local lpdf = lpdf
+
+local nodeinjections = backends.pdf.nodeinjections
+local pdfannotation_node = nodes.pool.pdfannotation
+local pdfconstant = lpdf.constant
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local write_node = node.write
+
+function nodeinjections.insertmovie(specification)
+ -- managed in figure inclusion: width, height, factor, repeat, controls, preview, label, foundname
+ local width = specification.width
+ local height = specification.height
+ local factor = specification.factor or number.dimenfactors.bp
+ local moviedict = pdfdictionary {
+ F = specification.foundname,
+ Aspect = pdfarray { factor * width, factor * height },
+ Poster = (specification.preview and true) or false,
+ }
+ local controldict = pdfdictionary {
+ ShowControls = (specification.controls and true) or false,
+ Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil,
+ }
+ local action = pdfdictionary {
+ Subtype = pdfconstant("Movie"),
+ Border = pdfarray { 0, 0, 0 },
+ T = format("movie %s",specification.label),
+ Movie = moviedict,
+ A = controldict,
+ }
+ write_node(pdfannotation_node(width,height,0,action()))
+end
+
+function nodeinjections.insertsound(specification)
+ -- rmanaged in interaction: repeat, label, foundname
+ local soundclip = interactions.soundclips.soundclip(specification.label)
+ if soundclip then
+ local controldict = pdfdictionary {
+ Mode = (specification["repeat"] and pdfconstant("Repeat")) or nil
+ }
+ local sounddict = pdfdictionary {
+ F = soundclip.filename
+ }
+ local action = pdfdictionary {
+ Subtype = pdfconstant("Movie"),
+ Border = pdfarray { 0, 0, 0 },
+ T = format("sound %s",specification.label),
+ Movie = sounddict,
+ A = controldict,
+ }
+ write_node(pdfannotation_node(0,0,0,action()))
+ end
+end
diff --git a/tex/context/base/lpdf-nod.lua b/tex/context/base/lpdf-nod.lua
index 39bba2d63..184e9cff7 100644
--- a/tex/context/base/lpdf-nod.lua
+++ b/tex/context/base/lpdf-nod.lua
@@ -6,17 +6,17 @@ if not modules then modules = { } end modules ['lpdf-nod'] = {
license = "see context related readme files"
}
-local copy_node, new_node = node.copy, node.new
+local copy_node = node.copy
+local new_node = node.new
-local nodepool = nodes.pool
-
-local register = nodepool.register
+local nodepool = nodes.pool
+local register = nodepool.register
local pdfliteral = register(new_node("whatsit", 8)) pdfliteral.mode = 1
local pdfdest = register(new_node("whatsit",19)) pdfdest.named_id = 1 -- xyz_zoom untouched
local pdfannot = register(new_node("whatsit",15))
-local variables = interfaces.variables
+local variables = interfaces.variables
local views = { -- beware, we do support the pdf keys but this is *not* official
xyz = 0, [variables.standard] = 0,
diff --git a/tex/context/base/lpdf-ren.lua b/tex/context/base/lpdf-ren.lua
index 54c78845e..4221a8e47 100644
--- a/tex/context/base/lpdf-ren.lua
+++ b/tex/context/base/lpdf-ren.lua
@@ -12,7 +12,7 @@ local tostring, tonumber, next = tostring, tonumber, next
local format = string.format
local settings_to_array = utilities.parsers.settings_to_array
-local backends, lpdf = backends, lpdf
+local backends, lpdf, nodes, node = backends, lpdf, nodes, node
local nodeinjections = backends.pdf.nodeinjections
local codeinjections = backends.pdf.codeinjections
@@ -41,6 +41,10 @@ local pdfreference = lpdf.reference
local pdfflushobject = lpdf.flushobject
local pdfreserveobject = lpdf.reserveobject
+local nodepool = nodes.pool
+local register = nodepool.register
+local pdfliteral = nodepool.pdfliteral
+
local pdf_ocg = pdfconstant("OCG")
local pdf_ocmd = pdfconstant("OCMD")
local pdf_off = pdfconstant("OFF")
@@ -48,12 +52,56 @@ local pdf_on = pdfconstant("ON")
local pdf_toggle = pdfconstant("Toggle")
local pdf_setocgstate = pdfconstant("SetOCGState")
+local copy_node = node.copy
+
local lpdf_usage = pdfdictionary { Print = pdfdictionary { PrintState = pdf_off } }
-- We can have references to layers before they are places, for instance from
-- hide and vide actions. This is why we need to be able to force usage of layers
-- at several moments.
+-- injection
+
+local cache = { }
+
+function codeinjections.startlayer(name)
+ codeinjections.useviewerlayer(name)
+ return format("/OC /%s BDC",name)
+end
+
+function codeinjections.stoplayer(name)
+ return "EMC"
+end
+
+function nodeinjections.startlayer(name)
+ local c = cache[name]
+ if not c then
+ codeinjections.useviewerlayer(name)
+ c = register(pdfliteral(format("/OC /%s BDC",name)))
+ cache[name] = c
+ end
+ return copy_node(c)
+end
+
+local stop = register(pdfliteral("EMC"))
+
+function nodeinjections.stoplayer()
+ return copy_node(stop)
+end
+
+local cache = { }
+
+function nodeinjections.switchlayer(name) -- not used, optimization
+ local c = cache[name]
+ if not c then
+ codeinjections.useviewerlayer(name)
+ c = register(pdfliteral(format("EMC /OC /%s BDC",name)))
+ end
+ return copy_node(c)
+end
+
+-- management
+
local pdfln, pdfld = { }, { }
local textlayers, hidelayers, videlayers = pdfarray(), pdfarray(), pdfarray()
local pagelayers, pagelayersreference, cache = nil, nil, { }
diff --git a/tex/context/base/lpdf-swf.lua b/tex/context/base/lpdf-swf.lua
index 04825446c..3825bd44e 100644
--- a/tex/context/base/lpdf-swf.lua
+++ b/tex/context/base/lpdf-swf.lua
@@ -21,7 +21,7 @@ local pdfdictionary = lpdf.dictionary
local pdfarray = lpdf.array
local pdfnull = lpdf.null
local pdfreference = lpdf.reference
-local pdfimmediateobject = lpdf.immediateobject
+local pdfflushobject = lpdf.flushobject
local checkedkey = lpdf.checkedkey
@@ -75,7 +75,7 @@ local function insertswf(spec)
},
}
- local flashreference = pdfreference(pdfimmediateobject(tostring(flash)))
+ local flashreference = pdfreference(pdfflushobject(flash))
local configuration = pdfdictionary {
Configurations = pdfarray { flashreference },
@@ -112,7 +112,7 @@ local function insertswf(spec)
end
end
- local configurationreference = pdfreference(pdfimmediateobject(tostring(configuration)))
+ local configurationreference = pdfreference(pdfflushobject(configuration))
local activation = pdfdictionary {
Type = pdfconstant("RichMediaActivation"),
@@ -165,7 +165,7 @@ local function insertswf(spec)
Deactivation = deactivation,
}
- local settingsreference = pdfreference(pdfimmediateobject(tostring(richmediasettings)))
+ local settingsreference = pdfreference(pdfflushobject(richmediasettings))
local appearance
diff --git a/tex/context/base/lpdf-tag.lua b/tex/context/base/lpdf-tag.lua
index 06f3377bc..0be9d3452 100644
--- a/tex/context/base/lpdf-tag.lua
+++ b/tex/context/base/lpdf-tag.lua
@@ -297,11 +297,14 @@ function nodeinjections.addtags(head)
return head, true
end
+-- this belongs elsewhere (export is not pdf related)
+
function codeinjections.enabletags(tg,lb)
structures.tags.handler = nodeinjections.addtags
tasks.enableaction("shipouts","structures.tags.handler")
tasks.enableaction("shipouts","nodes.handlers.accessibility")
tasks.enableaction("math","noads.handlers.tags")
+ -- maybe also textblock
if trace_tags then
report_tags("enabling structure tags")
end
diff --git a/tex/context/base/lpdf-u3d.lua b/tex/context/base/lpdf-u3d.lua
index f5a2bc2fa..ac6038997 100644
--- a/tex/context/base/lpdf-u3d.lua
+++ b/tex/context/base/lpdf-u3d.lua
@@ -22,22 +22,23 @@ local cos, sin, sqrt, pi, atan2, abs = math.cos, math.sin, math.sqrt, math.pi, m
local backends, lpdf = backends, lpdf
-local nodeinjections = backends.pdf.nodeinjections
+local nodeinjections = backends.pdf.nodeinjections
-local pdfconstant = lpdf.constant
-local pdfboolean = lpdf.boolean
-local pdfnumber = lpdf.number
-local pdfunicode = lpdf.unicode
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfnull = lpdf.null
-local pdfreference = lpdf.reference
-local pdfimmediateobject = lpdf.immediateobject
+local pdfconstant = lpdf.constant
+local pdfboolean = lpdf.boolean
+local pdfnumber = lpdf.number
+local pdfunicode = lpdf.unicode
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local pdfnull = lpdf.null
+local pdfreference = lpdf.reference
+local pdfflushstreamobject = lpdf.flushstreamobject
+local pdfflushstreamfileobject = lpdf.flushstreamfileobject
-local checkedkey = lpdf.checkedkey
-local limited = lpdf.limited
+local checkedkey = lpdf.checkedkey
+local limited = lpdf.limited
-local pdfannotation_node = nodes.pool.pdfannotation
+local pdfannotation_node = nodes.pool.pdfannotation
local schemes = table.tohash {
"Artwork", "None", "White", "Day", "Night", "Hard",
@@ -397,12 +398,12 @@ local function insert3d(spec) -- width, height, factor, display, controls, label
if js then
local jsref = stored_js[js]
if not jsref then
- jsref = pdfimmediateobject("streamfile",js)
+ jsref = pdfflushstreamfileobject(js)
stored_js[js] = jsref
end
attr.OnInstantiate = pdfreference(jsref)
end
- stored_3d[label] = pdfimmediateobject("streamfile",foundname,attr())
+ stored_3d[label] = pdfflushstreamfileobject(foundname,attr)
stream = 1
else
stream = stream + 1
@@ -436,14 +437,10 @@ local function insert3d(spec) -- width, height, factor, display, controls, label
width = width,
height = height
}
- -- local figure = img.immediatewrite {
- -- stream = ".5 .75 .75 rg 0 0 20 10 re f",
- -- bbox = { 0, 0, 20, 10 }
- -- }
ref = figure.objnum
stored_pr[tag] = ref
end
- if ref then
+ if ref then -- see back-pdf ** .. here we have a local /IM !
local zero, one = pdfnumber(0), pdfnumber(1) -- not really needed
local pw = pdfdictionary {
Type = pdfconstant("XObject"),
@@ -465,12 +462,7 @@ local function insert3d(spec) -- width, height, factor, display, controls, label
},
ProcSet = pdfarray { pdfconstant("PDF"), pdfconstant("ImageC") },
}
- local pwd = pdfimmediateobject(
- "stream",
- format("q /GS gs %s 0 0 %s 0 0 cm /IM Do Q",
- factor*width,factor*height),
- pw()
- )
+ local pwd = pdfflushstreamobject(format("q /GS gs %s 0 0 %s 0 0 cm /IM Do Q",factor*width,factor*height),pw)
annot.AP = pdfdictionary {
N = pdfreference(pwd)
}
diff --git a/tex/context/base/lpdf-wid.lua b/tex/context/base/lpdf-wid.lua
index d0247f49a..3aa51c536 100644
--- a/tex/context/base/lpdf-wid.lua
+++ b/tex/context/base/lpdf-wid.lua
@@ -16,43 +16,44 @@ local report_attachment = logs.reporter("backend","attachment")
local backends, lpdf, nodes = backends, lpdf, nodes
-local nodeinjections = backends.pdf.nodeinjections
-local codeinjections = backends.pdf.codeinjections
-local registrations = backends.pdf.registrations
-
-local executers = structures.references.executers
-local variables = interfaces.variables
-
-local v_hidden = variables.hidden
-local v_normal = variables.normal
-local v_auto = variables.auto
-local v_embed = variables.embed
-local v_unknown = variables.unknown
-local v_max = variables.max
-
-local pdfconstant = lpdf.constant
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfreference = lpdf.reference
-local pdfunicode = lpdf.unicode
-local pdfstring = lpdf.string
-local pdfboolean = lpdf.boolean
-local pdfcolorspec = lpdf.colorspec
-local pdfflushobject = lpdf.flushobject
-local pdfreserveannotation = lpdf.reserveannotation
-local pdfreserveobject = lpdf.reserveobject
-local pdfimmediateobject = lpdf.immediateobject
-local pdfpagereference = lpdf.pagereference
-local pdfshareobjectreference = lpdf.shareobjectreference
-
-local nodepool = nodes.pool
-
-local pdfannotation_node = nodepool.pdfannotation
-
-local hpack_node = node.hpack
-local write_node = node.write
-
-local pdf_border = pdfarray { 0, 0, 0 } -- can be shared
+local nodeinjections = backends.pdf.nodeinjections
+local codeinjections = backends.pdf.codeinjections
+local registrations = backends.pdf.registrations
+
+local executers = structures.references.executers
+local variables = interfaces.variables
+
+local v_hidden = variables.hidden
+local v_normal = variables.normal
+local v_auto = variables.auto
+local v_embed = variables.embed
+local v_unknown = variables.unknown
+local v_max = variables.max
+
+local pdfconstant = lpdf.constant
+local pdfdictionary = lpdf.dictionary
+local pdfarray = lpdf.array
+local pdfreference = lpdf.reference
+local pdfunicode = lpdf.unicode
+local pdfstring = lpdf.string
+local pdfboolean = lpdf.boolean
+local pdfcolorspec = lpdf.colorspec
+local pdfflushobject = lpdf.flushobject
+local pdfflushstreamobject = lpdf.flushstreamobject
+local pdfflushstreamfileobject = lpdf.flushstreamfileobject
+local pdfreserveannotation = lpdf.reserveannotation
+local pdfreserveobject = lpdf.reserveobject
+local pdfpagereference = lpdf.pagereference
+local pdfshareobjectreference = lpdf.shareobjectreference
+
+local nodepool = nodes.pool
+
+local pdfannotation_node = nodepool.pdfannotation
+
+local hpack_node = node.hpack
+local write_node = node.write
+
+local pdf_border = pdfarray { 0, 0, 0 } -- can be shared
-- symbols
@@ -247,11 +248,11 @@ local basename = string.gsub(basename,"%./","")
local a = pdfdictionary { Type = pdfconstant("EmbeddedFile") }
local f
if data then
- f = pdfimmediateobject("stream",data,a())
+ f = pdfflushstreamobject(data,a)
specification.data = true -- signal that still data but already flushed
else
local foundname = specification.foundname or filename
- f = pdfimmediateobject("streamfile",foundname,a())
+ f = pdfflushstreamfileobject(foundname,a)
end
local d = pdfdictionary {
Type = pdfconstant("Filespec"),
@@ -269,10 +270,11 @@ function nodeinjections.attachfile(specification)
local registered = specification.registered or "<unset>"
local data = specification.data
local hash
+ local filename
if data then
hash = md5.HEX(data)
else
- local filename = specification.file
+ filename = specification.file
if not filename or filename == "" then
report_attachment("missing file specification: registered '%s', using registered instead",registered)
filename = registered
@@ -301,7 +303,7 @@ function nodeinjections.attachfile(specification)
title = ""
end
if author == "" then
- author = v_unknown
+ author = filename or "<unknown>"
end
if title == "" then
title = registered
diff --git a/tex/context/base/lpdf-xmp.lua b/tex/context/base/lpdf-xmp.lua
index c9bead8a5..557141449 100644
--- a/tex/context/base/lpdf-xmp.lua
+++ b/tex/context/base/lpdf-xmp.lua
@@ -16,14 +16,14 @@ local report_xmp = logs.reporter("backend","xmp")
local backends, lpdf = backends, lpdf
-local codeinjections = backends.pdf.codeinjections -- normally it is registered
+local codeinjections = backends.pdf.codeinjections -- normally it is registered
-local pdfdictionary = lpdf.dictionary
-local pdfconstant = lpdf.constant
-local pdfreference = lpdf.reference
-local pdfobject = lpdf.object
+local pdfdictionary = lpdf.dictionary
+local pdfconstant = lpdf.constant
+local pdfreference = lpdf.reference
+local pdfflushstreamobject = lpdf.flushstreamobject
--- i wonder why this begin end is empty / w (no time now to look into it)
+-- I wonder why this begin end is empty / w (no time now to look into it)
local xpacket = [[
<?xpacket begin="" id="%s"?>
@@ -182,13 +182,7 @@ local function flushxmpinfo()
if not verbose and tex.pdfcompresslevel > 0 then
blob = gsub(blob,">%s+<","><")
end
- local r = pdfobject {
- immediate = true,
- compresslevel = 0,
- type = "stream",
- string = blob,
- attr = md(),
- }
+ local r = pdfflushstreamobject(blob,md,false) -- uncompressed
lpdf.addtocatalog("Metadata",pdfreference(r))
commands.defrostrandomseed() -- hack
diff --git a/tex/context/base/luat-bas.mkiv b/tex/context/base/luat-bas.mkiv
index d5075b4cb..77b3be781 100644
--- a/tex/context/base/luat-bas.mkiv
+++ b/tex/context/base/luat-bas.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Basic \LUA\ Libraries,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/luat-cod.mkiv b/tex/context/base/luat-cod.mkiv
index 47a898440..d3512cc67 100644
--- a/tex/context/base/luat-cod.mkiv
+++ b/tex/context/base/luat-cod.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Code,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/luat-fio.lua b/tex/context/base/luat-fio.lua
index 5deb704f6..b7144c343 100644
--- a/tex/context/base/luat-fio.lua
+++ b/tex/context/base/luat-fio.lua
@@ -36,6 +36,8 @@ if not resolvers.instance then
local register = callbacks.register
+ -- register('process_jobname' , function(name) return name end, true)
+
register('find_read_file' , function(id,name) return findtexfile(name) end, true)
register('open_read_file' , function( name) return opentexfile(name) end, true)
diff --git a/tex/context/base/luat-ini.mkiv b/tex/context/base/luat-ini.mkiv
index a79ef6a02..a4ac23420 100644
--- a/tex/context/base/luat-ini.mkiv
+++ b/tex/context/base/luat-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/luat-lib.mkiv b/tex/context/base/luat-lib.mkiv
index 83b96639b..5a53b7ea2 100644
--- a/tex/context/base/luat-lib.mkiv
+++ b/tex/context/base/luat-lib.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Libraries,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lxml-ctx.mkiv b/tex/context/base/lxml-ctx.mkiv
index 73d082d0d..ab4e2546c 100644
--- a/tex/context/base/lxml-ctx.mkiv
+++ b/tex/context/base/lxml-ctx.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lxml-ent.lua b/tex/context/base/lxml-ent.lua
index 5b24d9d68..f525d42d2 100644
--- a/tex/context/base/lxml-ent.lua
+++ b/tex/context/base/lxml-ent.lua
@@ -68,6 +68,22 @@ function xml.resolvedentity(str)
end
end
-entities.amp = function() tex.write("&") end
-entities.lt = function() tex.write("<") end
-entities.gt = function() tex.write(">") end
+--~ entities.amp = function() tex.write("&") end
+--~ entities.lt = function() tex.write("<") end
+--~ entities.gt = function() tex.write(">") end
+
+if characters and characters.entities then
+
+ function characters.registerentities(forcecopy)
+ if forcecopy then
+ for name, value in next, characters.entities do
+ if not entities[name] then
+ entities[name] = value
+ end
+ end
+ else
+ table.setmetatableindex(xml.entities,characters.entities)
+ end
+ end
+
+end
diff --git a/tex/context/base/lxml-ini.mkiv b/tex/context/base/lxml-ini.mkiv
index a1d6b50a8..f54bfa0be 100644
--- a/tex/context/base/lxml-ini.mkiv
+++ b/tex/context/base/lxml-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -20,10 +20,12 @@
%registerctxluafile{lxml-xml}{1.001} % xml finalizers
%registerctxluafile{lxml-aux}{1.001} % extras using parser
%registerctxluafile{lxml-mis}{1.001} % extras independent of parser
+\registerctxluafile{char-ent}{1.001}
\registerctxluafile{lxml-ent}{1.001} % entity hacks
\registerctxluafile{lxml-tex}{1.001} % tex finalizers
\registerctxluafile{lxml-dir}{1.001} % ctx hacks
+
\unprotect
\def\c!entities{entities} % to be internationalized
@@ -334,7 +336,7 @@
\def\xmlwithindex #1#2{\ctxlxml{withindex("\xmldocument","#1","#2")}}
\def\xmlreference #1#2{\string\xmlwithindex{#1}{#2}}
-%D Entities:
+%D Entities (might change):
\setnewconstant\xmlautoentities\plusone % 0=off, 1=upper, 2=upper,lower
@@ -375,6 +377,24 @@
#1%
\fi\fi}
+% handy helpers (analogue to MP and LUA and TEX and also MkII)
+
+\unexpanded\def\processXMLbuffer
+ {\dosingleempty\doprocessXMLbuffer}
+
+\def\doprocessXMLbuffer[#1]%
+ {\xmlprocessbuffer{temp}{#1}{}}
+
+\unexpanded\def\processXMLfile#1%
+ {\xmlprocessfile{temp}{#1}{}}
+
+\unexpanded\def\XMLdata#1%
+ {\xmlprocessdata{temp}{#1}{}}
+
+\let\processxmlbuffer\processXMLbuffer
+\let\processxmlfile \processXMLfile
+\let\xmldata \XMLdata
+
\protect \endinput
% \newcount\charactersactiveoffset \charactersactiveoffset="10000
diff --git a/tex/context/base/lxml-sor.mkiv b/tex/context/base/lxml-sor.mkiv
index a3fc83dd1..88952d661 100644
--- a/tex/context/base/lxml-sor.mkiv
+++ b/tex/context/base/lxml-sor.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Sorting,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/lxml-tab.lua b/tex/context/base/lxml-tab.lua
index 7d38a8d5a..1c52e4013 100644
--- a/tex/context/base/lxml-tab.lua
+++ b/tex/context/base/lxml-tab.lua
@@ -399,6 +399,10 @@ local function handle_any_entity(str)
a = entities[str]
end
if a then
+if type(a) == "function" then
+ report_xml("expanding entity &%s; (function)",str)
+ a = a(str) or ""
+end
if trace_entities then
report_xml("resolved entity &%s; -> %s (internal)",str,a)
end
@@ -530,6 +534,8 @@ local function normalentity(k,v ) entities[k] = v end
local function systementity(k,v,n) entities[k] = v end
local function publicentity(k,v,n) entities[k] = v end
+-- todo: separate dtd parser
+
local begindoctype = open * P("!DOCTYPE")
local enddoctype = close
local beginset = P("[")
@@ -537,12 +543,16 @@ local endset = P("]")
local doctypename = C((1-somespace-close)^0)
local elementdoctype = optionalspace * P("<!ELEMENT") * (1-close)^0 * close
+local basiccomment = begincomment * ((1 - endcomment)^0) * endcomment
+
local normalentitytype = (doctypename * somespace * value)/normalentity
local publicentitytype = (doctypename * somespace * P("PUBLIC") * somespace * value)/publicentity
local systementitytype = (doctypename * somespace * P("SYSTEM") * somespace * value * somespace * P("NDATA") * somespace * doctypename)/systementity
local entitydoctype = optionalspace * P("<!ENTITY") * somespace * (systementitytype + publicentitytype + normalentitytype) * optionalspace * close
-local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + space)^0 * optionalspace * endset
+-- we accept comments in doctypes
+
+local doctypeset = beginset * optionalspace * P(elementdoctype + entitydoctype + basiccomment + space)^0 * optionalspace * endset
local definitiondoctype= doctypename * somespace * doctypeset
local publicdoctype = doctypename * somespace * P("PUBLIC") * somespace * value * somespace * value * somespace * doctypeset
local systemdoctype = doctypename * somespace * P("SYSTEM") * somespace * value * somespace * doctypeset
diff --git a/tex/context/base/lxml-tex.lua b/tex/context/base/lxml-tex.lua
index 26a8b2996..441cdb264 100644
--- a/tex/context/base/lxml-tex.lua
+++ b/tex/context/base/lxml-tex.lua
@@ -336,12 +336,13 @@ end
local entities = xml.entities
local function entityconverter(id,str)
- return entities[str] and "&"..str..";" -- feed back into tex end later
+ return entities[str] or "" -- -and "&"..str..";" -- feed back into tex end later
end
function lxml.convert(id,data,entities,compress)
local settings = {
unify_predefined_entities = true,
+--~ resolve_predefined_entities = true,
}
if compress and compress == variables.yes then
settings.strip_cm_and_dt = true
@@ -407,12 +408,12 @@ function xml.getbuffer(name,compress,entities) -- we need to make sure that comm
end
function lxml.loadbuffer(id,name,compress,entities)
- if not name or name == "" then
- name = tex.jobname
- end
+--~ if not name or name == "" then
+--~ name = tex.jobname
+--~ end
starttiming(xml)
nofconverted = nofconverted + 1
- local data = buffers.getcontent(name or id)
+ local data = buffers.collectcontent(name or id) -- name can be list
local xmltable = lxml.convert(id,data,compress,entities)
lxml.store(id,xmltable)
stoptiming(xml)
@@ -495,7 +496,7 @@ pihandlers[#pihandlers+1] = function(str)
if str then
local a, b, c, d = lpegmatch(parser,str)
if d then
- texsprint(ctxcatcodes,"\\xmlcontextdirective{",a",}{",b,"}{",c,"}{",d,"}")
+ texsprint(ctxcatcodes,"\\xmlcontextdirective{",a,"}{",b,"}{",c,"}{",d,"}")
end
end
end
@@ -925,7 +926,7 @@ local function index(collected,n)
if collected then
n = tonumber(n) or 0
if n < 0 then
- n = #collected + n + 1
+ n = #collected + n + 1 -- brrr
end
if n > 0 then
texwrite(collected[n].ni or 0)
diff --git a/tex/context/base/m-arabtex.mkii b/tex/context/base/m-arabtex.mkii
index 61e56e93a..dea1cae25 100644
--- a/tex/context/base/m-arabtex.mkii
+++ b/tex/context/base/m-arabtex.mkii
@@ -5,7 +5,7 @@
%D subtitle=Arabic,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-barcodes.mkiv b/tex/context/base/m-barcodes.mkiv
index b6a54089f..89e089522 100644
--- a/tex/context/base/m-barcodes.mkiv
+++ b/tex/context/base/m-barcodes.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Barcodes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-chart.mkii b/tex/context/base/m-chart.mkii
index bddd435ef..9b44a2ce1 100644
--- a/tex/context/base/m-chart.mkii
+++ b/tex/context/base/m-chart.mkii
@@ -5,7 +5,7 @@
%D subtitle=Flow Charts,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-chart.mkiv b/tex/context/base/m-chart.mkiv
index 114e7d553..3850adf32 100644
--- a/tex/context/base/m-chart.mkiv
+++ b/tex/context/base/m-chart.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Flow Charts,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-chart.tex b/tex/context/base/m-chart.tex
index c4e279d54..9f36004f5 100644
--- a/tex/context/base/m-chart.tex
+++ b/tex/context/base/m-chart.tex
@@ -5,7 +5,7 @@
%D subtitle=Flow Charts,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-chemic.mkii b/tex/context/base/m-chemic.mkii
index e6980e1ff..0b3c98221 100644
--- a/tex/context/base/m-chemic.mkii
+++ b/tex/context/base/m-chemic.mkii
@@ -5,8 +5,8 @@
%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}]
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten},
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-chemic.mkiv b/tex/context/base/m-chemic.mkiv
index bd4cb093e..1dd403fae 100644
--- a/tex/context/base/m-chemic.mkiv
+++ b/tex/context/base/m-chemic.mkiv
@@ -5,8 +5,8 @@
%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}]
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten},
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-cweb.tex b/tex/context/base/m-cweb.tex
index c416c9b36..bf80e229c 100644
--- a/tex/context/base/m-cweb.tex
+++ b/tex/context/base/m-cweb.tex
@@ -5,7 +5,7 @@
%D subtitle=\CWEB\ Pretty Printing Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-database.mkii b/tex/context/base/m-database.mkii
index 3bb050f14..abb67986e 100644
--- a/tex/context/base/m-database.mkii
+++ b/tex/context/base/m-database.mkii
@@ -5,8 +5,7 @@
%D subtitle=Database Thingies,
%D author=Hans Hagen\& Taco Hoekwater,
%D date=\currentdate,
-%D copyright=PRAGMA
-%D ]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-database.mkiv b/tex/context/base/m-database.mkiv
index 0653bfa0e..80ae75258 100644
--- a/tex/context/base/m-database.mkiv
+++ b/tex/context/base/m-database.mkiv
@@ -5,8 +5,7 @@
%D subtitle=Database Thingies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA
-%D ]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-datastrc.tex b/tex/context/base/m-datastrc.tex
index 4a6faa66b..1fd5a9e42 100644
--- a/tex/context/base/m-datastrc.tex
+++ b/tex/context/base/m-datastrc.tex
@@ -5,7 +5,7 @@
%D subtitle=Database Support, % 2A
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-dratex.mkii b/tex/context/base/m-dratex.mkii
index 6c088daf9..2b5f0be2a 100644
--- a/tex/context/base/m-dratex.mkii
+++ b/tex/context/base/m-dratex.mkii
@@ -5,7 +5,7 @@
%D subtitle=\DRATEX\ Loading Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-edtsnc.mkii b/tex/context/base/m-edtsnc.mkii
index 0926f4488..0f66893e8 100644
--- a/tex/context/base/m-edtsnc.mkii
+++ b/tex/context/base/m-edtsnc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Editor Synchronization,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.edit for
diff --git a/tex/context/base/m-educat.tex b/tex/context/base/m-educat.tex
index ddfb72ff4..f5d55fa84 100644
--- a/tex/context/base/m-educat.tex
+++ b/tex/context/base/m-educat.tex
@@ -5,7 +5,7 @@
%D subtitle=Educational Extras,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-fields.mkiv b/tex/context/base/m-fields.mkiv
index cd840f377..46b77f8d3 100644
--- a/tex/context/base/m-fields.mkiv
+++ b/tex/context/base/m-fields.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fields,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-format.tex b/tex/context/base/m-format.tex
index 0f274b236..e974e4a11 100644
--- a/tex/context/base/m-format.tex
+++ b/tex/context/base/m-format.tex
@@ -5,7 +5,7 @@
%D subtitle=Ancient Formatting Code,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-graph.mkii b/tex/context/base/m-graph.mkii
index 69d1d3d57..8e28cf537 100644
--- a/tex/context/base/m-graph.mkii
+++ b/tex/context/base/m-graph.mkii
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ graph module support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-graph.mkiv b/tex/context/base/m-graph.mkiv
index e8aeb2375..53ca3962e 100644
--- a/tex/context/base/m-graph.mkiv
+++ b/tex/context/base/m-graph.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ graph module support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-layout.tex b/tex/context/base/m-layout.tex
index 0ee71da47..5ccf0e987 100644
--- a/tex/context/base/m-layout.tex
+++ b/tex/context/base/m-layout.tex
@@ -5,7 +5,7 @@
%D subtitle=Additional Layouts,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA ADE/ Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-level.mkii b/tex/context/base/m-level.mkii
index 67d598733..d758288d7 100644
--- a/tex/context/base/m-level.mkii
+++ b/tex/context/base/m-level.mkii
@@ -5,7 +5,7 @@
%D subtitle=Catching Nesting Errors,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-mathcrap.mkiv b/tex/context/base/m-mathcrap.mkiv
index 0c187155b..3edef3c72 100644
--- a/tex/context/base/m-mathcrap.mkiv
+++ b/tex/context/base/m-mathcrap.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math Crap,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-mkivhacks.mkiv b/tex/context/base/m-mkivhacks.mkiv
index 0e959110e..3ed002e1d 100644
--- a/tex/context/base/m-mkivhacks.mkiv
+++ b/tex/context/base/m-mkivhacks.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Temporary Compatilibility Hacks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-morse.mkvi b/tex/context/base/m-morse.mkvi
index d106acfde..aba83bb2d 100644
--- a/tex/context/base/m-morse.mkvi
+++ b/tex/context/base/m-morse.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Morse,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-narrowtt.tex b/tex/context/base/m-narrowtt.tex
index 2e11b99ad..129bf270b 100644
--- a/tex/context/base/m-narrowtt.tex
+++ b/tex/context/base/m-narrowtt.tex
@@ -5,7 +5,7 @@
%D subtitle=Narrow Verbatim,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-newmat.tex b/tex/context/base/m-newmat.tex
index 3fb75df5d..202fec76f 100644
--- a/tex/context/base/m-newmat.tex
+++ b/tex/context/base/m-newmat.tex
@@ -5,7 +5,7 @@
%D subtitle=AMS-like math extensions,
%D author={Taco Hoekwater \& Hans Hagen},
%D date=\currentdate,
-%D copyright={PRAGMA / Taco Hoekwater}]
+%D copyright={Taco Hoekwater \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
diff --git a/tex/context/base/m-pdfsnc.mkii b/tex/context/base/m-pdfsnc.mkii
index da59ab5d8..12e2e2d68 100644
--- a/tex/context/base/m-pdfsnc.mkii
+++ b/tex/context/base/m-pdfsnc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Editor Synchronization,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-pictex.tex b/tex/context/base/m-pictex.tex
index 71b0a78fe..27dc6a439 100644
--- a/tex/context/base/m-pictex.tex
+++ b/tex/context/base/m-pictex.tex
@@ -5,7 +5,7 @@
%D subtitle=\PICTEX\ Loading Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-pstricks.mkii b/tex/context/base/m-pstricks.mkii
index 3ada9e07e..bdcf13b24 100644
--- a/tex/context/base/m-pstricks.mkii
+++ b/tex/context/base/m-pstricks.mkii
@@ -5,7 +5,7 @@
%D subtitle=\PSTRICKS\ Connections,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-pstricks.mkiv b/tex/context/base/m-pstricks.mkiv
index c976982a6..0df013cac 100644
--- a/tex/context/base/m-pstricks.mkiv
+++ b/tex/context/base/m-pstricks.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\PSTRICKS\ Connections,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-punk.mkiv b/tex/context/base/m-punk.mkiv
index 71158d2a6..bae3d4de3 100644
--- a/tex/context/base/m-punk.mkiv
+++ b/tex/context/base/m-punk.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Punk Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-quest.tex b/tex/context/base/m-quest.tex
index d20c86c93..596abaa0a 100644
--- a/tex/context/base/m-quest.tex
+++ b/tex/context/base/m-quest.tex
@@ -5,7 +5,7 @@
%D subtitle=Exercise,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-r.tex b/tex/context/base/m-r.tex
index bf7b07a14..ac895905c 100644
--- a/tex/context/base/m-r.tex
+++ b/tex/context/base/m-r.tex
@@ -5,7 +5,7 @@
%D subtitle=R Support,
%D author={Johan Sandblom \& Hans Hagen},
%D date=\currentdate,
-%D copyright={PRAGMA / Johan Sandblom}]
+%D copyright={Johan Sandblom \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-spreadsheet.mkiv b/tex/context/base/m-spreadsheet.mkiv
index 49f59ded9..839214096 100644
--- a/tex/context/base/m-spreadsheet.mkiv
+++ b/tex/context/base/m-spreadsheet.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Spreadsheets,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-steps.tex b/tex/context/base/m-steps.tex
index 55e13b97d..660629810 100644
--- a/tex/context/base/m-steps.tex
+++ b/tex/context/base/m-steps.tex
@@ -5,7 +5,7 @@
%D subtitle=Step Charts \& Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-streams.tex b/tex/context/base/m-streams.tex
index 9d7e8d7dd..a8589a89c 100644
--- a/tex/context/base/m-streams.tex
+++ b/tex/context/base/m-streams.tex
@@ -5,7 +5,7 @@
%D subtitle=Streams,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-subsub.tex b/tex/context/base/m-subsub.tex
index 4395ded8a..88be11680 100644
--- a/tex/context/base/m-subsub.tex
+++ b/tex/context/base/m-subsub.tex
@@ -5,7 +5,7 @@
%D subtitle=More Section Levels,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. This module is not public.
diff --git a/tex/context/base/m-timing.mkiv b/tex/context/base/m-timing.mkiv
index a91891a1b..409dde6ad 100644
--- a/tex/context/base/m-timing.mkiv
+++ b/tex/context/base/m-timing.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Timing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-translate.mkiv b/tex/context/base/m-translate.mkiv
index c0e4aad72..ae4f3899d 100644
--- a/tex/context/base/m-translate.mkiv
+++ b/tex/context/base/m-translate.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Translations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-units.mkii b/tex/context/base/m-units.mkii
index 6a899736b..af4629d48 100644
--- a/tex/context/base/m-units.mkii
+++ b/tex/context/base/m-units.mkii
@@ -5,7 +5,7 @@
%D subtitle=Scientific Units,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-units.mkiv b/tex/context/base/m-units.mkiv
index a7653c566..3f3f6233a 100644
--- a/tex/context/base/m-units.mkiv
+++ b/tex/context/base/m-units.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Scientific Units,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-visual.tex b/tex/context/base/m-visual.tex
index d78455190..502a5c47f 100644
--- a/tex/context/base/m-visual.tex
+++ b/tex/context/base/m-visual.tex
@@ -5,7 +5,7 @@
%D subtitle=Visualization and Faking,
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/m-zint.mkiv b/tex/context/base/m-zint.mkiv
index 3e6f7ab43..04af806a0 100644
--- a/tex/context/base/m-zint.mkiv
+++ b/tex/context/base/m-zint.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Zint Barcode Generator,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-ali.mkiv b/tex/context/base/math-ali.mkiv
index f83619a22..b00618785 100644
--- a/tex/context/base/math-ali.mkiv
+++ b/tex/context/base/math-ali.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math Alignments,
%D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -151,28 +151,145 @@
\let \equalignno \reqalignno
\let\aligneqalignno\alignreqalignno
-%D Here we implement the user interface part.
+%D Here we implement the user interface part. We start with basic math alignments:
-\unexpanded\def\setupmathalignment
- {\dodoubleempty\dosetupmathalignment}
+% \unexpanded\def\setupmathalignment
+% {\dodoubleempty\dosetupmathalignment}
+%
+% \def\dosetupmathalignment[#1][#2]%
+% {\ifsecondargument
+% \getparameters[\??eq#1][#2]%
+% \else
+% \getparameters[\??eq][#1]%
+% \fi}
+%
+% \let\currentmathalignment\empty
+%
+% \def\mathalignmentparameter#1%
+% {\executeifdefined{\??eq\currentmathalignment#1}{\executeifdefined{\??eq#1}\empty}}
+%
+% \setupmathalignment
+% [\c!n=2,
+% \c!m=1,
+% \c!distance=1em]
+%
+% \def\dostartmathalignment[#1][#2]%
+% {% \begingroup not permitted ($$...assignments...\halign... )
+% \pushmacro\doalignNC
+% \edef\currentmathalignment{#1}%
+% \doifassignmentelse{#2}{\setupmathalignment[#1][#2]}\donothing
+% \def\NC{\doalignNC}%
+% \global\let\doalignNC\dodoalignNC
+% \def\EQ{&=}%
+% \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty\doalignNR}%
+% % amstex compatibility mode: (ugly, will disappear)
+% \def\notag{\def\\{&\crcr}}%
+% \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}%
+% % end of compatibility mode
+% \eqaligncolumn\zerocount
+% \processcommacommand
+% [\mathalignmentparameter\c!align]
+% {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument
+% % the real action
+% \global\eqaligncolumn\plusone
+% \numberedeqalign}
+%
+% \def\dostopmathalignment
+% {\finishalignno
+% \popmacro\doalignNC}
+%
+% \unexpanded\def\definemathalignment
+% {\dodoubleempty\dodefinemathalignment}
+%
+% \def\dodefinemathalignment[#1]% [#2]%
+% {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalignment[#1]}%
+% \setvalue{\e!stop #1}{\dostopmathalignment}%
+% \setupmathalignment[#1]}% [#2]
+%
+% \definemathalignment[align] % default case (this is what amstex users expect)
+% \definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing)
+
+% we tag the mlist later but cells are hboxes so we can add wrappers
+
+\newtoks \everymathalignment
+
+\def\math_alignment_NR_indeed[#1][#2]%
+ {\donestedformulanumber{#1}{#2}% to be tagged (better an attribute)
+ \crcr
+ \dostoptagged % finish row
+ \noalign{\glet\math_alignment_NC\math_alignment_NC_first}} % noalign used for change state, conditional does not work here
+
+\def\math_alignment_NC_first
+ {\dostarttagged\t!mathtablerow\empty
+ \dostarttagged\t!mathtablecell\empty
+ \let\NC\math_alignment_NC_rest}
+
+\def\math_alignment_NC_rest
+ {\aligntab
+ \dostoptagged % finish cell
+ \dostarttagged\t!mathtablecell\empty}
+
+\def\math_alignment_EQ
+ {\NC=}
+
+\def\math_alignment_NR
+ {\aligntab
+ \dostoptagged % finish cell
+ \dodoubleempty\math_alignment_NR_indeed} % use xx from tabulate
+
+% amstex compatibility mode: (ugly, will disappear)
+% \def\notag{\def\\{&\crcr}}%
+% \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}%
+% end of compatibility mode
+
+\appendtoks
+ \glet\math_alignment_NC\math_alignment_NC_first
+ \unexpanded\def\NC{\math_alignment_NC}% messy, due to lookahead (we cannot use a flag)
+ \let\EQ\math_alignment_EQ
+ \let\NR\math_alignment_NR
+\to \everymathalignment
+
+\def\math_alignment_start#1%
+ {\edef\currentmathalignment{#1}%
+ \dosingleempty\math_alignment_start_indeed}
+
+\def\math_alignment_start_indeed[#1]%
+ {% \begingroup not permitted ($$...assignments...\halign... )
+ \iffirstargument
+ \setupmathalignment[\currentmathalignment][#1]%
+ \fi
+ \the\everymathalignment
+ \eqaligncolumn\zerocount
+ \processcommacommand
+ [\mathalignmentparameter\c!align]
+ {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument
+ \global\eqaligncolumn\plusone
+ \dostarttagged\t!math\empty
+ \dostarttagged\t!mathtable\currentmathalignment
+ \numberedeqalign}
-\def\dosetupmathalignment[#1][#2]%
- {\ifsecondargument
- \getparameters[\??eq#1][#2]%
- \else
- \getparameters[\??eq][#1]%
- \fi}
+\def\math_alignment_stop
+ {\finishalignno
+ \dostoptagged
+ \dostoptagged}
-\let\currentmathalignment\empty
+\installcommandhandler \??eq {mathalignment} \??eq
-\def\mathalignmentparameter#1%
- {\executeifdefined{\??eq\currentmathalignment#1}{\executeifdefined{\??eq#1}\empty}}
+\appendtoks
+ \setevalue{\e!start\currentmathalignment}{\noexpand\math_alignment_start{\currentmathalignment}}%
+ \setevalue{\e!stop \currentmathalignment}{\noexpand\math_alignment_stop}%
+\to \everydefinemathalignment
\setupmathalignment
[\c!n=2,
\c!m=1,
\c!distance=1em]
+\definemathalignment[align] % default case (this is what amstex users expect)
+\definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing)
+
+% helpers
+
\def\numberedeqalign
{\doifelse{\formulaparameter\c!location}\v!left\alignleqalignno\alignreqalignno}
@@ -213,46 +330,6 @@
%D \placeformula[eqn3]\startformula \startalign[n=1] a\NR[+] \stopalign \stopformula See \in[eqn3]
%D \stoptyping
-% todo: pop in cell
-
-\def\dostartmathalignment[#1][#2]%
- {% \begingroup not permitted ($$...assignments...\halign... )
- \pushmacro\doalignNC
- \edef\currentmathalignment{#1}%
- \doifassignmentelse{#2}{\setupmathalignment[#1][#2]}\donothing
- \def\NC{\doalignNC}%
- \global\let\doalignNC\dodoalignNC
- \def\EQ{&=}%
- \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty\doalignNR}%
- % amstex compatibility mode: (ugly, will disappear)
- \def\notag{\def\\{&\crcr}}%
- \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}%
- % end of compatibility mode
- \eqaligncolumn\zerocount
- \processcommacommand
- [\mathalignmentparameter\c!align]
- {\advance\eqaligncolumn\plusone\doseteqaligncolumn}% takes argument
- % the real action
- \global\eqaligncolumn\plusone
- \numberedeqalign}
-
-\def\dostopmathalignment
- {\finishalignno
- \popmacro\doalignNC}
-
-\unexpanded\def\definemathalignment
- {\dodoubleempty\dodefinemathalignment}
-
-\def\dodefinemathalignment[#1]% [#2]%
- {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalignment[#1]}%
- \setvalue{\e!stop #1}{\dostopmathalignment}%
- \setupmathalignment[#1]}% [#2]
-
-%D For the moment we only provide english commands.
-
-\definemathalignment[align] % default case (this is what amstex users expect)
-\definemathalignment[\v!mathalignment] % prefered case (this is cleaner, less clashing)
-
%D \startbuffer
%D \placeformula \startformula \eqalignno {
%D a &= b & \formulanumber \cr
diff --git a/tex/context/base/math-ams.mkii b/tex/context/base/math-ams.mkii
index 83070d01a..c73a890c0 100644
--- a/tex/context/base/math-ams.mkii
+++ b/tex/context/base/math-ams.mkii
@@ -5,7 +5,7 @@
%D subtitle=AMS Specials,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-arr.mkii b/tex/context/base/math-arr.mkii
index 3b9abaa91..71a833b89 100644
--- a/tex/context/base/math-arr.mkii
+++ b/tex/context/base/math-arr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Arrows,
%D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-arr.mkiv b/tex/context/base/math-arr.mkiv
index 31f8a66eb..3a7f2521e 100644
--- a/tex/context/base/math-arr.mkiv
+++ b/tex/context/base/math-arr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Arrows,
%D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-cow.mkii b/tex/context/base/math-cow.mkii
index f0fc811c8..04f659b44 100644
--- a/tex/context/base/math-cow.mkii
+++ b/tex/context/base/math-cow.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cow Math,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-def.mkiv b/tex/context/base/math-def.mkiv
index a7e0df940..3b336855a 100644
--- a/tex/context/base/math-def.mkiv
+++ b/tex/context/base/math-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Definitions,
%D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -19,7 +19,7 @@
\startluacode
mathematics.define()
- mathematics.xml.registerentities()
+ -- mathematics.xml.registerentities()
\stopluacode
\activatemathcharacters
@@ -95,12 +95,12 @@
\definemathcommand [tanh] [nolop] {\mfunctionlabeltext{tanh}}
\definemathcommand [tan] [nolop] {\mfunctionlabeltext{tan}}
-\definemathcommand [integers] {{\mathblackboard Z}}
-\definemathcommand [reals] {{\mathblackboard R}}
-\definemathcommand [rationals] {{\mathblackboard Q}}
-\definemathcommand [naturalnumbers]{{\mathblackboard N}}
-\definemathcommand [complexes] {{\mathblackboard C}}
-\definemathcommand [primes] {{\mathblackboard P}}
+% \definemathcommand [integers] {{\mathblackboard Z}}
+% \definemathcommand [reals] {{\mathblackboard R}}
+% \definemathcommand [rationals] {{\mathblackboard Q}}
+% \definemathcommand [naturalnumbers]{{\mathblackboard N}}
+% \definemathcommand [complexes] {{\mathblackboard C}}
+% \definemathcommand [primes] {{\mathblackboard P}}
\let\normalmatharg\arg % todo: maybe automatically
@@ -356,6 +356,9 @@
\unexpanded\def\underrightarrow{\mathopwithlimits\normalunderrightarrow}
\unexpanded\def\overrightarrow {\mathopwithlimits\normaloverrightarrow }
+\let\lceil \lceiling
+\let\rceil \rceiling
+
\let\normalsurd\surd
\unexpanded\def\surd{\normalsurd{}}
diff --git a/tex/context/base/math-del.mkiv b/tex/context/base/math-del.mkiv
index 5ffda1919..b6579cc93 100644
--- a/tex/context/base/math-del.mkiv
+++ b/tex/context/base/math-del.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Delimiters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-dis.mkiv b/tex/context/base/math-dis.mkiv
index 3eed2b162..5b70970f3 100644
--- a/tex/context/base/math-dis.mkiv
+++ b/tex/context/base/math-dis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Display,
%D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-ent.lua b/tex/context/base/math-ent.lua
deleted file mode 100644
index 0eaa02939..000000000
--- a/tex/context/base/math-ent.lua
+++ /dev/null
@@ -1,2103 +0,0 @@
-if not modules then modules = { } end modules ['math-ent'] = {
- version = 1.001,
- comment = "companion to math-ini.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "derived from the mathml 2.0 specification",
-}
-
--- this might go into char-def
-
-mathematics.xml.entities = utilities.storage.allocate {
- ["Aacute"]=0x000C1,
- ["aacute"]=0x000E1,
- ["Abreve"]=0x00102,
- ["abreve"]=0x00103,
- ["ac"]=0x0223E,
- ["acd"]=0x0223F,
- ["acE"]=0x0223E,
- ["Acirc"]=0x000C2,
- ["acirc"]=0x000E2,
- ["acute"]=0x000B4,
- ["Acy"]=0x00410,
- ["acy"]=0x00430,
- ["AElig"]=0x000C6,
- ["aelig"]=0x000E6,
- ["af"]=0x02061,
- ["Afr"]=0x1D504,
- ["afr"]=0x1D51E,
- ["Agrave"]=0x000C0,
- ["agrave"]=0x000E0,
- ["aleph"]=0x02135,
- ["alpha"]=0x003B1,
- ["Amacr"]=0x00100,
- ["amacr"]=0x00101,
- ["amalg"]=0x02A3F,
- ["amp"]=0x00026,
- ["And"]=0x02A53,
- ["and"]=0x02227,
- ["andand"]=0x02A55,
- ["andd"]=0x02A5C,
- ["andslope"]=0x02A58,
- ["andv"]=0x02A5A,
- ["ang"]=0x02220,
- ["ange"]=0x029A4,
- ["angle"]=0x02220,
- ["angmsd"]=0x02221,
- ["angmsdaa"]=0x029A8,
- ["angmsdab"]=0x029A9,
- ["angmsdac"]=0x029AA,
- ["angmsdad"]=0x029AB,
- ["angmsdae"]=0x029AC,
- ["angmsdaf"]=0x029AD,
- ["angmsdag"]=0x029AE,
- ["angmsdah"]=0x029AF,
- ["angrt"]=0x0221F,
- ["angrtvb"]=0x022BE,
- ["angrtvbd"]=0x0299D,
- ["angsph"]=0x02222,
- ["angst"]=0x0212B,
- ["angzarr"]=0x0237C,
- ["Aogon"]=0x00104,
- ["aogon"]=0x00105,
- ["Aopf"]=0x1D538,
- ["aopf"]=0x1D552,
- ["ap"]=0x02248,
- ["apacir"]=0x02A6F,
- ["apE"]=0x02A70,
- ["ape"]=0x0224A,
- ["apid"]=0x0224B,
- ["apos"]=0x00027,
- ["ApplyFunction"]=0x02061,
- ["approx"]=0x02248,
- ["approxeq"]=0x0224A,
- ["Aring"]=0x000C5,
- ["aring"]=0x000E5,
- ["Ascr"]=0x1D49C,
- ["ascr"]=0x1D4B6,
- ["Assign"]=0x02254,
- ["ast"]=0x0002A,
- ["asymp"]=0x02248,
- ["asympeq"]=0x0224D,
- ["Atilde"]=0x000C3,
- ["atilde"]=0x000E3,
- ["Auml"]=0x000C4,
- ["auml"]=0x000E4,
- ["awconint"]=0x02233,
- ["awint"]=0x02A11,
- ["backcong"]=0x0224C,
- ["backepsilon"]=0x003F6,
- ["backprime"]=0x02035,
- ["backsim"]=0x0223D,
- ["backsimeq"]=0x022CD,
- ["Backslash"]=0x02216,
- ["Barv"]=0x02AE7,
- ["barvee"]=0x022BD,
- ["Barwed"]=0x02306,
- ["barwed"]=0x02305,
- ["barwedge"]=0x02305,
- ["bbrk"]=0x023B5,
- ["bbrktbrk"]=0x023B6,
- ["bcong"]=0x0224C,
- ["Bcy"]=0x00411,
- ["bcy"]=0x00431,
- ["becaus"]=0x02235,
- ["Because"]=0x02235,
- ["because"]=0x02235,
- ["bemptyv"]=0x029B0,
- ["bepsi"]=0x003F6,
- ["bernou"]=0x0212C,
- ["Bernoullis"]=0x0212C,
- ["beta"]=0x003B2,
- ["beth"]=0x02136,
- ["between"]=0x0226C,
- ["Bfr"]=0x1D505,
- ["bfr"]=0x1D51F,
- ["bigcap"]=0x022C2,
- ["bigcirc"]=0x025EF,
- ["bigcup"]=0x022C3,
- ["bigodot"]=0x02A00,
- ["bigoplus"]=0x02A01,
- ["bigotimes"]=0x02A02,
- ["bigsqcup"]=0x02A06,
- ["bigstar"]=0x02605,
- ["bigtriangledown"]=0x025BD,
- ["bigtriangleup"]=0x025B3,
- ["biguplus"]=0x02A04,
- ["bigvee"]=0x022C1,
- ["bigwedge"]=0x022C0,
- ["bkarow"]=0x0290D,
- ["blacklozenge"]=0x029EB,
- ["blacksquare"]=0x025AA,
- ["blacktriangle"]=0x025B4,
- ["blacktriangledown"]=0x025BE,
- ["blacktriangleleft"]=0x025C2,
- ["blacktriangleright"]=0x025B8,
- ["blank"]=0x02423,
- ["blk12"]=0x02592,
- ["blk14"]=0x02591,
- ["blk34"]=0x02593,
- ["block"]=0x02588,
- ["bne"]=0x0003D,
- ["bnequiv"]=0x02261,
- ["bNot"]=0x02AED,
- ["bnot"]=0x02310,
- ["Bopf"]=0x1D539,
- ["bopf"]=0x1D553,
- ["bot"]=0x022A5,
- ["bottom"]=0x022A5,
- ["bowtie"]=0x022C8,
- ["boxbox"]=0x029C9,
- ["boxDL"]=0x02557,
- ["boxDl"]=0x02556,
- ["boxdL"]=0x02555,
- ["boxdl"]=0x02510,
- ["boxDR"]=0x02554,
- ["boxDr"]=0x02553,
- ["boxdR"]=0x02552,
- ["boxdr"]=0x0250C,
- ["boxH"]=0x02550,
- ["boxh"]=0x02500,
- ["boxHD"]=0x02566,
- ["boxHd"]=0x02564,
- ["boxhD"]=0x02565,
- ["boxhd"]=0x0252C,
- ["boxHU"]=0x02569,
- ["boxHu"]=0x02567,
- ["boxhU"]=0x02568,
- ["boxhu"]=0x02534,
- ["boxminus"]=0x0229F,
- ["boxplus"]=0x0229E,
- ["boxtimes"]=0x022A0,
- ["boxUL"]=0x0255D,
- ["boxUl"]=0x0255C,
- ["boxuL"]=0x0255B,
- ["boxul"]=0x02518,
- ["boxUR"]=0x0255A,
- ["boxUr"]=0x02559,
- ["boxuR"]=0x02558,
- ["boxur"]=0x02514,
- ["boxV"]=0x02551,
- ["boxv"]=0x02502,
- ["boxVH"]=0x0256C,
- ["boxVh"]=0x0256B,
- ["boxvH"]=0x0256A,
- ["boxvh"]=0x0253C,
- ["boxVL"]=0x02563,
- ["boxVl"]=0x02562,
- ["boxvL"]=0x02561,
- ["boxvl"]=0x02524,
- ["boxVR"]=0x02560,
- ["boxVr"]=0x0255F,
- ["boxvR"]=0x0255E,
- ["boxvr"]=0x0251C,
- ["bprime"]=0x02035,
- ["Breve"]=0x002D8,
- ["breve"]=0x002D8,
- ["brvbar"]=0x000A6,
- ["Bscr"]=0x0212C,
- ["bscr"]=0x1D4B7,
- ["bsemi"]=0x0204F,
- ["bsim"]=0x0223D,
- ["bsime"]=0x022CD,
- ["bsol"]=0x0005C,
- ["bsolb"]=0x029C5,
- ["bsolhsub"]=0x0005C,
- ["bull"]=0x02022,
- ["bullet"]=0x02022,
- ["bump"]=0x0224E,
- ["bumpE"]=0x02AAE,
- ["bumpe"]=0x0224F,
- ["Bumpeq"]=0x0224E,
- ["bumpeq"]=0x0224F,
- ["Cacute"]=0x00106,
- ["cacute"]=0x00107,
- ["Cap"]=0x022D2,
- ["cap"]=0x02229,
- ["capand"]=0x02A44,
- ["capbrcup"]=0x02A49,
- ["capcap"]=0x02A4B,
- ["capcup"]=0x02A47,
- ["capdot"]=0x02A40,
- ["CapitalDifferentialD"]=0x02145,
- ["caps"]=0x02229,
- ["caret"]=0x02041,
- ["caron"]=0x002C7,
- ["Cayleys"]=0x0212D,
- ["ccaps"]=0x02A4D,
- ["Ccaron"]=0x0010C,
- ["ccaron"]=0x0010D,
- ["Ccedil"]=0x000C7,
- ["ccedil"]=0x000E7,
- ["Ccirc"]=0x00108,
- ["ccirc"]=0x00109,
- ["Cconint"]=0x02230,
- ["ccups"]=0x02A4C,
- ["ccupssm"]=0x02A50,
- ["Cdot"]=0x0010A,
- ["cdot"]=0x0010B,
- ["cedil"]=0x000B8,
- ["Cedilla"]=0x000B8,
- ["cemptyv"]=0x029B2,
- ["cent"]=0x000A2,
- ["CenterDot"]=0x000B7,
- ["centerdot"]=0x000B7,
- ["Cfr"]=0x0212D,
- ["cfr"]=0x1D520,
- ["CHcy"]=0x00427,
- ["chcy"]=0x00447,
- ["check"]=0x02713,
- ["checkmark"]=0x02713,
- ["chi"]=0x003C7,
- ["cir"]=0x025CB,
- ["circ"]=0x002C6,
- ["circeq"]=0x02257,
- ["circlearrowleft"]=0x021BA,
- ["circlearrowright"]=0x021BB,
- ["circledast"]=0x0229B,
- ["circledcirc"]=0x0229A,
- ["circleddash"]=0x0229D,
- ["CircleDot"]=0x02299,
- ["circledR"]=0x000AE,
- ["circledS"]=0x024C8,
- ["CircleMinus"]=0x02296,
- ["CirclePlus"]=0x02295,
- ["CircleTimes"]=0x02297,
- ["cirE"]=0x029C3,
- ["cire"]=0x02257,
- ["cirfnint"]=0x02A10,
- ["cirmid"]=0x02AEF,
- ["cirscir"]=0x029C2,
- ["ClockwiseContourIntegral"]=0x02232,
- ["CloseCurlyDoubleQuote"]=0x0201D,
- ["CloseCurlyQuote"]=0x02019,
- ["clubs"]=0x02663,
- ["clubsuit"]=0x02663,
- ["Colon"]=0x02237,
- ["colon"]=0x0003A,
- ["Colone"]=0x02A74,
- ["colone"]=0x02254,
- ["coloneq"]=0x02254,
- ["comma"]=0x0002C,
- ["commat"]=0x00040,
- ["comp"]=0x02201,
- ["compfn"]=0x02218,
- ["complement"]=0x02201,
- ["complexes"]=0x02102,
- ["cong"]=0x02245,
- ["congdot"]=0x02A6D,
- ["Congruent"]=0x02261,
- ["Conint"]=0x0222F,
- ["conint"]=0x0222E,
- ["ContourIntegral"]=0x0222E,
- ["Copf"]=0x02102,
- ["copf"]=0x1D554,
- ["coprod"]=0x02210,
- ["Coproduct"]=0x02210,
- ["copy"]=0x000A9,
- ["copysr"]=0x02117,
- ["CounterClockwiseContourIntegral"]=0x02233,
- ["Cross"]=0x02A2F,
- ["cross"]=0x02717,
- ["Cscr"]=0x1D49E,
- ["cscr"]=0x1D4B8,
- ["csub"]=0x02ACF,
- ["csube"]=0x02AD1,
- ["csup"]=0x02AD0,
- ["csupe"]=0x02AD2,
- ["ctdot"]=0x022EF,
- ["cudarrl"]=0x02938,
- ["cudarrr"]=0x02935,
- ["cuepr"]=0x022DE,
- ["cuesc"]=0x022DF,
- ["cularr"]=0x021B6,
- ["cularrp"]=0x0293D,
- ["Cup"]=0x022D3,
- ["cup"]=0x0222A,
- ["cupbrcap"]=0x02A48,
- ["CupCap"]=0x0224D,
- ["cupcap"]=0x02A46,
- ["cupcup"]=0x02A4A,
- ["cupdot"]=0x0228D,
- ["cupor"]=0x02A45,
- ["cups"]=0x0222A,
- ["curarr"]=0x021B7,
- ["curarrm"]=0x0293C,
- ["curlyeqprec"]=0x022DE,
- ["curlyeqsucc"]=0x022DF,
- ["curlyvee"]=0x022CE,
- ["curlywedge"]=0x022CF,
- ["curren"]=0x000A4,
- ["curvearrowleft"]=0x021B6,
- ["curvearrowright"]=0x021B7,
- ["cuvee"]=0x022CE,
- ["cuwed"]=0x022CF,
- ["cwconint"]=0x02232,
- ["cwint"]=0x02231,
- ["cylcty"]=0x0232D,
- ["Dagger"]=0x02021,
- ["Dagger"]=0x02021,
- ["dagger"]=0x02020,
- ["dagger"]=0x02020,
- ["daleth"]=0x02138,
- ["Darr"]=0x021A1,
- ["dArr"]=0x021D3,
- ["darr"]=0x02193,
- ["dash"]=0x02010,
- ["Dashv"]=0x02AE4,
- ["dashv"]=0x022A3,
- ["dbkarow"]=0x0290F,
- ["dblac"]=0x002DD,
- ["Dcaron"]=0x0010E,
- ["dcaron"]=0x0010F,
- ["Dcy"]=0x00414,
- ["dcy"]=0x00434,
- ["DD"]=0x02145,
- ["dd"]=0x02146,
- ["ddagger"]=0x02021,
- ["ddarr"]=0x021CA,
- ["DDotrahd"]=0x02911,
- ["ddotseq"]=0x02A77,
- ["deg"]=0x000B0,
- ["Del"]=0x02207,
- ["Delta"]=0x00394,
- ["delta"]=0x003B4,
- ["demptyv"]=0x029B1,
- ["dfisht"]=0x0297F,
- ["Dfr"]=0x1D507,
- ["dfr"]=0x1D521,
- ["dHar"]=0x02965,
- ["dharl"]=0x021C3,
- ["dharr"]=0x021C2,
- ["DiacriticalAcute"]=0x000B4,
- ["DiacriticalDot"]=0x002D9,
- ["DiacriticalDoubleAcute"]=0x002DD,
- ["DiacriticalGrave"]=0x00060,
- ["DiacriticalTilde"]=0x002DC,
- ["diam"]=0x022C4,
- ["Diamond"]=0x022C4,
- ["diamond"]=0x022C4,
- ["diamondsuit"]=0x02666,
- ["diams"]=0x02666,
- ["die"]=0x000A8,
- ["DifferentialD"]=0x02146,
- ["digamma"]=0x003DD,
- ["disin"]=0x022F2,
- ["div"]=0x000F7,
- ["divide"]=0x000F7,
- ["divideontimes"]=0x022C7,
- ["divonx"]=0x022C7,
- ["DJcy"]=0x00402,
- ["djcy"]=0x00452,
- ["dlcorn"]=0x0231E,
- ["dlcrop"]=0x0230D,
- ["dollar"]=0x00024,
- ["Dopf"]=0x1D53B,
- ["dopf"]=0x1D555,
- ["Dot"]=0x000A8,
- ["dot"]=0x002D9,
- ["DotDot"]=0x020DC,
- ["doteq"]=0x02250,
- ["doteqdot"]=0x02251,
- ["DotEqual"]=0x02250,
- ["dotminus"]=0x02238,
- ["dotplus"]=0x02214,
- ["dotsquare"]=0x022A1,
- ["doublebarwedge"]=0x02306,
- ["DoubleContourIntegral"]=0x0222F,
- ["DoubleDot"]=0x000A8,
- ["DoubleDownArrow"]=0x021D3,
- ["DoubleLeftArrow"]=0x021D0,
- ["DoubleLeftRightArrow"]=0x021D4,
- ["DoubleLeftTee"]=0x02AE4,
- ["DoubleLongLeftArrow"]=0x027F8,
- ["DoubleLongLeftRightArrow"]=0x027FA,
- ["DoubleLongRightArrow"]=0x027F9,
- ["DoubleRightArrow"]=0x021D2,
- ["DoubleRightTee"]=0x022A8,
- ["DoubleUpArrow"]=0x021D1,
- ["DoubleUpDownArrow"]=0x021D5,
- ["DoubleVerticalBar"]=0x02225,
- ["DownArrow"]=0x02193,
- ["Downarrow"]=0x021D3,
- ["downarrow"]=0x02193,
- ["DownArrowBar"]=0x02913,
- ["DownArrowUpArrow"]=0x021F5,
- ["DownBreve"]=0x00311,
- ["downdownarrows"]=0x021CA,
- ["downharpoonleft"]=0x021C3,
- ["downharpoonright"]=0x021C2,
- ["DownLeftRightVector"]=0x02950,
- ["DownLeftTeeVector"]=0x0295E,
- ["DownLeftVector"]=0x021BD,
- ["DownLeftVectorBar"]=0x02956,
- ["DownRightTeeVector"]=0x0295F,
- ["DownRightVector"]=0x021C1,
- ["DownRightVectorBar"]=0x02957,
- ["DownTee"]=0x022A4,
- ["DownTeeArrow"]=0x021A7,
- ["drbkarow"]=0x02910,
- ["drcorn"]=0x0231F,
- ["drcrop"]=0x0230C,
- ["Dscr"]=0x1D49F,
- ["dscr"]=0x1D4B9,
- ["DScy"]=0x00405,
- ["dscy"]=0x00455,
- ["dsol"]=0x029F6,
- ["Dstrok"]=0x00110,
- ["dstrok"]=0x00111,
- ["dtdot"]=0x022F1,
- ["dtri"]=0x025BF,
- ["dtrif"]=0x025BE,
- ["duarr"]=0x021F5,
- ["duhar"]=0x0296F,
- ["dwangle"]=0x029A6,
- ["DZcy"]=0x0040F,
- ["dzcy"]=0x0045F,
- ["dzigrarr"]=0x027FF,
- ["Eacute"]=0x000C9,
- ["eacute"]=0x000E9,
- ["easter"]=0x02A6E,
- ["Ecaron"]=0x0011A,
- ["ecaron"]=0x0011B,
- ["ecir"]=0x02256,
- ["Ecirc"]=0x000CA,
- ["ecirc"]=0x000EA,
- ["ecolon"]=0x02255,
- ["Ecy"]=0x0042D,
- ["ecy"]=0x0044D,
- ["eDDot"]=0x02A77,
- ["Edot"]=0x00116,
- ["eDot"]=0x02251,
- ["edot"]=0x00117,
- ["ee"]=0x02147,
- ["efDot"]=0x02252,
- ["Efr"]=0x1D508,
- ["efr"]=0x1D522,
- ["eg"]=0x02A9A,
- ["Egrave"]=0x000C8,
- ["egrave"]=0x000E8,
- ["egs"]=0x02A96,
- ["egsdot"]=0x02A98,
- ["el"]=0x02A99,
- ["Element"]=0x02208,
- ["elinters"]=0x0FFFD,
- ["ell"]=0x02113,
- ["els"]=0x02A95,
- ["elsdot"]=0x02A97,
- ["Emacr"]=0x00112,
- ["emacr"]=0x00113,
- ["empty"]=0x02205,
- ["emptyset"]=0x02205,
- ["EmptySmallSquare"]=0x025FB,
- ["emptyv"]=0x02205,
- ["EmptyVerySmallSquare"]=0x025AB,
- ["emsp"]=0x02003,
- ["emsp13"]=0x02004,
- ["emsp14"]=0x02005,
- ["ENG"]=0x0014A,
- ["eng"]=0x0014B,
- ["ensp"]=0x02002,
- ["Eogon"]=0x00118,
- ["eogon"]=0x00119,
- ["Eopf"]=0x1D53C,
- ["eopf"]=0x1D556,
- ["epar"]=0x022D5,
- ["eparsl"]=0x029E3,
- ["eplus"]=0x02A71,
- ["epsi"]=0x003F5,
- ["epsiv"]=0x003B5,
- ["eqcirc"]=0x02256,
- ["eqcolon"]=0x02255,
- ["eqsim"]=0x02242,
- ["eqslantgtr"]=0x02A96,
- ["eqslantless"]=0x02A95,
- ["Equal"]=0x02A75,
- ["equals"]=0x0003D,
- ["EqualTilde"]=0x02242,
- ["equest"]=0x0225F,
- ["Equilibrium"]=0x021CC,
- ["equiv"]=0x02261,
- ["equivDD"]=0x02A78,
- ["eqvparsl"]=0x029E5,
- ["erarr"]=0x02971,
- ["erDot"]=0x02253,
- ["Escr"]=0x02130,
- ["escr"]=0x0212F,
- ["esdot"]=0x02250,
- ["Esim"]=0x02A73,
- ["esim"]=0x02242,
- ["eta"]=0x003B7,
- ["ETH"]=0x000D0,
- ["eth"]=0x000F0,
- ["Euml"]=0x000CB,
- ["euml"]=0x000EB,
- ["excl"]=0x00021,
- ["exist"]=0x02203,
- ["Exists"]=0x02203,
- ["expectation"]=0x02130,
- ["ExponentialE"]=0x02147,
- ["exponentiale"]=0x02147,
- ["fallingdotseq"]=0x02252,
- ["Fcy"]=0x00424,
- ["fcy"]=0x00444,
- ["female"]=0x02640,
- ["ffilig"]=0x0FB03,
- ["fflig"]=0x0FB00,
- ["ffllig"]=0x0FB04,
- ["Ffr"]=0x1D509,
- ["ffr"]=0x1D523,
- ["filig"]=0x0FB01,
- ["FilledSmallSquare"]=0x025FC,
- ["FilledVerySmallSquare"]=0x025AA,
- ["flat"]=0x0266D,
- ["fllig"]=0x0FB02,
- ["fltns"]=0x025B1,
- ["fnof"]=0x00192,
- ["Fopf"]=0x1D53D,
- ["fopf"]=0x1D557,
- ["ForAll"]=0x02200,
- ["forall"]=0x02200,
- ["fork"]=0x022D4,
- ["forkv"]=0x02AD9,
- ["Fouriertrf"]=0x02131,
- ["fpartint"]=0x02A0D,
- ["frac12"]=0x000BD,
- ["frac13"]=0x02153,
- ["frac14"]=0x000BC,
- ["frac15"]=0x02155,
- ["frac16"]=0x02159,
- ["frac18"]=0x0215B,
- ["frac23"]=0x02154,
- ["frac25"]=0x02156,
- ["frac34"]=0x000BE,
- ["frac35"]=0x02157,
- ["frac38"]=0x0215C,
- ["frac45"]=0x02158,
- ["frac56"]=0x0215A,
- ["frac58"]=0x0215D,
- ["frac78"]=0x0215E,
- ["frown"]=0x02322,
- ["Fscr"]=0x02131,
- ["fscr"]=0x1D4BB,
- ["gacute"]=0x001F5,
- ["Gamma"]=0x00393,
- ["gamma"]=0x003B3,
- ["Gammad"]=0x003DC,
- ["gammad"]=0x003DD,
- ["gap"]=0x02A86,
- ["Gbreve"]=0x0011E,
- ["gbreve"]=0x0011F,
- ["Gcedil"]=0x00122,
- ["Gcirc"]=0x0011C,
- ["gcirc"]=0x0011D,
- ["Gcy"]=0x00413,
- ["gcy"]=0x00433,
- ["Gdot"]=0x00120,
- ["gdot"]=0x00121,
- ["gE"]=0x02267,
- ["ge"]=0x02265,
- ["gEl"]=0x02A8C,
- ["gel"]=0x022DB,
- ["geq"]=0x02265,
- ["geqq"]=0x02267,
- ["geqslant"]=0x02A7E,
- ["ges"]=0x02A7E,
- ["gescc"]=0x02AA9,
- ["gesdot"]=0x02A80,
- ["gesdoto"]=0x02A82,
- ["gesdotol"]=0x02A84,
- ["gesl"]=0x022DB,
- ["gesles"]=0x02A94,
- ["Gfr"]=0x1D50A,
- ["gfr"]=0x1D524,
- ["Gg"]=0x022D9,
- ["gg"]=0x0226B,
- ["ggg"]=0x022D9,
- ["gimel"]=0x02137,
- ["GJcy"]=0x00403,
- ["gjcy"]=0x00453,
- ["gl"]=0x02277,
- ["gla"]=0x02AA5,
- ["glE"]=0x02A92,
- ["glj"]=0x02AA4,
- ["gnap"]=0x02A8A,
- ["gnapprox"]=0x02A8A,
- ["gnE"]=0x02269,
- ["gne"]=0x02A88,
- ["gneq"]=0x02A88,
- ["gneqq"]=0x02269,
- ["gnsim"]=0x022E7,
- ["Gopf"]=0x1D53E,
- ["gopf"]=0x1D558,
- ["grave"]=0x00060,
- ["GreaterEqual"]=0x02265,
- ["GreaterEqualLess"]=0x022DB,
- ["GreaterFullEqual"]=0x02267,
- ["GreaterGreater"]=0x02AA2,
- ["GreaterLess"]=0x02277,
- ["GreaterSlantEqual"]=0x02A7E,
- ["GreaterTilde"]=0x02273,
- ["Gscr"]=0x1D4A2,
- ["gscr"]=0x0210A,
- ["gsim"]=0x02273,
- ["gsime"]=0x02A8E,
- ["gsiml"]=0x02A90,
- ["Gt"]=0x0226B,
- ["gt"]=0x0003E,
- ["gtcc"]=0x02AA7,
- ["gtcir"]=0x02A7A,
- ["gtdot"]=0x022D7,
- ["gtlPar"]=0x02995,
- ["gtquest"]=0x02A7C,
- ["gtrapprox"]=0x02A86,
- ["gtrarr"]=0x02978,
- ["gtrdot"]=0x022D7,
- ["gtreqless"]=0x022DB,
- ["gtreqqless"]=0x02A8C,
- ["gtrless"]=0x02277,
- ["gtrsim"]=0x02273,
- ["gvertneqq"]=0x02269,
- ["gvnE"]=0x02269,
- ["Hacek"]=0x002C7,
- ["hairsp"]=0x0200A,
- ["half"]=0x000BD,
- ["hamilt"]=0x0210B,
- ["HARDcy"]=0x0042A,
- ["hardcy"]=0x0044A,
- ["hArr"]=0x021D4,
- ["harr"]=0x02194,
- ["harrcir"]=0x02948,
- ["harrw"]=0x021AD,
- ["Hat"]=0x0005E,
- ["hbar"]=0x0210F,
- ["Hcirc"]=0x00124,
- ["hcirc"]=0x00125,
- ["hearts"]=0x02665,
- ["heartsuit"]=0x02665,
- ["hellip"]=0x02026,
- ["hercon"]=0x022B9,
- ["Hfr"]=0x0210C,
- ["hfr"]=0x1D525,
- ["HilbertSpace"]=0x0210B,
- ["hksearow"]=0x02925,
- ["hkswarow"]=0x02926,
- ["hoarr"]=0x021FF,
- ["homtht"]=0x0223B,
- ["hookleftarrow"]=0x021A9,
- ["hookrightarrow"]=0x021AA,
- ["Hopf"]=0x0210D,
- ["hopf"]=0x1D559,
- ["horbar"]=0x02015,
- ["HorizontalLine"]=0x02500,
- ["Hscr"]=0x0210B,
- ["hscr"]=0x1D4BD,
- ["hslash"]=0x0210F,
- ["Hstrok"]=0x00126,
- ["hstrok"]=0x00127,
- ["HumpDownHump"]=0x0224E,
- ["HumpEqual"]=0x0224F,
- ["hybull"]=0x02043,
- ["hyphen"]=0x02010,
- ["Iacute"]=0x000CD,
- ["iacute"]=0x000ED,
- ["ic"]=0x02063,
- ["Icirc"]=0x000CE,
- ["icirc"]=0x000EE,
- ["Icy"]=0x00418,
- ["icy"]=0x00438,
- ["Idot"]=0x00130,
- ["IEcy"]=0x00415,
- ["iecy"]=0x00435,
- ["iexcl"]=0x000A1,
- ["iff"]=0x021D4,
- ["Ifr"]=0x02111,
- ["ifr"]=0x1D526,
- ["Igrave"]=0x000CC,
- ["igrave"]=0x000EC,
- ["ii"]=0x02148,
- ["iiiint"]=0x02A0C,
- ["iiint"]=0x0222D,
- ["iinfin"]=0x029DC,
- ["iiota"]=0x02129,
- ["IJlig"]=0x00132,
- ["ijlig"]=0x00133,
- ["Im"]=0x02111,
- ["Imacr"]=0x0012A,
- ["imacr"]=0x0012B,
- ["image"]=0x02111,
- ["ImaginaryI"]=0x02148,
- ["imagline"]=0x02110,
- ["imagpart"]=0x02111,
- ["imath"]=0x00131,
- ["imof"]=0x022B7,
- ["imped"]=0x001B5,
- ["Implies"]=0x021D2,
- ["in"]=0x02208,
- ["incare"]=0x02105,
- ["infin"]=0x0221E,
- ["infintie"]=0x029DD,
- ["inodot"]=0x00131,
- ["Int"]=0x0222C,
- ["int"]=0x0222B,
- ["intcal"]=0x022BA,
- ["integers"]=0x02124,
- ["Integral"]=0x0222B,
- ["intercal"]=0x022BA,
- ["Intersection"]=0x022C2,
- ["intlarhk"]=0x02A17,
- ["intprod"]=0x02A3C,
- ["InvisibleComma"]=0x02063,
- ["InvisibleTimes"]=0x02062,
- ["IOcy"]=0x00401,
- ["iocy"]=0x00451,
- ["Iogon"]=0x0012E,
- ["iogon"]=0x0012F,
- ["Iopf"]=0x1D540,
- ["iopf"]=0x1D55A,
- ["iota"]=0x003B9,
- ["iprod"]=0x02A3C,
- ["iquest"]=0x000BF,
- ["Iscr"]=0x02110,
- ["iscr"]=0x1D4BE,
- ["isin"]=0x02208,
- ["isindot"]=0x022F5,
- ["isinE"]=0x022F9,
- ["isins"]=0x022F4,
- ["isinsv"]=0x022F3,
- ["isinv"]=0x02208,
- ["it"]=0x02062,
- ["Itilde"]=0x00128,
- ["itilde"]=0x00129,
- ["Iukcy"]=0x00406,
- ["iukcy"]=0x00456,
- ["Iuml"]=0x000CF,
- ["iuml"]=0x000EF,
- ["Jcirc"]=0x00134,
- ["jcirc"]=0x00135,
- ["Jcy"]=0x00419,
- ["jcy"]=0x00439,
- ["Jfr"]=0x1D50D,
- ["jfr"]=0x1D527,
- ["jmath"]=0x0006A,
- ["Jopf"]=0x1D541,
- ["jopf"]=0x1D55B,
- ["Jscr"]=0x1D4A5,
- ["jscr"]=0x1D4BF,
- ["Jsercy"]=0x00408,
- ["jsercy"]=0x00458,
- ["Jukcy"]=0x00404,
- ["jukcy"]=0x00454,
- ["kappa"]=0x003BA,
- ["kappav"]=0x003F0,
- ["Kcedil"]=0x00136,
- ["kcedil"]=0x00137,
- ["Kcy"]=0x0041A,
- ["kcy"]=0x0043A,
- ["Kfr"]=0x1D50E,
- ["kfr"]=0x1D528,
- ["kgreen"]=0x00138,
- ["KHcy"]=0x00425,
- ["khcy"]=0x00445,
- ["KJcy"]=0x0040C,
- ["kjcy"]=0x0045C,
- ["Kopf"]=0x1D542,
- ["kopf"]=0x1D55C,
- ["Kscr"]=0x1D4A6,
- ["kscr"]=0x1D4C0,
- ["lAarr"]=0x021DA,
- ["Lacute"]=0x00139,
- ["lacute"]=0x0013A,
- ["laemptyv"]=0x029B4,
- ["lagran"]=0x02112,
- ["Lambda"]=0x0039B,
- ["lambda"]=0x003BB,
- ["Lang"]=0x0300A,
- ["lang"]=0x02329,
- ["langd"]=0x02991,
- ["langle"]=0x02329,
- ["lap"]=0x02A85,
- ["Laplacetrf"]=0x02112,
- ["laquo"]=0x000AB,
- ["Larr"]=0x0219E,
- ["lArr"]=0x021D0,
- ["larr"]=0x02190,
- ["larrb"]=0x021E4,
- ["larrbfs"]=0x0291F,
- ["larrfs"]=0x0291D,
- ["larrhk"]=0x021A9,
- ["larrlp"]=0x021AB,
- ["larrpl"]=0x02939,
- ["larrsim"]=0x02973,
- ["larrtl"]=0x021A2,
- ["lat"]=0x02AAB,
- ["lAtail"]=0x0291B,
- ["latail"]=0x02919,
- ["late"]=0x02AAD,
- ["lates"]=0x02AAD,
- ["lBarr"]=0x0290E,
- ["lbarr"]=0x0290C,
- ["lbbrk"]=0x03014,
- ["lbrace"]=0x0007B,
- ["lbrack"]=0x0005B,
- ["lbrke"]=0x0298B,
- ["lbrksld"]=0x0298F,
- ["lbrkslu"]=0x0298D,
- ["Lcaron"]=0x0013D,
- ["lcaron"]=0x0013E,
- ["Lcedil"]=0x0013B,
- ["lcedil"]=0x0013C,
- ["lceil"]=0x02308,
- ["lcub"]=0x0007B,
- ["Lcy"]=0x0041B,
- ["lcy"]=0x0043B,
- ["ldca"]=0x02936,
- ["ldquo"]=0x0201C,
- ["ldquor"]=0x0201E,
- ["ldrdhar"]=0x02967,
- ["ldrushar"]=0x0294B,
- ["ldsh"]=0x021B2,
- ["lE"]=0x02266,
- ["le"]=0x02264,
- ["LeftAngleBracket"]=0x02329,
- ["LeftArrow"]=0x02190,
- ["Leftarrow"]=0x021D0,
- ["leftarrow"]=0x02190,
- ["LeftArrowBar"]=0x021E4,
- ["LeftArrowRightArrow"]=0x021C6,
- ["leftarrowtail"]=0x021A2,
- ["LeftCeiling"]=0x02308,
- ["LeftDoubleBracket"]=0x0301A,
- ["LeftDownTeeVector"]=0x02961,
- ["LeftDownVector"]=0x021C3,
- ["LeftDownVectorBar"]=0x02959,
- ["LeftFloor"]=0x0230A,
- ["leftharpoondown"]=0x021BD,
- ["leftharpoonup"]=0x021BC,
- ["leftleftarrows"]=0x021C7,
- ["LeftRightArrow"]=0x02194,
- ["Leftrightarrow"]=0x021D4,
- ["leftrightarrow"]=0x02194,
- ["leftrightarrows"]=0x021C6,
- ["leftrightharpoons"]=0x021CB,
- ["leftrightsquigarrow"]=0x021AD,
- ["LeftRightVector"]=0x0294E,
- ["LeftTee"]=0x022A3,
- ["LeftTeeArrow"]=0x021A4,
- ["LeftTeeVector"]=0x0295A,
- ["leftthreetimes"]=0x022CB,
- ["LeftTriangle"]=0x022B2,
- ["LeftTriangleBar"]=0x029CF,
- ["LeftTriangleEqual"]=0x022B4,
- ["LeftUpDownVector"]=0x02951,
- ["LeftUpTeeVector"]=0x02960,
- ["LeftUpVector"]=0x021BF,
- ["LeftUpVectorBar"]=0x02958,
- ["LeftVector"]=0x021BC,
- ["LeftVectorBar"]=0x02952,
- ["lEg"]=0x02A8B,
- ["leg"]=0x022DA,
- ["leq"]=0x02264,
- ["leqq"]=0x02266,
- ["leqslant"]=0x02A7D,
- ["les"]=0x02A7D,
- ["lescc"]=0x02AA8,
- ["lesdot"]=0x02A7F,
- ["lesdoto"]=0x02A81,
- ["lesdotor"]=0x02A83,
- ["lesg"]=0x022DA,
- ["lesges"]=0x02A93,
- ["lessapprox"]=0x02A85,
- ["lessdot"]=0x022D6,
- ["lesseqgtr"]=0x022DA,
- ["lesseqqgtr"]=0x02A8B,
- ["LessEqualGreater"]=0x022DA,
- ["LessFullEqual"]=0x02266,
- ["LessGreater"]=0x02276,
- ["lessgtr"]=0x02276,
- ["LessLess"]=0x02AA1,
- ["lesssim"]=0x02272,
- ["LessSlantEqual"]=0x02A7D,
- ["LessTilde"]=0x02272,
- ["lfisht"]=0x0297C,
- ["lfloor"]=0x0230A,
- ["Lfr"]=0x1D50F,
- ["lfr"]=0x1D529,
- ["lg"]=0x02276,
- ["lgE"]=0x02A91,
- ["lHar"]=0x02962,
- ["lhard"]=0x021BD,
- ["lharu"]=0x021BC,
- ["lharul"]=0x0296A,
- ["lhblk"]=0x02584,
- ["LJcy"]=0x00409,
- ["ljcy"]=0x00459,
- ["Ll"]=0x022D8,
- ["ll"]=0x0226A,
- ["llarr"]=0x021C7,
- ["llcorner"]=0x0231E,
- ["Lleftarrow"]=0x021DA,
- ["llhard"]=0x0296B,
- ["lltri"]=0x025FA,
- ["Lmidot"]=0x0013F,
- ["lmidot"]=0x00140,
- ["lmoust"]=0x023B0,
- ["lmoustache"]=0x023B0,
- ["lnap"]=0x02A89,
- ["lnapprox"]=0x02A89,
- ["lnE"]=0x02268,
- ["lne"]=0x02A87,
- ["lneq"]=0x02A87,
- ["lneqq"]=0x02268,
- ["lnsim"]=0x022E6,
- ["loang"]=0x03018,
- ["loarr"]=0x021FD,
- ["lobrk"]=0x0301A,
- ["LongLeftArrow"]=0x027F5,
- ["Longleftarrow"]=0x027F8,
- ["longleftarrow"]=0x027F5,
- ["LongLeftRightArrow"]=0x027F7,
- ["Longleftrightarrow"]=0x027FA,
- ["longleftrightarrow"]=0x027F7,
- ["longmapsto"]=0x027FC,
- ["LongRightArrow"]=0x027F6,
- ["Longrightarrow"]=0x027F9,
- ["longrightarrow"]=0x027F6,
- ["looparrowleft"]=0x021AB,
- ["looparrowright"]=0x021AC,
- ["lopar"]=0x02985,
- ["Lopf"]=0x1D543,
- ["lopf"]=0x1D55D,
- ["loplus"]=0x02A2D,
- ["lotimes"]=0x02A34,
- ["lowast"]=0x02217,
- ["lowbar"]=0x0005F,
- ["LowerLeftArrow"]=0x02199,
- ["LowerRightArrow"]=0x02198,
- ["loz"]=0x025CA,
- ["lozenge"]=0x025CA,
- ["lozf"]=0x029EB,
- ["lpar"]=0x00028,
- ["lparlt"]=0x02993,
- ["lrarr"]=0x021C6,
- ["lrcorner"]=0x0231F,
- ["lrhar"]=0x021CB,
- ["lrhard"]=0x0296D,
- ["lrtri"]=0x022BF,
- ["Lscr"]=0x02112,
- ["lscr"]=0x1D4C1,
- ["Lsh"]=0x021B0,
- ["lsh"]=0x021B0,
- ["lsim"]=0x02272,
- ["lsime"]=0x02A8D,
- ["lsimg"]=0x02A8F,
- ["lsqb"]=0x0005B,
- ["lsquo"]=0x02018,
- ["lsquor"]=0x0201A,
- ["Lstrok"]=0x00141,
- ["lstrok"]=0x00142,
- ["Lt"]=0x0226A,
- ["lt"]=0x0003C,
- ["ltcc"]=0x02AA6,
- ["ltcir"]=0x02A79,
- ["ltdot"]=0x022D6,
- ["lthree"]=0x022CB,
- ["ltimes"]=0x022C9,
- ["ltlarr"]=0x02976,
- ["ltquest"]=0x02A7B,
- ["ltri"]=0x025C3,
- ["ltrie"]=0x022B4,
- ["ltrif"]=0x025C2,
- ["ltrPar"]=0x02996,
- ["lurdshar"]=0x0294A,
- ["luruhar"]=0x02966,
- ["lvertneqq"]=0x02268,
- ["lvnE"]=0x02268,
- ["macr"]=0x000AF,
- ["male"]=0x02642,
- ["malt"]=0x02720,
- ["maltese"]=0x02720,
- ["Map"]=0x02905,
- ["map"]=0x021A6,
- ["mapsto"]=0x021A6,
- ["mapstodown"]=0x021A7,
- ["mapstoleft"]=0x021A4,
- ["mapstoup"]=0x021A5,
- ["marker"]=0x025AE,
- ["mcomma"]=0x02A29,
- ["Mcy"]=0x0041C,
- ["mcy"]=0x0043C,
- ["mdash"]=0x02014,
- ["mDDot"]=0x0223A,
- ["measuredangle"]=0x02221,
- ["MediumSpace"]=0x0205F,
- ["Mellintrf"]=0x02133,
- ["Mfr"]=0x1D510,
- ["mfr"]=0x1D52A,
- ["mho"]=0x02127,
- ["micro"]=0x000B5,
- ["mid"]=0x02223,
- ["midast"]=0x0002A,
- ["midcir"]=0x02AF0,
- ["middot"]=0x000B7,
- ["minus"]=0x02212,
- ["minusb"]=0x0229F,
- ["minusd"]=0x02238,
- ["minusdu"]=0x02A2A,
- ["MinusPlus"]=0x02213,
- ["mlcp"]=0x02ADB,
- ["mldr"]=0x02026,
- ["mnplus"]=0x02213,
- ["models"]=0x022A7,
- ["Mopf"]=0x1D544,
- ["mopf"]=0x1D55E,
- ["mp"]=0x02213,
- ["Mscr"]=0x02133,
- ["mscr"]=0x1D4C2,
- ["mstpos"]=0x0223E,
- ["mu"]=0x003BC,
- ["multimap"]=0x022B8,
- ["mumap"]=0x022B8,
- ["nabla"]=0x02207,
- ["Nacute"]=0x00143,
- ["nacute"]=0x00144,
- ["nang"]=0x02220,
- ["nap"]=0x02249,
- ["napE"]=0x02A70,
- ["napid"]=0x0224B,
- ["napos"]=0x00149,
- ["napprox"]=0x02249,
- ["natur"]=0x0266E,
- ["natural"]=0x0266E,
- ["naturals"]=0x02115,
- ["nbsp"]=0x000A0,
- ["nbump"]=0x0224E,
- ["nbumpe"]=0x0224F,
- ["ncap"]=0x02A43,
- ["Ncaron"]=0x00147,
- ["ncaron"]=0x00148,
- ["Ncedil"]=0x00145,
- ["ncedil"]=0x00146,
- ["ncong"]=0x02247,
- ["ncongdot"]=0x02A6D,
- ["ncup"]=0x02A42,
- ["Ncy"]=0x0041D,
- ["ncy"]=0x0043D,
- ["ndash"]=0x02013,
- ["ne"]=0x02260,
- ["nearhk"]=0x02924,
- ["neArr"]=0x021D7,
- ["nearr"]=0x02197,
- ["nearrow"]=0x02197,
- ["nedot"]=0x02250,
- ["NegativeMediumSpace"]=0x0200B,
- ["NegativeThickSpace"]=0x0200B,
- ["NegativeThinSpace"]=0x0200B,
- ["NegativeVeryThinSpace"]=0x0200B,
- ["nequiv"]=0x02262,
- ["nesear"]=0x02928,
- ["nesim"]=0x02242,
- ["NestedGreaterGreater"]=0x0226B,
- ["NestedLessLess"]=0x0226A,
- ["NewLine"]=0x0000A,
- ["nexist"]=0x02204,
- ["nexists"]=0x02204,
- ["Nfr"]=0x1D511,
- ["nfr"]=0x1D52B,
- ["ngE"]=0x02267,
- ["nge"]=0x02271,
- ["ngeq"]=0x02271,
- ["ngeqq"]=0x02267,
- ["ngeqslant"]=0x02A7E,
- ["nges"]=0x02A7E,
- ["nGg"]=0x022D9,
- ["ngsim"]=0x02275,
- ["nGt"]=0x0226B,
- ["ngt"]=0x0226F,
- ["ngtr"]=0x0226F,
- ["nGtv"]=0x0226B,
- ["nhArr"]=0x021CE,
- ["nharr"]=0x021AE,
- ["nhpar"]=0x02AF2,
- ["ni"]=0x0220B,
- ["nis"]=0x022FC,
- ["nisd"]=0x022FA,
- ["niv"]=0x0220B,
- ["NJcy"]=0x0040A,
- ["njcy"]=0x0045A,
- ["nlArr"]=0x021CD,
- ["nlarr"]=0x0219A,
- ["nldr"]=0x02025,
- ["nlE"]=0x02266,
- ["nle"]=0x02270,
- ["nLeftarrow"]=0x021CD,
- ["nleftarrow"]=0x0219A,
- ["nLeftrightarrow"]=0x021CE,
- ["nleftrightarrow"]=0x021AE,
- ["nleq"]=0x02270,
- ["nleqq"]=0x02266,
- ["nleqslant"]=0x02A7D,
- ["nles"]=0x02A7D,
- ["nless"]=0x0226E,
- ["nLl"]=0x022D8,
- ["nlsim"]=0x02274,
- ["nLt"]=0x0226A,
- ["nlt"]=0x0226E,
- ["nltri"]=0x022EA,
- ["nltrie"]=0x022EC,
- ["nLtv"]=0x0226A,
- ["nmid"]=0x02224,
- ["NoBreak"]=0x02060,
- ["NonBreakingSpace"]=0x000A0,
- ["Nopf"]=0x02115,
- ["nopf"]=0x1D55F,
- ["Not"]=0x02AEC,
- ["not"]=0x000AC,
- ["NotCongruent"]=0x02262,
- ["NotCupCap"]=0x0226D,
- ["NotDoubleVerticalBar"]=0x02226,
- ["NotElement"]=0x02209,
- ["NotEqual"]=0x02260,
- ["NotEqualTilde"]=0x02242,
- ["NotExists"]=0x02204,
- ["NotGreater"]=0x0226F,
- ["NotGreaterEqual"]=0x02271,
- ["NotGreaterFullEqual"]=0x02266,
- ["NotGreaterGreater"]=0x0226B,
- ["NotGreaterLess"]=0x02279,
- ["NotGreaterSlantEqual"]=0x02A7E,
- ["NotGreaterTilde"]=0x02275,
- ["NotHumpDownHump"]=0x0224E,
- ["NotHumpEqual"]=0x0224F,
- ["notin"]=0x02209,
- ["notindot"]=0x022F5,
- ["notinE"]=0x022F9,
- ["notinva"]=0x02209,
- ["notinvb"]=0x022F7,
- ["notinvc"]=0x022F6,
- ["NotLeftTriangle"]=0x022EA,
- ["NotLeftTriangleBar"]=0x029CF,
- ["NotLeftTriangleEqual"]=0x022EC,
- ["NotLess"]=0x0226E,
- ["NotLessEqual"]=0x02270,
- ["NotLessGreater"]=0x02278,
- ["NotLessLess"]=0x0226A,
- ["NotLessSlantEqual"]=0x02A7D,
- ["NotLessTilde"]=0x02274,
- ["NotNestedGreaterGreater"]=0x02AA2,
- ["NotNestedLessLess"]=0x02AA1,
- ["notni"]=0x0220C,
- ["notniva"]=0x0220C,
- ["notnivb"]=0x022FE,
- ["notnivc"]=0x022FD,
- ["NotPrecedes"]=0x02280,
- ["NotPrecedesEqual"]=0x02AAF,
- ["NotPrecedesSlantEqual"]=0x022E0,
- ["NotReverseElement"]=0x0220C,
- ["NotRightTriangle"]=0x022EB,
- ["NotRightTriangleBar"]=0x029D0,
- ["NotRightTriangleEqual"]=0x022ED,
- ["NotSquareSubset"]=0x0228F,
- ["NotSquareSubsetEqual"]=0x022E2,
- ["NotSquareSuperset"]=0x02290,
- ["NotSquareSupersetEqual"]=0x022E3,
- ["NotSubset"]=0x02282,
- ["NotSubsetEqual"]=0x02288,
- ["NotSucceeds"]=0x02281,
- ["NotSucceedsEqual"]=0x02AB0,
- ["NotSucceedsSlantEqual"]=0x022E1,
- ["NotSucceedsTilde"]=0x0227F,
- ["NotSuperset"]=0x02283,
- ["NotSupersetEqual"]=0x02289,
- ["NotTilde"]=0x02241,
- ["NotTildeEqual"]=0x02244,
- ["NotTildeFullEqual"]=0x02247,
- ["NotTildeTilde"]=0x02249,
- ["NotVerticalBar"]=0x02224,
- ["npar"]=0x02226,
- ["nparallel"]=0x02226,
- ["nparsl"]=0x02AFD,
- ["npart"]=0x02202,
- ["npolint"]=0x02A14,
- ["npr"]=0x02280,
- ["nprcue"]=0x022E0,
- ["npre"]=0x02AAF,
- ["nprec"]=0x02280,
- ["npreceq"]=0x02AAF,
- ["nrArr"]=0x021CF,
- ["nrarr"]=0x0219B,
- ["nrarrc"]=0x02933,
- ["nrarrw"]=0x0219D,
- ["nRightarrow"]=0x021CF,
- ["nrightarrow"]=0x0219B,
- ["nrtri"]=0x022EB,
- ["nrtrie"]=0x022ED,
- ["nsc"]=0x02281,
- ["nsccue"]=0x022E1,
- ["nsce"]=0x02AB0,
- ["Nscr"]=0x1D4A9,
- ["nscr"]=0x1D4C3,
- ["nshortmid"]=0x02224,
- ["nshortparallel"]=0x02226,
- ["nsim"]=0x02241,
- ["nsime"]=0x02244,
- ["nsimeq"]=0x02244,
- ["nsmid"]=0x02224,
- ["nspar"]=0x02226,
- ["nsqsube"]=0x022E2,
- ["nsqsupe"]=0x022E3,
- ["nsub"]=0x02284,
- ["nsubE"]=0x02AC5,
- ["nsube"]=0x02288,
- ["nsubset"]=0x02282,
- ["nsubseteq"]=0x02288,
- ["nsubseteqq"]=0x02AC5,
- ["nsucc"]=0x02281,
- ["nsucceq"]=0x02AB0,
- ["nsup"]=0x02285,
- ["nsupE"]=0x02AC6,
- ["nsupe"]=0x02289,
- ["nsupset"]=0x02283,
- ["nsupseteq"]=0x02289,
- ["nsupseteqq"]=0x02AC6,
- ["ntgl"]=0x02279,
- ["Ntilde"]=0x000D1,
- ["ntilde"]=0x000F1,
- ["ntlg"]=0x02278,
- ["ntriangleleft"]=0x022EA,
- ["ntrianglelefteq"]=0x022EC,
- ["ntriangleright"]=0x022EB,
- ["ntrianglerighteq"]=0x022ED,
- ["nu"]=0x003BD,
- ["num"]=0x00023,
- ["numero"]=0x02116,
- ["numsp"]=0x02007,
- ["nvap"]=0x0224D,
- ["nVDash"]=0x022AF,
- ["nVdash"]=0x022AE,
- ["nvDash"]=0x022AD,
- ["nvdash"]=0x022AC,
- ["nvge"]=0x02265,
- ["nvgt"]=0x0003E,
- ["nvHarr"]=0x02904,
- ["nvinfin"]=0x029DE,
- ["nvlArr"]=0x02902,
- ["nvle"]=0x02264,
- ["nvlt"]=0x0003C,
- ["nvltrie"]=0x022B4,
- ["nvrArr"]=0x02903,
- ["nvrtrie"]=0x022B5,
- ["nvsim"]=0x0223C,
- ["nwarhk"]=0x02923,
- ["nwArr"]=0x021D6,
- ["nwarr"]=0x02196,
- ["nwarrow"]=0x02196,
- ["nwnear"]=0x02927,
- ["Oacute"]=0x000D3,
- ["oacute"]=0x000F3,
- ["oast"]=0x0229B,
- ["ocir"]=0x0229A,
- ["Ocirc"]=0x000D4,
- ["ocirc"]=0x000F4,
- ["Ocy"]=0x0041E,
- ["ocy"]=0x0043E,
- ["odash"]=0x0229D,
- ["Odblac"]=0x00150,
- ["odblac"]=0x00151,
- ["odiv"]=0x02A38,
- ["odot"]=0x02299,
- ["odsold"]=0x029BC,
- ["OElig"]=0x00152,
- ["oelig"]=0x00153,
- ["ofcir"]=0x029BF,
- ["Ofr"]=0x1D512,
- ["ofr"]=0x1D52C,
- ["ogon"]=0x002DB,
- ["Ograve"]=0x000D2,
- ["ograve"]=0x000F2,
- ["ogt"]=0x029C1,
- ["ohbar"]=0x029B5,
- ["ohm"]=0x02126,
- ["oint"]=0x0222E,
- ["olarr"]=0x021BA,
- ["olcir"]=0x029BE,
- ["olcross"]=0x029BB,
- ["olt"]=0x029C0,
- ["Omacr"]=0x0014C,
- ["omacr"]=0x0014D,
- ["Omega"]=0x003A9,
- ["omega"]=0x003C9,
- ["omid"]=0x029B6,
- ["ominus"]=0x02296,
- ["Oopf"]=0x1D546,
- ["oopf"]=0x1D560,
- ["opar"]=0x029B7,
- ["OpenCurlyDoubleQuote"]=0x0201C,
- ["OpenCurlyQuote"]=0x02018,
- ["operp"]=0x029B9,
- ["oplus"]=0x02295,
- ["Or"]=0x02A54,
- ["or"]=0x02228,
- ["orarr"]=0x021BB,
- ["ord"]=0x02A5D,
- ["order"]=0x02134,
- ["orderof"]=0x02134,
- ["ordf"]=0x000AA,
- ["ordm"]=0x000BA,
- ["origof"]=0x022B6,
- ["oror"]=0x02A56,
- ["orslope"]=0x02A57,
- ["orv"]=0x02A5B,
- ["oS"]=0x024C8,
- ["Oscr"]=0x1D4AA,
- ["oscr"]=0x02134,
- ["Oslash"]=0x000D8,
- ["oslash"]=0x000F8,
- ["osol"]=0x02298,
- ["Otilde"]=0x000D5,
- ["otilde"]=0x000F5,
- ["Otimes"]=0x02A37,
- ["otimes"]=0x02297,
- ["otimesas"]=0x02A36,
- ["Ouml"]=0x000D6,
- ["ouml"]=0x000F6,
- ["ovbar"]=0x0233D,
- ["OverBar"]=0x000AF,
- ["OverBrace"]=0x0FE37,
- ["OverBracket"]=0x023B4,
- ["OverParenthesis"]=0x0FE35,
- ["par"]=0x02225,
- ["para"]=0x000B6,
- ["parallel"]=0x02225,
- ["parsim"]=0x02AF3,
- ["parsl"]=0x02AFD,
- ["part"]=0x02202,
- ["PartialD"]=0x02202,
- ["Pcy"]=0x0041F,
- ["pcy"]=0x0043F,
- ["percnt"]=0x00025,
- ["period"]=0x0002E,
- ["permil"]=0x02030,
- ["perp"]=0x022A5,
- ["pertenk"]=0x02031,
- ["Pfr"]=0x1D513,
- ["pfr"]=0x1D52D,
- ["Phi"]=0x003A6,
- ["phi"]=0x003D5,
- ["phiv"]=0x003C6,
- ["phmmat"]=0x02133,
- ["phone"]=0x0260E,
- ["Pi"]=0x003A0,
- ["pi"]=0x003C0,
- ["pitchfork"]=0x022D4,
- ["piv"]=0x003D6,
- ["planck"]=0x0210F,
- ["planckh"]=0x0210E,
- ["plankv"]=0x0210F,
- ["plus"]=0x0002B,
- ["plusacir"]=0x02A23,
- ["plusb"]=0x0229E,
- ["pluscir"]=0x02A22,
- ["plusdo"]=0x02214,
- ["plusdu"]=0x02A25,
- ["pluse"]=0x02A72,
- ["PlusMinus"]=0x000B1,
- ["plusmn"]=0x000B1,
- ["plussim"]=0x02A26,
- ["plustwo"]=0x02A27,
- ["pm"]=0x000B1,
- ["Poincareplane"]=0x0210C,
- ["pointint"]=0x02A15,
- ["Popf"]=0x02119,
- ["popf"]=0x1D561,
- ["pound"]=0x000A3,
- ["Pr"]=0x02ABB,
- ["pr"]=0x0227A,
- ["prap"]=0x02AB7,
- ["prcue"]=0x0227C,
- ["prE"]=0x02AB3,
- ["pre"]=0x02AAF,
- ["prec"]=0x0227A,
- ["precapprox"]=0x02AB7,
- ["preccurlyeq"]=0x0227C,
- ["Precedes"]=0x0227A,
- ["PrecedesEqual"]=0x02AAF,
- ["PrecedesSlantEqual"]=0x0227C,
- ["PrecedesTilde"]=0x0227E,
- ["preceq"]=0x02AAF,
- ["precnapprox"]=0x02AB9,
- ["precneqq"]=0x02AB5,
- ["precnsim"]=0x022E8,
- ["precsim"]=0x0227E,
- ["Prime"]=0x02033,
- ["prime"]=0x02032,
- ["primes"]=0x02119,
- ["prnap"]=0x02AB9,
- ["prnE"]=0x02AB5,
- ["prnsim"]=0x022E8,
- ["prod"]=0x0220F,
- ["Product"]=0x0220F,
- ["profalar"]=0x0232E,
- ["profline"]=0x02312,
- ["profsurf"]=0x02313,
- ["prop"]=0x0221D,
- ["Proportion"]=0x02237,
- ["Proportional"]=0x0221D,
- ["propto"]=0x0221D,
- ["prsim"]=0x0227E,
- ["prurel"]=0x022B0,
- ["Pscr"]=0x1D4AB,
- ["pscr"]=0x1D4C5,
- ["Psi"]=0x003A8,
- ["psi"]=0x003C8,
- ["puncsp"]=0x02008,
- ["Qfr"]=0x1D514,
- ["qfr"]=0x1D52E,
- ["qint"]=0x02A0C,
- ["Qopf"]=0x0211A,
- ["qopf"]=0x1D562,
- ["qprime"]=0x02057,
- ["Qscr"]=0x1D4AC,
- ["qscr"]=0x1D4C6,
- ["quaternions"]=0x0210D,
- ["quatint"]=0x02A16,
- ["quest"]=0x0003F,
- ["questeq"]=0x0225F,
- ["quot"]=0x00022,
- ["rAarr"]=0x021DB,
- ["race"]=0x029DA,
- ["Racute"]=0x00154,
- ["racute"]=0x00155,
- ["radic"]=0x0221A,
- ["raemptyv"]=0x029B3,
- ["Rang"]=0x0300B,
- ["rang"]=0x0232A,
- ["rangd"]=0x02992,
- ["range"]=0x029A5,
- ["rangle"]=0x0232A,
- ["raquo"]=0x000BB,
- ["Rarr"]=0x021A0,
- ["rArr"]=0x021D2,
- ["rarr"]=0x02192,
- ["rarrap"]=0x02975,
- ["rarrb"]=0x021E5,
- ["rarrbfs"]=0x02920,
- ["rarrc"]=0x02933,
- ["rarrfs"]=0x0291E,
- ["rarrhk"]=0x021AA,
- ["rarrlp"]=0x021AC,
- ["rarrpl"]=0x02945,
- ["rarrsim"]=0x02974,
- ["Rarrtl"]=0x02916,
- ["rarrtl"]=0x021A3,
- ["rarrw"]=0x0219D,
- ["rAtail"]=0x0291C,
- ["ratail"]=0x0291A,
- ["ratio"]=0x02236,
- ["rationals"]=0x0211A,
- ["RBarr"]=0x02910,
- ["rBarr"]=0x0290F,
- ["rbarr"]=0x0290D,
- ["rbbrk"]=0x03015,
- ["rbrace"]=0x0007D,
- ["rbrack"]=0x0005D,
- ["rbrke"]=0x0298C,
- ["rbrksld"]=0x0298E,
- ["rbrkslu"]=0x02990,
- ["Rcaron"]=0x00158,
- ["rcaron"]=0x00159,
- ["Rcedil"]=0x00156,
- ["rcedil"]=0x00157,
- ["rceil"]=0x02309,
- ["rcub"]=0x0007D,
- ["Rcy"]=0x00420,
- ["rcy"]=0x00440,
- ["rdca"]=0x02937,
- ["rdldhar"]=0x02969,
- ["rdquo"]=0x0201D,
- ["rdquor"]=0x0201D,
- ["rdsh"]=0x021B3,
- ["Re"]=0x0211C,
- ["real"]=0x0211C,
- ["realine"]=0x0211B,
- ["realpart"]=0x0211C,
- ["reals"]=0x0211D,
- ["rect"]=0x025AD,
- ["reg"]=0x000AE,
- ["ReverseElement"]=0x0220B,
- ["ReverseEquilibrium"]=0x021CB,
- ["ReverseUpEquilibrium"]=0x0296F,
- ["rfisht"]=0x0297D,
- ["rfloor"]=0x0230B,
- ["Rfr"]=0x0211C,
- ["rfr"]=0x1D52F,
- ["rHar"]=0x02964,
- ["rhard"]=0x021C1,
- ["rharu"]=0x021C0,
- ["rharul"]=0x0296C,
- ["rho"]=0x003C1,
- ["rhov"]=0x003F1,
- ["RightAngleBracket"]=0x0232A,
- ["RightArrow"]=0x02192,
- ["Rightarrow"]=0x021D2,
- ["rightarrow"]=0x02192,
- ["RightArrowBar"]=0x021E5,
- ["RightArrowLeftArrow"]=0x021C4,
- ["rightarrowtail"]=0x021A3,
- ["RightCeiling"]=0x02309,
- ["RightDoubleBracket"]=0x0301B,
- ["RightDownTeeVector"]=0x0295D,
- ["RightDownVector"]=0x021C2,
- ["RightDownVectorBar"]=0x02955,
- ["RightFloor"]=0x0230B,
- ["rightharpoondown"]=0x021C1,
- ["rightharpoonup"]=0x021C0,
- ["rightleftarrows"]=0x021C4,
- ["rightleftharpoons"]=0x021CC,
- ["rightrightarrows"]=0x021C9,
- ["rightsquigarrow"]=0x0219D,
- ["RightTee"]=0x022A2,
- ["RightTeeArrow"]=0x021A6,
- ["RightTeeVector"]=0x0295B,
- ["rightthreetimes"]=0x022CC,
- ["RightTriangle"]=0x022B3,
- ["RightTriangleBar"]=0x029D0,
- ["RightTriangleEqual"]=0x022B5,
- ["RightUpDownVector"]=0x0294F,
- ["RightUpTeeVector"]=0x0295C,
- ["RightUpVector"]=0x021BE,
- ["RightUpVectorBar"]=0x02954,
- ["RightVector"]=0x021C0,
- ["RightVectorBar"]=0x02953,
- ["ring"]=0x002DA,
- ["risingdotseq"]=0x02253,
- ["rlarr"]=0x021C4,
- ["rlhar"]=0x021CC,
- ["rmoust"]=0x023B1,
- ["rmoustache"]=0x023B1,
- ["rnmid"]=0x02AEE,
- ["roang"]=0x03019,
- ["roarr"]=0x021FE,
- ["robrk"]=0x0301B,
- ["ropar"]=0x02986,
- ["Ropf"]=0x0211D,
- ["ropf"]=0x1D563,
- ["roplus"]=0x02A2E,
- ["rotimes"]=0x02A35,
- ["RoundImplies"]=0x02970,
- ["rpar"]=0x00029,
- ["rpargt"]=0x02994,
- ["rppolint"]=0x02A12,
- ["rrarr"]=0x021C9,
- ["Rrightarrow"]=0x021DB,
- ["Rscr"]=0x0211B,
- ["rscr"]=0x1D4C7,
- ["Rsh"]=0x021B1,
- ["rsh"]=0x021B1,
- ["rsqb"]=0x0005D,
- ["rsquo"]=0x02019,
- ["rsquor"]=0x02019,
- ["rthree"]=0x022CC,
- ["rtimes"]=0x022CA,
- ["rtri"]=0x025B9,
- ["rtrie"]=0x022B5,
- ["rtrif"]=0x025B8,
- ["rtriltri"]=0x029CE,
- ["RuleDelayed"]=0x029F4,
- ["ruluhar"]=0x02968,
- ["rx"]=0x0211E,
- ["Sacute"]=0x0015A,
- ["sacute"]=0x0015B,
- ["Sc"]=0x02ABC,
- ["sc"]=0x0227B,
- ["scap"]=0x02AB8,
- ["Scaron"]=0x00160,
- ["scaron"]=0x00161,
- ["sccue"]=0x0227D,
- ["scE"]=0x02AB4,
- ["sce"]=0x02AB0,
- ["Scedil"]=0x0015E,
- ["scedil"]=0x0015F,
- ["Scirc"]=0x0015C,
- ["scirc"]=0x0015D,
- ["scnap"]=0x02ABA,
- ["scnE"]=0x02AB6,
- ["scnsim"]=0x022E9,
- ["scpolint"]=0x02A13,
- ["scsim"]=0x0227F,
- ["Scy"]=0x00421,
- ["scy"]=0x00441,
- ["sdot"]=0x022C5,
- ["sdotb"]=0x022A1,
- ["sdote"]=0x02A66,
- ["searhk"]=0x02925,
- ["seArr"]=0x021D8,
- ["searr"]=0x02198,
- ["searrow"]=0x02198,
- ["sect"]=0x000A7,
- ["semi"]=0x0003B,
- ["seswar"]=0x02929,
- ["setminus"]=0x02216,
- ["setmn"]=0x02216,
- ["sext"]=0x02736,
- ["Sfr"]=0x1D516,
- ["sfr"]=0x1D530,
- ["sfrown"]=0x02322,
- ["sharp"]=0x0266F,
- ["SHCHcy"]=0x00429,
- ["shchcy"]=0x00449,
- ["SHcy"]=0x00428,
- ["shcy"]=0x00448,
- ["ShortDownArrow"]=0x02193,
- ["ShortLeftArrow"]=0x02190,
- ["shortmid"]=0x02223,
- ["shortparallel"]=0x02225,
- ["ShortRightArrow"]=0x02192,
- ["ShortUpArrow"]=0x02191,
- ["shy"]=0x000AD,
- ["Sigma"]=0x003A3,
- ["sigma"]=0x003C3,
- ["sigmav"]=0x003C2,
- ["sim"]=0x0223C,
- ["simdot"]=0x02A6A,
- ["sime"]=0x02243,
- ["simeq"]=0x02243,
- ["simg"]=0x02A9E,
- ["simgE"]=0x02AA0,
- ["siml"]=0x02A9D,
- ["simlE"]=0x02A9F,
- ["simne"]=0x02246,
- ["simplus"]=0x02A24,
- ["simrarr"]=0x02972,
- ["slarr"]=0x02190,
- ["SmallCircle"]=0x02218,
- ["smallsetminus"]=0x02216,
- ["smashp"]=0x02A33,
- ["smeparsl"]=0x029E4,
- ["smid"]=0x02223,
- ["smile"]=0x02323,
- ["smt"]=0x02AAA,
- ["smte"]=0x02AAC,
- ["smtes"]=0x02AAC,
- ["SOFTcy"]=0x0042C,
- ["softcy"]=0x0044C,
- ["sol"]=0x0002F,
- ["solb"]=0x029C4,
- ["solbar"]=0x0233F,
- ["Sopf"]=0x1D54A,
- ["sopf"]=0x1D564,
- ["spades"]=0x02660,
- ["spadesuit"]=0x02660,
- ["spar"]=0x02225,
- ["sqcap"]=0x02293,
- ["sqcaps"]=0x02293,
- ["sqcup"]=0x02294,
- ["sqcups"]=0x02294,
- ["Sqrt"]=0x0221A,
- ["sqsub"]=0x0228F,
- ["sqsube"]=0x02291,
- ["sqsubset"]=0x0228F,
- ["sqsubseteq"]=0x02291,
- ["sqsup"]=0x02290,
- ["sqsupe"]=0x02292,
- ["sqsupset"]=0x02290,
- ["sqsupseteq"]=0x02292,
- ["squ"]=0x025A1,
- ["Square"]=0x025A1,
- ["square"]=0x025A1,
- ["SquareIntersection"]=0x02293,
- ["SquareSubset"]=0x0228F,
- ["SquareSubsetEqual"]=0x02291,
- ["SquareSuperset"]=0x02290,
- ["SquareSupersetEqual"]=0x02292,
- ["SquareUnion"]=0x02294,
- ["squarf"]=0x025AA,
- ["squf"]=0x025AA,
- ["srarr"]=0x02192,
- ["Sscr"]=0x1D4AE,
- ["sscr"]=0x1D4C8,
- ["ssetmn"]=0x02216,
- ["ssmile"]=0x02323,
- ["sstarf"]=0x022C6,
- ["Star"]=0x022C6,
- ["star"]=0x02606,
- ["starf"]=0x02605,
- ["straightepsilon"]=0x003F5,
- ["straightphi"]=0x003D5,
- ["strns"]=0x000AF,
- ["Sub"]=0x022D0,
- ["sub"]=0x02282,
- ["subdot"]=0x02ABD,
- ["subE"]=0x02AC5,
- ["sube"]=0x02286,
- ["subedot"]=0x02AC3,
- ["submult"]=0x02AC1,
- ["subnE"]=0x02ACB,
- ["subne"]=0x0228A,
- ["subplus"]=0x02ABF,
- ["subrarr"]=0x02979,
- ["Subset"]=0x022D0,
- ["subset"]=0x02282,
- ["subseteq"]=0x02286,
- ["subseteqq"]=0x02AC5,
- ["SubsetEqual"]=0x02286,
- ["subsetneq"]=0x0228A,
- ["subsetneqq"]=0x02ACB,
- ["subsim"]=0x02AC7,
- ["subsub"]=0x02AD5,
- ["subsup"]=0x02AD3,
- ["succ"]=0x0227B,
- ["succapprox"]=0x02AB8,
- ["succcurlyeq"]=0x0227D,
- ["Succeeds"]=0x0227B,
- ["SucceedsEqual"]=0x02AB0,
- ["SucceedsSlantEqual"]=0x0227D,
- ["SucceedsTilde"]=0x0227F,
- ["succeq"]=0x02AB0,
- ["succnapprox"]=0x02ABA,
- ["succneqq"]=0x02AB6,
- ["succnsim"]=0x022E9,
- ["succsim"]=0x0227F,
- ["SuchThat"]=0x0220B,
- ["Sum"]=0x02211,
- ["sum"]=0x02211,
- ["sung"]=0x0266A,
- ["Sup"]=0x022D1,
- ["sup"]=0x02283,
- ["sup1"]=0x000B9,
- ["sup2"]=0x000B2,
- ["sup3"]=0x000B3,
- ["supdot"]=0x02ABE,
- ["supdsub"]=0x02AD8,
- ["supE"]=0x02AC6,
- ["supe"]=0x02287,
- ["supedot"]=0x02AC4,
- ["Superset"]=0x02283,
- ["SupersetEqual"]=0x02287,
- ["suphsol"]=0x02283,
- ["suphsub"]=0x02AD7,
- ["suplarr"]=0x0297B,
- ["supmult"]=0x02AC2,
- ["supnE"]=0x02ACC,
- ["supne"]=0x0228B,
- ["supplus"]=0x02AC0,
- ["Supset"]=0x022D1,
- ["supset"]=0x02283,
- ["supseteq"]=0x02287,
- ["supseteqq"]=0x02AC6,
- ["supsetneq"]=0x0228B,
- ["supsetneqq"]=0x02ACC,
- ["supsim"]=0x02AC8,
- ["supsub"]=0x02AD4,
- ["supsup"]=0x02AD6,
- ["swarhk"]=0x02926,
- ["swArr"]=0x021D9,
- ["swarr"]=0x02199,
- ["swarrow"]=0x02199,
- ["swnwar"]=0x0292A,
- ["szlig"]=0x000DF,
- ["Tab"]=0x00009,
- ["target"]=0x02316,
- ["tau"]=0x003C4,
- ["tbrk"]=0x023B4,
- ["Tcaron"]=0x00164,
- ["tcaron"]=0x00165,
- ["Tcedil"]=0x00162,
- ["tcedil"]=0x00163,
- ["Tcy"]=0x00422,
- ["tcy"]=0x00442,
- ["tdot"]=0x020DB,
- ["telrec"]=0x02315,
- ["Tfr"]=0x1D517,
- ["tfr"]=0x1D531,
- ["there4"]=0x02234,
- ["Therefore"]=0x02234,
- ["therefore"]=0x02234,
- ["Theta"]=0x00398,
- ["theta"]=0x003B8,
- ["thetav"]=0x003D1,
- ["thickapprox"]=0x02248,
- ["thicksim"]=0x0223C,
- ["ThickSpace"]=0x02009,
- ["thinsp"]=0x02009,
- ["ThinSpace"]=0x02009,
- ["thkap"]=0x02248,
- ["thksim"]=0x0223C,
- ["THORN"]=0x000DE,
- ["thorn"]=0x000FE,
- ["Tilde"]=0x0223C,
- ["tilde"]=0x002DC,
- ["TildeEqual"]=0x02243,
- ["TildeFullEqual"]=0x02245,
- ["TildeTilde"]=0x02248,
- ["times"]=0x000D7,
- ["timesb"]=0x022A0,
- ["timesbar"]=0x02A31,
- ["timesd"]=0x02A30,
- ["tint"]=0x0222D,
- ["toea"]=0x02928,
- ["top"]=0x022A4,
- ["topbot"]=0x02336,
- ["topcir"]=0x02AF1,
- ["Topf"]=0x1D54B,
- ["topf"]=0x1D565,
- ["topfork"]=0x02ADA,
- ["tosa"]=0x02929,
- ["tprime"]=0x02034,
- ["trade"]=0x02122,
- ["triangle"]=0x025B5,
- ["triangledown"]=0x025BF,
- ["triangleleft"]=0x025C3,
- ["trianglelefteq"]=0x022B4,
- ["triangleq"]=0x0225C,
- ["triangleright"]=0x025B9,
- ["trianglerighteq"]=0x022B5,
- ["tridot"]=0x025EC,
- ["trie"]=0x0225C,
- ["triminus"]=0x02A3A,
- ["TripleDot"]=0x020DB,
- ["triplus"]=0x02A39,
- ["trisb"]=0x029CD,
- ["tritime"]=0x02A3B,
- ["trpezium"]=0x0FFFD,
- ["Tscr"]=0x1D4AF,
- ["tscr"]=0x1D4C9,
- ["TScy"]=0x00426,
- ["tscy"]=0x00446,
- ["TSHcy"]=0x0040B,
- ["tshcy"]=0x0045B,
- ["Tstrok"]=0x00166,
- ["tstrok"]=0x00167,
- ["twixt"]=0x0226C,
- ["twoheadleftarrow"]=0x0219E,
- ["twoheadrightarrow"]=0x021A0,
- ["Uacute"]=0x000DA,
- ["uacute"]=0x000FA,
- ["Uarr"]=0x0219F,
- ["uArr"]=0x021D1,
- ["uarr"]=0x02191,
- ["Uarrocir"]=0x02949,
- ["Ubrcy"]=0x0040E,
- ["ubrcy"]=0x0045E,
- ["Ubreve"]=0x0016C,
- ["ubreve"]=0x0016D,
- ["Ucirc"]=0x000DB,
- ["ucirc"]=0x000FB,
- ["Ucy"]=0x00423,
- ["ucy"]=0x00443,
- ["udarr"]=0x021C5,
- ["Udblac"]=0x00170,
- ["udblac"]=0x00171,
- ["udhar"]=0x0296E,
- ["ufisht"]=0x0297E,
- ["Ufr"]=0x1D518,
- ["ufr"]=0x1D532,
- ["Ugrave"]=0x000D9,
- ["ugrave"]=0x000F9,
- ["uHar"]=0x02963,
- ["uharl"]=0x021BF,
- ["uharr"]=0x021BE,
- ["uhblk"]=0x02580,
- ["ulcorn"]=0x0231C,
- ["ulcorner"]=0x0231C,
- ["ulcrop"]=0x0230F,
- ["ultri"]=0x025F8,
- ["Umacr"]=0x0016A,
- ["umacr"]=0x0016B,
- ["uml"]=0x000A8,
- ["UnderBar"]=0x00332,
- ["UnderBrace"]=0x0FE38,
- ["UnderBracket"]=0x023B5,
- ["UnderParenthesis"]=0x0FE36,
- ["Union"]=0x022C3,
- ["UnionPlus"]=0x0228E,
- ["Uogon"]=0x00172,
- ["uogon"]=0x00173,
- ["Uopf"]=0x1D54C,
- ["uopf"]=0x1D566,
- ["UpArrow"]=0x02191,
- ["Uparrow"]=0x021D1,
- ["uparrow"]=0x02191,
- ["UpArrowBar"]=0x02912,
- ["UpArrowDownArrow"]=0x021C5,
- ["UpDownArrow"]=0x02195,
- ["Updownarrow"]=0x021D5,
- ["updownarrow"]=0x02195,
- ["UpEquilibrium"]=0x0296E,
- ["upharpoonleft"]=0x021BF,
- ["upharpoonright"]=0x021BE,
- ["uplus"]=0x0228E,
- ["UpperLeftArrow"]=0x02196,
- ["UpperRightArrow"]=0x02197,
- ["Upsi"]=0x003D2,
- ["upsi"]=0x003C5,
- ["Upsilon"]=0x003A5,
- ["upsilon"]=0x003C5,
- ["UpTee"]=0x022A5,
- ["UpTeeArrow"]=0x021A5,
- ["upuparrows"]=0x021C8,
- ["urcorn"]=0x0231D,
- ["urcorner"]=0x0231D,
- ["urcrop"]=0x0230E,
- ["Uring"]=0x0016E,
- ["uring"]=0x0016F,
- ["urtri"]=0x025F9,
- ["Uscr"]=0x1D4B0,
- ["uscr"]=0x1D4CA,
- ["utdot"]=0x022F0,
- ["Utilde"]=0x00168,
- ["utilde"]=0x00169,
- ["utri"]=0x025B5,
- ["utrif"]=0x025B4,
- ["uuarr"]=0x021C8,
- ["Uuml"]=0x000DC,
- ["uuml"]=0x000FC,
- ["uwangle"]=0x029A7,
- ["vangrt"]=0x0299C,
- ["varepsilon"]=0x003B5,
- ["varkappa"]=0x003F0,
- ["varnothing"]=0x02205,
- ["varphi"]=0x003C6,
- ["varpi"]=0x003D6,
- ["varpropto"]=0x0221D,
- ["vArr"]=0x021D5,
- ["varr"]=0x02195,
- ["varrho"]=0x003F1,
- ["varsigma"]=0x003C2,
- ["varsubsetneq"]=0x0228A,
- ["varsubsetneqq"]=0x02ACB,
- ["varsupsetneq"]=0x0228B,
- ["varsupsetneqq"]=0x02ACC,
- ["vartheta"]=0x003D1,
- ["vartriangleleft"]=0x022B2,
- ["vartriangleright"]=0x022B3,
- ["Vbar"]=0x02AEB,
- ["vBar"]=0x02AE8,
- ["vBarv"]=0x02AE9,
- ["Vcy"]=0x00412,
- ["vcy"]=0x00432,
- ["VDash"]=0x022AB,
- ["Vdash"]=0x022A9,
- ["vDash"]=0x022A8,
- ["vdash"]=0x022A2,
- ["Vdashl"]=0x02AE6,
- ["Vee"]=0x022C1,
- ["vee"]=0x02228,
- ["veebar"]=0x022BB,
- ["veeeq"]=0x0225A,
- ["vellip"]=0x022EE,
- ["Verbar"]=0x02016,
- ["verbar"]=0x0007C,
- ["Vert"]=0x02016,
- ["vert"]=0x0007C,
- ["VerticalBar"]=0x02223,
- ["VerticalLine"]=0x0007C,
- ["VerticalSeparator"]=0x02758,
- ["VerticalTilde"]=0x02240,
- ["VeryThinSpace"]=0x0200A,
- ["Vfr"]=0x1D519,
- ["vfr"]=0x1D533,
- ["vltri"]=0x022B2,
- ["vnsub"]=0x02282,
- ["vnsup"]=0x02283,
- ["Vopf"]=0x1D54D,
- ["vopf"]=0x1D567,
- ["vprop"]=0x0221D,
- ["vrtri"]=0x022B3,
- ["Vscr"]=0x1D4B1,
- ["vscr"]=0x1D4CB,
- ["vsubnE"]=0x02ACB,
- ["vsubne"]=0x0228A,
- ["vsupnE"]=0x02ACC,
- ["vsupne"]=0x0228B,
- ["Vvdash"]=0x022AA,
- ["vzigzag"]=0x0299A,
- ["Wcirc"]=0x00174,
- ["wcirc"]=0x00175,
- ["wedbar"]=0x02A5F,
- ["Wedge"]=0x022C0,
- ["wedge"]=0x02227,
- ["wedgeq"]=0x02259,
- ["weierp"]=0x02118,
- ["Wfr"]=0x1D51A,
- ["wfr"]=0x1D534,
- ["Wopf"]=0x1D54E,
- ["wopf"]=0x1D568,
- ["wp"]=0x02118,
- ["wr"]=0x02240,
- ["wreath"]=0x02240,
- ["Wscr"]=0x1D4B2,
- ["wscr"]=0x1D4CC,
- ["xcap"]=0x022C2,
- ["xcirc"]=0x025EF,
- ["xcup"]=0x022C3,
- ["xdtri"]=0x025BD,
- ["Xfr"]=0x1D51B,
- ["xfr"]=0x1D535,
- ["xhArr"]=0x027FA,
- ["xharr"]=0x027F7,
- ["Xi"]=0x0039E,
- ["xi"]=0x003BE,
- ["xlArr"]=0x027F8,
- ["xlarr"]=0x027F5,
- ["xmap"]=0x027FC,
- ["xnis"]=0x022FB,
- ["xodot"]=0x02A00,
- ["Xopf"]=0x1D54F,
- ["xopf"]=0x1D569,
- ["xoplus"]=0x02A01,
- ["xotime"]=0x02A02,
- ["xrArr"]=0x027F9,
- ["xrarr"]=0x027F6,
- ["Xscr"]=0x1D4B3,
- ["xscr"]=0x1D4CD,
- ["xsqcup"]=0x02A06,
- ["xuplus"]=0x02A04,
- ["xutri"]=0x025B3,
- ["xvee"]=0x022C1,
- ["xwedge"]=0x022C0,
- ["Yacute"]=0x000DD,
- ["yacute"]=0x000FD,
- ["YAcy"]=0x0042F,
- ["yacy"]=0x0044F,
- ["Ycirc"]=0x00176,
- ["ycirc"]=0x00177,
- ["Ycy"]=0x0042B,
- ["ycy"]=0x0044B,
- ["yen"]=0x000A5,
- ["Yfr"]=0x1D51C,
- ["yfr"]=0x1D536,
- ["YIcy"]=0x00407,
- ["yicy"]=0x00457,
- ["Yopf"]=0x1D550,
- ["yopf"]=0x1D56A,
- ["Yscr"]=0x1D4B4,
- ["yscr"]=0x1D4CE,
- ["YUcy"]=0x0042E,
- ["yucy"]=0x0044E,
- ["Yuml"]=0x00178,
- ["yuml"]=0x000FF,
- ["Zacute"]=0x00179,
- ["zacute"]=0x0017A,
- ["Zcaron"]=0x0017D,
- ["zcaron"]=0x0017E,
- ["Zcy"]=0x00417,
- ["zcy"]=0x00437,
- ["Zdot"]=0x0017B,
- ["zdot"]=0x0017C,
- ["zeetrf"]=0x02128,
- ["ZeroWidthSpace"]=0x0200B,
- ["zeta"]=0x003B6,
- ["Zfr"]=0x02128,
- ["zfr"]=0x1D537,
- ["ZHcy"]=0x00416,
- ["zhcy"]=0x00436,
- ["zigrarr"]=0x021DD,
- ["Zopf"]=0x02124,
- ["zopf"]=0x1D56B,
- ["Zscr"]=0x1D4B5,
- ["zscr"]=0x1D4CF,
-
- ["plusminus"]=0x000B1,
- ["minusplus"]=0x02213,
- ["cdots"]=0x2026,
-}
diff --git a/tex/context/base/math-eul.mkii b/tex/context/base/math-eul.mkii
index 7552957a8..f50244525 100644
--- a/tex/context/base/math-eul.mkii
+++ b/tex/context/base/math-eul.mkii
@@ -5,7 +5,7 @@
%D subtitle=Virtual Euler Specials,
%D author={Hans Hagen \& Taco Hoekwater \& Adam Lindsay},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-for.mkiv b/tex/context/base/math-for.mkiv
index e33276d53..16cab9a65 100644
--- a/tex/context/base/math-for.mkiv
+++ b/tex/context/base/math-for.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-fou.mkii b/tex/context/base/math-fou.mkii
index 8a72f1288..26b03d73e 100644
--- a/tex/context/base/math-fou.mkii
+++ b/tex/context/base/math-fou.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fourier Specials,
%D author={Michel Biovani \& Hans Hagen},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-frc.mkii b/tex/context/base/math-frc.mkii
index 767c5ec5c..b14c93774 100644
--- a/tex/context/base/math-frc.mkii
+++ b/tex/context/base/math-frc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fractions,
%D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-frc.mkiv b/tex/context/base/math-frc.mkiv
index f6331126f..d69937ad3 100644
--- a/tex/context/base/math-frc.mkiv
+++ b/tex/context/base/math-frc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fractions,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-ini.lua b/tex/context/base/math-ini.lua
index a122f7229..358a7fbae 100644
--- a/tex/context/base/math-ini.lua
+++ b/tex/context/base/math-ini.lua
@@ -11,6 +11,8 @@ if not modules then modules = { } end modules ['math-ext'] = {
local texsprint, format, utfchar, utfbyte = tex.sprint, string.format, utf.char, utf.byte
local setmathcode, setdelcode = tex.setmathcode, tex.setdelcode
+local texattribute = tex.attribute
+local floor = math.floor
local allocate = utilities.storage.allocate
@@ -53,8 +55,20 @@ local classes = allocate {
nolop = 1, -- mathnolopcomm @@mathnolopcomm
}
+local codes = allocate {
+ ordinary = 0, [0] = "ordinary",
+ largeoperator = 1, [1] = "largeoperator",
+ binaryoperator = 2, [2] = "binaryoperator",
+ relation = 3, [3] = "relation",
+ openingsymbol = 4, [4] = "openingsymbol",
+ closingsymbol = 5, [5] = "closingsymbol",
+ punctuation = 6, [6] = "punctuation",
+ variable = 7, [7] = "variable",
+}
+
mathematics.families = families
mathematics.classes = classes
+mathematics.codes = codes
classes.alphabetic = classes.alpha
classes.unknown = classes.nothing
@@ -98,14 +112,8 @@ end
local function mathtopaccent(class,family,slot)
return format('\\Umathaccent "%X "%X "%X ',0,family,slot) -- no class
end
-if tex.luatexversion > 65 then -- this will disappear at 0.70
- local function mathbotaccent(class,family,slot)
- return format('\\Umathaccent bottom "%X "%X "%X ',0,family,slot) -- no class
- end
-else
- local function mathbotaccent(class,family,slot)
- return format('\\Umathbotaccent "%X "%X "%X ',0,family,slot) -- no class
- end
+local function mathbotaccent(class,family,slot)
+ return format('\\Umathaccent bottom "%X "%X "%X ',0,family,slot) -- no class
end
local function mathtopdelimiter(class,family,slot)
return format('\\Udelimiterover "%X "%X ',family,slot) -- no class
@@ -307,34 +315,24 @@ function mathematics.utfmathclass(chr, default)
local cd = characters.data[utfbyte(chr)]
return (cd and cd.mathclass) or default or "unknown"
end
+
function mathematics.utfmathstretch(chr, default) -- "h", "v", "b", ""
local cd = characters.data[utfbyte(chr)]
return (cd and cd.mathstretch) or default or ""
end
+
function mathematics.utfmathcommand(chr, default)
local cd = characters.data[utfbyte(chr)]
local cmd = cd and cd.mathname
return cmd or default or ""
end
+
function mathematics.utfmathfiller(chr, default)
local cd = characters.data[utfbyte(chr)]
local cmd = cd and (cd.mathfiller or cd.mathname)
return cmd or default or ""
end
--- xml
-
-mathematics.xml = { entities = { } }
-
-function mathematics.xml.registerentities()
- local entities = xml.entities
- for name, unicode in next, mathematics.xml.entities do
- if not entities[name] then
- entities[name] = utfchar(unicode)
- end
- end
-end
-
-- helpers
function mathematics.big(tfmdata,unicode,n)
@@ -365,3 +363,70 @@ function mathematics.big(tfmdata,unicode,n)
return unicode
end
+-- experimental
+
+-- local categories = { } -- indexed + hashed
+--
+-- local a_mathcategory = attributes.private("mathcategory")
+--
+-- local function registercategory(category,tag,data) -- always same data for tag
+-- local c = categories[category]
+-- if not c then
+-- c = { }
+-- categories[category] = c
+-- end
+-- local n = c[tag]
+-- if not n then
+-- n = #c + 1
+-- c[n] = data
+-- n = n * 1000 + category
+-- c[tag] = n
+-- end
+-- return n
+-- end
+--
+-- function mathematics.getcategory(n)
+-- local category = n % 1000
+-- return category, categories[category][floor(n/1000)]
+-- end
+--
+-- mathematics.registercategory = registercategory
+--
+-- function commands.taggedmathfunction(tag,label)
+-- if label then
+-- texattribute[a_mathcategory] = registercategory(1,tag,tag)
+-- context.mathlabeltext(tag)
+-- else
+-- texattribute[a_mathcategory] = 1
+-- context(tag)
+-- end
+-- end
+
+local categories = { }
+mathematics.categories = categories
+
+local a_mathcategory = attributes.private("mathcategory")
+
+local functions = storage.allocate()
+local noffunctions = 1000 -- offset
+
+categories.functions = functions
+
+function commands.taggedmathfunction(tag,label,apply)
+ local delta = apply and 1000 or 0
+ if label then
+ local n = functions[tag]
+ if not n then
+ noffunctions = noffunctions + 1
+ functions[noffunctions] = tag
+ functions[tag] = noffunctions
+ texattribute[a_mathcategory] = noffunctions + delta
+ else
+ texattribute[a_mathcategory] = n + delta
+ end
+ context.mathlabeltext(tag)
+ else
+ texattribute[a_mathcategory] = 1000 + delta
+ context(tag)
+ end
+end
diff --git a/tex/context/base/math-ini.mkii b/tex/context/base/math-ini.mkii
index 9f7ab49e5..d6d10feb3 100644
--- a/tex/context/base/math-ini.mkii
+++ b/tex/context/base/math-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initializations,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv
index f778afa08..a6519dbe5 100644
--- a/tex/context/base/math-ini.mkiv
+++ b/tex/context/base/math-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initializations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -37,10 +37,10 @@
\registerctxluafile{math-ini}{1.001}
\registerctxluafile{math-dim}{1.001}
\registerctxluafile{math-act}{1.001}
-\registerctxluafile{math-ent}{1.001}
\registerctxluafile{math-ext}{1.001}
\registerctxluafile{math-vfu}{1.001}
\registerctxluafile{math-map}{1.001}
+\registerctxluafile{math-ren}{1.001}
\registerctxluafile{math-noa}{1.001}
\registerctxluafile{math-tag}{1.001}
@@ -49,17 +49,40 @@
\definesystemattribute[mathpunctuation][public]
\definesystemattribute[mathgreek] [public]
\definesystemattribute[mathalternate] [public]
+\definesystemattribute[mathrendering] [public]
+\definesystemattribute[mathcategory] [public]
+\definesystemattribute[mathmode] [public]
-% experiment
+\appendtoks
+ \attribute\mathmodeattribute\plusone
+\to \everydisplay
+
+\appendtoks
+ \attribute\mathmodeattribute\plusone
+\to \everybeforedisplayformula
+
+%D \macros
+%D {setupmathematics}
+%D
+%D Configuration for integrals. (If needed we can speed this up and make it
+%D installable; no processaction is needed then).
+
+\newtoks\everysetupmathematics
+
+\unexpanded\def\setupmathematics
+ {\dosingleargument\dosetupmathematics}
+
+\def\dosetupmathematics[#1]%
+ {\getparameters[\??mo][#1]%
+ \the\everysetupmathematics}
+
+\def\mathematicsparameter#1%
+ {\ifcsname\??mo#1\endcsname\csname\??mo#1\endcsname\fi}
% Normally this is applied to only one character.
%
% $ABC$ $\cal ABC$ $\mathaltcal ABC$
-\def\mathalternate#1{\ctxlua{mathematics.setalternate(0,"#1")}} % fam 0
-
-\def\mathaltcal{\mathalternate{cal}\cal} % ss01 in xits
-
% todo: only in mmode
\unexpanded\def\mathgreekupright{\attribute\mathgreekattribute22 }
@@ -72,24 +95,46 @@
\def\setmathattribute#1#2{\ifmmode\ctxlua{mathematics.syncboth ("#1","#2")}\fi}
\def\setmathalphabet #1{\ifmmode\ctxlua{mathematics.syncname ("#1")}\fi}
\def\setmathstyle #1{\ifmmode\ctxlua{mathematics.syncstyle("#1")}\fi}
+\def\setmathalternate #1{\ifmmode\ctxlua{mathematics.setalternate(0,"#1")}\fi} % fam 0
+
+\def\setmathstylealterternate#1%
+ {\ifcsname\??mo:\c!alternative:\fontclass:#1\endcsname
+ \setmathalternate{\csname\??mo:\c!alternative:\fontclass:#1\endcsname}%
+ \else\ifcsname\??mo:\c!alternative:#1\endcsname
+ \setmathalternate{\csname\??mo:\c!alternative:#1\endcsname}%
+ \fi\fi}
+
+\unexpanded\def\setupmathrendering % the name might change
+ {\dodoubleargument\dosetupmathrendering}
+
+\def\dosetupmathrendering[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??mo:\c!alternative:#1:][#2]%
+ \else
+ \getparameters[\??mo:\c!alternative:][#1]%
+ \fi}
+
+\def\mathaltcal{\setmathalternate{cal}\cal} % ss01 in xits
+
+\let\mathalternate\setmathalternate % obsolete
-\unexpanded\def\mr {\setmathattribute{regular}{tf}}
+\unexpanded\def\mr {\setmathattribute{regular}{tf}\setmathstylealterternate{tf}}
-\unexpanded\def\mathdefault {\setmathattribute{regular}{it}}
-\unexpanded\def\mathscript {\setmathalphabet{script}}
-\unexpanded\def\mathfraktur {\setmathalphabet{fraktur}}
-\unexpanded\def\mathblackboard{\setmathalphabet{blackboard}}
+\unexpanded\def\mathdefault {\setmathattribute{regular}{it}\setmathstylealterternate{it}}
+\unexpanded\def\mathscript {\setmathalphabet{script}\setmathstylealterternate{script}}
+\unexpanded\def\mathfraktur {\setmathalphabet{fraktur}\setmathstylealterternate{fraktur}}
+\unexpanded\def\mathblackboard{\setmathalphabet{blackboard}\setmathstylealterternate{blackboard}}
-\unexpanded\def\mathrm{\setmathattribute{rm}{tf}}
-\unexpanded\def\mathss{\setmathattribute{ss}{tf}}
-\unexpanded\def\mathtt{\setmathattribute{tt}{tf}}
+\unexpanded\def\mathrm{\setmathattribute{rm}{tf}\setmathstylealterternate{tf}}
+\unexpanded\def\mathss{\setmathattribute{ss}{tf}\setmathstylealterternate{tf}}
+\unexpanded\def\mathtt{\setmathattribute{tt}{tf}\setmathstylealterternate{tf}}
-\unexpanded\def\mathtf{\setmathstyle{tf}}
-\unexpanded\def\mathbf{\setmathstyle{bf}}
-\unexpanded\def\mathsl{\setmathstyle{sl}}
-\unexpanded\def\mathit{\setmathstyle{it}}
-\unexpanded\def\mathbs{\setmathstyle{bs}}
-\unexpanded\def\mathbi{\setmathstyle{bi}}
+\unexpanded\def\mathtf{\setmathstyle{tf}\setmathstylealterternate{tf}}
+\unexpanded\def\mathbf{\setmathstyle{bf}\setmathstylealterternate{bf}}
+\unexpanded\def\mathsl{\setmathstyle{it}\setmathstylealterternate{it}} % no sl
+\unexpanded\def\mathit{\setmathstyle{it}\setmathstylealterternate{it}}
+\unexpanded\def\mathbs{\setmathstyle{bi}\setmathstylealterternate{bi}} % no sl
+\unexpanded\def\mathbi{\setmathstyle{bi}\setmathstylealterternate{bi}}
\let\tfmath\mathtf % maybe a grouped command
\let\bfmath\mathbf
@@ -141,6 +186,38 @@
\mathdefault
\to \everymathematics
+%D We could set the renderign attribute at the \LUA\ end but as there
+%D can be many small math snippets we keep track of the state at the
+%D \TEX\ end (mapping is export safe).
+%D
+%D \starttyping
+%D \startformula
+%D \reals {\mathbf R} \utfchar{"0211D} \utfchar{"1D411}
+%D \stopformula
+%D
+%D \setupmathematics
+%D [symbolset=blackboard-to-bold]
+%D
+%D \startformula
+%D \reals {\mathbf R} \utfchar{"0211D} \utfchar{"1D411}
+%D \stopformula
+%D \stoptyping
+
+\newcount\math_renderings_attribute
+
+\appendtoks
+ \math_renderings_attribute\cldcontext{mathematics.renderset("\mathematicsparameter\c!symbolset")}\relax
+\to \everysetupmathematics
+
+\appendtoks
+ \ifcase\math_renderings_attribute\else
+ \attribute\mathrenderingattribute\math_renderings_attribute
+ \fi
+\to \everymathematics
+
+\setupmathematics
+ [\c!symbolset=]
+
%D \macros
%D {boldsymbol}
%D
@@ -212,29 +289,54 @@
% this will be sorted out:
-\let\mathcharacter \getvalue
-\let\textcharacter \getvalue
-\unexpanded\def\definefamilysynonym {\dotripleempty\dodefinefamilysynonym}
-\def\dodefinefamilysynonym [#1][#2][#3]{}
-\unexpanded\def\definemathsymbol {\dosixtupleempty\dodefinemathsymbol}
-\def\dodefinemathsymbol [#1][#2][#3][#4][#5][#6]{}
-\unexpanded\def\definemathcharacter {\dosixtupleempty\dodefinemathcharacter}
-\def\dodefinemathcharacter [#1][#2][#3][#4][#5][#6]{}
+% \let\mathcharacter \getvalue
+% \let\textcharacter \getvalue
+%
+% \unexpanded\def\definefamilysynonym {\dotripleempty\dodefinefamilysynonym}
+% \def\dodefinefamilysynonym [#1][#2][#3]{}
+% \unexpanded\def\definemathsymbol {\dosixtupleempty\dodefinemathsymbol}
+% \def\dodefinemathsymbol [#1][#2][#3][#4][#5][#6]{}
+% \unexpanded\def\definemathcharacter {\dosixtupleempty\dodefinemathcharacter}
+% \def\dodefinemathcharacter [#1][#2][#3][#4][#5][#6]{}
\unexpanded\def\definemathcommand
{\dotripleempty\dodefinemathcommand}
+% \def\dodefinemathcommand[#1][#2][#3]#4% command class args meaning
+% {\ifthirdargument
+% \edef\nofmathcommandarguments{#3}%
+% \ifx\nofmathcommandarguments\v!one
+% \setuvalue{#1}##1{\puremathcomm{#2}{#4{##1}}}%
+% \else\ifx\nofmathcommandarguments\v!two
+% \setuvalue{#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}%
+% \else
+% \setuvalue{#1}{\puremathcomm{#2}{#4}}%
+% \fi\fi
+% \else\ifsecondargument
+% \setuvalue{#1}{\puremathcomm{#2}{#4}}%
+% \else
+% \setuvalue{#1}{\puremathcomm{nothing}{#4}}%
+% \fi\fi}
+
\def\dodefinemathcommand[#1][#2][#3]#4% command class args meaning
{\ifthirdargument
- \processaction
- [#3]
- [one=>\setuvalue{#1}##1{\puremathcomm{#2}{#4{##1}}},
- two=>\setuvalue{#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}]%
+ \edef\nofmathcommandarguments{#3}%
+ \ifx\nofmathcommandarguments\v!one
+ \setuvalue{\??mo::#1}##1{\puremathcomm{#2}{#4{##1}}}%
+ \else\ifx\nofmathcommandarguments\v!two
+ \setuvalue{\??mo::#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}%
+ \else
+ \setuvalue{\??mo::#1}{\puremathcomm{#2}{#4}}%
+ \fi\fi
\else\ifsecondargument
- \setuvalue{#1}{\puremathcomm{#2}{#4}}%
+ \setuvalue{\??mo::#1}{\puremathcomm{#2}{#4}}%
\else
- \setuvalue{#1}{\puremathcomm{nothing}{#4}}%
- \fi\fi}
+ \setuvalue{\??mo::#1}{\puremathcomm{nothing}{#4}}%
+ \fi\fi
+ \letcsnamecsname\csname#1\endcsname\csname\??mo::#1\endcsname}
+
+\unexpanded\def\mathcommand#1%
+ {\csname\??mo::#1\endcsname}
%D Moved from font-ini.mkiv:
%D
@@ -267,12 +369,61 @@
\let\hbox\mbox
\to\everymathematics}
-%D needed for sin, cos etc
+%D needed for sin, cos etc (todo: store #1 so that we can export it)
\let\mathfunction\firstofoneargument
-\def\mfunction #1{{\mr#1}}
-\def\mfunctionlabeltext#1{{\mr\mathlabeltext{#1}}}
+\let\taggedmathfunction \firstofoneargument
+\let\taggedmathfunctionlabeltext\mathlabeltext
+
+\let\taggedmathmo\firstofoneargument
+\let\taggedmathmi\firstofoneargument
+
+\def\taggedmathmn#1{\begingroup\mr#1\endgroup}
+\def\taggedmathms#1{\begingroup\mr#1\endgroup}
+
+\def\mfunction #1{{\mr\taggedmathfunction{#1}}}
+\def\mfunctionlabeltext#1{{\mr\taggedmathfunctionlabeltext{#1}}}
+
+% Once this is stable we can store the number at the tex end which is
+% faster. Functions getnumbers >= 1000.
+
+\def\dotaggedmathfunction #1{\ctxcommand{taggedmathfunction("#1",false,\ifconditional\c_apply_function true\else false\fi)}}
+\def\dotaggedmathfunctionlabeltext#1{\ctxcommand{taggedmathfunction("#1",true ,\ifconditional\c_apply_function true\else false\fi)}}
+
+\def\dotaggedmo#1{\begingroup \attribute\mathcategoryattribute\plusone #1\endgroup}
+\def\dotaggedmi#1{\begingroup \attribute\mathcategoryattribute\plustwo #1\endgroup}
+\def\dotaggedmn#1{\begingroup\mr\attribute\mathcategoryattribute\plusthree#1\endgroup}
+\def\dotaggedms#1{\begingroup\mr\attribute\mathcategoryattribute\plusfour #1\endgroup}
+
+\newconditional\c_apply_function
+
+\def\taggedmathapply#1#2%
+ {\begingroup
+ \settrue\c_apply_function
+ #1%
+ \endgroup
+ \begingroup
+ % todo: auto ()
+ #2%
+ \endgroup}
+
+\appendtoks
+ \let\taggedmathfunction \dotaggedmathfunction
+ \let\taggedmathfunctionlabeltext\dotaggedmathfunctionlabeltext
+ \let\taggedmathmo \dotaggedmo
+ \let\taggedmathmi \dotaggedmi
+ \let\taggedmathmn \dotaggedmn
+ \let\taggedmathms \dotaggedms
+\to \everyenableelements
+
+\appendtoks
+ \let\mo \taggedmathmo
+ \let\mi \taggedmathmi
+ \let\mn \taggedmathmn
+ \let\ms \taggedmathms
+ \let\apply\taggedmathapply
+\to\everymathematics
% \def\mlimitsfunction #1{\mathlimopcomm{{\mr#1}}
% \def\mnolimitsfunction#1{\mathnolopcomm{{\mr#1}}
@@ -283,8 +434,8 @@
\def\currentmscaledstyle{rm} % will be plugged into the typeface text=ss option
\unexpanded\def\do@mathopnolimits #1{\mathop{\mscaledtext{#1}}\nolimits}
-\unexpanded\def\do@mfunction #1{\mscaledtext{#1}}
-\unexpanded\def\do@mfunctionlabeltext#1{\mscaledtext{\mathlabeltext{#1}}}
+\unexpanded\def\do@mfunction #1{\mscaledtext{\taggedmathfunction{#1}}}
+\unexpanded\def\do@mfunctionlabeltext#1{\mscaledtext{\taggedmathfunctionlabeltext{#1}}}
\def\setmathfunctionstyle#1% rm ss tt (can be made faster if needed)
{\doifsomething{#1}
@@ -478,23 +629,6 @@
\def\nulloperator{\mathortext{\mathop{\emptyhbox}}{\emptyhbox}}
-%D \macros
-%D {setupmathematics}
-%D
-%D Configuration for integrals. (If needed we can speed this up and make it
-%D installable; no processaction is needed then).
-
-\newtoks\everysetupmathematics
-
-\unexpanded\def\setupmathematics
- {\dosingleargument\dosetupmathematics}
-
-\def\dosetupmathematics[#1]%
- {\getparameters[\??mo][#1]%
- \the\everysetupmathematics}
-
-\def\mathematicsparameter#1{\ifcsname\??mo#1\endcsname\csname\??mo#1\endcsname\fi}
-
%D Memory saver:
\appendtoks
@@ -727,8 +861,6 @@
% for a while:
-\ifnum\luatexversion>65
- \def\Umathbotaccent{\Umathaccent bottom }
-\fi
+\def\Umathbotaccent{\Umathaccent bottom }
\protect \endinput
diff --git a/tex/context/base/math-inl.mkiv b/tex/context/base/math-inl.mkiv
index 89de0242b..f3a59d956 100644
--- a/tex/context/base/math-inl.mkiv
+++ b/tex/context/base/math-inl.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Inline,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-int.mkiv b/tex/context/base/math-int.mkiv
index a99142a04..de3ff2608 100644
--- a/tex/context/base/math-int.mkiv
+++ b/tex/context/base/math-int.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Scripts,
%D author={Hans Hagen \& Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-lan.mkiv b/tex/context/base/math-lan.mkiv
deleted file mode 100644
index 1d3132578..000000000
--- a/tex/context/base/math-lan.mkiv
+++ /dev/null
@@ -1,67 +0,0 @@
-%D \module
-%D [ file=math-lan,
-%D version=2009.03.10,
-%D title=\CONTEXT\ Math Macros,
-%D subtitle=Language Support,
-%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.
-
-\writestatus{loading}{ConTeXt Math Macros / Language Support}
-
-\unprotect
-
-\setupmathlabeltext [\s!en] [arccos=arccos]
-\setupmathlabeltext [\s!en] [arcsin=arcsin]
-\setupmathlabeltext [\s!en] [arctan=arctan]
-\setupmathlabeltext [\s!en] [arg=arg]
-\setupmathlabeltext [\s!en] [cosh=cosh]
-\setupmathlabeltext [\s!en] [cos=cos]
-\setupmathlabeltext [\s!en] [coth=coth]
-\setupmathlabeltext [\s!en] [cot=cot]
-\setupmathlabeltext [\s!en] [csc=csc]
-\setupmathlabeltext [\s!en] [deg=deg]
-\setupmathlabeltext [\s!en] [det=det]
-\setupmathlabeltext [\s!en] [dim=dim]
-\setupmathlabeltext [\s!en] [exp=exp]
-\setupmathlabeltext [\s!en] [gcd=gcd]
-\setupmathlabeltext [\s!en] [hom=hom]
-\setupmathlabeltext [\s!en] [inf=inf]
-\setupmathlabeltext [\s!en] [injlim=inj\,lim]
-\setupmathlabeltext [\s!en] [ker=ker]
-\setupmathlabeltext [\s!en] [lg=lg]
-\setupmathlabeltext [\s!en] [liminf=lim\,inf]
-\setupmathlabeltext [\s!en] [limsup=lim\,sup]
-\setupmathlabeltext [\s!en] [lim=lim]
-\setupmathlabeltext [\s!en] [ln=ln]
-\setupmathlabeltext [\s!en] [log=log]
-\setupmathlabeltext [\s!en] [median=median]
-\setupmathlabeltext [\s!en] [max=max]
-\setupmathlabeltext [\s!en] [min=min]
-\setupmathlabeltext [\s!en] [mod=mod]
-\setupmathlabeltext [\s!en] [projlim=proj\,lim]
-\setupmathlabeltext [\s!en] [Pr=Pr]
-\setupmathlabeltext [\s!en] [sec=sec]
-\setupmathlabeltext [\s!en] [sinh=sinh]
-\setupmathlabeltext [\s!en] [sin=sin]
-\setupmathlabeltext [\s!en] [sup=sup]
-\setupmathlabeltext [\s!en] [tanh=tanh]
-\setupmathlabeltext [\s!en] [tan=tan]
-
-\setupmathlabeltext [\s!pl] [tg=tg]
-\setupmathlabeltext [\s!pl] [cot=ctg]
-\setupmathlabeltext [\s!pl] [ctg=ctg]
-\setupmathlabeltext [\s!pl] [arcsin=arc\,sin]
-\setupmathlabeltext [\s!pl] [arccos=arc\,cos]
-\setupmathlabeltext [\s!pl] [arctan=arc\,tg]
-\setupmathlabeltext [\s!pl] [arctg=arc\,tg]
-\setupmathlabeltext [\s!pl] [arcctg=arc\,ctg]
-
-\setupmathlabeltext [\s!nl] [gcd=ggd]
-\setupmathlabeltext [\s!nl] [lcm=kgv]
-
-\protect \endinput
diff --git a/tex/context/base/math-lbr.mkii b/tex/context/base/math-lbr.mkii
index 6392c762e..0aa1df665 100644
--- a/tex/context/base/math-lbr.mkii
+++ b/tex/context/base/math-lbr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Lucida Specials,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-map.lua b/tex/context/base/math-map.lua
index b6d57bff5..238b72edd 100644
--- a/tex/context/base/math-map.lua
+++ b/tex/context/base/math-map.lua
@@ -309,6 +309,21 @@ alphabets.monospaced.it = alphabets.sansserif.tf
alphabets.monospaced.bf = alphabets.sansserif.tf
alphabets.monospaced.bi = alphabets.sansserif.bf
+alphabets.regular.normal = alphabets.regular.tf
+alphabets.regular.italic = alphabets.regular.it
+alphabets.regular.bold = alphabets.regular.bf
+alphabets.regular.bolditalic = alphabets.regular.bi
+
+alphabets.sansserif.normal = alphabets.sansserif.tf
+alphabets.sansserif.italic = alphabets.sansserif.it
+alphabets.sansserif.bold = alphabets.sansserif.bf
+alphabets.sansserif.bolditalic = alphabets.sansserif.bi
+
+alphabets.monospaced.normal = alphabets.monospaced.tf
+alphabets.monospaced.italic = alphabets.monospaced.it
+alphabets.monospaced.bold = alphabets.monospaced.bf
+alphabets.monospaced.bolditalic = alphabets.monospaced.bi
+
alphabets.blackboard.tf.symbols = table.merged(alphabets.regular.tf.symbols, alphabets.blackboard.tf.symbols)
alphabets.blackboard.tf.lcgreek = table.merged(alphabets.regular.tf.lcgreek, alphabets.blackboard.tf.lcgreek)
alphabets.blackboard.tf.ucgreek = table.merged(alphabets.regular.tf.ucgreek, alphabets.blackboard.tf.ucgreek)
@@ -364,6 +379,19 @@ end
local mathalphabet = attributes.private("mathalphabet")
+function mathematics.getboth(alphabet,style)
+ local data = alphabets[alphabet or "regular"] or alphabets.regular
+ data = data[style or "tf"] or data.tf
+ return data and data.attribute
+end
+
+function mathematics.getstyle(style)
+ local r = mathremap[texattribute[mathalphabet]]
+ local alphabet = r and r.alphabet or "regular"
+ local data = alphabets[alphabet][style]
+ return data and data.attribute
+end
+
function mathematics.syncboth(alphabet,style)
local data = alphabets[alphabet or "regular"] or alphabets.regular
data = data[style or "tf"] or data.tf
@@ -371,7 +399,6 @@ function mathematics.syncboth(alphabet,style)
end
function mathematics.syncstyle(style)
---~ local r = mathremap[mathalphabet]
local r = mathremap[texattribute[mathalphabet]]
local alphabet = r and r.alphabet or "regular"
local data = alphabets[alphabet][style]
@@ -397,7 +424,7 @@ local remapping = {
}
function mathematics.remapalphabets(char,mathalphabet,mathgreek)
- if mathgreek > 0 then
+ if mathgreek and mathgreek > 0 then
local lc, uc = floor(mathgreek/10), mathgreek % 10 -- 2 == upright 3 == italic
if lc > 1 or uc > 1 then
local islc, isuc = islcgreek[char] and lc, isucgreek[char] and uc
@@ -419,7 +446,7 @@ function mathematics.remapalphabets(char,mathalphabet,mathgreek)
end
end
end
- if mathalphabet > 0 then
+ if mathalphabet and mathalphabet > 0 then
local newchar
local offset = mathremap[mathalphabet]
if not offset then
diff --git a/tex/context/base/math-noa.lua b/tex/context/base/math-noa.lua
index dce35fb83..5c4bb6f19 100644
--- a/tex/context/base/math-noa.lua
+++ b/tex/context/base/math-noa.lua
@@ -17,9 +17,9 @@ if not modules then modules = { } end modules ['math-noa'] = {
local utf = unicode.utf8
+local utfchar, utfbyte = utf.char, utf.byte
local format, rep = string.format, string.rep
local concat = table.concat
-local utfchar, utfbyte = utf.char, utf.byte
local fonts, nodes, node, mathematics = fonts, nodes, node, mathematics
@@ -31,10 +31,14 @@ local trace_remapping = false trackers.register("math.remapping", functio
local trace_processing = false trackers.register("math.processing", function(v) trace_processing = v end)
local trace_analyzing = false trackers.register("math.analyzing", function(v) trace_analyzing = v end)
local trace_normalizing = false trackers.register("math.normalizing", function(v) trace_normalizing = v end)
+local trace_goodies = false trackers.register("math.goodies", function(v) trace_goodies = v end)
+
+local check_coverage = true directives.register("math.checkcoverage", function(v) check_coverage = v end)
local report_processing = logs.reporter("mathematics","processing")
local report_remapping = logs.reporter("mathematics","remapping")
local report_normalizing = logs.reporter("mathematics","normalizing")
+local report_goodies = logs.reporter("mathematics","goodies")
local set_attribute = node.set_attribute
local has_attribute = node.has_attribute
@@ -43,6 +47,7 @@ local font_of_family = node.family_font
local fonthashes = fonts.hashes
local fontdata = fonthashes.identifiers
+local fontcharacters = fonthashes.characters
noads = noads or { } -- todo: only here
local noads = noads
@@ -158,34 +163,30 @@ end
local remapalphabets = mathematics.remapalphabets
local setnodecolor = nodes.tracers.colors.set
--- we can have a global famdata == fonts.famdata
-
--~ This does not work out well, as there are no fallbacks. Ok, we could
--~ define a poor mans simplify mechanism.
---~
---~ local function checked(pointer)
---~ local char = pointer.char
---~ local fam = pointer.fam
---~ local id = font_of_family(fam)
---~ local tfmdata = fontdata[id]
---~ local tc = tfmdata and tfmdata.characters
---~ if not tc[char] then
---~ local specials = characters.data[char].specials
---~ if specials and (specials[1] == "char" or specials[1] == "font") then
---~ newchar = specials[#specials]
---~ if trace_remapping then
---~ report_remap("fallback",id,char,newchar)
---~ end
---~ if trace_analyzing then
---~ setnodecolor(pointer,"font:isol")
---~ end
---~ pointer.char = newchar
---~ return true
---~ end
---~ end
---~ end
-local current_id, current_characters
+local function checked(pointer)
+ local char = pointer.char
+ local fam = pointer.fam
+ local id = font_of_family(fam)
+ local tc = fontcharacters[id]
+ if not tc[char] then
+ local specials = characters.data[char].specials
+ if specials and (specials[1] == "char" or specials[1] == "font") then
+ newchar = specials[#specials]
+ if trace_remapping then
+ report_remap("fallback",id,char,newchar)
+ end
+ if trace_analyzing then
+ setnodecolor(pointer,"font:isol")
+ end
+ set_attribute(pointer,exportstatus,char) -- testcase: exponentiale
+ pointer.char = newchar
+ return true
+ end
+ end
+end
processors.relocate[math_char] = function(pointer)
local g = has_attribute(pointer,mathgreek) or 0
@@ -202,15 +203,8 @@ processors.relocate[math_char] = function(pointer)
if newchar then
local fam = pointer.fam
local id = font_of_family(fam)
- --
- local tfmdata = fontdata[id]
- if tfmdata and tfmdata.characters[newchar] then
- -- -- to be tested:
- -- if id ~= current_id then
- -- current_id = id
- -- current_characters = fontdata[id].characters
- -- end
- -- if current_characters and current_characters[newchar] then
+ local characters = fontcharacters[id]
+ if characters and characters[newchar] then
if trace_remapping then
report_remap("char",id,char,newchar)
end
@@ -219,18 +213,19 @@ processors.relocate[math_char] = function(pointer)
end
pointer.char = newchar
return true
- elseif trace_remapping then
- report_remap("char",id,char,newchar," fails")
+ else
+ if trace_remapping then
+ report_remap("char",id,char,newchar," fails")
+ end
end
- else
- -- return checked(pointer)
end
- else
- -- return checked(pointer)
end
if trace_analyzing then
setnodecolor(pointer,"font:medi")
end
+ if check_coverage then
+ return checked(pointer)
+ end
end
processors.relocate[math_textchar] = function(pointer)
@@ -250,6 +245,40 @@ function handlers.relocate(head,style,penalties)
return true
end
+-- rendering (beware, not exported)
+
+local a_mathrendering = attributes.private("mathrendering")
+local a_exportstatus = attributes.private("exportstatus")
+
+processors.render = { }
+
+local rendersets = mathematics.renderings.numbers or { } -- store
+
+processors.render[math_char] = function(pointer)
+ local attr = has_attribute(pointer,a_mathrendering)
+ if attr and attr > 0 then
+ local char = pointer.char
+ local renderset = rendersets[attr]
+ if renderset then
+ local newchar = renderset[char]
+ if newchar then
+ local fam = pointer.fam
+ local id = font_of_family(fam)
+ local characters = fontcharacters[id]
+ if characters and characters[newchar] then
+ pointer.char = newchar
+ set_attribute(pointer,a_exportstatus,char)
+ end
+ end
+ end
+ end
+end
+
+function handlers.render(head,style,penalties)
+ process(head,processors.render)
+ return true
+end
+
-- some resize options (this works ok because the content is
-- empty and no larger next will be forced)
--
@@ -373,8 +402,8 @@ collapse[math_noad] = function(pointer)
if newchar then
local fam = current_nucleus.fam
local id = font_of_family(fam)
- local tfmdata = fontdata[id]
- if tfmdata and tfmdata.characters[newchar] then
+ local characters = fontcharacters[id]
+ if characters and characters[newchar] then
-- print("!!!!!",current_char,next_char,newchar)
current_nucleus.char = newchar
local next_next_noad = next_noad.next
@@ -504,7 +533,8 @@ statistics.register("math script replacements", function()
end
end)
--- math alternates: (in xits lgf: $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$)
+-- math alternates: (in xits lgf: $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$)
+-- math alternates: (in lucidanova lgf: $ABC \mathalternate{italic} ABC$)
local function initializemathalternates(tfmdata)
local goodies = tfmdata.goodies
@@ -516,6 +546,9 @@ local function initializemathalternates(tfmdata)
local mathgoodies = goodies[i].mathematics
local alternates = mathgoodies and mathgoodies.alternates
if alternates then
+ if trace_goodies then
+ report_goodies("loading alternates for font '%s'",tfmdata.properties.name)
+ end
local lastattribute, attributes = 0, { }
for k, v in next, alternates do
lastattribute = lastattribute + 1
diff --git a/tex/context/base/math-pln.mkii b/tex/context/base/math-pln.mkii
index f2f3ff183..975869c70 100644
--- a/tex/context/base/math-pln.mkii
+++ b/tex/context/base/math-pln.mkii
@@ -5,7 +5,7 @@
%D subtitle=Plain Helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-pln.mkiv b/tex/context/base/math-pln.mkiv
index 6deac5efb..6a70c6711 100644
--- a/tex/context/base/math-pln.mkiv
+++ b/tex/context/base/math-pln.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Plain Helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-ren.lua b/tex/context/base/math-ren.lua
new file mode 100644
index 000000000..10456ad05
--- /dev/null
+++ b/tex/context/base/math-ren.lua
@@ -0,0 +1,65 @@
+if not modules then modules = { } end modules ['math-ren'] = {
+ version = 1.001,
+ comment = "companion to math-ren.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local next = next
+local gsub = string.gsub
+
+local settings_to_array = utilities.parsers.settings_to_array
+local allocate = storage.allocate
+
+local renderings = { }
+mathematics.renderings = renderings
+
+local mappings = allocate()
+renderings.mappings = mappings
+
+local numbers = allocate()
+renderings.numbers = numbers
+
+local sets = allocate()
+renderings.sets = sets
+
+mappings["blackboard-to-bold"] = {
+ [0x1D538] = 0x1D400, [0x1D539] = 0x1D401, [0x02102] = 0x1D402, [0x1D53B] = 0x1D403, [0x1D53C] = 0x1D404,
+ [0x1D53D] = 0x1D405, [0x1D53E] = 0x1D406, [0x0210D] = 0x1D407, [0x1D540] = 0x1D408, [0x1D541] = 0x1D409,
+ [0x1D542] = 0x1D40A, [0x1D543] = 0x1D40B, [0x1D544] = 0x1D40C, [0x02115] = 0x1D40D, [0x1D546] = 0x1D40E,
+ [0x02119] = 0x1D40F, [0x0211A] = 0x1D410, [0x0211D] = 0x1D411, [0x1D54A] = 0x1D412, [0x1D54B] = 0x1D413,
+ [0x1D54C] = 0x1D414, [0x1D54D] = 0x1D415, [0x1D54E] = 0x1D416, [0x1D54F] = 0x1D417, [0x1D550] = 0x1D418,
+ [0x02124] = 0x1D419,
+}
+
+local function renderset(list) -- order matters
+ local tag = gsub(list," ","")
+ local n = sets[tag]
+ if not n then
+ local list = settings_to_array(tag)
+ local mapping = { }
+ for i=1,#list do
+ local m = mappings[list[i]]
+ if m then
+ for k, v in next, m do
+ mapping[k] = v
+ end
+ end
+ end
+ if next(mapping) then
+ n = #numbers + 1
+ numbers[n] = mapping
+ else
+ n = attributes.unsetvalue
+ end
+ sets[tag] = n
+ end
+ return n
+end
+
+mathematics.renderset = renderset
+
+-- function commands.setmatrendering(list)
+-- tex.setattribute(renderset(list))
+-- end
diff --git a/tex/context/base/math-run.mkii b/tex/context/base/math-run.mkii
index 6bc4bf4d5..79d08fbed 100644
--- a/tex/context/base/math-run.mkii
+++ b/tex/context/base/math-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen \& Ton Otten]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-scr.mkiv b/tex/context/base/math-scr.mkiv
index e17ce42f3..280297db2 100644
--- a/tex/context/base/math-scr.mkiv
+++ b/tex/context/base/math-scr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Scripts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-tag.lua b/tex/context/base/math-tag.lua
index e5ad30be0..815e76b9a 100644
--- a/tex/context/base/math-tag.lua
+++ b/tex/context/base/math-tag.lua
@@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['math-tag'] = {
license = "see context related readme files"
}
+local find = string.find
+
local attributes, nodes = attributes, nodes
local get_attribute = nodes.getattribute
@@ -33,6 +35,9 @@ local vlist_code = nodecodes.vlist
local glyph_code = nodecodes.glyph
local a_tagged = attributes.private('tagged')
+local a_exportstatus = attributes.private('exportstatus')
+local a_mathcategory = attributes.private('mathcategory')
+local a_mathmode = attributes.private('mathmode')
local tags = structures.tags
@@ -40,18 +45,26 @@ local start_tagged = tags.start
local stop_tagged = tags.stop
local taglist = tags.taglist
-local chardata = characters.data
+local chardata = characters.data
+
+local getmathcode = tex.getmathcode
+local mathcodes = mathematics.codes
+local ordinary_code = mathcodes.ordinary
+local variable_code = mathcodes.variable
local process
local function processsubsup(start)
+ -- At some point we might need to add an attribute signaling the
+ -- super- and subscripts because TeX and MathML use a different
+ -- order.
local nucleus, sup, sub = start.nucleus, start.sup, start.sub
if sub then
if sup then
set_attribute(start,a_tagged,start_tagged("msubsup"))
process(nucleus)
- process(sup)
process(sub)
+ process(sup)
stop_tagged()
else
set_attribute(start,a_tagged,start_tagged("msub"))
@@ -69,25 +82,47 @@ local function processsubsup(start)
end
end
+-- todo: check function here and keep attribute the same
+
process = function(start) -- we cannot use the processor as we have no finalizers (yet)
while start do
local id = start.id
if id == math_char_code then
+ local char = start.char
-- check for code
- local ch = chardata[start.char]
- local mc = ch and ch.mathclass
- if mc == "number" then
- set_attribute(start,a_tagged,start_tagged("mn"))
- elseif mc == "variable" or not mc then -- variable is default
- set_attribute(start,a_tagged,start_tagged("mi"))
+ local a = get_attribute(start,a_mathcategory)
+ if a then
+ a = { detail = a }
+ end
+ local code = getmathcode(char)
+ if code then
+ code = code[1]
+ end
+ local tag
+ if code == ordinary_code or code == variable_code then
+ local ch = chardata[char]
+ local mc = ch and ch.mathclass
+ if mc == "number" then
+ tag = "mn"
+ elseif mc == "variable" or not mc then -- variable is default
+ tag = "mi"
+ else
+ tag = "mo"
+ end
else
- set_attribute(start,a_tagged,start_tagged("mo"))
+ tag = "mo"
end
+ set_attribute(start,a_tagged,start_tagged(tag,a))
stop_tagged()
- break
+ break -- okay?
elseif id == math_textchar_code then
-- check for code
- set_attribute(start,a_tagged,start_tagged("ms"))
+ local a = get_attribute(start,a_mathcategory)
+ if a then
+ set_attribute(start,a_tagged,start_tagged("ms"),{ detail = a })
+ else
+ set_attribute(start,a_tagged,start_tagged("ms"))
+ end
stop_tagged()
break
elseif id == math_delim_code then
@@ -102,6 +137,10 @@ process = function(start) -- we cannot use the processor as we have no finalizer
elseif id == math_box_code or id == hlist_code or id == vlist_code then
-- keep an eye on math_box_code and see what ends up in there
local attr = get_attribute(start,a_tagged)
+local last = attr and taglist[attr]
+if last and find(last[#last],"formulacaption%-") then
+ -- leave alone, will nicely move to the outer level
+else
local text = start_tagged("mtext")
set_attribute(start,a_tagged,text)
local list = start.list
@@ -123,8 +162,8 @@ process = function(start) -- we cannot use the processor as we have no finalizer
local id = n.id
if id == hlist_code or id == vlist_code then
runner(n.list)
- elseif id == glyph_code then
- local aa = get_attribute(n,a_tagged) -- only glyph needed
+ else -- if id == glyph_code then
+ local aa = get_attribute(n,a_tagged) -- only glyph needed (huh?)
if aa then
local ac = cache[aa]
if not ac then
@@ -152,6 +191,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer
runner(list)
end
stop_tagged()
+end
elseif id == math_sub_code then
local list = start.list
if list then
@@ -191,15 +231,38 @@ process = function(start) -- we cannot use the processor as we have no finalizer
end
elseif id == math_fence_code then
local delim = start.delim
- if delim then
- set_attribute(start,a_tagged,start_tagged("mo"))
- process(delim)
+ local subtype = start.subtype
+ if subtype == 1 then
+ -- left
+ set_attribute(start,a_tagged,start_tagged("mfenced"))
+ if delim then
+ set_attribute(start,a_tagged,start_tagged("mleft"))
+ process(delim)
+ stop_tagged()
+ end
+ elseif subtype == 2 then
+ -- middle
+ if delim then
+ set_attribute(start,a_tagged,start_tagged("mmiddle"))
+ process(delim)
+ stop_tagged()
+ end
+ elseif subtype == 3 then
+ if delim then
+ set_attribute(start,a_tagged,start_tagged("mright"))
+ process(delim)
+ stop_tagged()
+ end
stop_tagged()
+ else
+ -- can't happen
end
elseif id == math_radical_code then
local left, degree = start.left, start.degree
if left then
- process(left) -- mrow needed ?
+ start_tagged("")
+ process(left) -- root symbol, ignored
+ stop_tagged()
end
if degree then
set_attribute(start,a_tagged,start_tagged("mroot"))
@@ -215,21 +278,21 @@ process = function(start) -- we cannot use the processor as we have no finalizer
local accent, bot_accent = start.accent, start.bot_accent
if bot_accent then
if accent then
- set_attribute(start,a_tagged,start_tagged("munderover"))
- process(accent)
+ set_attribute(start,a_tagged,start_tagged("munderover",{ detail = "accent" }))
processsubsup(start)
process(bot_accent)
+ process(accent)
stop_tagged()
else
- set_attribute(start,a_tagged,start_tagged("munder"))
+ set_attribute(start,a_tagged,start_tagged("munder",{ detail = "accent" }))
processsubsup(start)
process(bot_accent)
stop_tagged()
end
elseif accent then
- set_attribute(start,a_tagged,start_tagged("mover"))
- process(accent)
+ set_attribute(start,a_tagged,start_tagged("mover",{ detail = "accent" }))
processsubsup(start)
+ process(accent)
stop_tagged()
else
processsubsup(start)
@@ -243,8 +306,12 @@ process = function(start) -- we cannot use the processor as we have no finalizer
end
function noads.handlers.tags(head,style,penalties)
- set_attribute(head,a_tagged,start_tagged("math"))
- set_attribute(head,a_tagged,start_tagged("mrow"))
+ local v_math = start_tagged("math")
+ local v_mrow = start_tagged("mrow")
+ local v_mode = get_attribute(head,a_mathmode)
+ set_attribute(head,a_tagged,v_math)
+ set_attribute(head,a_tagged,v_mrow)
+ tags.setattributehash(v_math,"mode",v_mode == 1 and "display" or "inline")
process(head)
stop_tagged()
stop_tagged()
diff --git a/tex/context/base/math-tex.mkii b/tex/context/base/math-tex.mkii
index 8f34a190e..e3dd634e6 100644
--- a/tex/context/base/math-tex.mkii
+++ b/tex/context/base/math-tex.mkii
@@ -4,7 +4,7 @@
%D subtitle=Plain Specials,
%D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-tim.mkii b/tex/context/base/math-tim.mkii
index 3b9aea103..da7d17e7b 100644
--- a/tex/context/base/math-tim.mkii
+++ b/tex/context/base/math-tim.mkii
@@ -5,7 +5,7 @@
%D subtitle=Mathtime Specials,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/math-uni.mkii b/tex/context/base/math-uni.mkii
index e8fd3f05d..5c75a9fb4 100644
--- a/tex/context/base/math-uni.mkii
+++ b/tex/context/base/math-uni.mkii
@@ -5,7 +5,7 @@
%D subtitle=unicode support,
%D author={Nikolai Weibull \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
\unprotect
diff --git a/tex/context/base/meta-clp.mkii b/tex/context/base/meta-clp.mkii
index be2506b19..5c9206dee 100644
--- a/tex/context/base/meta-clp.mkii
+++ b/tex/context/base/meta-clp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Clipping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-dum.mkii b/tex/context/base/meta-dum.mkii
index bc19f3c5f..dae30ed69 100644
--- a/tex/context/base/meta-dum.mkii
+++ b/tex/context/base/meta-dum.mkii
@@ -5,7 +5,7 @@
%D subtitle=Dummy (External) Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-fig.mkii b/tex/context/base/meta-fig.mkii
index 3edd73b57..31fe5fc0c 100644
--- a/tex/context/base/meta-fig.mkii
+++ b/tex/context/base/meta-fig.mkii
@@ -5,7 +5,7 @@
%D subtitle=Stand Alone Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-fig.mkiv b/tex/context/base/meta-fig.mkiv
index adaad4647..3c8c07c0d 100644
--- a/tex/context/base/meta-fig.mkiv
+++ b/tex/context/base/meta-fig.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Stand Alone Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-fun.mkiv b/tex/context/base/meta-fun.mkiv
index fbe91fd6a..c3a4ce8d4 100644
--- a/tex/context/base/meta-fun.mkiv
+++ b/tex/context/base/meta-fun.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Goodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-clp.mkiv b/tex/context/base/meta-imp-clp.mkiv
index be2506b19..5c9206dee 100644
--- a/tex/context/base/meta-imp-clp.mkiv
+++ b/tex/context/base/meta-imp-clp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Clipping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-dum.mkiv b/tex/context/base/meta-imp-dum.mkiv
index 60ab0a41d..98538bd87 100644
--- a/tex/context/base/meta-imp-dum.mkiv
+++ b/tex/context/base/meta-imp-dum.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Dummy (External) Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-mis.mkiv b/tex/context/base/meta-imp-mis.mkiv
index 29ab43007..e8282c381 100644
--- a/tex/context/base/meta-imp-mis.mkiv
+++ b/tex/context/base/meta-imp-mis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Misc Test Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-nav.mkiv b/tex/context/base/meta-imp-nav.mkiv
index 9c1cbb4db..45a31ba5e 100644
--- a/tex/context/base/meta-imp-nav.mkiv
+++ b/tex/context/base/meta-imp-nav.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Navigational Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-pre.mkiv b/tex/context/base/meta-imp-pre.mkiv
index cb861ff20..098be030b 100644
--- a/tex/context/base/meta-imp-pre.mkiv
+++ b/tex/context/base/meta-imp-pre.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Predefined Goodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-imp-txt.mkiv b/tex/context/base/meta-imp-txt.mkiv
index 474253a40..dc8bb7ca8 100644
--- a/tex/context/base/meta-imp-txt.mkiv
+++ b/tex/context/base/meta-imp-txt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Text Tricks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-ini.lua b/tex/context/base/meta-ini.lua
index 5150c3835..872c628aa 100644
--- a/tex/context/base/meta-ini.lua
+++ b/tex/context/base/meta-ini.lua
@@ -27,3 +27,56 @@ function metapost.uselibrary(name)
report_metapost("unknown: library '%s'",name)
end)
end
+
+-- experimental
+
+local colorhash = attributes.list[attributes.private('color')]
+
+local validdimen = lpeg.patterns.validdimen * lpeg.P(-1)
+
+local lpegmatch = lpeg.match
+local gmatch = string.gmatch
+local textype = tex.type
+local MPcolor = context.MPcolor
+
+function commands.prepareMPvariable(v) -- slow but ok
+ if v == "" then
+ MPcolor("black")
+ else
+ local typ, var = string.match(v,"(.):(.*)")
+ if not typ then
+ -- parse
+ if colorhash[v] then
+ MPcolor(v)
+ elseif tonumber(v) then
+ context(v)
+ elseif lpegmatch(validdimen,v) then
+ return context("\\the\\dimexpr %s",v)
+ else
+ for s in gmatch(v,"\\(.-)") do
+ local t = textype(s)
+ if t == "dimen" then
+ return context("\\the\\dimexpr %s",v)
+ elseif t == "count" then
+ return context("\\the\\numexpr %s",v)
+ end
+ end
+ return context("\\number %s",v) -- 0.4 ...
+ end
+ elseif typ == "d" then
+ -- dimension
+ context("\\the\\dimexpr %s",var)
+ elseif typ == "n" then
+ -- number
+ context("\\the\\numexpr %s",var)
+ elseif typ == "s" then
+ -- string
+ context(var)
+ elseif typ == "c" then
+ -- color
+ MPcolor(var)
+ else
+ context(var)
+ end
+ end
+end
diff --git a/tex/context/base/meta-ini.mkii b/tex/context/base/meta-ini.mkii
index fd6ef9a61..e7a7441f1 100644
--- a/tex/context/base/meta-ini.mkii
+++ b/tex/context/base/meta-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-ini.mkiv b/tex/context/base/meta-ini.mkiv
index e95eb1786..d435f5772 100644
--- a/tex/context/base/meta-ini.mkiv
+++ b/tex/context/base/meta-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-mis.mkii b/tex/context/base/meta-mis.mkii
index 29ab43007..e8282c381 100644
--- a/tex/context/base/meta-mis.mkii
+++ b/tex/context/base/meta-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Misc Test Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-nav.mkii b/tex/context/base/meta-nav.mkii
index 9c1cbb4db..45a31ba5e 100644
--- a/tex/context/base/meta-nav.mkii
+++ b/tex/context/base/meta-nav.mkii
@@ -5,7 +5,7 @@
%D subtitle=Navigational Graphics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pag.mkii b/tex/context/base/meta-pag.mkii
index 000e56a2e..82a525a08 100644
--- a/tex/context/base/meta-pag.mkii
+++ b/tex/context/base/meta-pag.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pag.mkiv b/tex/context/base/meta-pag.mkiv
index ef3817721..22483319b 100644
--- a/tex/context/base/meta-pag.mkiv
+++ b/tex/context/base/meta-pag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pdf.mkii b/tex/context/base/meta-pdf.mkii
index 0ba3fb979..e13113398 100644
--- a/tex/context/base/meta-pdf.mkii
+++ b/tex/context/base/meta-pdf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Conversion to \PDF,
%D author=Hans Hagen \& others (see text),
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pdf.mkiv b/tex/context/base/meta-pdf.mkiv
index 4d5e5232a..9a63b5034 100644
--- a/tex/context/base/meta-pdf.mkiv
+++ b/tex/context/base/meta-pdf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Conversion to \PDF,
%D author=Hans Hagen \& others (see text),
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pdh.mkiv b/tex/context/base/meta-pdh.mkiv
index 978128f3a..677b40aec 100644
--- a/tex/context/base/meta-pdh.mkiv
+++ b/tex/context/base/meta-pdh.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Conversion to \PDF,
%D author=Hans Hagen \& others (see text),
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-pre.mkii b/tex/context/base/meta-pre.mkii
index cb861ff20..098be030b 100644
--- a/tex/context/base/meta-pre.mkii
+++ b/tex/context/base/meta-pre.mkii
@@ -5,7 +5,7 @@
%D subtitle=Predefined Goodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-tex.mkii b/tex/context/base/meta-tex.mkii
index 190a694d9..ab0f24457 100644
--- a/tex/context/base/meta-tex.mkii
+++ b/tex/context/base/meta-tex.mkii
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ fast text insertion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-tex.mkiv b/tex/context/base/meta-tex.mkiv
index 2496440c7..6e1beeba6 100644
--- a/tex/context/base/meta-tex.mkiv
+++ b/tex/context/base/meta-tex.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ fast text insertion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-txt.mkii b/tex/context/base/meta-txt.mkii
index 474253a40..dc8bb7ca8 100644
--- a/tex/context/base/meta-txt.mkii
+++ b/tex/context/base/meta-txt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Text Tricks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-xml.mkii b/tex/context/base/meta-xml.mkii
index f6f81f767..71708a0f9 100644
--- a/tex/context/base/meta-xml.mkii
+++ b/tex/context/base/meta-xml.mkii
@@ -5,7 +5,7 @@
%D subtitle=XML Hacks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/meta-xml.mkiv b/tex/context/base/meta-xml.mkiv
index 6ce9612cc..bd93bda8c 100644
--- a/tex/context/base/meta-xml.mkiv
+++ b/tex/context/base/meta-xml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=XML Hacks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/metatex.tex b/tex/context/base/metatex.tex
index cb965dc48..b5f54c4ee 100644
--- a/tex/context/base/metatex.tex
+++ b/tex/context/base/metatex.tex
@@ -5,7 +5,7 @@
%D subtitle=\METATEX\ Format Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen / \CONTEXT\ Development Team]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mlib-ctx.mkiv b/tex/context/base/mlib-ctx.mkiv
index 6f56b7e68..75ff45488 100644
--- a/tex/context/base/mlib-ctx.mkiv
+++ b/tex/context/base/mlib-ctx.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Basics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mlib-pdf.mkiv b/tex/context/base/mlib-pdf.mkiv
index 8506b3b15..f1b2f040d 100644
--- a/tex/context/base/mlib-pdf.mkiv
+++ b/tex/context/base/mlib-pdf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Conversion to PDF,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mlib-pps.mkiv b/tex/context/base/mlib-pps.mkiv
index 357f85b1a..8dac53b74 100644
--- a/tex/context/base/mlib-pps.mkiv
+++ b/tex/context/base/mlib-pps.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Basics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-arrange.tex b/tex/context/base/mtx-context-arrange.tex
index b3d8a4df1..9ee0391b6 100644
--- a/tex/context/base/mtx-context-arrange.tex
+++ b/tex/context/base/mtx-context-arrange.tex
@@ -5,7 +5,7 @@
%D subtitle=Arrange Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-combine.tex b/tex/context/base/mtx-context-combine.tex
index 8a861ab83..3c48080ee 100644
--- a/tex/context/base/mtx-context-combine.tex
+++ b/tex/context/base/mtx-context-combine.tex
@@ -5,7 +5,7 @@
%D subtitle=Combine Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-common.tex b/tex/context/base/mtx-context-common.tex
index 8327dd28d..a34e47747 100644
--- a/tex/context/base/mtx-context-common.tex
+++ b/tex/context/base/mtx-context-common.tex
@@ -5,7 +5,7 @@
%D subtitle=Common Stuff,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-ideas.tex b/tex/context/base/mtx-context-ideas.tex
index 24d11a5b5..d10eefc76 100644
--- a/tex/context/base/mtx-context-ideas.tex
+++ b/tex/context/base/mtx-context-ideas.tex
@@ -5,7 +5,7 @@
%D subtitle=Placeholder File,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-listing.tex b/tex/context/base/mtx-context-listing.tex
index 0cbd73784..d69db9934 100644
--- a/tex/context/base/mtx-context-listing.tex
+++ b/tex/context/base/mtx-context-listing.tex
@@ -5,7 +5,7 @@
%D subtitle=Listing Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-select.tex b/tex/context/base/mtx-context-select.tex
index 8a02bdff7..7d6535119 100644
--- a/tex/context/base/mtx-context-select.tex
+++ b/tex/context/base/mtx-context-select.tex
@@ -7,7 +7,7 @@
%D subtitle=Listing Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mtx-context-timing.tex b/tex/context/base/mtx-context-timing.tex
index b788d4b63..1bc5b4776 100644
--- a/tex/context/base/mtx-context-timing.tex
+++ b/tex/context/base/mtx-context-timing.tex
@@ -5,7 +5,7 @@
%D subtitle=Timing Runs,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-aux.mkii b/tex/context/base/mult-aux.mkii
index f06833bff..3869a95db 100644
--- a/tex/context/base/mult-aux.mkii
+++ b/tex/context/base/mult-aux.mkii
@@ -5,7 +5,7 @@
%D subtitle=helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv
index 1dfe6fb8e..47d578ab5 100644
--- a/tex/context/base/mult-aux.mkiv
+++ b/tex/context/base/mult-aux.mkiv
@@ -5,7 +5,7 @@
%D subtitle=helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -113,8 +113,8 @@
\unexpanded\def\doinstallattributehandler#1#2#3% #1 not used here
{\def#2##1##2% style color
- {\edef\fontattributehash {#3{##1}}%
- \edef\colorattributehash{#3{##2}}%
+ {\edef\fontattributehash {#3{##1}}% this name is public
+ \edef\colorattributehash{#3{##2}}% this name is public
\ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash {##1}\fi
\ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash{##2}\fi}}
@@ -194,6 +194,42 @@
\expandafter\noexpand\csname everysetup#2\endcsname
\expandafter\noexpand\csname setupcurrent#2\endcsname}}
+\unexpanded\def\doinstallswitchsetuphandler#1#2#3#4#5#6%
+ {\ifx#3\relax\let#3\empty\fi
+ \unexpanded\def#2{\dodoubleempty#4}%
+ \unexpanded\def#6{\getparameters[#1#3]}%
+ \newtoks#5%
+ \def#4[##1][##2]% maybe helper
+ {\ifsecondargument % no commalist here
+ \let\savedsetupwhatever#3%
+ \edef#3{##1}%
+ \getparameters[#1#3][##2]%
+ \the#5%
+ \let#3\savedsetupwhatever
+ \else\iffirstargument
+ \doifassignmentelse{##1}
+ {\let\savedsetupwhatever#3%
+ \let#3\empty
+ \getparameters[#1][##1]%
+ \the#5%
+ \let#3\savedsetupwhatever}
+ {\edef#3{##1}% this will catch reset
+ \the#5}%
+ \else
+ \let#3\empty
+ \the#5%
+ \fi\fi}}
+
+\unexpanded\def\installswitchsetuphandler#1#2%
+ {\normalexpanded
+ {\doinstallswitchsetuphandler
+ {\noexpand#1}% \??aa
+ \expandafter\noexpand\csname setup#2\endcsname
+ \expandafter\noexpand\csname current#2\endcsname
+ \expandafter\noexpand\csname d@setup#2\endcsname
+ \expandafter\noexpand\csname everysetup#2\endcsname
+ \expandafter\noexpand\csname setupcurrent#2\endcsname}}
+
\unexpanded\def\installcommandhandler#1#2#3% \??self name \??parent (can be \??self)
{\installparameterhandler {#1}{#2}%
\installparameterhashhandler{#1}{#2}%
@@ -202,6 +238,14 @@
\installsetuphandler {#1}{#2}%
\installattributehandler {#1}{#2}}
+\unexpanded\def\installswitchcommandhandler#1#2#3% \??self name \??parent (can be \??self)
+ {\installparameterhandler {#1}{#2}%
+ \installparameterhashhandler{#1}{#2}%
+ \installparametersethandler {#1}{#2}%
+ \installdefinehandler {#1}{#2}{#3}%
+ \installswitchsetuphandler {#1}{#2}%
+ \installattributehandler {#1}{#2}}
+
\unexpanded\def\installnamespace#1%
{\setvalue{????#1}{@@@@#1}}
diff --git a/tex/context/base/mult-chk.mkii b/tex/context/base/mult-chk.mkii
index 60f568a1e..cde00fd44 100644
--- a/tex/context/base/mult-chk.mkii
+++ b/tex/context/base/mult-chk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Checking,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-chk.mkiv b/tex/context/base/mult-chk.mkiv
index cf38daf67..e3a6a4c54 100644
--- a/tex/context/base/mult-chk.mkiv
+++ b/tex/context/base/mult-chk.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Checking,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-com.mkii b/tex/context/base/mult-com.mkii
index 118616837..600819b7e 100644
--- a/tex/context/base/mult-com.mkii
+++ b/tex/context/base/mult-com.mkii
@@ -5,7 +5,7 @@
%D subtitle=Commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
diff --git a/tex/context/base/mult-con.mkii b/tex/context/base/mult-con.mkii
index 62e97d567..7d0a47bd0 100644
--- a/tex/context/base/mult-con.mkii
+++ b/tex/context/base/mult-con.mkii
@@ -5,7 +5,7 @@
%D subtitle=Constants,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-de.mkii b/tex/context/base/mult-de.mkii
index 6d6b04dca..7a7ba6be2 100644
--- a/tex/context/base/mult-de.mkii
+++ b/tex/context/base/mult-de.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{vorigeungeradeseite}
\setinterfacevariable{previouspage}{vorigeseite}
\setinterfacevariable{previoussubpage}{vorigeunterseite}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{druckbar}
\setinterfacevariable{process}{process}
\setinterfacevariable{product}{produkt}
diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua
index 8499dd43b..a26c8c0cf 100644
--- a/tex/context/base/mult-def.lua
+++ b/tex/context/base/mult-def.lua
@@ -14678,13 +14678,17 @@ return {
["pe"]="زیرصفحه‌قبلی",
["ro"]="subpaginaanterioara",
},
+ ["print"]={
+ ["en"]="print",
+ ["nl"]="print", -- afdruk
+ },
["printable"]={
["cs"]="tisknutelne",
["de"]="druckbar",
["en"]="printable",
["fr"]="editable",
["it"]="stampabile",
- ["nl"]="printbaar",
+ ["nl"]="printbaar", -- afdrukbaar
["pe"]="قابل‌چاپ",
["ro"]="tiparibil",
},
diff --git a/tex/context/base/mult-def.mkii b/tex/context/base/mult-def.mkii
index 0e1a7dee7..a75ef993f 100644
--- a/tex/context/base/mult-def.mkii
+++ b/tex/context/base/mult-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-def.mkiv b/tex/context/base/mult-def.mkiv
index a273fa18a..a09809cf7 100644
--- a/tex/context/base/mult-def.mkiv
+++ b/tex/context/base/mult-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-en.mkii b/tex/context/base/mult-en.mkii
index a40f341c6..f07fb688c 100644
--- a/tex/context/base/mult-en.mkii
+++ b/tex/context/base/mult-en.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{previousoddpage}
\setinterfacevariable{previouspage}{previouspage}
\setinterfacevariable{previoussubpage}{previoussubpage}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{printable}
\setinterfacevariable{process}{process}
\setinterfacevariable{product}{product}
diff --git a/tex/context/base/mult-fr.mkii b/tex/context/base/mult-fr.mkii
index 875d92bbc..8cf9ff3b1 100644
--- a/tex/context/base/mult-fr.mkii
+++ b/tex/context/base/mult-fr.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{pageimpaireprecedente}
\setinterfacevariable{previouspage}{pageprecedente}
\setinterfacevariable{previoussubpage}{souspageprecedente}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{editable}
\setinterfacevariable{process}{process}
\setinterfacevariable{product}{produit}
diff --git a/tex/context/base/mult-fst.mkii b/tex/context/base/mult-fst.mkii
index e655e3d26..36c3f181f 100644
--- a/tex/context/base/mult-fst.mkii
+++ b/tex/context/base/mult-fst.mkii
@@ -5,7 +5,7 @@
%D subtitle=Speed Up,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-fst.mkiv b/tex/context/base/mult-fst.mkiv
index 11558b557..e9d7c0b22 100644
--- a/tex/context/base/mult-fst.mkiv
+++ b/tex/context/base/mult-fst.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Speed Up,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-ini.mkii b/tex/context/base/mult-ini.mkii
index c2bb40861..76f6d69f2 100644
--- a/tex/context/base/mult-ini.mkii
+++ b/tex/context/base/mult-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-ini.mkiv b/tex/context/base/mult-ini.mkiv
index afddf692e..f7b5ef247 100644
--- a/tex/context/base/mult-ini.mkiv
+++ b/tex/context/base/mult-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-it.mkii b/tex/context/base/mult-it.mkii
index 3823e651c..6692e7c06 100644
--- a/tex/context/base/mult-it.mkii
+++ b/tex/context/base/mult-it.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{paginadispariprecedente}
\setinterfacevariable{previouspage}{paginaprecedente}
\setinterfacevariable{previoussubpage}{sottopaginaprecedente}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{stampabile}
\setinterfacevariable{process}{process}
\setinterfacevariable{product}{prodotto}
diff --git a/tex/context/base/mult-nl.mkii b/tex/context/base/mult-nl.mkii
index a5b62ad33..732b467a0 100644
--- a/tex/context/base/mult-nl.mkii
+++ b/tex/context/base/mult-nl.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{vorigeonevenpagina}
\setinterfacevariable{previouspage}{vorigepagina}
\setinterfacevariable{previoussubpage}{vorigesubpagina}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{printbaar}
\setinterfacevariable{process}{proces}
\setinterfacevariable{product}{produkt}
diff --git a/tex/context/base/mult-pe.mkii b/tex/context/base/mult-pe.mkii
index 284fa40e8..c08fd3cc0 100644
--- a/tex/context/base/mult-pe.mkii
+++ b/tex/context/base/mult-pe.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{صفحه‌فردقبلی}
\setinterfacevariable{previouspage}{صفحه‌قبلی}
\setinterfacevariable{previoussubpage}{زیرصفحه‌قبلی}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{قابل‌چاپ}
\setinterfacevariable{process}{پردازش}
\setinterfacevariable{product}{محصول}
diff --git a/tex/context/base/mult-ro.mkii b/tex/context/base/mult-ro.mkii
index 474cf7c43..1fa93dd98 100644
--- a/tex/context/base/mult-ro.mkii
+++ b/tex/context/base/mult-ro.mkii
@@ -356,6 +356,7 @@
\setinterfacevariable{previousoddpage}{paginaimparaprecedenta}
\setinterfacevariable{previouspage}{paginaanterioara}
\setinterfacevariable{previoussubpage}{subpaginaanterioara}
+\setinterfacevariable{print}{print}
\setinterfacevariable{printable}{tiparibil}
\setinterfacevariable{process}{process}
\setinterfacevariable{product}{produs}
diff --git a/tex/context/base/mult-sys.mkii b/tex/context/base/mult-sys.mkii
index 1484acecc..1961fdf11 100644
--- a/tex/context/base/mult-sys.mkii
+++ b/tex/context/base/mult-sys.mkii
@@ -5,7 +5,7 @@
%D subtitle=System,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/mult-sys.mkiv b/tex/context/base/mult-sys.mkiv
index 4e3138c86..9d037368a 100644
--- a/tex/context/base/mult-sys.mkiv
+++ b/tex/context/base/mult-sys.mkiv
@@ -5,7 +5,7 @@
%D subtitle=System,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -371,8 +371,6 @@
\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.
diff --git a/tex/context/base/node-acc.lua b/tex/context/base/node-acc.lua
index 537405921..d773b7acf 100644
--- a/tex/context/base/node-acc.lua
+++ b/tex/context/base/node-acc.lua
@@ -14,6 +14,7 @@ local tasks = nodes.tasks
local traverse_nodes = node.traverse
local traverse_id = node.traverse_id
local has_attribute = node.has_attribute
+local set_attribute = node.set_attribute
local copy_node = node.copy
local free_nodelist = node.flush_list
@@ -22,6 +23,10 @@ local glyph_code = nodecodes.glyph
local hlist_code = nodecodes.hlist
local vlist_code = nodecodes.vlist
+local a_characters = attributes.private("characters")
+
+-- todo: nbsp etc
+
local function injectspaces(head)
local p
for n in traverse_nodes(head) do
@@ -29,6 +34,10 @@ local function injectspaces(head)
if id == glue_code then -- todo: check for subtype related to spacing (13/14 but most seems to be 0)
-- local at = has_attribute(n,attribute)
-- if at then
+--~ local a = has_attribute(n,a_characters)
+--~ if a then
+--~ -- handle this in the export
+--~ else
if p and p.id == glyph_code then
local g = copy_node(p)
local c = g.components
@@ -37,13 +46,20 @@ local function injectspaces(head)
g.components = nil
g.subtype = 256
end
+ local a = has_attribute(n,a_characters)
local s = copy_node(n.spec)
g.char, n.spec = 32, s
p.next, g.prev = g, p
g.next, n.prev = n, g
s.width = s.width - g.width
+ if a then
+ set_attribute(g,a_characters,a)
+ end
+ set_attribute(s,a_characters,0)
+ set_attribute(n,a_characters,0)
end
-- end
+--~ end
elseif id == hlist_code or id == vlist_code then
injectspaces(n.list,attribute)
end
diff --git a/tex/context/base/node-bck.mkiv b/tex/context/base/node-bck.mkiv
index 88fb390a9..f53584396 100644
--- a/tex/context/base/node-bck.mkiv
+++ b/tex/context/base/node-bck.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Backgrounds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-fin.mkiv b/tex/context/base/node-fin.mkiv
index ffa4b8bf5..3faf2e319 100644
--- a/tex/context/base/node-fin.mkiv
+++ b/tex/context/base/node-fin.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Finalizing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-ini.mkiv b/tex/context/base/node-ini.mkiv
index 8d048122f..9924a092a 100644
--- a/tex/context/base/node-ini.mkiv
+++ b/tex/context/base/node-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-mig.mkiv b/tex/context/base/node-mig.mkiv
index c07f5ed5b..69ed1d9e7 100644
--- a/tex/context/base/node-mig.mkiv
+++ b/tex/context/base/node-mig.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Inserts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-pag.mkiv b/tex/context/base/node-pag.mkiv
index 487901ad0..b8ed197fe 100644
--- a/tex/context/base/node-pag.mkiv
+++ b/tex/context/base/node-pag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Page Building,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-par.lua b/tex/context/base/node-par.lua
index b0879c750..8eafd1f6e 100644
--- a/tex/context/base/node-par.lua
+++ b/tex/context/base/node-par.lua
@@ -89,7 +89,9 @@ end
-- pre and post hooks and only one parbuilder makes sense, so no:
--
-- local actions = nodes.tasks.actions("parbuilders")
-
+--
+-- yet (maybe some day).
+--
-- todo: enable one as main
local actions = constructors.handler
diff --git a/tex/context/base/node-par.mkiv b/tex/context/base/node-par.mkiv
index 2e9efde1f..e6a322637 100644
--- a/tex/context/base/node-par.mkiv
+++ b/tex/context/base/node-par.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Paragraph Building,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-pro.lua b/tex/context/base/node-pro.lua
index 2d04a4d71..73d22697e 100644
--- a/tex/context/base/node-pro.lua
+++ b/tex/context/base/node-pro.lua
@@ -16,15 +16,16 @@ local report_nodes = logs.reporter("nodes","processors")
local nodes, node = nodes, node
-local nodecodes = nodes.nodecodes
-local glyph_code = nodecodes.glyph
-local tasks = nodes.tasks
+local nodecodes = nodes.nodecodes
+local glyph_code = nodecodes.glyph
+local tasks = nodes.tasks
-local free_node = node.free
-local first_glyph = node.first_glyph or node.first_character
+local free_node = node.free
+local first_glyph = node.first_glyph or node.first_character
+local has_attribute = node.has_attribute
-nodes.processors = nodes.processors or { }
-local processors = nodes.processors
+nodes.processors = nodes.processors or { }
+local processors = nodes.processors
-- vbox: grouptype: vbox vtop output split_off split_keep | box_type: exactly|aditional
-- hbox: grouptype: hbox adjusted_hbox(=hbox_in_vmode) | box_type: exactly|aditional
diff --git a/tex/context/base/node-rul.mkiv b/tex/context/base/node-rul.mkiv
index 90bcd9e40..cf94ac5e0 100644
--- a/tex/context/base/node-rul.mkiv
+++ b/tex/context/base/node-rul.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Bars,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/node-spl.mkiv b/tex/context/base/node-spl.mkiv
index 8ad6795a5..3630212af 100644
--- a/tex/context/base/node-spl.mkiv
+++ b/tex/context/base/node-spl.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Splitters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-alo.mkii b/tex/context/base/norm-alo.mkii
index d47f49037..d359cf7e8 100644
--- a/tex/context/base/norm-alo.mkii
+++ b/tex/context/base/norm-alo.mkii
@@ -5,7 +5,7 @@
%D subtitle=\ALEPH\ and \OMEGA,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-ctx.mkii b/tex/context/base/norm-ctx.mkii
index 707705d89..b1a4c7d35 100644
--- a/tex/context/base/norm-ctx.mkii
+++ b/tex/context/base/norm-ctx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\ALEPH\ and \OMEGA,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-ctx.mkiv b/tex/context/base/norm-ctx.mkiv
index 707705d89..b1a4c7d35 100644
--- a/tex/context/base/norm-ctx.mkiv
+++ b/tex/context/base/norm-ctx.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\ALEPH\ and \OMEGA,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-etx.mkii b/tex/context/base/norm-etx.mkii
index 3edd8e7ef..bd244e4d1 100644
--- a/tex/context/base/norm-etx.mkii
+++ b/tex/context/base/norm-etx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\ETEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-ltx.mkii b/tex/context/base/norm-ltx.mkii
index a779735dd..cd02cffec 100644
--- a/tex/context/base/norm-ltx.mkii
+++ b/tex/context/base/norm-ltx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\LUATEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-ptx.mkii b/tex/context/base/norm-ptx.mkii
index 352a884f0..14a57aeec 100644
--- a/tex/context/base/norm-ptx.mkii
+++ b/tex/context/base/norm-ptx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\PDFTEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-tex.mkii b/tex/context/base/norm-tex.mkii
index 61f9740ef..0bd54f71a 100644
--- a/tex/context/base/norm-tex.mkii
+++ b/tex/context/base/norm-tex.mkii
@@ -5,7 +5,7 @@
%D subtitle=\TEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/norm-xtx.mkii b/tex/context/base/norm-xtx.mkii
index 3da944656..851b90b31 100644
--- a/tex/context/base/norm-xtx.mkii
+++ b/tex/context/base/norm-xtx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\XETEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-bar.mkiv b/tex/context/base/pack-bar.mkiv
index 05afd32d0..6967173e2 100644
--- a/tex/context/base/pack-bar.mkiv
+++ b/tex/context/base/pack-bar.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Bars,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-box.mkii b/tex/context/base/pack-box.mkii
index f27d8b4fd..8e7700b21 100644
--- a/tex/context/base/pack-box.mkii
+++ b/tex/context/base/pack-box.mkii
@@ -5,7 +5,7 @@
%D subtitle=Boxes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -234,7 +234,7 @@
{\lower\ht\collectorbox\box\collectorbox}%
% just to be sure
\ifdim\wd\collectorbox<\@@layerxsiz
- \global\wd\collectorbox\@@layerxsiz
+ \wd\collectorbox\@@layerxsiz
\fi}
\def\flushcollector[#1]%
@@ -260,7 +260,7 @@
\def\adaptcollector
{\dodoubleargument\doadaptcollector}
-\def\doadaptcollector[#1][#2]%
+\def\doadaptcollector[#1][#2]% % a typical case where \global\wd looks better in the code
{\bgroup
\def\currentcollector{#1}%
\mathchardef\collectorbox\csname\@@collectorbox#1\endcsname
diff --git a/tex/context/base/pack-box.mkiv b/tex/context/base/pack-box.mkiv
index fa771b485..5bd617b1b 100644
--- a/tex/context/base/pack-box.mkiv
+++ b/tex/context/base/pack-box.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Boxes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -234,7 +234,7 @@
{\lower\ht\collectorbox\box\collectorbox}%
% just to be sure
\ifdim\wd\collectorbox<\@@layerxsiz
- \global\wd\collectorbox\@@layerxsiz
+ \wd\collectorbox\@@layerxsiz
\fi}
\def\flushcollector[#1]%
@@ -260,7 +260,7 @@
\def\adaptcollector
{\dodoubleargument\doadaptcollector}
-\def\doadaptcollector[#1][#2]%
+\def\doadaptcollector[#1][#2]% % a typical case where \global\wd looks better in the code
{\bgroup
\def\currentcollector{#1}%
\chardef\collectorbox\csname\@@collectorbox#1\endcsname
diff --git a/tex/context/base/pack-lyr.mkii b/tex/context/base/pack-lyr.mkii
index 85549bccb..1b0c0fd63 100644
--- a/tex/context/base/pack-lyr.mkii
+++ b/tex/context/base/pack-lyr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Layers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-lyr.mkiv b/tex/context/base/pack-lyr.mkiv
index 5242b56de..f812586ce 100644
--- a/tex/context/base/pack-lyr.mkiv
+++ b/tex/context/base/pack-lyr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Layers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-mis.mkvi b/tex/context/base/pack-mis.mkvi
index ab6d2b334..f7c506b8e 100644
--- a/tex/context/base/pack-mis.mkvi
+++ b/tex/context/base/pack-mis.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-obj.mkii b/tex/context/base/pack-obj.mkii
index 6971ad04f..81523d525 100644
--- a/tex/context/base/pack-obj.mkii
+++ b/tex/context/base/pack-obj.mkii
@@ -5,7 +5,7 @@
%D subtitle=Objects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-obj.mkiv b/tex/context/base/pack-obj.mkiv
index 3d87f52b5..a89e72207 100644
--- a/tex/context/base/pack-obj.mkiv
+++ b/tex/context/base/pack-obj.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Objects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -265,55 +265,27 @@
{\globalpopmacro\crossreferenceobject
\dododosetobject{#1}{#2}{#3}\egroup}}
-\ifnum\luatexversion<66
-
- \def\dododosetobject#1#2#3% this is a hack: luatex adds 1bp around each side
- {\begingroup
- \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox
- \ifcase#1\relax
- \scratchdimen-\onebasepoint % compensates auto 1 bp
- \else\ifdim\objectoffset>\zeropoint
- \scratchdimen \objectoffset
- \else
- \scratchdimen-\onebasepoint % compensates auto 1 bp
- \fi\fi
- \@EA\xdef\csname\r!object#2::#3\endcsname
- {\noexpand\dohandleobject{#2}{#3}%
- {\ifhbox\nextbox\hbox\else\vbox\fi}%
- {\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}}%
- \setbox\nextbox\vbox spread 2\scratchdimen
- {\forgetall \offinterlineskip
- \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}%
- \flushnextbox
- \dostopobject
- \endgroup}
-
-\else
-
- \def\dododosetobject#1#2#3%
- {\begingroup
- \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}%
- {\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
- \endgroup}
+% in luatex version < 66 we had a 1bp compensation (hardcoded in luatex)
-\fi
+\def\dododosetobject#1#2#3%
+ {\begingroup
+ \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}%
+ {\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
+ \endgroup}
\def\getobject#1#2%
{\begingroup
@@ -324,6 +296,7 @@
{% \initializepaper
\forgetall
\dontshowcomposition
+ % todo: if no attr then faster
\setbox\scratchbox\vbox attr \viewerlayerattribute \attribute\viewerlayerattribute
{\doinsertobject{#1}{#2}}%
\setbox\scratchbox#3%
diff --git a/tex/context/base/pack-pos.mkiv b/tex/context/base/pack-pos.mkiv
index 42a80b5ae..3f71dfa8d 100644
--- a/tex/context/base/pack-pos.mkiv
+++ b/tex/context/base/pack-pos.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Positioning,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-rul.mkii b/tex/context/base/pack-rul.mkii
index 055094547..2e625a90f 100644
--- a/tex/context/base/pack-rul.mkii
+++ b/tex/context/base/pack-rul.mkii
@@ -5,7 +5,7 @@
%D subtitle=Ruled Content,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pack-rul.mkiv b/tex/context/base/pack-rul.mkiv
index c137aea01..c8e2f529a 100644
--- a/tex/context/base/pack-rul.mkiv
+++ b/tex/context/base/pack-rul.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Ruled Content,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -787,18 +787,6 @@
\let\@@framed\s!unknown
-% \def\framedparameter #1{\csname\doframedparameter\@@framed#1\endcsname}
-% \def\framedparameterhash#1{\doframedparameterhash \@@framed#1}
-%
-% \def\doframedparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\doframedparentparameter \csname#1\s!parent\endcsname#2\fi}
-% \def\doframedparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\doframedparentparameterhash\csname#1\s!parent\endcsname#2\fi}
-%
-% \def\doframedparentparameter #1#2{\ifx#1\relax\s!empty\else\doframedparameter #1#2\fi}
-% \def\doframedparentparameterhash#1#2{\ifx#1\relax \else\doframedparameterhash#1#2\fi}
-%
-% \def\doframedparentparameter#1#2{\ifx#1\relax\doframedrootparameter#2\else\doframedparameter#1#2\fi}
-% \def\doframedrootparameter #1{\ifcsname\??oi#1\endcsname\??oi#1\else\s!empty\fi}
-
\def\framedparameter #1{\csname\doframedparameter\@@framed{#1}\endcsname}
\def\framedparameterhash#1{\doframedparameterhash \@@framed#1}
@@ -2891,7 +2879,7 @@
\dosingleempty\dodoframedtext}
\def\dodoframedtext[#1]% beware!
- {\normalexpanded{\noexpand\switchtobodyfont[\\framedtextparameter\c!bodyfont]}%
+ {\normalexpanded{\noexpand\switchtobodyfont[\framedtextparameter\c!bodyfont]}%
\localframed[\??kd\currentframedtext][\c!strut=\v!no,#1]%
\bgroup
\blank[\v!disable]%
diff --git a/tex/context/base/page-app.mkii b/tex/context/base/page-app.mkii
index e5c149aa0..75e0cf874 100644
--- a/tex/context/base/page-app.mkii
+++ b/tex/context/base/page-app.mkii
@@ -5,7 +5,7 @@
%D subtitle=Independent page building,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-app.mkiv b/tex/context/base/page-app.mkiv
index b42eef054..79787b99b 100644
--- a/tex/context/base/page-app.mkiv
+++ b/tex/context/base/page-app.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Independent page building,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-bck.mkii b/tex/context/base/page-bck.mkii
index 0b4ad779a..4c636d29e 100644
--- a/tex/context/base/page-bck.mkii
+++ b/tex/context/base/page-bck.mkii
@@ -5,7 +5,7 @@
%D subtitle=Backgrounds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-bck.mkiv b/tex/context/base/page-bck.mkiv
index 81392f5af..fd1dff885 100644
--- a/tex/context/base/page-bck.mkiv
+++ b/tex/context/base/page-bck.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Backgrounds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -206,12 +206,14 @@
\newbox\rightbackground
\def\addmainbackground#1% todo: dimension spec
- {\ifsomebackground
- \ifnewbackground \setbackgroundboxes \fi
- \setbox#1\vbox
- {\offinterlineskip
- \doifmarginswapelse{\copy\leftbackground}{\copy\rightbackground}%
- \box#1}%
+ {\ifcase\pageornamentstate
+ \ifsomebackground
+ \ifnewbackground \setbackgroundboxes \fi
+ \setbox#1\vbox
+ {\offinterlineskip
+ \doifmarginswapelse{\copy\leftbackground}{\copy\rightbackground}%
+ \box#1}%
+ \fi
\fi}
%D Finaly there is an aditional {\em text} background, again
diff --git a/tex/context/base/page-com.mkiv b/tex/context/base/page-com.mkiv
index dbb160058..fb7f34a4b 100644
--- a/tex/context/base/page-com.mkiv
+++ b/tex/context/base/page-com.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Page Comments,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-flt.mkiv b/tex/context/base/page-flt.mkiv
index 6d2389176..910e8261a 100644
--- a/tex/context/base/page-flt.mkiv
+++ b/tex/context/base/page-flt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Float Management,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -166,7 +166,7 @@
% retain special alignments
\ifinsidecolumns
\ifdim\wd\floatbox>\makeupwidth
- \global\wd\floatbox\makeupwidth
+ \wd\floatbox\makeupwidth
\fi
\fi
\fi
diff --git a/tex/context/base/page-flw.mkii b/tex/context/base/page-flw.mkii
index 3eb867a78..ba8fd3eab 100644
--- a/tex/context/base/page-flw.mkii
+++ b/tex/context/base/page-flw.mkii
@@ -5,7 +5,7 @@
%D subtitle=Text Flows,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-flw.mkiv b/tex/context/base/page-flw.mkiv
index 81b4fedcb..b896a9598 100644
--- a/tex/context/base/page-flw.mkiv
+++ b/tex/context/base/page-flw.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Text Flows,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-imp.mkii b/tex/context/base/page-imp.mkii
index 4c22d4d2d..bf10504b4 100644
--- a/tex/context/base/page-imp.mkii
+++ b/tex/context/base/page-imp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pagebody Building (Imposition),
%D author=Hans Hagen & Willi Egger,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -138,24 +138,14 @@
\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}
-
\def\flushatshipout
{\dowithnextbox
{\global\setbox\postponedcontent\hbox to \zeropoint
{%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt)
\unhbox\postponedcontent\unhbox\nextbox}%
- \global\ht\postponedcontent\zeropoint
- \global\dp\postponedcontent\zeropoint
- \global\wd\postponedcontent\zeropoint}%
+ \ht\postponedcontent\zeropoint
+ \dp\postponedcontent\zeropoint
+ \wd\postponedcontent\zeropoint}%
\hbox}
% \starttypen
@@ -548,15 +538,15 @@
\fi}
\def\handlearrangedpageSIDE
- {\global\wd\arrangedpageA\paperwidth
- \global\wd\arrangedpageB\paperwidth
+ {\wd\arrangedpageA\paperwidth
+ \wd\arrangedpageB\paperwidth
\global\setbox\arrangedpageA\hbox
{\box\arrangedpageA\box\arrangedpageB}%
- \global\ht\arrangedpageA\paperheight}
+ \ht\arrangedpageA\paperheight}
\def\handlearrangedpageTOP
- {\global\ht\arrangedpageA\paperheight
- \global\ht\arrangedpageB\paperheight
+ {\ht\arrangedpageA\paperheight
+ \ht\arrangedpageB\paperheight
\global\setbox\arrangedpageA\vbox
{\forgetall\offinterlineskip\vskip\paperheight
\box\arrangedpageA\box\arrangedpageB}%
@@ -585,13 +575,13 @@
\clippedprintbox1\arrangedpageA}%
\swaparrangedtrue
\fi
- \global\ht\arrangedpageA\paperheight
+ \ht\arrangedpageA\paperheight
\global\setbox\arrangedpageB\box\scratchbox}
\def\handlearrangedpageTWODOWN
{\splitoffarrangedpagesTWO
- \global\ht\arrangedpageA\paperheight
- \global\ht\arrangedpageB\paperheight
+ \ht\arrangedpageA\paperheight
+ \ht\arrangedpageB\paperheight
\ifswaparranged
\global\setbox\arrangedpageA\vbox
{\forgetall\offinterlineskip\vskip\paperheight
diff --git a/tex/context/base/page-imp.mkiv b/tex/context/base/page-imp.mkiv
index b6fa75c8b..027db2142 100644
--- a/tex/context/base/page-imp.mkiv
+++ b/tex/context/base/page-imp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Pagebody Building (Imposition),
%D author=Hans Hagen & Willi Egger,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -69,7 +69,7 @@
% \starttext \dorecurse{10}{\input tufte \par} \stoptext
\def\clippagebox % skip fast over false
- {\ifdim\@@lyclipoffset>\zeropoint
+ {\ifdim\layoutparameter\c!clipoffset>\zeropoint
\expandafter\doclippagebox
\else
\expandafter\gobbleoneargument
@@ -80,7 +80,7 @@
\!!heighta\ht#1%
\!!deptha \dp#1%
\setbox#1\hbox
- {\!!widthb \@@lyclipoffset
+ {\!!widthb\layoutparameter\c!clipoffset
\advance\!!heighta\dimexpr\!!deptha+2\!!widthb\relax
\advance\!!widtha \!!widthb
\doifbothsides
@@ -137,9 +137,9 @@
{\global\setbox\postponedcontent\hbox to \zeropoint
{%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt)
\unhbox\postponedcontent\unhbox\nextbox}% was \box
- \global\ht\postponedcontent\zeropoint
- \global\dp\postponedcontent\zeropoint
- \global\wd\postponedcontent\zeropoint}%
+ \global\postponedcontent\zeropoint
+ \global\postponedcontent\zeropoint
+ \global\postponedcontent\zeropoint}%
\hbox}
% \starttypen
@@ -552,15 +552,15 @@
\fi}
\def\handlearrangedpageSIDE
- {\global\wd\arrangedpageA\paperwidth
- \global\wd\arrangedpageB\paperwidth
+ {\wd\arrangedpageA\paperwidth
+ \wd\arrangedpageB\paperwidth
\global\setbox\arrangedpageA\hbox
{\box\arrangedpageA\box\arrangedpageB}%
- \global\ht\arrangedpageA\paperheight}
+ \ht\arrangedpageA\paperheight}
\def\handlearrangedpageTOP
- {\global\ht\arrangedpageA\paperheight
- \global\ht\arrangedpageB\paperheight
+ {\ht\arrangedpageA\paperheight
+ \ht\arrangedpageB\paperheight
\global\setbox\arrangedpageA\vbox
{\offinterlineskip\vskip\paperheight
\box\arrangedpageA\box\arrangedpageB}%
@@ -589,13 +589,13 @@
\clippedprintbox\plusone \arrangedpageA}%
\settrue\arrangedswapstate
\fi
- \global\ht\arrangedpageA\paperheight
+ \ht\arrangedpageA\paperheight
\global\setbox\arrangedpageB\box\scratchbox}
\def\handlearrangedpageTWODOWN
{\splitoffarrangedpagesTWO
- \global\ht\arrangedpageA\paperheight
- \global\ht\arrangedpageB\paperheight
+ \ht\arrangedpageA\paperheight
+ \ht\arrangedpageB\paperheight
\ifconditional\arrangedswapstate
\global\setbox\arrangedpageA\vbox
{\offinterlineskip\vskip\paperheight
diff --git a/tex/context/base/page-ini.mkii b/tex/context/base/page-ini.mkii
index 816b7d944..bc4aab60f 100644
--- a/tex/context/base/page-ini.mkii
+++ b/tex/context/base/page-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initializations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-ini.mkiv b/tex/context/base/page-ini.mkiv
index 7969e4f3e..56d647205 100644
--- a/tex/context/base/page-ini.mkiv
+++ b/tex/context/base/page-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initializations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -126,11 +126,9 @@
%
% tricky in balancing mode, a la huidige multi columns
-\ifx\dosetuplayout\undefined % overloaded in page-lay !
-
- \unexpanded\def\setuplayout{\dodoubleempty\getparameters[\??ly]}
-
-\fi
+% \ifx\dosetuplayout\undefined % overloaded in page-lay !
+% \unexpanded\def\setuplayout{\dodoubleempty\getparameters[\??ly]}
+% \fi
\ifx\mkprocesscolumncontents\undefined\let\mkprocesscolumncontents\gobbleoneargument\fi
\ifx\mkprocesspagecontents \undefined\let\mkprocesspagecontents \gobbleoneargument\fi
@@ -155,17 +153,6 @@
\def\installotr#1% andere naam, beter \connectotr of zo
{\def\OTRidentifier{#1}}
-% \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}
-%
-% maybe faster but at least less tracing:
-
\def\OTRcommand#1%
{\csname\@@OTR
\ifcsname\@@OTR\OTRidentifier\expandafter\gobbleoneargument\string#1\endcsname
@@ -806,10 +793,6 @@
\newif\ifsavepagebody \newbox\savedpagebody
-% beware, \??ly is used before defined, i.e. bad module design
-
-\setuplayout[\c!method=\v!normal]
-
\def\docolumnpagebodymarks#1#2#3#4% first last column box
{\ifnum#3=#1\relax
\dosynchronizemarking[\number#3,\v!column:\number#3,\v!first,\v!column:\v!first][#4]%
@@ -822,15 +805,15 @@
\def\buildpagebody#1#2%
{\ifsavepagebody\global\setbox\savedpagebody\fi
\vbox
- {%\pushcatcodetable
- %\forgetall % igv problemen, check: \boxmaxdepth\maxdimen
+ {%\forgetall % igv problemen, check: \boxmaxdepth\maxdimen
\boxmaxdepth\maxdimen % new
\dontcomplain
% marks get done here
- \dosynchronizemarking[\v!page][#2]%
+ \dosynchronizemarking[\v!page][#2]% #2 box
% 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%
+ % will change and is for my (hh) personal experiments .. takes two
+ % arguments
+ \constructpagecontent#1#2%
% the finishing touch
\ifcase\pageornamentstate
\addpagebackground \pagebox
@@ -839,55 +822,69 @@
\ifarrangingpages
\shiftpaperpagebox \pagebox % \v!paper
\else
- \clippagebox \pagebox
- \doifelse\@@lymarking\v!page
- {\replicatepagebox \pagebox
- \addpagecutmarks \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
+ \clippagebox \pagebox
+ \page_marks_add_page \pagebox
+ \replicatepagebox \pagebox
+ \scalepagebox \pagebox
+ \mirrorpaperbox \pagebox
+ \orientpaperbox \pagebox
+ \page_marks_add_more \pagebox
+ \centerpagebox \pagebox
+ \addprintbackground \pagebox
+ \mirrorprintbox \pagebox
+ \orientprintbox \pagebox
+ \shiftprintpagebox \pagebox % \v!page
+ \offsetprintbox \pagebox
+ \negateprintbox \pagebox
\fi
- \box\pagebox
- }% \popcatcodetable
+ \box\pagebox}%
\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
- \fi
- \buildpagebox \pagebox
- \addstatusinfo \pagebox}
+\ifx\page_marks_add_page\undefined \let\page_marks_add_page\gobbleoneargument \fi
+\ifx\page_marks_add_more\undefined \let\page_marks_add_more\gobbleoneargument \fi
+
+% \setvalue{\??ly\c!method\v!normal}#1#2%
+% {\setbox\pagebox\vbox
+% {\offinterlineskip
+% \ifcase\pageornamentstate
+% \bgroup % else footnotes get inconsistent font/baseline
+% % color/style attributes
+% \offinterlineskip
+% \gettextboxes
+% \egroup
+% \fi
+% \getmainbox#1#2}% including footnotes
+% \ifcase\pageornamentstate
+% \addmainbackground \pagebox
+% \fi
+% \buildpagebox \pagebox
+% \addstatusinfo \pagebox}
+
+\ifx\constructnormalpagecontent\undefined
+
+ \def\constructnormalpagecontent#1#2%
+ {\setbox\pagebox\vbox
+ {\offinterlineskip
+ \gettextboxes
+ \getmainbox#1#2}% including footnotes
+ \addmainbackground\pagebox
+ \buildpagebox\pagebox
+ \addstatusinfo\pagebox}
+
+\fi
+
+\ifx\constructpagecontent\undefined
+ \let\constructpagecontent\constructnormalpagecontent % will be overloaded
+\fi
\def\finishpagebox#1%
{\ifarrangingpages
- \addpagecutmarks #1%
- \addpagecolormarks#1%
- \centerpagebox #1%
- \mirrorprintbox #1%
- \orientprintbox #1%
- \offsetprintbox #1%
- \negateprintbox #1%
+ \page_marks_add_more#1%
+ \centerpagebox #1%
+ \mirrorprintbox #1%
+ \orientprintbox #1%
+ \offsetprintbox #1%
+ \negateprintbox #1%
\fi}
\appendtoks \restoreouterspacing \to \everybeforepagebody
diff --git a/tex/context/base/page-ins.mkii b/tex/context/base/page-ins.mkii
index 069153434..ce0f51d72 100644
--- a/tex/context/base/page-ins.mkii
+++ b/tex/context/base/page-ins.mkii
@@ -5,7 +5,7 @@
%D subtitle=Insertions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-ins.mkiv b/tex/context/base/page-ins.mkiv
index 3e12bfcf0..934ce19ab 100644
--- a/tex/context/base/page-ins.mkiv
+++ b/tex/context/base/page-ins.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Insertions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-lay.mkii b/tex/context/base/page-lay.mkii
index d40e1ccb7..61ff8764f 100644
--- a/tex/context/base/page-lay.mkii
+++ b/tex/context/base/page-lay.mkii
@@ -5,7 +5,7 @@
%D subtitle=Layout Specification,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-lay.mkiv b/tex/context/base/page-lay.mkiv
index 812f3a3ac..81070a8e9 100644
--- a/tex/context/base/page-lay.mkiv
+++ b/tex/context/base/page-lay.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Layout Specification,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -25,17 +25,18 @@
\unprotect
%D First we get rid of the funny \TEX\ offset defaults of one
-%D inch by setting them to zero.
+%D inch by setting them to zero (actually this is already done
+%D elsewhere but it's good to notice).
-\voffset = 0pt % setting this to -1in let's go metapost crazy
-\hoffset = 0pt % setting this to -1in let's go metapost crazy
+\voffset \zeropoint
+\hoffset \zeropoint
%D The dimensions related to layout areas are represented by
%D real dimensions.
\newdimen\paperheight \paperheight = 297mm
\newdimen\paperwidth \paperwidth = 210mm
-\newdimen\paperoffset \paperoffset = 0mm
+\newdimen\paperoffset \paperoffset = \zeropoint
\newdimen\printpaperheight \printpaperheight = \paperheight
\newdimen\printpaperwidth \printpaperwidth = \paperwidth
@@ -48,13 +49,13 @@
\newdimen\topspace \topspace = 2cm
\newdimen\backspace \backspace = \topspace
-\newdimen\cutspace \cutspace = 0pt
-\newdimen\bottomspace \bottomspace = 0pt
+\newdimen\cutspace \cutspace = \zeropoint
+\newdimen\bottomspace \bottomspace = \zeropoint
\newdimen\headerheight \headerheight = 2cm
\newdimen\footerheight \footerheight = \headerheight
-\newdimen\topoffset \topoffset = 0pt
+\newdimen\topoffset \topoffset = \zeropoint
\newdimen\backoffset \backoffset = \topoffset
\newdimen\leftmarginwidth \leftmarginwidth = 3cm
@@ -63,38 +64,13 @@
\newdimen\leftedgewidth \leftedgewidth = 3cm
\newdimen\rightedgewidth \rightedgewidth = \leftedgewidth
-\newdimen\topheight \topheight = 0cm
+\newdimen\topheight \topheight = \zeropoint
\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%
- {\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}
-
-%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).
+\newcount\layoutlines \layoutlines = \zerocount
+\newcount\layoutcolumns \layoutcolumns = \zerocount
+\newdimen\layoutcolumndistance \layoutcolumndistance = \zeropoint
+\newdimen\layoutcolumnwidth \layoutcolumnwidth = \zeropoint
%D The next series of dimensions are complemented by left
%D and rights ones.
@@ -137,6 +113,28 @@
\newdimen\naturalfooterdistance
\newdimen\naturalbottomdistance
+%D Now we've come to the setup and definition commands.
+
+\installswitchcommandhandler \??ly {layout} \??ly
+
+\appendtoks
+ \letlayoutparameter\c!state\v!start
+\to \everydefinelayout
+
+\appendtoks
+ \ifx\currentlayout\v!reset
+ \let\currentlayout\empty
+ \letlayoutparameter\v!normal % global ?
+ \fi
+ \globallet\currentlayout\currentlayout
+\to \everysetuplayout
+
+\appendtoks
+ \recalculatelayout
+ \dochecknextlayout
+ \presetcenterpagebox
+\to \everysetuplayout
+
\def\layoutdistance#1#2{\ifdim\zeropoint<#1#2\else\zeropoint\fi}
\def\setlayoutdimensions
@@ -153,19 +151,19 @@
\global\naturalfooterdistance \layoutparameter\c!footerdistance
\global\naturalbottomdistance \layoutparameter\c!bottomdistance
%
- \global\marginwidth \naturalmarginwidth
- \global\edgewidth \naturaledgewidth
- \global\margindistance \naturalmargindistance
- \global\edgedistance \naturaledgedistance
+ \global\marginwidth \naturalmarginwidth
+ \global\edgewidth \naturaledgewidth
+ \global\margindistance \naturalmargindistance
+ \global\edgedistance \naturaledgedistance
%
- \global\leftedgedistance \layoutdistance\leftedgewidth \naturalleftedgedistance
- \global\rightedgedistance \layoutdistance\rightedgewidth \naturalrightedgedistance
- \global\leftmargindistance \layoutdistance\leftmarginwidth \naturalleftmargindistance
- \global\rightmargindistance \layoutdistance\rightmarginwidth\naturalrightmargindistance
- \global\topdistance \layoutdistance\topheight \naturaltopdistance
- \global\headerdistance \layoutdistance\headerheight \naturalheaderdistance
- \global\footerdistance \layoutdistance\footerheight \naturalfooterdistance
- \global\bottomdistance \layoutdistance\bottomheight \naturalbottomdistance
+ \global\leftedgedistance \layoutdistance\leftedgewidth \naturalleftedgedistance
+ \global\rightedgedistance \layoutdistance\rightedgewidth \naturalrightedgedistance
+ \global\leftmargindistance \layoutdistance\leftmarginwidth \naturalleftmargindistance
+ \global\rightmargindistance \layoutdistance\rightmarginwidth\naturalrightmargindistance
+ \global\topdistance \layoutdistance\topheight \naturaltopdistance
+ \global\headerdistance \layoutdistance\headerheight \naturalheaderdistance
+ \global\footerdistance \layoutdistance\footerheight \naturalfooterdistance
+ \global\bottomdistance \layoutdistance\bottomheight \naturalbottomdistance
}
\def\setlayoutdistances % local in \setreducedvsize
@@ -189,28 +187,22 @@
\newtoks\extralayoutcalculations \def\calculatelayoutextras{\the\extralayoutcalculations}
-% \appendtoks
-% non etex calculations used to go here
-% \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
+ \swapdimens\leftmargindistance\rightmargindistance
+ \swapdimens\leftedgedistance \rightedgedistance
+ \swapdimens\leftmarginwidth \rightmarginwidth
+ \swapdimens\leftedgewidth \rightedgewidth
+ %
+ \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
@@ -234,7 +226,7 @@
\doifsomething{#1} % to be sure
{\doifassignmentelse{#2}
{\getparameters
- [\??pp#1] % geen \c!scale, scheelt hash ruimte
+ [\??pp#1]% geen \c!scale, scheelt hash ruimte
[\c!width=\@@ppwidth,\c!height=\@@ppheight,\c!offset=\@@ppoffset,#2]}
{\setvalue{\??pp:1:#1}{#2}%
\setvalue{\??pp:2:#1}{#3}}}%
@@ -246,14 +238,16 @@
%D For the moment we need to fake this macro.
\ifx\setuppapersize\undefined
- \let\setuppapersize\relax
+ \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]
+ [\c!width=210mm,
+ \c!height=297mm,
+ \c!offset=\zeropoint]
%D Yet undocumented, let's see if it gets noticed.
%D
@@ -291,10 +285,12 @@
\newconstant \paperorientation \newconstant \printorientation
\newconstant \paperreverse \newconstant \printreverse
\newconditional\paperlandscape \newconditional\printlandscape
+ \newconditional\printnegatecolors
+ \newconditional\printdoublesided
\let\papersize\empty \let\printpapersize\empty
-\def\paperscale{1} \newif\ifnegateprintbox
+\def\paperscale{1}
\unexpanded\def\setuppaper[#1]%
{\getparameters[\??pp][\c!paper=,\c!page=,#1]%
@@ -316,7 +312,6 @@
{\doifelsenothing{#2}
{\expanded{\dodosetuppapersize
[\executeifdefined{\??pp:1:#1}{#1}]%
-% [\executeifdefined{\??pp:2:#1}{\v!default}]}}
[\executeifdefined{\??pp:2:#1}{#1}]}}
{\doifassignmentelse{#2}
{\getparameters[\??pp\executeifdefined{\??pp:1:#1}{#1}][#2]}
@@ -419,14 +414,14 @@
\global\setfalse#5%
\global#3\uprotationangle
\global#4\uprotationangle
- \global\negateprintboxfalse
+ \global\setfalse\printnegatecolors
\processallactionsinset
[#1]
[ \v!landscape=>\global\settrue#2,
\v!mirrored=>\global\settrue#5,
\v!rotated=>\global#3\rightrotatioangle
\global#4\leftrotatioangle,
- \v!negative=>\global\negateprintboxtrue,
+ \v!negative=>\global\settrue\printnegatecolors,
90=>\global#3\rightrotatioangle
\global#4\leftrotatioangle,
180=>\global#3\downrotatioangle
@@ -445,15 +440,6 @@
\let\restorepapersize\relax
-% \def\docheckforems#1%
-% {\beforesplitstring#1\at em\to\asciia
-% \doifnot\asciia{#1}
-% {\aftersplitstring\asciia\at=\to\asciia
-% \doifsomething\asciia{\showmessage\m!system{10}{#1}}}}
-%
-% \def\checkforems[#1]%
-% {\processcommalist[#1]\docheckforems}
-
\ifx\setups\undefined \unexpanded\def\setups[#1]{\setdefaultpenalties} \fi
% \newtoks \everybeforelayout \relax
@@ -584,7 +570,9 @@
\def\checklayout
{\ifdim\makeupheight=\layoutlines\lineheight \else \recalculatelayout \fi}
-\appendtoks \checklayout \to \everystarttext
+\appendtoks
+ \checklayout
+\to \everystarttext
% document:
%
@@ -594,7 +582,8 @@
\def\changetolayout#1%
{%\writestatus\m!layouts{changing to layout #1}%
- \xdef\currentlayout{#1}\recalculatelayout}
+ \xdef\currentlayout{#1}%
+ \recalculatelayout}
\def\checkcurrentoddlayout
{\ifcsname\??ly\v!odd\c!state\endcsname
@@ -606,7 +595,9 @@
\doifvalue{\??ly\v!even\c!state}\v!start{\changetolayout\v!even}%
\fi}
-\ifx\lastpage\undefined \def\lastpage{1} \fi
+\ifx\lastpage\undefined
+ \def\lastpage{1}
+\fi
\def\reverserealfolio
{\ifnum\lastpage>\plusone
@@ -632,6 +623,18 @@
\doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout
\fi\fi\fi}
+% inheritance
+%
+% \definelayout
+% [test]
+% [width=12cm,
+% height=10cm]
+%
+% \definelayout
+% [more]
+% [test]
+% [height=12cm]
+%
% testcase
%
% \setuppagenumbering[alternative=doublesided]
@@ -654,7 +657,7 @@
\appendtoks \checkcurrentlayout \to \everystarttext
\appendtoks
- \dochecknextlayout
+ \dochecknextlayout
\to \everyaftershipout
% \def\dochecknextlayout
@@ -670,87 +673,83 @@
\def\dochecknextlayout{\checkcurrentlayout}
-\newif\ifdoublesidedprint
-
-\newconditional\page_location_is_set
-
-\def\page_location_reset
- {\setfalse\page_location_is_set
- \let\page_location_left_fill \relax
- \let\page_location_right_fill \relax
- \let\page_location_top_fill \relax
- \let\page_location_bottom_fill\relax}
-
-\page_location_reset
-
-\setvalue{\??ly:\c!location:\v!right }{\settrue\page_location_is_set
- \let\page_location_left_fill \hss}
-\setvalue{\??ly:\c!location:\v!left }{\settrue\page_location_is_set
- \let\page_location_right_fill \hss}
-\setvalue{\??ly:\c!location:\v!bottom }{\settrue\page_location_is_set
- \let\page_location_top_fill \vss}
-\setvalue{\??ly:\c!location:\v!top }{\settrue\page_location_is_set
- \let\page_location_bottom_fill\vss}
-\setvalue{\??ly:\c!location:\v!middle }{\settrue\page_location_is_set
- \let\page_location_left_fill \hss
- \let\page_location_right_fill \hss
- \let\page_location_top_fill \vss
- \let\page_location_bottom_fill\vss}
-\setvalue{\??ly:\c!location:\empty }{\setfalse\page_location_is_set % default also signal to scrn_
- \let\page_location_right_fill \hss
- \let\page_location_bottom_fill\hss}
-\setvalue{\??ly:\c!location:\v!doublesided}{\doublesidedprinttrue}
-\setvalue{\??ly:\c!location:\v!singlesided}{\doublesidedprintfalse}
+\newconditional\c_page_layouts_location_is_set
+
+\def\page_layouts_location_reset
+ {\setfalse\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_left_fill \relax
+ \let\v_page_layouts_location_right_fill \relax
+ \let\v_page_layouts_location_top_fill \relax
+ \let\v_page_layouts_location_bottom_fill\relax}
+
+\page_layouts_location_reset
+
+\setvalue{\??ly:\c!location:\v!right }{\settrue\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_left_fill \hss}
+\setvalue{\??ly:\c!location:\v!left }{\settrue\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_right_fill \hss}
+\setvalue{\??ly:\c!location:\v!bottom }{\settrue\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_top_fill \vss}
+\setvalue{\??ly:\c!location:\v!top }{\settrue\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_bottom_fill\vss}
+\setvalue{\??ly:\c!location:\v!middle }{\settrue\c_page_layouts_location_is_set
+ \let\v_page_layouts_location_left_fill \hss
+ \let\v_page_layouts_location_right_fill \hss
+ \let\v_page_layouts_location_top_fill \vss
+ \let\v_page_layouts_location_bottom_fill\vss}
+\setvalue{\??ly:\c!location:\empty }{\setfalse\c_page_layouts_location_is_set % default also signal to scrn_
+ \let\v_page_layouts_location_right_fill \hss
+ \let\v_page_layouts_location_bottom_fill\hss}
+\setvalue{\??ly:\c!location:\v!doublesided}{\settrue\printdoublesided}
+\setvalue{\??ly:\c!location:\v!singlesided}{\setfalse\printdoublesided}
\def\dopresetcenterpagebox#1%
{\ifcsname\??ly:\c!location:#1\endcsname\csname\??ly:\c!location:#1\endcsname\fi}
\def\presetcenterpagebox
- {\doublesidedprintfalse
- \page_location_reset
- \processcommacommand[\@@lylocation]\dopresetcenterpagebox}
-
-\unexpanded\def\definelayout
- {\dodoubleargument\dodefinelayout}
-
-\def\dodefinelayout[#1][#2]%
- {\getparameters[\??ly#1][\c!state=\v!start,#2]}
-
-\def\dodosetuplayout[#1][#2]%
- {\doifnot{#2}\v!reset{\getparameters[\??ly#1][#2]}}
-
-% global needed for non-doublesided standardmakeup
-
-\unexpanded\def\setuplayout
- {\dodoubleempty\dosetuplayout}
+ {\setfalse\printdoublesided
+ \page_layouts_location_reset
+ \processcommacommand[\layoutparameter\c!location]\dopresetcenterpagebox}
-\def\dosetuplayout[#1][#2]%
- {\globallet\currentlayout\empty
- \ifsecondargument
- \dodosetuplayout[#1][#2]%
- \else\iffirstargument
- \doifassignmentelse{#1}
- {\dodosetuplayout[][#1]}
- {\doifelse{#1}\v!reset
- {\let\@@lymethod\v!normal}% hardcodes, assumes a definition
- {\xdef\currentlayout{#1}}}%
- \fi\fi
- \recalculatelayout
- %\checkcurrentlayout % here?
- \dochecknextlayout % here?
- \presetcenterpagebox}
+% installers
-\def\installlayouthandler#1#2%
+\def\installlayoutmethod#1#2%
{\setgvalue{\??ly:\c!method:#1}{#2}}
-\installlayouthandler\v!default
+\installlayoutmethod\v!default
{\checkcurrentlayout}
-\installlayouthandler\v!normal
+\installlayoutmethod\v!normal
{\checkcurrentlayout}
\def\dochecknextlayout
- {\executeifdefined{\??ly:\c!method:\@@lymethod}\checkcurrentlayout}
+ {\executeifdefined
+ {\??ly:\c!method:\layoutparameter\c!method}
+ {\getvalue{\??ly:\c!method:\v!normal}}}
+
+\def\installlayoutalternative#1#2%
+ {\setgvalue{\??ly:\c!alternative:#1}{#2}}
+
+\def\constructnormalpagecontent#1#2% redefined
+ {\setbox\pagebox\vbox
+ {\offinterlineskip
+ \begingroup
+ \dosetlayoutattributes\c!style\c!color
+ \offinterlineskip
+ \gettextboxes
+ \endgroup
+ \getmainbox#1#2}% including footnotes
+ \addmainbackground\pagebox
+ \buildpagebox\pagebox
+ \addstatusinfo\pagebox}
+
+\installlayoutalternative\v!normal
+ {\constructnormalpagecontent}
+
+\def\constructpagecontent % overload
+ {\executeifdefined
+ {\??ly:\c!alternative:\layoutparameter\c!alternative}%
+ {\getvalue{\??ly:\c!alternative:\v!normal}}}
\let\@@zaheight\!!zeropoint
@@ -851,18 +850,18 @@
\ifdone
\setbox#1\vbox to \printpaperheight
{\@@pptop
- \page_location_top_fill
+ \v_page_layouts_location_top_fill
\hbox to \printpaperwidth
- {\ifdoublesidedprint
+ {\ifconditional\printdoublesided
\doifbothsides
- {\@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright}%
- {\@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright}%
- {\@@ppright\page_location_right_fill\box#1\page_location_left_fill \@@ppleft }%
+ {\@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright}%
+ {\@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright}%
+ {\@@ppright\v_page_layouts_location_right_fill\box#1\v_page_layouts_location_left_fill \@@ppleft }%
\else
- \@@ppleft \page_location_left_fill \box#1\page_location_right_fill\@@ppright
+ \@@ppleft \v_page_layouts_location_left_fill \box#1\v_page_layouts_location_right_fill\@@ppright
\fi}%
\par
- \page_location_bottom_fill
+ \v_page_layouts_location_bottom_fill
\@@ppbottom}%
\fi}
@@ -887,9 +886,9 @@
\fi}
\def\replicatepagebox#1%
- {\ifnum\@@lynx>\plusone
+ {\ifnum\layoutparameter\c!nx>\plusone
\donetrue
- \else\ifnum\@@lyny>\plusone
+ \else\ifnum\layoutparameter\c!ny>\plusone
\donetrue
\else
\donefalse
@@ -897,9 +896,9 @@
\ifdone
\setbox#1\vbox
{\offinterlineskip
- \dorecurse\@@lyny
- {\hbox{\dorecurse\@@lynx{\copy#1\hskip\@@lydx}\unskip}%
- \vskip\@@lydy}
+ \dorecurse{\layoutparameter\c!ny}
+ {\hbox{\dorecurse{\layoutparameter\c!nx}{\copy#1\hskip\layoutparameter\c!dx}\unskip}%
+ \vskip\layoutparameter\c!dy}
\unskip}%
\fi}
@@ -922,17 +921,21 @@
\def\mirrorprintbox{\mirrorpagebodybox\printmirror}
\def\scalepagebox#1%
- {\ifdim\@@lyscale\points=\onepoint
- \ifdim\@@lysx\points=\onepoint
- \ifdim\@@lysy\points=\onepoint
+ {\edef\tmp_currentlayout_scale{\layoutparameter\c!scale}%
+ \ifdim\tmp_currentlayout_scale\points=\onepoint
+ \edef\tmp_currentlayout_sx{\layoutparameter\c!sx}%
+ \edef\tmp_currentlayout_sy{\layoutparameter\c!sy}%
+ \ifdim\tmp_currentlayout_sx\points=\onepoint
+ \ifdim\layoutparameter\c!sy\points=\onepoint
+ % no scaling done (and no copying either)
\else
- \doscalepagebox{#1}\@@lysx\@@lysy
+ \doscalepagebox{#1}\tmp_currentlayout_sx\tmp_currentlayout_sy
\fi
\else
- \doscalepagebox{#1}\@@lysx\@@lysy
+ \doscalepagebox{#1}\tmp_currentlayout_sx\tmp_currentlayout_sy
\fi
\else
- \doscalepagebox{#1}\@@lyscale\@@lyscale
+ \doscalepagebox{#1}\tmp_currentlayout_scale\tmp_currentlayout_scale
\fi}
\def\doscalepagebox#1#2#3%
@@ -941,63 +944,10 @@
\paperheight#3\paperheight}
\def\negateprintbox#1%
- {\ifnegateprintbox
+ {\ifconditional\printnegatecolors
\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}
-
-\setvalue{\??ly:n:\c!marking:\v!on}%
- {\makepagecutbox}
-
-\setvalue{\??ly:n:\c!marking:\v!page}% only at outer when nx/ny > 0
- {\makepagecutbox}
-
-\setvalue{\??ly:n:\c!marking:\v!empty}%
- {\let\pagecutmarksymbol\empty
- \let\pagecutmarktoptext\empty
- \let\pagecutmarkbottomtext\empty
- \makepagecutbox}
-
-\setvalue{\??ly:n:\c!marking:\v!text}%
- {\let\pagecutmarksymbol\empty
- \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext
- \makepagecutbox}
-
-\setvalue{\??ly:c:\c!marking:\v!color}%
- {\doaddpagecolormarks\colormarkbox}
-
-\setvalue{\??ly:c:\c!marking:\v!screen}%
- {\doaddpagecolormarks\rastermarkbox}
-
-\letvalue{\??ly:c:\c!marking:\v!unknown}\gobbleoneargument
-\letvalue{\??ly:n:\c!marking:\v!unknown}\gobbleoneargument
-
-% \def\addpagecutmarks {\executeifdefined{\??ly:n:\c!marking:\@@lymarking}\gobbleoneargument}
-% \def\addpagecolormarks{\executeifdefined{\??ly:c:\c!marking:\@@lymarking}\gobbleoneargument}
-
-\def\addpagecutmarks {\expandcheckedcsname{\??ly:n:\c!marking:}\@@lymarking\s!unknown}
-\def\addpagecolormarks{\expandcheckedcsname{\??ly:c:\c!marking:}\@@lymarking\s!unknown}
-
-\def\doaddpagecolormarks#1#2%
- {\makepagecutbox{#2}%
- \ifnum\horizontalcutmarks>\plustwo \def\colormarkoffset{\plusfour}\fi
- \ifnum\verticalcutmarks >\plustwo \def\colormarkoffset{\plusfour}\fi
- #1{#2}}
-
% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET
\ifx\doifelselayoutsomeline\undefined % defined in page-txt
@@ -1137,7 +1087,7 @@
% \prependtoks
% \freezepagestatechecks
% \to \everybeforeshipout
-
+
\def\goleftonpage
{\hskip-\dimexpr\leftmargindistance+\leftmarginwidth+\leftedgedistance+\leftedgewidth\relax}
@@ -1151,7 +1101,7 @@
{\let\swapmargins \relax % to prevent local swapping
\let\doswapmargins\relax % to prevent local swapping
\the\everyswapmargins}
-
+
\def\rightorleftpageaction
{\ifdoublesided
\expandafter\rightorleftpageactionindeed
@@ -1259,6 +1209,7 @@
\c!dy=\zeropoint,
\c!nx=1,
\c!ny=1,
+ \c!alternative=\v!normal,
\c!method=\v!normal]
\setuppapersize
@@ -1305,6 +1256,7 @@
\c!color=,
\c!marking=\v!off,
\c!location=,% \v!singlesided, but unset is signal (no other default, spoils arrange)
+ \c!state=\v!start,
\c!scale=1,
\c!sx=1,
\c!sy=1,
@@ -1468,6 +1420,11 @@
\c!height=\dimexpr\paperheight+1.5cm\relax]
\definepapersize
+ [undersized]
+ [ \c!width=\dimexpr\paperwidth -1.5cm\relax,
+ \c!height=\dimexpr\paperheight-1.5cm\relax]
+
+\definepapersize
[doublesized]
[ \c!width=\dimexpr \paperwidth \relax,
\c!height=\dimexpr2\paperheight\relax]
@@ -1481,17 +1438,10 @@
% [A4][A4]
\setuppapersize
- [A4][samesized]
+ [A4] % [samesized]
%D A few goodies:
-%D For orthogonality:
-
-\definepapersize
- [undersized]
- [ \c!width=\dimexpr\paperwidth -1.5cm\relax,
- \c!height=\dimexpr\paperheight-1.5cm\relax]
-
\definelayout
[\v!page]
[\c!backspace=\zeropoint,
diff --git a/tex/context/base/page-lin.mkii b/tex/context/base/page-lin.mkii
index a04804ce6..c6b352ae7 100644
--- a/tex/context/base/page-lin.mkii
+++ b/tex/context/base/page-lin.mkii
@@ -5,7 +5,7 @@
%D subtitle=Line Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-lin.mkiv b/tex/context/base/page-lin.mkiv
index 4f2226f6e..b5d5e9ca0 100644
--- a/tex/context/base/page-lin.mkiv
+++ b/tex/context/base/page-lin.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Line Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-log.mkii b/tex/context/base/page-log.mkii
index 18c7991b1..c64c27bce 100644
--- a/tex/context/base/page-log.mkii
+++ b/tex/context/base/page-log.mkii
@@ -5,7 +5,7 @@
%D subtitle=Logos,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mak.mkii b/tex/context/base/page-mak.mkii
index 2087a6840..3a513137f 100644
--- a/tex/context/base/page-mak.mkii
+++ b/tex/context/base/page-mak.mkii
@@ -5,7 +5,7 @@
%D subtitle=Simple MakeUp,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mak.mkiv b/tex/context/base/page-mak.mkiv
index ea285bcb8..631934c2f 100644
--- a/tex/context/base/page-mak.mkiv
+++ b/tex/context/base/page-mak.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Simple MakeUp,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mar.mkii b/tex/context/base/page-mar.mkii
index 96223bafe..d386d8ab9 100644
--- a/tex/context/base/page-mar.mkii
+++ b/tex/context/base/page-mar.mkii
@@ -5,7 +5,7 @@
%D subtitle=Marginal Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mar.mkiv b/tex/context/base/page-mar.mkiv
index 433364a06..97a5e496f 100644
--- a/tex/context/base/page-mar.mkiv
+++ b/tex/context/base/page-mar.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Marginal Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mis.mkii b/tex/context/base/page-mis.mkii
index bd029f896..a61b2435b 100644
--- a/tex/context/base/page-mis.mkii
+++ b/tex/context/base/page-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Misc Float Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mis.mkiv b/tex/context/base/page-mis.mkiv
index 02083d181..387b5164c 100644
--- a/tex/context/base/page-mis.mkiv
+++ b/tex/context/base/page-mis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Misc Float Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-mrk.mkiv b/tex/context/base/page-mrk.mkiv
new file mode 100644
index 000000000..9923632ac
--- /dev/null
+++ b/tex/context/base/page-mrk.mkiv
@@ -0,0 +1,259 @@
+%D \module
+%D [ file=page-mrk,
+%D version=2011.05.23, % moved from page-lay
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Cutmarks and Colorbars,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%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 / Cutmarks and Colorbars}
+
+%D This module depends on \METAPOST.
+
+\unprotect
+
+% \def\pagecutmarksymbol {\the\realpageno}
+% \let\pagecutmarktoptext \empty
+% \let\pagecutmarkbottomtext \empty
+
+\def\pagecutmarklength {5mm}
+\def\pagecutmarkoffset {3mm} % slightly larger than before, and now a fixed size
+\def\pagecutmarkmargin{10cm}
+
+\newconditional\c_page_marks_add_more_color
+\newconditional\c_page_marks_add_more_marking
+\newconditional\c_page_marks_add_more_lines
+\newconditional\c_page_marks_add_page_lines
+\newconditional\c_page_marks_add_more_number
+
+\startuniqueMPgraphic{print:color}{w,h,l,o}
+ page_marks_add_color(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{print:marking}{w,h,l,o}
+ page_marks_add_marking(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{print:lines}{w,h,l,o}
+ page_marks_add_lines(\MPvar w,\MPvar h,\MPvar l,\MPvar o) ;
+\stopuniqueMPgraphic
+
+\startuseMPgraphic{print:number}{w,h,l,o,n}
+ page_marks_add_number(\MPvar w,\MPvar h,\MPvar l,\MPvar o,\MPvar n) ;
+\stopuseMPgraphic
+
+\def\page_marks_add_color
+ {\setlayoutcomponentattribute\v!print\v!color
+ \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup
+ \uniqueMPgraphic
+ {print:color}%
+ {w=\the\scratchwidth ,h=\the\scratchheight,%
+ l=\pagecutmarklength,o=\pagecutmarkoffset}%
+ \egroup
+ \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth
+ \hskip-\scratchwidth\box\scratchbox}
+
+\def\page_marks_add_marking
+ {\setlayoutcomponentattribute\v!print\v!marking
+ \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup
+ \uniqueMPgraphic
+ {print:marking}%
+ {w=\the\scratchwidth ,h=\the\scratchheight,%
+ l=\pagecutmarklength,o=\pagecutmarkoffset}%
+ \egroup
+ \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth
+ \hskip-\scratchwidth\box\scratchbox}
+
+\def\page_marks_add_lines
+ {\setlayoutcomponentattribute\v!print\v!lines
+ \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup
+ \uniqueMPgraphic
+ {print:lines}%
+ {w=\the\scratchwidth ,h=\the\scratchheight,%
+ l=\pagecutmarklength,o=\pagecutmarkoffset}%
+ \egroup
+ \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth
+ \hskip-\scratchwidth\box\scratchbox}
+
+\def\page_marks_add_number
+ {\setlayoutcomponentattribute\v!print\v!number
+ \setbox\scratchbox\hbox \layoutcomponentboxattribute\bgroup
+ \useMPgraphic
+ {print:number}%
+ {w=\the\scratchwidth ,h=\the\scratchheight,%
+ l=\pagecutmarklength,o=\pagecutmarkoffset,%
+ n=\realfolio}%
+ \egroup
+ \wd\scratchbox\scratchwidth\ht\scratchbox\scratchheight\dp\scratchbox\scratchdepth
+ \hskip-\scratchwidth\box\scratchbox}
+
+\def\page_marks_add_page_indeed#1%
+ {\setbox#1\hbox\bgroup
+ \let\objectoffset\pagecutmarkmargin
+ %\infofont
+ \scratchwidth \wd#1%
+ \scratchheight\ht#1%
+ \scratchdepth \dp#1%
+ \box#1\relax
+ \ifconditional\c_page_marks_add_page_lines
+ \page_marks_add_lines
+ \fi
+ \egroup}
+
+\def\page_marks_add_more_indeed#1%
+ {\setbox#1\hbox\bgroup
+ \let\objectoffset\pagecutmarkmargin
+ \infofont
+ \scratchwidth \wd#1% these can move out
+ \scratchheight\ht#1%
+ \scratchdepth \dp#1%
+ \box#1\relax
+ \ifconditional\c_page_marks_add_more_color
+ \page_marks_add_color
+ \fi
+ \ifconditional\c_page_marks_add_more_marking
+ \page_marks_add_marking
+ \fi
+ \ifconditional\c_page_marks_add_more_lines
+ \page_marks_add_lines
+ \fi
+ \ifconditional\c_page_marks_add_more_number
+ \page_marks_add_number
+ \fi
+ \egroup}
+
+\let\page_marks_add_page\gobbleoneargument
+\let\page_marks_add_more\gobbleoneargument
+
+\def\installpagecutmark#1#2%
+ {\setvalue{\??ly:n:\c!marking:#1}{#2}}
+
+% \installpagecutmark\v!off
+% {}
+
+% \installpagecutmark\v!text
+% {\settrue\c_page_marks_add_more_lines
+% \settrue\c_page_marks_add_more_number
+% \let\pagecutmarksymbol\empty
+% \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext}
+
+\installpagecutmark\v!on
+ {\settrue\c_page_marks_add_page_lines
+ \settrue\c_page_marks_add_more_lines
+ \settrue\c_page_marks_add_more_number}
+
+\installpagecutmark\v!page % todo
+ {\settrue\c_page_marks_add_more_lines
+ \settrue\c_page_marks_add_more_number}
+
+\installpagecutmark\v!empty
+ {\settrue\c_page_marks_add_page_lines
+ \settrue\c_page_marks_add_more_lines}
+
+\installpagecutmark\v!color
+ {\settrue\c_page_marks_add_page_lines
+ \settrue\c_page_marks_add_more_lines
+ \settrue\c_page_marks_add_more_color
+ \settrue\c_page_marks_add_more_marking
+ \settrue\c_page_marks_add_more_number}
+
+\appendtoks
+ \setfalse\c_page_marks_add_more_color
+ \setfalse\c_page_marks_add_more_marking
+ \setfalse\c_page_marks_add_more_lines
+ \setfalse\c_page_marks_add_more_number
+ \csname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname
+ \ifconditional\c_page_marks_add_page_lines
+ \let\page_marks_add_page\page_marks_add_page_indeed
+ \else
+ \let\page_marks_add_page\gobbleoneargument
+ \fi
+ \ifconditional\c_page_marks_add_more_lines
+ \let\page_marks_add_more\page_marks_add_more_indeed
+ \else\ifconditional\c_page_marks_add_more_color
+ \let\page_marks_add_more\page_marks_add_more_indeed
+ \else\ifconditional\c_page_marks_add_more_marking
+ \let\page_marks_add_more\page_marks_add_more_indeed
+ \else\ifconditional\c_page_marks_add_more_number
+ \let\page_marks_add_more\page_marks_add_more_indeed
+ \else
+ \let\page_marks_add_more\gobbleoneargument
+ \fi\fi\fi\fi
+\to \everysetuplayout
+
+\setuplayout
+ [\c!marking=\v!off]
+
+\protect \endinput
+
+% We keep the old code for while.
+
+% \def\pagecutmarksymbol {\the\realpageno}
+% \def\pagecutmarklength {.5cm}
+% \let\pagecutmarktoptext \empty
+% \let\pagecutmarkbottomtext \empty
+% \def\pagecutmarkoffset {.5\dimexpr\pagecutmarklength\relax}
+%
+% \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
+% \let\cutmarkhoffset \pagecutmarkoffset
+% \let\cutmarkvoffset \pagecutmarkoffset
+% \makecutbox}
+%
+% \newcount\currentpagebox % will be used in more places
+%
+% \def\installpagecutmark #1#2{\setvalue{\??ly:n:\c!marking:#1}{#2}}
+% \def\installpagecolormark#1#2{\setvalue{\??ly:c:\c!marking:#1}{#2}}
+%
+% % \def\addpagecolormarks{\expandcheckedcsname{\??ly:c:\c!marking:}{\layoutparameter\c!marking}\s!unknown}
+% % \def\addpagecutmarks {\expandcheckedcsname{\??ly:n:\c!marking:}{\layoutparameter\c!marking}\s!unknown}
+%
+% \def\addpagecutmarks#1% only at outer when nx/ny > 0
+% {\ifcsname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname
+% \currentpagebox#1\relax
+% \csname\??ly:n:\c!marking:\layoutparameter\c!marking\endcsname
+% \fi}
+%
+% \def\addpagecolormarks#1%
+% {\ifcsname\??ly:c:\c!marking:\layoutparameter\c!marking\endcsname
+% \currentpagebox#1\relax
+% \ifnum\horizontalcutmarks>\plustwo \def\colormarkoffset{\plusfour}\fi
+% \ifnum\verticalcutmarks >\plustwo \def\colormarkoffset{\plusfour}\fi
+% \csname\??ly:c:\c!marking:\layoutparameter\c!marking\endcsname
+% \fi}
+%
+% \installpagecutmark\v!on
+% {\makepagecutbox\currentpagebox}
+%
+% \installpagecutmark\v!page
+% {\makepagecutbox\currentpagebox}
+%
+% \installpagecutmark\v!empty
+% {\let\pagecutmarksymbol\empty
+% \let\pagecutmarktoptext\empty
+% \let\pagecutmarkbottomtext\empty
+% \makepagecutbox\currentpagebox}
+%
+% \installpagecutmark\v!text
+% {\let\pagecutmarksymbol\empty
+% \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext
+% \makepagecutbox\currentpagebox}
+%
+% \installpagecolormark\v!color
+% {\makepagecutbox\currentpagebox % maybe move this elsewhere
+% \colormarkbox\currentpagebox}
+%
+% \installpagecolormark\v!screen % obsolete (all \v!screen will be removed)
+% {\makepagecutbox\currentpagebox % maybe move this elsewhere
+% \rastermarkbox\currentpagebox}
diff --git a/tex/context/base/page-mul.mkii b/tex/context/base/page-mul.mkii
index 801ae5d65..decf784f0 100644
--- a/tex/context/base/page-mul.mkii
+++ b/tex/context/base/page-mul.mkii
@@ -5,7 +5,7 @@
%D subtitle=Multi Column Output,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -615,11 +615,11 @@
\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}}%
+ {\box\currentcolumnbox}%
+ \wd\currentcolumnbox\localcolumnwidth
+ \ifheightencolumns
+ \ht\currentcolumnbox\fixedcolumnheight
+ \fi}%
\setmaxcolumndimensions
\overlaycolumnfootnotes
\setbox\columnpagebox\vbox
@@ -1007,7 +1007,7 @@
\vfill
\fi}}%
\dohandleallcolumns
- {\global\ht\currentcolumnbox\dimen0}%
+ {\ht\currentcolumnbox\dimen0}% redundant
\fi
\setbox\precolumnbox\vbox{\flushcolumnedpage\zerocount}%
\finaloutput\box\precolumnbox
diff --git a/tex/context/base/page-mul.mkiv b/tex/context/base/page-mul.mkiv
index 581ba5a59..eddd52168 100644
--- a/tex/context/base/page-mul.mkiv
+++ b/tex/context/base/page-mul.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Multi Column Output,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -609,11 +609,11 @@
\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}}%
+ {\box\currentcolumnbox}%
+ \wd\currentcolumnbox\localcolumnwidth
+ \ifheightencolumns
+ \ht\currentcolumnbox\fixedcolumnheight
+ \fi}%
\setmaxcolumndimensions
\overlaycolumnfootnotes
\setbox\columnpagebox\vbox
@@ -1002,7 +1002,7 @@
\vfill
\fi}}%
\dohandleallcolumns
- {\global\ht\currentcolumnbox\dimen0}%
+ {\ht\currentcolumnbox\dimen0}% redundant
\fi
\setbox\precolumnbox\vbox{\flushcolumnedpage\zerocount}%
\finaloutput\box\precolumnbox
diff --git a/tex/context/base/page-not.mkii b/tex/context/base/page-not.mkii
index 9c67f18f1..7bb982430 100644
--- a/tex/context/base/page-not.mkii
+++ b/tex/context/base/page-not.mkii
@@ -5,7 +5,7 @@
%D subtitle=Footnotes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-not.mkiv b/tex/context/base/page-not.mkiv
index 95229f9d0..8a0298598 100644
--- a/tex/context/base/page-not.mkiv
+++ b/tex/context/base/page-not.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Footnotes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-one.mkii b/tex/context/base/page-one.mkii
index 1affc24d0..fe4b285cb 100644
--- a/tex/context/base/page-one.mkii
+++ b/tex/context/base/page-one.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Routine,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-one.mkiv b/tex/context/base/page-one.mkiv
index babaf4f5d..2d639664d 100644
--- a/tex/context/base/page-one.mkiv
+++ b/tex/context/base/page-one.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Routine,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-par.mkii b/tex/context/base/page-par.mkii
index a5dea2e63..9b5e0b6eb 100644
--- a/tex/context/base/page-par.mkii
+++ b/tex/context/base/page-par.mkii
@@ -5,7 +5,7 @@
%D subtitle=Line Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-par.mkiv b/tex/context/base/page-par.mkiv
index c687c424d..e1096fdf8 100644
--- a/tex/context/base/page-par.mkiv
+++ b/tex/context/base/page-par.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Line Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-plg.mkii b/tex/context/base/page-plg.mkii
index 3203b923c..3c3255f4c 100644
--- a/tex/context/base/page-plg.mkii
+++ b/tex/context/base/page-plg.mkii
@@ -5,7 +5,7 @@
%D subtitle=Page Setup,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-plg.mkiv b/tex/context/base/page-plg.mkiv
index 83c3e77f1..d008dfb1d 100644
--- a/tex/context/base/page-plg.mkiv
+++ b/tex/context/base/page-plg.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Page Setup,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -110,7 +110,7 @@
\unprotect
-\setvalue{\??ly\c!method\v!makeup}#1#2%
+\def\constructmakeuppagecontent#1#2%
{\setbox\pagebox\hbox
{\vbox to \textheight
{\offinterlineskip
@@ -137,6 +137,9 @@
\ht\pagebox\paperheight
\dp\pagebox\zeropoint}
+\installlayoutalternative\v!makeup
+ {\constructmakeuppagecontent}
+
\newbox\pageareabox
\def\pagearea
@@ -183,12 +186,11 @@
\box\pageareabox
\fi}
+% to be done nicely (proper namespacing)
+
\setvalue{\??ly\c!method:\v!leftpage }{\getvalue{\??ly\c!method:\v!page}}
\setvalue{\??ly\c!method:\v!rightpage}{\getvalue{\??ly\c!method:\v!page}}
-% \long\unexpanded\def\startpagelayout[#1]#2\stoppagelayout
-% {\long\setvalue{\??ly\c!method:#1}{#2}}
-
\long\unexpanded\def\startpagelayout
{\bgroup\catcode\endoflineasciicode\ignorecatcode\dostartpagelayout}
diff --git a/tex/context/base/page-run.mkii b/tex/context/base/page-run.mkii
index ae5af81e9..b128c192d 100644
--- a/tex/context/base/page-run.mkii
+++ b/tex/context/base/page-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-run.mkiv b/tex/context/base/page-run.mkiv
index cce746c74..1f8d75a1c 100644
--- a/tex/context/base/page-run.mkiv
+++ b/tex/context/base/page-run.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-sel.mkiv b/tex/context/base/page-sel.mkiv
index 9192d1430..1e706aa22 100644
--- a/tex/context/base/page-sel.mkiv
+++ b/tex/context/base/page-sel.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Page Selection,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-set.mkii b/tex/context/base/page-set.mkii
index e4817066d..3c8c87e5c 100644
--- a/tex/context/base/page-set.mkii
+++ b/tex/context/base/page-set.mkii
@@ -5,7 +5,7 @@
%D subtitle=Column Sets,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -259,7 +259,7 @@
\dostepwiserecurse{#3}\!!counte\plusone
{\OTRSETsetgridcell\!!countf\recurselevel#1}}%
\dostepwiserecurse{#3}\!!counte\plusone
- {\global\wd\OTRSETgridcell{#2}\recurselevel\hsize}%
+ {\wd\OTRSETgridcell{#2}\recurselevel\hsize}%
\OTRSETsetgridcell{#2}\!!counte#6}
\def\OTRSETsetgridcells
@@ -1719,7 +1719,7 @@
\chardef\OTRSETbalancemethod\plusone
\OTRSETreducegridbox
\global\setbox\OTRfinalpagebox\OTRSETmakegridbox
- \global\ht\OTRfinalpagebox\textheight % signals output that there is content
+ \ht\OTRfinalpagebox\textheight % signals output that there is content
\OTRSETdofinaloutput
\globallet\OTRSETbalht\zeropoint
\egroup}
@@ -1927,7 +1927,7 @@
%
% \installoutput\OTRSETflushpreposttext
% {\global\setbox\precolumnbox\vbox{\unvbox\normalpagebox}%
-% \global\dp\precolumnbox\strutdepth
+% \dp\precolumnbox\strutdepth
% \ifcarryoverfootnotes \else
% \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
% \fi}
@@ -1951,7 +1951,7 @@
\global\setbox\precolumnbox\hbox
{\lower\strutdepth\box\precolumnbox}%
\fi
- \global\dp\precolumnbox\strutdepth
+ \dp\precolumnbox\strutdepth
\ifcarryoverfootnotes \else
\global\setbox\postcolumnbox\vbox{\placebottomnotes}%
\fi}
diff --git a/tex/context/base/page-set.mkiv b/tex/context/base/page-set.mkiv
index 8c3566bc0..3c0993db4 100644
--- a/tex/context/base/page-set.mkiv
+++ b/tex/context/base/page-set.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Column Sets,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -237,7 +237,7 @@
\dostepwiserecurse{#3}\!!counte\plusone
{\OTRSETsetgridcell\!!countf\recurselevel#1}}%
\dostepwiserecurse{#3}\!!counte\plusone
- {\global\wd\OTRSETgridcell{#2}\recurselevel\hsize}%
+ {\wd\OTRSETgridcell{#2}\recurselevel\hsize}%
\OTRSETsetgridcell{#2}\!!counte#6}
\def\OTRSETsetgridcells
@@ -1644,7 +1644,7 @@
\OTRSETbalancemethod\plusone
\OTRSETreducegridbox
\global\setbox\OTRfinalpagebox\OTRSETmakegridbox
- \global\ht\OTRfinalpagebox\textheight % signals output that there is content
+ \ht\OTRfinalpagebox\textheight % signals output that there is content
\OTRSETdofinaloutput
\globallet\OTRSETbalht\zeropoint
\egroup}
@@ -1831,7 +1831,7 @@
\global\setbox\precolumnbox\hbox
{\lower\strutdepth\box\precolumnbox}%
\fi
- \global\dp\precolumnbox\strutdepth
+ \dp\precolumnbox\strutdepth
\ifcarryoverfootnotes \else
\global\setbox\postcolumnbox\vbox{\placebottomnotes}%
\fi}
diff --git a/tex/context/base/page-sid.mkii b/tex/context/base/page-sid.mkii
index 806acc6f1..6c3447e1c 100644
--- a/tex/context/base/page-sid.mkii
+++ b/tex/context/base/page-sid.mkii
@@ -5,7 +5,7 @@
%D subtitle=Side Floats,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -621,8 +621,8 @@
% 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
+ \ht\floatbox\scratchdimen
+ \dp\floatbox\zeropoint
\fi
\ifcase\sidefloatalign \else
\global\sidefloattopskip\zeropoint
diff --git a/tex/context/base/page-sid.mkiv b/tex/context/base/page-sid.mkiv
index 9365f7508..7ee7e2fed 100644
--- a/tex/context/base/page-sid.mkiv
+++ b/tex/context/base/page-sid.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Side Floats,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -491,8 +491,8 @@
% 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
+ \ht\floatbox\scratchdimen
+ \dp\floatbox\zeropoint
\fi
\ifcase\sidefloatalign \else
\global\sidefloattopskip\zeropoint
diff --git a/tex/context/base/page-spr.mkii b/tex/context/base/page-spr.mkii
index 06947a36a..65e435d7c 100644
--- a/tex/context/base/page-spr.mkii
+++ b/tex/context/base/page-spr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Spreading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-spr.mkiv b/tex/context/base/page-spr.mkiv
index fd01e584c..6035f992a 100644
--- a/tex/context/base/page-spr.mkiv
+++ b/tex/context/base/page-spr.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Spreading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-str.mkii b/tex/context/base/page-str.mkii
index 71d76484e..df0cc5aa2 100644
--- a/tex/context/base/page-str.mkii
+++ b/tex/context/base/page-str.mkii
@@ -5,7 +5,7 @@
%D subtitle=Page Streams,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-str.mkiv b/tex/context/base/page-str.mkiv
index 8cce9945f..1808eed01 100644
--- a/tex/context/base/page-str.mkiv
+++ b/tex/context/base/page-str.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Page Streams,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-txt.mkii b/tex/context/base/page-txt.mkii
index 9fe73bec1..dd643b1b4 100644
--- a/tex/context/base/page-txt.mkii
+++ b/tex/context/base/page-txt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Texts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/page-txt.mkiv b/tex/context/base/page-txt.mkiv
index dc516a94e..012f1acf0 100644
--- a/tex/context/base/page-txt.mkiv
+++ b/tex/context/base/page-txt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Texts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -409,6 +409,11 @@
% \ignorespaces#1\removeunwantedspaces}}
\def\gettextboxes
+ {\ifcase\pageornamentstate
+ \dogettextboxes
+ \fi}
+
+\def\dogettextboxes
{\setbox\scratchpagebox\vbox
{\dontcomplain
\calculatereducedvsizes
diff --git a/tex/context/base/pdfr-ec.mkii b/tex/context/base/pdfr-ec.mkii
index b6604984c..e2208aa36 100644
--- a/tex/context/base/pdfr-ec.mkii
+++ b/tex/context/base/pdfr-ec.mkii
@@ -5,7 +5,7 @@
%D subtitle=EC encoding,
%D author={Vladimir Volovich / Taco Hoekwater},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/pdfr-il2.mkii b/tex/context/base/pdfr-il2.mkii
index 70bcb25da..81f9c42ac 100644
--- a/tex/context/base/pdfr-il2.mkii
+++ b/tex/context/base/pdfr-il2.mkii
@@ -5,7 +5,7 @@
%D subtitle=ISO Latin 2,
%D author={Ondrej Koala Vacha, Hans Hagen},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/ppchtex.mkii b/tex/context/base/ppchtex.mkii
index 045e9808b..d1209cd97 100644
--- a/tex/context/base/ppchtex.mkii
+++ b/tex/context/base/ppchtex.mkii
@@ -5,8 +5,8 @@
%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}]
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}.
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/ppchtex.mkiv b/tex/context/base/ppchtex.mkiv
index 1162c1fcf..6fbba7666 100644
--- a/tex/context/base/ppchtex.mkiv
+++ b/tex/context/base/ppchtex.mkiv
@@ -5,8 +5,8 @@
%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}]
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten},
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/prop-ini.mkii b/tex/context/base/prop-ini.mkii
index 035a40c93..11efd0362 100644
--- a/tex/context/base/prop-ini.mkii
+++ b/tex/context/base/prop-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/prop-ini.mkiv b/tex/context/base/prop-ini.mkiv
index 3cb5d2a6f..de259bc59 100644
--- a/tex/context/base/prop-ini.mkiv
+++ b/tex/context/base/prop-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/prop-lay.mkii b/tex/context/base/prop-lay.mkii
index aeec94bb2..77c48ca6e 100644
--- a/tex/context/base/prop-lay.mkii
+++ b/tex/context/base/prop-lay.mkii
@@ -5,7 +5,7 @@
%D subtitle=Layers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/prop-mis.mkii b/tex/context/base/prop-mis.mkii
index d8e9ab173..47fb9ea06 100644
--- a/tex/context/base/prop-mis.mkii
+++ b/tex/context/base/prop-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-1.mkii b/tex/context/base/regi-8859-1.mkii
index c291b029a..00439ae9e 100644
--- a/tex/context/base/regi-8859-1.mkii
+++ b/tex/context/base/regi-8859-1.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-1 (West European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-10.mkii b/tex/context/base/regi-8859-10.mkii
index 79d74d952..664686034 100644
--- a/tex/context/base/regi-8859-10.mkii
+++ b/tex/context/base/regi-8859-10.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-10 (Nordic),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-13.mkii b/tex/context/base/regi-8859-13.mkii
index a6dbe376f..f1b1dbe78 100644
--- a/tex/context/base/regi-8859-13.mkii
+++ b/tex/context/base/regi-8859-13.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-13 (Baltic),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-15.mkii b/tex/context/base/regi-8859-15.mkii
index cf788d3f3..1455161c3 100644
--- a/tex/context/base/regi-8859-15.mkii
+++ b/tex/context/base/regi-8859-15.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-15 (West European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-16.mkii b/tex/context/base/regi-8859-16.mkii
index 96f0a15d4..f284c4116 100644
--- a/tex/context/base/regi-8859-16.mkii
+++ b/tex/context/base/regi-8859-16.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-16 (Romanian),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-2.mkii b/tex/context/base/regi-8859-2.mkii
index 81fe8419e..9efc27a79 100644
--- a/tex/context/base/regi-8859-2.mkii
+++ b/tex/context/base/regi-8859-2.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-2 (East European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-3.mkii b/tex/context/base/regi-8859-3.mkii
index dcb8be67f..99fa66ac3 100644
--- a/tex/context/base/regi-8859-3.mkii
+++ b/tex/context/base/regi-8859-3.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-3 (South European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-4.mkii b/tex/context/base/regi-8859-4.mkii
index 3ebe66a13..c7adf3471 100644
--- a/tex/context/base/regi-8859-4.mkii
+++ b/tex/context/base/regi-8859-4.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-4 (North European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-5.mkii b/tex/context/base/regi-8859-5.mkii
index 531226433..807d74640 100644
--- a/tex/context/base/regi-8859-5.mkii
+++ b/tex/context/base/regi-8859-5.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-5 (Cyrillic),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-7.mkii b/tex/context/base/regi-8859-7.mkii
index 80259be65..1c8197a42 100644
--- a/tex/context/base/regi-8859-7.mkii
+++ b/tex/context/base/regi-8859-7.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-7 (Greek),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-8859-9.mkii b/tex/context/base/regi-8859-9.mkii
index 8460d739b..60757b2e6 100644
--- a/tex/context/base/regi-8859-9.mkii
+++ b/tex/context/base/regi-8859-9.mkii
@@ -5,7 +5,7 @@
%D subtitle=iso-8859-9 (Turkish),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1250.mkii b/tex/context/base/regi-cp1250.mkii
index b92eb5e31..c13ee53e2 100644
--- a/tex/context/base/regi-cp1250.mkii
+++ b/tex/context/base/regi-cp1250.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1250 (East European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1251.mkii b/tex/context/base/regi-cp1251.mkii
index 60f04170b..66576bd16 100644
--- a/tex/context/base/regi-cp1251.mkii
+++ b/tex/context/base/regi-cp1251.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1251 (Cyrillic),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1252.mkii b/tex/context/base/regi-cp1252.mkii
index 9a54f178f..316d694a6 100644
--- a/tex/context/base/regi-cp1252.mkii
+++ b/tex/context/base/regi-cp1252.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1252 (West European),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1253.mkii b/tex/context/base/regi-cp1253.mkii
index 24ec45eac..05d53c129 100644
--- a/tex/context/base/regi-cp1253.mkii
+++ b/tex/context/base/regi-cp1253.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1253 (Greek),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1254.mkii b/tex/context/base/regi-cp1254.mkii
index 4dd509b9d..73f8f2708 100644
--- a/tex/context/base/regi-cp1254.mkii
+++ b/tex/context/base/regi-cp1254.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1254 (Turkish),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cp1257.mkii b/tex/context/base/regi-cp1257.mkii
index 0790ef734..4c9cb56f0 100644
--- a/tex/context/base/regi-cp1257.mkii
+++ b/tex/context/base/regi-cp1257.mkii
@@ -5,7 +5,7 @@
%D subtitle=cp1257 (Windows Baltic),
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cyp.mkii b/tex/context/base/regi-cyp.mkii
index 7d134df50..3f45ace23 100644
--- a/tex/context/base/regi-cyp.mkii
+++ b/tex/context/base/regi-cyp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cyrillic Plus,
%D author=...,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-cyr.mkii b/tex/context/base/regi-cyr.mkii
index 1e84b9cba..1910c0e7c 100644
--- a/tex/context/base/regi-cyr.mkii
+++ b/tex/context/base/regi-cyr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cyrillic,
%D author=...,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-def.mkii b/tex/context/base/regi-def.mkii
index e26709c77..3af0c9d3c 100644
--- a/tex/context/base/regi-def.mkii
+++ b/tex/context/base/regi-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Character Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen \& Ton Otten]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-ibm.mkii b/tex/context/base/regi-ibm.mkii
index 1fad9545a..5756e7705 100644
--- a/tex/context/base/regi-ibm.mkii
+++ b/tex/context/base/regi-ibm.mkii
@@ -5,7 +5,7 @@
%D subtitle=The Good Old MSDOS IBM codepage,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-ini.mkii b/tex/context/base/regi-ini.mkii
index 3cdfe2763..1122ce18a 100644
--- a/tex/context/base/regi-ini.mkii
+++ b/tex/context/base/regi-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-ini.mkiv b/tex/context/base/regi-ini.mkiv
index 41f001426..c7fbd3f50 100644
--- a/tex/context/base/regi-ini.mkiv
+++ b/tex/context/base/regi-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Regime Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-mac.mkii b/tex/context/base/regi-mac.mkii
index b3c281ec0..30f57ab18 100644
--- a/tex/context/base/regi-mac.mkii
+++ b/tex/context/base/regi-mac.mkii
@@ -5,7 +5,7 @@
%D subtitle=Mac Encoding,
%D author={Michel Bovani \& Adam Lindsay \& Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-syn.mkii b/tex/context/base/regi-syn.mkii
index 7a8a9c146..09fd59dee 100644
--- a/tex/context/base/regi-syn.mkii
+++ b/tex/context/base/regi-syn.mkii
@@ -5,7 +5,7 @@
%D subtitle=Synonyms,
%D author=Mojca Miklavec \& Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-uni.mkii b/tex/context/base/regi-uni.mkii
index c4d9521e9..fe2f99a4f 100644
--- a/tex/context/base/regi-uni.mkii
+++ b/tex/context/base/regi-uni.mkii
@@ -5,7 +5,7 @@
%D subtitle=Unicode,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-utf.mkii b/tex/context/base/regi-utf.mkii
index b3423b15a..c6639d806 100644
--- a/tex/context/base/regi-utf.mkii
+++ b/tex/context/base/regi-utf.mkii
@@ -5,7 +5,7 @@
%D subtitle=UTF-8,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/regi-vis.mkii b/tex/context/base/regi-vis.mkii
index d1071354f..1807bdc93 100644
--- a/tex/context/base/regi-vis.mkii
+++ b/tex/context/base/regi-vis.mkii
@@ -5,7 +5,7 @@
%D subtitle=viscii,
%D author=script-generated,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex
index e4927814c..9b857f8ab 100644
--- a/tex/context/base/s-abr-01.tex
+++ b/tex/context/base/s-abr-01.tex
@@ -5,7 +5,7 @@
%D subtitle=General Abbreviations 1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-abr-02.tex b/tex/context/base/s-abr-02.tex
index 005559ef3..8bb6a2898 100644
--- a/tex/context/base/s-abr-02.tex
+++ b/tex/context/base/s-abr-02.tex
@@ -5,7 +5,7 @@
%D subtitle=General Abbreviations 2,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-abr-03.tex b/tex/context/base/s-abr-03.tex
index 43068b9a5..8247b68a9 100644
--- a/tex/context/base/s-abr-03.tex
+++ b/tex/context/base/s-abr-03.tex
@@ -5,7 +5,7 @@
%D subtitle=General Abbreviations 3,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-abr-04.tex b/tex/context/base/s-abr-04.tex
index 98e76c86f..ab3dc94cd 100644
--- a/tex/context/base/s-abr-04.tex
+++ b/tex/context/base/s-abr-04.tex
@@ -5,7 +5,7 @@
%D subtitle=General Abbreviations 1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-cdr-01.tex b/tex/context/base/s-cdr-01.tex
index 164d81285..b0bced9da 100644
--- a/tex/context/base/s-cdr-01.tex
+++ b/tex/context/base/s-cdr-01.tex
@@ -5,7 +5,7 @@
%D subtitle=CDROM Cover,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-chi-00.mkii b/tex/context/base/s-chi-00.mkii
index bec86f6d2..fb8d47603 100644
--- a/tex/context/base/s-chi-00.mkii
+++ b/tex/context/base/s-chi-00.mkii
@@ -6,7 +6,7 @@
%D author=Hans Hagen,
%D date=\currentdate,
%D suggestions=Wang Lei,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-faq-00.tex b/tex/context/base/s-faq-00.tex
index 11859936c..84055491f 100644
--- a/tex/context/base/s-faq-00.tex
+++ b/tex/context/base/s-faq-00.tex
@@ -5,7 +5,7 @@
%D subtitle=FAQ Common Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-faq-01.tex b/tex/context/base/s-faq-01.tex
index 8c116e0f7..f6ee3ce06 100644
--- a/tex/context/base/s-faq-01.tex
+++ b/tex/context/base/s-faq-01.tex
@@ -5,7 +5,7 @@
%D subtitle=FAQ Interactive Version,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-faq-02.tex b/tex/context/base/s-faq-02.tex
index 02287bde4..92aa1eca2 100644
--- a/tex/context/base/s-faq-02.tex
+++ b/tex/context/base/s-faq-02.tex
@@ -5,7 +5,7 @@
%D subtitle=FAQ Paper Version,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-faq-03.tex b/tex/context/base/s-faq-03.tex
index 4f556f713..b1e1ef2c2 100644
--- a/tex/context/base/s-faq-03.tex
+++ b/tex/context/base/s-faq-03.tex
@@ -5,7 +5,7 @@
%D subtitle=FAQ General Framework,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-01.mkii b/tex/context/base/s-fnt-01.mkii
index 69c8efab9..aedcf913d 100644
--- a/tex/context/base/s-fnt-01.mkii
+++ b/tex/context/base/s-fnt-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=Font Environment 1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-10.mkiv b/tex/context/base/s-fnt-10.mkiv
index 07f5d4729..e3c13b621 100644
--- a/tex/context/base/s-fnt-10.mkiv
+++ b/tex/context/base/s-fnt-10.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Listing Glyphs in Large Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-11.mkiv b/tex/context/base/s-fnt-11.mkiv
index f2171ecd0..a91e069ea 100644
--- a/tex/context/base/s-fnt-11.mkiv
+++ b/tex/context/base/s-fnt-11.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Listing Installed Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-20.mkiv b/tex/context/base/s-fnt-20.mkiv
index a57c0ba47..e4ba08869 100644
--- a/tex/context/base/s-fnt-20.mkiv
+++ b/tex/context/base/s-fnt-20.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing Feature Application (1),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-21.mkiv b/tex/context/base/s-fnt-21.mkiv
index dd8de398d..a48854679 100644
--- a/tex/context/base/s-fnt-21.mkiv
+++ b/tex/context/base/s-fnt-21.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing Feature Application (2),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-23.mkiv b/tex/context/base/s-fnt-23.mkiv
index 1dc7367a4..e068e97a5 100644
--- a/tex/context/base/s-fnt-23.mkiv
+++ b/tex/context/base/s-fnt-23.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing Feature Application (3),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-24.mkiv b/tex/context/base/s-fnt-24.mkiv
index de485557b..2c0022e5c 100644
--- a/tex/context/base/s-fnt-24.mkiv
+++ b/tex/context/base/s-fnt-24.mkiv
@@ -5,7 +5,7 @@
%D subtitle=CJK Glyph Combination Testing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-25.mkiv b/tex/context/base/s-fnt-25.mkiv
index 159d8325d..a7a88ff14 100644
--- a/tex/context/base/s-fnt-25.mkiv
+++ b/tex/context/base/s-fnt-25.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math Glyph Checking,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-26.mkiv b/tex/context/base/s-fnt-26.mkiv
index 18d1d6573..5edf80a57 100644
--- a/tex/context/base/s-fnt-26.mkiv
+++ b/tex/context/base/s-fnt-26.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Goodies Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-28.mkiv b/tex/context/base/s-fnt-28.mkiv
index 839c7d4ae..00a7b1437 100644
--- a/tex/context/base/s-fnt-28.mkiv
+++ b/tex/context/base/s-fnt-28.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing Names,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-29.mkiv b/tex/context/base/s-fnt-29.mkiv
index 0b63635b2..0378550e8 100644
--- a/tex/context/base/s-fnt-29.mkiv
+++ b/tex/context/base/s-fnt-29.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tracing Shapes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-30.mkiv b/tex/context/base/s-fnt-30.mkiv
index c824b2b6c..1de27aed3 100644
--- a/tex/context/base/s-fnt-30.mkiv
+++ b/tex/context/base/s-fnt-30.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Showing Character Data,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-31.mkiv b/tex/context/base/s-fnt-31.mkiv
index 3cd689d97..88b5358c2 100644
--- a/tex/context/base/s-fnt-31.mkiv
+++ b/tex/context/base/s-fnt-31.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Comparing Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-fnt-32.mkiv b/tex/context/base/s-fnt-32.mkiv
index ea55e9e74..5ffbb2ac5 100644
--- a/tex/context/base/s-fnt-32.mkiv
+++ b/tex/context/base/s-fnt-32.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Unicode Math Scripts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-grk-00.mkii b/tex/context/base/s-grk-00.mkii
index ec5ddf1f7..f76d0c220 100644
--- a/tex/context/base/s-grk-00.mkii
+++ b/tex/context/base/s-grk-00.mkii
@@ -6,7 +6,7 @@
%D author=Hans Hagen,
%D date=\currentdate,
%D suggestions=Giuseppe Bilotta,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-inf-01.mkvi b/tex/context/base/s-inf-01.mkvi
index 4792e739a..40aea4eb7 100644
--- a/tex/context/base/s-inf-01.mkvi
+++ b/tex/context/base/s-inf-01.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Information 1 (\MKII/\MKIV\ usage),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-inf-02.mkiv b/tex/context/base/s-inf-02.mkiv
index 77a3f650c..cf8d572bc 100644
--- a/tex/context/base/s-inf-02.mkiv
+++ b/tex/context/base/s-inf-02.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Information 2 (filenames),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-jap-00.mkii b/tex/context/base/s-jap-00.mkii
index 28cb6c241..5eec2f725 100644
--- a/tex/context/base/s-jap-00.mkii
+++ b/tex/context/base/s-jap-00.mkii
@@ -6,7 +6,7 @@
%D author=Hans Hagen,
%D date=\currentdate,
%D suggestions=Richard Gabriel,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-lan-03.mkiv b/tex/context/base/s-lan-03.mkiv
index b8d24539b..a490261f4 100644
--- a/tex/context/base/s-lan-03.mkiv
+++ b/tex/context/base/s-lan-03.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Language Environment 3,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-lan-04.mkiv b/tex/context/base/s-lan-04.mkiv
index 3fb575299..80283bfd4 100644
--- a/tex/context/base/s-lan-04.mkiv
+++ b/tex/context/base/s-lan-04.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Language Environment 4,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mag-01.tex b/tex/context/base/s-mag-01.tex
index da4e027f4..8da6d8c02 100644
--- a/tex/context/base/s-mag-01.tex
+++ b/tex/context/base/s-mag-01.tex
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Magazine Base Style,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mod-00.mkii b/tex/context/base/s-mod-00.mkii
index e2d07200c..b3457658b 100644
--- a/tex/context/base/s-mod-00.mkii
+++ b/tex/context/base/s-mod-00.mkii
@@ -5,7 +5,7 @@
%D subtitle=Documentation Base Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mod-00.mkiv b/tex/context/base/s-mod-00.mkiv
index f6b6f7ba2..eadefbe12 100644
--- a/tex/context/base/s-mod-00.mkiv
+++ b/tex/context/base/s-mod-00.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Documentation Base Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -311,15 +311,15 @@
\definecomplexorsimpleempty\extras
\definecomplexorsimpleempty\elements
-\def\showelements{\dodoubleempty\doshowelements}
+% \def\showelements{\dodoubleempty\doshowelements}
-\def\doshowelements[#1][#2]
- {\bgroup
- \processXMLbuffer
- \typebuffer
- \setupcolors[\c!state=\v!stop]
- \showXSDcomponent[#1][#2]
- \egroup}
+% \def\doshowelements[#1][#2]
+% {\bgroup
+% \processXMLbuffer
+% \typebuffer
+% \setupcolors[\c!state=\v!stop]
+% \showXSDcomponent[#1][#2]
+% \egroup}
% \macros{a,b}
% \macros{a,b}{b}
diff --git a/tex/context/base/s-mod-01.mkii b/tex/context/base/s-mod-01.mkii
index 64b533d03..7e32a5b87 100644
--- a/tex/context/base/s-mod-01.mkii
+++ b/tex/context/base/s-mod-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=Documentation Paper Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mod-01.mkiv b/tex/context/base/s-mod-01.mkiv
index ed87346d6..fc34d1a11 100644
--- a/tex/context/base/s-mod-01.mkiv
+++ b/tex/context/base/s-mod-01.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Documentation Paper Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mod-02.mkii b/tex/context/base/s-mod-02.mkii
index bc53f6890..2d095ff9a 100644
--- a/tex/context/base/s-mod-02.mkii
+++ b/tex/context/base/s-mod-02.mkii
@@ -5,7 +5,7 @@
%D subtitle=Documentation Screen Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-mod-02.mkiv b/tex/context/base/s-mod-02.mkiv
index 1ca88b796..fa43c302e 100644
--- a/tex/context/base/s-mod-02.mkiv
+++ b/tex/context/base/s-mod-02.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Documentation Screen Environment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-00.tex b/tex/context/base/s-pre-00.tex
index 7b22e2fd9..7f217d5bb 100644
--- a/tex/context/base/s-pre-00.tex
+++ b/tex/context/base/s-pre-00.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 0,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-01.tex b/tex/context/base/s-pre-01.tex
index b86133fa6..89c5642f9 100644
--- a/tex/context/base/s-pre-01.tex
+++ b/tex/context/base/s-pre-01.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-02.tex b/tex/context/base/s-pre-02.tex
index 9df1fe383..d7a6fe458 100644
--- a/tex/context/base/s-pre-02.tex
+++ b/tex/context/base/s-pre-02.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 2,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-03.tex b/tex/context/base/s-pre-03.tex
index bdd7960c5..19a11d24e 100644
--- a/tex/context/base/s-pre-03.tex
+++ b/tex/context/base/s-pre-03.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 3,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-04.tex b/tex/context/base/s-pre-04.tex
index 09cc79b72..088f4e510 100644
--- a/tex/context/base/s-pre-04.tex
+++ b/tex/context/base/s-pre-04.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 4,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-05.tex b/tex/context/base/s-pre-05.tex
index 9b3ae89ff..808112787 100644
--- a/tex/context/base/s-pre-05.tex
+++ b/tex/context/base/s-pre-05.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 5,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-06.tex b/tex/context/base/s-pre-06.tex
index 7a84323e9..21e7236e7 100644
--- a/tex/context/base/s-pre-06.tex
+++ b/tex/context/base/s-pre-06.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 6,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-07.tex b/tex/context/base/s-pre-07.tex
index bf84971bb..ba62b3236 100644
--- a/tex/context/base/s-pre-07.tex
+++ b/tex/context/base/s-pre-07.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 7,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-08.tex b/tex/context/base/s-pre-08.tex
index 425310299..b545bef23 100644
--- a/tex/context/base/s-pre-08.tex
+++ b/tex/context/base/s-pre-08.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 8,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-09.tex b/tex/context/base/s-pre-09.tex
index a829dd6e2..a20b9f31a 100644
--- a/tex/context/base/s-pre-09.tex
+++ b/tex/context/base/s-pre-09.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 9,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-10.tex b/tex/context/base/s-pre-10.tex
index 67a867ec7..a92e5af01 100644
--- a/tex/context/base/s-pre-10.tex
+++ b/tex/context/base/s-pre-10.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 10,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-11.tex b/tex/context/base/s-pre-11.tex
index 23bf9e223..551c5ebbc 100644
--- a/tex/context/base/s-pre-11.tex
+++ b/tex/context/base/s-pre-11.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 11,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-12.tex b/tex/context/base/s-pre-12.tex
index 722d59ced..23418fbba 100644
--- a/tex/context/base/s-pre-12.tex
+++ b/tex/context/base/s-pre-12.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 12,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-13.tex b/tex/context/base/s-pre-13.tex
index 6032f36d2..7b4daa4b3 100644
--- a/tex/context/base/s-pre-13.tex
+++ b/tex/context/base/s-pre-13.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 13,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-14.tex b/tex/context/base/s-pre-14.tex
index 93f8cdbc3..4dae6c009 100644
--- a/tex/context/base/s-pre-14.tex
+++ b/tex/context/base/s-pre-14.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 14,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-15.tex b/tex/context/base/s-pre-15.tex
index c9a157abb..25fb35783 100644
--- a/tex/context/base/s-pre-15.tex
+++ b/tex/context/base/s-pre-15.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 15,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-16.tex b/tex/context/base/s-pre-16.tex
index 81f21ec60..715936890 100644
--- a/tex/context/base/s-pre-16.tex
+++ b/tex/context/base/s-pre-16.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 16,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-17.tex b/tex/context/base/s-pre-17.tex
index 798f30cf8..7e8310a53 100644
--- a/tex/context/base/s-pre-17.tex
+++ b/tex/context/base/s-pre-17.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 17,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-18.tex b/tex/context/base/s-pre-18.tex
index d92117aaf..876eec5f1 100644
--- a/tex/context/base/s-pre-18.tex
+++ b/tex/context/base/s-pre-18.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 18,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-19.tex b/tex/context/base/s-pre-19.tex
index 3715d6ac1..991d311ce 100644
--- a/tex/context/base/s-pre-19.tex
+++ b/tex/context/base/s-pre-19.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 19,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-22.tex b/tex/context/base/s-pre-22.tex
index 8930c34be..be50ae195 100644
--- a/tex/context/base/s-pre-22.tex
+++ b/tex/context/base/s-pre-22.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 22,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-23.tex b/tex/context/base/s-pre-23.tex
index 90ed18353..f9983a89e 100644
--- a/tex/context/base/s-pre-23.tex
+++ b/tex/context/base/s-pre-23.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 20,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-26.tex b/tex/context/base/s-pre-26.tex
index a99516960..7c1dec5f8 100644
--- a/tex/context/base/s-pre-26.tex
+++ b/tex/context/base/s-pre-26.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 26,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-27.tex b/tex/context/base/s-pre-27.tex
index eda75e8f4..2e201e8df 100644
--- a/tex/context/base/s-pre-27.tex
+++ b/tex/context/base/s-pre-27.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 27,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-30.mkii b/tex/context/base/s-pre-30.mkii
index 2a3899c92..a7152deb6 100644
--- a/tex/context/base/s-pre-30.mkii
+++ b/tex/context/base/s-pre-30.mkii
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 30,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-30.mkiv b/tex/context/base/s-pre-30.mkiv
index c3b524047..c1dbd9b93 100644
--- a/tex/context/base/s-pre-30.mkiv
+++ b/tex/context/base/s-pre-30.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 30,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-50.tex b/tex/context/base/s-pre-50.tex
index 41ae04821..03c612779 100644
--- a/tex/context/base/s-pre-50.tex
+++ b/tex/context/base/s-pre-50.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 50,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-60.mkii b/tex/context/base/s-pre-60.mkii
index 4df3e8a61..8823c66ce 100644
--- a/tex/context/base/s-pre-60.mkii
+++ b/tex/context/base/s-pre-60.mkii
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 60,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-60.mkiv b/tex/context/base/s-pre-60.mkiv
index aa5ec36d0..b39a06311 100644
--- a/tex/context/base/s-pre-60.mkiv
+++ b/tex/context/base/s-pre-60.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 60,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-61.tex b/tex/context/base/s-pre-61.tex
index 216bb9a00..477b622c3 100644
--- a/tex/context/base/s-pre-61.tex
+++ b/tex/context/base/s-pre-61.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 61,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-62.tex b/tex/context/base/s-pre-62.tex
index 8e50af529..d4f2a54f8 100644
--- a/tex/context/base/s-pre-62.tex
+++ b/tex/context/base/s-pre-62.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 62,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-63.tex b/tex/context/base/s-pre-63.tex
index 1a0fdf607..0535fc1d0 100644
--- a/tex/context/base/s-pre-63.tex
+++ b/tex/context/base/s-pre-63.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 63,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-64.tex b/tex/context/base/s-pre-64.tex
index 9e82b255c..ef4889bbb 100644
--- a/tex/context/base/s-pre-64.tex
+++ b/tex/context/base/s-pre-64.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 64,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-66.tex b/tex/context/base/s-pre-66.tex
index e085caeda..3e89e4a7e 100644
--- a/tex/context/base/s-pre-66.tex
+++ b/tex/context/base/s-pre-66.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 66,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-68.tex b/tex/context/base/s-pre-68.tex
index 616d410eb..3c04a87e1 100644
--- a/tex/context/base/s-pre-68.tex
+++ b/tex/context/base/s-pre-68.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 68,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-69.mkiv b/tex/context/base/s-pre-69.mkiv
index 9cf6fdfd5..0df68c9e7 100644
--- a/tex/context/base/s-pre-69.mkiv
+++ b/tex/context/base/s-pre-69.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 69,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-70.mkiv b/tex/context/base/s-pre-70.mkiv
index 60462cf7a..9f76fc84a 100644
--- a/tex/context/base/s-pre-70.mkiv
+++ b/tex/context/base/s-pre-70.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 70,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-71.mkii b/tex/context/base/s-pre-71.mkii
index db65c8e28..343136768 100644
--- a/tex/context/base/s-pre-71.mkii
+++ b/tex/context/base/s-pre-71.mkii
@@ -7,7 +7,7 @@
%D subtitle=Presentation Environment 71,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-71.mkiv b/tex/context/base/s-pre-71.mkiv
index 69280243b..a52718576 100644
--- a/tex/context/base/s-pre-71.mkiv
+++ b/tex/context/base/s-pre-71.mkiv
@@ -7,7 +7,7 @@
%D subtitle=Presentation Environment 71,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-93.tex b/tex/context/base/s-pre-93.tex
index 7eabd5ed1..c36762f38 100644
--- a/tex/context/base/s-pre-93.tex
+++ b/tex/context/base/s-pre-93.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 20,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-pre-96.tex b/tex/context/base/s-pre-96.tex
index 705e74eec..2ad752007 100644
--- a/tex/context/base/s-pre-96.tex
+++ b/tex/context/base/s-pre-96.tex
@@ -5,7 +5,7 @@
%D subtitle=Presentation Environment 26,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-ptj-01.tex b/tex/context/base/s-ptj-01.tex
index 9990bf006..a14a03ef1 100644
--- a/tex/context/base/s-ptj-01.tex
+++ b/tex/context/base/s-ptj-01.tex
@@ -6,7 +6,7 @@
%D author=Aditya Mahajan,
%D email=adityam at umich dot edu,
%D date=\currentdate,
-%D copyright=2009 Aditya Mahajan]
+%D copyright={Aditya Mahajan}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -72,7 +72,7 @@
%D uses latin modern for sans serif and monotype. For the main face, 12pt is
%D used with a 15.5pt baseline skip. Font protrusion is enabled, but font
%D expansion is not. We follow these conventions. \CONTEXT\ uses Pagella fonts
-%D from \TEX{gyre} project, so we use them instead.
+%D from \TEX{gyre} project, so we use them instead.
\usetypescript [serif,sans,mono] [hanging] [pure]
\setupalign [hanging]
@@ -148,7 +148,7 @@
after={\blank[big]}]
%D Next we define internal frames to take care of the layout of the extra
-%D material in the title.
+%D material in the title.
\defineframed
[pracjourninfotitle]
@@ -223,7 +223,7 @@
author={\getvariable{pracjourn}{author}},
subtitle={The PracTeX Journal Article}]
\stopsetups
-
+
% If revision number is present, write it to \filename{_rev.tex}
% FIXME: Do we need to ensure that the dates and month are two digits?
\startrawsetups [pracjourndate]
@@ -266,8 +266,8 @@
\definetext [pracjourntitleheader] [header] [\setups{pracjourntitleheader}][]
\definetext [pracjourntitlefooter] [footer] [\setups{pracjourntitlefooter}]
-\setuphead
- [title]
+\setuphead
+ [title]
[header=pracjourntitleheader,
footer=pracjourntitlefooter]
diff --git a/tex/context/base/s-reg-01.mkiv b/tex/context/base/s-reg-01.mkiv
index d3e456881..36434c30c 100644
--- a/tex/context/base/s-reg-01.mkiv
+++ b/tex/context/base/s-reg-01.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Extra Regime Support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/s-syn-01.tex b/tex/context/base/s-syn-01.tex
index d797be61e..01c8f6653 100644
--- a/tex/context/base/s-syn-01.tex
+++ b/tex/context/base/s-syn-01.tex
@@ -5,7 +5,7 @@
%D subtitle=Preliminary Syntax Stuff,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-bar.mkvi b/tex/context/base/scrn-bar.mkvi
index 4605f1d2e..1bfc6a13c 100644
--- a/tex/context/base/scrn-bar.mkvi
+++ b/tex/context/base/scrn-bar.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Progress Bars,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-but.mkvi b/tex/context/base/scrn-but.mkvi
index e1dedd605..c8f1ba243 100644
--- a/tex/context/base/scrn-but.mkvi
+++ b/tex/context/base/scrn-but.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Interaction,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-fld.mkii b/tex/context/base/scrn-fld.mkii
index 4e1b34fa9..993b510ea 100644
--- a/tex/context/base/scrn-fld.mkii
+++ b/tex/context/base/scrn-fld.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fields,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-fld.mkvi b/tex/context/base/scrn-fld.mkvi
index bf84f15b7..9c51d22b1 100644
--- a/tex/context/base/scrn-fld.mkvi
+++ b/tex/context/base/scrn-fld.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Fields,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-hlp.mkii b/tex/context/base/scrn-hlp.mkii
index c9fcbd29a..c526f51eb 100644
--- a/tex/context/base/scrn-hlp.mkii
+++ b/tex/context/base/scrn-hlp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Help (Experimental),
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-hlp.mkvi b/tex/context/base/scrn-hlp.mkvi
index d97824300..6e90fc66d 100644
--- a/tex/context/base/scrn-hlp.mkvi
+++ b/tex/context/base/scrn-hlp.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Help (Experimental),
%D author={Hans Hagen \& Ton Otten},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-ini.mkvi b/tex/context/base/scrn-ini.mkvi
index 860c696c0..5715f69c3 100644
--- a/tex/context/base/scrn-ini.mkvi
+++ b/tex/context/base/scrn-ini.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-int.mkii b/tex/context/base/scrn-int.mkii
index cf55f864a..1f104c03d 100644
--- a/tex/context/base/scrn-int.mkii
+++ b/tex/context/base/scrn-int.mkii
@@ -5,7 +5,7 @@
%D subtitle=Interaction,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -1128,7 +1128,7 @@
\dostepwiserecurse\plusone\lastpage\!!counta
{\gotorealpage\empty\empty\recurselevel{\copy\scratchbox}}%
\hss}%
- \global\wd\interactionbarbox\zeropoint
+ \wd\interactionbarbox\zeropoint
\egroup
\fi
\egroup
diff --git a/tex/context/base/scrn-nav.mkii b/tex/context/base/scrn-nav.mkii
index 591d4134c..3bb56bace 100644
--- a/tex/context/base/scrn-nav.mkii
+++ b/tex/context/base/scrn-nav.mkii
@@ -5,7 +5,7 @@
%D subtitle=Navigation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-pag.mkvi b/tex/context/base/scrn-pag.mkvi
index 8e1dbde8e..aae99f304 100644
--- a/tex/context/base/scrn-pag.mkvi
+++ b/tex/context/base/scrn-pag.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Pages, % moved code
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -138,7 +138,7 @@
\else
\global\canvasheight\currentinteractionscreenheight
\fi\fi
- \ifconditional\page_location_is_set
+ \ifconditional\c_page_layouts_location_is_set
\global\setfalse\scrn_canvas_tight_page
\fi
\ifconditional\scrn_canvas_tight_page
diff --git a/tex/context/base/scrn-ref.mkvi b/tex/context/base/scrn-ref.mkvi
index 8c3f4fb4a..a06ba1ad8 100644
--- a/tex/context/base/scrn-ref.mkvi
+++ b/tex/context/base/scrn-ref.mkvi
@@ -5,7 +5,7 @@
%D subtitle=References, % moved code
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/scrn-wid.lua b/tex/context/base/scrn-wid.lua
index 7b1dd940a..90e353306 100644
--- a/tex/context/base/scrn-wid.lua
+++ b/tex/context/base/scrn-wid.lua
@@ -28,6 +28,10 @@ local nodeinjections = backends.nodeinjections
local variables = interfaces.variables
local v_auto = variables.auto
+local trace_attachments = false trackers.register("widgets.attachments", function(v) trace_attachments = v end)
+
+local report_attachments = logs.reporter("widgets","attachments")
+
-- Symbols
function commands.presetsymbollist(list)
@@ -66,10 +70,13 @@ local function checkbuffer(specification)
end
end
-function attachments.register(specification)
- checkregistered(specification)
+function attachments.register(specification) -- beware of tag/registered mixup(tag is namespace)
+ local registered = checkregistered(specification)
checkbuffer(specification)
- attachments[lastregistered] = specification
+ attachments[registered] = specification
+ if trace_attachments then
+ report_attachments("registering '%s'",registered)
+ end
return specification
end
@@ -77,12 +84,17 @@ function attachments.insert(specification)
local registered = checkregistered(specification)
local r = attachments[registered]
if r then
+ if trace_attachments then
+ report_attachments("including registered '%s'",registered)
+ end
for k, v in next, r do
local s = specification[k]
if s == "" then
specification[k] = v
end
end
+ elseif trace_attachments then
+ report_attachments("including unregistered '%s'",registered)
end
checkbuffer(specification)
return nodeinjections.attachfile(specification)
diff --git a/tex/context/base/scrn-wid.mkvi b/tex/context/base/scrn-wid.mkvi
index 72f5255bb..8bf60e61a 100644
--- a/tex/context/base/scrn-wid.mkvi
+++ b/tex/context/base/scrn-wid.mkvi
@@ -5,7 +5,7 @@
%D subtitle=Widgets,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -96,15 +96,18 @@
\def\currentattachment{_}%
\setupattachment[_][#settings,\s!parent=\??at]%
\ctxcommand{registerattachment{
- tag = "#tag",
- title = "\attachmentparameter\c!title",
- subtitle = "\attachmentparameter\c!subtitle",
- author = "\attachmentparameter\c!author",
- file = "\attachmentparameter\c!file",
- name = "\attachmentparameter\c!name",
- buffer = "\attachmentparameter\c!buffer",
+ tag = "#tag",
+ registered = "#tag",
+ title = "\attachmentparameter\c!title",
+ subtitle = "\attachmentparameter\c!subtitle",
+ author = "\attachmentparameter\c!author",
+ file = "\attachmentparameter\c!file",
+ name = "\attachmentparameter\c!name",
+ buffer = "\attachmentparameter\c!buffer",
}}%
\endgroup
+ \else
+ % todo
\fi}
\appendtoks
diff --git a/tex/context/base/scrp-ini.mkiv b/tex/context/base/scrp-ini.mkiv
index 0e50452ff..d0ee8770d 100644
--- a/tex/context/base/scrp-ini.mkiv
+++ b/tex/context/base/scrp-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/sort-def.mkii b/tex/context/base/sort-def.mkii
index 10dc31b14..168f94e9e 100644
--- a/tex/context/base/sort-def.mkii
+++ b/tex/context/base/sort-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Defaults,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/sort-ini.mkii b/tex/context/base/sort-ini.mkii
index f1ed1c316..8114f82c8 100644
--- a/tex/context/base/sort-ini.mkii
+++ b/tex/context/base/sort-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/sort-ini.mkiv b/tex/context/base/sort-ini.mkiv
index a4dc2f6ba..b7b490255 100644
--- a/tex/context/base/sort-ini.mkiv
+++ b/tex/context/base/sort-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/sort-lan.mkii b/tex/context/base/sort-lan.mkii
index db52c63fb..c23962371 100644
--- a/tex/context/base/sort-lan.mkii
+++ b/tex/context/base/sort-lan.mkii
@@ -5,7 +5,7 @@
%D subtitle=Language Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-ali.mkiv b/tex/context/base/spac-ali.mkiv
index 0cf22f470..dacb3a314 100644
--- a/tex/context/base/spac-ali.mkiv
+++ b/tex/context/base/spac-ali.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Alignments,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -172,10 +172,10 @@
\setvalue{\@@ragged@@command\v!nothanging }{\appendtoks\disableprotruding \to\everyraggedcommand}
\setvalue{\@@ragged@@command\v!hz }{\appendtoks\enableadjusting \to\everyraggedcommand}
\setvalue{\@@ragged@@command\v!nohz }{\appendtoks\disableadjusting \to\everyraggedcommand}
-\setvalue{\@@ragged@@command\v!spacing }{\appendtoks\enablespacehandling
- \enablekernhandling \to\everyraggedcommand}
-\setvalue{\@@ragged@@command\v!nospacing }{\appendtoks\disablespacehandling
- \disablekernhandling \to\everyraggedcommand}
+% \setvalue{\@@ragged@@command\v!spacing }{\appendtoks\enablespacehandling
+% \enablekernhandling \to\everyraggedcommand}
+% \setvalue{\@@ragged@@command\v!nospacing }{\appendtoks\disablespacehandling
+% \disablekernhandling \to\everyraggedcommand}
\setvalue{\@@ragged@@command\v!hyphenated }{\appendtoks\dohyphens \to\everyraggedcommand}
\setvalue{\@@ragged@@command\v!nothyphenated}{\appendtoks\nohyphens \to\everyraggedcommand}
diff --git a/tex/context/base/spac-chr.lua b/tex/context/base/spac-chr.lua
new file mode 100644
index 000000000..601b90645
--- /dev/null
+++ b/tex/context/base/spac-chr.lua
@@ -0,0 +1,157 @@
+if not modules then modules = { } end modules ['spac-chr'] = {
+ version = 1.001,
+ comment = "companion to spac-chr.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local byte = string.byte
+
+----- trace_characters = false trackers.register("typesetters.characters", function(v) trace_characters = v end)
+-----
+----- report_characters = logs.reporter("typesetting","characters")
+
+local nodes, node = nodes, node
+
+local set_attribute = node.set_attribute
+local insert_node_after = node.insert_after
+local remove_node = nodes.remove -- ! nodes
+
+local nodepool = nodes.pool
+local tasks = nodes.tasks
+
+local new_penalty = nodepool.penalty
+local new_glue = nodepool.glue
+
+local nodecodes = nodes.nodecodes
+local glyph_code = nodecodes.glyph
+
+local typesetters = typesetters
+
+local characters = { }
+typesetters.characters = characters
+
+local fontparameters = fonts.hashes.parameters
+local fontcharacters = fonts.hashes.characters
+
+local a_character = attributes.private("characters")
+
+local c_zero = byte('0')
+local c_period = byte('.')
+
+local function inject_quad_space(unicode,head,current,fraction)
+ local attr = current.attr
+ if fraction ~= 0 then
+ fraction = fraction * fontparameters[current.font].quad
+ end
+ head, current = insert_node_after(head,current,new_glue(fraction))
+ current.attr = attr
+ set_attribute(current,a_character,unicode)
+ return head, current
+end
+
+local function inject_char_space(unicode,head,current,parent)
+ local attr = current.attr
+ local char = fontcharacters[current.font][parent]
+ head, current = insert_node_after(head,current,new_glue(char and char.width or fontparameters[current.font].space))
+ current.attr = attr
+ set_attribute(current,a_character,unicode)
+ return head, current
+end
+
+local function inject_nobreak_space(unicode,head,current,space,spacestretch,spaceshrink)
+ local attr = current.attr
+ head, current = insert_node_after(head,current,new_glue(space,spacestretch,spaceshrink))
+ current.attr = attr
+ set_attribute(current,a_character,unicode)
+ head, current = insert_node_after(head,current,new_penalty(10000))
+ return head, current
+end
+
+local methods = {
+
+ [0x00A0] = function(head,current) -- nobreakspace
+ local para = fontparameters[current.font]
+ return inject_nobreak_space(0x00A0,head,current,para.space,para.spacestretch,para.spaceshrink)
+ end,
+
+ [0x2000] = function(head,current) -- enquad
+ return inject_quad_space(0x2000,head,current,1/2)
+ end,
+
+ [0x2001] = function(head,current) -- emquad
+ return inject_quad_space(0x2001,head,current,1)
+ end,
+
+ [0x2002] = function(head,current) -- enspace
+ return inject_quad_space(0x2002,head,current,1/2)
+ end,
+
+ [0x2003] = function(head,current) -- emspace
+ return inject_quad_space(0x2003,head,current,1)
+ end,
+
+ [0x2004] = function(head,current) -- threeperemspace
+ return inject_quad_space(0x2004,head,current,1/3)
+ end,
+
+ [0x2005] = function(head,current) -- fourperemspace
+ return inject_quad_space(0x2005,head,current,1/4)
+ end,
+
+ [0x2006] = function(head,current) -- sixperemspace
+ return inject_quad_space(0x2006,head,current,1/6)
+ end,
+
+ [0x2007] = function(head,current) -- figurespace
+ return inject_char_space(0x2007,head,current,c_zero)
+ end,
+
+ [0x2008] = function(head,current) -- punctuationspace
+ return inject_char_space(0x2008,head,current,c_period)
+ end,
+
+ [0x2009] = function(head,current) -- breakablethinspace
+ return inject_quad_space(0x2009,head,current,1/8) -- same as next
+ end,
+
+ [0x200A] = function(head,current) -- hairspace
+ return inject_quad_space(0x200A,head,current,1/8) -- same as previous (todo)
+ end,
+
+ [0x200B] = function(head,current) -- zerowidthspace
+ return inject_quad_space(0x200B,head,current,0)
+ end,
+
+ [0x202F] = function(head,current) -- narrownobreakspace
+ return inject_nobreak_space(0x202F,head,current,fontparameters[current.font].space/8)
+ end,
+
+ [0x205F] = function(head,current) -- math thinspace
+ return inject_nobreak_space(0x205F,head,current,fontparameters[current.font].space/8)
+ end,
+
+ -- [0xFEFF] = function(head,current) -- zerowidthnobreakspace
+ -- return head, current
+ -- end,
+
+}
+
+function characters.handler(head)
+ local current = head
+ local done = false
+ while current do
+ local next = current.next
+ if current.id == glyph_code then
+ local method = methods[current.char]
+ if method then
+ head = method(head,current)
+ head = remove_node(head,current,true)
+ done = true
+ end
+ end
+ current = next
+ end
+ return head, done
+end
diff --git a/tex/context/base/spac-chr.mkiv b/tex/context/base/spac-chr.mkiv
new file mode 100644
index 000000000..fb1203b3e
--- /dev/null
+++ b/tex/context/base/spac-chr.mkiv
@@ -0,0 +1,51 @@
+%D \module
+%D [ file=spac-chr,
+%D version=2011.05.24, % code moved from core-spa.mkiv
+%D title=\CONTEXT\ Spacing Macros,
+%D subtitle=Characters,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%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 / Characters}
+
+\unprotect
+
+\registerctxluafile{spac-chr}{1.001}
+
+\definesystemattribute[characters][public]
+
+\edef\nobreakspace {\utfchar{"00A0}}
+
+\edef\ideographicspace {\utfchar{"2000}}
+\edef\ideographichalffillspace{\utfchar{"2001}}
+\edef\twoperemspace {\utfchar{"2002}}
+\edef\threeperemspace {\utfchar{"2004}}
+\edef\fourperemspace {\utfchar{"2005}}
+\edef\sixperemspace {\utfchar{"2006}}
+\edef\figurespace {\utfchar{"2007}}
+\edef\punctuationspace {\utfchar{"2008}}
+\edef\breakablethinspace {\utfchar{"2009}}
+\edef\hairspace {\utfchar{"200A}}
+\edef\zerowidthspace {\utfchar{"200B}}
+
+\edef\narrownobreakspace {\utfchar{"202F}}
+
+%edef\zerowidthnobreakspace {\utfchar{"FEFF}}
+
+\unexpanded\def\zerowidthnobreakspace{\penalty\plustenthousand\kern\zeropoint}
+
+% Shortcuts:
+
+\let~\nobreakspace
+
+% Goodies:
+
+\unexpanded\def\fiveperemspace{\hskip\dimexpr\emwidth/5\relax}
+
+\protect \endinput
+
diff --git a/tex/context/base/spac-def.mkiv b/tex/context/base/spac-def.mkiv
index 3aa85dda5..9c9bdf687 100644
--- a/tex/context/base/spac-def.mkiv
+++ b/tex/context/base/spac-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-fnt.mkiv b/tex/context/base/spac-fnt.mkiv
index c268d7893..35e9b6dd5 100644
--- a/tex/context/base/spac-fnt.mkiv
+++ b/tex/context/base/spac-fnt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-gen.mkii b/tex/context/base/spac-gen.mkii
index 4e7b3810c..91e379250 100644
--- a/tex/context/base/spac-gen.mkii
+++ b/tex/context/base/spac-gen.mkii
@@ -5,7 +5,7 @@
%D subtitle=Spacing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-grd.mkii b/tex/context/base/spac-grd.mkii
index 249e2e430..97699de51 100644
--- a/tex/context/base/spac-grd.mkii
+++ b/tex/context/base/spac-grd.mkii
@@ -5,7 +5,7 @@
%D subtitle=Grid Snapping (Experimental),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-grd.mkiv b/tex/context/base/spac-grd.mkiv
index 8701f4d7e..6cd1c37b1 100644
--- a/tex/context/base/spac-grd.mkiv
+++ b/tex/context/base/spac-grd.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Grid Snapping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv
index 39edaa2ff..9afb0039b 100644
--- a/tex/context/base/spac-hor.mkiv
+++ b/tex/context/base/spac-hor.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Horizontal,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -816,23 +816,20 @@
% needed for unicode:
-\unexpanded\def\breakablethinspace {\breakabletextormathspace+\thinmuskip 1}
-
-\unexpanded\def\twoperemspace {\hskip\dimexpr\emwidth/2\relax} % == \enspace
-\unexpanded\def\threeperemspace {\hskip\dimexpr\emwidth/3\relax}
-\unexpanded\def\fourperemspace {\hskip\dimexpr\emwidth/4\relax}
-\unexpanded\def\fiveperemspace {\hskip\dimexpr\emwidth/5\relax} % goodie
-\unexpanded\def\sixperemspace {\hskip\dimexpr\emwidth/6\relax}
-\unexpanded\def\figurespace {\begingroup\setbox\scratchbox\hbox{0}\hskip\wd\scratchbox\endgroup} % there is a command for this
-\unexpanded\def\punctuationspace {\begingroup\setbox\scratchbox\hbox{.}\hskip\wd\scratchbox\endgroup}
-\unexpanded\def\ideographicspace {\hskip\dimexpr\emwidth/1\relax}
-\unexpanded\def\ideographichalffillspace{\hskip\dimexpr\emwidth/2\relax}
-%unexpanded\def\nobreakspace {\penalty\plustenthousand\space}
-\unexpanded\def\nobreakspace {\penalty\plustenthousand\kern\interwordspace}
-\unexpanded\def\narrownobreakspace {\penalty\plustenthousand\thinspace}
-%unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\hskip\zeropoint}
-\unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\kern\zeropoint}
-\unexpanded\def\zerowidthspace {\hskip\zeropoint}
+%unexpanded\def\breakablethinspace {\breakabletextormathspace+\thinmuskip1}
+%unexpanded\def\twoperemspace {\hskip\dimexpr\emwidth/2\relax} % == \enspace
+%unexpanded\def\threeperemspace {\hskip\dimexpr\emwidth/3\relax}
+%unexpanded\def\fourperemspace {\hskip\dimexpr\emwidth/4\relax}
+%unexpanded\def\fiveperemspace {\hskip\dimexpr\emwidth/5\relax} % goodie
+%unexpanded\def\sixperemspace {\hskip\dimexpr\emwidth/6\relax}
+%unexpanded\def\figurespace {\begingroup\setbox\scratchbox\hbox{0}\hskip\wd\scratchbox\endgroup} % there is a command for this
+%unexpanded\def\punctuationspace {\begingroup\setbox\scratchbox\hbox{.}\hskip\wd\scratchbox\endgroup}
+%unexpanded\def\ideographicspace {\hskip\dimexpr\emwidth/1\relax}
+%unexpanded\def\ideographichalffillspace{\hskip\dimexpr\emwidth/2\relax}
+%unexpanded\def\nobreakspace {\penalty\plustenthousand\kern\interwordspace}
+%unexpanded\def\narrownobreakspace {\penalty\plustenthousand\thinspace}
+%unexpanded\def\zerowidthnobreakspace {\penalty\plustenthousand\kern\zeropoint}
+%unexpanded\def\zerowidthspace {\hskip\zeropoint}
\definehspace[.5][.1250\emspaceamount] % could also be [.1250\spaceamount]
\definehspace[1] [.1667\emspaceamount]
diff --git a/tex/context/base/spac-pag.mkiv b/tex/context/base/spac-pag.mkiv
index 9babab29a..c3ed49fe8 100644
--- a/tex/context/base/spac-pag.mkiv
+++ b/tex/context/base/spac-pag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Pages,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-par.mkiv b/tex/context/base/spac-par.mkiv
index 222f4fd2c..433ea85c8 100644
--- a/tex/context/base/spac-par.mkiv
+++ b/tex/context/base/spac-par.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Paragraphs,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv
index 897e9c9d7..9f3af04ac 100644
--- a/tex/context/base/spac-ver.mkiv
+++ b/tex/context/base/spac-ver.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Vertical,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-def.mkii b/tex/context/base/spec-def.mkii
index ad1a9bb1d..60051579d 100644
--- a/tex/context/base/spec-def.mkii
+++ b/tex/context/base/spec-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-dpm.mkii b/tex/context/base/spec-dpm.mkii
index ddbb6caf8..fe721405a 100644
--- a/tex/context/base/spec-dpm.mkii
+++ b/tex/context/base/spec-dpm.mkii
@@ -5,7 +5,7 @@
%D subtitle=DVIPDFM support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-dvi.mkii b/tex/context/base/spec-dvi.mkii
index 522890851..89a1330a2 100644
--- a/tex/context/base/spec-dvi.mkii
+++ b/tex/context/base/spec-dvi.mkii
@@ -5,7 +5,7 @@
%D subtitle=Generic \TEX\ Solutions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-fdf.mkii b/tex/context/base/spec-fdf.mkii
index 30e15ff34..ebda30fd4 100644
--- a/tex/context/base/spec-fdf.mkii
+++ b/tex/context/base/spec-fdf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Support Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-ini.mkii b/tex/context/base/spec-ini.mkii
index 0229a0e3d..9361ed222 100644
--- a/tex/context/base/spec-ini.mkii
+++ b/tex/context/base/spec-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-mis.mkii b/tex/context/base/spec-mis.mkii
index d56eca27e..de0debd3c 100644
--- a/tex/context/base/spec-mis.mkii
+++ b/tex/context/base/spec-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Miscellaneous Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-pdf.mkii b/tex/context/base/spec-pdf.mkii
index 222c4e3a6..33722f603 100644
--- a/tex/context/base/spec-pdf.mkii
+++ b/tex/context/base/spec-pdf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Adobe \ACROBAT\ version 2.1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-ps.mkii b/tex/context/base/spec-ps.mkii
index 803defe02..02ec16453 100644
--- a/tex/context/base/spec-ps.mkii
+++ b/tex/context/base/spec-ps.mkii
@@ -5,7 +5,7 @@
%D subtitle=Adobe PostScript,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-tpd.mkii b/tex/context/base/spec-tpd.mkii
index 6af3b1272..042d5cdfe 100644
--- a/tex/context/base/spec-tpd.mkii
+++ b/tex/context/base/spec-tpd.mkii
@@ -5,7 +5,7 @@
%D subtitle=\PDFTEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-tr.mkii b/tex/context/base/spec-tr.mkii
index c1f997bca..19ddb7495 100644
--- a/tex/context/base/spec-tr.mkii
+++ b/tex/context/base/spec-tr.mkii
@@ -5,7 +5,7 @@
%D subtitle=Thomas Rokicki's \DVIPS,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-tst.mkii b/tex/context/base/spec-tst.mkii
index 628a0dbbf..4f580e7b4 100644
--- a/tex/context/base/spec-tst.mkii
+++ b/tex/context/base/spec-tst.mkii
@@ -5,7 +5,7 @@
%D subtitle=Special Test Macro,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-var.mkii b/tex/context/base/spec-var.mkii
index 8d561dc6f..3641ba959 100644
--- a/tex/context/base/spec-var.mkii
+++ b/tex/context/base/spec-var.mkii
@@ -5,7 +5,7 @@
%D subtitle=Variables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-win.mkii b/tex/context/base/spec-win.mkii
index 55ceec691..e16984a56 100644
--- a/tex/context/base/spec-win.mkii
+++ b/tex/context/base/spec-win.mkii
@@ -5,7 +5,7 @@
%D subtitle=\YandY's \DVIWINDO,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/spec-yy.mkii b/tex/context/base/spec-yy.mkii
index beec95493..b5a1d590b 100644
--- a/tex/context/base/spec-yy.mkii
+++ b/tex/context/base/spec-yy.mkii
@@ -5,7 +5,7 @@
%D subtitle=\YandY's \DVIPSONE\ and \DVIWINDO,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index dbec9b2f0..40ef6bdfe 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index f867291bf..fcfec5d36 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/strc-bkm.mkiv b/tex/context/base/strc-bkm.mkiv
index b7a5bc805..f5f0bcf59 100644
--- a/tex/context/base/strc-bkm.mkiv
+++ b/tex/context/base/strc-bkm.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Bookmarks,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-blk.mkii b/tex/context/base/strc-blk.mkii
index c4e38a607..b6056769c 100644
--- a/tex/context/base/strc-blk.mkii
+++ b/tex/context/base/strc-blk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Blockmoves,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-blk.mkiv b/tex/context/base/strc-blk.mkiv
index f625fa448..c3fe0eb0b 100644
--- a/tex/context/base/strc-blk.mkiv
+++ b/tex/context/base/strc-blk.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Blockmoves,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-def.mkiv b/tex/context/base/strc-def.mkiv
index e386902e0..e60e4f60a 100644
--- a/tex/context/base/strc-def.mkiv
+++ b/tex/context/base/strc-def.mkiv
@@ -4,7 +4,7 @@
%D subtitle=Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -16,39 +16,7 @@
\unprotect
-% \def\installparameterhandler#1#2#3#4#5#6#7#8#9{%
-% \def#3##1{\csname#5{#1#2}##1\endcsname}%
-% \def#4##1{#6{#1#2}##1}%
-% %
-% \def#5##1##2{\ifcsname##1##2\endcsname##1##2\else\expandafter#7\csname##1\s!parent\endcsname##2\fi}%
-% \def#6##1##2{\ifcsname##1##2\endcsname ##1\else\expandafter#8\csname##1\s!parent\endcsname##2\fi}%
-% %
-% \def#7##1##2{\ifx##1\relax\s!empty\else#5##1##2\fi}%
-% \def#8##1##2{\ifx##1\relax \else#6##1##2\fi}%
-% %
-% \def#9##1##2% style color
-% {\edef\fontattributehash {#4##1}%
-% \edef\colorattributehash{#4##2}%
-% \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash ##1\fi
-% \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash##2\fi}%
-% %
-% }
-
-% \installparameterhandler
-% \empty
-% \@@framed
-% \framedparameter
-% \framedparameterhash
-% \doframedparameter
-% \doframedparameterhash
-% \doframedparentparameter
-% \doframedparentparameterhash
-% \dosetframedattributes
-
-
-% \setupheads
-
-\setupstructureheads[%
+\setupheads[%
%\c!after=,
%\c!align=,
%\c!aligntitle=,
@@ -71,14 +39,14 @@
\c!incrementnumber=\v!yes,
\c!indentnext=\v!no,
%\c!label=,
- \c!limittext=\v!yes,
+ %\c!limittext=\languageparameter\c!limittext,
\c!margin=\zeropoint,
%\c!margintext=,
\c!number=\v!yes,
- \c!numbercolor=\structureheadparameter\c!color,
- \c!textcolor=\structureheadparameter\c!color,
- \c!numberstyle=\structureheadparameter\c!style,
- \c!textstyle=\structureheadparameter\c!style,
+ \c!numbercolor=\headparameter\c!color,
+ \c!textcolor=\headparameter\c!color,
+ \c!numberstyle=\headparameter\c!style,
+ \c!textstyle=\headparameter\c!style,
%\c!numbercommand=,
%\c!textcommand=,
\c!ownnumber=\v!no,
@@ -98,8 +66,8 @@
%\c!tolerance=
]
-% \setupstructureblock[appendix][sectionconversionset=appendix]
-% \setupstructurehead[chapter][sectionconversionset=\structureblockparameter\c!sectionconversionset] % \structureblockparameter]
+% \setupsectionblock[appendix][sectionconversionset=appendix]
+% \setuphead[chapter][sectionconversionset=\sectionblockparameter\c!sectionconversionset] % \sectionblockparameter]
% \definestructureresetset[default][0,1,1,0][1] % this will not reset parts and subsections
% \setuphead[part][sectionresetset=default]
@@ -135,124 +103,124 @@
% \definesectionblock
-\definestructureblock [\v!frontpart] [\v!frontmatter] [\c!number=\v!no]
-\definestructureblock [\v!bodypart] [\v!bodymatter] [\c!number=\v!yes]
-\definestructureblock [\v!appendix] [\v!appendices] [\c!number=\v!yes]
-\definestructureblock [\v!backpart] [\v!backmatter] [\c!number=\v!no]
+\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]
-\setstructureblock [\v!bodypart] % default
+\setsectionblock [\v!bodypart] % default
\appendtoks
- \setstructureblock [\v!bodypart]% default
+ \setsectionblock [\v!bodypart]% default
\to \everyjob
% \definesection
-\definestructuresection[\s!section-1] % part
-\definestructuresection[\s!section-2] % chapter
-\definestructuresection[\s!section-3] % section
-\definestructuresection[\s!section-4] % subsection
-\definestructuresection[\s!section-5] % subsubsection
-\definestructuresection[\s!section-6] % subsubsubsection
-\definestructuresection[\s!section-7] % subsubsubsubsection
+\definesection[\s!section-1] % part
+\definesection[\s!section-2] % chapter
+\definesection[\s!section-3] % section
+\definesection[\s!section-4] % subsection
+\definesection[\s!section-5] % subsubsection
+\definesection[\s!section-6] % subsubsubsection
+\definesection[\s!section-7] % subsubsubsubsection
% \definehead
-\definestructurehead
+\definehead
[\v!part]
[\c!section=\s!section-1]
-\definestructurehead
+\definehead
[\v!chapter]
[\c!section=\s!section-2]
-\definestructurehead
+\definehead
[\v!section]
[\c!section=\s!section-3]
-\definestructurehead
+\definehead
[\v!subsection]
[\c!section=\s!section-4,
\c!default=\v!section]
-\definestructurehead
+\definehead
[\v!subsubsection]
[\c!section=\s!section-5,
\c!default=\v!subsection]
-\definestructurehead
+\definehead
[\v!subsubsubsection]
[\c!section=\s!section-6,
\c!default=\v!subsubsection]
-\definestructurehead
+\definehead
[\v!subsubsubsubsection]
[\c!section=\s!section-7,
\c!default=\v!subsubsubsection]
-\definestructurehead
+\definehead
[\v!title]
[\c!coupling=\v!chapter,
\c!default=\v!chapter,
\c!incrementnumber=\v!no]
-\definestructurehead
+\definehead
[\v!subject]
[\c!coupling=\v!section,
\c!default=\v!section,
\c!incrementnumber=\v!no]
-\definestructurehead
+\definehead
[\v!subsubject]
[\c!coupling=\v!subsection,
\c!default=\v!subsection,
\c!incrementnumber=\v!no]
-\definestructurehead
+\definehead
[\v!subsubsubject]
[\c!coupling=\v!subsubsection,
\c!default=\v!subsubsection,
\c!incrementnumber=\v!no]
-\definestructurehead
+\definehead
[\v!subsubsubsubject]
[\c!coupling=\v!subsubsubsection,
\c!default=\v!subsubsubsection,
\c!incrementnumber=\v!no]
-\definestructurehead
+\definehead
[\v!subsubsubsubsubject]
[\c!coupling=\v!subsubsubsubsection,
\c!default=\v!subsubsubsubsection,
\c!incrementnumber=\v!no]
-\setupstructurehead
+\setuphead
[\v!part]
[\c!placehead=\v!no]
-\setupstructurehead
+\setuphead
[\v!chapter]
[\v!appendix\c!label=\v!appendix,
\v!bodypart\c!label=\v!chapter] % bijlageconversie=\Character
-\setupstructurehead
+\setuphead
[\v!section]
[\v!appendix\c!label=\v!section,
\v!bodypart\c!label=\v!section] % bijlageconversie=\Character
-\setupstructurehead
+\setuphead
[\v!subsection]
[\v!appendix\c!label=\v!subsection,
\v!bodypart\c!label=\v!subsection] % bijlageconversie=\Character
-\setupstructurehead
+\setuphead
[\v!subsubsection]
[\v!appendix\c!label=\v!subsubsection,
\v!bodypart\c!label=\v!subsubsection] % bijlageconversie=\Character
% \setuphead
-\setupstructurehead
+\setuphead
[\v!part,\v!chapter]
[%\c!align=,
%\c!indentnext=\v!no,
@@ -265,7 +233,7 @@
\c!before={\blank[2*\v!big]},
\c!after={\blank[2*\v!big]}]
-\setupstructurehead
+\setuphead
[\v!section]
[%\c!align=,
%\c!indentnext=\v!no,
@@ -274,7 +242,7 @@
\c!before={\blank[2*\v!big]},
\c!after=\blank]
-\setupstructurehead % nieuw
+\setuphead % nieuw
[\v!subsection]
[\c!page=]
diff --git a/tex/context/base/strc-des.mkii b/tex/context/base/strc-des.mkii
index 0c34e9ef9..587ef13e7 100644
--- a/tex/context/base/strc-des.mkii
+++ b/tex/context/base/strc-des.mkii
@@ -5,7 +5,7 @@
%D subtitle=Descriptions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-des.mkiv b/tex/context/base/strc-des.mkiv
index 54eba1eaa..f081e884a 100644
--- a/tex/context/base/strc-des.mkiv
+++ b/tex/context/base/strc-des.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Descriptions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -866,7 +866,7 @@
order = \nextinternalorderreference,
reference = "\currentdescriptionreference",
referenceprefix = "\referenceprefix",
- block = "\currentstructureblock",
+ block = "\currentsectionblock",
section = structures.sections.currentid(),
},
titledata = {
diff --git a/tex/context/base/strc-doc.mkiv b/tex/context/base/strc-doc.mkiv
index 683d65d2f..eaba066e2 100644
--- a/tex/context/base/strc-doc.mkiv
+++ b/tex/context/base/strc-doc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Document Structure,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -119,7 +119,7 @@
structures.sections.somelevel {
references = {
internal = \nextinternalreference,
- block = "\currentstructureblock",
+ block = "\currentsectionblock",
reference = "\currentstructurereference",
referenceprefix = "\currentstructurereferenceprefix",
backreference = "\currentstructurebackreference",
@@ -162,7 +162,7 @@
},
numberdata = {
% needed ?
- block = "\currentstructureblock",
+ block = "\currentsectionblock",
hidenumber = \ifx\currentstructureshownumber\v!no true\else nil\fi, % titles
% so far
separatorset = "\structureparameter\c!sectionseparatorset",
diff --git a/tex/context/base/strc-flt.mkii b/tex/context/base/strc-flt.mkii
index 3d07cdc20..f028089e3 100644
--- a/tex/context/base/strc-flt.mkii
+++ b/tex/context/base/strc-flt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Floating Bodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-flt.mkiv b/tex/context/base/strc-flt.mkiv
index 32024a276..9d0b5b0d7 100644
--- a/tex/context/base/strc-flt.mkiv
+++ b/tex/context/base/strc-flt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Float Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -302,15 +302,6 @@
\installstructurelistprocessor{float}{\usestructurelistprocessor{number+title}}
-% \def\thecurrentfloatnumber
-% {\ifnofloatcaption \else \ifnofloatnumber \else
-% \ifx\currentfloatnumber\relax\else
-% \dostarttagged\t!floattag\empty
-% \labeltexts\currentfloat{\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}}%
-% \dostoptagged
-% \fi
-% \fi \fi}
-
\unexpanded\def\thecurrentfloatnumbersuffix
{\doifsomething{\floatcaptionparameter\c!suffix}
{\floatcaptionparameter\c!suffixseparator
@@ -319,11 +310,23 @@
\def\thecurrentfloatnumber
{\ifnofloatcaption \else \ifnofloatnumber \else
\ifx\currentfloatnumber\relax\else
- \dostarttagged\t!floattag\empty
- \labeltexts\currentfloat
- {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}%
- \thecurrentfloatnumbersuffix}%
- \dostoptagged
+% \dostarttagged\t!floatlabel\empty
+% \labeltexts\currentfloat
+% {\dostoptagged
+% \dostarttagged\t!floatnumber\empty
+% \ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}%
+% \thecurrentfloatnumbersuffix
+% \dostoptagged
+% \dostarttagged\t!floatlabel\empty}%
+% \dostoptagged
+% \taggedlabeltexts\currentfloat\currentfloat
+% {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}%
+% \thecurrentfloatnumbersuffix}%
+ \namedtaggedlabeltexts
+ \t!floatlabel \currentfloat
+ \t!floatnumber\currentfloat
+ {\ctxlua{structures.lists.savedprefixednumber("\currentfloat",\currentfloatnumber)}%
+ \thecurrentfloatnumbersuffix}%
\fi
\fi \fi}
diff --git a/tex/context/base/strc-ini.mkiv b/tex/context/base/strc-ini.mkiv
index b1b11d871..5a78d301d 100644
--- a/tex/context/base/strc-ini.mkiv
+++ b/tex/context/base/strc-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization \& Helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -22,7 +22,7 @@
% section : [sectionnumber(s)]
% sectionseparatorset (default) sectionconversionset (default) sectionstopper () sectionset sectionsegments
-% lists : [sectionnumber(s)] [text] [prefix(es)[separator]][pagenumber(s)]
+% lists : [sectionnumber(s)] [text] [prefix(es)[separator][pagenumber(s)]
% sectionseparatorset (default) sectionconversionset (default) sectionstopper sectionset sectionsegments
% prefixseparatorset (default) prefixconversionset (default) prefixstopper (.) prefixset prefixsegments
% pageseparatorset (default) pageconversionset (default) pagestopper () pagesegments
diff --git a/tex/context/base/strc-itm.mkii b/tex/context/base/strc-itm.mkii
index 1de63c7c3..697618323 100644
--- a/tex/context/base/strc-itm.mkii
+++ b/tex/context/base/strc-itm.mkii
@@ -5,7 +5,7 @@
%D subtitle=itemgroups,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-itm.mkiv b/tex/context/base/strc-itm.mkiv
index 67f42f866..d582dafae 100644
--- a/tex/context/base/strc-itm.mkiv
+++ b/tex/context/base/strc-itm.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Itemgroups,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-lev.mkiv b/tex/context/base/strc-lev.mkiv
index 4c4605bcd..7d0543ecc 100644
--- a/tex/context/base/strc-lev.mkiv
+++ b/tex/context/base/strc-lev.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Automatic Levels,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -30,20 +30,20 @@
\unexpanded\def\dostartstructurelevel [#1]{\ctxlua{structures.sections.startautolevel("#1")}}
\unexpanded\def\stopstructurelevel {\ctxlua{structures.sections.stopautolevel()}}
-\unexpanded\def\nostartstructurehead{\dotripleargument\nonostartstructurehead}
-\unexpanded\def\nostopstructurehead {\dosingleargument\nonostopstructurehead }
+\unexpanded\def\nostarthead{\dotripleargument\nonostarthead}
+\unexpanded\def\nostophead {\dosingleargument\nonostophead }
\unexpanded\def\dostartstructurelevel[#1]%
{\doifassignmentelse{#1}
{\ctxlua{structures.sections.startautolevel("\v!default")}[#1]}
{\ctxlua{structures.sections.startautolevel("#1")}}}
-\unexpanded\def\nonostartstructurehead[#1][#2][#3]%
+\unexpanded\def\nonostarthead[#1][#2][#3]%
{\blank
\noindentation{\tttf[start missing structure level #1]}
\blank}
-\unexpanded\def\nonostopstructurehead[#1]%
+\unexpanded\def\nonostophead[#1]%
{\blank
\noindentation{\tttf[stop missing structure level #1]}
\blank}
diff --git a/tex/context/base/strc-lnt.mkii b/tex/context/base/strc-lnt.mkii
index ef09842cd..3c878a8d2 100644
--- a/tex/context/base/strc-lnt.mkii
+++ b/tex/context/base/strc-lnt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Line Notes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-lnt.mkiv b/tex/context/base/strc-lnt.mkiv
index 442a9378f..c6224106c 100644
--- a/tex/context/base/strc-lnt.mkiv
+++ b/tex/context/base/strc-lnt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Line Notes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-lst.mkii b/tex/context/base/strc-lst.mkii
index 527966354..ffb1a4dbd 100644
--- a/tex/context/base/strc-lst.mkii
+++ b/tex/context/base/strc-lst.mkii
@@ -5,7 +5,7 @@
%D subtitle=Lists,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-lst.mkiv b/tex/context/base/strc-lst.mkiv
index c2be8338a..149b1a734 100644
--- a/tex/context/base/strc-lst.mkiv
+++ b/tex/context/base/strc-lst.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Lists,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -15,56 +15,163 @@
\registerctxluafile{strc-lst}{1.001}
-\unprotect
-
-\def\currentstructurelistnumber{0}
-
% nmstate -> no pagenumber if not start
% autocrossdocument -> todo
% expansion -> todo
% auto refs to lists (chain) -> todo (\dododowritetolist)
% todo: \normalexpanded{\noexpand\everylistentry\emptytoks\the\everylistentry}% \emptytoks, else loop
-% interface to lua
+\unprotect
-% we have to deal with compatible processing, i.e. list elements that have two
-% elements plus a pagenumber
+% \def\currentlist {\s!unknown}
+%
+% \def\listparameter #1{\csname\dolistparameter{\??li\currentlist}#1\endcsname}
+% \def\namedlistparameter#1#2{\csname\dolistparameter{\??li #1}#2\endcsname}
+% \def\listparameterhash #1{\dolistparameterhash {\??li\currentlist}#1}
+%
+% \def\dolistparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolistparentparameter \csname#1\s!parent\endcsname#2\fi}
+% \def\dolistparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dolistparentparameterhash\csname#1\s!parent\endcsname#2\fi}
+%
+% \def\dolistparentparameter #1#2{\ifx#1\relax\s!empty\else\dolistparameter #1#2\fi}
+% \def\dolistparentparameterhash#1#2{\ifx#1\relax \else\dolistparameterhash#1#2\fi}
+%
+% \def\setlistparameter#1#2#3{\@EA\def\csname\??li#1#2\endcsname{#3}} % often
+%
+% \def\dosetlistattributes#1#2% style color
+% {\edef\fontattributehash {\listparameterhash#1}%
+% \edef\colorattributehash{\listparameterhash#2}%
+% \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi
+% \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi}
+%
+% \def\donestedlistattributes#1#2%
+% {\dosetlistattributes#1#2%
+% \ifx\colorattributehash\empty \else
+% \resetinteractionparameter\c!color
+% \resetinteractionparameter\c!contrastcolor
+% \fi}
+%
+% \def\checklistexistence#1%
+% {\ifcsname\??li#1\s!parent\endcsname \else
+% \letvalue{\??li#1\s!parent}\??li
+% \fi}
+%
+% \def\dosetuplist[#1][#2]% slow -)
+% {\checklistexistence{#1}%
+% \def\docommand##1{\getparameters[\??li##1][#2]}%
+% \processcommalist[#1]\docommand}
+%
+% \unexpanded\def\setuplist
+% {\dodoubleargument\dosetuplist}
+%
+% \unexpanded\def\definelist
+% {\dotripleempty\dodefinelist}
+%
+% \def\dodefinelist[#1][#2][#3]%
+% {\presetlocalframed[\??li#1]% still inefficient (will change when we redu core-rul)
+% \doifassignmentelse{#2}
+% {\getparameters[\??li#1][\s!parent=\??li,#2]}
+% {\doifelsenothing{#2}
+% {\getparameters[\??li#1][\s!parent=\??li]}
+% {\getparameters[\??li#1][\s!parent=\??li#2,#3]}}}
+%
+% \unexpanded\def\setuplists % new, but not for users (hardly handy)
+% {\dodoubleargument\getparameters[\??li]}
-\let\listentry\gobblesixarguments
+\installcommandhandler \??li {list} \??li
-\def\currentlist {\s!unknown}
-\def\currentlistmethod{entry}
-\def\currentlistindex {0}
+\def\donestedlistattributes#1#2% will change
+ {\dosetlistattributes#1#2%
+ \ifx\colorattributehash\empty \else
+ \resetinteractionparameter\c!color
+ \resetinteractionparameter\c!contrastcolor
+ \fi}
-\def\setlistparameter#1#2#3{\@EA\def\csname\??li#1#2\endcsname{#3}} % often
-%def\listparameter #1{\ifcsname\??li\currentlist#1\endcsname\csname\??li\currentlist#1\endcsname\fi}
+% \appendtoks
+% \ifx\currentlist\empty\else
+% \ifcsname\??li\currentlist\s!parent\endcsname \else
+% \letvalue{\??li\currentlist\s!parent}\??li % Is this still needed? Could be built in.
+% \fi
+% \fi
+% \to \everysetuplist
-% interface
+\let\setuplists\setuplist % yes or no
-\def\listparameter #1{\csname\dolistparameter{\??li\currentlist}#1\endcsname}
-\def\namedlistparameter#1#2{\csname\dolistparameter{\??li #1}#2\endcsname}
-\def\listparameterhash #1{\dolistparameterhash {\??li\currentlist}#1}
+\def\doifelselist#1% can also move to \installcommandhandler
+ {\ifcsname\??li#1\s!parent\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\setuplist
+ [\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!number=0,
+ \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!extras=,
+ \c!margin=\!!zeropoint,
+ \c!aligntitle=,
+ \c!before=,
+ \c!after=,
+ \c!inbetween=,
+ \c!symbol=,
+ \c!interaction=\v!sectionnumber,
+ \c!label=\v!no,
+ \c!distance=\!!zeropoint,
+ %\c!sectionseparatorset=,
+ %\c!sectionconversionset=,
+ %\c!sectionstarter=,
+ %\c!sectionstopper=,
+ %\c!sectionset=,
+ %\c!sectionsegments=,
+ %\c!prefix=\v!no,
+ %\c!prefixseparatorset=,
+ %\c!prefixconversionset=,
+ %\c!prefixstarter=.,
+ %\c!prefixstopper=.,
+ %\c!prefixset=,
+ %\c!prefixsegments=,
+ %\c!pageseparatorset=,
+ %\c!pageconversionset=,
+ %\c!pagestarter=,
+ %\c!pagestopper=,
+ %\c!expansion=,
+ %\c!prefixconnector=., % maybe inherit from setupheads
+ %\c!pageprefix=\v!no, % is unset, inherits
+ %\c!pageprefixconnector=\listparameter\c!prefixconnector,
+ %\c!pagesegments=2:2,
+ \c!limittext=\languageparameter\c!limittext] % not used currently
-\def\dolistparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolistparentparameter \csname#1\s!parent\endcsname#2\fi}
-\def\dolistparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dolistparentparameterhash\csname#1\s!parent\endcsname#2\fi}
+% Whatever:
-\def\dolistparentparameter #1#2{\ifx#1\relax\s!empty\else\dolistparameter #1#2\fi}
-\def\dolistparentparameterhash#1#2{\ifx#1\relax \else\dolistparameterhash#1#2\fi}
+\def\currentstructurelistnumber{0}
-\def\dosetlistattributes#1#2% style color
- {\edef\fontattributehash {\listparameterhash#1}%
- \edef\colorattributehash{\listparameterhash#2}%
- \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi
- \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi}
+% we have to deal with compatible processing, i.e. list elements that have two
+% elements plus a pagenumber
-\def\donestedlistattributes#1#2%
- {\dosetlistattributes#1#2%
- \ifx\colorattributehash\empty \else
- \resetinteractionparameter\c!color
- \resetinteractionparameter\c!contrastcolor
- \fi}
+\let\listentry\gobblesixarguments
-% handling
+\def\currentlistmethod{entry}
+\def\currentlistindex {0}
% The next code injects data into the list at the current level.
@@ -86,7 +193,7 @@
\edef\currentlistnumber{\ctxlua{structures.lists.push{
references = {
internal = \nextinternalreference,
- block = "\currentstructureblock", % handy for lists, like bibl
+ block = "\currentsectionblock", % handy for lists, like bibl
section = structures.sections.currentid(),
% location = "\currentlistlocation",
},
@@ -280,91 +387,6 @@
% \setvalue{\??li\c!alternative}{\getvalue{\??li\c!alternative b}} % ?
% \getvalue{\??li\c!alternative} % ?
-\def\checklistexistence#1%
- {\ifcsname\??li#1\s!parent\endcsname \else
- \letvalue{\??li#1\s!parent}\??li
- \fi}
-
-\def\dosetuplist[#1][#2]% slow -)
- {\checklistexistence{#1}%
- \def\docommand##1{\getparameters[\??li##1][#2]}%
- \processcommalist[#1]\docommand}
-
-\unexpanded\def\setuplist
- {\dodoubleargument\dosetuplist}
-
-\def\dodefinelist[#1][#2][#3]%
- {\presetlocalframed[\??li#1]% still inefficient (will change when we redu core-rul)
- \doifassignmentelse{#2}
- {\getparameters[\??li#1][\s!parent=\??li,#2]}
- {\doifelsenothing{#2}
- {\getparameters[\??li#1][\s!parent=\??li]}
- {\getparameters[\??li#1][\s!parent=\??li#2,#3]}}}
-
-\unexpanded\def\setuplists % new, but not for users (hardly handy)
- {\dodoubleargument\getparameters[\??li]}
-
-\setuplists
- [\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!number=0,
- \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!extras=,
- \c!margin=\!!zeropoint,
- \c!aligntitle=,
- \c!before=,
- \c!after=,
- \c!inbetween=,
- \c!symbol=,
- \c!interaction=\v!sectionnumber,
- \c!label=\v!no,
- \c!distance=\!!zeropoint,
- \c!limittext=\@@kolimittext,
- %\c!sectionseparatorset=,
- %\c!sectionconversionset=,
- %\c!sectionstarter=,
- %\c!sectionstopper=,
- %\c!sectionset=,
- %\c!sectionsegments=,
- %\c!prefix=\v!no,
- %\c!prefixseparatorset=,
- %\c!prefixconversionset=,
- %\c!prefixstarter=.,
- %\c!prefixstopper=.,
- %\c!prefixset=,
- %\c!prefixsegments=,
- %\c!pageseparatorset=,
- %\c!pageconversionset=,
- %\c!pagestarter=,
- %\c!pagestopper=,
- %\c!expansion=,
- % \c!prefixconnector=., % maybe inherit from setupheads
- % \c!pageprefix=\v!no, % is unset, inherits
- % \c!pageprefixconnector=\listparameter\c!prefixconnector,
- ]%\c!pagesegments=2:2]
-
-\unexpanded\def\definelist
- {\dotripleempty\dodefinelist}
-
\unexpanded\def\placelist
{\dodoubleempty\doplacelist}
@@ -391,7 +413,6 @@
\let\dowritetolist \gobblefourarguments
\let\dodowritetolist\gobblefourarguments
-
%D Regular list entries are bound to a specific location in order to
%D get the right pagenumber etc.\ associated. When pushing something
%D inbetween (in mkiv) it ends up directtly in the list. This is the
@@ -454,7 +475,7 @@
\def\doplacerawlist[#1][#2]% listreferences will be redone
{\begingroup
- \dosetuplist[#1][#2]%
+ \setuplist[#1][#2]%
\edef\currentlist{\firststructureelementinlist{#1}}%
\the\everystructurelist
\doif{\listparameter\c!coupling}\v!on{\startlistreferences{#1}}%
@@ -493,7 +514,7 @@
\def\listtextcommand #1{\begstrut#1\endstrut}
\def\listpagecommand #1{\strut#1}
-\def\doassigndimen#1#2#3%
+\def\doassignlistdimen#1#2#3%
{\doifinsetelse{#2}{\v!fit,\v!broad}{#1=#3}{#1=#2}\relax}
\unexpanded\def\listsymbol[#1]#2%
@@ -532,7 +553,7 @@
{\directsymbol\v!list\s!default}}
\def\listsymbol@none
- {\doassigndimen\scratchdimen{\listparameter\c!width}{1.5em}%
+ {\doassignlistdimen\scratchdimen{\listparameter\c!width}{1.5em}%
\hbox to \scratchdimen{}}
\def\listsymbol@one
@@ -543,9 +564,9 @@
\def\listsymbol@three
{\begingroup
- \doassigndimen{\dimen0}{\listparameter\c!width }{1.5em}%
- \doassigndimen{\dimen2}{\listparameter\c!height}{1ex}%
- \doassigndimen{\dimen4}{\listparameter\c!depth }\zeropoint
+ \doassignlistdimen{\dimen0}{\listparameter\c!width }{1.5em}%
+ \doassignlistdimen{\dimen2}{\listparameter\c!height}{1ex}%
+ \doassignlistdimen{\dimen4}{\listparameter\c!depth }\zeropoint
\vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4%
\endgroup}
@@ -655,7 +676,7 @@
\iflocation % we cannot tweak \iflocation as we nest
\doifelse{\listparameter\c!interaction}{#1}
{\begingroup
- \doif{\namedstructureheadparameter\currentlist\c!interaction}\v!list
+ \doif{\namedheadparameter\currentlist\c!interaction}\v!list
{\dosetsimplepagereference{bck:#2}%
\attribute\destinationattribute\currentdestinationattribute}%
\directgoto{\setlocationcolor\??ia#4}[internal(#2)]% we can get the attribute instead so then we don't need a goto
@@ -929,7 +950,7 @@
\def\dodeterminelistcharacteristics[#1][#2]%
{\begingroup
- \dosetuplist[#1][#2]%
+ \setuplist[#1][#2]%
\edef\currentlist{\firststructureelementinlist{#1}}%
\the\everystructurelist
\doanalyzestructurelist{#1}{\listparameter\c!criterium}{\number\listparameter\c!number}%
@@ -973,7 +994,7 @@
\the\everystructurelist
\doif{\combinedlistparameter\c!coupling}\v!on{\startlistreferences{#1}}%
\dobeginoflist
- \normalexpanded{\noexpand\dosetuplist[\combinedlist][#2]}%
+ \normalexpanded{\setuplist[\combinedlist][#2]}%
\doplacestructurelist
{\combinedlist}%
{\combinedlistparameter\c!criterium}%
diff --git a/tex/context/base/strc-mar.mkii b/tex/context/base/strc-mar.mkii
index 62e6f4ded..2ae81e47b 100644
--- a/tex/context/base/strc-mar.mkii
+++ b/tex/context/base/strc-mar.mkii
@@ -5,7 +5,7 @@
%D subtitle=Markings,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-mar.mkiv b/tex/context/base/strc-mar.mkiv
index 2fe8631b2..612492019 100644
--- a/tex/context/base/strc-mar.mkiv
+++ b/tex/context/base/strc-mar.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Markings,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-mat.mkii b/tex/context/base/strc-mat.mkii
index 0d32cb298..d85df79e2 100644
--- a/tex/context/base/strc-mat.mkii
+++ b/tex/context/base/strc-mat.mkii
@@ -5,7 +5,7 @@
%D subtitle=Math Fundamentals,
%D author={Hans Hagen, Taco Hoekwater \& Aditya Mahajan},
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-mat.mkiv b/tex/context/base/strc-mat.mkiv
index 8d4089360..60fb0be31 100644
--- a/tex/context/base/strc-mat.mkiv
+++ b/tex/context/base/strc-mat.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -131,7 +131,24 @@
{\dosetformulaattributes\c!numberstyle\c!numbercolor
\strut
\formulaparameter\c!left
- \labeltexts\v!formula{\ignorespaces\doplacecurrentformulanumber\unskip}%
+% \bgroup % somehow needed for tags
+% \dostarttagged\t!formulalabel\empty
+% \labeltexts\v!formula
+% {\ignorespaces
+% \dostoptagged
+% \dostarttagged\t!formulanumber\empty
+% \doplacecurrentformulanumber
+% \dostoptagged
+% \dostarttagged\t!formulalabel\empty
+% \unskip}%
+% \dostoptagged
+% \egroup
+% \taggedlabeltexts\v!formula\v!formula
+% {\ignorespaces\doplacecurrentformulanumber\removeunwantedspaces}%
+ \namedtaggedlabeltexts
+ \t!formulalabel \v!formula
+ \t!formulanumber\v!formula
+ {\ignorespaces\doplacecurrentformulanumber\removeunwantedspaces}%
\formulaparameter\c!right}%
\doif{\formulaparameter\c!location}\v!left{\hskip\formulaparameter\c!distance}}
@@ -480,6 +497,25 @@
\forgetdisplayskips
\getvalue{\e!start\formulaparameter\c!alternative\v!formula}}
+% tagging of formulanumbers is not ok (we get two display maths blobs)
+
+\def\dostopformula
+ {\dostarttagged\t!formulacaption\empty
+ \doplaceformulanumber
+ \dostoptagged
+ \dostarttagged\t!formulacontent\empty
+ \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}%
+ \dostoptagged
+ \dostoptagged
+ \nonoindentation
+ \checknextindentation[\formulaparameter\c!indentnext]%
+ \egroup
+ \hangafter\minusone % added for side floats
+ \hangindent\zeropoint % added for side floats
+ \setfalse\handleformulanumber
+ \the\everyresetformulas
+ \dorechecknextindentation} % here ?
+
% experiment:
\appendtoks
@@ -493,30 +529,13 @@
\setvalue{\v!formula}{\dosingleempty\doformula}
-\def\doformula[#1]#2%
+\def\doformula[#1]#2% todo: tagged
{\begingroup
\doifsomething{#1}{\switchtoformulabodyfont[#1]}%
% not : \def\doformula[##1]##2{\mathematics{##2}}%
\mathematics{#2}%
\endgroup}
-\def\dostopformula
- {\dostarttagged\t!formulatag\empty
- \doplaceformulanumber
- \dostoptagged
- \dostarttagged\t!formulacontent\empty
- \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}%
- \dostoptagged
- \dostoptagged
- \nonoindentation
- \checknextindentation[\formulaparameter\c!indentnext]%
- \egroup
- \hangafter\minusone % added for side floats
- \hangindent\zeropoint % added for side floats
- \setfalse\handleformulanumber
- \the\everyresetformulas
- \dorechecknextindentation} % here ?
-
%D \starttyping
%D % test \par % no preceding hlist
%D % $$x$$ % preceding hlist
diff --git a/tex/context/base/strc-not.mkii b/tex/context/base/strc-not.mkii
index ec38410d4..bee21342e 100644
--- a/tex/context/base/strc-not.mkii
+++ b/tex/context/base/strc-not.mkii
@@ -5,7 +5,7 @@
%D subtitle=Note Handling, % Footnote Handling
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-not.mkiv b/tex/context/base/strc-not.mkiv
index bf815c728..d178c840c 100644
--- a/tex/context/base/strc-not.mkiv
+++ b/tex/context/base/strc-not.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Note Handling,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-num.mkii b/tex/context/base/strc-num.mkii
index 28f69b441..99fb687c8 100644
--- a/tex/context/base/strc-num.mkii
+++ b/tex/context/base/strc-num.mkii
@@ -5,7 +5,7 @@
%D subtitle=Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-num.mkiv b/tex/context/base/strc-num.mkiv
index b386b5d95..909851656 100644
--- a/tex/context/base/strc-num.mkiv
+++ b/tex/context/base/strc-num.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Basic Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -56,7 +56,7 @@
[\c!prefixsegments=\autostructureprefixsegments\sharedstructurecounterparameter]
\def\autostructureprefixsegments#1% todo: \c!prefixsegments=\v!auto
- {2:\thenamedstructureheadlevel{\ctxlua{structures.sections.way("#1\c!way","\v!by")}}}
+ {2:\thenamedheadlevel{\ctxlua{structures.sections.way("#1\c!way","\v!by")}}}
\def\structurecounterparameter#1#2%
{\csname
@@ -126,7 +126,7 @@
{\ctxlua{structures.sections.way("\structurecounterparameter{#1}\c!way","\v!by")}}
\def\thenamedstructurecounterlevel#1%
- {\thenamedstructureheadlevel{\structurecounterway{#1}}}
+ {\thenamedheadlevel{\structurecounterway{#1}}}
\def\docheckstructurecountersetup#1%
{% this can be done at the lua end / a bit messy here ... todo ...
@@ -414,7 +414,7 @@
internal = \nextinternalreference,
reference = "\currentreference",
referenceprefix = "\referenceprefix",
- block = "\currentstructureblock",
+ block = "\currentsectionblock",
section = structures.sections.currentid(),
},
titledata = {
diff --git a/tex/context/base/strc-pag.mkii b/tex/context/base/strc-pag.mkii
index 5a86a99e8..40e69b849 100644
--- a/tex/context/base/strc-pag.mkii
+++ b/tex/context/base/strc-pag.mkii
@@ -5,7 +5,7 @@
%D subtitle=Numbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-pag.mkiv b/tex/context/base/strc-pag.mkiv
index f4b658365..bd8308096 100644
--- a/tex/context/base/strc-pag.mkiv
+++ b/tex/context/base/strc-pag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Pagenumbering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-prc.mkiv b/tex/context/base/strc-prc.mkiv
index 68339ed92..c3f1de4dd 100644
--- a/tex/context/base/strc-prc.mkiv
+++ b/tex/context/base/strc-prc.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Processors,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua
index ee32353f0..849cedbe7 100644
--- a/tex/context/base/strc-ref.lua
+++ b/tex/context/base/strc-ref.lua
@@ -1136,7 +1136,6 @@ function references.doifelse(prefix,reference,highlight,newwindow,layer)
currentreference = set[1]
end
-- we can do the expansion here which saves a call
---~ print("!!!!!!",not unknown)
commands.doifelse(not unknown)
end
diff --git a/tex/context/base/strc-ref.mkii b/tex/context/base/strc-ref.mkii
index 4550f7144..8a135eb04 100644
--- a/tex/context/base/strc-ref.mkii
+++ b/tex/context/base/strc-ref.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cross Referencing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-ref.mkiv b/tex/context/base/strc-ref.mkiv
index bec96e05c..9de6b923a 100644
--- a/tex/context/base/strc-ref.mkiv
+++ b/tex/context/base/strc-ref.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Cross Referencing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -15,7 +15,7 @@
%
% \definestructureconversionset[default][Character,number,Romannumerals,Character][number]
% \definestructureseparatorset [default][.,.,--][.]
-% \setupstructurehead[subsection][sectionstopper=),sectionsegments=4:4]
+% \setuphead[subsection][sectionstopper=),sectionsegments=4:4]
% \setupreferencestructureprefix[default][prefixsegments=2:4]
% \setupreferencestructureprefix[figure][default][prefixsegments=3:4]
% \chapter {One}
@@ -155,7 +155,7 @@
{
references = {
% internal = \nextinternalreference, % no need for an internal as we have an explicit
- block = "\currentstructureblock",
+ block = "\currentsectionblock",
section = structures.sections.currentid(),
},
metadata = { % we could assume page to have no metadata
@@ -191,7 +191,7 @@
\ctxlua{structures.references.setandgetattribute("\s!page", "\referenceprefix","#1",
{
references = {
- % block = "\currentstructureblock",
+ % block = "\currentsectionblock",
% section = structures.sections.currentid(),
},
metadata = { % we could assume page to have no metadata
@@ -926,14 +926,23 @@
\let\leftofreference \empty
\let\rightofreference \empty
+% \setvalue{\??rf\c!interaction\v!all}%
+% {\leftofreference
+% \the\leftreferencetoks
+% \doifsometokselse\leftreferencetoks \leftofreferencecontent \donothing
+% \currentreferencecontent
+% \doifsometokselse\rightreferencetoks\rightofreferencecontent\donothing
+% \the\rightreferencetoks
+% \rightofreference}
+
\setvalue{\??rf\c!interaction\v!all}%
- {\leftofreference
- \the\leftreferencetoks
+ {\the\leftreferencetoks
\doifsometokselse\leftreferencetoks \leftofreferencecontent \donothing
+ \leftofreference
\currentreferencecontent
+ \rightofreference
\doifsometokselse\rightreferencetoks\rightofreferencecontent\donothing
- \the\rightreferencetoks
- \rightofreference}
+ \the\rightreferencetoks}
\setvalue{\??rf\c!interaction\v!label}%
{\leftofreference
diff --git a/tex/context/base/strc-reg.mkii b/tex/context/base/strc-reg.mkii
index b088246d3..45be82525 100644
--- a/tex/context/base/strc-reg.mkii
+++ b/tex/context/base/strc-reg.mkii
@@ -5,7 +5,7 @@
%D subtitle=Register Management,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv
index 19634390d..f99f49c40 100644
--- a/tex/context/base/strc-reg.mkiv
+++ b/tex/context/base/strc-reg.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Registers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-ren.mkiv b/tex/context/base/strc-ren.mkiv
index 73eb0ccd2..462e47b08 100644
--- a/tex/context/base/strc-ren.mkiv
+++ b/tex/context/base/strc-ren.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Section Rendering,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -27,45 +27,45 @@
\unexpanded\def\placeheadmargintexts
{\the\everyheadstart
- \doif{\structureheadparameter\c!margintext}\v!yes\placemargincontent}
+ \doif{\headparameter\c!margintext}\v!yes\placemargincontent}
\unexpanded\def\setupheadcomponentfont#1#2%
{\dontconvertfont
- \ifconditional\structureheadisdisplay
- \edef\askedstructureheadinterlinespace{\structureheadparameter\c!interlinespace}%
- \ifx\askedstructureheadinterlinespace\empty
+ \ifconditional\headisdisplay
+ \edef\askedheadinterlinespace{\headparameter\c!interlinespace}%
+ \ifx\askedheadinterlinespace\empty
% here the interline space is only set when style sets no space
\setfalse\fontattributeisset
\setfalse\interlinespaceisset
- \dosetstructureheadattributes\c!style\c!color
+ \dosetheadattributes\c!style\c!color
\ifconditional\fontattributeisset \ifconditional\interlinespaceisset \else
\setupinterlinespace
\fi \fi
- \setfalse\fontattributeisset \dosetstructureheadattributes#1#2%
+ \setfalse\fontattributeisset \dosetheadattributes#1#2%
\ifconditional\fontattributeisset \ifconditional\interlinespaceisset \else
\setupinterlinespace
\fi \fi
\else
% here the set interline space overloads any other set space in the style
\setfalse\fontattributeisset
- \dosetstructureheadattributes\c!style\c!color
+ \dosetheadattributes\c!style\c!color
\ifconditional\fontattributeisset
- \dosetupcheckedinterlinespace\askedstructureheadinterlinespace
+ \dosetupcheckedinterlinespace\askedheadinterlinespace
\fi
\setfalse\fontattributeisset
- \dosetstructureheadattributes#1#2%
+ \dosetheadattributes#1#2%
\ifconditional\fontattributeisset
- \dosetupcheckedinterlinespace\askedstructureheadinterlinespace
+ \dosetupcheckedinterlinespace\askedheadinterlinespace
\fi
\fi
\else
\setfalse\fontattributeisset
- \dosetstructureheadattributes\c!style\c!color
+ \dosetheadattributes\c!style\c!color
\ifconditional\fontattributeisset
\setupspacing
\fi
\setfalse\fontattributeisset
- \dosetstructureheadattributes#1#2%
+ \dosetheadattributes#1#2%
\ifconditional\fontattributeisset
\setupspacing
\fi
@@ -74,23 +74,23 @@
\def\doplaceheadtextcomponent#1%
{\begingroup
\setupheadcomponentfont\c!textstyle\c!textcolor
- \structureheadparameter\c!commandbefore
+ \headparameter\c!commandbefore
\placeheadmargintexts
- \ifcsname\??nh\currentstructurehead\c!deeptextcommand\endcsname
- \expandafter\let\expandafter\deepstructuretitlecommand\csname\??nh\currentstructurehead\c!deeptextcommand\endcsname
+ \ifcsname\??nh\currenthead\c!deeptextcommand\endcsname
+ \expandafter\let\expandafter\deepstructuretitlecommand\csname\??nh\currenthead\c!deeptextcommand\endcsname
\fi
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
% struts can be nilled with \setnostrut
- \structureheadparameter\c!textcommand{\setstrut\begstrut#1\endstrut}%
+ \headparameter\c!textcommand{\setstrut\begstrut#1\endstrut}%
\xdef\localheadheight {\the\strutht}%
\xdef\localheaddepth {\the\strutdp}%
\xdef\localheadlineheight{\the\lineheight}%
% == \globallet\localheaddepth\strutdepth
\else
- \structureheadparameter\c!textcommand{#1}%
+ \headparameter\c!textcommand{#1}%
\fi
- \structureheadparameter\c!commandafter
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \headparameter\c!commandafter
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
\endgraf
\fi
\endgroup}
@@ -99,14 +99,14 @@
{\begingroup
\setupheadcomponentfont\c!numberstyle\c!numbercolor
\placeheadmargintexts
- \ifcsname\??nh\currentstructurehead\c!deepnumbercommand\endcsname
- \expandafter\let\expandafter\deepstructurenumbercommand\csname\??nh\currentstructurehead\c!deeptextcommand\endcsname
+ \ifcsname\??nh\currenthead\c!deepnumbercommand\endcsname
+ \expandafter\let\expandafter\deepstructurenumbercommand\csname\??nh\currenthead\c!deeptextcommand\endcsname
\fi
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
% can be nilled with \setnostrut
- \structureheadparameter\c!numbercommand{\setstrut\begstrut#1\endstrut}%
+ \headparameter\c!numbercommand{\setstrut\begstrut#1\endstrut}%
\else
- \structureheadparameter\c!numbercommand{#1}%
+ \headparameter\c!numbercommand{#1}%
\fi
\endgroup}
@@ -116,74 +116,74 @@
\let\currentstructurereferenceattribute\attributeunsetvalue
-\def\structureheadreferenceattributes
+\def\headreferenceattributes
{\iflocation
attr \destinationattribute \currentstructureattribute
attr \referenceattribute \currentstructurereferenceattribute
% attr \internalattribute \nextinternalreference
\fi}
-\def\setinlinestructureheadreferenceattributes
- {\ifconditional\structureheadisdisplay \else \iflocation
+\def\setinlineheadreferenceattributes
+ {\ifconditional\headisdisplay \else \iflocation
\attribute\destinationattribute\currentstructureattribute
\attribute\referenceattribute \currentstructurereferenceattribute
% \attribute\internalattribute \nextinternalreference
\fi \fi}
-\def\docheckstructureheadreference
- {\edef\currentstructureheadinteraction{\structureheadparameter\c!interaction}%
- \ifx\currentstructureheadinteraction\v!list
+\def\docheckheadreference
+ {\edef\currentheadinteraction{\headparameter\c!interaction}%
+ \ifx\currentheadinteraction\v!list
% setuphead[<section>][interaction=list,...]
\dogetsimplepagereference{bck:\nextinternalreference}%
\let\currentstructurereferenceattribute\currentreferenceattribute
- \else\ifx\currentstructureheadinteraction\v!reference
+ \else\ifx\currentheadinteraction\v!reference
% setuphead[<section>][interaction=reference,...] start<section>[backreference=abc,...]
- \edef\currentstructureheadbackreference{\structurevariable{references.backreference}}%
- \ifx\currentstructureheadbackreference\empty \else
- \dogetsimplepagereference\currentstructureheadbackreference
+ \edef\currentheadbackreference{\structurevariable{references.backreference}}%
+ \ifx\currentheadbackreference\empty \else
+ \dogetsimplepagereference\currentheadbackreference
\let\currentstructurereferenceattribute\currentreferenceattribute
\fi
\else
% maybe auto: backreference when given, else list
\fi\fi}
-\unexpanded\def\placestructureheadtext
+\unexpanded\def\placeheadtext
{\beginheadplacement
- \setstructureheadmarking
+ \setheadmarking
\doresettructureheadnumbercontent
- \ifconditional\structureheadleaveempty
- \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes to \zeropoint{}%
+ \ifconditional\headleaveempty
+ \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes to \zeropoint{}%
\makestrutofbox\sectionheadbox
\else
- \docheckstructureheadreference
- \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes
- {\dosetlocalgridsnapping{\structureheadparameter\c!internalgrid}%
+ \docheckheadreference
+ \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes
+ {\dosetlocalgridsnapping{\headparameter\c!internalgrid}%
\doresettructureheadnumbercontent
- \dosetfontattribute{\??nh\currentstructurehead}\c!style % but we don't want color to influence user command, todo: get the if-else out of it
- \setinlinestructureheadreferenceattributes
- \structureheadparameter\c!command{}{\doplaceheadtextcomponent\getstructureheadtitle}}%
+ \dosetfontattribute{\??nh\currenthead}\c!style % but we don't want color to influence user command, todo: get the if-else out of it
+ \setinlineheadreferenceattributes
+ \headparameter\c!command{}{\doplaceheadtextcomponent\getheadtitle}}%
\fi
- \endheadplacement{\getstructureheadsyncs}}
+ \endheadplacement{\getheadsyncs}}
-\unexpanded\def\placestructureheadnumbertext
+\unexpanded\def\placeheadnumbertext
{\beginheadplacement
- \setstructureheadmarking
- \doiftextelse{\getstructureheadnumber}\dosettructureheadnumbercontent\doresettructureheadnumbercontent
- \ifconditional\structureheadleaveempty
- \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes to \zeropoint{}%
+ \setheadmarking
+ \doiftextelse{\getheadnumber}\dosettructureheadnumbercontent\doresettructureheadnumbercontent
+ \ifconditional\headleaveempty
+ \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes to \zeropoint{}%
\makestrutofbox\sectionheadbox
\else % = needed
- \docheckstructureheadreference
- \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \structureheadreferenceattributes
- {\dosetlocalgridsnapping{\structureheadparameter\c!internalgrid}%
- \dosetfontattribute{\??nh\currentstructurehead}\c!style
- \setinlinestructureheadreferenceattributes
- \structureheadparameter\c!command{\doplaceheadnumbercomponent\getstructureheadnumber}{\doplaceheadtextcomponent\getstructureheadtitle}}%
+ \docheckheadreference
+ \setbox\sectionheadbox\ifvertical\vbox\else\hbox\fi \headreferenceattributes
+ {\dosetlocalgridsnapping{\headparameter\c!internalgrid}%
+ \dosetfontattribute{\??nh\currenthead}\c!style
+ \setinlineheadreferenceattributes
+ \headparameter\c!command{\doplaceheadnumbercomponent\getheadnumber}{\doplaceheadtextcomponent\getheadtitle}}%
\fi
- \endheadplacement{\getstructureheadsyncs}}
+ \endheadplacement{\getheadsyncs}}
-\unexpanded\def\placestructureheadempty
- {\hbox \structureheadreferenceattributes {\getstructureheadsyncs}}
+\unexpanded\def\placeheadempty
+ {\hbox \headreferenceattributes {\getheadsyncs}}
%D \starttyping
%D \def\StretchedBox#1%
@@ -205,14 +205,14 @@
\def\dolocalheadsetup % koppeling met standaard kopcommando / engels
{\forgetall % traag dus ...
- \doifsomething{\structureheadparameter\c!align } {\normalexpanded{\noexpand\setupalign [\structureheadparameter\c!align ]}}%
- \doifsomething{\structureheadparameter\c!tolerance} {\normalexpanded{\noexpand\setuptolerance[\structureheadparameter\c!tolerance]}}%
- \doif {\structureheadparameter\c!strut }\v!no{\setnostrut}% new
+ \doifsomething{\headparameter\c!align } {\normalexpanded{\noexpand\setupalign [\headparameter\c!align ]}}%
+ \doifsomething{\headparameter\c!tolerance} {\normalexpanded{\noexpand\setuptolerance[\headparameter\c!tolerance]}}%
+ \doif {\headparameter\c!strut }\v!no{\setnostrut}% new
\def\\{\crlf\strut\ignorespaces}}
\def\beginheadplacement
{\bgroup
- \setsystemmode\currentstructurehead
+ \setsystemmode\currenthead
\xdef\localheadheight {\the\strutht}%
\xdef\localheaddepth {\the\strutdp}%
\xdef\localheadlineheight{\the\lineheight}%
@@ -220,7 +220,7 @@
\everypar\emptytoks % needed indeed
\noindent % ipv \whitespace elders, na \forgetall !
\bgroup
- \doifinsetelse{\structureheadparameter\c!aligntitle}{\v!yes,\v!float}% new
+ \doifinsetelse{\headparameter\c!aligntitle}{\v!yes,\v!float}% new
{\skip0 1\leftskip
\skip2 1\rightskip
\xdef\localheadskip{\the\skip0}%
@@ -234,7 +234,7 @@
\dontcomplain
\postponenotes
\iflocation
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
\else
% obsolete: \noninterferingmarks
\fi
@@ -282,10 +282,10 @@
\def\endheadplacement#1%
{\noflines\zerocount
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
% new (todo tight == one following line up)
\processaction
- [\structureheadparameter\c!hang]
+ [\headparameter\c!hang]
[ \v!line=>\hangheadplacement\noflines\zerocount,
\v!broad=>\hangheadplacement\getnoflines\scratchdimen,
\v!fit=>\hangheadplacement\getrawnoflines\scratchdimen,
@@ -297,21 +297,21 @@
% kind of special, we want to snap heads also according to local specs local
\ifgridsnapping
\begingroup
- \edef\currentstructureheadgridsnapping{\structureheadparameter\c!grid}%
- \ifconditional\structureheadisdisplay
- \ifx\currentstructureheadgridsnapping\empty\else
- \dosetstructureheadattributes\c!style\c!color
+ \edef\currentheadgridsnapping{\headparameter\c!grid}%
+ \ifconditional\headisdisplay
+ \ifx\currentheadgridsnapping\empty\else
+ \dosetheadattributes\c!style\c!color
\setupinterlinespace
- \dosetstructureheadattributes\c!textstyle\c!textcolor
+ \dosetheadattributes\c!textstyle\c!textcolor
\setupinterlinespace
\fi
\fi
- \snaptogrid[\currentstructureheadgridsnapping]\hbox
- {\hskip\localheadskip\hskip\structureheadparameter\c!margin\box\sectionheadbox}%
+ \snaptogrid[\currentheadgridsnapping]\hbox
+ {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}%
\endgroup
\else
\hbox
- {\hskip\localheadskip\hskip\structureheadparameter\c!margin\box\sectionheadbox}%
+ {\hskip\localheadskip\hskip\headparameter\c!margin\box\sectionheadbox}%
\fi
\flushnotes % new, not really needed
\endgraf
@@ -330,9 +330,9 @@
\globallet\headlastlinewidth\!!zeropoint
#1%
\hskip\numberheaddistance\!!plus\numberheaddistance\!!minus.25\dimexpr\numberheaddistance\relax
- \hskip\continuousstructureheadsignal\ignorespaces
+ \hskip\continuousheadsignal\ignorespaces
\fi
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
\ifvmode
\ifgridsnapping % important, font related depth, see comment
\prevdepth\strutdp
@@ -343,8 +343,8 @@
\fi
\egroup
\egroup
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
- \checknextindentation[\structureheadparameter\c!indentnext]%
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
+ \checknextindentation[\headparameter\c!indentnext]%
\else
\nonoindentation % recently added, was a bug
\fi}
@@ -373,7 +373,7 @@
\setvalue{\??ns::#1}}
\def\presetnumberheadalternative
- {\doifelsevalue{\??ns:\numberheadalternative}\v!horizontal\setfalse\settrue\structureheadisdisplay}
+ {\doifelsevalue{\??ns:\numberheadalternative}\v!horizontal\setfalse\settrue\headisdisplay}
\def\normalplacehead
{\csname\??ns::\ifcsname\??ns::\numberheadalternative\endcsname\numberheadalternative\else\v!normal\fi\endcsname}
@@ -382,7 +382,7 @@
{\vbox
{\localheadsetup
\begstrut
- \ifconditional\structureheadshownumber % \ifheadnumbercontent
+ \ifconditional\headshownumber % \ifheadnumbercontent
#1\hskip\numberheaddistance
\fi
#2}}
@@ -397,10 +397,10 @@
\defineheadplacement[\v!normal][\v!vertical]#1#2%
{\vbox
{\localheadsetup
- \edef\headwidth {\structureheadparameter\c!width }%
- \edef\headnumberwidth{\structureheadparameter\c!numberwidth}%
- \edef\headtextwidth {\structureheadparameter\c!textwidth }%
- \ifconditional\structureheadshownumber
+ \edef\headwidth {\headparameter\c!width }%
+ \edef\headnumberwidth{\headparameter\c!numberwidth}%
+ \edef\headtextwidth {\headparameter\c!textwidth }%
+ \ifconditional\headshownumber
\ifx\headwidth\empty
\else
\ifx\headnumberwidth\empty
@@ -444,7 +444,7 @@
{\localheadsetup
\begstrut % use one \strut here!
\dontleavehmode % in case there is no strut, else side effects with llap
- \ifconditional\structureheadshownumber
+ \ifconditional\headshownumber
\llap{\hbox{\hfill{#1}\hskip\localheadskip\hskip\leftmargindistance}}% introduces whitespace
% maybe better:
% \inleftmargin{\hbox{\hss{#1}\hskip\localheadskip}}%
@@ -460,7 +460,7 @@
\veryraggedcenter
\let\\\endgraf
\let\crlf\endgraf
- \ifconditional\structureheadshownumber
+ \ifconditional\headshownumber
\strut#1\par
\fi
\begstrut#2}}
@@ -468,14 +468,14 @@
\defineheadplacement[\v!text][\v!horizontal]#1#2%
{\bgroup
\localheadsetup % no stretch in distance
- \ifconditional\structureheadshownumber
+ \ifconditional\headshownumber
{#1}\kern\numberheaddistance
\fi
{\begstrut#2}%
\egroup}
\unexpanded\def\placeheadlohi#1#2#3%
- {\ifconditional\structureheadshownumber
+ {\ifconditional\headshownumber
\setbox0\hbox{#2}
\setbox2=#1{\localheadsetup\advance\hsize-\wd0\relax#3}%
\hbox{\box0\hskip\numberheaddistance\box2}%
@@ -495,7 +495,7 @@
%
% \defineheadplacement[MyTest][horizontal]#1#2%
% {\startlocalheadsetup
-% %\ChapterInMargin{\structureheadhbox{\strut#2}}% proper destination, ref okay
+% %\ChapterInMargin{\headhbox{\strut#2}}% proper destination, ref okay
% \ChapterInMargin{\strut#2}% zero destination, ref okay
% \stoplocalheadsetup}
%
@@ -503,8 +503,8 @@
% [chapter]
% [alternative=MyTest]
-\unexpanded\def\structureheadhbox{\hbox\structureheadreferenceattributes}
-\unexpanded\def\structureheadvbox{\vbox\structureheadreferenceattributes}
+\unexpanded\def\headhbox{\hbox\headreferenceattributes}
+\unexpanded\def\headvbox{\vbox\headreferenceattributes}
\unexpanded\def\startlocalheadsetup{\bgroup\localheadsetup}
\unexpanded\def\stoplocalheadsetup {\egroup}
diff --git a/tex/context/base/strc-sbe.mkiv b/tex/context/base/strc-sbe.mkiv
index e9d8d9c1a..8ab4b9dbd 100644
--- a/tex/context/base/strc-sbe.mkiv
+++ b/tex/context/base/strc-sbe.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Section Block Environments,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -27,84 +27,78 @@
% \chapter{second} \section{alpha} test \section{beta} test \page
% \stopbodymatter % optional
-\definesystemvariable {nb}
+\unexpanded\def\definesectionblock{\dotripleargument\dodefinesectionblock}
+\unexpanded\def\setupsectionblock {\dodoubleargument\dosetupsectionblock}
+\def\setsectionblock {\dosingleargument\dosetsectionblock}
-\def\v!structureblockenvironment{structureblockenvironment}
-
-\unexpanded\def\definestructureblock{\dotripleargument\dodefinestructureblock}
-\unexpanded\def\setupstructureblock {\dodoubleargument\dosetupstructureblock}
-\def\setstructureblock {\dosingleargument\dosetstructureblock}
-
-% \def\structureblockparameter#1{\executeifdefined{\??nb\currentstructureblock#1}\empty}
-
-\def\structureblockparameter#1%
+\def\sectionblockparameter#1%
{\csname
- \ifcsname\??nb\currentstructureblock#1\endcsname\??nb\currentstructureblock#1\else\s!empty\fi
+ \ifcsname\??sb\currentsectionblock#1\endcsname\??sb\currentsectionblock#1\else\s!empty\fi
\endcsname}
-\newtoks \everybeforestructureblock
-\newtoks \everyafterstructureblock
+\newtoks \everybeforesectionblock
+\newtoks \everyaftersectionblock
-\def\dodefinestructureblock[#1][#2][#3]% singular plural settings
+\def\dodefinesectionblock[#1][#2][#3]% singular plural settings
{\getparameters
- [\??nb#1]
+ [\??sb#1]
[\c!number=\v!yes,
\c!page=\v!right, % anders worden marks te vroeg gereset !
#3]%
\expandafter\newif\csname if#2\endcsname % better a mode
- \setstructureblockenvironment{#1}\empty
- \setvalue {\e!start#2}{\startstructureblock[#1]}%
- \setvalue {\e!stop #2}{\stopstructureblock}}
+ \setsectionblockenvironment{#1}\empty
+ \setvalue {\e!start#2}{\startsectionblock[#1]}%
+ \setvalue {\e!stop #2}{\stopsectionblock}}
\ifdefined \resetallstructuremarks \else
\let\resetallstructuremarks\relax
\fi
\appendtoks
- \doifsomething{\structureblockparameter\c!page}{\page[\structureblockparameter\c!page]}%
+ \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}%
\resetallstructuremarks
- \getstructureblockenvironment\currentstructureblock
- \structureblockparameter\c!before % don't move
- \dostarttagged\t!division\currentstructureblock
-\to \everybeforestructureblock
+ \getsectionblockenvironment\currentsectionblock
+ \sectionblockparameter\c!before % don't move
+ \dostarttagged\t!division\currentsectionblock
+\to \everybeforesectionblock
\appendtoks
- \structureblockparameter\c!after % don't move
- \doifsomething{\structureblockparameter\c!page}{\page[\structureblockparameter\c!page]}%
+ \sectionblockparameter\c!after % don't move
+ \doifsomething{\sectionblockparameter\c!page}{\page[\sectionblockparameter\c!page]}%
\dostoptagged
\resetallstructuremarks
-\to \everyafterstructureblock
+\to \everyaftersectionblock
-\def\dosetupstructureblock[#1]%
- {\getparameters[\??nb#1]}% [#2]
+\def\dosetupsectionblock[#1]%
+ {\getparameters[\??sb#1]}% [#2]
-\def\dosetstructureblock[#1]% used to set the default
- {\edef\currentstructureblock{\ctxlua{structures.sections.setblock("#1")}}}
+\def\dosetsectionblock[#1]% used to set the default
+ {\edef\currentsectionblock{\ctxlua{structures.sections.setblock("#1")}}}
-\let\currentstructureblock\s!unknown
+\let\currentsectionblock\s!unknown
-\unexpanded\def\startstructureblock[#1]%
+\unexpanded\def\startsectionblock[#1]%
{%\ctxlua{structures.counters.check(0)}% we assume sane usage of \page, as this is the only workable place (in push)
\begingroup
- \edef\currentstructureblock{\ctxlua{structures.sections.pushblock("#1")}}%
+ \edef\currentsectionblock{\ctxlua{structures.sections.pushblock("#1")}}%
\csname #1true\endcsname % for old times sake
- \setsystemmode\currentstructureblock
- \the\everybeforestructureblock\relax
- \showmessage\m!structures1\currentstructureblock}
-
-\unexpanded\def\stopstructureblock
- {\showmessage\m!structures2\currentstructureblock
- \the\everyafterstructureblock\relax
- \edef\currentstructureblock{\ctxlua{structures.sections.popblock()}}%
+ \setsystemmode\currentsectionblock
+ \the\everybeforesectionblock\relax
+ \showmessage\m!structures1\currentsectionblock}
+
+\unexpanded\def\stopsectionblock
+ {\showmessage\m!structures2\currentsectionblock
+ \the\everyaftersectionblock\relax
+ \edef\currentsectionblock{\ctxlua{structures.sections.popblock()}}%
\endgroup}
-\long\def\setstructureblockenvironment#1#2%
- {\long\setvalue{\??nb\s!do#1}{\do{#2}}}
+\long\def\setsectionblockenvironment#1#2%
+ {\long\setvalue{\??sb\s!do#1}{\do{#2}}}
-\def\getstructureblockenvironment#1%
+\def\getsectionblockenvironment#1%
{\let\do\firstofoneargument
- %\structureblockparameter{\s!do#1}}
- \csname\??nb\s!do#1\endcsname}
+ %\sectionblockparameter{\s!do#1}}
+ \csname\??sb\s!do#1\endcsname}
%D \starttyping
%D \startsectionblockenvironment[frontpart]
@@ -126,13 +120,13 @@
%D \stoptext
%D \stoptyping
-\setvalue{\e!start\v!structureblockenvironment}%
- {\dosingleargument\dostartstructureblockenvironment}
+\setvalue{\e!start\v!sectionblockenvironment}%
+ {\dosingleargument\dostartsectionblockenvironment}
-\def\dostartstructureblockenvironment[#1]% evt \pushendofline \popendofline
- {\long\def\do##1##2{\setstructureblockenvironment{#1}{##1##2}}%
- %\grabuntil{\e!stop\v!structureblockenvironment}{\structureblockparameter{\s!do#1}}}
- \grabuntil{\e!stop\v!structureblockenvironment}{\csname\??nb\s!do#1\endcsname}}
+\def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline
+ {\long\def\do##1##2{\setsectionblockenvironment{#1}{##1##2}}%
+ %\grabuntil{\e!stop\v!sectionblockenvironment}{\sectionblockparameter{\s!do#1}}}
+ \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??sb\s!do#1\endcsname}}
% this will become: (we ran in parallel for a while during transition)
@@ -140,8 +134,8 @@
{\dosingleargument\dostartsectionblockenvironment}
\def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline
- {\long\def\do##1##2{\setstructureblockenvironment{#1}{##1##2}}%
- %\grabuntil{\e!stop\v!sectionblockenvironment}{\structureblockparameter{\s!do#1}}}
- \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??nb\s!do#1\endcsname}}
+ {\long\def\do##1##2{\setsectionblockenvironment{#1}{##1##2}}%
+ %\grabuntil{\e!stop\v!sectionblockenvironment}{\sectionblockparameter{\s!do#1}}}
+ \grabuntil{\e!stop\v!sectionblockenvironment}{\csname\??sb\s!do#1\endcsname}}
\protect \endinput
diff --git a/tex/context/base/strc-sec.mkii b/tex/context/base/strc-sec.mkii
index 0698ef93c..01ca71ead 100644
--- a/tex/context/base/strc-sec.mkii
+++ b/tex/context/base/strc-sec.mkii
@@ -5,7 +5,7 @@
%D subtitle=Sectioning,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv
index 6cb6f84c1..c64d379ea 100644
--- a/tex/context/base/strc-sec.mkiv
+++ b/tex/context/base/strc-sec.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Sectioning,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -50,102 +50,134 @@
\def\getsomestructurenumber #1#2{\ctxlua{structures.sections.getnumber(#1,"#2")}} % level, what
\def\getfullstructurenumber #1{\ctxlua{structures.sections.fullnumber(#1)}} % level
\def\getsomefullstructurenumber#1#2{\ctxlua{structures.sections.fullnumber(#1,"#2")}}
-\def\getspecificstructuretitle #1{\ctxlua{structures.sections.structuredata(#1,"titledata.title",nil,"\structureheadparameter\s!catcodes")}}%
+\def\getspecificstructuretitle #1{\ctxlua{structures.sections.structuredata(#1,"titledata.title",nil,"\headparameter\s!catcodes")}}%
-% interface
+% structure heads (like \startchapter)
-\def\structureheadparameter #1{\csname\dostructureheadparameter{\??nh\currentstructurehead}{#1}\endcsname}
-\def\structureheadparameterhash #1{\dostructureheadparameterhash {\??nh\currentstructurehead}{#1}}
-\def\namedstructureheadparameter#1#2{\csname\dostructureheadparameter{\??nh#1}{#2}\endcsname}
+% \c!deeptextcommand, \c!deepnumbercommand: undefined !
+% \c!before \c!after \c!distance
+% \c!page \c!header \c!text \c!footer=,
+% \c!numbercommand \c!textcommand \c!ownnumber \c!number
+% \c!file \c!grid \c!margintext
+% \c!expansion \c!xmlsetup \s!catcode
-\def\dostructureheadparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dostructureheadparentparameter \csname#1\s!parent\endcsname{#2}\fi}
-\def\dostructureheadparameterhash#1#2{\ifcsname#1#2\endcsname #1\else\expandafter\dostructureheadparentparameterhash\csname#1\s!parent\endcsname{#2}\fi}
+\installcommandhandler \??nh {head} \??nh
-\def\dostructureheadparentparameter #1#2{\ifx#1\relax\s!empty\else\dostructureheadparameter #1{#2}\fi}
-\def\dostructureheadparentparameterhash#1#2{\ifx#1\relax \else\dostructureheadparameterhash#1{#2}\fi}
+\def\headparameterstrict#1{\csname\ifcsname\??nh\currenthead#1\endcsname\??nh\currenthead#1\else\s!empty\fi\endcsname}
-\def\structureheadparameterstrict#1{\csname\ifcsname\??nh\currentstructurehead#1\endcsname\??nh\currentstructurehead#1\else\s!empty\fi\endcsname}
+\let\setupheads\setuphead % will go
-\def\dosetstructureheadattributes#1#2% style color
- {\edef\fontattributehash {\structureheadparameterhash#1}%
- \edef\colorattributehash{\structureheadparameterhash#2}%
- \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash #1\fi
- \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash#2\fi}
+\newif\ifsectionnumber % maybe conditional
+
+\appendtoks
+ \doifelse{\headparameter\c!sectionnumber}\v!yes\sectionnumbertrue\sectionnumberfalse
+\to \everysetuphead
+
+\appendtoks
+ \ifx\currentheadparent\empty
+ \edef\currentheaddefault{\headparameter\c!default}%
+ \edef\currentheadsection{\headparameter\c!section}%
+ \ifx\currenthead\currentheaddefault
+ \let\currentheadparent\currentheadsection
+ \else\ifx\currentheaddefault\empty
+ \let\currentheadparent\currentheadsection
+ \else
+ \let\currentheadparent\currentheaddefault
+ \fi\fi
+ \normalexpanded {%
+ \getparameters[\??nh\currenthead][\c!label=\currenthead]%
+ \getparameters[\??nh\currenthead][\s!parent=\??nh\currentheadparent]%
+ \definemarking[\currenthead] [\currentheadsection]%
+ \definemarking[\currenthead\v!number][\currentheadsection]%
+ \setupmarking [\currenthead] [\c!filtercommand=\noexpand\sectionheadmarkingtitle {\currenthead}]%
+ \setupmarking [\currenthead\c!number][\c!filtercommand=\noexpand\sectionheadmarkingnumber{\currenthead}]%
+ }%
+ \doifelselist\currenthead\donothing
+ {\definelist[\currenthead][\c!prefix=\v!no]}%
+ \else
+ \normalexpanded {%
+ \getparameters[\??nh\currenthead][\c!label=\currenthead,\c!coupling=\currentheadparent]%
+ \definemarking[\currenthead] [\currentheadparent]%
+ \definemarking[\currenthead\v!number][\currentheadparent\c!number]%
+ }%
+ \doifelselist\currenthead\donothing
+ {\definelist[\currenthead][\currentheadparent][\c!prefix=\v!no]}%
+ \fi
+ \presetlabeltext[\currenthead=]%
+ \the\everysetuphead
+\to \everydefinehead
+
+\appendtoks
+ \setstructurelevel\currenthead{\thenamedheadlevel\currenthead}%
+\to \everydefinehead
+
+\appendtoks
+ % \setevalue{\e!next \currenthead}{\donexthead [\currenthead]}%
+ \setevalue{\e!start\currenthead}{\dostarthead[\currenthead]}%
+ \setevalue{\e!stop \currenthead}{\dostophead[\currenthead]}%
+\to \everydefinehead
-% so far
+\appendtoks
+ \doifelse{\headparameter\c!ownnumber}\v!yes
+ {\setevalue\currenthead{\dohandleheadown[\currenthead]}}
+ {\setevalue\currenthead{\dohandleheadnop[\currenthead]}}%
+\to \everysetuphead
+
+% structure sections (the parents of chapter etc)
\newcount\maxstructuredepth
-\let\laststructuresectionname\empty
+\let\lastsectionname\empty
\let\resetallstructuremarks \relax
\let\resetcurrentstructuremarks \relax
\let\resetcurrentstructuremarkswithpage\relax
\def\resetallstructuremarks {\resetmarking[\v!section-1]} % will become option
-\def\resetcurrentstructuremarks {\resetmarking[\laststructuresectionname]} % will become option
-%def\resetcurrentstructuremarkswithpage{\resetmarking[\laststructuresectionname]} % will become option
-
-% \c!before=,
-% \c!after=,
-% \c!distance=\zeropoint,
-% \c!page=,
-% \c!header=,
-% \c!text=,
-% \c!footer=,
-% \c!numbercommand=,
-% \c!textcommand=,
-% \c!ownnumber=\v!no,
-% \c!number=\v!yes,
-% \c!file=,
-% \c!expansion=,
-% \c!grid=,
-% \c!margintext=,
-%
-% \c!xmlsetup=,
-% \s!catcodes=,
+\def\resetcurrentstructuremarks {\resetmarking[\lastsectionname]} % will become option
+%def\resetcurrentstructuremarkswithpage{\resetmarking[\lastsectionname]} % will become option
-\newtoks\everydefinestructuresection
+\newtoks\everydefinesection
\appendtoks
% This is a rather practical default that we don't want to
% be part of the parent chain lookup mechanism; it's also
% mkii compatible. Somewhat weird that it's part of the
% top level structure but it will be flattened anyway.
- \getparameters[\??nh\currentstructuresection]
- [ \c!textstyle=\structureheadparameterstrict\c!style,
- \c!textcolor=\structureheadparameterstrict\c!color,
- \c!numberstyle=\structureheadparameterstrict\c!style,
- \c!numbercolor=\structureheadparameterstrict\c!color]%
-\to \everydefinestructuresection
-
-\unexpanded\def\definestructuresection[#1]%
+ \getparameters[\??nh\currentsection]
+ [ \c!textstyle=\headparameterstrict\c!style,
+ \c!textcolor=\headparameterstrict\c!color,
+ \c!numberstyle=\headparameterstrict\c!style,
+ \c!numbercolor=\headparameterstrict\c!color]%
+\to \everydefinesection
+
+\unexpanded\def\definesection[#1]%
{\ifcsname\??nh#1\endcsname
% redefinition is a rather fatal error
\else
- \edef\currentstructuresection{#1}%
+ \edef\currentsection{#1}%
\global\advance\maxstructuredepth\plusone
\setevalue{\??nh#1\c!level}{\the\maxstructuredepth}%
\setstructurelevel{#1}{\the\maxstructuredepth}%
- \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\laststructuresectionname]}%
- \the\everydefinestructuresection
+ \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\lastsectionname]}%
+ \the\everydefinesection
% so far for these default inheritances
\definemarking[#1]%
\ifnum\maxstructuredepth>\plusone
- \normalexpanded{\noexpand\relatemarking[#1][\laststructuresectionname]}% so, the parent will reset the child
+ \normalexpanded{\noexpand\relatemarking[#1][\lastsectionname]}% so, the parent will reset the child
\fi
- \xdef\laststructuresectionname{#1}%
+ \xdef\lastsectionname{#1}%
\fi}
-\unexpanded\def\setupstructuresection
- {\dotripleempty\dosetupstructuresection}
+\unexpanded\def\setupsection
+ {\dotripleempty\dosetupsection}
-\def\dosetupstructuresection[#1]%
+\def\dosetupsection[#1]%
{\doifdefinedelse{\??nh#1}
- {\dodosetupstructuresection[#1]}
- {\dodosetupstructuresection[\structuresectionheadsection{#1}]}}
+ {\dodosetupsection[#1]}
+ {\dodosetupsection[\sectionheadsection{#1}]}}
-\def\dodosetupstructuresection[#1][#2][#3]%
+\def\dodosetupsection[#1][#2][#3]%
{\ifthirdargument
\getparameters[\??nh#1#2][#3]% ? probably sectionblock
\else
@@ -154,307 +186,182 @@
% -2=text -1=manual 0=block 1+=structurelevel
-\def\structuresectionlevel#1%
+\def\sectionlevel#1%
{\executeifdefined{\??nh#1\c!level}{-1}}
\setvalue{\??nh\v!block\c!level}{0}
\setvalue{\??nh\v!none \c!level}{-1}
\setvalue{\??nh\v!text \c!level}{-2}
-% head -> structurehead
-
-\let\currentstructurehead\empty
-\newtoks\everystructureheadsetup
-
-\unexpanded\def\setupstructureheads{\dosingleargument\dosetupstructureheads}
-\unexpanded\def\setupstructurehead {\dodoubleempty\dosetupstructurehead}
-\unexpanded\def\definestructurehead{\dodoubleempty\dodefinestructurehead}
-
-\newif\ifsectionnumber % maybe conditional
-
-\def\dosetupstructureheads[#1]%
- {\getparameters[\??nh][#1]%
- \doifelse{\structureheadparameter\c!sectionnumber}\v!yes\sectionnumbertrue\sectionnumberfalse}
-
-\def\dosetupstructurehead[#1][#2]% we move the test for command being nothing elsewhere (needed, else hard to trace)
- {\processcommalist[#1]{\dodosetupstructurehead{#2}}}
-
-\def\dodosetupstructurehead#1#2%
- {\edef\currentstructurehead{#2}%
- \getparameters[\??nh#2][#1]%
- \the\everystructureheadsetup}
-
-\def\dodefinestructurehead[#1][#2]%
- {\processcommalist[#1]{\dododefinestructurehead{#2}}}
-
-\def\dododefinestructurehead#1#2% #1: parameters|parent, #2: self
- {\doifsomethingelse{#2}
- {\doifassignmentelse{#1}
- \dodefineuniquestructurehead
- {\doifdefinedelse{\??nh#1\s!parent} % just a check
- \dodefineclonedstructurehead
- \dodefineerrorstructurehead}}
- \dodefineerrorstructurehead
- {#2}{#1}}
-
-\def\dodefineerrorstructurehead#1#2%
- {\setvalue{#1}{\par error: #1 is undefined\par}}
-
-% deeptextcommand and deepnumbercommand are left undefined !
-
-\def\dodefineuniquestructurehead#1#2% class, parent
- {\def\currentstructurehead{#1}%
- \presetlabeltext[#1=]%
- \getparameters[\??nh#1][\c!label=#1,#2]%
- \edef\currentstructureheaddefault{\structureheadparameter\c!default}%
- \edef\currentstructureheadsection{\structureheadparameter\c!section}%
- \edef\currentstructureheadparent
- {\ifx\currentstructurehead\currentstructureheaddefault
- \currentstructureheadsection
- \else\ifx\currentstructureheaddefault\empty
- \currentstructureheadsection
- \else
- \currentstructureheaddefault
- \fi\fi}%
- \normalexpanded{\noexpand\getparameters[\??nh#1][\s!parent=\??nh\currentstructureheadparent]}%
- % or just \setevalue{\??nh#1\s!parent}{\??nh\currentstructureheadparent}%
- \definemarking[#1] [\currentstructureheadsection]%
- \definemarking[#1\v!number][\currentstructureheadsection]%
- \setupmarking [#1] [\c!filtercommand=\sectionheadmarkingtitle {#1}]%
- \setupmarking [#1\c!number][\c!filtercommand=\sectionheadmarkingnumber{#1}]%
- \doifundefined{\??li#1}{\definelist[#1][\c!prefix=\v!no]}% definestructurelist ?
- \the\everystructureheadsetup}
+% head -> head
\def\sectionheadmarkingtitle #1#2{\ctxlua{structures.marks.title("#1","#2")}}
\def\sectionheadmarkingnumber#1#2{\ctxlua{structures.marks.number("#1","#2")}}
-\def\dodefineclonedstructurehead#1#2% class parent
- {\def\currentstructurehead{#1}%
- \presetlabeltext[#1=]%
- \doifelse{#1}{#2}
- {\getparameters[\??nh#1][\c!label=#1]%
- \doifundefined{\??li#1}{\definelist[#1][\c!prefix=\v!no]}}% definestructurelist ?
- {\getparameters[\??nh#1][\s!parent=\??nh#2,\c!label=#1,\c!coupling=#2]%
- \definemarking[#1] [#2]%
- \definemarking[#1\v!number][#2\c!number]%
- \doifundefined{\??li#1}{\definelist[#1][#2][\c!prefix=\v!no]}}% definestructurelist ?
- \the\everystructureheadsetup}
-
-\appendtoks
- \setstructurelevel\currentstructurehead{\thenamedstructureheadlevel\currentstructurehead}%
- \doifelse{\structureheadparameter\c!ownnumber}\v!yes
- {\setevalue\currentstructurehead{\dohandlestructureheadown[\currentstructurehead]}}
- {\setevalue\currentstructurehead{\dohandlestructureheadnop[\currentstructurehead]}}%
- \setevalue{\e!next \currentstructurehead}{\donextstructurehead [\currentstructurehead]}%
- \setevalue{\e!start\currentstructurehead}{\dostartstructurehead[\currentstructurehead]}%
- \setevalue{\e!stop \currentstructurehead}{\dostopstructurehead [\currentstructurehead]}%
-\to \everystructureheadsetup
-
% todo, check if section is defined
-\def\structuresectionheadcoupling#1%
+\def\sectionheadcoupling#1%
{\ifcsname\??nh#1\c!coupling\endcsname
- \expandafter\structuresectionheadcoupling\csname\??nh#1\c!coupling\endcsname\else#1%
+ \expandafter\sectionheadcoupling\csname\??nh#1\c!coupling\endcsname\else#1%
\fi}
-\def\structuresectionheadsection#1%
+\def\sectionheadsection#1%
{\ifcsname\??nh#1\c!section\endcsname
- \expandafter\structuresectionheadcoupling\csname\??nh#1\c!section\endcsname\else#1%
+ \expandafter\sectionheadcoupling\csname\??nh#1\c!section\endcsname\else#1%
\fi}
% head construction
-\unexpanded\def\dohandlestructureheadown{\dodoubleempty\dodohandlestructureheadown} % [ref] {nr} {title}
-\unexpanded\def\dohandlestructureheadnop{\dodoubleempty\dodohandlestructureheadnop} % [ref] {title}
-\unexpanded\def\dostartstructurehead {\dotripleempty\dodostartstructurehead} % [settings] [userdata]
+\unexpanded\def\dohandleheadown{\dodoubleempty\dodohandleheadown} % [ref] {nr} {title}
+\unexpanded\def\dohandleheadnop{\dodoubleempty\dodohandleheadnop} % [ref] {title}
+\unexpanded\def\dostarthead {\dotripleempty\dodostarthead} % [settings] [userdata]
\newconditional\currentstructureown
-\newtoks\everybeforestructurehead % hook, todo: before/after keys
-\newtoks\everyafterstructurehead % hook, todo: before/after keys
+\newtoks\everybeforehead % hook, todo: before/after keys
+\newtoks\everyafterhead % hook, todo: before/after keys
-\unexpanded\def\dodohandlestructureheadown[#1][#2]#3#4%
+\unexpanded\def\dodohandleheadown[#1][#2]#3#4%
{\settrue\currentstructureown
- \dohandlestructurehead{#1}{\c!reference={#2},\c!ownnumber={#3},\c!title={#4}}{}} % name ref nr title --
-
-% \unexpanded\def\dodohandlestructureheadnop[#1][#2]#3%
-% {\setfalse\currentstructureown
-% \dohandlestructurehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title --
+ \dohandlehead{#1}{\c!reference={#2},\c!ownnumber={#3},\c!title={#4}}{}} % name ref nr title --
-\unexpanded\def\dodohandlestructureheadnop[#1][#2]% for taco: [key=value] variant
+\unexpanded\def\dodohandleheadnop[#1][#2]% for taco: [key=value] variant
{\setfalse\currentstructureown
- \doifassignmentelse{#2}\dodohandlestructureheadnopA\dodohandlestructureheadnopB{#1}{#2}}
+ \doifassignmentelse{#2}\dodohandleheadnopA\dodohandleheadnopB{#1}{#2}}
-\unexpanded\def\dodohandlestructureheadnopA#1#2%
- {\dohandlestructurehead{#1}{#2}{}}
+\unexpanded\def\dodohandleheadnopA#1#2%
+ {\dohandlehead{#1}{#2}{}}
-\unexpanded\def\dodohandlestructureheadnopB#1#2#3%
- {\dohandlestructurehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title --
+\unexpanded\def\dodohandleheadnopB#1#2#3%
+ {\dohandlehead{#1}{\c!reference={#2},\c!title={#3}}{}} % name ref nr title --
-\unexpanded\def\dodostartstructurehead[#1][#2][#3]% for the moment no grouping, too annoying with page breaks
+\unexpanded\def\dodostarthead[#1][#2][#3]% for the moment no grouping, too annoying with page breaks
{\setfalse\currentstructureown
- %\globalpushmacro\currentstructurehead
- \xdef\currentstructurehead{#1}%
- \structureheadparameter\c!beforesection
- \the\everybeforestructurehead
- \dohandlestructurehead{#1}{#2}{#3}} % name -- -- -- userdata (we might move the tagged to here)
+ %\globalpushmacro\currenthead % this does not work out well
+ \xdef\currenthead{#1}%
+ \headparameter\c!beforesection
+ \the\everybeforehead
+ \dohandlehead{#1}{#2}{#3}} % name -- -- -- userdata (we might move the tagged to here)
-\unexpanded\def\dostopstructurehead[#1]%
+\unexpanded\def\dostophead[#1]%
{\dostoptagged\dostoptagged
- %\globalpopmacro\currentstructurehead
- \xdef\currentstructurehead{#1}% recover
- \structureheadparameter\c!aftersection
- \the\everyafterstructurehead}
+ %\globalpopmacro\currenthead % so we do a hard recover
+ \xdef\currenthead{#1}% recover
+ \headparameter\c!aftersection
+ \the\everyafterhead}
-\unexpanded\def\donextstructurehead[#1][#2][#3]%
+\unexpanded\def\donexthead[#1][#2][#3]% obsolete
{\setfalse\currentstructureown
- \xdef\currentstructurehead{#1}%
- \dohandlestructurehead{#1}{#2}{#3}} % name -- -- -- userdata
+ \xdef\currenthead{#1}%
+ \dohandlehead{#1}{#2}{#3}} % name -- -- -- userdata
% \newconditional\structurereversesectionnumbers % todo: key/val
-\newconditional\structureheadtolist
-\newconditional\structureheaddoincrement
-\newconditional\structureheaddoplace
-\newconditional\structureheadleaveempty
-\newconditional\structureheadhidden
-\newconditional\structureheadshownumber
-\newconditional\structureheadisdisplay
-
-\let\structureheadprefix\empty \def\structureheadprefixplus{+}
-
-% When do we reset the referenceprefix? This needs to be checked. Does it work
-% at all? Todo: pushpop.
-
-% \def\setstructureheadreference
-% {\edef\structureheadreference {\structureheadparameter\c!reference}%
-% \edef\structureheadreferenceprefix{\structureheadparameter\c!prefix}%
-% \ifx\structureheadreferenceprefix\empty
-% \ifx\currentrefenceprefix\structureheadreferenceprefixplus
-% \setupreferenceprefix[]% yes or no? only when set by structure
-% \fi
-% \else\ifx\structureheadreferenceprefix\structureheadreferenceprefixplus
-% \ifx\structureheadreference\empty
-% \expanded{\setupreferenceprefix[\structureheadreferenceprefixplus]}%
-% \else
-% \expanded{\setupreferenceprefix[\structureheadreference]}% we assume just one reference
-% \fi
-% \else
-% \expanded{\setupreferenceprefix[\structureheadreferenceprefix]}%
-% \fi\fi}
-
-% pop in stopsection commands unless empty
-
-\def\setstructureheadreference
- {\edef\structureheadreference {\structureheadparameter\c!reference}%
- \edef\structureheadreferenceprefix{\structureheadparameter\c!prefix}%
- \ifx\structureheadreferenceprefix\empty
- \let\structureheadreferenceprefix\referenceprefix
+\newconditional\headtolist
+\newconditional\headdoincrement
+\newconditional\headdoplace
+\newconditional\headleaveempty
+\newconditional\headhidden
+\newconditional\headshownumber
+\newconditional\headisdisplay
+
+\let\headprefix\empty \def\headprefixplus{+}
+
+\def\setheadreference
+ {\edef\headreference {\headparameter\c!reference}%
+ \edef\headreferenceprefix{\headparameter\c!prefix}%
+ \ifx\headreferenceprefix\empty
+ \let\headreferenceprefix\referenceprefix
\else
- \setupreferenceprefix[\structureheadreferenceprefix]% currenty no pop
+ \setupreferenceprefix[\headreferenceprefix]% currenty no pop
\fi}
-\setvalue{\??nh:\c!incrementnumber:\v!yes }{\settrue \structureheaddoincrement\settrue \structureheadtolist}
-\setvalue{\??nh:\c!incrementnumber:\v!no }{\setfalse\structureheaddoincrement\setfalse\structureheadtolist}
-\setvalue{\??nh:\c!incrementnumber:\v!list }{\setfalse\structureheaddoincrement\settrue \structureheadtolist}
-\setvalue{\??nh:\c!incrementnumber:\s!empty}{\settrue \structureheaddoincrement\settrue \structureheadtolist}
+\setvalue{\??nh:\c!incrementnumber:\v!yes }{\settrue \headdoincrement\settrue \headtolist}
+\setvalue{\??nh:\c!incrementnumber:\v!no }{\setfalse\headdoincrement\setfalse\headtolist}
+\setvalue{\??nh:\c!incrementnumber:\v!list }{\setfalse\headdoincrement\settrue \headtolist}
+\setvalue{\??nh:\c!incrementnumber:\s!empty}{\settrue \headdoincrement\settrue \headtolist}
-\def\setstructureheadincrement
- {\edef\currentstructureheadincrement{\structureheadparameter\c!incrementnumber}%
- \ifcsname\??nh:\c!incrementnumber:\currentstructureheadincrement\endcsname
- \csname\??nh:\c!incrementnumber:\currentstructureheadincrement\endcsname
+\def\setheadincrement
+ {\edef\currentheadincrement{\headparameter\c!incrementnumber}%
+ \ifcsname\??nh:\c!incrementnumber:\currentheadincrement\endcsname
+ \csname\??nh:\c!incrementnumber:\currentheadincrement\endcsname
\else
- \settrue \structureheaddoincrement\settrue \structureheadtolist
- % \filterstructureheadnumber
+ \settrue \headdoincrement\settrue \headtolist
+ % \filterheadnumber
\fi}
-\def\filterstructureheadnumber
- {\settrue\structureheaddoincrement
- \settrue\structureheadtolist
+\def\filterheadnumber
+ {\settrue\headdoincrement
+ \settrue\headtolist
\ifx\currentproduct\empty
% todo : filter from other toc (number, file, title)
- % use : \currentstructureheadincrement as spec
+ % use : \currentheadincrement as spec
\fi}
-% \def\setstructureheadplacement
-% {\setfalse\structureheadleaveempty
-% \settrue \structureheaddoplace
-% \setfalse\structureheadhidden
-% \processaction
-% [\structureheadparameter\c!placehead]
-% [ \v!yes=>,
-% \v!empty=>\settrue\structureheadleaveempty,
-% \v!no=>\settrue\structureheadleaveempty\setfalse\structureheaddoplace,
-% \v!hidden=>\settrue\structureheadleaveempty\setfalse\structureheaddoplace\settrue\structureheadhidden]}
-
\setvalue{\??nh:\c!placehead:\v!yes}%
- {\setfalse\structureheadleaveempty
- \settrue \structureheaddoplace
- \setfalse\structureheadhidden}
+ {\setfalse\headleaveempty
+ \settrue \headdoplace
+ \setfalse\headhidden}
\setvalue{\??nh:\c!placehead:\v!empty}%
- {\settrue \structureheadleaveempty
- \settrue \structureheaddoplace
- \setfalse\structureheadhidden}
+ {\settrue \headleaveempty
+ \settrue \headdoplace
+ \setfalse\headhidden}
\setvalue{\??nh:\c!placehead:\v!no}%
- {\settrue \structureheadleaveempty
- \setfalse\structureheaddoplace
- \setfalse\structureheadhidden}
+ {\settrue \headleaveempty
+ \setfalse\headdoplace
+ \setfalse\headhidden}
\setvalue{\??nh:\c!placehead:\v!hidden}%
- {\settrue \structureheadleaveempty
- \setfalse\structureheaddoplace
- \settrue \structureheadhidden}
+ {\settrue \headleaveempty
+ \setfalse\headdoplace
+ \settrue \headhidden}
-\def\setstructureheadplacement
+\def\setheadplacement
{\executeifdefined
- {\??nh:\c!placehead:\structureheadparameter\c!placehead}
+ {\??nh:\c!placehead:\headparameter\c!placehead}
{\getvalue{\??nh:\c!placehead:\v!yes}}}
-\def\setstructureheaddisplay
- {\doifelsevalue{\??nh:\structureheadparameter\c!alternative}\v!horizontal
- {\setfalse\structureheadisdisplay}
- {\settrue \structureheadisdisplay}}
+\def\setheaddisplay
+ {\doifelsevalue{\??nh:\headparameter\c!alternative}\v!horizontal
+ {\setfalse\headisdisplay}
+ {\settrue \headisdisplay}}
\def\dosettructureheadnumbercontent
{\setsystemmode \v!sectionnumber
- \settrue\structureheadshownumber}
+ \settrue\headshownumber}
\def\doresettructureheadnumbercontent
{\resetsystemmode\v!sectionnumber
- \setfalse\structureheadshownumber}
+ \setfalse\headshownumber}
-\def\setstructureheadnumber
+\def\setheadnumber
{\ifsectionnumber
- \doifelse{\structureblockparameter\c!number}\v!yes % todo
- {\doifelse{\structureheadparameter\c!number}\v!yes
- {\settrue\structureheadshownumber}
- {\setfalse\structureheadshownumber}}
- {\setfalse\structureheadshownumber}%
+ \doifelse{\sectionblockparameter\c!number}\v!yes % todo
+ {\doifelse{\headparameter\c!number}\v!yes
+ {\settrue\headshownumber}
+ {\setfalse\headshownumber}}
+ {\setfalse\headshownumber}%
\else
- \setfalse\structureheadshownumber
+ \setfalse\headshownumber
\fi}
-\unexpanded\def\thestructureheadsynchonization
- {\pagetype[\currentstructureheadcoupling]% hm also number
+\unexpanded\def\theheadsynchonization
+ {\pagetype[\currentheadcoupling]% hm also number
\currentstructuresynchronize}
-\unexpanded\def\setstructureheadmarking
- {\normalexpanded{\noexpand\setmarking[\currentstructurehead]{\currentstructurelistnumber}}}
-
-% \unexpanded\def\fullstructureheadnumber{\labeltexts{\structureheadparameter\c!label}{\structurenumber}} % todo
-% \def\fullstructureheadtitle {\structurevariable{titledata.title}} % no catcode!
-% \unexpanded\def\fullstructureheadtitle{\structureautocatcodedget{titledata.title}{\structureheadparameter\s!catcodes}}
+\unexpanded\def\setheadmarking
+ {\normalexpanded{\noexpand\setmarking[\currenthead]{\currentstructurelistnumber}}}
\let\deepstructurenumbercommand\relax
\let\deepstructuretitlecommand \relax
-\unexpanded\def\fullstructureheadnumber
- {\edef\currentstructureheadlabeltag{\currentstructureblock\c!label}%
+\unexpanded\def\fullheadnumber
+ {\edef\currentheadlabeltag{\currentsectionblock\c!label}%
\dostarttagged\t!sectionnumber\empty
\labeltexts
- {\structureheadparameter\currentstructureheadlabeltag}
+ {\headparameter\currentheadlabeltag}
{\ifx\deepstructurenumbercommand\relax
\structurenumber
\else
@@ -462,7 +369,7 @@
\fi}%
\dostoptagged}
-\unexpanded\def\fullstructureheadtitle
+\unexpanded\def\fullheadtitle
{\dostarttagged\t!sectiontitle\empty
\ifx\deepstructuretitlecommand\relax
\structuretitle
@@ -471,39 +378,39 @@
\fi
\dostoptagged}
-\let\currentstructurehead \empty
-\let\currentstructureheadcoupling\empty
-\let\currentstructureheadsection \empty
-\let\currentstructureheadlevel \!!zerocount
-\let\currentstructureheadcounter \!!zerocount
+\let\currenthead \empty
+\let\currentheadcoupling\empty
+\let\currentheadsection \empty
+\let\currentheadlevel \!!zerocount
+\let\currentheadcounter \!!zerocount
% here we could inherit as well but it's a bit complex
-\def\doregisterstructurehead#1#2#3% name data userdata
+\def\doregisterhead#1#2#3% name data userdata
{\structurecomponent
- %[\c!label={\structureheadparameter\c!label}, % why { }
- [\c!label={\structureheadparameter{\currentstructureblock\c!label}},
- \c!incrementnumber=\ifconditional\structureheaddoincrement\v!yes\else\v!no\fi, % not that needed
- \c!saveinlist=\ifconditional\structureheadtolist\v!yes\else\v!no\fi,
- \c!level=\currentstructureheadlevel,
+ %[\c!label={\headparameter\c!label}, % why { }
+ [\c!label={\headparameter{\currentsectionblock\c!label}},
+ \c!incrementnumber=\ifconditional\headdoincrement\v!yes\else\v!no\fi, % not that needed
+ \c!saveinlist=\ifconditional\headtolist\v!yes\else\v!no\fi,
+ \c!level=\currentheadlevel,
\c!name=#1,
- \c!number=\ifconditional\structureheaddoincrement\ifconditional\structureheadshownumber\v!yes\else\v!no\fi\else\v!no\fi,
+ \c!number=\ifconditional\headdoincrement\ifconditional\headshownumber\v!yes\else\v!no\fi\else\v!no\fi,
\c!bookmark=,
\c!marking=,
\c!list=,
- \c!expansion=\structureheadparameter\c!expansion,
- \c!xmlsetup=\structureheadparameter\c!xmlsetup,
- \s!catcodes=\structureheadparameter\s!catcodes,
- \c!sectionresetset=\structureheadparameter\c!sectionresetset,
- \c!sectionseparatorset=\structureheadparameter\c!sectionseparatorset,
- \c!sectionconversionset=\structureheadparameter\c!sectionconversionset,
- \c!sectionconversion=\structureheadparameter\c!conversion, % just for compatibility
- \c!sectionstarter=\structureheadparameter\c!sectionstarter,
- \c!sectionstopper=\structureheadparameter\c!sectionstopper,
- \c!sectionset=\structureheadparameter\c!sectionset,
- \c!sectionsegments=\structureheadparameter\c!sectionsegments,
- \c!reference=\structureheadreference,
- \c!referenceprefix=\structureheadreferenceprefix,
+ \c!expansion=\headparameter\c!expansion,
+ \c!xmlsetup=\headparameter\c!xmlsetup,
+ \s!catcodes=\headparameter\s!catcodes,
+ \c!sectionresetset=\headparameter\c!sectionresetset,
+ \c!sectionseparatorset=\headparameter\c!sectionseparatorset,
+ \c!sectionconversionset=\headparameter\c!sectionconversionset,
+ \c!sectionconversion=\headparameter\c!conversion, % just for compatibility
+ \c!sectionstarter=\headparameter\c!sectionstarter,
+ \c!sectionstopper=\headparameter\c!sectionstopper,
+ \c!sectionset=\headparameter\c!sectionset,
+ \c!sectionsegments=\headparameter\c!sectionsegments,
+ \c!reference=\headreference,
+ \c!referenceprefix=\headreferenceprefix,
\c!backreference=,
\c!command=,
#2]%
@@ -517,8 +424,8 @@
\unexpanded\def\setupheadcomponentfont#1#2%
{\dontconvertfont
- \dosetstructureheadattributes\c!style\c!color
- \dosetstructureheadattributes#1#2%
+ \dosetheadattributes\c!style\c!color
+ \dosetheadattributes#1#2%
\setupinterlinespace}
\fi
@@ -526,37 +433,37 @@
\def\doplaceheadtext[#1]%
{\dontleavehmode
\begingroup
- \edef\currentstructurehead{#1}%
+ \edef\currenthead{#1}%
\setupheadcomponentfont\c!textstyle\c!textcolor
\relax
- \getspecificstructuretitle{\thenamedstructureheadlevel{#1}}%
+ \getspecificstructuretitle{\thenamedheadlevel{#1}}%
\endgraf
\endgroup}
\def\doplaceheadnumber[#1]%
{\dontleavehmode
\begingroup
- \edef\currentstructurehead{#1}%
+ \edef\currenthead{#1}%
\setupheadcomponentfont\c!numberstyle\c!numbercolor
\relax
- \getfullstructurenumber{\thenamedstructureheadlevel{#1}}%
+ \getfullstructurenumber{\thenamedheadlevel{#1}}%
\endgraf
\endgroup}
\ifdefined \else \let\presetnumberheadalternative\relax \fi
-\def\dohandlestructurehead#1#2#3% name data userdata (we can move #1 to the caller)
- {\xdef\currentstructurehead {#1}%
- \xdef\currentstructureheadcoupling{\structuresectionheadcoupling\currentstructurehead}%
- \xdef\currentstructureheadsection {\structuresectionheadsection \currentstructureheadcoupling}%
- \xdef\currentstructureheadlevel {\structuresectionlevel \currentstructureheadsection}%
- %writestatus\m!system{setup: \currentstructurehead,\currentstructureheadcoupling,\currentstructureheadsection,\currentstructureheadlevel}%
+\def\dohandlehead#1#2#3% name data userdata (we can move #1 to the caller)
+ {\xdef\currenthead {#1}%
+ \xdef\currentheadcoupling{\sectionheadcoupling\currenthead}%
+ \xdef\currentheadsection {\sectionheadsection \currentheadcoupling}%
+ \xdef\currentheadlevel {\sectionlevel \currentheadsection}%
+ %writestatus\m!system{setup: \currenthead,\currentheadcoupling,\currentheadsection,\currentheadlevel}%
%
- \setstructureheadreference % does not do much currently
- \setstructureheadincrement
- \setstructureheadplacement
- \setstructureheaddisplay
- \setstructureheadnumber
+ \setheadreference % does not do much currently
+ \setheadincrement
+ \setheadplacement
+ \setheaddisplay
+ \setheadnumber
%
\unexpanded\def\\{\space}%
\flushingcolumnfloatsfalse
@@ -565,69 +472,69 @@
%
% we might remove the lower level
%
- % not here, after optional \page: \doregisterstructurehead\currentstructurehead{#2}{#3}%
+ % not here, after optional \page: \doregisterhead\currenthead{#2}{#3}%
%
-% \xdef\currentstructureheadcounter{\currentstructurecounter}% lua call
+% \xdef\currentheadcounter{\currentstructurecounter}% lua call
%
% \currentstructuresynchronize % will move
%
- \edef\numberheaddistance {\structureheadparameter\c!distance }% compatibility
- \edef\numberheadalternative{\structureheadparameter\c!alternative}% compatibility
+ \edef\numberheaddistance {\headparameter\c!distance }% compatibility
+ \edef\numberheadalternative{\headparameter\c!alternative}% compatibility
\presetnumberheadalternative
%
- \let\getstructureheadnumber\empty
- \let\getstructureheadtitle \empty
- \let\getstructureheadsyncs \empty
- \ifconditional\structureheaddoincrement
- \ifconditional\structureheaddoplace
- \dostructureheadspacingbeforeyes
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \let\getstructureheadtitle\fullstructureheadtitle
- \ifconditional\structureheadshownumber
- \let\getstructureheadnumber\fullstructureheadnumber
- \placestructureheadnumbertext
+ \let\getheadnumber\empty
+ \let\getheadtitle \empty
+ \let\getheadsyncs \empty
+ \ifconditional\headdoincrement
+ \ifconditional\headdoplace
+ \doheadspacingbeforeyes
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \let\getheadtitle\fullheadtitle
+ \ifconditional\headshownumber
+ \let\getheadnumber\fullheadnumber
+ \placeheadnumbertext
\else
- \placestructureheadtext
+ \placeheadtext
\fi
- \dostructureheadspacingafteryes
- \else\ifconditional\structureheadhidden
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \placestructureheadhidden % only something when tracing
+ \doheadspacingafteryes
+ \else\ifconditional\headhidden
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \placeheadhidden % only something when tracing
\else
- \dostructureheadspacingbeforenop % toegevoegd ivm subpaginanr / tug sheets
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \placestructureheadempty % just flush 'm
- \dostructureheadspacingafternop
+ \doheadspacingbeforenop % toegevoegd ivm subpaginanr / tug sheets
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \placeheadempty % just flush 'm
+ \doheadspacingafternop
\fi\fi
\else
- \ifconditional\structureheaddoplace
- \dostructureheadspacingbeforeyes
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \let\getstructureheadtitle\fullstructureheadtitle
- \placestructureheadtext
- \dostructureheadspacingafteryes
- \else\ifconditional\structureheadhidden
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \placestructureheadhidden % only something when tracing
+ \ifconditional\headdoplace
+ \doheadspacingbeforeyes
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \let\getheadtitle\fullheadtitle
+ \placeheadtext
+ \doheadspacingafteryes
+ \else\ifconditional\headhidden
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \placeheadhidden % only something when tracing
\else
% do nothing / should be vbox to 0pt
- \dostructureheadspacingbeforenop
- \doregisterstructurehead\currentstructurehead{#2}{#3}% after optional \page
- \let\getstructureheadsyncs\thestructureheadsynchonization
- \placestructureheadempty % just flush 'm
- \dostructureheadspacingafternop
+ \doheadspacingbeforenop
+ \doregisterhead\currenthead{#2}{#3}% after optional \page
+ \let\getheadsyncs\theheadsynchonization
+ \placeheadempty % just flush 'm
+ \doheadspacingafternop
\fi\fi
\fi
\flushingcolumnfloatstrue
\setfalse\ignorehandlepagebreak
% ignorespaces prevents spaces creeping in when after=\dontleavehmode
\dostarttagged\t!sectioncontent\empty
- \ifconditional\structureheadisdisplay % \ifdisplaysectionhead
+ \ifconditional\headisdisplay % \ifdisplaysectionhead
\ignorespaces
\else
\expandafter\GotoPar
@@ -635,40 +542,40 @@
% typesetting
-\unexpanded\def\placestructureheadnumbertext % dummy, will be overloaded
- {\setstructureheadmarking
- \getstructureheadnumber/\getstructureheadtitle
- \getstructureheadsyncs}
-
-\unexpanded\def\placestructureheadtext % dummy, will be overloaded
- {\setstructureheadmarking
- \getstructureheadtitle
- \getstructureheadsyncs}
-
-\unexpanded\def\placestructureheadempty % dummy, will be overloaded
- {\setstructureheadmarking
- \getstructureheadsyncs}
-
-\unexpanded\def\placestructureheadhidden
- {\setxvalue{\currentstructurehead:sync}%
- {\noexpand\setgvalue{\currentstructurehead:sync}{}%
- \noexpand\pagetype[\currentstructureheadcoupling]% hm also number
- \noexpand\setmarking[\currentstructureheadcoupling]{\currentstructurelistnumber}%
+\unexpanded\def\placeheadnumbertext % dummy, will be overloaded
+ {\setheadmarking
+ \getheadnumber/\getheadtitle
+ \getheadsyncs}
+
+\unexpanded\def\placeheadtext % dummy, will be overloaded
+ {\setheadmarking
+ \getheadtitle
+ \getheadsyncs}
+
+\unexpanded\def\placeheadempty % dummy, will be overloaded
+ {\setheadmarking
+ \getheadsyncs}
+
+\unexpanded\def\placeheadhidden
+ {\setxvalue{\currenthead:sync}%
+ {\noexpand\setgvalue{\currenthead:sync}{}%
+ \noexpand\pagetype[\currentheadcoupling]% hm also number
+ \noexpand\setmarking[\currentheadcoupling]{\currentstructurelistnumber}%
\currentstructuresynchronize}}
-\def\synchronizestructurehead#1%
+\def\synchronizehead#1%
{\getvalue{#1:sync}}
-\unexpanded\def\placerawheaddata [#1]{\synchronizestructurehead {#1}}
-\unexpanded\def\placerawheadtext [#1]{\getspecificstructuretitle{\thenamedstructureheadlevel{#1}}}
-\unexpanded\def\placerawheadnumber[#1]{\getfullstructurenumber {\thenamedstructureheadlevel{#1}}}
+\unexpanded\def\placerawheaddata [#1]{\synchronizehead {#1}}
+\unexpanded\def\placerawheadtext [#1]{\getspecificstructuretitle{\thenamedheadlevel{#1}}}
+\unexpanded\def\placerawheadnumber[#1]{\getfullstructurenumber {\thenamedheadlevel{#1}}}
% \setuphead[chapter][placehead=hidden]
% \chapter {test}
%
-% %(\synchronizestructurehead{chapter}) % \getstructureheadsyncs
-% %(\getfullstructurenumber{\thenamedstructureheadlevel{chapter}})
-% %(\getspecificstructuretitle{\thenamedstructureheadlevel{chapter}})
+% %(\synchronizehead{chapter}) % \getheadsyncs
+% %(\getfullstructurenumber{\thenamedheadlevel{chapter}})
+% %(\getspecificstructuretitle{\thenamedheadlevel{chapter}})
%
% (\placerawheaddata [chapter])
% (\placerawheadnumber[chapter])
@@ -679,55 +586,47 @@
\newcount\precedingstructurelevel \precedingstructurelevel\plusone
\newconditional\ignorehandlepagebreak
-\def\dostructureheadspacingbeforeyes
- {\docheckstructureheadbefore
- \dohandlestructureheadpagebreakyes
- \structureheadparameter\c!inbetween
- \dostarttagged\t!section\currentstructurehead}
-
-\def\dostructureheadspacingbeforenop
- {\docheckstructureheadbefore
- \dohandlestructureheadpagebreaknop
- \structureheadparameter\c!inbetween
- \dostarttagged\currentstructurehead\empty}
-
-% \def\emptystructureheadcorrection
-% {\ifconditional\structureheadleaveempty % inlined \emptyheadcorrection (with after=\blank)
-% \vskip-\lineheight
-% \dosomebreak\nobreak % \penalty10000 in vspacing
-% \kern\zeropoint
-% \prevdepth\strutdepth
-% \fi}
-
-\def\emptystructureheadcorrection
- {\ifconditional\structureheadleaveempty % inlined \emptyheadcorrection (with after=\blank)
+\def\doheadspacingbeforeyes
+ {\docheckheadbefore
+ \dohandleheadpagebreakyes
+ \headparameter\c!inbetween
+ \dostarttagged\t!section\currenthead}
+
+\def\doheadspacingbeforenop
+ {\docheckheadbefore
+ \dohandleheadpagebreaknop
+ \headparameter\c!inbetween
+ \dostarttagged\currenthead\empty}
+
+\def\emptyheadcorrection
+ {\ifconditional\headleaveempty % inlined \emptyheadcorrection (with after=\blank)
\penalty10000 % first ... we need to adapt this all to vspacing
\vskip-\lineheight
\kern\zeropoint
\prevdepth\strutdepth
\fi}
-\def\dostructureheadspacingafteryes
- {\ifconditional\structureheadisdisplay
+\def\doheadspacingafteryes
+ {\ifconditional\headisdisplay
\dosomebreak\nobreak % needs to be adapted to vspacing
- \emptystructureheadcorrection
- \structureheadparameter\c!after
+ \emptyheadcorrection
+ \headparameter\c!after
\fi}
-\def\dostructureheadspacingafternop
+\def\doheadspacingafternop
{}
-\newsignal\continuousstructureheadsignal
+\newsignal\continuousheadsignal
-\def\docheckstructureheadbefore#1%
+\def\docheckheadbefore#1%
{\ifhmode
\scratchcounter\lastpenalty\unpenalty % no beauty in this
- \ifdim\lastskip=\continuousstructureheadsignal
+ \ifdim\lastskip=\continuousheadsignal
% no page break
\ifconditional\ignorehandlepagebreak
\setfalse\ignorehandlepagebreak
\else
- \global\precedingstructurelevel\currentstructureheadlevel
+ \global\precedingstructurelevel\currentheadlevel
\nobreak
\fi
\global\settrue\continuoussectionhead
@@ -741,9 +640,9 @@
#1%
\fi}
-\def\dodocheckstructureheadlayout#1#2%
+\def\dodocheckheadlayout#1#2%
{\doifelselayouttextline{#1}
- {\doifsomething{\structureheadparameter#2}{\expanded{\setuplayouttext[#1][\c!state=\structureheadparameter#2]}}}
+ {\doifsomething{\headparameter#2}{\expanded{\setuplayouttext[#1][\c!state=\headparameter#2]}}}
\donothing}
\setvalue{\??nh:\??mk:n:\v!page }{}
@@ -751,115 +650,68 @@
\setvalue{\??nh:\??mk:y:\v!page }{} % to be checked: {\resetcurrentstructuremarks}
\setvalue{\??nh:\??mk:y:\v!reset}{\resetcurrentstructuremarks}
-\def\docheckstructureheadlayout
- {\doifelsenothing{\structureheadparameter\c!page}
- {\getvalue{\??nh:\??mk:n:\structureheadparameter\c!marking}}
- {\page[\structureheadparameter\c!page]%
- \getvalue{\??nh:\??mk:y:\structureheadparameter\c!marking}%
- \dodocheckstructureheadlayout\v!header\c!header
- \dodocheckstructureheadlayout\v!text \c!text
- \dodocheckstructureheadlayout\v!footer\c!footer}}
+\def\docheckheadlayout
+ {\doifelsenothing{\headparameter\c!page}
+ {\getvalue{\??nh:\??mk:n:\headparameter\c!marking}}
+ {\page[\headparameter\c!page]%
+ \getvalue{\??nh:\??mk:y:\headparameter\c!marking}%
+ \dodocheckheadlayout\v!header\c!header
+ \dodocheckheadlayout\v!text \c!text
+ \dodocheckheadlayout\v!footer\c!footer}}
-\def\currentstructurecounter {\ctxlua{structures.sections.depthnumber(\thenamedstructureheadlevel\currentstructurehead)}}
-\def\previousstructurecounter{\ctxlua{structures.sections.depthnumber(\thenamedstructureheadlevel\currentstructurehead-1)}}
+\def\currentstructurecounter {\ctxlua{structures.sections.depthnumber(\thenamedheadlevel\currenthead)}}
+\def\previousstructurecounter{\ctxlua{structures.sections.depthnumber(\thenamedheadlevel\currenthead-1)}}
-\def\dohandlestructureheadpagebreaknop
- {\doifelse{\structureheadparameter\c!continue}\v!yes
+\def\dohandleheadpagebreaknop
+ {\doifelse{\headparameter\c!continue}\v!yes
{\ifnum\previousstructurecounter=\zerocount
- \docheckstructureheadlayout
+ \docheckheadlayout
\else\ifnum\currentstructurecounter>\zerocount
- \docheckstructureheadlayout
+ \docheckheadlayout
\fi\fi}%
- {\docheckstructureheadlayout}}
+ {\docheckheadlayout}}
-\def\dohandlestructureheadpagebreakyes
- {%[[\currentstructurehead @\thenamedstructureheadlevel\currentstructurehead/prev:\previousstructurecounter/curr:\currentstructurecounter]]
+\def\dohandleheadpagebreakyes
+ {%[[\currenthead @\thenamedheadlevel\currenthead/prev:\previousstructurecounter/curr:\currentstructurecounter]]
\ifconditional\ignorehandlepagebreak
\setfalse\ignorehandlepagebreak
\else
- \ifnum\lastpenalty>\zerocount
+% \ifnum\lastpenalty>\zerocount
% \global\pagebreakdisabledtrue
- \fi
+% \fi
% beware, these numbers are not yet know here
- \doifelse{\structureheadparameter\c!continue}\v!yes
+ \doifelse{\headparameter\c!continue}\v!yes
{\ifnum\previousstructurecounter=\zerocount
- \docheckstructureheadlayout
+ \docheckheadlayout
\else\ifnum\currentstructurecounter>\zerocount
- \docheckstructureheadlayout
+ \docheckheadlayout
\fi\fi}%
- {\docheckstructureheadlayout}%
- \doifnot{\structureheadparameter\c!aligntitle}\v!float\flushsidefloats
- \structureheadparameter\c!before
+ {\docheckheadlayout}%
+ \doifnot{\headparameter\c!aligntitle}\v!float\flushsidefloats
+ \headparameter\c!before
\relax
% \ifpagebreakdisabled
% \global\pagebreakdisabledfalse
% \else
-% \dopreventbreakafterstructureheadauto % not ok as it binds the prev par
+% \dopreventbreakafterheadauto % not ok as it binds the prev par
% \fi
- \doif{\structureheadparameter\c!aligntitle}\v!float\indent
- \global\precedingstructurelevel\currentstructureheadlevel
+ \doif{\headparameter\c!aligntitle}\v!float\indent
+ \global\precedingstructurelevel\currentheadlevel
\fi}
-% the next one was: \somebreakmethod
-
-
-% 0 = nothing, 1 = weighted, 2 = strict, 3 = vspacing
+\settrue\autoheadbreak % todo: \vspacing[category:8] == keep_together
-\setnewconstant\somestructureheadbreakmethod\plusthree
-
-% \def\dopreventbreakafterstructureheadauto % used after \c!before
-% {\ifcase\somestructureheadbreakmethod
-% % 0 = nothing
-% \or
-% % 1 = old weighted version
-% \ifnum\currentstructureheadlevel>\precedingstructurelevel
-% \dosomebreak{\penalty\numexpr20000+500*\currentstructureheadlevel\relax}%
-% \else
-% \dosomebreak\allowbreak % brr
-% \fi
-% \or
-% % 2 = strict version
-% \dosomebreak{\penalty\maxdimen}%
-% \or
-% % 3 = vspacing
-% \vspacing[\v!samepage]% if preceded by ! then a loop
-% \else
-% % nothing
-% \fi}
-%
-% \def\dopreventbreakafterstructureheadspec#1% see enumerations etc
-% {\ifcase\somestructureheadbreakmethod
-% % 0 = nothing
-% \or
-% % 1 = old weighted version
-% \dosomebreak{\penalty\numexpr20000+500*(\currentstructureheadlevel+#1)\relax}%
-% \or
-% % 2 = strict version
-% \dosomebreak{\penalty\maxdimen}%
-% \or
-% % 3 = vspacing
-% \vspacing[\v!samepage]%
-% \else
-% % nothing
-% \fi}
-%
-% todo: \vspacing[category:8] == keep_together
-
-\def\dopreventbreakafterstructureheadauto % used after \c!before
- {\ifcase\somestructureheadbreakmethod
- % 0 = nothing
- \else
- \vspacing[\v!samepage-\currentstructureheadlevel]%
+\def\dopreventbreakafterheadauto % used after \c!before
+ {\ifconditonal\autoheadbreak
+ \vspacing[\v!samepage-\currentheadlevel]%
\fi}
-\def\dopreventbreakafterstructureheadspec#1% see enumerations etc
- {\ifcase\somestructureheadbreakmethod
- % 0 = nothing
- \else
- \vspacing[\v!samepage-\the\numexpr\currentstructureheadlevel+1\relax]% todo #1
+\def\dopreventbreakafterheadspec#1% see enumerations etc
+ {\ifconditonal\autoheadbreak
+ \vspacing[\v!samepage-\the\numexpr\currentheadlevel+1\relax]% todo #1
\fi}
-\def\dohandlepagebreakX{\dopreventbreakafterstructureheadspec} % no \let so we can redefind
+\def\dohandlepagebreakX{\dopreventbreakafterheadspec} % no \let so we can redefine
% we do support negative numbers but it can have side effects that we won't
% catch
@@ -867,60 +719,44 @@
% \chapter{some} \setupheadnumber[chapter][3] \chapter{more}
% \setupheadnumber[section][8] \section{b} \section{c} \setupheadnumber[section][-1] \section{d}
-% \def\thecurrentstructureheadlevel#1%
-% {\getcurrentstructurelevel{#1}}
-
-\def\thenamedstructureheadlevel#1%
- {\structuresectionlevel{\structuresectionheadsection{\structuresectionheadcoupling{#1}}}}
+\def\thenamedheadlevel#1%
+ {\sectionlevel{\sectionheadsection{\sectionheadcoupling{#1}}}}
\unexpanded\def\setupheadnumber
{\dodoubleargument\dosetupheadnumber}
\def\dosetupheadnumber[#1][#2]% todo: reset if at other level
- {\setstructurenumber{\thenamedstructureheadlevel{#1}}{#2}}
+ {\setstructurenumber{\thenamedheadlevel{#1}}{#2}}
-\def\currentstructureheadnumber{0} % ==> \currentheadnumber
+\def\currentheadnumber{0} % ==> \currentheadnumber
\unexpanded\def\determineheadnumber[#1]%
- {\xdef\currentstructureheadnumber{\getstructurenumber{\thenamedstructureheadlevel{#1}}}}
+ {\xdef\currentheadnumber{\getstructurenumber{\thenamedheadlevel{#1}}}}
% The previous macro is been replaced by the expandable:
-\def\namedheadnumber #1{\getstructurenumber {\thenamedstructureheadlevel{#1}}}
-\def\somenamedheadnumber#1#2{\getsomestructurenumber{\thenamedstructureheadlevel{#1}}{#2}}
+\def\namedheadnumber #1{\getstructurenumber {\thenamedheadlevel{#1}}}
+\def\somenamedheadnumber#1#2{\getsomestructurenumber{\thenamedheadlevel{#1}}{#2}}
-\unexpanded\def\structureheadnumber
- {\dodoubleempty\dostructureheadnumber}
+\unexpanded\def\headnumber
+ {\dodoubleempty\doheadnumber}
-\def\dostructureheadnumber[#1][#2]% simple case is just a number
- {\getsomefullstructurenumber{\iffirstargument\thenamedstructureheadlevel{#1}\fi}{#2}}
+\def\doheadnumber[#1][#2]% simple case is just a number
+ {\getsomefullstructurenumber{\iffirstargument\thenamedheadlevel{#1}\fi}{#2}}
-\def\somestructureheadnumber
- {\dodoubleempty\dosomestructureheadnumber}
+\def\someheadnumber
+ {\dodoubleempty\dosomeheadnumber}
-\def\dosomestructureheadnumber[#1][#2]%
+\def\dosomeheadnumber[#1][#2]%
{\dontleavehmode
\begingroup
- \edef\currentstructurehead{#1}%
- \getsomefullstructurenumber{\thenamedstructureheadlevel{#1}}{#2}%
+ \edef\currenthead{#1}%
+ \getsomefullstructurenumber{\thenamedheadlevel{#1}}{#2}%
\endgroup}
-% compatibility code (after all, we might offer different structure handlers as well
-% but we might as well remove the 'structure' substring at some point (we needed it
-% in order to test the old and new methods alongside)
-
-\let\definesectionblock \definestructureblock
-\let\definesection \definestructuresection
-\let\setupsection \setupstructuresection
-\let\setupheads \setupstructureheads
-\let\definehead \definestructurehead
-\let\setuphead \setupstructurehead
-\let\headnumber \structureheadnumber
-\let\setupsectionblock \setupstructureblock
-
\let\sectioncountervalue\structurevalue
-\def\currentheadnumber {\currentstructureheadnumber}
+\def\currentheadnumber {\currentheadnumber}
\def\currentheadtext {obsolete, use marks}
% list references, will be redone in lua when we need it
diff --git a/tex/context/base/strc-swd.mkii b/tex/context/base/strc-swd.mkii
index 4a71b8781..1525ab597 100644
--- a/tex/context/base/strc-swd.mkii
+++ b/tex/context/base/strc-swd.mkii
@@ -5,7 +5,7 @@
%D subtitle=Section Worlds,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-syn.mkii b/tex/context/base/strc-syn.mkii
index 39acb7d91..2ba5c9467 100644
--- a/tex/context/base/strc-syn.mkii
+++ b/tex/context/base/strc-syn.mkii
@@ -5,7 +5,7 @@
%D subtitle=Synonyms and Sorts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-syn.mkiv b/tex/context/base/strc-syn.mkiv
index f063ef087..7d9ef17b4 100644
--- a/tex/context/base/strc-syn.mkiv
+++ b/tex/context/base/strc-syn.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Synonyms and Sorting,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/strc-tag.lua b/tex/context/base/strc-tag.lua
index f1381dad5..3815deef0 100644
--- a/tex/context/base/strc-tag.lua
+++ b/tex/context/base/strc-tag.lua
@@ -26,21 +26,23 @@ local a_tagged = attributes.private('tagged')
local unsetvalue = attributes.unsetvalue
local codeinjections = backends.codeinjections
-local taglist = allocate()
-local properties = allocate()
-local labels = allocate()
-local stack = { }
-local chain = { }
-local ids = { }
-local enabled = false
-local tagdata = { } -- used in export
-
-local tags = structures.tags
-tags.taglist = taglist -- can best be hidden
-tags.labels = labels
-tags.data = tagdata
-
-local properties = allocate {
+local taglist = allocate()
+local properties = allocate()
+local labels = allocate()
+local stack = { }
+local chain = { }
+local ids = { }
+local enabled = false
+local tagdata = { } -- used in export
+local tagmetadata = { } -- used in export
+
+local tags = structures.tags
+tags.taglist = taglist -- can best be hidden
+tags.labels = labels
+tags.data = tagdata
+tags.metadata = tagmetadata
+
+local properties = allocate {
document = { pdf = "Div", nature = "display" },
@@ -84,6 +86,7 @@ local properties = allocate {
table = { pdf = "Table", nature = "display" },
tablerow = { pdf = "TR", nature = "display" },
tablecell = { pdf = "TD", nature = "mixed" },
+
tabulate = { pdf = "Table", nature = "display" },
tabulaterow = { pdf = "TR", nature = "display" },
tabulatecell = { pdf = "TD", nature = "mixed" },
@@ -99,9 +102,13 @@ local properties = allocate {
delimited = { pdf = "Quote", nature = "inline" },
subsentence = { pdf = "Span", nature = "inline" },
+ label = { pdf = "Span", nature = "mixed" },
+ number = { pdf = "Span", nature = "mixed" },
+
float = { pdf = "Div", nature = "display" }, -- Figure
- floatcaption = { pdf = "Caption", nature = "display" },
- floattag = { pdf = "Span", nature = "mixed" },
+ floatcaption = { pdf = "Caption", nature = "mixed" },
+ floatlabel = { pdf = "Span", nature = "inline" },
+ floatnumber = { pdf = "Span", nature = "inline" },
floattext = { pdf = "Span", nature = "mixed" },
floatcontent = { pdf = "P", nature = "mixed" },
@@ -110,7 +117,9 @@ local properties = allocate {
formulaset = { pdf = "Div", nature = "display" },
formula = { pdf = "Div", nature = "display" }, -- Formula
- formulatag = { pdf = "Span", nature = "mixed" },
+ formulacaption = { pdf = "Span", nature = "mixed" },
+ formulalabel = { pdf = "Span", nature = "mixed" },
+ formulanumber = { pdf = "Span", nature = "mixed" },
formulacontent = { pdf = "P", nature = "display" },
subformula = { pdf = "Div", nature = "display" },
@@ -136,12 +145,25 @@ local properties = allocate {
mfrac = { pdf = "Span", nature = "display" },
mroot = { pdf = "Span", nature = "display" },
msqrt = { pdf = "Span", nature = "display" },
+ mfenced = { pdf = "Span", nature = "display" },
+
+ mtable = { pdf = "Table", nature = "display" }, -- might change
+ mtr = { pdf = "TR", nature = "display" }, -- might change
+ mtd = { pdf = "TD", nature = "display" }, -- might change
+
+ ignore = { pdf = "Span", nature = "mixed" },
+ metadata = { pdf = "Div", nature = "display" },
}
tags.properties = properties
-function tags.settagproperty(tag,key,value)
+local lasttags = { }
+local userdata = { }
+
+tags.userdata = userdata
+
+function tags.setproperty(tag,key,value)
local p = properties[tag]
if p then
p[key] = value
@@ -150,10 +172,25 @@ function tags.settagproperty(tag,key,value)
end
end
-local lasttags = { }
-local userdata = { }
+function tags.registerdata(data)
+ local fulltag = chain[nstack]
+ if fulltag then
+ tagdata[fulltag] = data
+ end
+end
-tags.userdata = userdata
+local metadata
+
+function tags.registermetadata(data)
+ local d = settings_to_hash(data)
+ if metadata then
+ table.merge(metadata,d)
+ else
+ metadata = d
+ end
+end
+
+local nstack = 0
function tags.start(tag,specification)
local label, detail, user
@@ -175,29 +212,36 @@ function tags.start(tag,specification)
local n = (ids[fulltag] or 0) + 1
ids[fulltag] = n
lasttags[tag] = n
---~ print("SETTING",tag,n)
local completetag = fulltag .. "-" .. n
- chain[#chain+1] = completetag -- insert(chain,tag .. ":" .. n)
- stack[#stack+1] = t -- insert(stack,t)
- taglist[t] = { unpack(chain) } -- we can add key values for alt and actualtext if needed
+ nstack = nstack + 1
+ chain[nstack] = completetag
+ stack[nstack] = t
+ -- a copy as we can add key values for alt and actualtext if needed:
+ taglist[t] = { unpack(chain,1,nstack) }
+ --
if user and user ~= "" then
-- maybe we should merge this into taglist or whatever ... anyway there is room to optimize
-- taglist.userdata = settings_to_hash(user)
userdata[completetag] = settings_to_hash(user)
end
+ if metadata then
+ tagmetadata[completetag] = metadata
+ metadata = nil
+ end
texattribute[a_tagged] = t
return t
end
function tags.stop()
- local t = stack[#stack] stack[#stack] = nil -- local t = remove(stack)
+ if nstack > 0 then
+ nstack = nstack -1
+ end
+ local t = stack[nstack]
if not t then
if trace_tags then
- report_tags("ignoring end tag, previous chain: %s",#chain > 0 and concat(chain[#chain]) or "none")
+ report_tags("ignoring end tag, previous chain: %s",nstack > 0 and concat(chain[nstack],"",1,nstack) or "none")
end
t = unsetvalue
- else
- chain[#chain] = nil -- remove(chain)
end
texattribute[a_tagged] = t
return t
@@ -216,14 +260,7 @@ function tags.last(tag)
end
function tags.lastinchain()
- return chain[#chain]
-end
-
-function tags.registerdata(data)
- local fulltag = chain[#chain]
- if fulltag then
- tagdata[fulltag] = data
- end
+ return chain[nstack]
end
function structures.atlocation(str)
@@ -237,9 +274,11 @@ end
statistics.register("structure elements", function()
if enabled then
- return format("%s element chains identified",#taglist)
- else
- return nil
+ if nstack > 0 then
+ return format("%s element chains identified, open chain: %s ",#taglist,concat(chain," => ",1,nstack))
+ else
+ return format("%s element chains identified",#taglist)
+ end
end
end)
@@ -249,3 +288,7 @@ directives.register("backend.addtags", function(v)
enabled = true
end
end)
+
+commands.starttag = tags.start
+commands.stoptag = tags.stop
+commands.settagproperty = tags.setproperty
diff --git a/tex/context/base/strc-tag.mkiv b/tex/context/base/strc-tag.mkiv
index 8bc8d9f69..40ded256e 100644
--- a/tex/context/base/strc-tag.mkiv
+++ b/tex/context/base/strc-tag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Tags,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -67,6 +67,11 @@
\def\t!tabulaterow {tabulaterow} % TR
\def\t!tabulatecell {tabulatecell} % TD
+\def\t!math {math} % math
+\def\t!mathtable {mtable} % Table
+\def\t!mathtablerow {mtr} % TR
+\def\t!mathtablecell {mtd} % TD
+
\def\t!list {list} % TOC
\def\t!listitem {listitem} % TOCI
\def\t!listtag {listtag} % Lbl
@@ -80,8 +85,9 @@
\def\t!float {float} % Div
\def\t!floatcaption {floatcaption} % Caption
-\def\t!floattag {floattag} % Span
+\def\t!floatlabel {floatlabel} % Span
\def\t!floattext {floattext} % Span
+\def\t!floatnumber {floatnumber} % Span
\def\t!floatcontent {floatcontent} % P
\def\t!image {image} % P
@@ -90,7 +96,9 @@
\def\t!formulaset {formulaset} % Div
\def\t!formula {formula} % Div
-\def\t!formulatag {formulatag} % Span
+\def\t!formulacaption {formulacaption} % Span
+\def\t!formulalabel {formulalabel} % Span
+\def\t!formulanumber {formulanumber} % P
\def\t!formulacontent {formulacontent} % P
\def\t!subformula {subformula} % Div
@@ -99,6 +107,13 @@
\def\t!margintext {margintext} % Span
\def\t!margintextblock {margintextblock} % Div
+% we might opt for verbose variants so this is experimental:
+
+\def\t!label {label} % Span
+\def\t!number {number} % Span
+
+\def\t!ignore {ignore} % Span
+
% \setuptaglabeltext
% [en]
% [\t!document=document]
@@ -111,8 +126,8 @@
\def\setelementbackendtag{\dodoubleargument\dosetelementbackendtag}
\def\setelementnature {\dodoubleargument\dosetelementnature}
-\def\dosetelementbackendtag[#1][#2]{\ctxlua{structures.tags.settagproperty("#1","backend","#2")}}
-\def\dosetelementnature [#1][#2]{\ctxlua{structures.tags.settagproperty("#1","nature", "#2")}}
+\def\dosetelementbackendtag[#1][#2]{\ctxcommand{settagproperty("#1","backend","#2")}}
+\def\dosetelementnature [#1][#2]{\ctxcommand{settagproperty("#1","nature", "#2")}}
% todo: indirect macro for trialtypesetting
@@ -123,13 +138,13 @@
\unexpanded\def\renostartelement{\dodoubleempty\nonostartelement}
\unexpanded\def\dodostartelement[#1][#2]%
- {\ctxlua{structures.tags.start("#1",{
+ {\ctxcommand{starttag("#1",{
label = "\dogetupsometaglabeltext{#1}",
userdata = \!!bs#2\!!es,
})}}
\unexpanded\def\dodostopelement
- {\ctxlua{structures.tags.stop()}}
+ {\ctxcommand{stoptag()}}
\unexpanded\def\nonostartelement[#1][#2]{}
\unexpanded\def\nonostopelement {}
@@ -140,13 +155,13 @@
\def\dodostoptagged {\iftrialtypesetting\expandafter\nododostoptagged \else\expandafter\dododostoptagged \fi}
\def\dododostarttagged#1#2%
- {\ctxlua{structures.tags.start("#1",{
+ {\ctxcommand{starttag("#1",{
label = "\dogetupsometaglabeltext{#1}",
detail = "#2",
})}}
\def\dododostoptagged
- {\ctxlua{structures.tags.stop()}}
+ {\ctxcommand{stoptag()}}
\def\nododostarttagged#1#2{}
\def\nododostoptagged {}
@@ -217,4 +232,50 @@
\def\doifinelementelse#1%
{\ctxcommand{testcase(structures.atlocation("#1"))}}
+\def\taggedlabeltexts#1#2#3% experimental: label, numberdetail, numbercontent
+ {\begingroup
+ \dostarttagged\t!label{#1}%
+ \labeltexts{#1}%
+ {\dostoptagged
+ \dostarttagged\t!number{#2}%
+ #3%
+ \dostoptagged
+ \dostarttagged\t!label{#1}}%
+ \dostoptagged
+ \endgroup}
+
+\def\namedtaggedlabeltexts#1#2#3#4#5% experimental: labeltag label numbertag numberdetail numbercontent
+ {\begingroup
+ \dostarttagged{#1}{#2}%
+ \labeltexts{#2}%
+ {\dostoptagged
+ \dostarttagged{#3}{#4}%
+ #5%
+ \dostoptagged
+ \dostarttagged{#1}{#2}}%
+ \dostoptagged
+ \endgroup}
+
+%D Metadata is added after the following structure element so
+%D here we get some as child of the document root and some as child
+%D of the chapter element.
+%D
+%D \settaggedmetadata[title=Hello World!,author=Hans Hagen]
+%D
+%D \starttyping
+%D \starttext
+%D \startelement[ignore]
+%D \input tufte
+%D \stopelement
+%D \par \input ward \par
+%D \settaggedmetadata[whatever=Again and Again]
+%D \startchapter[title=test]
+%D \input ward
+%D \stopchapter
+%D \stoptext
+%D \stoptyping
+
+\def\settaggedmetadata[#1]%
+ {\ctxlua{structures.tags.registermetadata(\!!bs#1\!!es)}}
+
\protect
diff --git a/tex/context/base/strc-xml.mkiv b/tex/context/base/strc-xml.mkiv
index 9696c2e06..3f9b4ef81 100644
--- a/tex/context/base/strc-xml.mkiv
+++ b/tex/context/base/strc-xml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=XML Processing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE / Hans Hagen]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -62,7 +62,7 @@
% test.tex
-\setupstructurehead[chapter][expansion=xml]
+\setuphead[chapter][expansion=xml]
\startxmlsetups xml:demo:define:base
\xmlsetsetup{demo}{document|section|p|b|i}{xml:demo:*}
diff --git a/tex/context/base/supp-ali.mkii b/tex/context/base/supp-ali.mkii
index 8727efbb2..c4a1aadc5 100644
--- a/tex/context/base/supp-ali.mkii
+++ b/tex/context/base/supp-ali.mkii
@@ -5,7 +5,7 @@
%D subtitle=Alignment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-ali.mkiv b/tex/context/base/supp-ali.mkiv
index 1bd31eb78..54a7b77e4 100644
--- a/tex/context/base/supp-ali.mkiv
+++ b/tex/context/base/supp-ali.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Alignment,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-box.mkii b/tex/context/base/supp-box.mkii
index 8cdea8620..55641fd63 100644
--- a/tex/context/base/supp-box.mkii
+++ b/tex/context/base/supp-box.mkii
@@ -5,7 +5,7 @@
%D subtitle=Boxes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-box.mkiv b/tex/context/base/supp-box.mkiv
index f449e1d76..a1d3eb15d 100644
--- a/tex/context/base/supp-box.mkiv
+++ b/tex/context/base/supp-box.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Boxes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-dir.mkii b/tex/context/base/supp-dir.mkii
index 41cd1b56f..f4f294903 100644
--- a/tex/context/base/supp-dir.mkii
+++ b/tex/context/base/supp-dir.mkii
@@ -5,7 +5,7 @@
%D subtitle=Directional Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-dir.mkiv b/tex/context/base/supp-dir.mkiv
index dce47a178..6251012b6 100644
--- a/tex/context/base/supp-dir.mkiv
+++ b/tex/context/base/supp-dir.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Directional Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-emp.mkii b/tex/context/base/supp-emp.mkii
index 15489bca7..ba9e09e3a 100644
--- a/tex/context/base/supp-emp.mkii
+++ b/tex/context/base/supp-emp.mkii
@@ -5,7 +5,7 @@
%D subtitle=\EMTEX\ specials to \PDF\ conversion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-eps.mkii b/tex/context/base/supp-eps.mkii
index 5684b25dd..fb99469c5 100644
--- a/tex/context/base/supp-eps.mkii
+++ b/tex/context/base/supp-eps.mkii
@@ -5,7 +5,7 @@
%D subtitle=\EPS\ tools,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-fil.mkii b/tex/context/base/supp-fil.mkii
index fc0492442..b76dfb901 100644
--- a/tex/context/base/supp-fil.mkii
+++ b/tex/context/base/supp-fil.mkii
@@ -5,7 +5,7 @@
%D subtitle=Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-fil.mkiv b/tex/context/base/supp-fil.mkiv
index 6b9af21ce..93d8d4e4a 100644
--- a/tex/context/base/supp-fil.mkiv
+++ b/tex/context/base/supp-fil.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -39,8 +39,8 @@
\def\f!parentpath {..}
\fi
-\def\openinputfile #1#2{\immediate\openin #1={#2}} \def\closeinputfile #1{\immediate\closein #1}
-\def\openoutputfile#1#2{\immediate\openout#1={#2}} \def\closeoutputfile#1{\immediate\closeout#1}
+\def\openinputfile #1#2{\immediate\openin #1={#2}\relax} \def\closeinputfile #1{\immediate\closein #1\relax}
+\def\openoutputfile#1#2{\immediate\openout#1={#2}\relax} \def\closeoutputfile#1{\immediate\closeout#1\relax}
%D \macros
%D {pushendofline,popendofline}
diff --git a/tex/context/base/supp-fun.mkii b/tex/context/base/supp-fun.mkii
index 6b2643703..9bba4f5a8 100644
--- a/tex/context/base/supp-fun.mkii
+++ b/tex/context/base/supp-fun.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fun Stuff,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-fun.mkiv b/tex/context/base/supp-fun.mkiv
index a8db3b634..3a1c7f2ea 100644
--- a/tex/context/base/supp-fun.mkiv
+++ b/tex/context/base/supp-fun.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Fun Stuff,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-lat.mkii b/tex/context/base/supp-lat.mkii
index 576121327..343a7674c 100644
--- a/tex/context/base/supp-lat.mkii
+++ b/tex/context/base/supp-lat.mkii
@@ -5,7 +5,7 @@
%D subtitle=General,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mat.mkii b/tex/context/base/supp-mat.mkii
index 1a51164e6..e8a34fc90 100644
--- a/tex/context/base/supp-mat.mkii
+++ b/tex/context/base/supp-mat.mkii
@@ -5,7 +5,7 @@
%D subtitle=Math,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mat.mkiv b/tex/context/base/supp-mat.mkiv
index e441cbc28..944d1a9e0 100644
--- a/tex/context/base/supp-mat.mkiv
+++ b/tex/context/base/supp-mat.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Math,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mis.mkii b/tex/context/base/supp-mis.mkii
index f3bde453b..bc511e518 100644
--- a/tex/context/base/supp-mis.mkii
+++ b/tex/context/base/supp-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Missing (For Generic Use),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mpe.mkii b/tex/context/base/supp-mpe.mkii
index f28176292..a4ebef997 100644
--- a/tex/context/base/supp-mpe.mkii
+++ b/tex/context/base/supp-mpe.mkii
@@ -5,7 +5,7 @@
%D subtitle=METAPOST Special Extensions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mps.mkii b/tex/context/base/supp-mps.mkii
index b071ffe72..3991280e6 100644
--- a/tex/context/base/supp-mps.mkii
+++ b/tex/context/base/supp-mps.mkii
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-mrk.mkii b/tex/context/base/supp-mrk.mkii
index eb1865471..b9d476c2a 100644
--- a/tex/context/base/supp-mrk.mkii
+++ b/tex/context/base/supp-mrk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Marks,
%D author=Jim Fox / Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-num.mkii b/tex/context/base/supp-num.mkii
index 742349753..5e35a20b0 100644
--- a/tex/context/base/supp-num.mkii
+++ b/tex/context/base/supp-num.mkii
@@ -5,7 +5,7 @@
%D subtitle=Numbers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-num.mkiv b/tex/context/base/supp-num.mkiv
index 68b775403..271e2588a 100644
--- a/tex/context/base/supp-num.mkiv
+++ b/tex/context/base/supp-num.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Numbers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-pat.mkii b/tex/context/base/supp-pat.mkii
index 8cd4dd072..425eae215 100644
--- a/tex/context/base/supp-pat.mkii
+++ b/tex/context/base/supp-pat.mkii
@@ -5,7 +5,7 @@
%D subtitle=Patterns,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-pdf.mkii b/tex/context/base/supp-pdf.mkii
index 4d3619d4b..4dd2db776 100644
--- a/tex/context/base/supp-pdf.mkii
+++ b/tex/context/base/supp-pdf.mkii
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ to \PDF\ conversion,
%D author=Hans Hagen \& others (see text),
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-ran.mkii b/tex/context/base/supp-ran.mkii
index 0c07099ed..0a39026bf 100644
--- a/tex/context/base/supp-ran.mkii
+++ b/tex/context/base/supp-ran.mkii
@@ -5,7 +5,7 @@
%D subtitle=Random Number Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-ran.mkiv b/tex/context/base/supp-ran.mkiv
index 500170ab0..a04d28247 100644
--- a/tex/context/base/supp-ran.mkiv
+++ b/tex/context/base/supp-ran.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Random Number Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-spe.mkii b/tex/context/base/supp-spe.mkii
index 8cb8e2ac1..4625695c7 100644
--- a/tex/context/base/supp-spe.mkii
+++ b/tex/context/base/supp-spe.mkii
@@ -5,7 +5,7 @@
%D subtitle=Specials,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-tpi.mkii b/tex/context/base/supp-tpi.mkii
index 9b2ac9328..16e423596 100644
--- a/tex/context/base/supp-tpi.mkii
+++ b/tex/context/base/supp-tpi.mkii
@@ -5,7 +5,7 @@
%D subtitle=\TPIC\ Conversion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-vis.mkii b/tex/context/base/supp-vis.mkii
index f38c8e1e3..22a745b13 100644
--- a/tex/context/base/supp-vis.mkii
+++ b/tex/context/base/supp-vis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Visualization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/supp-vis.mkiv b/tex/context/base/supp-vis.mkiv
index f38c8e1e3..22a745b13 100644
--- a/tex/context/base/supp-vis.mkiv
+++ b/tex/context/base/supp-vis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Visualization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-cow.mkii b/tex/context/base/symb-cow.mkii
index fac6ca485..933a00c45 100644
--- a/tex/context/base/symb-cow.mkii
+++ b/tex/context/base/symb-cow.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cow Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-cow.mkiv b/tex/context/base/symb-cow.mkiv
index adfd484d8..59eabae28 100644
--- a/tex/context/base/symb-cow.mkiv
+++ b/tex/context/base/symb-cow.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Cow Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-eur.mkii b/tex/context/base/symb-eur.mkii
index 400e88ac5..67023ec91 100644
--- a/tex/context/base/symb-eur.mkii
+++ b/tex/context/base/symb-eur.mkii
@@ -5,7 +5,7 @@
%D subtitle=Adobe Euro Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-eur.mkiv b/tex/context/base/symb-eur.mkiv
index 4ec5a8931..19a88c8fa 100644
--- a/tex/context/base/symb-eur.mkiv
+++ b/tex/context/base/symb-eur.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Adobe Euro Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-glm.mkii b/tex/context/base/symb-glm.mkii
index 0b01ca7df..ff94bfe7f 100644
--- a/tex/context/base/symb-glm.mkii
+++ b/tex/context/base/symb-glm.mkii
@@ -5,7 +5,7 @@
%D subtitle=Guillemots,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-ini.mkii b/tex/context/base/symb-ini.mkii
index 1df1fe688..3154c8a04 100644
--- a/tex/context/base/symb-ini.mkii
+++ b/tex/context/base/symb-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Basic Symbols Commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-ini.mkiv b/tex/context/base/symb-ini.mkiv
index 8282649b0..182840ed5 100644
--- a/tex/context/base/symb-ini.mkiv
+++ b/tex/context/base/symb-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Basic Symbols Commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-jmn.mkii b/tex/context/base/symb-jmn.mkii
index 392cac552..aea2dce7b 100644
--- a/tex/context/base/symb-jmn.mkii
+++ b/tex/context/base/symb-jmn.mkii
@@ -5,7 +5,7 @@
%D subtitle=Special Navigational Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-jmn.mkiv b/tex/context/base/symb-jmn.mkiv
index 593e3e375..d66e0a332 100644
--- a/tex/context/base/symb-jmn.mkiv
+++ b/tex/context/base/symb-jmn.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Special Navigational Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-mis.mkii b/tex/context/base/symb-mis.mkii
index 9921fa94f..dacb816b4 100644
--- a/tex/context/base/symb-mis.mkii
+++ b/tex/context/base/symb-mis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-mis.mkiv b/tex/context/base/symb-mis.mkiv
index 612886daa..1037ba542 100644
--- a/tex/context/base/symb-mis.mkiv
+++ b/tex/context/base/symb-mis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Miscelaneous,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-mvs.mkii b/tex/context/base/symb-mvs.mkii
index 1dd3da0a0..5f4b724aa 100644
--- a/tex/context/base/symb-mvs.mkii
+++ b/tex/context/base/symb-mvs.mkii
@@ -5,7 +5,7 @@
%D subtitle=Martin Vogels Symbole,
%D author=Tobias Burnus \& Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-mvs.mkiv b/tex/context/base/symb-mvs.mkiv
index 312a50a88..9902fc9e8 100644
--- a/tex/context/base/symb-mvs.mkiv
+++ b/tex/context/base/symb-mvs.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Martin Vogels Symbole,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-nav.mkii b/tex/context/base/symb-nav.mkii
index 93badbc4d..c9d1aae1d 100644
--- a/tex/context/base/symb-nav.mkii
+++ b/tex/context/base/symb-nav.mkii
@@ -5,7 +5,7 @@
%D subtitle=Navigational Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-nav.mkiv b/tex/context/base/symb-nav.mkiv
index 0f5fd289f..6e2f2c1f0 100644
--- a/tex/context/base/symb-nav.mkiv
+++ b/tex/context/base/symb-nav.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Navigational Symbols,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-run.mkii b/tex/context/base/symb-run.mkii
index 4e714832c..8b8c62d8b 100644
--- a/tex/context/base/symb-run.mkii
+++ b/tex/context/base/symb-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-run.mkiv b/tex/context/base/symb-run.mkiv
index 33bbb7927..4bd2cecca 100644
--- a/tex/context/base/symb-run.mkiv
+++ b/tex/context/base/symb-run.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/symb-uni.mkii b/tex/context/base/symb-uni.mkii
index fcd613e7f..f5435810f 100644
--- a/tex/context/base/symb-uni.mkii
+++ b/tex/context/base/symb-uni.mkii
@@ -5,7 +5,7 @@
%D subtitle=Unicode Symbols,
%D author=Adam T. Lindsay,
%D date=\currentdate,
-%D copyright={Adam T. Lindsay / PRAGMA}]
+%D copyright={Adam Lindsay \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C prepared by Adam T. Lindsay.
diff --git a/tex/context/base/symb-was.mkii b/tex/context/base/symb-was.mkii
index 53132cd23..e131cf04d 100644
--- a/tex/context/base/symb-was.mkii
+++ b/tex/context/base/symb-was.mkii
@@ -5,7 +5,7 @@
%D subtitle=Roland Waldi's Symbols (wasy-2),
%D author=Henning Hraban Ramm,
%D date=\currentdate,
-%D copyright={public domain}]
+%D copyright={Public Domain}]
%C
%C This module is in the public domain.
diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv
index d2bc84ae8..20674663c 100644
--- a/tex/context/base/syst-aux.mkiv
+++ b/tex/context/base/syst-aux.mkiv
@@ -5,7 +5,7 @@
%D subtitle=General,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -1656,11 +1656,11 @@
\let\currentvalue\empty
-\def\getparameters {\dogetparameters\dosetvalue}
-\def\geteparameters {\dogetparameters\dosetevalue}
-\def\getgparameters {\dogetparameters\dosetgvalue}
-\def\getxparameters {\dogetparameters\dosetxvalue}
-\def\forgetparameters{\dogetparameters\doignorevalue}
+\unexpanded\def\getparameters {\dogetparameters\dosetvalue}
+\unexpanded\def\geteparameters {\dogetparameters\dosetevalue}
+\unexpanded\def\getgparameters {\dogetparameters\dosetgvalue}
+\unexpanded\def\getxparameters {\dogetparameters\dosetxvalue}
+\unexpanded\def\forgetparameters{\dogetparameters\doignorevalue}
\let\getexpandedparameters=\geteparameters
diff --git a/tex/context/base/syst-con.lua b/tex/context/base/syst-con.lua
index bcc020528..f78d83011 100644
--- a/tex/context/base/syst-con.lua
+++ b/tex/context/base/syst-con.lua
@@ -14,7 +14,8 @@ the top of <l n='luatex'/>'s char range but outside the unicode range.</p>
--ldx]]--
local tonumber = tonumber
-local char, texsprint, format = unicode.utf8.char, tex.sprint, string.format
+local char, texsprint = unicode.utf8.char, tex.sprint
+local gsub, format = string.gsub, string.format
function converters.hexstringtonumber(n) tonumber(n,16) end
function converters.octstringtonumber(n) tonumber(n, 8) end
@@ -33,3 +34,8 @@ function commands.uchexnumber (n) context(format("%X" ,n)) end
function commands.lchexnumbers (n) context(format("%02x",n)) end
function commands.uchexnumbers (n) context(format("%02X",n)) end
function commands.octnumber (n) context(format("%03o",n)) end
+
+function commands.format(fmt,...)
+ fmt = gsub(fmt,"@","%%")
+ context(fmt,...)
+end
diff --git a/tex/context/base/syst-con.mkii b/tex/context/base/syst-con.mkii
index 877aad32a..c1ad788cf 100644
--- a/tex/context/base/syst-con.mkii
+++ b/tex/context/base/syst-con.mkii
@@ -5,7 +5,7 @@
%D subtitle=Conversions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-con.mkiv b/tex/context/base/syst-con.mkiv
index 1091be859..077e69007 100644
--- a/tex/context/base/syst-con.mkiv
+++ b/tex/context/base/syst-con.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Conversions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -148,4 +148,7 @@
\def\setcalculatedcos#1#2{\edef#1{\cldcontext{math.cosd(#2)}}}
\def\setcalculatedtan#1#2{\edef#1{\cldcontext{math.tand(#2)}}}
+ \def\formatted#1{\ctxcommand{format(#1)}}
+\unexpanded\def\format #1{\ctxcommand{format(#1)}}
+
\protect \endinput
diff --git a/tex/context/base/syst-ext.mkii b/tex/context/base/syst-ext.mkii
index 2357e81f1..39f4145f2 100644
--- a/tex/context/base/syst-ext.mkii
+++ b/tex/context/base/syst-ext.mkii
@@ -5,7 +5,7 @@
%D subtitle=Extras,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-fnt.mkii b/tex/context/base/syst-fnt.mkii
index 66439c194..5669475a6 100644
--- a/tex/context/base/syst-fnt.mkii
+++ b/tex/context/base/syst-fnt.mkii
@@ -5,7 +5,7 @@
%D subtitle=Font Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-fnt.mkiv b/tex/context/base/syst-fnt.mkiv
index 8ba0dd2a3..f5c9ea349 100644
--- a/tex/context/base/syst-fnt.mkiv
+++ b/tex/context/base/syst-fnt.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Font Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-gen.mkii b/tex/context/base/syst-gen.mkii
index 0367ba4fd..bb0f54d11 100644
--- a/tex/context/base/syst-gen.mkii
+++ b/tex/context/base/syst-gen.mkii
@@ -5,7 +5,7 @@
%D subtitle=General,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-ini.mkii b/tex/context/base/syst-ini.mkii
index c2c3e1947..9988efc10 100644
--- a/tex/context/base/syst-ini.mkii
+++ b/tex/context/base/syst-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Bootstrapping \TEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv
index 18388fa21..3e8c8a749 100644
--- a/tex/context/base/syst-ini.mkiv
+++ b/tex/context/base/syst-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Bootstrapping \TEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -331,6 +331,15 @@
\newtoks \scratchtoksone \newtoks \scratchtokstwo \newtoks \scratchtoksthree
\newbox \scratchboxone \newbox \scratchboxtwo \newbox \scratchboxthree
+%D \macros
+%D {scratchwidth, scratchheight, scratchdepth}
+%D
+%D A few more scratch dimensions:
+
+\newdimen\scratchwidth
+\newdimen\scratchheight
+\newdimen\scratchdepth
+
%D More allocations:
\newskip \zeroskip \zeroskip = 0pt plus 0pt minus 0pt
@@ -908,10 +917,20 @@
\edef\texengineversion{0}
\fi
+%D We have no reason not to enable this:
+
+\savingvdiscards\plusone
+
%D We only can set this one via directives (system.synctex).
\let\synctex\undefined \newcount\synctex
+%D We get rid of the funny \TEX\ offset defaults of one
+%D inch by setting them to zero.
+
+\voffset \zeropoint \newdimen\voffset % prevent messing up
+\hoffset \zeropoint \newdimen\hoffset % prevent messing up
+
%D While cleaning this code up a bit I was listening to Heather
%D Nova's \CD\ Redbird. The first song on that \CD\ ends with
%D a few lines suitable for ending this initialization module:
diff --git a/tex/context/base/syst-lua.mkiv b/tex/context/base/syst-lua.mkiv
index 3ed70cc0b..34e3631c3 100644
--- a/tex/context/base/syst-lua.mkiv
+++ b/tex/context/base/syst-lua.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Helper macros based on \LUA,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-mes.mkiv b/tex/context/base/syst-mes.mkiv
index 070c7af72..4cd36e24b 100644
--- a/tex/context/base/syst-mes.mkiv
+++ b/tex/context/base/syst-mes.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Messages,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-new.mkii b/tex/context/base/syst-new.mkii
index 53ba18ffd..34b535b90 100644
--- a/tex/context/base/syst-new.mkii
+++ b/tex/context/base/syst-new.mkii
@@ -5,7 +5,7 @@
%D subtitle=New Ones,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-pln.mkii b/tex/context/base/syst-pln.mkii
index f2b6129ff..1032b40b5 100644
--- a/tex/context/base/syst-pln.mkii
+++ b/tex/context/base/syst-pln.mkii
@@ -5,7 +5,7 @@
%D subtitle=Efficient \PLAIN\ \TEX\ loading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-pln.mkiv b/tex/context/base/syst-pln.mkiv
index 7fa91b73d..fc3bdd332 100644
--- a/tex/context/base/syst-pln.mkiv
+++ b/tex/context/base/syst-pln.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Efficient \PLAIN\ \TEX\ loading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-rtp.mkii b/tex/context/base/syst-rtp.mkii
index a1c6abe2e..fc0f503b0 100644
--- a/tex/context/base/syst-rtp.mkii
+++ b/tex/context/base/syst-rtp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Run Time Processes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-rtp.mkiv b/tex/context/base/syst-rtp.mkiv
index 36ce8edb1..f65e599ec 100644
--- a/tex/context/base/syst-rtp.mkiv
+++ b/tex/context/base/syst-rtp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Run Time Processes,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-str.mkii b/tex/context/base/syst-str.mkii
index 3e6d043e3..aacb70ec7 100644
--- a/tex/context/base/syst-str.mkii
+++ b/tex/context/base/syst-str.mkii
@@ -5,7 +5,7 @@
%D subtitle=String Processing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/syst-tex.mkii b/tex/context/base/syst-tex.mkii
index a8aea2683..fee2b51b2 100644
--- a/tex/context/base/syst-tex.mkii
+++ b/tex/context/base/syst-tex.mkii
@@ -5,7 +5,7 @@
%D subtitle=Efficient \PLAIN\ \TEX\ loading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-com.mkii b/tex/context/base/tabl-com.mkii
index 892905f6c..8a0bb9e0c 100644
--- a/tex/context/base/tabl-com.mkii
+++ b/tex/context/base/tabl-com.mkii
@@ -5,7 +5,7 @@
%D subtitle=Common Code,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-com.mkiv b/tex/context/base/tabl-com.mkiv
index 892905f6c..8a0bb9e0c 100644
--- a/tex/context/base/tabl-com.mkiv
+++ b/tex/context/base/tabl-com.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Common Code,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-ltb.mkii b/tex/context/base/tabl-ltb.mkii
index 095e30e2b..bac2b5893 100644
--- a/tex/context/base/tabl-ltb.mkii
+++ b/tex/context/base/tabl-ltb.mkii
@@ -5,7 +5,7 @@
%D subtitle=Line Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-ltb.mkiv b/tex/context/base/tabl-ltb.mkiv
index 06e3eca29..44f1d2c14 100644
--- a/tex/context/base/tabl-ltb.mkiv
+++ b/tex/context/base/tabl-ltb.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Line Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-ntb.mkii b/tex/context/base/tabl-ntb.mkii
index e243a55c2..465ed44b2 100644
--- a/tex/context/base/tabl-ntb.mkii
+++ b/tex/context/base/tabl-ntb.mkii
@@ -5,7 +5,7 @@
%D subtitle=Natural Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-ntb.mkiv b/tex/context/base/tabl-ntb.mkiv
index 96b1aabed..35ed45b63 100644
--- a/tex/context/base/tabl-ntb.mkiv
+++ b/tex/context/base/tabl-ntb.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Natural Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -923,19 +923,6 @@
\fi
\egroup}}
-% \def\begintbl
-% {\global\tblspn\zerocount
-% \global\tblcol\zerocount
-% \global\tblrow\zerocount
-% \global\advance\tblrow\minusone
-% \tabskip\zeropoint
-% \halign\bgroup
-% \registerparoptions % new
-% \ignorespaces##\unskip&&\ignorespaces##\unskip\cr}
-
-% \def\endtbl
-% {\egroup}
-
\let\dotagTABLEcell\relax
\def\begintbl
@@ -950,7 +937,8 @@
\halign\bgroup
\registerparoptions
% watch out: tagging the cell happens at the outer level (faster)
- \ignorespaces##\unskip&&\dostarttagged\t!tablecell\empty\ignorespaces##\unskip\dostoptagged\cr} % one too many
+% \ignorespaces##\unskip&&\dostarttagged\t!tablecell\empty\ignorespaces##\unskip\dostoptagged\cr} % one too many
+ \ignorespaces##\unskip&&\ignorespaces##\unskip\cr} % one too many
\def\endtbl
{\dostoptagged\egroup
@@ -1009,16 +997,17 @@
\settblhei{#1}{\the\ht\scratchbox}%
\fi}%
-\let\dotagnoftablecolumns\relax
-\let\dotagnoftablerows \relax
+\let\dotagnofTABLEcolumns\relax
+\let\dotagnofTABLErows \relax
\def\domakeTBLthree#1 #2 %
{% height
+\dostarttagged\t!tablecell\empty
\!!counta \gettblcol{#1}{#2}\relax
\!!countb \gettblrow{#1}{#2}\relax
\!!heighta\gettblht {#1}{#2}\relax
-\dotagnoftablecolumns
-\dotagnoftablerows
+\dotagnofTABLEcolumns
+\dotagnofTABLErows
\scratchdimen\zeropoint
\ifnum\!!counta=\maximumcol\relax
% case: nc=maxcolumns
@@ -1041,7 +1030,10 @@
\advance\scratchcounter\plusone}%
\edef\widthTBL{\the\dimexpr\scratchdimen-\tbltblcolumndistance\relax}%
% cell
- \setbox\scratchbox\hbox{\gettbltxt{#1}{#2}}%
+ \setbox\scratchbox\hbox attr \taggedattribute \attribute\taggedattribute \bgroup
+% \dotagTABLEcell
+ \gettbltxt{#1}{#2}%
+ \egroup
\ifnum\!!counta=\maximumcol\relax
% case: nc=maxcolumns
\else
@@ -1057,7 +1049,7 @@
\else
\normalexpanded{\noexpand\directgotobox{\box\scratchbox}[\!!stringa]}% to be checked
\fi
- \dotagTABLEcell} % right spot
+ \dostoptagged} % right spot
\def\inTBLcell#1#2% hm, do we need #1 #2 ? we use tblcol anyway
{\doifnotinset\localwidth{\v!fit,\v!broad}% user set
diff --git a/tex/context/base/tabl-nte.mkii b/tex/context/base/tabl-nte.mkii
index cde64a033..6a5391f24 100644
--- a/tex/context/base/tabl-nte.mkii
+++ b/tex/context/base/tabl-nte.mkii
@@ -5,7 +5,7 @@
%D subtitle=Natural Tables Extensions,
%D author=Hans Hagen \& Wolfgang Schuster,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-nte.mkiv b/tex/context/base/tabl-nte.mkiv
index 2a9e14703..08ab34f0f 100644
--- a/tex/context/base/tabl-nte.mkiv
+++ b/tex/context/base/tabl-nte.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Natural Tables Extensions,
%D author=Hans Hagen \& Wolfgang Schuster,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-tab.mkii b/tex/context/base/tabl-tab.mkii
index e3bfca9c3..7909e5092 100644
--- a/tex/context/base/tabl-tab.mkii
+++ b/tex/context/base/tabl-tab.mkii
@@ -5,7 +5,7 @@
%D subtitle=\TABLE\ Embedding,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-tab.mkiv b/tex/context/base/tabl-tab.mkiv
index 24bbb4dd6..0e95af3b7 100644
--- a/tex/context/base/tabl-tab.mkiv
+++ b/tex/context/base/tabl-tab.mkiv
@@ -4,8 +4,7 @@
%D title=\CONTEXT\ Table Macros,
%D subtitle=\TABLE\ Embedding,
%D author=Hans Hagen with copied and patched code from MJ Wichura,
-%D date=\currentdate,
-%D copyright=PRAGMA-ADE (patched and extensions)]
+%D date=\currentdate]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-tbl.mkii b/tex/context/base/tabl-tbl.mkii
index 09fa4105c..9f2d7df47 100644
--- a/tex/context/base/tabl-tbl.mkii
+++ b/tex/context/base/tabl-tbl.mkii
@@ -5,7 +5,7 @@
%D subtitle=Text Flow Tabulation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv
index b8ebb5ee7..5949460aa 100644
--- a/tex/context/base/tabl-tbl.mkiv
+++ b/tex/context/base/tabl-tbl.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Text Flow Tabulation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -378,6 +378,8 @@
\fi
\fi\fi}
+\let\dotagtabulatesignal\relax
+
\def\dodosettabulatepreamble#1#2% only makes sense for many tabulates
{\normalexpanded{\tabulatepreamble{\the\tabulatepreamble
\dochecklocaltabulatevrulecolor{\currenttabulatevrulecolor}{\the\tabulatevrulethickness}%
@@ -415,8 +417,9 @@
\ifcase\tabulatereshape\else
\beginreshapedtabulatepar
\fi
+ \dotagtabulatesignal % empty cells .. todo (can be removed as soon as build)
\noexpand\ifnum\noexpand\tabulatetype=\plusone\noexpand\else
- \the\tabulatebmath % maybe later?
+ \the\tabulatebmath % maybe later? can interfere with char 0
\the\tabulatefont
\the\tabulatesettings
\the\tabulatebefore
@@ -436,10 +439,11 @@
\endreshapedtabulatepar
\fi
\noexpand#2%
- \noexpand\dostoptagged
+% \noexpand\dostoptagged
\egroup
\egroup
\aligntab
+\noexpand\dostoptagged
\dotabulatepostskip{\the\tabulateposskip}%
\alignmark\alignmark
}}%
@@ -680,12 +684,31 @@
\def\flushtabulatesplitbox
{\box\tabulatebox}
-\def\splitofftabulatebox % overloads in anch-pgr
+\newconditional\splitofftabulatewhitespace
+\newdimen\splitofftabulatebetweenskip
+
+\def\flushtabulatewhitespace
+ {\ifdim\splitofftabulatebetweenskip>\zeropoint
+ \vskip\splitofftabulatebetweenskip
+ \global\splitofftabulatebetweenskip\zeropoint
+ \fi}
+
+\def\checktabulatewhitespace
+ {\setbox\scratchbox\vbox
+ {\splitdiscards
+ \unskip
+ \ifdim\lastskip>\splitofftabulatebetweenskip
+ \global\splitofftabulatebetweenskip\lastskip
+ \fi}}
+
+\def\splitofftabulatebox
{\dontcomplain
- \global\setbox\tabulatebox % % % global ? % % %
- \vsplit\tablebox\tabulatecolumn to \lineheight
- \setbox\tabulatebox\normalvbox
+ \global\setbox\tabulatebox\vsplit\tablebox\tabulatecolumn to \lineheight % % % global ? % % %
+ \setbox\tabulatebox\vbox
{\unvbox\tabulatebox}%
+ \ifconditional\splitofftabulatewhitespace
+ \checktabulatewhitespace
+ \fi
\setbox\tabulatebox\hbox to \wd\tabulatebox
{\iftrialtypesetting\else\ifconditional\tabulatehascolors\repeatsettabulatecolor\fi\fi
\hss\dotabulatehook{\box\tabulatebox}\hss}%
@@ -726,8 +749,13 @@
\fi \fi
\fi}
-\def\handletabulatepbreak
- {\tabulatenoalign{\dohandletabulatepbreak}}
+\def\handletabulatepbreak % overloads previous
+ {\starttabulatenoalign
+ \dohandletabulatepbreak
+ \ifconditional\splitofftabulatewhitespace
+ \flushtabulatewhitespace
+ \fi
+ \stoptabulatenoalign}
%D \startbuffer
%D \starttabulate[|c|p|p|]
@@ -1803,6 +1831,53 @@
\appendtoks\let\TB\TabulateTB\to\everytabulate
+%D Some new trickery:
+%D
+%D \startbuffer
+%D \settrue\splitofftabulatewhitespace
+%D
+%D \starttabulate[|p(2cm)|p(2cm)|p(2cm)|]
+%D \NC test 1a \NC test 2a \NC test 3a
+%D \par
+%D test 3b \NC \NR
+%D \NC test 1a \NC test 2a \NC test 3a
+%D \blank[line]
+%D test 3b \NC \NR
+%D \NC test 1a \NC test 2a \NC test 3a
+%D \blank[halfline]
+%D test 3b
+%D \blank[halfline]
+%D test 3c \NC \NR
+%D \NC \blank \NC \blank \NC \blank \NC \NR
+%D \NC test 1a \NC test 2a \NC test 3a
+%D \blank[halfline]
+%D test 3b
+%D \blank[halfline]
+%D test 3c \NC \NR
+%D \NC \blank \NC \blank \NC \NC \NR
+%D \NC test 1a
+%D \par
+%D test 1b
+%D \par
+%D test 1b \NC test 2a
+%D \par
+%D test 2b
+%D \par
+%D test 2b \NC test 3a \NC \NR
+%D \NC test 1a
+%D \blank
+%D test 1b
+%D \par
+%D test 1b \NC test 2a
+%D \par
+%D test 2b
+%D \blank
+%D test 2b \NC test 3a \NC \NR
+%D \stoptabulate
+%D \stopbuffer
+%D
+%D \typebuffer \start \getbuffer \stop
+
% \starttabulatie[|mc|]
% \NC \digits{100.000,00} \NC\NR
% \NC \digits{@10.000,00} \NC\NR
diff --git a/tex/context/base/tabl-tsp.mkii b/tex/context/base/tabl-tsp.mkii
index 49bb7ad90..59e9185e8 100644
--- a/tex/context/base/tabl-tsp.mkii
+++ b/tex/context/base/tabl-tsp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Splitting,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/tabl-tsp.mkiv b/tex/context/base/tabl-tsp.mkiv
index d274df6cb..47984a8be 100644
--- a/tex/context/base/tabl-tsp.mkiv
+++ b/tex/context/base/tabl-tsp.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Splitting,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua
index c1c22e8cc..730b5c4dc 100644
--- a/tex/context/base/task-ini.lua
+++ b/tex/context/base/task-ini.lua
@@ -17,6 +17,7 @@ local disableaction = tasks.disableaction
local freezegroup = tasks.freezegroup
local freezecallbacks = callbacks.freeze
+appendaction("processors", "normalizers", "typesetters.characters.handler") -- always on
appendaction("processors", "normalizers", "fonts.collections.process") -- todo
appendaction("processors", "normalizers", "fonts.checkers.missing") -- disabled
@@ -51,6 +52,8 @@ appendaction("shipouts", "normalizers", "structures.tags.handler")
appendaction("shipouts", "normalizers", "nodes.handlers.accessibility") -- disabled
appendaction("shipouts", "normalizers", "nodes.handlers.backgrounds") -- disabled
+--~ appendaction("shipouts", "normalizers", "nodes.handlers.export") -- disabled
+
appendaction("shipouts", "finishers", "attributes.colors.handler") -- disabled
appendaction("shipouts", "finishers", "attributes.transparencies.handler") -- disabled
appendaction("shipouts", "finishers", "attributes.colorintents.handler") -- disabled
@@ -60,6 +63,7 @@ appendaction("shipouts", "finishers", "attributes.viewerlayers.handler")
appendaction("math", "normalizers", "noads.handlers.unscript", nil, "nohead") -- always on (maybe disabled)
appendaction("math", "normalizers", "noads.handlers.relocate", nil, "nohead") -- always on
+appendaction("math", "normalizers", "noads.handlers.render", nil, "nohead") -- always on
appendaction("math", "normalizers", "noads.handlers.collapse", nil, "nohead") -- always on
appendaction("math", "normalizers", "noads.handlers.resize", nil, "nohead") -- always on
appendaction("math", "normalizers", "noads.handlers.respace", nil, "nohead") -- always on
@@ -72,6 +76,7 @@ appendaction("math", "builders", "builders.kernel.mlist_to_hlist")
appendaction("finalizers", "lists", "nodes.handlers.graphicvadjust") -- todo
appendaction("finalizers", "fonts", "builders.paragraphs.solutions.splitters.optimize") -- experimental
+appendaction("finalizers", "lists", "builders.paragraphs.tag")
-- still experimental
@@ -111,6 +116,8 @@ disableaction("shipouts", "nodes.handlers.cleanuppage")
disableaction("shipouts", "nodes.references.handler")
disableaction("shipouts", "nodes.destinations.handler")
+--~ disableaction("shipouts", "nodes.handlers.export")
+
disableaction("mvlbuilders", "nodes.handlers.migrate")
disableaction("processors", "builders.paragraphs.solutions.splitters.split")
@@ -118,6 +125,7 @@ disableaction("processors", "builders.paragraphs.solutions.splitters.split")
disableaction("finalizers", "builders.paragraphs.solutions.splitters.optimize")
disableaction("finalizers", "nodes.handlers.graphicvadjust") -- sort of obsolete
+disableaction("finalizers", "builders.paragraphs.tag")
disableaction("math", "noads.handlers.tags")
freezecallbacks("find_.*_file", "find file using resolver")
diff --git a/tex/context/base/task-ini.mkiv b/tex/context/base/task-ini.mkiv
index ef32ee87d..6cdbe739f 100644
--- a/tex/context/base/task-ini.mkiv
+++ b/tex/context/base/task-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/toks-ini.mkiv b/tex/context/base/toks-ini.mkiv
index 2aa2ed4a6..70c4940e3 100644
--- a/tex/context/base/toks-ini.mkiv
+++ b/tex/context/base/toks-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/trac-deb.mkiv b/tex/context/base/trac-deb.mkiv
index 2eb44247a..89ec43694 100644
--- a/tex/context/base/trac-deb.mkiv
+++ b/tex/context/base/trac-deb.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Debugger,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/trac-tex.mkiv b/tex/context/base/trac-tex.mkiv
index 37eca9123..585419701 100644
--- a/tex/context/base/trac-tex.mkiv
+++ b/tex/context/base/trac-tex.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\TEX,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/trac-vis.mkii b/tex/context/base/trac-vis.mkii
index 23ded2af9..be7a204ec 100644
--- a/tex/context/base/trac-vis.mkii
+++ b/tex/context/base/trac-vis.mkii
@@ -5,7 +5,7 @@
%D subtitle=Visualization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/trac-vis.mkiv b/tex/context/base/trac-vis.mkiv
index 2056dc635..f4b9583a2 100644
--- a/tex/context/base/trac-vis.mkiv
+++ b/tex/context/base/trac-vis.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Visualization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -261,15 +261,17 @@
\newdimen\tractempheight
\newdimen\tractempdepth
-\def \cutmarklength {2\bodyfontsize}
+\def \cutmarklength {2\bodyfontsize}
\newcount\horizontalcutmarks \horizontalcutmarks = 2
\newcount\verticalcutmarks \verticalcutmarks = 2
\newcount\cutmarkoffset \cutmarkoffset = 1
-\let\cutmarksymbol = \relax
-\let\cutmarktoptext = \empty
-\let\cutmarkbottomtext = \empty
+\let \cutmarksymbol \relax
+\let \cutmarktoptext \empty
+\let \cutmarkbottomtext \empty
+\let \cutmarkhoffset \empty
+\let \cutmarkvoffset \empty
\def\horizontalcuts
{\normalhbox to \tractempwidth
@@ -298,11 +300,12 @@
\normalhss
\normalvbox to \cutmarklength
{\scratchdimen\dimexpr\cutmarklength/2\relax
+ \scratchskip \ifx\cutmarkhoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkhoffset\fi
\normalvss
\hbox to \tractempwidth
- {\llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+ {\llap{\copy\scratchbox\normalhskip\scratchskip}%
\normalhskip\scratchdimen\hss\infofont#1\hss\normalhskip\scratchdimen
- \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}%
+ \rlap{\normalhskip\scratchskip\copy\scratchbox}}%
\normalvss}%
\normalhss}}
@@ -319,21 +322,29 @@
\hsize\tractempwidth
\setbox\scratchbox\normalvbox
{\setbox\scratchbox\normalhbox{\horizontalcuts}%
- \normalvskip\dimexpr-\cutmarkoffset\scratchdimen-2\scratchdimen\relax
- \copy\scratchbox
- \normalvskip\cutmarkoffset\scratchdimen
+ \scratchskip\ifx\cutmarkvoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkvoffset\fi
+% \normalvskip\dimexpr-\scratchskip-2\scratchdimen\relax
+% \copy\scratchbox
+% \normalvskip\scratchskip
+ \tlap{\copy\scratchbox\normalvskip\scratchskip}%
\hbox to \tractempwidth
- {\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}%
+ {\scratchskip\ifx\cutmarkhoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkhoffset\fi
+ \setbox\scratchbox\normalhbox{\verticalcuts}%
+ \llap{\copy\scratchbox\normalhskip\scratchskip}%
+ \ifdim\tractempdepth=\zeropoint
+ \normalhfill
+ \else
+ \bgroup
+ \setbox\scratchbox\normalhbox{\baselinecuts}%
+ \llap{\copy\scratchbox\normalhskip\scratchskip}%
+ \normalhfill
+ \rlap{\normalhskip\scratchskip\copy\scratchbox}%
+ \egroup
+ \fi
+ \rlap{\normalhskip\scratchskip\copy\scratchbox}}%
+% \normalvskip\scratchskip
+% \copy\scratchbox}%
+ \blap{\normalvskip\scratchskip\copy\scratchbox}}%
\ht\scratchbox\tractempheight
\dp\scratchbox\tractempdepth
\wd\scratchbox\zeropoint
@@ -341,13 +352,14 @@
\box\scratchbox
\ifx\cutmarksymbol\relax \else
\setbox\scratchbox\normalvbox
- {\vskip-\cutmarkoffset\scratchdimen
+ {\scratchskip\ifx\cutmarkvoffset\empty\cutmarkoffset\scratchdimen\else\cutmarkvoffset\fi
+ \vskip-\scratchskip
\vskip-\cutmarklength
\normalhbox{\cutmarksymbols\cutmarktoptext}%
- \vskip\cutmarkoffset\scratchdimen
+ \vskip\scratchskip
\vskip\tractempheight
\vskip\tractempdepth
- \vskip\cutmarkoffset\scratchdimen
+ \vskip\scratchskip
\normalhbox{\cutmarksymbols\cutmarkbottomtext}}%
\ht\scratchbox\tractempheight
\dp\scratchbox\tractempdepth
diff --git a/tex/context/base/type-buy.mkii b/tex/context/base/type-buy.mkii
index 56fc92e62..b8518acb0 100644
--- a/tex/context/base/type-buy.mkii
+++ b/tex/context/base/type-buy.mkii
@@ -5,7 +5,7 @@
%D subtitle=A Few Commercial Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-buy.mkiv b/tex/context/base/type-buy.mkiv
index becc4361c..c1902205c 100644
--- a/tex/context/base/type-buy.mkiv
+++ b/tex/context/base/type-buy.mkiv
@@ -5,7 +5,7 @@
%D subtitle=A Few Commercial Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-cbg.mkii b/tex/context/base/type-cbg.mkii
index 93cfa077e..a45a71d4e 100644
--- a/tex/context/base/type-cbg.mkii
+++ b/tex/context/base/type-cbg.mkii
@@ -5,7 +5,7 @@
%D subtitle=CB Greek,
%D author={Giuseppe Bilotta, Hans Hagen},
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-cow.mkii b/tex/context/base/type-cow.mkii
index 507386443..f46ac968b 100644
--- a/tex/context/base/type-cow.mkii
+++ b/tex/context/base/type-cow.mkii
@@ -5,7 +5,7 @@
%D subtitle=Cow Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-cow.mkiv b/tex/context/base/type-cow.mkiv
index 5215e7122..1cb825a11 100644
--- a/tex/context/base/type-cow.mkiv
+++ b/tex/context/base/type-cow.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Cow Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-def.mkii b/tex/context/base/type-def.mkii
index f31c93e50..0ff1e0b7d 100644
--- a/tex/context/base/type-def.mkii
+++ b/tex/context/base/type-def.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-def.mkiv b/tex/context/base/type-def.mkiv
index c980a4ee5..52922dad1 100644
--- a/tex/context/base/type-def.mkiv
+++ b/tex/context/base/type-def.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-exp.mkii b/tex/context/base/type-exp.mkii
index dae770e98..c7c6e4b45 100644
--- a/tex/context/base/type-exp.mkii
+++ b/tex/context/base/type-exp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Experimental Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-fsf.mkii b/tex/context/base/type-fsf.mkii
index 7813b7b5d..6782d3dcf 100644
--- a/tex/context/base/type-fsf.mkii
+++ b/tex/context/base/type-fsf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Fontsite 500,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-ghz.mkii b/tex/context/base/type-ghz.mkii
index 7e31096ee..3778cd964 100644
--- a/tex/context/base/type-ghz.mkii
+++ b/tex/context/base/type-ghz.mkii
@@ -5,7 +5,7 @@
%D subtitle=Hermann Zapf's Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-ghz.mkiv b/tex/context/base/type-ghz.mkiv
index 34a3aa53c..0722c1dfe 100644
--- a/tex/context/base/type-ghz.mkiv
+++ b/tex/context/base/type-ghz.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Hermann Zapf's Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-ini.mkii b/tex/context/base/type-ini.mkii
index d15bb565b..c6b0a8931 100644
--- a/tex/context/base/type-ini.mkii
+++ b/tex/context/base/type-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-ini.mkiv b/tex/context/base/type-ini.mkiv
index 46b46976d..389ca3980 100644
--- a/tex/context/base/type-ini.mkiv
+++ b/tex/context/base/type-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-lua.mkiv b/tex/context/base/type-lua.mkiv
index a6799671e..1ce3f80fb 100644
--- a/tex/context/base/type-lua.mkiv
+++ b/tex/context/base/type-lua.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\MKIV\ goodies,
%D author=Hans Hagen \& Wolfgang Schuster,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-lucidanova.mkiv b/tex/context/base/type-lucidanova.mkiv
new file mode 100644
index 000000000..c59f560d9
--- /dev/null
+++ b/tex/context/base/type-lucidanova.mkiv
@@ -0,0 +1,89 @@
+%D \module
+%D [ file=type-lucidanova,
+%D version=2011.05.18,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Lucida Nova Opentype,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% NOTA BENE: class feattures and goodies get expanded!
+
+\starttypescriptcollection[lucidanova]
+
+ \starttypescript [\s!math] [lucidanova]
+ \definefontsynonym [MathRoman] [\s!file:LucidaMath.otf] [\s!features=\s!math\mathsizesuffix,\s!goodies=lucidanova-math]
+ \stoptypescript
+
+ \starttypescript [\s!serif] [lucidanova]
+ \definefontsynonym [\s!Serif] [\s!file:LucidaBright.otf]
+ \definefontsynonym [\s!SerifBold] [\s!file:LucidaBright-Demi.otf]
+ \definefontsynonym [\s!SerifItalic] [\s!file:LucidaBright-Italic.otf]
+ \definefontsynonym [\s!SerifBoldItalic] [\s!file:LucidaBright-DemiItalic.otf]
+ \definefontsynonym [\s!SerifSlanted] [\s!SerifItalic]
+ \definefontsynonym [\s!SerifBoldSlanted] [\s!SerifBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!sans] [lucidanova]
+ \definefontsynonym [\s!Sans] [\s!file:LucidaSans.otf]
+ \definefontsynonym [\s!SansBold] [\s!file:LucidaSans-Bold.otf]
+ \definefontsynonym [\s!SansItalic] [\s!file:LucidaSans-Oblique.otf]
+ \definefontsynonym [\s!SansBoldItalic] [\s!file:LucidaSans-BoldOblique.otf]
+ \definefontsynonym [\s!SansSlanted] [\s!MonoItalic]
+ \definefontsynonym [\s!SansBoldSlanted] [\s!MonoBoldItalic]
+ \stoptypescript
+
+ \starttypescript [\s!mono] [lucidanova]
+ \definefontsynonym [\s!Mono] [\s!file:LucidaSans-Typewriter.otf]
+ \definefontsynonym [\s!MonoBold] [\s!file:LucidaSans-TypewriterBold.otf]
+ \definefontsynonym [\s!MonoItalic] [\s!file:LucidaSans-TypewriterOblique.otf]
+ \definefontsynonym [\s!MonoBoldItalic] [\s!file:LucidaSans-TypewriterBoldOblique.otf]
+ \definefontsynonym [\s!MonoSlanted] [\s!MonoItalic]
+ \definefontsynonym [\s!MonoBoldSlanted] [\s!MonoBoldItalic]
+ \stoptypescript
+
+ \starttypescript [handwriting] [lucidanova]
+ \definefontsynonym [LucidaHandwriting] [\s!name:LucidaHandwriting-Italic]
+ \definefontsynonym [Handwriting] [LucidaHandwriting]
+ \stoptypescript
+
+ \starttypescript [lucidanova]
+ %\loadfontgoodies[lucidanova-math]
+ \definetypeface [lucidanova] [rm] [\s!serif] [lucidanova] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucidanova] [ss] [\s!sans] [lucidanova] [\s!default] [\s!features=\s!default]
+ \definetypeface [lucidanova] [tt] [\s!mono] [lucidanova] [\s!default] [\s!features=\s!none]
+ \definetypeface [lucidanova] [mm] [\s!math] [lucidanova] [\s!default]
+ \stoptypescript
+
+ % for the moment here:
+
+ \setupmathrendering
+ [lucidanova]
+ [it=italic]
+
+\stoptypescriptcollection
+
+\endinput
+
+\starttext
+
+ \setupbodyfont[lucidanova]
+
+% \showfont[Serif][all]
+% \showfont[MathRoman][all]
+
+ \usemodule[fnt-31]
+
+ \startluacode
+ fonts.tracers.coverage {
+ "LucidaMath.otf",
+ "LucidaBright.otf",
+ "LucidaSans-Typewriter.otf",
+ }
+ \stopluacode
+
+\stoptext
diff --git a/tex/context/base/type-mac.mkii b/tex/context/base/type-mac.mkii
index ac57726cb..e8abf09b9 100644
--- a/tex/context/base/type-mac.mkii
+++ b/tex/context/base/type-mac.mkii
@@ -5,7 +5,7 @@
%D subtitle=Mac OS X Definitions,
%D author=Wolfgang Schuster,
%D date=\currentdate,
-%D copyright=Wolfgang Schuster]
+%D copyright={Wolfgang Schuster}]
%C
%C This module is part of the \CONTEXT\ macro||package. See
%C mreadme.pdf for details.
diff --git a/tex/context/base/type-mac.mkiv b/tex/context/base/type-mac.mkiv
index 9856439da..e95c48649 100644
--- a/tex/context/base/type-mac.mkiv
+++ b/tex/context/base/type-mac.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Mac OS X Definitions,
%D author=Wolfgang Schuster,
%D date=\currentdate,
-%D copyright=Wolfgang Schuster]
+%D copyright={Wolfgang Schuster}]
%C
%C This module is part of the \CONTEXT\ macro||package. See
%C mreadme.pdf for details.
diff --git a/tex/context/base/type-one.mkii b/tex/context/base/type-one.mkii
index f1e94fd79..c6cb5fd61 100644
--- a/tex/context/base/type-one.mkii
+++ b/tex/context/base/type-one.mkii
@@ -5,7 +5,7 @@
%D subtitle=Type One Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-one.mkiv b/tex/context/base/type-one.mkiv
index fa5d9b08a..8e8e82c5b 100644
--- a/tex/context/base/type-one.mkiv
+++ b/tex/context/base/type-one.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Type One Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-otf.mkii b/tex/context/base/type-otf.mkii
index 0a43061f7..3bc082695 100644
--- a/tex/context/base/type-otf.mkii
+++ b/tex/context/base/type-otf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Opentype Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-otf.mkiv b/tex/context/base/type-otf.mkiv
index 71f8cd1e3..0ef85ad88 100644
--- a/tex/context/base/type-otf.mkiv
+++ b/tex/context/base/type-otf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Opentype Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-pre.mkii b/tex/context/base/type-pre.mkii
index ad2109a65..99db52c2f 100644
--- a/tex/context/base/type-pre.mkii
+++ b/tex/context/base/type-pre.mkii
@@ -5,7 +5,7 @@
%D subtitle=Compatibility scripts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-run.mkii b/tex/context/base/type-run.mkii
index 1b64c102e..51a9f2a88 100644
--- a/tex/context/base/type-run.mkii
+++ b/tex/context/base/type-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-run.mkiv b/tex/context/base/type-run.mkiv
index 60061bcbe..4da633371 100644
--- a/tex/context/base/type-run.mkiv
+++ b/tex/context/base/type-run.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Runtime Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-set.mkii b/tex/context/base/type-set.mkii
index 2845b1dbb..7f34deada 100644
--- a/tex/context/base/type-set.mkii
+++ b/tex/context/base/type-set.mkii
@@ -5,7 +5,7 @@
%D subtitle=Default Settings,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-set.mkiv b/tex/context/base/type-set.mkiv
index a67be14af..562c29a4f 100644
--- a/tex/context/base/type-set.mkiv
+++ b/tex/context/base/type-set.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Default Settings,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-siz.mkii b/tex/context/base/type-siz.mkii
index 831019e95..4c3cfb28b 100644
--- a/tex/context/base/type-siz.mkii
+++ b/tex/context/base/type-siz.mkii
@@ -5,7 +5,7 @@
%D subtitle=Sizing scripts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-siz.mkiv b/tex/context/base/type-siz.mkiv
index 35bc8fb44..040579675 100644
--- a/tex/context/base/type-siz.mkiv
+++ b/tex/context/base/type-siz.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Sizing scripts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-tmf.mkii b/tex/context/base/type-tmf.mkii
index af9280c73..829b6baec 100644
--- a/tex/context/base/type-tmf.mkii
+++ b/tex/context/base/type-tmf.mkii
@@ -5,7 +5,7 @@
%D subtitle=Core \TEX\ Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-tmf.mkiv b/tex/context/base/type-tmf.mkiv
index af9280c73..829b6baec 100644
--- a/tex/context/base/type-tmf.mkiv
+++ b/tex/context/base/type-tmf.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Core \TEX\ Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-win.mkii b/tex/context/base/type-win.mkii
index cb0ad19f5..ae6909820 100644
--- a/tex/context/base/type-win.mkii
+++ b/tex/context/base/type-win.mkii
@@ -5,7 +5,7 @@
%D subtitle=Microsoft Windows Fonts,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/type-win.mkiv b/tex/context/base/type-win.mkiv
index 3f06fa4db..636f6f0a5 100644
--- a/tex/context/base/type-win.mkiv
+++ b/tex/context/base/type-win.mkiv
@@ -5,7 +5,7 @@
%D subtitle=MS Windows Definitions,
%D author=Vyatcheslav Yatskovsky,
%D date=\currentdate,
-%D copyright=Vyatcheslav Yatskovsky]
+%D copyright={Vyatcheslav Yatskovsky}]
%C
%C This module is part of the \CONTEXT\ macro||package. See
%C mreadme.pdf for details.
diff --git a/tex/context/base/type-xtx.mkii b/tex/context/base/type-xtx.mkii
index 0ee0130f7..d8b5f9c2a 100644
--- a/tex/context/base/type-xtx.mkii
+++ b/tex/context/base/type-xtx.mkii
@@ -5,7 +5,7 @@
%D subtitle=\XETEX's font treasures,
%D author=Adam T. Lindsay,
%D date=\currentdate,
-%D copyright={Adam T. Lindsay / PRAGMA}]
+%D copyright={Adam Lindsay \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-brk.mkiv b/tex/context/base/typo-brk.mkiv
index 4c21093ec..cd2db6212 100644
--- a/tex/context/base/typo-brk.mkiv
+++ b/tex/context/base/typo-brk.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Breakpoints,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-cap.mkiv b/tex/context/base/typo-cap.mkiv
index 1b3e0df26..8a50bedef 100644
--- a/tex/context/base/typo-cap.mkiv
+++ b/tex/context/base/typo-cap.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Capping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-cln.mkiv b/tex/context/base/typo-cln.mkiv
index d247b20d2..038ebf2c5 100644
--- a/tex/context/base/typo-cln.mkiv
+++ b/tex/context/base/typo-cln.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Cleaning,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-dig.mkiv b/tex/context/base/typo-dig.mkiv
index 6e0299291..03be1bffc 100644
--- a/tex/context/base/typo-dig.mkiv
+++ b/tex/context/base/typo-dig.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Digits,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-dir.mkiv b/tex/context/base/typo-dir.mkiv
index b4e7cb67f..9d6935962 100644
--- a/tex/context/base/typo-dir.mkiv
+++ b/tex/context/base/typo-dir.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Directions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-ini.mkii b/tex/context/base/typo-ini.mkii
index 1317021ef..6e19fb9b6 100644
--- a/tex/context/base/typo-ini.mkii
+++ b/tex/context/base/typo-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-ini.mkiv b/tex/context/base/typo-ini.mkiv
index 10be16053..8c288bb63 100644
--- a/tex/context/base/typo-ini.mkiv
+++ b/tex/context/base/typo-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-krn.mkiv b/tex/context/base/typo-krn.mkiv
index bb4a48a5d..5d1ed1f79 100644
--- a/tex/context/base/typo-krn.mkiv
+++ b/tex/context/base/typo-krn.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Spacing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-mar.mkiv b/tex/context/base/typo-mar.mkiv
index aba3ef95a..5abe6f032 100644
--- a/tex/context/base/typo-mar.mkiv
+++ b/tex/context/base/typo-mar.mkiv
@@ -7,7 +7,7 @@
%D subtitle=Margindata,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-rep.mkiv b/tex/context/base/typo-rep.mkiv
index 75902d7be..c13d7eeb7 100644
--- a/tex/context/base/typo-rep.mkiv
+++ b/tex/context/base/typo-rep.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Stripping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/typo-spa.mkiv b/tex/context/base/typo-spa.mkiv
index 7a72e95ad..b660d54a9 100644
--- a/tex/context/base/typo-spa.mkiv
+++ b/tex/context/base/typo-spa.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Spacing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-000.mkii b/tex/context/base/unic-000.mkii
index cb4c1fe8a..4ef570445 100644
--- a/tex/context/base/unic-000.mkii
+++ b/tex/context/base/unic-000.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 0,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-001.mkii b/tex/context/base/unic-001.mkii
index e37de9136..198a8d98d 100644
--- a/tex/context/base/unic-001.mkii
+++ b/tex/context/base/unic-001.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 1,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-002.mkii b/tex/context/base/unic-002.mkii
index ae7deb12a..906975f86 100644
--- a/tex/context/base/unic-002.mkii
+++ b/tex/context/base/unic-002.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 2,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-003.mkii b/tex/context/base/unic-003.mkii
index 3f994a662..ad7d6df6a 100644
--- a/tex/context/base/unic-003.mkii
+++ b/tex/context/base/unic-003.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 3,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-004.mkii b/tex/context/base/unic-004.mkii
index 67ce87728..7b413cdb9 100644
--- a/tex/context/base/unic-004.mkii
+++ b/tex/context/base/unic-004.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 4,
%D author=Mikael Persson \& Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-005.mkii b/tex/context/base/unic-005.mkii
index d15b74dbe..e21edb205 100644
--- a/tex/context/base/unic-005.mkii
+++ b/tex/context/base/unic-005.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 5,
%D author=Adam Lindsay,
%D date=\currentdate,
-%D copyright=\PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-030.mkii b/tex/context/base/unic-030.mkii
index ef42c807a..0065a738a 100644
--- a/tex/context/base/unic-030.mkii
+++ b/tex/context/base/unic-030.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 30,
%D author=Adam Lindsay,
%D date=\currentdate,
-%D copyright={PRAGMA / Adam Lindsay}]
+%D copyright={Adam Lindsay \& Hans Hagen}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-031.mkii b/tex/context/base/unic-031.mkii
index 13fd47a54..68d163324 100644
--- a/tex/context/base/unic-031.mkii
+++ b/tex/context/base/unic-031.mkii
@@ -4,7 +4,8 @@
%D title=\CONTEXT\ \UNICODE\ Macros,
%D subtitle=Vector 31,
%D author=Thomas A. Schmitz,
-%D date=\currentdate]
+%D date=\currentdate,
+%D copyright={Thomas A. Schmitz}]
\unprotect
diff --git a/tex/context/base/unic-032.mkii b/tex/context/base/unic-032.mkii
index 32c25e4e2..6bd176c80 100644
--- a/tex/context/base/unic-032.mkii
+++ b/tex/context/base/unic-032.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 32,
%D author={Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-033.mkii b/tex/context/base/unic-033.mkii
index 91311a029..ad7a3b11f 100644
--- a/tex/context/base/unic-033.mkii
+++ b/tex/context/base/unic-033.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 33,
%D author={Nikolai Weibull \& Hans Hagen \& Taco Hoekwater},
%D date=\currentdate,
-%D copyright={PRAGMA / Nikolai Weibull}]
+%D copyright={Nikolai Weibull \& Hans Hagen}]
\unprotect
@@ -92,7 +92,7 @@
\unknownchar \or % 214D
\unknownchar \or % 214E
\unknownchar \or % 214F
- \unknownchar \or % 2150
+ \unknownchar \or % 2150
\unknownchar \or % 2151
\unknownchar \or % 2152
\unic@fractiononethird \or % 2153 VULGAR FRACTION ONE THIRD
@@ -143,7 +143,7 @@
\unic@romannumeralonethousandCD \or % 2180 ROMAN NUMERAL ONE THOUSAND C D
\unic@romannumeralfivethousand \or % 2181 ROMAN NUMERAL FIVE THOUSAND
\unic@romannumeraltenthousand \or % 2182 ROMAN NUMERAL TEN THOUSAND
- \unic@romannumeralreversedonehundred\or % 2183 ROMAN NUMERAL REVERSED ONE HUNDRED
+ \unic@romannumeralreversedonehundred\or % 2183 ROMAN NUMERAL REVERSED ONE HUNDRED
\unknownchar \or % 2184
\unknownchar \or % 2185
\unknownchar \or % 2186
diff --git a/tex/context/base/unic-034.mkii b/tex/context/base/unic-034.mkii
index fece26bff..f998c5170 100644
--- a/tex/context/base/unic-034.mkii
+++ b/tex/context/base/unic-034.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 34,
%D author=Nikolai Weibull,
%D date=\currentdate,
-%D copyright={PRAGMA / Nikolai Weibull}]
+%D copyright={Nikolai Weibull \& Hans Hagen}]
\unprotect
diff --git a/tex/context/base/unic-035.mkii b/tex/context/base/unic-035.mkii
index 272799512..0c9490174 100644
--- a/tex/context/base/unic-035.mkii
+++ b/tex/context/base/unic-035.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 35,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
\unprotect
diff --git a/tex/context/base/unic-037.mkii b/tex/context/base/unic-037.mkii
index 87f655a68..646a4afb2 100644
--- a/tex/context/base/unic-037.mkii
+++ b/tex/context/base/unic-037.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 37,
%D author=Luigi Scarso,
%D date=\currentdate,
-%D copyright={PRAGMA}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-039.mkii b/tex/context/base/unic-039.mkii
index bcf649090..02d5d3af2 100644
--- a/tex/context/base/unic-039.mkii
+++ b/tex/context/base/unic-039.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 39,
%D author=Nikolai Weibull,
%D date=\currentdate,
-%D copyright={PRAGMA / Nikolai Weibull}]
+%D copyright={Nikolai Weibull \& Hans Hagen}]
\unprotect
diff --git a/tex/context/base/unic-251.mkii b/tex/context/base/unic-251.mkii
index 150ade456..909cf5e94 100644
--- a/tex/context/base/unic-251.mkii
+++ b/tex/context/base/unic-251.mkii
@@ -5,7 +5,7 @@
%D subtitle=Vector 251,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA-ADE]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
\unprotect
diff --git a/tex/context/base/unic-cjk.mkii b/tex/context/base/unic-cjk.mkii
index 786546318..dc06e912c 100644
--- a/tex/context/base/unic-cjk.mkii
+++ b/tex/context/base/unic-cjk.mkii
@@ -5,7 +5,7 @@
%D subtitle=CJK Vectors,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-exp.mkii b/tex/context/base/unic-exp.mkii
index 027aedab8..4bdda3f6f 100644
--- a/tex/context/base/unic-exp.mkii
+++ b/tex/context/base/unic-exp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Expansion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-ini.mkii b/tex/context/base/unic-ini.mkii
index 7e358341d..96aed77bc 100644
--- a/tex/context/base/unic-ini.mkii
+++ b/tex/context/base/unic-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-ini.mkiv b/tex/context/base/unic-ini.mkiv
index 62fd82242..a46d264ae 100644
--- a/tex/context/base/unic-ini.mkiv
+++ b/tex/context/base/unic-ini.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\UNICODE\ \& UTF-8 support,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/unic-run.mkii b/tex/context/base/unic-run.mkii
index 09c701511..96348d8a7 100644
--- a/tex/context/base/unic-run.mkii
+++ b/tex/context/base/unic-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Goodies,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/util-tab.lua b/tex/context/base/util-tab.lua
index 818266d3c..2aa0b34f0 100644
--- a/tex/context/base/util-tab.lua
+++ b/tex/context/base/util-tab.lua
@@ -10,7 +10,7 @@ utilities = utilities or {}
utilities.tables = utilities.tables or { }
local tables = utilities.tables
-local format, gmatch = string.format, string.gmatch
+local format, gmatch, rep = string.format, string.gmatch, string.rep
local concat, insert, remove = table.concat, table.insert, table.remove
local setmetatable, getmetatable, tonumber, tostring = setmetatable, getmetatable, tonumber, tostring
@@ -79,11 +79,11 @@ end
-- experimental
-local function toxml(t,d,result)
+local function toxml(t,d,result,step)
for k, v in table.sortedpairs(t) do
if type(v) == "table" then
result[#result+1] = format("%s<%s>",d,k)
- toxml(v,d.." ",result)
+ toxml(v,d..step,result)
result[#result+1] = format("%s</%s>",d,k)
elseif tonumber(k) then
result[#result+1] = format("%s<entry n='%s'>%s</entry>",d,k,v,k)
@@ -93,13 +93,15 @@ local function toxml(t,d,result)
end
end
-function table.toxml(t,name,nobanner)
+function table.toxml(t,name,nobanner,indent,spaces)
local noroot = name == false
local result = (nobanner or noroot) and { } or { "<?xml version='1.0' standalone='yes' ?>" }
+ local indent = rep(" ",indent or 0)
+ local spaces = rep(" ",spaces or 1)
if noroot then
- toxml( t, "", result)
+ toxml( t, inndent, result, spaces)
else
- toxml( { [name or "root"] = t }, "", result)
+ toxml( { [name or "root"] = t }, indent, result, spaces)
end
return concat(result,"\n")
end
diff --git a/tex/context/base/verb-c.mkii b/tex/context/base/verb-c.mkii
index 1ecb0afc2..930977ca4 100644
--- a/tex/context/base/verb-c.mkii
+++ b/tex/context/base/verb-c.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty C Verbatim,
%D author=Nikolai Weibull,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-ini.mkii b/tex/context/base/verb-ini.mkii
index 829e10fd8..5a817b4bb 100644
--- a/tex/context/base/verb-ini.mkii
+++ b/tex/context/base/verb-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-js.mkii b/tex/context/base/verb-js.mkii
index e497e475b..c249bd9bb 100644
--- a/tex/context/base/verb-js.mkii
+++ b/tex/context/base/verb-js.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty \JAVASCRIPT\ Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-jv.mkii b/tex/context/base/verb-jv.mkii
index ee79e5c03..2149c3a4a 100644
--- a/tex/context/base/verb-jv.mkii
+++ b/tex/context/base/verb-jv.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty \JAVA\ Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-mp.mkii b/tex/context/base/verb-mp.mkii
index 7affaf0c4..aef52217d 100644
--- a/tex/context/base/verb-mp.mkii
+++ b/tex/context/base/verb-mp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty \METAPOST\ Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-pl.mkii b/tex/context/base/verb-pl.mkii
index 47ce9a54f..634a0a314 100644
--- a/tex/context/base/verb-pl.mkii
+++ b/tex/context/base/verb-pl.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty \PERL\ Verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/verb-tex.mkii b/tex/context/base/verb-tex.mkii
index 75e99fcef..98655cc2d 100644
--- a/tex/context/base/verb-tex.mkii
+++ b/tex/context/base/verb-tex.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty \TEX\ verbatim,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-asciimath.mkiv b/tex/context/base/x-asciimath.mkiv
index fac3980a0..23caf13aa 100644
--- a/tex/context/base/x-asciimath.mkiv
+++ b/tex/context/base/x-asciimath.mkiv
@@ -5,7 +5,7 @@
%D subtitle=AsciiMath,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-calcmath.mkii b/tex/context/base/x-calcmath.mkii
index 68119b2fd..a649aa648 100644
--- a/tex/context/base/x-calcmath.mkii
+++ b/tex/context/base/x-calcmath.mkii
@@ -5,7 +5,7 @@
%D subtitle=Calculator Math,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-calcmath.mkiv b/tex/context/base/x-calcmath.mkiv
index 7dfa60e0e..ce4f95ad2 100644
--- a/tex/context/base/x-calcmath.mkiv
+++ b/tex/context/base/x-calcmath.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Calculator Math,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-cals.lua b/tex/context/base/x-cals.lua
index 904dc39c9..ba6d705bf 100644
--- a/tex/context/base/x-cals.lua
+++ b/tex/context/base/x-cals.lua
@@ -126,6 +126,8 @@ end
function cals.table(root,namespace)
local prefix = (namespace or "cals") .. ":"
+
+ local prefix = namespace and namespace ~= "" and (namespace .. ":") or ""
local p = "/" .. prefix
local tgroupspec = p .. "tgroup"
@@ -134,7 +136,7 @@ function cals.table(root,namespace)
local hcolspec = p .. "thead" .. p .. "colspec"
local bcolspec = p .. "tbody" .. p .. "colspec"
local fcolspec = p .. "tfoot" .. p .. "colspec"
- local entryspec = p .. "entry" .. "|" ..prefix .. "entrytbl"
+ local entryspec = p .. "entry" .. "|" .. prefix .. "entrytbl" -- shouldn't that be p ?
local hrowspec = p .. "thead" .. p .. "row"
local browspec = p .. "tbody" .. p .. "row"
local frowspec = p .. "tfoot" .. p .. "row"
diff --git a/tex/context/base/x-cals.mkiv b/tex/context/base/x-cals.mkiv
index e0d2ac11f..4b9195fad 100644
--- a/tex/context/base/x-cals.mkiv
+++ b/tex/context/base/x-cals.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Cals table renderer,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -29,8 +29,15 @@
\xmlsetfunction {\xmldocument} {cals:table} {moduledata.cals.table}
\stopxmlsetups
+\startxmlsetups xml:cals:nonamespace
+ \xmlsetfunction {\xmldocument} {table} {moduledata.cals.table}
+\stopxmlsetups
+
\xmlregistersetup{xml:cals:process}
\xmlregisterns{cals}{cals}
+%D One can register the nonamespace variant for cases where the cals
+%D model is embedded in the parent DTD.
+
\stopmodule
diff --git a/tex/context/base/x-chemml.mkii b/tex/context/base/x-chemml.mkii
index 68b52cdd1..08d64e54b 100644
--- a/tex/context/base/x-chemml.mkii
+++ b/tex/context/base/x-chemml.mkii
@@ -5,7 +5,7 @@
%D subtitle=Loading CHEMML Filters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-chemml.mkiv b/tex/context/base/x-chemml.mkiv
index 9ad8ed6c1..34aba3011 100644
--- a/tex/context/base/x-chemml.mkiv
+++ b/tex/context/base/x-chemml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=MkIV ChemML renderer,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-contml.mkii b/tex/context/base/x-contml.mkii
index a582d8eb9..22fffa50a 100644
--- a/tex/context/base/x-contml.mkii
+++ b/tex/context/base/x-contml.mkii
@@ -8,7 +8,7 @@
%D subtitle=Basic \CONTEXT\ commands,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-corres.mkii b/tex/context/base/x-corres.mkii
index 09c7263dc..effd79a5b 100644
--- a/tex/context/base/x-corres.mkii
+++ b/tex/context/base/x-corres.mkii
@@ -5,7 +5,7 @@
%D subtitle=Handling Correspondence Base,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-css.mkiv b/tex/context/base/x-css.mkiv
index cc7f8682a..4ea252f9d 100644
--- a/tex/context/base/x-css.mkiv
+++ b/tex/context/base/x-css.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Css Helpers,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-ct.mkiv b/tex/context/base/x-ct.mkiv
index ad20eea05..ef6eb4ea4 100644
--- a/tex/context/base/x-ct.mkiv
+++ b/tex/context/base/x-ct.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\CONTEXT\ Structures,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-dir-01.tex b/tex/context/base/x-dir-01.tex
index b1056fdd5..6e4192a13 100644
--- a/tex/context/base/x-dir-01.tex
+++ b/tex/context/base/x-dir-01.tex
@@ -5,7 +5,7 @@
%D subtitle=Overview (1),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-dir-05.mkii b/tex/context/base/x-dir-05.mkii
index 0d0edd832..53e73c5eb 100644
--- a/tex/context/base/x-dir-05.mkii
+++ b/tex/context/base/x-dir-05.mkii
@@ -5,7 +5,7 @@
%D subtitle=Access,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-dir-05.mkiv b/tex/context/base/x-dir-05.mkiv
index 120f725ca..5a1cfd96b 100644
--- a/tex/context/base/x-dir-05.mkiv
+++ b/tex/context/base/x-dir-05.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Access,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fe.mkii b/tex/context/base/x-fe.mkii
index 8562b1d52..dcf415850 100644
--- a/tex/context/base/x-fe.mkii
+++ b/tex/context/base/x-fe.mkii
@@ -5,7 +5,7 @@
%D subtitle=Simple Extensions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fig-00.mkii b/tex/context/base/x-fig-00.mkii
index d293dc39f..2e000c64c 100644
--- a/tex/context/base/x-fig-00.mkii
+++ b/tex/context/base/x-fig-00.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Loading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fig-01.mkii b/tex/context/base/x-fig-01.mkii
index c2f97fea9..5a2ea20c8 100644
--- a/tex/context/base/x-fig-01.mkii
+++ b/tex/context/base/x-fig-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fig-02.mkii b/tex/context/base/x-fig-02.mkii
index 22d49d27a..a8232fba9 100644
--- a/tex/context/base/x-fig-02.mkii
+++ b/tex/context/base/x-fig-02.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Inclusion (I),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fig-03.mkii b/tex/context/base/x-fig-03.mkii
index 131752823..c7f03453e 100644
--- a/tex/context/base/x-fig-03.mkii
+++ b/tex/context/base/x-fig-03.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Inclusion (II),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-fo.mkii b/tex/context/base/x-fo.mkii
index 83cfe2433..3631f6d7e 100644
--- a/tex/context/base/x-fo.mkii
+++ b/tex/context/base/x-fo.mkii
@@ -5,7 +5,7 @@
%D subtitle=Formatting Objects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-foxet.mkii b/tex/context/base/x-foxet.mkii
index 0f8e43af9..d44cf2b7e 100644
--- a/tex/context/base/x-foxet.mkii
+++ b/tex/context/base/x-foxet.mkii
@@ -5,7 +5,7 @@
%D subtitle=Formatting Objects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-foxet.mkiv b/tex/context/base/x-foxet.mkiv
index b27969721..80fe7e500 100644
--- a/tex/context/base/x-foxet.mkiv
+++ b/tex/context/base/x-foxet.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Formatting Objects,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-ldx.mkiv b/tex/context/base/x-ldx.mkiv
index bf9bdf71a..4f4da5acb 100644
--- a/tex/context/base/x-ldx.mkiv
+++ b/tex/context/base/x-ldx.mkiv
@@ -1,3 +1,16 @@
+%D \module
+%D [ file=x-ldx,
+%D version=2008.06.03,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Lua Source Pretty Printing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
\setupxml[default=hidden]
\usemodule[x][mathml]
diff --git a/tex/context/base/x-mathml.lua b/tex/context/base/x-mathml.lua
index 434aefc55..fa99d51e6 100644
--- a/tex/context/base/x-mathml.lua
+++ b/tex/context/base/x-mathml.lua
@@ -6,9 +6,11 @@ if not modules then modules = { } end modules ['x-mathml'] = {
license = "see context related readme files"
}
+-- This needs an upgrade to the latest greatest mechanisms.
+
local type, next = type, next
local utf = unicode.utf8
-local texsprint, ctxcatcodes = tex.sprint, tex.ctxcatcodes
+local texsprint, ctxcatcodes, txtcatcodes = tex.sprint, tex.ctxcatcodes, tex.txtcatcodes
local format, lower, find, gsub = string.format, string.lower, string.find, string.gsub
local utfchar, utffind, utfgmatch, utfgsub = utf.char, utf.find, utf.gmatch, utf.gsub
local xmlsprint, xmlcprint, xmltext, xmlcontent = xml.sprint, xml.cprint, xml.text, xml.content
@@ -22,10 +24,12 @@ lxml.mathml = mathml -- for the moment
-- an alternative is to remap to private codes, where we can have
-- different properties .. to be done; this will move and become
--- generic
+-- generic; we can then make the private ones active in math mode
-- todo: handle opening/closing mo's here ... presentation mml is such a mess ...
+characters.registerentities()
+
local doublebar = utfchar(0x2016)
local n_replacements = {
@@ -81,6 +85,8 @@ local o_replacements = { -- in main table
}
+--~ languages.data.labels.functions
+
local i_replacements = {
["sin"] = "\\mathopnolimits{sin}",
["cos"] = "\\mathopnolimits{cos}",
@@ -234,6 +240,7 @@ local csymbols = {
divergence = "divergence",
grad = "grad",
curl = "curl",
+ laplacian = "laplacian",
Laplacian = "laplacian",
},
calculus1 = {
@@ -463,23 +470,35 @@ function mathml.mn(id,pattern)
-- maybe at some point we need to interpret the number, but
-- currently we assume an upright font
local str = xmlcontent(getid(id)) or ""
- str = gsub(str,"(%s+)",utfchar(0x205F)) -- medspace e.g.: twenty one (nbsp is not seen)
- texsprint(ctxcatcodes,(gsub(str,".",n_replacements)))
+ local rep = gsub(str,"&.-;","")
+ local rep = gsub(rep,"(%s+)",utfchar(0x205F)) -- medspace e.g.: twenty one (nbsp is not seen)
+ local rep = gsub(rep,".",n_replacements)
+ -- texsprint(ctxcatcodes,rep)
+ context.mn(rep)
end
function mathml.mo(id)
local str = xmlcontent(getid(id)) or ""
- texsprint(ctxcatcodes,(utfgsub(str,".",o_replacements)))
+ local rep = gsub(str,"&.-;","")
+ local rep = utfgsub(rep,".",o_replacements)
+ texsprint(ctxcatcodes,rep)
+ -- context.mo(rep) -- fails with \left etc
end
function mathml.mi(id)
- local str = xmlcontent(getid(id)) or ""
- -- str = gsub(str,"^%s*(.-)%s*$","%1")
- local rep = i_replacements[str]
- if rep then
+ local e = getid(id)
+ local str = e.dt
+ if type(str) == "string" then -- we need a helper for this in the xml namespace ... xml.type(e)
+ -- local str = xmlcontent(e) or ""
+ local str = gsub(str,"&.-;","") -- needed?
+ local rep = i_replacements[str]
+ if not rep then
+ rep = gsub(str,".",i_replacements)
+ end
texsprint(ctxcatcodes,rep)
+ -- context.mi(rep)
else
- texsprint(ctxcatcodes,(gsub(str,".",i_replacements)))
+ context.xmlflush(id)
end
end
@@ -610,6 +629,7 @@ function mathml.mcolumn(root)
local tag = e.tg
if tag == "mi" or tag == "mn" or tag == "mo" or tag == "mtext" then
local str = xmltext(e)
+str = gsub(str,"&.-;","")
for s in utfcharacters(str) do -- utf.gmatch(str,".") btw, the gmatch was bugged
m[#m+1] = { tag, s }
end
@@ -624,8 +644,8 @@ function mathml.mcolumn(root)
for s in utfcharacters(str) do -- utf.gmatch(str,".") btw, the gmatch was bugged
m[#m+1] = { tag, s }
end
- elseif tag == "mline" then
- m[#m+1] = { tag, e }
+ -- elseif tag == "mline" then
+ -- m[#m+1] = { tag, e }
end
end
for e in lxml.collected(root,"/*") do
@@ -640,7 +660,7 @@ function mathml.mcolumn(root)
collect(m,e)
end
end
- tex.sprint(ctxcatcodes,"\\halign\\bgroup\\hss$#$&$#$\\cr")
+ tex.sprint(ctxcatcodes,[[\halign\bgroup\hss\startimath\alignmark\stopimath\aligntab\startimath\alignmark\stopimath\cr]])
for i=1,#matrix do
local m = matrix[i]
local mline = true
@@ -651,12 +671,14 @@ function mathml.mcolumn(root)
end
end
if mline then
- tex.sprint(ctxcatcodes,"\\noalign{\\obeydepth\\nointerlineskip}")
+ tex.sprint(ctxcatcodes,[[\noalign{\obeydepth\nointerlineskip}]])
end
for j=1,#m do
local mm = m[j]
local tag, chr = mm[1], mm[2]
if tag == "mline" then
+ -- This code is under construction ... I need some real motivation
+ -- to deal with this kind of crap.
--~ local n, p = true, true
--~ for c=1,#matrix do
--~ local mc = matrix[c][j]
@@ -764,15 +786,34 @@ function mathml.csymbol(root)
local hash = url.hashed(lower(at.definitionUrl or ""))
local full = hash.original or ""
local base = hash.path or ""
- local text = string.strip(lxmltext(root))
---~ texsprint(ctxcatcodes,format("\\mmlapplycsymbol{%s}{%s}{%s}{%s}",full,base,encoding,text))
- texsprint(ctxcatcodes,"\\mmlapplycsymbol{",full,"}{",base,"}{",encoding,"}{",text,"}")
+ local text = string.strip(xmltext(root) or "")
+ context.mmlapplycsymbol(full,base,encoding,text)
end
function mathml.menclosepattern(root)
root = getid(root)
local a = root.at.notation
if a and a ~= "" then
- texsprint("mml:enclose:",gsub(a," +",",mml:enclose:"))
+ texsprint("mml:enclose:",(gsub(a," +",",mml:enclose:")))
+ end
+end
+
+function xml.is_element(e,name)
+ return type(e) == "table" and (not name or e.tg == name)
+end
+
+function mathml.cpolar_a(root)
+ root = getid(root)
+ local dt = root.dt
+ context.mathopnolimits("Polar")
+ context.left(false,"(")
+ for k=1,#dt do
+ local dk = dt[k]
+ if xml.is_element(dk,"sep") then
+ context(",")
+ else
+ xmlsprint(dk)
+ end
end
+ context.right(false,")")
end
diff --git a/tex/context/base/x-mathml.mkii b/tex/context/base/x-mathml.mkii
index 101f65c5b..ccb9fa054 100644
--- a/tex/context/base/x-mathml.mkii
+++ b/tex/context/base/x-mathml.mkii
@@ -5,7 +5,7 @@
%D subtitle=Loading \MATHML\ Filters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-mathml.mkiv b/tex/context/base/x-mathml.mkiv
index 44e2b7432..5b431399f 100644
--- a/tex/context/base/x-mathml.mkiv
+++ b/tex/context/base/x-mathml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Loading \MATHML\ Filters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
@@ -13,12 +13,18 @@
% \xmlfilter{#1}{/*/name()} -> \xmltag
-% This module is under construction and will be cleaned up.
+% This module is under construction and will be cleaned up. We use a funny mix of
+% xml, tex and lua. I could rewrite the lot but it also shows how context evolves.
+%
+% no m:text strip (needs checking, maybe nbsp is mandate
\writestatus{loading}{ConTeXt XML Macros / MathML Renderer}
\unprotect
+\usemodule[x][calcmath]
+%usemodule[x][asciimath]
+
\startmodule [mathml]
\registerctxluafile{x-mathml}{}
@@ -31,8 +37,8 @@
\xmlfilter {\xmldocument} {mml:bind/function(remapmmlbind)}
\xmlfilter {\xmldocument} {mml:csymbol/function(remapmmlcsymbol)}
\xmlsetsetup{\xmldocument} {mml:*} {mml:*}
- \xmlsetsetup{\xmldocument} {mml:apply/mml:apply/mml:inverse/../../..} {mml:apply:inverse}
- \xmlstrip {\xmldocument} {(mml:mi|mml:mo|mml:mn|mml:mtext|mml:csymbol)}
+ \xmlsetsetup{\xmldocument} {mml:apply/mml:apply/mml:inverse/../..} {mml:apply:inverse}
+ \xmlstrip {\xmldocument} {(mml:mi|mml:mo|mml:mn|mml:csymbol)}
\stopxmlsetups
\xmlregisterns{omt}{openmath}
@@ -40,15 +46,23 @@
\xmlregistersetup{xml:mml:define}
-\unexpanded\def\setupMMLappearance[#1]{\dodoubleargument\getparameters[@@MML#1]}
-
\def\MMLhack{\let\MMLpar\par \let\par\relax \everyvbox{\let\par\MMLpar}}
-\xmlmapvalue {mml:math:mode} {display} {\displaymathematics}
-\xmlmapvalue {mml:math:mode} {inline} {\inlinemathematics}
+\xmlmapvalue {mml:math:mode} {display} {\displaymathematics} % we had this already
+\xmlmapvalue {mml:math:mode} {inline} {\inlinemathematics }
+
+\xmlmapvalue {mml:math:display} {block} {\displaymathematics} % before this showed up
+\xmlmapvalue {mml:math:display} {inline} {\inlinemathematics }
\startxmlsetups mml:math
- \xmlval{mml:math:mode}{\xmlatt{#1}{mode}}{\automathematics}{\MMLhack\xmlflush{#1}}
+ \xmlval {mml:math:display} {\xmlatt{#1}{display}} {
+ \xmlval {mml:math:mode} {\xmlatt{#1}{mode}} {
+ \automathematics
+ }
+ }
+ {
+ \MMLhack\xmlflush{#1}
+ }
\stopxmlsetups
\startxmlsetups mml:imath
@@ -106,7 +120,7 @@
\def\widevec#1%
{\vbox{\mathsurround\zeropoint\ialign{##\crcr
\rightarrowfill\crcr\noalign{\nointerlineskip}%
- $\hfil\displaystyle{#1}\hfil$\crcr}}}
+ \startimath\hfil\displaystyle{#1}\hfil\stopimath\crcr}}}
%D The rendering macros:
@@ -160,7 +174,11 @@
%D \type {apply}.
\def\MMLmathinner
- {\ifinner \expandafter \firstofoneargument \else \expandafter \mathinner \fi}
+ {\ifinner
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\mathinner
+ \fi}
%D Auxiliary MathML macros: (to be generalized)
@@ -257,6 +275,8 @@
%D version 3 the following definitions may be sub optimal or
%D more complex than actually needed.
+%D We will more more to lua ...
+
% simple version
\newcount\@MMLlevel \def\MMLcreset{\@MMLlevel\zerocount}
@@ -309,11 +329,11 @@
% \MMLdoR
% } {
\edef\mmlapplyaction{\xmlfilter{#1}{/*/name()}}
- \doifsetupselse {mml:apply:\mmlapplyaction} {
- \xmlsetup{#1}{mml:apply:\mmlapplyaction}
+ \doifsetupselse {mml:apply:mml:\mmlapplyaction} {
+ \xmlsetup{#1}{mml:apply:mml:\mmlapplyaction}
} {
% \MMLdoL
- \xmlsetup{#1}{\xmlfilter{#1}{/*/name()}}
+ \xmlsetup{#1}{mml:\xmlfilter{#1}{/*/name()}}
% \MMLdoR
}
% }
@@ -328,15 +348,15 @@
\stopxmlsetups
\startxmlsetups mml:apply:mml:fn
- \xmldoifelse {#1} {/mml:ci} {
- \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}%
- \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:...
- \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
+ \xmldoifelse {#1} {/mml:fn/mml:ci} {
+ \edef\mmlfnci{\xmlstripped{#1}{/mml:fn/mml:ci}}% was xmlcontent
+ \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:...
+ \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
} {
\MMLcreset
\MMLdoL
\mmlfirst{#1}
- \ifnum\xmlcount{#1}>\plusone
+ \ifnum\xmlcount{#1}{/*}>\plusone
\negthinspace % not enough
\left(\MMLcreset\xmlconcatrange{#1}{/*}{2}{}{\MMLseparator,}\right)
\fi
@@ -351,12 +371,12 @@
\stopxmlsetups
\startxmlsetups mml:apply:mml:csymbol
- \xmlsetup{#1}{mml:csymbol} % \MMLdoL/MMLdoR to be handled in plugin
+ \xmlsetup{#1}{mml:csymbol}% \MMLdoL/MMLdoR to be handled in plugin
\stopxmlsetups
\startxmlsetups mml:apply:mml:ci
\xmlfirst{#1}{/mml:ci}
- \ifnum\xmlcount{#1}>\plusone
+ \ifnum\xmlcount{#1}{/*}>\plusone
\left(\MMLcreset\xmlconcatrange{#1}{/*}{2}{}{\MMLseparator,}\right)
\fi
\stopxmlsetups
@@ -369,22 +389,25 @@
% fn
-\startxmlsetups mmc:fn:\utfchar{"00B1} % plusminus ±
- \ifnum\xmlcount{#1}>\plustwo
- \MMLcreset
- \left(\xmlconcat{#1}{/*}{2}{}{\mmlfirst{#1}}\right)
- \else
- \mmlfirst{#1}
- \fi
+% plusminus ±
+
+\startxmlsetups mmc:fn:\utfchar{"00B1}
+ \MMLdoL
+ \xmlconcat{#1}{/[position()>1]}{\utfchar{"00B1}}
+ \MMLdoR
\stopxmlsetups
-\startxmlsetups mmc:fn:\utfchar{"2213} % minusplus
- \xmlsetup{#1}{mmc:fn:plusminus}
+% minusplus
+
+\startxmlsetups mmc:fn:\utfchar{"2213}
+ \MMLdoL
+ \xmlconcat{#1}{/[position()>1]}{\utfchar{"2213}}
+ \MMLdoR
\stopxmlsetups
\startxmlsetups mmc:fn
\begingroup
- \edef\mmlnoffn{\xmlcount{#1}}
+ \edef\mmlnoffn{\xmlcount{#1}{/*}}
\ifnum\mmlnoffn>\plustwo
\def\MMCfnleft {\left(}
\def\MMCfnright{\right)}
@@ -393,9 +416,9 @@
\let\MMCfnright\relax
\fi
\xmldoifelse {#1} {/mml:ci} { % first
- \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}%
- \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:...
- \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
+ \edef\mmlfnci{\xmltext{#1}{/mml:ci}}% was xmlcontent
+ \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:...
+ \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
} {
\MMLcreset
\mmlfirst{#1}
@@ -424,13 +447,13 @@
\startxmlsetups mmc:fn:apply % where used?
\xmldoifelse {#1} {/mml:ci} { % first
- \edef\mmlfnci{\xmlcontent{#1}{/mml:ci}}%
- \doifsetupselse{mml:fn:\mmlfnci} { % was mmc:fn:...
- \xmlsetup{#1}{mml:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
+ \edef\mmlfnci{\xmltext{#1}{/mml:ci}}% was xmlcontent
+ \doifsetupselse{mmc:fn:\mmlfnci} { % was mmc:fn:...
+ \xmlsetup{#1}{mmc:fn:\mmlfnci} % \MMLdoL/MMLdoR to be handled in plugin
} {
\MMLcreset
\mmlfirst{#1}
- \ifnum\xmlcount{#1}>\plusone
+ \ifnum\xmlcount{#1}{/*}>\plusone
\negthinspace
\left(\MMLcreset\xmlconcat{#1}{2}{}{\MMLseparator,}\right)
\fi
@@ -446,11 +469,14 @@
%D the open math extension module).
% http://www.publishers.com/somename
+%
+% called at the lua end
\starttexdefinition mmlapplycsymbol #1#2#3#4
% #1=full url, #2=name, #3=encoding, #4=text
\doifelse {#3} {text} {
- {\mr #4}
+% {\mr #4}
+ \text{#4}
} {
\doifsetupselse {mml:csymbol:#1} {
% full url
@@ -488,7 +514,7 @@
\startxmlsetups mml:ci \xmlcommand{#1}{/}{mml:ci:\xmlattdef{#1}{type}{default}} \stopxmlsetups
\startxmlsetups mml:cn \xmlcommand{#1}{/}{mml:cn:\xmlattdef{#1}{type}{default}} \stopxmlsetups
-% helpers cn
+% helpers cn / todo: \mn{...}
\startxmlsetups mml:cn:default
\mathopnolimits{\xmlflush{#1}}
@@ -551,7 +577,7 @@
\MMLcCNbasedata{\xmlflush{#1}}
} {
\MMLcCNbasedata{\xmlflush{#1}}\normalsubscript{
- \hbox {$
+ \hbox {\startimath
\mr
\scriptscriptstyle
\processaction
@@ -559,7 +585,7 @@
[\v!characters=>\MMLcCNbasestring BODH,
\v!text=>\MMLcCNbasestring{BIN}{OCT}{DEC}{HEX},
\s!unknown=>\mmlintegerbase]
- $}
+ \stopimath}
}
}
\fi
@@ -580,8 +606,7 @@
\stopxmlsetups
\startxmlsetups mml:cn:polar:a
- \mathopnolimits{Polar}% ? ? ?
- \left(\xmlsnippet{#1}{1},\xmlsnippet{#1}{3}\right)
+ \ctxmodulemathml{cpolar_a("#1")}
\stopxmlsetups
\startxmlsetups mml:cn:polar:b
@@ -661,16 +686,16 @@
% when empty element, then it's an apply
\startxmlsetups mml:interval
- \xmldoifelseempty {#1} {} {
- % #1 == interval
- \let\mmlintervalfirst \mmlfirst
- \let\mmlintervalsecond\mmlsecond
- \xmlsetup{#1}{mml:interval:\xmlattdef{#1}{closure}{closed}}
- } {
+ \doifelse {\xmltag{#1}} {apply} {
% #1 == apply
\let\mmlintervalfirst \mmlsecond
\let\mmlintervalsecond\mmlthird
\xmlsetup{#1}{mml:interval:\xmlattributedef{#1}{/mml:interval}{closure}{closed}}
+ } {
+ % #1 == interval
+ \let\mmlintervalfirst \mmlfirst
+ \let\mmlintervalsecond\mmlsecond
+ \xmlsetup{#1}{mml:interval:\xmlattdef{#1}{closure}{closed}}
}
\stopxmlsetups
@@ -708,7 +733,7 @@
\startxmlsetups mml:apply:inverse
\settrue\xmlinversefunction
- \xmlsetup{#1}{\xmlfilter{#1}{/mml:apply/*/name(1)}}
+ \xmlsetup{#1}{mml:\xmlfilter{#1}{/mml:apply/*[2]/name()}}
\stopxmlsetups
% condition
@@ -739,7 +764,7 @@
\doif \MMLdeclarestate \v!start {
\mathopnolimits{declare}
\mmlfirst{#1}
- \ifnum\xmlcount{#1}>\plusone
+ \ifnum\xmlcount{#1}{/*}>\plusone
\thickspace
\mathopnolimits{as}
\thickspace
@@ -1109,15 +1134,15 @@
\setupMMLappearance[relation][\c!align=\v!no]
-\xmlmapvalue {mml:relation} {mml:eq} {=}
-\xmlmapvalue {mml:relation} {mml:neq} {\neq}
-\xmlmapvalue {mml:relation} {mml:gt} {>}
-\xmlmapvalue {mml:relation} {mml:lt} {<}
-\xmlmapvalue {mml:relation} {mml:geq} {\geq}
-\xmlmapvalue {mml:relation} {mml:leq} {\leq}
-\xmlmapvalue {mml:relation} {mml:equivalent} {\equiv}
-\xmlmapvalue {mml:relation} {mml:approx} {\approx}
-\xmlmapvalue {mml:relation} {mml:factorof} {\mid}
+\xmlmapvalue {mml:relation} {eq} {=}
+\xmlmapvalue {mml:relation} {neq} {\neq}
+\xmlmapvalue {mml:relation} {gt} {>}
+\xmlmapvalue {mml:relation} {lt} {<}
+\xmlmapvalue {mml:relation} {geq} {\geq}
+\xmlmapvalue {mml:relation} {leq} {\leq}
+\xmlmapvalue {mml:relation} {equivalent} {\equiv}
+\xmlmapvalue {mml:relation} {approx} {\approx}
+\xmlmapvalue {mml:relation} {factorof} {\mid}
\startxmlsetups mml:eq \xmlsetup{#1}{mml:relation} \stopxmlsetups
\startxmlsetups mml:neq \xmlsetup{#1}{mml:relation} \stopxmlsetups
@@ -1135,28 +1160,28 @@
\stopxmlsetups
\startxmlsetups mml:relation:default
- \xmlconcatrange{#1}{/*}{2}{}{\xmlval{mml:relation}{\mmlapplyaction}{?}}
+ \xmlconcatrange{#1}{/*}{2}{}{\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}}
\stopxmlsetups
\startxmlsetups mml:relation:last
\eqalign {
- \xmlconcatrange{#1}{/*}{2}{-2}{&\xmlval{mml:relation}{\mmlapplyaction}{?}\crcr}
- \mmlprelast{#1}&\xmlval{mml:relation}{\mmlapplyaction}{?}{}\mmllast{#1}
+ \xmlconcatrange{#1}{/*}{2}{-2}{&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}\crcr}
+ \mmlprelast{#1}&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}\mmllast{#1}
}
\stopxmlsetups
\startxmlsetups mml:relation:first
\eqalign {
- \mmlsecond{#1}\xmlval{mml:relation}{\mmlapplyaction}{?}{}
- &\xmlconcatrange{#1}{/*}{3}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{?}{}&}
+ \mmlsecond{#1}\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}
+ &\xmlconcatrange{#1}{/*}{3}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}&}
}
\stopxmlsetups
\startxmlsetups mml:relation:left
\eqalign {
- \xmlconcatrange{#1}{/*}{2}{}{&\xmlval{mml:relation}{\mmlapplyaction}{?}\crcr}
+ \xmlconcatrange{#1}{/*}{2}{}{&\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}\crcr}
}
\stopxmlsetups
\startxmlsetups mml:relation:right
\eqalign {
- &\xmlconcatrange{#1}{/*}{2}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{?}{}&}
+ &\xmlconcatrange{#1}{/*}{2}{}{\crcr\xmlval{mml:relation}{\mmlapplyaction}{[\mmlapplyaction]}{}&}
}
\stopxmlsetups
\startxmlsetups mml:relation:no
@@ -1230,9 +1255,15 @@
\xmldoifelse {#1} {/mml:lambda} {
% a special case (mathadore/openmath)
\frac {
- d\normalsuperscript{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}}{\xmlfirst{#1}{/mml:lambda}\xmlfirst{#1}{/mml:ci}}
+ d
+ \normalsuperscript
+ {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}}
+ {\xmlfirst{#1}{/mml:lambda}\xmlfirst{#1}{/mml:ci}}
} {
- d{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:ci}}\normalsuperscript{\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}}
+ d
+ {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:ci}}
+ \normalsuperscript
+ {\xmlfirst{#1}{/mml:bvar}\xmlfirst{#1}{/mml:cn}}
}
} {
\xmldoifelse {#1} {/mml:bvar} {
@@ -1251,7 +1282,13 @@
\xmlfirst{#1}{/mml:ci}
} {
\MMLcreset
+\ifnum\xmlcount{#1}{/mml:apply/*}>\plustwo % hack
+ \left(
\xmlfirst{#1}{/mml:apply}
+ \right)
+\else
+ \xmlfirst{#1}{/mml:apply}
+\fi
}
}
} {
@@ -1265,7 +1302,8 @@
\left(\MMLcreset\xmlfirst{#1}{/(mml:apply\string|mml:ci)}\right)
}
} {
- \xmlconcatrange{#1}{/*}{2}{}\normalsuperscript\prime
+ % beware, the second {} is needed for the superscript
+ \xmlconcatrange{#1}{/*}{2}{}{}\normalsuperscript\prime
}
}
} {
@@ -1408,7 +1446,7 @@
\def\mmlstackedsubscripts#1%
{\vbox
{\baselineskip\zeropoint % hack, taco vragen
- \halign{$\scriptstyle\hss##\hss$\cr#1\crcr}}}
+ \halign{\startimath\scriptstyle\hss\alignmark\alignmark\hss\stopimath\cr#1\crcr}}}
% unfinished
@@ -1553,7 +1591,7 @@
\startxmlsetups mml:vector
\begingroup
- \ifnum\xmlcount{#1}>\plusone
+ \ifnum\xmlcount{#1}{/*}>\plusone
\doifelse\MMLvectordirection\v!horizontal {
\left(\xmlconcat{#1}{/*}{\MMLseparator\MMLvectorseparator}\right)
} {
@@ -1621,9 +1659,6 @@
}
\stopxmlsetups
-\usemodule[x][calcmath]
-%usemodule[x][asciimath]
-
\startxmlsetups mml:annotation
\xmldoifelse {#1} {.[oneof(@encoding,'TeX','tex','TEX','ConTeXt','context','CONTEXT','ctx')]} {
\xmlflushcontext{#1}
@@ -1674,31 +1709,31 @@
% todo: \def\mmlcfunction#1#2{\mathopnolimits{#2}\xmlsetup{#1}{mml:function}}
-\startxmlsetups mml:sin \mathopnolimits {sin}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:sinh \mathopnolimits {sinh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:cos \mathopnolimits {cos}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:cosh \mathopnolimits {cosh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:tan \mathopnolimits {tan}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:tanh \mathopnolimits {tanh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:cot \mathopnolimits {cot}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:coth \mathopnolimits {coth}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:csc \mathopnolimits {csc}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:csch \mathopnolimits {csch}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:sec \mathopnolimits {sec}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:sech \mathopnolimits {sech}\xmlsetup{#1}{mml:function} \stopxmlsetups
-
-\startxmlsetups mml:arcsin \mathopnolimits {arcsin}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arcsinh \mathopnolimits{arcsinh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccos \mathopnolimits {arccos}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccosh \mathopnolimits{arccosh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arctan \mathopnolimits {arctan}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arctanh \mathopnolimits{arctanh}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccot \mathopnolimits {arccot}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccoth \mathopnolimits{arccoth}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccsc \mathopnolimits {arccsc}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arccsch \mathopnolimits{arccsch}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arcsec \mathopnolimits {arcsec}\xmlsetup{#1}{mml:function} \stopxmlsetups
-\startxmlsetups mml:arcsech \mathopnolimits{arcsech}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:sin \mathcommand {sin}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:sinh \mathcommand {sinh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:cos \mathcommand {cos}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:cosh \mathcommand {cosh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:tan \mathcommand {tan}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:tanh \mathcommand {tanh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:cot \mathcommand {cot}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:coth \mathcommand {coth}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:csc \mathcommand {csc}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:csch \mathcommand {csch}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:sec \mathcommand {sec}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:sech \mathcommand {sech}\xmlsetup{#1}{mml:function} \stopxmlsetups
+
+\startxmlsetups mml:arcsin \mathcommand {arcsin}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arcsinh \mathcommand{arcsinh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccos \mathcommand {arccos}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccosh \mathcommand{arccosh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arctan \mathcommand {arctan}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arctanh \mathcommand{arctanh}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccot \mathcommand {arccot}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccoth \mathcommand{arccoth}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccsc \mathcommand {arccsc}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arccsch \mathcommand{arccsch}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arcsec \mathcommand {arcsec}\xmlsetup{#1}{mml:function} \stopxmlsetups
+\startxmlsetups mml:arcsech \mathcommand{arcsech}\xmlsetup{#1}{mml:function} \stopxmlsetups
\startxmlsetups mml:function
\ifx\MMLpowerelement\empty
@@ -1820,9 +1855,10 @@
\stopxmlsetups
\startxmlsetups mml:mn % todo: mathvariant mathsize mathcolor mathbackground
- \begingroup
- \mr \ctxmodulemathml{mn("#1")}% no \hbox, would be ok for . , but spoils rest
- \endgroup
+% \begingroup
+% \mr
+ \ctxmodulemathml{mn("#1")}% no \hbox, would be ok for . , but spoils rest
+% \endgroup
\stopxmlsetups
% <m:mo>-</m:mo><m:mn>2</m:mn> and <m:mn>1</m:mn><m:mo>-</m:mo><m:mn>2</m:mn>
@@ -1919,7 +1955,7 @@
\vcenter {
\framed
[frame=off,strut=no,background={\mmlmenclosenotation}] % offset is kind of undefined
- {$
+ {\startimath
\expanded{\doifinsetelse {mml:enclose:longdiv} {\mmlmenclosenotation}} {
\overline{\left)\strut\xmlflush{#1}\right.}
} {
@@ -1933,7 +1969,7 @@
}
}
}
- $}
+ \stopimath}
}
}
}
@@ -1944,6 +1980,7 @@
\xmlmapvalue {mml:mfrac:linethickness} {thin} {.2pt}
\xmlmapvalue {mml:mfrac:linethickness} {medium} {.4pt}
\xmlmapvalue {mml:mfrac:linethickness} {thick} {.8pt}
+\xmlmapvalue {mml:mfrac:linethickness} {0} {0pt}
\startxmlsetups mml:mfrac % dodo: handle linethickness in lua + unit
\begingroup
@@ -1958,6 +1995,7 @@
\doifelse {\xmlval{mml:mfrac:linethickness}{\mmlfraclinethickness}{}} {} {
\scratchdimen\xmlval{mml:mfrac:linethickness}\mmlfraclinethickness{.4pt}
} {
+ % probably not yet ok
\setdimensionwithunit\scratchdimen\mmlfraclinethickness{pt}
}
{
@@ -1987,16 +2025,16 @@
\endgroup
\stopxmlsetups
-\setupMMLappearance[text][\c!alternative=\v!a] % a=normal, b=keep spaces
+\setupMMLappearance[text][\c!alternative=\v!b] % a=normal, b=keep spaces
\startxmlsetups mml:mtext
\domathtext {
\applymmlsometext{#1}{
- \doifelse\MMLscriptsalternative\v!a {
+ \doifelse \MMLtextalternative \v!a {
%\ctxmodulemathml{stripped(\!!bs\xmlflush{#1}\!!es)}
\ignorespaces
\xmlflush{#1}
- \unskip
+ \removeunwantedspaces
} {
\xmlflush{#1}
}
@@ -2005,12 +2043,13 @@
\stopxmlsetups
\startxmlsetups mml:merror
- \hbox{$\displaystyle\xmlflush{#1}$}
+ \hbox{\startimath\displaystyle\xmlflush{#1}\stopimath}
\stopxmlsetups
\startxmlsetups mml:mphantom
% \phantom{\ignorespaces{}\xmlflush{#1}\unskip} % watch spacing {} hack
- \phantom{\mathstyle{\ignorespaces{}\xmlflush{#1}\unskip}}%
+% \phantom{\mathstyle{\ignorespaces{}\xmlflush{#1}\unskip}}%
+ \phantom{\triggermathstyle\normalmathstyle\ignorespaces\xmlflush{#1}\removeunwantedspaces}
% \mktriggereffect\v!hidden
% \ignorespaces{}\xmlflush{#1}\unskip % no attributes in math yet
% \mktriggereffect\v!normal
@@ -2020,27 +2059,7 @@
\xmlflush{#1}
\stopxmlsetups
-% mrow
-
-% \startxmlsetups mml:mrow
-% \begingroup
-% \ifcase\xmlcount{#1}{/mml:mo}\relax
-% \xmlflush{#1}
-% \else % no \let
-% \def\MMLleft {\left }
-% \def\MMLright {\right}
-% \def\MMLmiddle{\middle}
-% \enabledelimiter
-% \checkdelimiters{\xmlall{#1}{/mml:mo}}
-% \fakeleftdelimiter
-% \xmlflush{#1}
-% \fakerightdelimiter
-% \disabledelimiter
-% \fi
-% \endgroup
-% \stopxmlsetups
-
-% option: no fenced
+% mrow / option: no fenced
\startxmlsetups mml:mrow
\begingroup
@@ -2198,38 +2217,38 @@
\hskip\!!widtha
\fi
\else
- \phantom{\mathstyle{\mmlspacetext}}%
+ \phantom{\triggermathstyle\normalmathstyle\mmlspacetext}
\fi
\endgroup
\stopxmlsetups
% later we can do a better job by manipulating node lists
-\startxmlsetups mml:mline
- % new, rather undefined, we need to capture a few keywords
- \edef\mmllinewidth {\xmlatt{#1}{linethickness}}
- \edef\mmllinetext {\xmlatt{#1}{spacing}}
- \edef\mmllinelength{\xmlattdef{#1}{length}\!!zeropoint}
- \ifx\mmllinewidth\empty
- \!!deptha.5\linewidth
- \else
- \!!deptha.5\dimexpr\mmllinewidth\relax
- \fi
- \!!heighta\!!deptha
- \ifx\mmllinetext\empty
- \ifx\mmllinelength\empty
- \!!widtha\zeropoint
- \else
- \!!widtha\mmllinelength
- \fi
- \else
- \setbox\scratchbox\hbox{\mathematics{\mathstyle{\mmllinetext}}}% not ok
- \!!widtha\wd\scratchbox
- \fi
- \hbox{\vrule\!!width\!!widtha\!!depth\!!deptha\!!height\!!heighta}
-\stopxmlsetups
+% \startxmlsetups mml:mline
+% % new, rather undefined, we need to capture a few keywords
+% \edef\mmllinewidth {\xmlatt{#1}{linethickness}}
+% \edef\mmllinetext {\xmlatt{#1}{spacing}}
+% \edef\mmllinelength{\xmlattdef{#1}{length}\!!zeropoint}
+% \ifx\mmllinewidth\empty
+% \!!deptha.5\linewidth
+% \else
+% \!!deptha.5\dimexpr\mmllinewidth\relax
+% \fi
+% \!!heighta\!!deptha
+% \ifx\mmllinetext\empty
+% \ifx\mmllinelength\empty
+% \!!widtha\zeropoint
+% \else
+% \!!widtha\mmllinelength
+% \fi
+% \else
+% \setbox\scratchbox\hbox{\mathematics{\mathstyle{\mmllinetext}}}% not ok
+% \!!widtha\wd\scratchbox
+% \fi
+% \hbox{\vrule\!!width\!!widtha\!!depth\!!deptha\!!height\!!heighta}
+% \stopxmlsetups
-\startxmlsetups mml:mglyph % probably never ok
+\startxmlsetups mml:mglyph % probably never ok (hbox is needed in order to switch to normal font)
\begingroup
\edef\mmlglyphfontfamily{\xmlatt {#1}{fontfamily}}
\edef\mmlglyphalt {\xmlattdef{#1}{alt}{unknown}}
@@ -2239,7 +2258,7 @@
\else\ifx\mmlglyphindex\empty
\hbox{\tttf[no index specified for \mmlglyphalt]}
\else
- \getglyph\mmlglyphfontfamily\mmlglyphindex
+ \hbox{\getglyph\mmlglyphfontfamily\mmlglyphindex}
\fi\fi
\endgroup
\stopxmlsetups
diff --git a/tex/context/base/x-newcml.mkii b/tex/context/base/x-newcml.mkii
index 76d69ed51..23c2bf1e2 100644
--- a/tex/context/base/x-newcml.mkii
+++ b/tex/context/base/x-newcml.mkii
@@ -5,7 +5,7 @@
%D subtitle=ChemML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-newmme.mkii b/tex/context/base/x-newmme.mkii
index 5e17ea7a4..2e0d4c189 100644
--- a/tex/context/base/x-newmme.mkii
+++ b/tex/context/base/x-newmme.mkii
@@ -5,7 +5,7 @@
%D subtitle=MathML Entities,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-newmml.mkii b/tex/context/base/x-newmml.mkii
index 17eda5276..e777edca1 100644
--- a/tex/context/base/x-newmml.mkii
+++ b/tex/context/base/x-newmml.mkii
@@ -5,7 +5,7 @@
%D subtitle=MathML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-newmml.mkiv b/tex/context/base/x-newmml.mkiv
index 757dcf389..4c12daeee 100644
--- a/tex/context/base/x-newmml.mkiv
+++ b/tex/context/base/x-newmml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=MathML Renderer,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-newmmo.mkii b/tex/context/base/x-newmmo.mkii
index c3b56cc16..97fdeb06c 100644
--- a/tex/context/base/x-newmmo.mkii
+++ b/tex/context/base/x-newmmo.mkii
@@ -5,7 +5,7 @@
%D subtitle=MathML Renderer/Open Math Extensions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-newpml.mkii b/tex/context/base/x-newpml.mkii
index d69231e3f..ea3bae182 100644
--- a/tex/context/base/x-newpml.mkii
+++ b/tex/context/base/x-newpml.mkii
@@ -5,7 +5,7 @@
%D subtitle=Units,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-physml.mkii b/tex/context/base/x-physml.mkii
index 7f6a94642..4d9cffe33 100644
--- a/tex/context/base/x-physml.mkii
+++ b/tex/context/base/x-physml.mkii
@@ -5,7 +5,7 @@
%D subtitle=Loading PHYSML Filters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-physml.mkiv b/tex/context/base/x-physml.mkiv
index 508c70c52..dd9a164dd 100644
--- a/tex/context/base/x-physml.mkiv
+++ b/tex/context/base/x-physml.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Loading PHYSML Filters,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-00.mkii b/tex/context/base/x-res-00.mkii
index 9878d0a58..d031e1453 100644
--- a/tex/context/base/x-res-00.mkii
+++ b/tex/context/base/x-res-00.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Libraries,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-01.mkii b/tex/context/base/x-res-01.mkii
index dc14e7054..41580a0b8 100644
--- a/tex/context/base/x-res-01.mkii
+++ b/tex/context/base/x-res-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-01.mkiv b/tex/context/base/x-res-01.mkiv
index b82d60484..0ebb8933d 100644
--- a/tex/context/base/x-res-01.mkiv
+++ b/tex/context/base/x-res-01.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-02.mkii b/tex/context/base/x-res-02.mkii
index a29f446f3..f8502dbac 100644
--- a/tex/context/base/x-res-02.mkii
+++ b/tex/context/base/x-res-02.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Inclusion (I),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-03.mkii b/tex/context/base/x-res-03.mkii
index bf5ea226c..15f2620c1 100644
--- a/tex/context/base/x-res-03.mkii
+++ b/tex/context/base/x-res-03.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Inclusion (II),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-04.mkii b/tex/context/base/x-res-04.mkii
index b5032f550..b22e9ffa4 100644
--- a/tex/context/base/x-res-04.mkii
+++ b/tex/context/base/x-res-04.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Base Loading,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-08.mkii b/tex/context/base/x-res-08.mkii
index 3d79b00e4..0805f071f 100644
--- a/tex/context/base/x-res-08.mkii
+++ b/tex/context/base/x-res-08.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Reporting,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-09.mkii b/tex/context/base/x-res-09.mkii
index 608236156..e3354e9a4 100644
--- a/tex/context/base/x-res-09.mkii
+++ b/tex/context/base/x-res-09.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Reporting (2),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-10.mkii b/tex/context/base/x-res-10.mkii
index f23c50358..833bce776 100644
--- a/tex/context/base/x-res-10.mkii
+++ b/tex/context/base/x-res-10.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Dummy Generation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-11.mkii b/tex/context/base/x-res-11.mkii
index b8569d22e..84157be88 100644
--- a/tex/context/base/x-res-11.mkii
+++ b/tex/context/base/x-res-11.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Reporting (3),
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-12.mkii b/tex/context/base/x-res-12.mkii
index 1cff48717..81761ae9a 100644
--- a/tex/context/base/x-res-12.mkii
+++ b/tex/context/base/x-res-12.mkii
@@ -5,7 +5,7 @@
%D subtitle=Resource Checking,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-20.mkii b/tex/context/base/x-res-20.mkii
index 3ff069ffd..0bc1358ec 100644
--- a/tex/context/base/x-res-20.mkii
+++ b/tex/context/base/x-res-20.mkii
@@ -5,7 +5,7 @@
%D subtitle=Figure Lists,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-50.mkii b/tex/context/base/x-res-50.mkii
index 6fa1a3e4f..3c3e758a7 100644
--- a/tex/context/base/x-res-50.mkii
+++ b/tex/context/base/x-res-50.mkii
@@ -5,7 +5,7 @@
%D subtitle=Multimedia Presentation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-res-50.mkiv b/tex/context/base/x-res-50.mkiv
index 87b63dd97..62a86b7a7 100644
--- a/tex/context/base/x-res-50.mkiv
+++ b/tex/context/base/x-res-50.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Multimedia Presentation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-sch-00.mkii b/tex/context/base/x-sch-00.mkii
index 379d19cf2..5b4da0825 100644
--- a/tex/context/base/x-sch-00.mkii
+++ b/tex/context/base/x-sch-00.mkii
@@ -5,7 +5,7 @@
%D subtitle=XML Schema Basics,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-sch-01.mkii b/tex/context/base/x-sch-01.mkii
index d72cbf89c..5bdf088fe 100644
--- a/tex/context/base/x-sch-01.mkii
+++ b/tex/context/base/x-sch-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=XML Schema Presentation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-01.mkii b/tex/context/base/x-set-01.mkii
index 75e1d43e2..814ea5fc6 100644
--- a/tex/context/base/x-set-01.mkii
+++ b/tex/context/base/x-set-01.mkii
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-02.mkii b/tex/context/base/x-set-02.mkii
index bb0b7583c..8af98c412 100644
--- a/tex/context/base/x-set-02.mkii
+++ b/tex/context/base/x-set-02.mkii
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-11.mkii b/tex/context/base/x-set-11.mkii
index 3207ef5f9..8c8f614a5 100644
--- a/tex/context/base/x-set-11.mkii
+++ b/tex/context/base/x-set-11.mkii
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-11.mkiv b/tex/context/base/x-set-11.mkiv
index ceba34f3d..c4b5b3db2 100644
--- a/tex/context/base/x-set-11.mkiv
+++ b/tex/context/base/x-set-11.mkiv
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-12.mkii b/tex/context/base/x-set-12.mkii
index d79901433..c2aa265c3 100644
--- a/tex/context/base/x-set-12.mkii
+++ b/tex/context/base/x-set-12.mkii
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-set-12.mkiv b/tex/context/base/x-set-12.mkiv
index d95aff4a3..43a3ede29 100644
--- a/tex/context/base/x-set-12.mkiv
+++ b/tex/context/base/x-set-12.mkiv
@@ -6,7 +6,7 @@
%D subtitle=Macro Definitions,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-steps.mkii b/tex/context/base/x-steps.mkii
index 408a7e191..47141699a 100644
--- a/tex/context/base/x-steps.mkii
+++ b/tex/context/base/x-steps.mkii
@@ -5,7 +5,7 @@
%D subtitle=Step Charts \& Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-steps.mkiv b/tex/context/base/x-steps.mkiv
index 616818809..d60524338 100644
--- a/tex/context/base/x-steps.mkiv
+++ b/tex/context/base/x-steps.mkiv
@@ -5,7 +5,7 @@
%D subtitle=Step Charts \& Tables,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-xml-01.mkii b/tex/context/base/x-xml-01.mkii
index 9502ab71a..95ce51fc8 100644
--- a/tex/context/base/x-xml-01.mkii
+++ b/tex/context/base/x-xml-01.mkii
@@ -5,7 +5,7 @@
%D subtitle=Formatting X?? files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-xml-02.mkii b/tex/context/base/x-xml-02.mkii
index 24f811c4d..e33ab9ee4 100644
--- a/tex/context/base/x-xml-02.mkii
+++ b/tex/context/base/x-xml-02.mkii
@@ -5,7 +5,7 @@
%D subtitle=Pretty Printing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-xml-11.mkii b/tex/context/base/x-xml-11.mkii
index c1b185b55..047561370 100644
--- a/tex/context/base/x-xml-11.mkii
+++ b/tex/context/base/x-xml-11.mkii
@@ -5,7 +5,7 @@
%D subtitle=Formatting X?? files,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/x-xtag.mkiv b/tex/context/base/x-xtag.mkiv
index be593300c..c26b352b0 100644
--- a/tex/context/base/x-xtag.mkiv
+++ b/tex/context/base/x-xtag.mkiv
@@ -5,7 +5,7 @@
%D subtitle=\XML\ stream handler,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=PRAGMA]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xetx-ini.mkii b/tex/context/base/xetx-ini.mkii
index db3cccabd..55155fa1a 100644
--- a/tex/context/base/xetx-ini.mkii
+++ b/tex/context/base/xetx-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=\XETEX\ Initializations,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-ent.mkii b/tex/context/base/xtag-ent.mkii
index f4c3e4b06..09051d0b4 100644
--- a/tex/context/base/xtag-ent.mkii
+++ b/tex/context/base/xtag-ent.mkii
@@ -5,7 +5,7 @@
%D subtitle=A bunch of Entities,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-exp.mkii b/tex/context/base/xtag-exp.mkii
index 337b49348..60345677d 100644
--- a/tex/context/base/xtag-exp.mkii
+++ b/tex/context/base/xtag-exp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Expansion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-ext.mkii b/tex/context/base/xtag-ext.mkii
index 9a132c677..e60ecd401 100644
--- a/tex/context/base/xtag-ext.mkii
+++ b/tex/context/base/xtag-ext.mkii
@@ -5,7 +5,7 @@
%D subtitle=Extra Macros,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-hyp.mkii b/tex/context/base/xtag-hyp.mkii
index e4e048e2b..105f1a1e3 100644
--- a/tex/context/base/xtag-hyp.mkii
+++ b/tex/context/base/xtag-hyp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Hyphenation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-ini.mkii b/tex/context/base/xtag-ini.mkii
index 85b481419..a1d5d7be5 100644
--- a/tex/context/base/xtag-ini.mkii
+++ b/tex/context/base/xtag-ini.mkii
@@ -5,7 +5,7 @@
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-map.mkii b/tex/context/base/xtag-map.mkii
index cbde4f1b1..377b76ad3 100644
--- a/tex/context/base/xtag-map.mkii
+++ b/tex/context/base/xtag-map.mkii
@@ -5,7 +5,7 @@
%D subtitle=Remapping,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-mmc.mkii b/tex/context/base/xtag-mmc.mkii
index 27e2c42ea..9da7fef84 100644
--- a/tex/context/base/xtag-mmc.mkii
+++ b/tex/context/base/xtag-mmc.mkii
@@ -5,7 +5,7 @@
%D subtitle=Content MathML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-mml.mkii b/tex/context/base/xtag-mml.mkii
index 051d15b00..f948128fa 100644
--- a/tex/context/base/xtag-mml.mkii
+++ b/tex/context/base/xtag-mml.mkii
@@ -5,7 +5,7 @@
%D subtitle=MathML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-mmp.mkii b/tex/context/base/xtag-mmp.mkii
index 75167c9e9..93f0a1504 100644
--- a/tex/context/base/xtag-mmp.mkii
+++ b/tex/context/base/xtag-mmp.mkii
@@ -5,7 +5,7 @@
%D subtitle=Presentation MathML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-pml.mkii b/tex/context/base/xtag-pml.mkii
index 53d22c52a..a0930b634 100644
--- a/tex/context/base/xtag-pml.mkii
+++ b/tex/context/base/xtag-pml.mkii
@@ -5,7 +5,7 @@
%D subtitle=Physics ML,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-pmu.mkii b/tex/context/base/xtag-pmu.mkii
index b913475f5..5c7c9a8f6 100644
--- a/tex/context/base/xtag-pmu.mkii
+++ b/tex/context/base/xtag-pmu.mkii
@@ -5,7 +5,7 @@
%D subtitle=Units,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-pre.mkii b/tex/context/base/xtag-pre.mkii
index 94a213d94..63706d64c 100644
--- a/tex/context/base/xtag-pre.mkii
+++ b/tex/context/base/xtag-pre.mkii
@@ -5,7 +5,7 @@
%D subtitle=Predefined Things,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-prs.mkii b/tex/context/base/xtag-prs.mkii
index 02bdcf21c..8728d992a 100644
--- a/tex/context/base/xtag-prs.mkii
+++ b/tex/context/base/xtag-prs.mkii
@@ -5,7 +5,7 @@
%D subtitle=Parsing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-raw.mkii b/tex/context/base/xtag-raw.mkii
index e6dfdea41..aab294c5a 100644
--- a/tex/context/base/xtag-raw.mkii
+++ b/tex/context/base/xtag-raw.mkii
@@ -5,7 +5,7 @@
%D subtitle=Raw Specials,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-rng.mkii b/tex/context/base/xtag-rng.mkii
index 254282424..4b9dcfaf1 100644
--- a/tex/context/base/xtag-rng.mkii
+++ b/tex/context/base/xtag-rng.mkii
@@ -5,7 +5,7 @@
%D subtitle=Relax NG,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-run.mkii b/tex/context/base/xtag-run.mkii
index 035268104..219c7c081 100644
--- a/tex/context/base/xtag-run.mkii
+++ b/tex/context/base/xtag-run.mkii
@@ -5,7 +5,7 @@
%D subtitle=Visualization,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-stk.mkii b/tex/context/base/xtag-stk.mkii
index e126ae5c7..d454a63ca 100644
--- a/tex/context/base/xtag-stk.mkii
+++ b/tex/context/base/xtag-stk.mkii
@@ -5,7 +5,7 @@
%D subtitle=Stacking Data,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-utf.mkii b/tex/context/base/xtag-utf.mkii
index fec84d279..b58fbbe88 100644
--- a/tex/context/base/xtag-utf.mkii
+++ b/tex/context/base/xtag-utf.mkii
@@ -5,7 +5,7 @@
%D subtitle=UTF,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-xsd.mkii b/tex/context/base/xtag-xsd.mkii
index 96169afa2..c1f4b91b6 100644
--- a/tex/context/base/xtag-xsd.mkii
+++ b/tex/context/base/xtag-xsd.mkii
@@ -5,7 +5,7 @@
%D subtitle=Schemas,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/base/xtag-xsl.mkii b/tex/context/base/xtag-xsl.mkii
index 3ad096c28..af5245638 100644
--- a/tex/context/base/xtag-xsl.mkii
+++ b/tex/context/base/xtag-xsl.mkii
@@ -5,7 +5,7 @@
%D subtitle=XSLT processing,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/context/bib/backup/sample.bib b/tex/context/bib/backup/sample.bib
new file mode 100644
index 000000000..3f8df623e
--- /dev/null
+++ b/tex/context/bib/backup/sample.bib
@@ -0,0 +1,38 @@
+@STRING{hh = {Hans Hagen}}
+
+@ELECTRONIC{hh2010,
+ author = hh,
+ year = {2010},
+ title = {Metafun. \CONTEXT\ mkiv},
+ url = {http://www.pragma-ade.nl/general/manuals/metafun-s.pdf},
+}
+
+@ARTICLE{hh2010a,
+ author = hh,
+ title = {The Font Name Mess},
+ journal = {MAPS},
+ year = {2010},
+ volume = {40},
+ pages = {2-8},
+ keywords = {context},
+}
+
+@ARTICLE{hh2010b,
+ author = hh,
+ title = {Grouping in Hybrid Environments},
+ journal = {MAPS},
+ year = {2010},
+ volume = {40},
+ pages = {67-71},
+ keywords = {context},
+}
+
+@BOOK{Eijkhout1991,
+ title = {\TeX\ by Topic. A \TeX nician's Reference},
+ publisher = {Addison-Wesley},
+ year = {1991},
+ author = {Victor Eijkhout},
+ address = {London},
+ keywords = {general},
+}
+
diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml
index f91cc06f5..6fb9bae2f 100644
--- a/tex/context/interface/keys-cs.xml
+++ b/tex/context/interface/keys-cs.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='predchozilichastranka'/>
<cd:variable name='previouspage' value='predchozistranka'/>
<cd:variable name='previoussubpage' value='predchozipodstranka'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='tisknutelne'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='produkt'/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index 9f01c61b4..d8f42786a 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='vorigeungeradeseite'/>
<cd:variable name='previouspage' value='vorigeseite'/>
<cd:variable name='previoussubpage' value='vorigeunterseite'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='druckbar'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='produkt'/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index b2954aa3a..09f44dbf3 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='previousoddpage'/>
<cd:variable name='previouspage' value='previouspage'/>
<cd:variable name='previoussubpage' value='previoussubpage'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='printable'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='product'/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index bcb18fca1..41ce0450f 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='pageimpaireprecedente'/>
<cd:variable name='previouspage' value='pageprecedente'/>
<cd:variable name='previoussubpage' value='souspageprecedente'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='editable'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='produit'/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index 0a156e842..e1ecdbed8 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='paginadispariprecedente'/>
<cd:variable name='previouspage' value='paginaprecedente'/>
<cd:variable name='previoussubpage' value='sottopaginaprecedente'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='stampabile'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='prodotto'/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index eb156cf5a..a28da1f85 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='vorigeonevenpagina'/>
<cd:variable name='previouspage' value='vorigepagina'/>
<cd:variable name='previoussubpage' value='vorigesubpagina'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='printbaar'/>
<cd:variable name='process' value='proces'/>
<cd:variable name='product' value='produkt'/>
diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml
index 2dd57b3d1..89307f7fa 100644
--- a/tex/context/interface/keys-pe.xml
+++ b/tex/context/interface/keys-pe.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='صفحه‌فردقبلی'/>
<cd:variable name='previouspage' value='صفحه‌قبلی'/>
<cd:variable name='previoussubpage' value='زیرصفحه‌قبلی'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='قابل‌چاپ'/>
<cd:variable name='process' value='پردازش'/>
<cd:variable name='product' value='محصول'/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index c0ebc9c96..ef715b83e 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -359,6 +359,7 @@
<cd:variable name='previousoddpage' value='paginaimparaprecedenta'/>
<cd:variable name='previouspage' value='paginaanterioara'/>
<cd:variable name='previoussubpage' value='subpaginaanterioara'/>
+ <cd:variable name='print' value='print'/>
<cd:variable name='printable' value='tiparibil'/>
<cd:variable name='process' value='process'/>
<cd:variable name='product' value='produs'/>
diff --git a/tex/generic/context/luatex-basics.tex b/tex/generic/context/luatex-basics.tex
index 8308204d5..bb34587ff 100644
--- a/tex/generic/context/luatex-basics.tex
+++ b/tex/generic/context/luatex-basics.tex
@@ -5,7 +5,7 @@
%D subtitle=Attribute Allocation,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=public domain]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%D As soon as we feel the need this file will file will contain an extension
%D to the standard plain register allocation. For the moment we stick to a
diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua
index 3036e2f81..a826b33f0 100644
--- a/tex/generic/context/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 05/18/11 22:26:32
+-- merge date : 06/08/11 19:06:42
do -- begin closure to overcome local limits and interference
@@ -1855,9 +1855,39 @@ end
--~ print(file.join("http:///a","/y"))
--~ print(file.join("//nas-1","/y"))
+-- We should be able to use:
+--
+-- function file.is_writable(name)
+-- local a = attributes(name) or attributes(dirname(name,"."))
+-- return a and sub(a.permissions,2,2) == "w"
+-- end
+--
+-- But after some testing Taco and I came up with:
+
function file.is_writable(name)
- local a = attributes(name) or attributes(dirname(name,"."))
- return a and sub(a.permissions,2,2) == "w"
+ if lfs.isdir(name) then
+ name = name .. "/m_t_x_t_e_s_t.tmp"
+ local f = io.open(name,"wb")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ elseif lfs.isfile(name) then
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ return true
+ end
+ else
+ local f = io.open(name,"ab")
+ if f then
+ f:close()
+ os.remove(name)
+ return true
+ end
+ end
+ return false
end
function file.is_readable(name)
diff --git a/tex/generic/context/luatex-fonts.tex b/tex/generic/context/luatex-fonts.tex
index 8ccc9f3d5..a7c8bc2b8 100644
--- a/tex/generic/context/luatex-fonts.tex
+++ b/tex/generic/context/luatex-fonts.tex
@@ -4,7 +4,7 @@
%D title=\LUATEX\ Support Macros,
%D subtitle=Generic \OPENTYPE\ Font Handler,
%D author=Hans Hagen,
-%D copyright=see context related readme files]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%D \subject{Welcome}
%D
diff --git a/tex/generic/context/luatex-mplib.tex b/tex/generic/context/luatex-mplib.tex
index 691958646..ef6dfff95 100644
--- a/tex/generic/context/luatex-mplib.tex
+++ b/tex/generic/context/luatex-mplib.tex
@@ -4,7 +4,7 @@
%D title=\LUATEX\ Support Macros,
%D subtitle=\METAPOST\ to \PDF\ conversion,
%D author=Taco Hoekwater \& Hans Hagen,
-%D copyright=see context related readme files]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%D This is the companion to the \LUA\ module \type {supp-mpl.lua}. Further
%D embedding is up to others. A simple example of usage in plain \TEX\ is:
diff --git a/tex/generic/context/luatex-preprocessor.tex b/tex/generic/context/luatex-preprocessor.tex
index fe4872d61..03b483f41 100644
--- a/tex/generic/context/luatex-preprocessor.tex
+++ b/tex/generic/context/luatex-preprocessor.tex
@@ -4,7 +4,7 @@
%D title=\LUATEX\ Support Macros,
%D subtitle=Generic Preprocessor,
%D author=Hans Hagen,
-%D copyright=public domain]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
\directlua{dofile(kpse.find_file('luatex-preprocessor.lua'))}
diff --git a/tex/generic/context/luatex-test.tex b/tex/generic/context/luatex-test.tex
index 1c3aeb1b6..830d30a91 100644
--- a/tex/generic/context/luatex-test.tex
+++ b/tex/generic/context/luatex-test.tex
@@ -5,7 +5,7 @@
%D subtitle=Simple Test File,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright=public domain]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%D See \type {luatex-plain.tex} (or on my machine \type {luatex.tex}
%D for how to make a format.
diff --git a/tex/generic/context/m-metapo.tex b/tex/generic/context/m-metapo.tex
index 8680f69c6..f02830a13 100644
--- a/tex/generic/context/m-metapo.tex
+++ b/tex/generic/context/m-metapo.tex
@@ -5,7 +5,7 @@
%D subtitle=\METAPOST\ Inclusion,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ distribution and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/tex/generic/context/mptopdf.tex b/tex/generic/context/mptopdf.tex
index a0ac34a42..3efe57392 100644
--- a/tex/generic/context/mptopdf.tex
+++ b/tex/generic/context/mptopdf.tex
@@ -5,7 +5,7 @@
%D subtitle=conversion to \PDF,
%D author=Hans Hagen,
%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
diff --git a/web2c/contextcnf.lua b/web2c/contextcnf.lua
index e3f857878..b89b7d34d 100644
--- a/web2c/contextcnf.lua
+++ b/web2c/contextcnf.lua
@@ -1,9 +1,9 @@
return {
type = "configuration",
- version = "1.1.0",
- date = "2011-09-02", -- or so
- time = "12:12:12",
+ version = "1.1.1",
+ date = "2011-06-02",
+ time = "14:59:00",
comment = "ConTeXt MkIV configuration file",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
@@ -19,23 +19,30 @@ return {
variables = {
-- The following variable is predefined (but can be overloaded) and in
- -- most cases you can leve this one untouched. The built-in definition
+ -- most cases you can leave this one untouched. The built-in definition
-- permits relocation of the tree.
--
- -- TEXMFCNF = "{selfautodir:,selfautoparent:}{,{/share,}/texmf{-local,}/web2c}"
+ -- if this_is_texlive then
+ -- resolvers.luacnfspec = 'selfautodir:;selfautoparent:;{selfautodir:,selfautoparent:}{/share,}/texmf{-local,}/web2c'
+ -- else
+ -- resolvers.luacnfspec = 'home:texmf/web2c;selfautoparent:texmf{-local,-context,}/web2c'
+ -- end
--
- -- more readable than "selfautoparent:{/texmf{-local,}{,/web2c},}}" is:
+ -- more readable is:
--
-- TEXMFCNF = {
- -- "selfautoparent:/texmf-local",
- -- "selfautoparent:/texmf-local/web2c",
- -- "selfautoparent:/texmf",
- -- "selfautoparent:/texmf/web2c",
- -- "selfautoparent:",
+ -- "home:texmf/web2c,
+ -- "selfautoparent:texmf-local/web2c",
+ -- "selfautoparent:texmf-context/web2c",
+ -- "selfautoparent:texmf/web2c",
-- }
-- We have only one cache path but there can be more. The first writable one
-- will be chose but there can be more readable paths.
+ --
+ -- Keep in mind that MkIV does not run at all on older texlives so when using
+ -- that you don't need to worry about ancient and obsolete configuration paths,
+ -- simply because no configuration will be found there.
TEXMFCACHE = "$SELFAUTOPARENT/texmf-cache",
@@ -67,32 +74,31 @@ return {
ENCFONTS = ".;$TEXMF/fonts/data//;$TEXMF/fonts/enc/{dvips,pdftex}//",
VFFONTS = ".;$TEXMF/fonts/{data,vf}//",
TFMFONTS = ".;$TEXMF/fonts/{data,tfm}//",
- T1FONTS = ".;$TEXMF/fonts/{data,type1,pfb}//;$OSFONTDIR",
+ T1FONTS = ".;$TEXMF/fonts/{data,type1}//;$OSFONTDIR",
AFMFONTS = ".;$TEXMF/fonts/{data,afm}//;$OSFONTDIR",
- TTFONTS = ".;$TEXMF/fonts/{data,truetype,ttf}//;$OSFONTDIR",
+ TTFONTS = ".;$TEXMF/fonts/{data,truetype}//;$OSFONTDIR",
OPENTYPEFONTS = ".;$TEXMF/fonts/{data,opentype}//;$OSFONTDIR",
- CMAPFONTS = ".;$TEXMF/fonts/cmap//",
FONTFEATURES = ".;$TEXMF/fonts/{data,fea}//;$OPENTYPEFONTS;$TTFONTS;$T1FONTS;$AFMFONTS",
- FONTCIDMAPS = ".;$TEXMF/fonts/{data,cid}//;$OPENTYPEFONTS;$TTFONTS;$T1FONTS;$AFMFONTS",
+ FONTCIDMAPS = ".;$TEXMF/fonts/{data,cid}//",
OFMFONTS = ".;$TEXMF/fonts/{data,ofm,tfm}//",
OVFFONTS = ".;$TEXMF/fonts/{data,ovf,vf}//",
- TEXINPUTS = ".;{$CTXDEVTXPATH};$TEXMF/tex/{context,plain/base,generic}//",
- MPINPUTS = ".;{$CTXDEVMPPATH};$TEXMF/metapost/{context,base,}//",
+ TEXINPUTS = ".;$TEXMF/tex/{context,plain/base,generic}//",
+ MPINPUTS = ".;$TEXMF/metapost/{context,base,}//",
-- In the next variable the inputs path will go away.
- TEXMFSCRIPTS = ".;$CTXDEVLUPATH;$CTXDEVRBPATH;$CTXDEVPLPATH;$TEXMF/scripts/context/{lua,ruby,python,perl}//;$TEXINPUTS",
- PERLINPUTS = ".;$CTXDEVPLPATH;$TEXMF/scripts/context/perl",
- PYTHONINPUTS = ".;$CTXDEVPYPATH;$TEXMF/scripts/context/python",
- RUBYINPUTS = ".;$CTXDEVRBPATH;$TEXMF/scripts/context/ruby",
- LUAINPUTS = ".;$CTXDEVLUPATH;$TEXINPUTS;$TEXMF/scripts/context/lua//",
+ TEXMFSCRIPTS = ".;$TEXMF/scripts/context/{lua,ruby,python,perl}//;$TEXINPUTS",
+ PERLINPUTS = ".;$TEXMF/scripts/context/perl",
+ PYTHONINPUTS = ".;$TEXMF/scripts/context/python",
+ RUBYINPUTS = ".;$TEXMF/scripts/context/ruby",
+ LUAINPUTS = ".;$TEXINPUTS;$TEXMF/scripts/context/lua//",
CLUAINPUTS = ".;$SELFAUTOLOC/lib/{context,luatex,}/lua//",
-- Not really used by MkIV so they might go away.
- BIBINPUTS = ".;{$CTXDEVTXPATH};$TEXMF/bibtex/bib//",
- BSTINPUTS = ".;{$CTXDEVTXPATH};$TEXMF/bibtex/bst//",
+ BIBINPUTS = ".;$TEXMF/bibtex/bib//",
+ BSTINPUTS = ".;$TEXMF/bibtex/bst//",
-- Experimental
@@ -102,7 +108,6 @@ return {
FONTCONFIG_FILE = "fonts.conf",
FONTCONFIG_PATH = "$TEXMFSYSTEM/fonts/conf",
- FC_CACHEDIR = "$TEXMFSYSTEM/fonts/cache", -- not needed
},
@@ -155,7 +160,6 @@ return {
-- as they only make sense when testing.
-- ["fonts.autoreload"] = "no",
- -- ["fonts.otf.loader.method"] = "table", -- table mixed sparse
-- ["fonts.otf.loader.cleanup"] = "0", -- 0 1 2 3
-- In an edit cycle it can be handy to launch an editor. The
@@ -174,6 +178,6 @@ return {
},
- TEXMFCACHE = "$SELFAUTOPARENT/texmf-cache", -- for old times sake
+ -- TEXMFCACHE = "$SELFAUTOPARENT/texmf-cache", -- for old times sake
}
diff --git a/web2c/natural.tcx b/web2c/natural.tcx
deleted file mode 100644
index 2457df240..000000000
--- a/web2c/natural.tcx
+++ /dev/null
@@ -1,181 +0,0 @@
-% natural.tcx -- 27/02/2004 - Hartmut Henkel & Hans Hagen
-%
-% Usage - command line:
-%
-% pdfetex --translate-file=natural.tcx
-%
-% Usage - first line of any file
-%
-% %& --translate-file=natural.tcx
-%
-% Usage - first line of ConTeXt file
-%
-% % translate=natural.tcx
-%
-% Usage - texexec
-%
-% --translate=natural.tcx
-
-0x00 0x00
-0x01 0x01
-0x02 0x02
-0x03 0x03
-0x04 0x04
-0x05 0x05
-0x06 0x06
-0x07 0x07
-0x08 0x08
-0x09 0x09
-0x0a 0x0a
-0x0b 0x0b
-0x0c 0x0c
-0x0d 0x0d
-0x0e 0x0e
-0x0f 0x0f
-0x10 0x10
-0x11 0x11
-0x12 0x12
-0x13 0x13
-0x14 0x14
-0x15 0x15
-0x16 0x16
-0x17 0x17
-0x18 0x18
-0x19 0x19
-0x1a 0x1a
-0x1b 0x1b
-0x1c 0x1c
-0x1d 0x1d
-0x1e 0x1e
-0x1f 0x1f
-
-% 0x20 -- 0x7F are natural anyway, but we may add them some day
-
-0x80 0x80
-0x81 0x81
-0x82 0x82
-0x83 0x83
-0x84 0x84
-0x85 0x85
-0x86 0x86
-0x87 0x87
-0x88 0x88
-0x89 0x89
-0x8a 0x8a
-0x8b 0x8b
-0x8c 0x8c
-0x8d 0x8d
-0x8e 0x8e
-0x8f 0x8f
-0x90 0x90
-0x91 0x91
-0x92 0x92
-0x93 0x93
-0x94 0x94
-0x95 0x95
-0x96 0x96
-0x97 0x97
-0x98 0x98
-0x99 0x99
-0x9a 0x9a
-0x9b 0x9b
-0x9c 0x9c
-0x9d 0x9d
-0x9e 0x9e
-0x9f 0x9f
-0xa0 0xa0
-0xa1 0xa1
-0xa2 0xa2
-0xa3 0xa3
-0xa4 0xa4
-0xa5 0xa5
-0xa6 0xa6
-0xa7 0xa7
-0xa8 0xa8
-0xa9 0xa9
-0xaa 0xaa
-0xab 0xab
-0xac 0xac
-0xad 0xad
-0xae 0xae
-0xaf 0xaf
-0xb0 0xb0
-0xb1 0xb1
-0xb2 0xb2
-0xb3 0xb3
-0xb4 0xb4
-0xb5 0xb5
-0xb6 0xb6
-0xb7 0xb7
-0xb8 0xb8
-0xb9 0xb9
-0xba 0xba
-0xbb 0xbb
-0xbc 0xbc
-0xbd 0xbd
-0xbe 0xbe
-0xbf 0xbf
-0xc0 0xc0
-0xc1 0xc1
-0xc2 0xc2
-0xc3 0xc3
-0xc4 0xc4
-0xc5 0xc5
-0xc6 0xc6
-0xc7 0xc7
-0xc8 0xc8
-0xc9 0xc9
-0xca 0xca
-0xcb 0xcb
-0xcc 0xcc
-0xcd 0xcd
-0xce 0xce
-0xcf 0xcf
-0xd0 0xd0
-0xd1 0xd1
-0xd2 0xd2
-0xd3 0xd3
-0xd4 0xd4
-0xd5 0xd5
-0xd6 0xd6
-0xd7 0xd7
-0xd8 0xd8
-0xd9 0xd9
-0xda 0xda
-0xdb 0xdb
-0xdc 0xdc
-0xdd 0xdd
-0xde 0xde
-0xdf 0xdf
-0xe0 0xe0
-0xe1 0xe1
-0xe2 0xe2
-0xe3 0xe3
-0xe4 0xe4
-0xe5 0xe5
-0xe6 0xe6
-0xe7 0xe7
-0xe8 0xe8
-0xe9 0xe9
-0xea 0xea
-0xeb 0xeb
-0xec 0xec
-0xed 0xed
-0xee 0xee
-0xef 0xef
-0xf0 0xf0
-0xf1 0xf1
-0xf2 0xf2
-0xf3 0xf3
-0xf4 0xf4
-0xf5 0xf5
-0xf6 0xf6
-0xf7 0xf7
-0xf8 0xf8
-0xf9 0xf9
-0xfa 0xfa
-0xfb 0xfb
-0xfc 0xfc
-0xfd 0xfd
-0xfe 0xfe
-0xff 0xff
diff --git a/web2c/texlive2011cnf.lua b/web2c/texlive2011cnf.lua
new file mode 100644
index 000000000..f11e45731
--- /dev/null
+++ b/web2c/texlive2011cnf.lua
@@ -0,0 +1,40 @@
+return {
+
+ type = "configuration",
+ version = "1.1.1",
+ date = "2011-06-02",
+ time = "14:59:00",
+ comment = "TeX Live differences",
+
+ parent = "contextcnf.lua",
+
+ content = {
+
+ -- Keep in mind that MkIV is is relatively new and there is zero change that
+ -- (configuration) files will be found on older obsolete locations.
+
+ variables = {
+
+ -- This needs testing and if it works, then we can remove the texmflocal setting later on
+ --
+ -- TEXMFCNF = "{selfautodir:{/share,}/texmf-local/web2c,selfautoparent:{/share,}/texmf{-local,}/web2c}",
+
+ TEXMFCACHE = "selfautoparent:texmf-var;~/.texlive2011/texmf-cache",
+ TEXMFCONFIG = "~/.texlive2011/texmf-config",
+
+ TEXMFSYSTEM = "selfautoparent:$SELFAUTOSYSTEM",
+ TEXMFCONTEXT = "selfautoparent:texmf-dist",
+
+ TEXMFLOCAL = string.gsub(resolvers.prefixes.selfautoparent(),"20%d%d$","texmf-local"),
+
+ TEXMFSYSCONFIG = "selfautoparent:texmf-config",
+
+ TEXMFSYSVAR = "selfautoparent:texmf-var",
+
+ TEXMF = "{$TEXMFCONFIG,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFPROJECT,!!$TEXMFFONTS,!!$TEXMFLOCAL,!!$TEXMFCONTEXT,!!$TEXMFSYSTEM,!!$TEXMFMAIN}",
+
+ FONTCONFIG_PATH = "$TEXMFSYSVAR/fonts/conf",
+
+ },
+ },
+}