summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2022-12-15 19:13:44 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2022-12-15 19:13:44 +0100
commit8f472c629a996f1c08281198210354a253d7f56b (patch)
tree26f5fa0bda520d7ea9e87947df6978b9085a7d58
parent3bdc9b9072bba774cd5c604fe185d39ddbdc911e (diff)
downloadcontext-8f472c629a996f1c08281198210354a253d7f56b.tar.gz
2022-12-15 17:52:00
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua2
-rw-r--r--context/data/scite/context/scite-context-data-context.properties234
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties147
-rw-r--r--doc/context/documents/general/manuals/lowlevel-macros.pdfbin82764 -> 88216 bytes
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex75
-rw-r--r--metapost/context/base/mpxl/mp-apos.mpxl87
-rw-r--r--metapost/context/base/mpxl/mp-cont.mpxl8
-rw-r--r--source/luametatex/source/lua/lmtinterface.h3
-rw-r--r--source/luametatex/source/lua/lmtstatuslib.c6
-rw-r--r--source/luametatex/source/lua/lmttexlib.c13
-rw-r--r--source/luametatex/source/lua/lmttokenlib.c77
-rw-r--r--source/luametatex/source/lua/lmttokenlib.h2
-rw-r--r--source/luametatex/source/luametatex.h2
-rw-r--r--source/luametatex/source/tex/texcommands.c11
-rw-r--r--source/luametatex/source/tex/texcommands.h10
-rw-r--r--source/luametatex/source/tex/texconditional.c22
-rw-r--r--source/luametatex/source/tex/texdumpdata.h2
-rw-r--r--source/luametatex/source/tex/texequivalents.c2
-rw-r--r--source/luametatex/source/tex/texequivalents.h3
-rw-r--r--source/luametatex/source/tex/texexpand.c36
-rw-r--r--source/luametatex/source/tex/texinputstack.c25
-rw-r--r--source/luametatex/source/tex/texlanguage.c5
-rw-r--r--source/luametatex/source/tex/texmaincontrol.c103
-rw-r--r--source/luametatex/source/tex/texmarks.c30
-rw-r--r--source/luametatex/source/tex/texmarks.h2
-rw-r--r--source/luametatex/source/tex/texmath.c52
-rw-r--r--source/luametatex/source/tex/texmlist.c23
-rw-r--r--source/luametatex/source/tex/texprinting.c2
-rw-r--r--source/luametatex/source/tex/texscanning.c140
-rw-r--r--source/luametatex/source/tex/texstringpool.h58
-rw-r--r--source/luametatex/source/tex/textoken.c114
-rw-r--r--source/luametatex/source/tex/textoken.h43
-rw-r--r--source/luametatex/source/tex/textypes.h2
-rw-r--r--source/luametatex/source/utilities/auxunistring.c100
-rw-r--r--source/luametatex/source/utilities/auxunistring.h3
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/mult-fmt.lua8
-rw-r--r--tex/context/base/mkiv/mult-low.lua3
-rw-r--r--tex/context/base/mkiv/mult-prm.lua4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24606 -> 24575 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin264746 -> 264780 bytes
-rw-r--r--tex/context/base/mkxl/anch-bck.mklx2
-rw-r--r--tex/context/base/mkxl/anch-box.mkxl40
-rw-r--r--tex/context/base/mkxl/anch-pgr.mkxl14
-rw-r--r--tex/context/base/mkxl/anch-pos.mkxl8
-rw-r--r--tex/context/base/mkxl/anch-tab.mkxl6
-rw-r--r--tex/context/base/mkxl/attr-lay.mkxl12
-rw-r--r--tex/context/base/mkxl/back-exp.mkxl2
-rw-r--r--tex/context/base/mkxl/bibl-bib.mkxl8
-rw-r--r--tex/context/base/mkxl/bibl-tra.mkxl46
-rw-r--r--tex/context/base/mkxl/buff-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/buff-par.mklx10
-rw-r--r--tex/context/base/mkxl/buff-ver.mkxl4
-rw-r--r--tex/context/base/mkxl/catc-ini.mkxl6
-rw-r--r--tex/context/base/mkxl/chem-str.mkxl20
-rw-r--r--tex/context/base/mkxl/colo-ext.mkxl2
-rw-r--r--tex/context/base/mkxl/colo-ini.mkxl24
-rw-r--r--tex/context/base/mkxl/cont-log.mkxl1
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl4
-rw-r--r--tex/context/base/mkxl/core-con.mkxl10
-rw-r--r--tex/context/base/mkxl/core-env.mkxl8
-rw-r--r--tex/context/base/mkxl/core-ini.mkxl3
-rw-r--r--tex/context/base/mkxl/core-sys.mkxl2
-rw-r--r--tex/context/base/mkxl/core-two.mkxl5
-rw-r--r--tex/context/base/mkxl/file-ini.mklx11
-rw-r--r--tex/context/base/mkxl/file-job.mklx6
-rw-r--r--tex/context/base/mkxl/file-mod.mklx28
-rw-r--r--tex/context/base/mkxl/file-res.mklx2
-rw-r--r--tex/context/base/mkxl/font-col.mklx6
-rw-r--r--tex/context/base/mkxl/font-emp.mklx2
-rw-r--r--tex/context/base/mkxl/font-fea.mklx18
-rw-r--r--tex/context/base/mkxl/font-fil.mklx28
-rw-r--r--tex/context/base/mkxl/font-ini.mklx61
-rw-r--r--tex/context/base/mkxl/font-mat.mklx56
-rw-r--r--tex/context/base/mkxl/font-sel.mklx2
-rw-r--r--tex/context/base/mkxl/font-set.mklx2
-rw-r--r--tex/context/base/mkxl/font-sol.mklx4
-rw-r--r--tex/context/base/mkxl/font-sty.mklx10
-rw-r--r--tex/context/base/mkxl/font-sym.mklx6
-rw-r--r--tex/context/base/mkxl/font-var.mklx8
-rw-r--r--tex/context/base/mkxl/grph-epd.mkxl2
-rw-r--r--tex/context/base/mkxl/grph-fig.mkxl2
-rw-r--r--tex/context/base/mkxl/grph-inc.mkxl2
-rw-r--r--tex/context/base/mkxl/grph-trf.mkxl14
-rw-r--r--tex/context/base/mkxl/hand-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/lang-hyp.mkxl26
-rw-r--r--tex/context/base/mkxl/lang-ini.mkxl10
-rw-r--r--tex/context/base/mkxl/lang-lab.mkxl11
-rw-r--r--tex/context/base/mkxl/lang-url.mkxl4
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl21
-rw-r--r--tex/context/base/mkxl/math-dld.mklx (renamed from tex/context/base/mkxl/math-del.mklx)4
-rw-r--r--tex/context/base/mkxl/math-fen.mkxl2
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/math-rad.mklx4
-rw-r--r--tex/context/base/mkxl/math-stc.mklx6
-rw-r--r--tex/context/base/mkxl/meta-ini.mkxl50
-rw-r--r--tex/context/base/mkxl/meta-pdf.mkxl2
-rw-r--r--tex/context/base/mkxl/meta-pdh.mkxl9
-rw-r--r--tex/context/base/mkxl/mlib-int.lmt6
-rw-r--r--tex/context/base/mkxl/mult-aux.mkxl73
-rw-r--r--tex/context/base/mkxl/mult-ini.lmt2
-rw-r--r--tex/context/base/mkxl/mult-ini.mkxl112
-rw-r--r--tex/context/base/mkxl/node-ext.mkxl2
-rw-r--r--tex/context/base/mkxl/node-rul.mkxl14
-rw-r--r--tex/context/base/mkxl/pack-box.mkxl24
-rw-r--r--tex/context/base/mkxl/pack-com.mkxl32
-rw-r--r--tex/context/base/mkxl/pack-cut.mkxl11
-rw-r--r--tex/context/base/mkxl/pack-lyr.mkxl68
-rw-r--r--tex/context/base/mkxl/pack-mat.mkxl206
-rw-r--r--tex/context/base/mkxl/pack-obj.mkxl2
-rw-r--r--tex/context/base/mkxl/pack-pos.mkxl4
-rw-r--r--tex/context/base/mkxl/pack-rul.mkxl70
-rw-r--r--tex/context/base/mkxl/page-app.mkxl4
-rw-r--r--tex/context/base/mkxl/page-bck.mkxl2
-rw-r--r--tex/context/base/mkxl/page-box.mklx8
-rw-r--r--tex/context/base/mkxl/page-brk.mkxl8
-rw-r--r--tex/context/base/mkxl/page-cst.mkxl4
-rw-r--r--tex/context/base/mkxl/page-flt.mkxl8
-rw-r--r--tex/context/base/mkxl/page-imp.mkxl10
-rw-r--r--tex/context/base/mkxl/page-inf.mkxl10
-rw-r--r--tex/context/base/mkxl/page-inj.mklx4
-rw-r--r--tex/context/base/mkxl/page-lay.mkxl58
-rw-r--r--tex/context/base/mkxl/page-lin.mklx21
-rw-r--r--tex/context/base/mkxl/page-mcl.mkxl2
-rw-r--r--tex/context/base/mkxl/page-mix.mkxl16
-rw-r--r--tex/context/base/mkxl/page-one.mkxl4
-rw-r--r--tex/context/base/mkxl/page-pcl.mkxl2
-rw-r--r--tex/context/base/mkxl/page-pst.mkxl2
-rw-r--r--tex/context/base/mkxl/page-sid.mkxl8
-rw-r--r--tex/context/base/mkxl/page-str.mkxl2
-rw-r--r--tex/context/base/mkxl/page-txt.mklx18
-rw-r--r--tex/context/base/mkxl/publ-ini.mkxl217
-rw-r--r--tex/context/base/mkxl/regi-ini.mkxl2
-rw-r--r--tex/context/base/mkxl/scrn-bar.mklx6
-rw-r--r--tex/context/base/mkxl/scrn-but.mklx14
-rw-r--r--tex/context/base/mkxl/scrn-fld.mklx34
-rw-r--r--tex/context/base/mkxl/scrn-hlp.mklx4
-rw-r--r--tex/context/base/mkxl/scrn-pag.mklx12
-rw-r--r--tex/context/base/mkxl/scrn-ref.mklx8
-rw-r--r--tex/context/base/mkxl/scrn-wid.mklx32
-rw-r--r--tex/context/base/mkxl/spac-hor.mkxl10
-rw-r--r--tex/context/base/mkxl/spac-lin.mkxl4
-rw-r--r--tex/context/base/mkxl/spac-pag.mkxl4
-rw-r--r--tex/context/base/mkxl/spac-par.mkxl2
-rw-r--r--tex/context/base/mkxl/spac-ver.mkxl33
-rw-r--r--tex/context/base/mkxl/strc-bkm.mkxl6
-rw-r--r--tex/context/base/mkxl/strc-blk.mkxl10
-rw-r--r--tex/context/base/mkxl/strc-con.mklx65
-rw-r--r--tex/context/base/mkxl/strc-des.mklx2
-rw-r--r--tex/context/base/mkxl/strc-doc.mkxl76
-rw-r--r--tex/context/base/mkxl/strc-enu.mklx8
-rw-r--r--tex/context/base/mkxl/strc-flt.mklx112
-rw-r--r--tex/context/base/mkxl/strc-itm.mklx93
-rw-r--r--tex/context/base/mkxl/strc-lab.mkxl8
-rw-r--r--tex/context/base/mkxl/strc-lnt.mklx4
-rw-r--r--tex/context/base/mkxl/strc-lst.mklx43
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl110
-rw-r--r--tex/context/base/mkxl/strc-not.mklx30
-rw-r--r--tex/context/base/mkxl/strc-num.mkxl12
-rw-r--r--tex/context/base/mkxl/strc-ref.mklx76
-rw-r--r--tex/context/base/mkxl/strc-reg.mkxl74
-rw-r--r--tex/context/base/mkxl/strc-ren.mkxl7
-rw-r--r--tex/context/base/mkxl/strc-sbe.mkxl2
-rw-r--r--tex/context/base/mkxl/strc-sec.mkxl58
-rw-r--r--tex/context/base/mkxl/strc-syn.mkxl26
-rw-r--r--tex/context/base/mkxl/strc-tag.mkxl8
-rw-r--r--tex/context/base/mkxl/strc-usr.mkxl2
-rw-r--r--tex/context/base/mkxl/supp-box.mkxl6
-rw-r--r--tex/context/base/mkxl/symb-ini.mkxl8
-rw-r--r--tex/context/base/mkxl/syst-aux.mkxl141
-rw-r--r--tex/context/base/mkxl/syst-ini.mkxl17
-rw-r--r--tex/context/base/mkxl/tabl-frm.mkxl6
-rw-r--r--tex/context/base/mkxl/tabl-ltb.mkxl5
-rw-r--r--tex/context/base/mkxl/tabl-ntb.mkxl74
-rw-r--r--tex/context/base/mkxl/tabl-tab.mkxl60
-rw-r--r--tex/context/base/mkxl/tabl-tbl.mkxl135
-rw-r--r--tex/context/base/mkxl/tabl-tsp.mkxl17
-rw-r--r--tex/context/base/mkxl/tabl-xtb.mklx8
-rw-r--r--tex/context/base/mkxl/toks-aux.lmt2
-rw-r--r--tex/context/base/mkxl/trac-tex.mkxl2
-rw-r--r--tex/context/base/mkxl/type-ini.mklx38
-rw-r--r--tex/context/base/mkxl/typo-ada.mkxl4
-rw-r--r--tex/context/base/mkxl/typo-del.mkxl10
-rw-r--r--tex/context/base/mkxl/typo-dir.mkxl4
-rw-r--r--tex/context/base/mkxl/typo-itm.mkxl2
-rw-r--r--tex/context/base/mkxl/typo-mar.mkxl10
-rw-r--r--tex/context/base/mkxl/typo-shp.mkxl4
-rw-r--r--tex/context/base/mkxl/typo-wrp.mkxl2
-rw-r--r--tex/context/modules/mkxl/s-publications-show.mkxl6
-rw-r--r--tex/context/modules/mkxl/x-mathml.mkxl20
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
196 files changed, 2666 insertions, 2081 deletions
diff --git a/context/data/scite/context/lexers/data/scite-context-data-context.lua b/context/data/scite/context/lexers/data/scite-context-data-context.lua
index 1a32fdf68..2c34100a0 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-context.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua
@@ -1,4 +1,4 @@
return {
["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "centeringskip", "stretchingskip", "shrinkingskip", "centeringfillskip", "stretchingfillskip", "shrinkingfillskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "binaryshiftedten", "binaryshiftedtwenty", "binaryshiftedthirty", "thickermuskip", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "shapingpenaltyfrozenparcode", "orphanpenaltyfrozenparcode", "allfrozenparcode", "mathpenaltyfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "markautomigrationcode", "insertautomigrationcode", "adjustautomigrationcode", "preautomigrationcode", "postautomigrationcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "accenttopskewwithoffsetmathcontrolcode", "ignorekerndimensionsmathcontrolcode", "ignoreflataccentsmathcontrolcode", "extendaccentsmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "islargeoperatorglyphoptioncode", "hasitalicshapeglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "leftoriginlistanchorcode", "leftheightlistanchorcode", "leftdepthlistanchorcode", "rightoriginlistanchorcode", "rightheightlistanchorcode", "rightdepthlistanchorcode", "centeroriginlistanchorcode", "centerheightlistanchorcode", "centerdepthlistanchorcode", "halfwaytotallistanchorcode", "halfwayheightlistanchorcode", "halfwaydepthlistanchorcode", "halfwayleftlistanchorcode", "halfwayrightlistanchorcode", "negatexlistsigncode", "negateylistsigncode", "negatelistsigncode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordinarycode", "mathordcode", "mathoperatorcode", "mathopcode", "mathbinarycode", "mathbincode", "mathrelationcode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctuationcode", "mathpunctcode", "mathovercode", "mathundercode", "mathinnercode", "mathradicalcode", "mathfractioncode", "mathmiddlecode", "mathaccentcode", "mathfencedcode", "mathghostcode", "mathvariablecode", "mathactivecode", "mathvcentercode", "mathconstructcode", "mathwrappedcode", "mathbegincode", "mathendcode", "mathexplicitcode", "mathdivisioncode", "mathfactorialcode", "mathdimensioncode", "mathexperimentalcode", "mathtextpunctuationcode", "mathimaginarycode", "mathdifferentialcode", "mathexponentialcode", "mathellipsiscode", "mathfunctioncode", "mathdigitcode", "mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode", "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", "mathnumbergroupcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "autoinsertedspace", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "flattenhleadersnormalizecode", "normalizeparnormalizeparcode", "flattenvleadersnormalizeparcode", "nopreslackclassoptioncode", "nopostslackclassoptioncode", "lefttopkernclassoptioncode", "righttopkernclassoptioncode", "leftbottomkernclassoptioncode", "rightbottomkernclassoptioncode", "lookaheadforendclassoptioncode", "noitaliccorrectionclassoptioncode", "defaultmathclassoptions", "checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode", "flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode", "carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode", "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "removeitaliccorrectionclassoptioncode", "operatoritaliccorrectionclassoptioncode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continueifinputfile", "continuewhenlmtxmode", "continuewhenmkivmode" },
- ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "moreboxtracing", "lessboxtracing", "noboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "forceinlinemath", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "mathgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchitalic", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "newboundary", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "mathclassvalue", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "ordfracspacing", "ordradspacing", "ordmiddlespacing", "ordaccentspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "opfracspacing", "opradspacing", "opmiddlespacing", "opaccentspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "binfracspacing", "binradspacing", "binmiddlespacing", "binaccentspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "relfracspacing", "relradspacing", "relmiddlespacing", "relaccentspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "openfracspacing", "openradspacing", "openmiddlespacing", "openaccentspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "closefracspacing", "closeradspacing", "closemiddlespacing", "closeaccentspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "punctfracspacing", "punctradspacing", "punctmiddlespacing", "punctaccentspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "innerfracspacing", "innerradspacing", "innermiddlespacing", "inneraccentspacing", "fracordspacing", "fracopspacing", "fracbinspacing", "fracrelspacing", "fracopenspacing", "fracclosespacing", "fracpunctspacing", "fracinnerspacing", "fracfracspacing", "fracradspacing", "fracmiddlespacing", "fracaccentspacing", "radordspacing", "radopspacing", "radbinspacing", "radrelspacing", "radopenspacing", "radclosespacing", "radpunctspacing", "radinnerspacing", "radfracspacing", "radradspacing", "radmiddlespacing", "radaccentspacing", "middleordspacing", "middleopspacing", "middlebinspacing", "middlerelspacing", "middleopenspacing", "middleclosespacing", "middlepunctspacing", "middleinnerspacing", "middlefracspacing", "middleradspacing", "middlemiddlespacing", "middleaccentspacing", "accentordspacing", "accentopspacing", "accentbinspacing", "accentrelspacing", "accentopenspacing", "accentclosespacing", "accentpunctspacing", "accentinnerspacing", "accentfracspacing", "accentradspacing", "accentmiddlespacing", "accentaccentspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "normalprimescript", "superscript", "subscript", "nosuperscript", "nosubscript", "primescript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "triggeredmathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbottomaccent", "Umathtopaccent", "Umathbotaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "rtltext", "ltrtext", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" },
+ ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "moreboxtracing", "lessboxtracing", "noboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "forceinlinemath", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "mathgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchitalic", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "resetdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "newboundary", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "mathclassvalue", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "ordfracspacing", "ordradspacing", "ordmiddlespacing", "ordaccentspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "opfracspacing", "opradspacing", "opmiddlespacing", "opaccentspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "binfracspacing", "binradspacing", "binmiddlespacing", "binaccentspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "relfracspacing", "relradspacing", "relmiddlespacing", "relaccentspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "openfracspacing", "openradspacing", "openmiddlespacing", "openaccentspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "closefracspacing", "closeradspacing", "closemiddlespacing", "closeaccentspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "punctfracspacing", "punctradspacing", "punctmiddlespacing", "punctaccentspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "innerfracspacing", "innerradspacing", "innermiddlespacing", "inneraccentspacing", "fracordspacing", "fracopspacing", "fracbinspacing", "fracrelspacing", "fracopenspacing", "fracclosespacing", "fracpunctspacing", "fracinnerspacing", "fracfracspacing", "fracradspacing", "fracmiddlespacing", "fracaccentspacing", "radordspacing", "radopspacing", "radbinspacing", "radrelspacing", "radopenspacing", "radclosespacing", "radpunctspacing", "radinnerspacing", "radfracspacing", "radradspacing", "radmiddlespacing", "radaccentspacing", "middleordspacing", "middleopspacing", "middlebinspacing", "middlerelspacing", "middleopenspacing", "middleclosespacing", "middlepunctspacing", "middleinnerspacing", "middlefracspacing", "middleradspacing", "middlemiddlespacing", "middleaccentspacing", "accentordspacing", "accentopspacing", "accentbinspacing", "accentrelspacing", "accentopenspacing", "accentclosespacing", "accentpunctspacing", "accentinnerspacing", "accentfracspacing", "accentradspacing", "accentmiddlespacing", "accentaccentspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "normalprimescript", "superscript", "subscript", "nosuperscript", "nosubscript", "primescript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "triggeredmathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbottomaccent", "Umathtopaccent", "Umathbotaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "rtltext", "ltrtext", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" },
} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-tex.lua b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
index 6d5a2656a..5cbac80a7 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
@@ -1,7 +1,7 @@
return {
["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" },
["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "unexpanded", "unless", "widowpenalties" },
- ["luatex"]={ "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelimited", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbasedepth", "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", "Umathaccentextendmargin", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", "Umathaccenttopshiftup", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbottomaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharslot", "Umathclass", "Umathcode", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterpercent", "Umathdelimitershortfall", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathdict", "Umathdictdef", "Umathdiscretionary", "Umathextrasubpreshift", "Umathextrasubprespace", "Umathextrasubshift", "Umathextrasubspace", "Umathextrasuppreshift", "Umathextrasupprespace", "Umathextrasupshift", "Umathextrasupspace", "Umathflattenedaccentbasedepth", "Umathflattenedaccentbaseheight", "Umathflattenedaccentbottomshiftdown", "Umathflattenedaccenttopshiftup", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpresubshiftdistance", "Umathpresupshiftdistance", "Umathprimeraise", "Umathprimeraisecomposed", "Umathprimeshiftdrop", "Umathprimeshiftup", "Umathprimespaceafter", "Umathprimevariant", "Umathprimewidth", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalextensibleafter", "Umathradicalextensiblebefore", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathruledepth", "Umathruleheight", "Umathskeweddelimitertolerance", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathsource", "Umathspaceafterscript", "Umathspacebeforescript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdistance", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdistance", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathuseaxis", "Umathvextensiblevariant", "Umathvoid", "Umathxscale", "Umathyscale", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uoperator", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uprimescript", "Uradical", "Uright", "Uroot", "Urooted", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", "Ushiftedsuperscript", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustartmathmode", "Ustopdisplaymath", "Ustopmath", "Ustopmathmode", "Ustretched", "Ustretchedwithdelims", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "aligncontent", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmainstyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "allunsplitstyles", "amcode", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "beginmathgroup", "beginsimplegroup", "boundary", "boxadapt", "boxanchor", "boxanchors", "boxattribute", "boxdirection", "boxfreeze", "boxgeometry", "boxorientation", "boxrepack", "boxshift", "boxsource", "boxtarget", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "cfcode", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csactive", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandactive", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedname", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyph", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hmcode", "holdingmigrations", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ifzerodim", "ifzeronum", "ignorearguments", "ignorepars", "immediate", "immutable", "indexofcharacter", "indexofregister", "inherited", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastatomclass", "lastboundary", "lastchkdim", "lastchknum", "lastleftclass", "lastloopiterator", "lastnamedcs", "lastnodesubtype", "lastpageextra", "lastparcontext", "lastrightclass", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letmathatomrule", "letmathparent", "letmathspacing", "letprotected", "lettonothing", "linebreakcriterium", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localcontrolledloop", "localinterlinepenalty", "localleftbox", "localleftboxbox", "localmiddlebox", "localmiddleboxbox", "localrightbox", "localrightboxbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathaccent", "mathatom", "mathatomglue", "mathatomskip", "mathbackwardpenalties", "mathbeginclass", "mathcheckfencesmode", "mathdictgroup", "mathdictproperties", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathleftclass", "mathlimitsmode", "mathmainstyle", "mathmiddle", "mathnolimitsmode", "mathpenaltiesmode", "mathrad", "mathrightclass", "mathrulesfam", "mathrulesmode", "mathscale", "mathscriptsmode", "mathslackmode", "mathspacingmode", "mathstackstyle", "mathstyle", "mathstylefontid", "mathsurroundmode", "mathsurroundskip", "maththreshold", "meaningasis", "meaningfull", "meaningless", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "overshoot", "pageboundary", "pageextragoal", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "pettymuskip", "postexhyphenchar", "posthyphenchar", "postinlinepenalty", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "preinlinepenalty", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitloop", "quitvmode", "resetmathspacing", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scaledemwidth", "scaledexheight", "scaledextraspace", "scaledfontdimen", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", "srule", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tinymuskip", "todimension", "tohexadecimal", "tointeger", "tokenized", "toksapp", "tokspre", "tolerant", "tomathstyle", "toscaled", "tosparsedimension", "tosparsescaled", "tpack", "tracingadjusts", "tracingalignments", "tracingexpressions", "tracingfonts", "tracingfullboxes", "tracinghyphenation", "tracinginserts", "tracinglevels", "tracingmarks", "tracingmath", "tracingnodes", "tracingpenalties", "uleaders", "undent", "unexpandedloop", "unhpack", "unletfrozen", "unletprotected", "untraced", "unvpack", "variablefam", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoks", "xtoksapp", "xtokspre" },
+ ["luatex"]={ "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelimited", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbasedepth", "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", "Umathaccentextendmargin", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", "Umathaccenttopshiftup", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbottomaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharslot", "Umathclass", "Umathcode", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterpercent", "Umathdelimitershortfall", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathdict", "Umathdictdef", "Umathdiscretionary", "Umathextrasubpreshift", "Umathextrasubprespace", "Umathextrasubshift", "Umathextrasubspace", "Umathextrasuppreshift", "Umathextrasupprespace", "Umathextrasupshift", "Umathextrasupspace", "Umathflattenedaccentbasedepth", "Umathflattenedaccentbaseheight", "Umathflattenedaccentbottomshiftdown", "Umathflattenedaccenttopshiftup", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpresubshiftdistance", "Umathpresupshiftdistance", "Umathprimeraise", "Umathprimeraisecomposed", "Umathprimeshiftdrop", "Umathprimeshiftup", "Umathprimespaceafter", "Umathprimevariant", "Umathprimewidth", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalextensibleafter", "Umathradicalextensiblebefore", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathruledepth", "Umathruleheight", "Umathskeweddelimitertolerance", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathsource", "Umathspaceafterscript", "Umathspacebeforescript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdistance", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdistance", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathuseaxis", "Umathvextensiblevariant", "Umathvoid", "Umathxscale", "Umathyscale", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uoperator", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uprimescript", "Uradical", "Uright", "Uroot", "Urooted", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", "Ushiftedsuperscript", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustartmathmode", "Ustopdisplaymath", "Ustopmath", "Ustopmathmode", "Ustretched", "Ustretchedwithdelims", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "aligncontent", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmainstyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "allunsplitstyles", "amcode", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "beginmathgroup", "beginsimplegroup", "boundary", "boxadapt", "boxanchor", "boxanchors", "boxattribute", "boxdirection", "boxfreeze", "boxgeometry", "boxorientation", "boxrepack", "boxshift", "boxsource", "boxtarget", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "cdef", "cdefcsname", "cfcode", "clearmarks", "constant", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csactive", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandactive", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedname", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyph", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hmcode", "holdingmigrations", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ifzerodim", "ifzeronum", "ignorearguments", "ignorepars", "immediate", "immutable", "indexofcharacter", "indexofregister", "inherited", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastatomclass", "lastboundary", "lastchkdim", "lastchknum", "lastleftclass", "lastloopiterator", "lastnamedcs", "lastnodesubtype", "lastpageextra", "lastparcontext", "lastrightclass", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letmathatomrule", "letmathparent", "letmathspacing", "letprotected", "lettonothing", "linebreakcriterium", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localcontrolledloop", "localinterlinepenalty", "localleftbox", "localleftboxbox", "localmiddlebox", "localmiddleboxbox", "localrightbox", "localrightboxbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathaccent", "mathatom", "mathatomglue", "mathatomskip", "mathbackwardpenalties", "mathbeginclass", "mathcheckfencesmode", "mathdictgroup", "mathdictproperties", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathleftclass", "mathlimitsmode", "mathmainstyle", "mathmiddle", "mathnolimitsmode", "mathpenaltiesmode", "mathrad", "mathrightclass", "mathrulesfam", "mathrulesmode", "mathscale", "mathscriptsmode", "mathslackmode", "mathspacingmode", "mathstackstyle", "mathstyle", "mathstylefontid", "mathsurroundmode", "mathsurroundskip", "maththreshold", "meaningasis", "meaningfull", "meaningless", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "overshoot", "pageboundary", "pageextragoal", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "pettymuskip", "postexhyphenchar", "posthyphenchar", "postinlinepenalty", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "preinlinepenalty", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitloop", "quitvmode", "resetmathspacing", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scaledemwidth", "scaledexheight", "scaledextraspace", "scaledfontdimen", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", "srule", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tinymuskip", "todimension", "tohexadecimal", "tointeger", "tokenized", "toksapp", "tokspre", "tolerant", "tomathstyle", "toscaled", "tosparsedimension", "tosparsescaled", "tpack", "tracingadjusts", "tracingalignments", "tracingexpressions", "tracingfonts", "tracingfullboxes", "tracinghyphenation", "tracinginserts", "tracinglevels", "tracinglists", "tracingmarks", "tracingmath", "tracingnodes", "tracingpenalties", "uleaders", "undent", "unexpandedloop", "unhpack", "unletfrozen", "unletprotected", "untraced", "unvpack", "variablefam", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoks", "xtoksapp", "xtokspre" },
["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" },
["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfomitinfodict", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" },
["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "futurelet", "gdef", "global", "globaldefs", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parinitleftskip", "parinitrightskip", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topskip", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "unboundary", "underline", "unhbox", "unhcopy", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
index b45086658..3adb1cd7b 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -223,121 +223,121 @@ setuxvalue globallet udef ugdef uedef \
uxdef checked unique getparameters geteparameters \
getgparameters getxparameters forgetparameters copyparameters getdummyparameters \
dummyparameter directdummyparameter setdummyparameter letdummyparameter setexpandeddummyparameter \
-usedummystyleandcolor usedummystyleparameter usedummycolorparameter processcommalist processcommacommand \
-quitcommalist quitprevcommalist processaction processallactions processfirstactioninset \
-processallactionsinset unexpanded expanded startexpanded stopexpanded \
-protect unprotect firstofoneargument firstoftwoarguments secondoftwoarguments \
-firstofthreearguments secondofthreearguments thirdofthreearguments firstoffourarguments secondoffourarguments \
-thirdoffourarguments fourthoffourarguments firstoffivearguments secondoffivearguments thirdoffivearguments \
-fourthoffivearguments fifthoffivearguments firstofsixarguments secondofsixarguments thirdofsixarguments \
-fourthofsixarguments fifthofsixarguments sixthofsixarguments firstofoneunexpanded firstoftwounexpanded \
-secondoftwounexpanded firstofthreeunexpanded secondofthreeunexpanded thirdofthreeunexpanded gobbleoneargument \
-gobbletwoarguments gobblethreearguments gobblefourarguments gobblefivearguments gobblesixarguments \
-gobblesevenarguments gobbleeightarguments gobbleninearguments gobbletenarguments gobbleoneoptional \
-gobbletwooptionals gobblethreeoptionals gobblefouroptionals gobblefiveoptionals dorecurse \
-doloop exitloop dostepwiserecurse recurselevel recursedepth \
-dofastloopcs fastloopindex fastloopfinal dowith doloopovermatch \
-doloopovermatched doloopoverlist newconstant setnewconstant setconstant \
-setconstantvalue newconditional settrue setfalse settruevalue \
-setfalsevalue setconditional newmacro setnewmacro newfraction \
-newsignal newboundary dosingleempty dodoubleempty dotripleempty \
-doquadrupleempty doquintupleempty dosixtupleempty doseventupleempty dosingleargument \
-dodoubleargument dotripleargument doquadrupleargument doquintupleargument dosixtupleargument \
-doseventupleargument dosinglegroupempty dodoublegroupempty dotriplegroupempty doquadruplegroupempty \
-doquintuplegroupempty permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression maximumpdfcompression \
-normalpdfcompression onlypdfobjectcompression nopdfobjectcompression modulonumber dividenumber \
-getfirstcharacter doifelsefirstchar doiffirstcharelse mathclassvalue startnointerference \
-stopnointerference twodigits threedigits leftorright offinterlineskip \
-oninterlineskip nointerlineskip strut halfstrut quarterstrut \
-depthstrut halflinestrut noheightstrut setstrut strutbox \
-strutht strutdp strutwd struthtdp strutgap \
-begstrut endstrut lineheight leftboundary rightboundary \
-signalcharacter aligncontentleft aligncontentmiddle aligncontentright shiftbox \
-vpackbox hpackbox vpackedbox hpackedbox ordordspacing \
-ordopspacing ordbinspacing ordrelspacing ordopenspacing ordclosespacing \
-ordpunctspacing ordinnerspacing ordfracspacing ordradspacing ordmiddlespacing \
-ordaccentspacing opordspacing opopspacing opbinspacing oprelspacing \
-opopenspacing opclosespacing oppunctspacing opinnerspacing opfracspacing \
-opradspacing opmiddlespacing opaccentspacing binordspacing binopspacing \
-binbinspacing binrelspacing binopenspacing binclosespacing binpunctspacing \
-bininnerspacing binfracspacing binradspacing binmiddlespacing binaccentspacing \
-relordspacing relopspacing relbinspacing relrelspacing relopenspacing \
-relclosespacing relpunctspacing relinnerspacing relfracspacing relradspacing \
-relmiddlespacing relaccentspacing openordspacing openopspacing openbinspacing \
-openrelspacing openopenspacing openclosespacing openpunctspacing openinnerspacing \
-openfracspacing openradspacing openmiddlespacing openaccentspacing closeordspacing \
-closeopspacing closebinspacing closerelspacing closeopenspacing closeclosespacing \
-closepunctspacing closeinnerspacing closefracspacing closeradspacing closemiddlespacing \
-closeaccentspacing punctordspacing punctopspacing punctbinspacing punctrelspacing \
-punctopenspacing punctclosespacing punctpunctspacing punctinnerspacing punctfracspacing \
-punctradspacing punctmiddlespacing punctaccentspacing innerordspacing inneropspacing \
-innerbinspacing innerrelspacing inneropenspacing innerclosespacing innerpunctspacing \
-innerinnerspacing innerfracspacing innerradspacing innermiddlespacing inneraccentspacing \
-fracordspacing fracopspacing fracbinspacing fracrelspacing fracopenspacing \
-fracclosespacing fracpunctspacing fracinnerspacing fracfracspacing fracradspacing \
-fracmiddlespacing fracaccentspacing radordspacing radopspacing radbinspacing \
-radrelspacing radopenspacing radclosespacing radpunctspacing radinnerspacing \
-radfracspacing radradspacing radmiddlespacing radaccentspacing middleordspacing \
-middleopspacing middlebinspacing middlerelspacing middleopenspacing middleclosespacing \
-middlepunctspacing middleinnerspacing middlefracspacing middleradspacing middlemiddlespacing \
-middleaccentspacing accentordspacing accentopspacing accentbinspacing accentrelspacing \
-accentopenspacing accentclosespacing accentpunctspacing accentinnerspacing accentfracspacing \
-accentradspacing accentmiddlespacing accentaccentspacing normalreqno startimath \
-stopimath normalstartimath normalstopimath startdmath stopdmath \
-normalstartdmath normalstopdmath normalsuperscript normalsubscript normalnosuperscript \
-normalnosubscript normalprimescript superscript subscript nosuperscript \
-nosubscript primescript superprescript subprescript nosuperprescript \
-nosubsprecript uncramped cramped mathstyletrigger triggermathstyle \
-triggeredmathstyle mathstylefont mathsmallstylefont mathstyleface mathsmallstyleface \
-mathstylecommand mathpalette mathstylehbox mathstylevbox mathstylevcenter \
-mathstylevcenteredhbox mathstylevcenteredvbox mathtext setmathsmalltextbox setmathtextbox \
-pushmathstyle popmathstyle triggerdisplaystyle triggertextstyle triggerscriptstyle \
-triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle \
-triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle luaexpr \
-expelsedoif expdoif expdoifnot expdoifelsecommon expdoifcommonelse \
-expdoifelseinset expdoifinsetelse ctxdirectlua ctxlatelua ctxsprint \
-ctxwrite ctxcommand ctxdirectcommand ctxlatecommand ctxreport \
-ctxlua luacode lateluacode directluacode registerctxluafile \
-ctxloadluafile luaversion luamajorversion luaminorversion ctxluacode \
-luaconditional luaexpanded ctxluamatch startluaparameterset stopluaparameterset \
-luaparameterset definenamedlua obeylualines obeyluatokens startluacode \
-stopluacode startlua stoplua startctxfunction stopctxfunction \
-ctxfunction startctxfunctiondefinition stopctxfunctiondefinition installctxfunction installprotectedctxfunction \
-installprotectedctxscanner installctxscanner resetctxscanner cldprocessfile cldloadfile \
-cldloadviafile cldcontext cldcommand carryoverpar freezeparagraphproperties \
-defrostparagraphproperties setparagraphfreezing forgetparagraphfreezing updateparagraphproperties updateparagraphpenalties \
-updateparagraphdemerits updateparagraphshapes updateparagraphlines lastlinewidth assumelongusagecs \
-Umathbottomaccent Umathtopaccent Umathbotaccent righttolefthbox lefttorighthbox \
-righttoleftvbox lefttorightvbox righttoleftvtop lefttorightvtop rtlhbox \
-ltrhbox rtlvbox ltrvbox rtlvtop ltrvtop \
-autodirhbox autodirvbox autodirvtop leftorrighthbox leftorrightvbox \
-leftorrightvtop lefttoright righttoleft checkedlefttoright checkedrighttoleft \
-synchronizelayoutdirection synchronizedisplaydirection synchronizeinlinedirection dirlre dirrle \
-dirlro dirrlo rtltext ltrtext lesshyphens \
-morehyphens nohyphens dohyphens dohyphencollapsing nohyphencollapsing \
-compounddiscretionary Ucheckedstartdisplaymath Ucheckedstopdisplaymath break nobreak \
-allowbreak goodbreak nospace nospacing dospacing \
-naturalhbox naturalvbox naturalvtop naturalhpack naturalvpack \
-naturaltpack reversehbox reversevbox reversevtop reversehpack \
-reversevpack reversetpack hcontainer vcontainer tcontainer \
-frule compoundhyphenpenalty start stop unsupportedcs \
-openout closeout write openin closein \
-read readline readfromterminal boxlines boxline \
-setboxline copyboxline boxlinewd boxlineht boxlinedp \
-boxlinenw boxlinenh boxlinend boxlinels boxliners \
-boxlinelh boxlinerh boxlinelp boxlinerp boxlinein \
-boxrangewd boxrangeht boxrangedp bitwiseset bitwiseand \
-bitwiseor bitwisexor bitwisenot bitwisenil ifbitwiseand \
-bitwise bitwiseshift bitwiseflip textdir linedir \
-pardir boxdir prelistbox postlistbox prelistcopy \
-postlistcopy setprelistbox setpostlistbox noligaturing nokerning \
-noexpansion noprotrusion noleftkerning noleftligaturing norightkerning \
-norightligaturing noitaliccorrection futureletnexttoken defbackslashbreak letbackslashbreak \
-pushoverloadmode popoverloadmode pushrunstate poprunstate suggestedalias \
-showboxhere discoptioncodestring flagcodestring frozenparcodestring glyphoptioncodestring \
-groupcodestring hyphenationcodestring mathcontrolcodestring mathflattencodestring normalizecodestring \
-parcontextcodestring newlocalcount newlocaldimen newlocalskip newlocalmuskip \
-newlocaltoks newlocalbox newlocalwrite newlocalread setnewlocalcount \
-setnewlocaldimen setnewlocalskip setnewlocalmuskip setnewlocaltoks setnewlocalbox \
-ifexpression
+resetdummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter processcommalist \
+processcommacommand quitcommalist quitprevcommalist processaction processallactions \
+processfirstactioninset processallactionsinset unexpanded expanded startexpanded \
+stopexpanded protect unprotect firstofoneargument firstoftwoarguments \
+secondoftwoarguments firstofthreearguments secondofthreearguments thirdofthreearguments firstoffourarguments \
+secondoffourarguments thirdoffourarguments fourthoffourarguments firstoffivearguments secondoffivearguments \
+thirdoffivearguments fourthoffivearguments fifthoffivearguments firstofsixarguments secondofsixarguments \
+thirdofsixarguments fourthofsixarguments fifthofsixarguments sixthofsixarguments firstofoneunexpanded \
+firstoftwounexpanded secondoftwounexpanded firstofthreeunexpanded secondofthreeunexpanded thirdofthreeunexpanded \
+gobbleoneargument gobbletwoarguments gobblethreearguments gobblefourarguments gobblefivearguments \
+gobblesixarguments gobblesevenarguments gobbleeightarguments gobbleninearguments gobbletenarguments \
+gobbleoneoptional gobbletwooptionals gobblethreeoptionals gobblefouroptionals gobblefiveoptionals \
+dorecurse doloop exitloop dostepwiserecurse recurselevel \
+recursedepth dofastloopcs fastloopindex fastloopfinal dowith \
+doloopovermatch doloopovermatched doloopoverlist newconstant setnewconstant \
+setconstant setconstantvalue newconditional settrue setfalse \
+settruevalue setfalsevalue setconditional newmacro setnewmacro \
+newfraction newsignal newboundary dosingleempty dodoubleempty \
+dotripleempty doquadrupleempty doquintupleempty dosixtupleempty doseventupleempty \
+dosingleargument dodoubleargument dotripleargument doquadrupleargument doquintupleargument \
+dosixtupleargument doseventupleargument dosinglegroupempty dodoublegroupempty dotriplegroupempty \
+doquadruplegroupempty doquintuplegroupempty permitspacesbetweengroups dontpermitspacesbetweengroups nopdfcompression \
+maximumpdfcompression normalpdfcompression onlypdfobjectcompression nopdfobjectcompression modulonumber \
+dividenumber getfirstcharacter doifelsefirstchar doiffirstcharelse mathclassvalue \
+startnointerference stopnointerference twodigits threedigits leftorright \
+offinterlineskip oninterlineskip nointerlineskip strut halfstrut \
+quarterstrut depthstrut halflinestrut noheightstrut setstrut \
+strutbox strutht strutdp strutwd struthtdp \
+strutgap begstrut endstrut lineheight leftboundary \
+rightboundary signalcharacter aligncontentleft aligncontentmiddle aligncontentright \
+shiftbox vpackbox hpackbox vpackedbox hpackedbox \
+ordordspacing ordopspacing ordbinspacing ordrelspacing ordopenspacing \
+ordclosespacing ordpunctspacing ordinnerspacing ordfracspacing ordradspacing \
+ordmiddlespacing ordaccentspacing opordspacing opopspacing opbinspacing \
+oprelspacing opopenspacing opclosespacing oppunctspacing opinnerspacing \
+opfracspacing opradspacing opmiddlespacing opaccentspacing binordspacing \
+binopspacing binbinspacing binrelspacing binopenspacing binclosespacing \
+binpunctspacing bininnerspacing binfracspacing binradspacing binmiddlespacing \
+binaccentspacing relordspacing relopspacing relbinspacing relrelspacing \
+relopenspacing relclosespacing relpunctspacing relinnerspacing relfracspacing \
+relradspacing relmiddlespacing relaccentspacing openordspacing openopspacing \
+openbinspacing openrelspacing openopenspacing openclosespacing openpunctspacing \
+openinnerspacing openfracspacing openradspacing openmiddlespacing openaccentspacing \
+closeordspacing closeopspacing closebinspacing closerelspacing closeopenspacing \
+closeclosespacing closepunctspacing closeinnerspacing closefracspacing closeradspacing \
+closemiddlespacing closeaccentspacing punctordspacing punctopspacing punctbinspacing \
+punctrelspacing punctopenspacing punctclosespacing punctpunctspacing punctinnerspacing \
+punctfracspacing punctradspacing punctmiddlespacing punctaccentspacing innerordspacing \
+inneropspacing innerbinspacing innerrelspacing inneropenspacing innerclosespacing \
+innerpunctspacing innerinnerspacing innerfracspacing innerradspacing innermiddlespacing \
+inneraccentspacing fracordspacing fracopspacing fracbinspacing fracrelspacing \
+fracopenspacing fracclosespacing fracpunctspacing fracinnerspacing fracfracspacing \
+fracradspacing fracmiddlespacing fracaccentspacing radordspacing radopspacing \
+radbinspacing radrelspacing radopenspacing radclosespacing radpunctspacing \
+radinnerspacing radfracspacing radradspacing radmiddlespacing radaccentspacing \
+middleordspacing middleopspacing middlebinspacing middlerelspacing middleopenspacing \
+middleclosespacing middlepunctspacing middleinnerspacing middlefracspacing middleradspacing \
+middlemiddlespacing middleaccentspacing accentordspacing accentopspacing accentbinspacing \
+accentrelspacing accentopenspacing accentclosespacing accentpunctspacing accentinnerspacing \
+accentfracspacing accentradspacing accentmiddlespacing accentaccentspacing normalreqno \
+startimath stopimath normalstartimath normalstopimath startdmath \
+stopdmath normalstartdmath normalstopdmath normalsuperscript normalsubscript \
+normalnosuperscript normalnosubscript normalprimescript superscript subscript \
+nosuperscript nosubscript primescript superprescript subprescript \
+nosuperprescript nosubsprecript uncramped cramped mathstyletrigger \
+triggermathstyle triggeredmathstyle mathstylefont mathsmallstylefont mathstyleface \
+mathsmallstyleface mathstylecommand mathpalette mathstylehbox mathstylevbox \
+mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox mathtext setmathsmalltextbox \
+setmathtextbox pushmathstyle popmathstyle triggerdisplaystyle triggertextstyle \
+triggerscriptstyle triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle \
+triggeruncrampedsmallstyle triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle \
+luaexpr expelsedoif expdoif expdoifnot expdoifelsecommon \
+expdoifcommonelse expdoifelseinset expdoifinsetelse ctxdirectlua ctxlatelua \
+ctxsprint ctxwrite ctxcommand ctxdirectcommand ctxlatecommand \
+ctxreport ctxlua luacode lateluacode directluacode \
+registerctxluafile ctxloadluafile luaversion luamajorversion luaminorversion \
+ctxluacode luaconditional luaexpanded ctxluamatch startluaparameterset \
+stopluaparameterset luaparameterset definenamedlua obeylualines obeyluatokens \
+startluacode stopluacode startlua stoplua startctxfunction \
+stopctxfunction ctxfunction startctxfunctiondefinition stopctxfunctiondefinition installctxfunction \
+installprotectedctxfunction installprotectedctxscanner installctxscanner resetctxscanner cldprocessfile \
+cldloadfile cldloadviafile cldcontext cldcommand carryoverpar \
+freezeparagraphproperties defrostparagraphproperties setparagraphfreezing forgetparagraphfreezing updateparagraphproperties \
+updateparagraphpenalties updateparagraphdemerits updateparagraphshapes updateparagraphlines lastlinewidth \
+assumelongusagecs Umathbottomaccent Umathtopaccent Umathbotaccent righttolefthbox \
+lefttorighthbox righttoleftvbox lefttorightvbox righttoleftvtop lefttorightvtop \
+rtlhbox ltrhbox rtlvbox ltrvbox rtlvtop \
+ltrvtop autodirhbox autodirvbox autodirvtop leftorrighthbox \
+leftorrightvbox leftorrightvtop lefttoright righttoleft checkedlefttoright \
+checkedrighttoleft synchronizelayoutdirection synchronizedisplaydirection synchronizeinlinedirection dirlre \
+dirrle dirlro dirrlo rtltext ltrtext \
+lesshyphens morehyphens nohyphens dohyphens dohyphencollapsing \
+nohyphencollapsing compounddiscretionary Ucheckedstartdisplaymath Ucheckedstopdisplaymath break \
+nobreak allowbreak goodbreak nospace nospacing \
+dospacing naturalhbox naturalvbox naturalvtop naturalhpack \
+naturalvpack naturaltpack reversehbox reversevbox reversevtop \
+reversehpack reversevpack reversetpack hcontainer vcontainer \
+tcontainer frule compoundhyphenpenalty start stop \
+unsupportedcs openout closeout write openin \
+closein read readline readfromterminal boxlines \
+boxline setboxline copyboxline boxlinewd boxlineht \
+boxlinedp boxlinenw boxlinenh boxlinend boxlinels \
+boxliners boxlinelh boxlinerh boxlinelp boxlinerp \
+boxlinein boxrangewd boxrangeht boxrangedp bitwiseset \
+bitwiseand bitwiseor bitwisexor bitwisenot bitwisenil \
+ifbitwiseand bitwise bitwiseshift bitwiseflip textdir \
+linedir pardir boxdir prelistbox postlistbox \
+prelistcopy postlistcopy setprelistbox setpostlistbox noligaturing \
+nokerning noexpansion noprotrusion noleftkerning noleftligaturing \
+norightkerning norightligaturing noitaliccorrection futureletnexttoken defbackslashbreak \
+letbackslashbreak pushoverloadmode popoverloadmode pushrunstate poprunstate \
+suggestedalias showboxhere discoptioncodestring flagcodestring frozenparcodestring \
+glyphoptioncodestring groupcodestring hyphenationcodestring mathcontrolcodestring mathflattencodestring \
+normalizecodestring parcontextcodestring newlocalcount newlocaldimen newlocalskip \
+newlocalmuskip newlocaltoks newlocalbox newlocalwrite newlocalread \
+setnewlocalcount setnewlocaldimen setnewlocalskip setnewlocalmuskip setnewlocaltoks \
+setnewlocalbox ifexpression
diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties
index f7b6a3991..8d720a08e 100644
--- a/context/data/scite/context/scite-context-data-tex.properties
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -63,79 +63,80 @@ beginmathgroup beginsimplegroup boundary boxadapt boxanchor \
boxanchors boxattribute boxdirection boxfreeze boxgeometry \
boxorientation boxrepack boxshift boxsource boxtarget \
boxtotal boxxmove boxxoffset boxymove boxyoffset \
-catcodetable cfcode clearmarks copymathatomrule copymathparent \
-copymathspacing crampeddisplaystyle crampedscriptscriptstyle crampedscriptstyle crampedtextstyle \
-csactive csstring currentloopiterator currentloopnesting currentmarks \
-defcsname detokenized dimensiondef dimexpression directlua \
-edefcsname efcode endlocalcontrol endmathgroup endsimplegroup \
-enforced etoks etoksapp etokspre everybeforepar \
-everymathatom everytab exceptionpenalty expand expandactive \
-expandafterpars expandafterspaces expandcstoken expanded expandedafter \
-expandedloop expandtoken explicitdiscretionary explicithyphenpenalty firstvalidlanguage \
-flushmarks fontcharta fontid fontmathcontrol fontspecdef \
-fontspecid fontspecifiedname fontspecifiedsize fontspecscale fontspecxscale \
-fontspecyscale fonttextcontrol formatname frozen futurecsname \
-futuredef futureexpand futureexpandis futureexpandisap gdefcsname \
-gleaders glet gletcsname glettonothing gluespecdef \
-glyph glyphdatafield glyphoptions glyphscale glyphscriptfield \
-glyphscriptscale glyphscriptscriptscale glyphstatefield glyphtextscale glyphxoffset \
-glyphxscale glyphxscaled glyphyoffset glyphyscale glyphyscaled \
-gtoksapp gtokspre hccode hjcode hmcode \
-holdingmigrations hpack hyphenationmin hyphenationmode ifabsdim \
-ifabsnum ifarguments ifboolean ifchkdim ifchknum \
-ifcmpdim ifcmpnum ifcondition ifcstok ifdimexpression \
-ifdimval ifempty ifflags ifhaschar ifhastok \
-ifhastoks ifhasxtoks ifincsname ifinsert ifmathparameter \
-ifmathstyle ifnumexpression ifnumval ifparameter ifparameters \
-ifrelax iftok ifzerodim ifzeronum ignorearguments \
-ignorepars immediate immutable indexofcharacter indexofregister \
-inherited initcatcodetable insertbox insertcopy insertdepth \
-insertdistance insertheight insertheights insertlimit insertmaxdepth \
-insertmode insertmultiplier insertpenalty insertprogress insertstorage \
-insertstoring insertunbox insertuncopy insertwidth instance \
-integerdef lastarguments lastatomclass lastboundary lastchkdim \
-lastchknum lastleftclass lastloopiterator lastnamedcs lastnodesubtype \
-lastpageextra lastparcontext lastrightclass leftmarginkern letcharcode \
-letcsname letfrozen letmathatomrule letmathparent letmathspacing \
-letprotected lettonothing linebreakcriterium linedirection localbrokenpenalty \
-localcontrol localcontrolled localcontrolledloop localinterlinepenalty localleftbox \
-localleftboxbox localmiddlebox localmiddleboxbox localrightbox localrightboxbox \
-lpcode luabytecode luabytecodecall luacopyinputnodes luadef \
-luaescapestring luafunction luafunctioncall luatexbanner luatexrevision \
-luatexversion mathaccent mathatom mathatomglue mathatomskip \
-mathbackwardpenalties mathbeginclass mathcheckfencesmode mathdictgroup mathdictproperties \
-mathdirection mathdisplaymode mathdisplayskipmode mathdoublescriptmode mathendclass \
-matheqnogapstep mathfenced mathfontcontrol mathforwardpenalties mathfrac \
-mathghost mathgluemode mathgroupingmode mathleftclass mathlimitsmode \
-mathmainstyle mathmiddle mathnolimitsmode mathpenaltiesmode mathrad \
-mathrightclass mathrulesfam mathrulesmode mathscale mathscriptsmode \
-mathslackmode mathspacingmode mathstackstyle mathstyle mathstylefontid \
-mathsurroundmode mathsurroundskip maththreshold meaningasis meaningfull \
-meaningless mugluespecdef mutable noaligned noatomruling \
-noboundary nohrule norelax normalizelinemode normalizeparmode \
-nospaces novrule numericscale numexpression orelse \
-orphanpenalties orphanpenalty orunless outputbox overloaded \
-overloadmode overshoot pageboundary pageextragoal pagevsize \
-parametercount parametermark parattribute pardirection permanent \
-pettymuskip postexhyphenchar posthyphenchar postinlinepenalty prebinoppenalty \
-predisplaygapfactor preexhyphenchar prehyphenchar preinlinepenalty prerelpenalty \
-protrudechars protrusionboundary pxdimen quitloop quitvmode \
-resetmathspacing retokenized rightmarginkern rpcode savecatcodetable \
-scaledemwidth scaledexheight scaledextraspace scaledfontdimen scaledinterwordshrink \
-scaledinterwordspace scaledinterwordstretch scaledmathstyle scaledslantperpoint scantextokens \
-semiexpand semiexpanded semiprotected setdefaultmathcodes setfontid \
-setmathatomrule setmathdisplaypostpenalty setmathdisplayprepenalty setmathignore setmathoptions \
-setmathpostpenalty setmathprepenalty setmathspacing shapingpenaltiesmode shapingpenalty \
-snapshotpar srule supmarkmode swapcsvalues tabsize \
-textdirection thewithoutunit tinymuskip todimension tohexadecimal \
-tointeger tokenized toksapp tokspre tolerant \
-tomathstyle toscaled tosparsedimension tosparsescaled tpack \
-tracingadjusts tracingalignments tracingexpressions tracingfonts tracingfullboxes \
-tracinghyphenation tracinginserts tracinglevels tracingmarks tracingmath \
-tracingnodes tracingpenalties uleaders undent unexpandedloop \
-unhpack unletfrozen unletprotected untraced unvpack \
-variablefam vpack wordboundary wrapuppar xdefcsname \
-xtoks xtoksapp xtokspre
+catcodetable cdef cdefcsname cfcode clearmarks \
+constant copymathatomrule copymathparent copymathspacing crampeddisplaystyle \
+crampedscriptscriptstyle crampedscriptstyle crampedtextstyle csactive csstring \
+currentloopiterator currentloopnesting currentmarks defcsname detokenized \
+dimensiondef dimexpression directlua edefcsname efcode \
+endlocalcontrol endmathgroup endsimplegroup enforced etoks \
+etoksapp etokspre everybeforepar everymathatom everytab \
+exceptionpenalty expand expandactive expandafterpars expandafterspaces \
+expandcstoken expanded expandedafter expandedloop expandtoken \
+explicitdiscretionary explicithyphenpenalty firstvalidlanguage flushmarks fontcharta \
+fontid fontmathcontrol fontspecdef fontspecid fontspecifiedname \
+fontspecifiedsize fontspecscale fontspecxscale fontspecyscale fonttextcontrol \
+formatname frozen futurecsname futuredef futureexpand \
+futureexpandis futureexpandisap gdefcsname gleaders glet \
+gletcsname glettonothing gluespecdef glyph glyphdatafield \
+glyphoptions glyphscale glyphscriptfield glyphscriptscale glyphscriptscriptscale \
+glyphstatefield glyphtextscale glyphxoffset glyphxscale glyphxscaled \
+glyphyoffset glyphyscale glyphyscaled gtoksapp gtokspre \
+hccode hjcode hmcode holdingmigrations hpack \
+hyphenationmin hyphenationmode ifabsdim ifabsnum ifarguments \
+ifboolean ifchkdim ifchknum ifcmpdim ifcmpnum \
+ifcondition ifcstok ifdimexpression ifdimval ifempty \
+ifflags ifhaschar ifhastok ifhastoks ifhasxtoks \
+ifincsname ifinsert ifmathparameter ifmathstyle ifnumexpression \
+ifnumval ifparameter ifparameters ifrelax iftok \
+ifzerodim ifzeronum ignorearguments ignorepars immediate \
+immutable indexofcharacter indexofregister inherited initcatcodetable \
+insertbox insertcopy insertdepth insertdistance insertheight \
+insertheights insertlimit insertmaxdepth insertmode insertmultiplier \
+insertpenalty insertprogress insertstorage insertstoring insertunbox \
+insertuncopy insertwidth instance integerdef lastarguments \
+lastatomclass lastboundary lastchkdim lastchknum lastleftclass \
+lastloopiterator lastnamedcs lastnodesubtype lastpageextra lastparcontext \
+lastrightclass leftmarginkern letcharcode letcsname letfrozen \
+letmathatomrule letmathparent letmathspacing letprotected lettonothing \
+linebreakcriterium linedirection localbrokenpenalty localcontrol localcontrolled \
+localcontrolledloop localinterlinepenalty localleftbox localleftboxbox localmiddlebox \
+localmiddleboxbox localrightbox localrightboxbox lpcode luabytecode \
+luabytecodecall luacopyinputnodes luadef luaescapestring luafunction \
+luafunctioncall luatexbanner luatexrevision luatexversion mathaccent \
+mathatom mathatomglue mathatomskip mathbackwardpenalties mathbeginclass \
+mathcheckfencesmode mathdictgroup mathdictproperties mathdirection mathdisplaymode \
+mathdisplayskipmode mathdoublescriptmode mathendclass matheqnogapstep mathfenced \
+mathfontcontrol mathforwardpenalties mathfrac mathghost mathgluemode \
+mathgroupingmode mathleftclass mathlimitsmode mathmainstyle mathmiddle \
+mathnolimitsmode mathpenaltiesmode mathrad mathrightclass mathrulesfam \
+mathrulesmode mathscale mathscriptsmode mathslackmode mathspacingmode \
+mathstackstyle mathstyle mathstylefontid mathsurroundmode mathsurroundskip \
+maththreshold meaningasis meaningfull meaningless mugluespecdef \
+mutable noaligned noatomruling noboundary nohrule \
+norelax normalizelinemode normalizeparmode nospaces novrule \
+numericscale numexpression orelse orphanpenalties orphanpenalty \
+orunless outputbox overloaded overloadmode overshoot \
+pageboundary pageextragoal pagevsize parametercount parametermark \
+parattribute pardirection permanent pettymuskip postexhyphenchar \
+posthyphenchar postinlinepenalty prebinoppenalty predisplaygapfactor preexhyphenchar \
+prehyphenchar preinlinepenalty prerelpenalty protrudechars protrusionboundary \
+pxdimen quitloop quitvmode resetmathspacing retokenized \
+rightmarginkern rpcode savecatcodetable scaledemwidth scaledexheight \
+scaledextraspace scaledfontdimen scaledinterwordshrink scaledinterwordspace scaledinterwordstretch \
+scaledmathstyle scaledslantperpoint scantextokens semiexpand semiexpanded \
+semiprotected setdefaultmathcodes setfontid setmathatomrule setmathdisplaypostpenalty \
+setmathdisplayprepenalty setmathignore setmathoptions setmathpostpenalty setmathprepenalty \
+setmathspacing shapingpenaltiesmode shapingpenalty snapshotpar srule \
+supmarkmode swapcsvalues tabsize textdirection thewithoutunit \
+tinymuskip todimension tohexadecimal tointeger tokenized \
+toksapp tokspre tolerant tomathstyle toscaled \
+tosparsedimension tosparsescaled tpack tracingadjusts tracingalignments \
+tracingexpressions tracingfonts tracingfullboxes tracinghyphenation tracinginserts \
+tracinglevels tracinglists tracingmarks tracingmath tracingnodes \
+tracingpenalties uleaders undent unexpandedloop unhpack \
+unletfrozen unletprotected untraced unvpack variablefam \
+vpack wordboundary wrapuppar xdefcsname xtoks \
+xtoksapp xtokspre
keywordclass.tex.omega=\
Omegaminorversion Omegarevision Omegaversion
diff --git a/doc/context/documents/general/manuals/lowlevel-macros.pdf b/doc/context/documents/general/manuals/lowlevel-macros.pdf
index 5f89d204f..5b3bcae14 100644
--- a/doc/context/documents/general/manuals/lowlevel-macros.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-macros.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
index 200cd8650..00a438781 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
@@ -905,6 +905,81 @@ the values 1 and 3 give warnings and the values 2 and 4 trigger an error.
\stopsectionlevel
+\startsectionlevel[title=Arguments]
+
+The number of arguments that a macro takes is traditionally limited to nine (or
+ten if one takes the trailing \type {#} into account). That this is enough for
+most cases is demonstrated by the fact that \CONTEXT\ has only a handful of
+macros that use \type {#9}. The reason for this limitation is in part a side
+effect of the way the macro preamble and arguments are parsed. However, because
+in \LUAMETATEX\ we use a different implementation, it was not that hard to permit
+a few more arguments, which is why we support upto 15 arguments, as in:
+
+\starttyping[option=TEX]
+\def\foo#1#2#3#4#5#6#7#8#9#A#B#C#D#E#F{...}
+\stoptyping
+
+We can support the whole alphabet without much trouble but somehow sticking to
+the hexadecimal numbers makes sense. It is unlikely that the core of \CONTEXT\
+will use this option but sometimes at the user level it can be handy. The penalty
+in terms of performance can be neglected.
+
+\stopsectionlevel
+
+\startsectionlevel[title=Constants]
+
+The \LUAMETATEX\ engine has lots of efficiency tricks in the macro parsing and
+expansion code that makes it not only fast but also let is use less memory.
+However, every time that the body of a macro is to be injected the expansion
+machinery kicks in. This often means that a copy is made (pushed in the input and
+used afterwards). There are however cases where the body is just a list of
+character tokens (with category letter or other) and no expansion run over the
+list is needed.
+
+It is tempting to introduce a string data type that just stores strings and
+although that might happen at some point it has the disadvantage that one need to
+tokenize that string in order to be able to use it, which then defeats the gain.
+An alternative has been found in constant macros, that is: a macro without
+parameters and a body that is considered to be expanded and never freed by
+redefinition. There are two variants:
+
+\starttyping[option=TEX]
+\cdef \foo {whatever}
+\cdefcsname foo\endcsname{whatever}
+\stoptyping
+
+These are actually just equivalents to
+
+\starttyping[option=TEX]
+\edef \foo {whatever}
+\edefcsname foo\endcsname{whatever}
+\stoptyping
+
+just to make sure that the body gets expanded at definition time but they are
+also marked as being constant which in some cases might give some gain, for
+instance when used in csname construction. The gain is less then one expects
+although there are a few cases in \CONTEXT\ where extreme usage of parameters
+benefits from it. Users are unlikely to use these two primitives.
+
+Another example of a constant usage is this:
+
+\starttyping[option=TEX]
+\lettonothing\foo
+\stoptyping
+
+which gives \type {\foo} an empty body. That one is used in the core, if only because
+it gives a bit smaller code. Performance is no that different from
+
+\starttyping[option=TEX]
+\let\foo\empty
+\stoptyping
+
+but it saves one token (8 bytes) when used in a macro. The assignment itself is
+not that different because \type {\foo} is made an alias to \type {\empty} which
+in turn only needs incrementing a reference counter.
+
+\stopsectionlevel
+
\stopdocument
% freezing pitfalls:
diff --git a/metapost/context/base/mpxl/mp-apos.mpxl b/metapost/context/base/mpxl/mp-apos.mpxl
index 05282e835..a64229715 100644
--- a/metapost/context/base/mpxl/mp-apos.mpxl
+++ b/metapost/context/base/mpxl/mp-apos.mpxl
@@ -217,12 +217,16 @@ permanent
def anch_box_arrows_draw =
begingroup ;
- save f, t, p, alternative, delta, dashtype, edge, arrow, ff, tt ;
- pair f, t, ff, tt ; path p ; string alternative, arrow ;
+ save f, t, p, alternative, delta, dashtype, edge, arrow, ff, tt, spanpages, spanfirst, spanlast, skip ;
+ pair f, t, ff, tt ; path p ; string alternative, arrow ; boolean spanpages, spanfirst, spanlast, skip ;
dashtype := mpvarn("dashtype") ;
delta := mpvard("distance");
alternative := mpvars("alternative") ;
arrow := mpvars("arrow") ;
+ spanpages := false ;
+ spanfirst := true ;
+ spanlast := true ;
+ skip := false ;
if positionx(mpvars("rightedge")) > 0 :
if alternative = "left" :
edge := positionx(mpvars("leftedge"));
@@ -243,37 +247,40 @@ def anch_box_arrows_draw =
else :
f := positionxy(mpvars("from")) ;
t := positionxy(mpvars("to")) ;
+ spanpages := getpospage(mpvars("to")) > getpospage(mpvars("from")) ;
+ if spanpages :
+ if getpospage(mpvars("from")) = RealPageNumber :
+ t := (getposwidth(getposregion(mpvars("from"))),ypart f) ;
+ spanlast := false ;
+ elseif getpospage(mpvars("to")) = RealPageNumber :
+ f := (getposx(getposregion(mpvars("to"))),ypart t) ;
+ spanfirst := false ;
+ fi ;
+ fi
% drawdot f withpen pencircle scaled 2pt;
% drawdot t withpen pencircle scaled 2pt;
-% if alternative = "bottom" :
-% f := f yshifted (- abs(ypart f - ypart t)) ;
-% elseif alternative = "top" :
-% f := f yshifted (abs(ypart f - ypart t)) ;
-% elseif alternative = "left" :
-% f := f xshifted (- abs(xpart f - xpart t)) ;
-% elseif alternative = "right" :
-% f := f xshifted (abs(xpart f - xpart t)) ;
-% fi ;
%
- %
- if alternative = "bottom" :
-ff := (xpart f, min(ypart f, ypart t));
-tt := (xpart t, ypart ff);
- p := (f -- (ff yshifted -delta) -- (tt yshifted -delta) -- t) ;
+ skip := (not spanpages) and ((mpvars("span")) = "yes") ;
+ if skip :
+ % we skip the second just in case
+ elseif alternative = "bottom" :
+ ff := (xpart f, min(ypart f, ypart t)) ;
+ tt := (xpart t, ypart ff) ;
+ p := (if spanfirst: f -- fi (ff yshifted -delta) -- (tt yshifted -delta) if spanlast : -- t fi) ;
draw thetextext.bot(mpvars("text"), (point .5 along p) yshifted -.25ExHeight) ;
elseif alternative = "top" :
-ff := (xpart f, max(ypart f, ypart t));
-tt := (xpart t, ypart ff);
- p := (f -- (ff yshifted delta) -- (tt yshifted delta) -- t) ;
+ ff := (xpart f, max(ypart f, ypart t)) ;
+ tt := (xpart t, ypart ff) ;
+ p := (if spanfirst: f -- fi (ff yshifted delta) -- (tt yshifted delta) if spanlast : -- t fi) ;
draw thetextext.top(mpvars("text"), (point .5 along p) yshifted .25ExHeight) ;
elseif alternative = "left" :
-ff := (min(xpart f, xpart t), ypart f);
-tt := (xpart ff, ypart t);
+ ff := (min(xpart f, xpart t), ypart f) ;
+ tt := (xpart ff, ypart t) ;
p := (f -- (ff xshifted - delta) -- (tt xshifted - delta) -- t) ;
draw thetextext.lft(mpvars("text"), (point .5 along p) xshifted -ExHeight) ;
elseif alternative = "right" :
-ff := (max(xpart f, xpart t), ypart f);
-tt := (xpart ff, ypart t);
+ ff := (max(xpart f, xpart t), ypart f) ;
+ tt := (xpart ff, ypart t) ;
p := (f -- (ff xshifted delta) -- (tt xshifted delta) -- t) ;
draw thetextext.rt(mpvars("text"), (point .5 along p) xshifted ExHeight) ;
elseif alternative = "middle" :
@@ -281,22 +288,24 @@ tt := (xpart ff, ypart t);
draw thetextext.rt(mpvars("text"), (point .5 along p) xshifted ExHeight) ;
fi ;
fi ;
- % 1 = dashed, 2 = dashed with background
- if arrow ="no" :
- draw
- elseif arrow == "reverse" :
- drawarrow reverse
- elseif arrow == "both" :
- drawdblarrow
- else :
- drawarrow
- fi
- p
- if dashtype == 1 :
- withdashes .5ExHeight
+ if not skip :
+ % 1 = dashed, 2 = dashed with background
+ if arrow ="no" :
+ draw
+ elseif arrow == "reverse" :
+ drawarrow reverse
+ elseif arrow == "both" :
+ drawdblarrow
+ else :
+ drawarrow
fi
- withpen pencircle scaled mpvard("rulethickness")
- withcolor mpvars("linecolor") ;
- positioninregion ;
+ p
+ if dashtype == 1 :
+ withdashes .5ExHeight
+ fi
+ withpen pencircle scaled mpvard("rulethickness")
+ withcolor mpvars("linecolor") ;
+ positioninregion ;
+ fi ;
endgroup ;
enddef ;
diff --git a/metapost/context/base/mpxl/mp-cont.mpxl b/metapost/context/base/mpxl/mp-cont.mpxl
index a4f1b18ba..1213a1e61 100644
--- a/metapost/context/base/mpxl/mp-cont.mpxl
+++ b/metapost/context/base/mpxl/mp-cont.mpxl
@@ -137,9 +137,9 @@ newscriptindex mfid_PaperBleed ; mfid_PaperBleed := scriptindex "PaperBleed"
immutable % permanent
PageFraction, SpineWidth, PaperBleed ;
-% mfid_CurrentLayout ; mfid_CurrentLayout := scriptindex "CurrentLayout" ; vardef CurrentLayout = runscript mfid_CurrentLayout enddef ;
-% mfid_OverlayLineColor ; mfid_OverlayLineColor := scriptindex "OverlayLineColor ; vardef OverlayLineColor = runscript mfid_OverlayLineColor enddef ;
-% mfid_OverlayColor ; mfid_OverlayColor := scriptindex "OverlayColor ; vardef OverlayColor = runscript mfid_OverlayColor enddef ;
+newscriptindex mfid_CurrentLayout ; mfid_CurrentLayout := scriptindex "CurrentLayout" ; vardef CurrentLayout = runscript mfid_CurrentLayout enddef ;
+newscriptindex mfid_OverlayLineColor ; mfid_OverlayLineColor := scriptindex "OverlayLineColor" ; vardef OverlayLineColor = runscript mfid_OverlayLineColor enddef ;
+newscriptindex mfid_OverlayColor ; mfid_OverlayColor := scriptindex "OverlayColor" ; vardef OverlayColor = runscript mfid_OverlayColor enddef ;
newscriptindex mfid_OverlayWidth ; mfid_OverlayWidth := scriptindex "OverlayWidth" ; vardef OverlayWidth = runscript mfid_OverlayWidth enddef ;
newscriptindex mfid_OverlayHeight ; mfid_OverlayHeight := scriptindex "OverlayHeight" ; vardef OverlayHeight = runscript mfid_OverlayHeight enddef ;
newscriptindex mfid_OverlayDepth ; mfid_OverlayDepth := scriptindex "OverlayDepth" ; vardef OverlayDepth = runscript mfid_OverlayDepth enddef ;
@@ -148,7 +148,7 @@ newscriptindex mfid_OverlayOffset ; mfid_OverlayOffset := scriptindex "Ove
newscriptindex mfid_OverlayRegion ; mfid_OverlayRegion := scriptindex "OverlayRegion" ; vardef OverlayRegion = runscript mfid_OverlayRegion enddef ;
immutable % permanent
- % CurrentLayout, OverlayLineColor, OverlayColor,
+ CurrentLayout, OverlayLineColor, OverlayColor,
OverlayWidth, OverlayHeight, OverlayDepth, OverlayLineWidth, OverlayOffset, OverlayRegion ;
newscriptindex mfid_defaultcolormodel ; mfid_defaultcolormodel := scriptindex "defaultcolormodel" ; vardef defaultcolormodel = runscript mfid_defaultcolormodel enddef ;
diff --git a/source/luametatex/source/lua/lmtinterface.h b/source/luametatex/source/lua/lmtinterface.h
index 67c3f56d5..c60a78266 100644
--- a/source/luametatex/source/lua/lmtinterface.h
+++ b/source/luametatex/source/lua/lmtinterface.h
@@ -562,6 +562,7 @@ make_lua_key(L, condition);\
make_lua_key(L, conditional);\
make_lua_key(L, conditionalmathskip);\
make_lua_key(L, connectoroverlapmin);\
+make_lua_key(L, constant);\
make_lua_key(L, container);\
make_lua_key(L, contributehead);\
make_lua_key(L, convert);\
@@ -1127,6 +1128,7 @@ make_lua_key(L, properties);\
make_lua_key(L, proportional);\
make_lua_key(L, protected);\
make_lua_key(L, protected_call);\
+make_lua_key(L, semi_protected_call);\
make_lua_key(L, protrudechars);\
make_lua_key(L, protrusion);\
make_lua_key(L, ptr);\
@@ -1387,6 +1389,7 @@ make_lua_key(L, tolerance);\
make_lua_key(L, tolerant);\
make_lua_key(L, tolerant_call);\
make_lua_key(L, tolerant_protected_call);\
+make_lua_key(L, tolerant_semi_protected_call);\
make_lua_key(L, top);\
make_lua_key(L, topaccent);\
make_lua_key(L, topaccentvariant);\
diff --git a/source/luametatex/source/lua/lmtstatuslib.c b/source/luametatex/source/lua/lmtstatuslib.c
index cf665ede2..841ddeec0 100644
--- a/source/luametatex/source/lua/lmtstatuslib.c
+++ b/source/luametatex/source/lua/lmtstatuslib.c
@@ -254,8 +254,8 @@ static int statslib_getconstants(lua_State *L)
lua_set_integer_by_key(L, "no_catcode_table", no_catcode_table_preset);
lua_set_integer_by_key(L, "default_catcode_table", default_catcode_table_preset);
- lua_set_cardinal_by_key(L, "max_cardinal", max_cardinal);
- lua_set_cardinal_by_key(L, "min_cardinal", min_cardinal);
+ lua_set_cardinal_by_key(L,"max_cardinal", max_cardinal);
+ lua_set_cardinal_by_key(L,"min_cardinal", min_cardinal);
lua_set_integer_by_key(L, "max_integer", max_integer);
lua_set_integer_by_key(L, "min_integer", min_integer);
lua_set_integer_by_key(L, "max_dimen", max_dimen);
@@ -268,7 +268,7 @@ static int statslib_getconstants(lua_State *L)
lua_set_integer_by_key(L, "one_bp", one_bp);
- lua_set_integer_by_key(L, "infinity", infinity);
+ lua_set_integer_by_key(L, "infinity", max_infinity);
lua_set_integer_by_key(L, "min_infinity", min_infinity);
lua_set_integer_by_key(L, "awful_bad", awful_bad);
lua_set_integer_by_key(L, "infinite_bad", infinite_bad);
diff --git a/source/luametatex/source/lua/lmttexlib.c b/source/luametatex/source/lua/lmttexlib.c
index 7d9395eb7..0d84eebdd 100644
--- a/source/luametatex/source/lua/lmttexlib.c
+++ b/source/luametatex/source/lua/lmttexlib.c
@@ -903,7 +903,7 @@ static const char *texlib_aux_scan_integer_part(lua_State *L, const char *ss, in
DONE:
if (overflow) {
luaL_error(L, "number too big");
- result = infinity;
+ result = max_integer;
} else if (vacuous) {
luaL_error(L, "missing number, treated as zero") ;
}
@@ -1246,6 +1246,9 @@ int lmt_check_for_flags(lua_State *L, int slot, int *flags, int prefixes, int nu
} else if (lua_key_eq(str, value)) {
slot += 1;
*flags = add_value_flag(*flags);
+ } else if (lua_key_eq(str, constant)) {
+ slot += 1;
+ *flags = add_constant_flag(*flags);
} else if (lua_key_eq(str, conditional) || lua_key_eq(str, condition)) {
/* condition will go, conditional stays */
slot += 1;
@@ -2690,7 +2693,7 @@ static int texlib_aux_scan_internal(lua_State *L, int cmd, int code, int values)
default:
{
int texstr = tex_the_scanned_result();
- char *str = tex_to_cstring(texstr);
+ const char *str = tex_to_cstring(texstr);
if (str) {
lua_pushstring(L, str);
} else {
@@ -3582,7 +3585,7 @@ static int texlib_enableprimitives(lua_State *L)
for (int cs = 0; cs < prim_size; cs++) {
strnumber s = get_prim_text(cs);
if (s > 0) {
- char *prm = tex_to_cstring(s);
+ const char *prm = tex_to_cstring(s);
texlib_aux_enableprimitive(pre, lpre, prm);
}
}
@@ -4116,7 +4119,7 @@ static int texlib_runlocal(lua_State *L)
} else {
halfword ref = eq_value(cs);
halfword head = token_link(ref);
- if (head && get_token_parameters(ref)) {
+ if (head && get_token_preamble(ref)) {
tex_local_control_message("macro takes arguments and is ignored");
return 0;
} else {
@@ -4605,7 +4608,7 @@ static int texlib_setdimensionvalue(lua_State *L)
static int texlib_aux_getvalue(lua_State *L, halfword level, halfword cs)
{
halfword chr = eq_value(cs);
- if (chr && ! get_token_parameters(chr)) {
+ if (chr && ! get_token_preamble(chr)) { /* or get_token_parameters as we don't want trailing # */
halfword value = 0;
tex_begin_inserted_list(tex_get_available_token(cs_token_flag + cs));
if (tex_scan_tex_value(level, &value)) {
diff --git a/source/luametatex/source/lua/lmttokenlib.c b/source/luametatex/source/lua/lmttokenlib.c
index 97ca1b144..41ee6c485 100644
--- a/source/luametatex/source/lua/lmttokenlib.c
+++ b/source/luametatex/source/lua/lmttokenlib.c
@@ -213,10 +213,10 @@ void lmt_tokenlib_initialize(void)
/* lmt_interface.command_names[string_cmd] = (command_item) { .id = string_cmd, .lua = lua_key_index(string), .name = lua_key(string), .kind = regular_command_item, .min = ignore_entry, .max = max_integer, .base = 0, .fixedvalue = 0 }; */
lmt_interface.command_names[call_cmd] = (command_item) { .id = call_cmd, .lua = lua_key_index(call), .name = lua_key(call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[protected_call_cmd] = (command_item) { .id = protected_call_cmd, .lua = lua_key_index(protected_call), .name = lua_key(protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
- lmt_interface.command_names[semi_protected_call_cmd] = (command_item) { .id = semi_protected_call_cmd, .lua = lua_key_index(protected_call), .name = lua_key(protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
+ lmt_interface.command_names[semi_protected_call_cmd] = (command_item) { .id = semi_protected_call_cmd, .lua = lua_key_index(semi_protected_call), .name = lua_key(protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[tolerant_call_cmd] = (command_item) { .id = tolerant_call_cmd, .lua = lua_key_index(tolerant_call), .name = lua_key(tolerant_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[tolerant_protected_call_cmd] = (command_item) { .id = tolerant_protected_call_cmd, .lua = lua_key_index(tolerant_protected_call), .name = lua_key(tolerant_protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
- lmt_interface.command_names[tolerant_semi_protected_call_cmd] = (command_item) { .id = tolerant_semi_protected_call_cmd, .lua = lua_key_index(tolerant_protected_call), .name = lua_key(tolerant_protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
+ lmt_interface.command_names[tolerant_semi_protected_call_cmd] = (command_item) { .id = tolerant_semi_protected_call_cmd, .lua = lua_key_index(tolerant_semi_protected_call), .name = lua_key(tolerant_protected_call), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[deep_frozen_end_template_cmd] = (command_item) { .id = deep_frozen_end_template_cmd, .lua = lua_key_index(deep_frozen_cs_end_template), .name = lua_key(deep_frozen_cs_end_template), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[deep_frozen_dont_expand_cmd] = (command_item) { .id = deep_frozen_dont_expand_cmd, .lua = lua_key_index(deep_frozen_cs_dont_expand), .name = lua_key(deep_frozen_cs_dont_expand), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
lmt_interface.command_names[internal_glue_reference_cmd] = (command_item) { .id = internal_glue_reference_cmd, .lua = lua_key_index(internal_glue_reference), .name = lua_key(internal_glue_reference), .kind = token_command_item, .min = ignore_entry, .max = ignore_entry, .base = ignore_entry, .fixedvalue = 0 };
@@ -468,8 +468,9 @@ halfword lmt_token_list_from_lua(lua_State *L, int slot)
if (s[i] == ascii_space) {
tok = token_val(spacer_cmd, s[i]);
} else {
- int k = (int) aux_str2uni((const unsigned char *) (s + i));
- i = i + (size_t) (utf8_size(k)) - 1;
+ int kl;
+ int k = (int) aux_str2uni_len((const unsigned char *) (s + i), &kl);
+ i = i + kl - 1;
tok = token_val(other_char_cmd, k);
}
p = tex_store_new_token(p, tok);
@@ -737,15 +738,15 @@ static void tokenlib_aux_to_token(lua_State *L, int i, int m, int *head, int *ta
const unsigned char *p = (const unsigned char *) s;
size_t n = aux_utf8len(s, l);
for (size_t j = 0; j < n; j++) {
- int ch = *p;
- halfword x = tex_get_available_token(tokenlib_aux_to_token_val(aux_str2uni(p)));
+ int xl;
+ halfword x = tex_get_available_token(tokenlib_aux_to_token_val(aux_str2uni_len(p, &xl)));
if (*head) {
token_link(*tail) = x;
} else {
*head = x;
}
*tail = x;
- p += utf8_size(ch);
+ p += xl;
}
break;
}
@@ -2370,7 +2371,7 @@ static int tokenlib_getprimitives(lua_State *L)
while (cs < prim_size) {
strnumber s = get_prim_text(cs);
if (s > 0 && (get_prim_origin(cs) != no_command)) {
- char *ss = tex_to_cstring(s);
+ const char *ss = tex_to_cstring(s);
int cmd = prim_eq_type(cs);
int chr = prim_equiv(cs);
if (! raw) {
@@ -2668,6 +2669,19 @@ inline static int tokenlib_get_parameters(lua_State *L)
return 0;
}
+inline static int tokenlib_get_constant(lua_State *L)
+{
+ lua_token *n = tokenlib_aux_check_istoken(L, 1);
+ halfword tok = token_info(n->token);
+ int result = 0;
+ if (tok >= cs_token_flag && is_call_cmd(eq_type(tok - cs_token_flag))) {
+ halfword v = eq_value(tok - cs_token_flag);
+ result = v && get_token_reference(v) == max_token_reference;
+ }
+ lua_pushboolean(L, result);
+ return 1;
+}
+
static int tokenlib_getfield(lua_State *L)
{
const char *s = lua_tostring(L, 2);
@@ -2711,6 +2725,8 @@ static int tokenlib_getfield(lua_State *L)
return tokenlib_get_flags(L);
} else if (lua_key_eq(s, parameters)) {
return tokenlib_get_parameters(L);
+ } else if (lua_key_eq(s, constant)) {
+ return tokenlib_get_constant(L);
} else {
lua_pushnil(L);
}
@@ -3229,11 +3245,17 @@ static int tokenlib_set_macro(lua_State *L) /* todo: protected */
slot = lmt_check_for_flags(L, slot, &flags, 1, 1);
}
if (tex_define_permitted(cs, flags)) { /* we check before we allocate */
- halfword h = get_reference_token();
- halfword t = h;
+ halfword h;
if (lstr > 0) {
+ h = get_reference_token();
/*tex Options: 1=create (will trigger an error), 2=ignore. */
- tex_parse_str_to_tok(h, &t, ct, str, lstr, lua_toboolean(L, slot++) ? 2 : 1);
+ tex_parse_str_to_tok(h, null, ct, str, lstr, lua_toboolean(L, slot++) ? 2 : 1);
+ if (is_constant(flags)) {
+ set_token_reference(h, max_token_reference);
+ }
+ } else {
+ h = lmt_token_state.empty;
+ // tex_add_token_reference(h);
}
tex_define(flags, cs, tex_flags_to_cmd(flags), h);
}
@@ -3388,7 +3410,7 @@ static int tokenlib_set_char(lua_State *L) /* also in texlib */
/* a weird place, these should be in tex */
-static int tokenlib_set_constant(lua_State *L, singleword cmd, halfword min, halfword max)
+static int tokenlib_set_constant_value(lua_State *L, singleword cmd, halfword min, halfword max)
{
int top = lua_gettop(L);
if (top >= 2) {
@@ -3409,7 +3431,7 @@ static int tokenlib_set_constant(lua_State *L, singleword cmd, halfword min, hal
return 0;
}
-static int tokenlib_get_constant(lua_State *L, halfword cmd)
+static int tokenlib_get_constant_value(lua_State *L, halfword cmd)
{
if (lua_type(L, 1) == LUA_TSTRING) {
size_t l;
@@ -3428,32 +3450,32 @@ static int tokenlib_get_constant(lua_State *L, halfword cmd)
static int tokenlib_set_integer(lua_State *L)
{
- return tokenlib_set_constant(L, integer_cmd, min_integer, max_integer);
+ return tokenlib_set_constant_value(L, integer_cmd, min_integer, max_integer);
}
static int tokenlib_set_dimension(lua_State *L)
{
- return tokenlib_set_constant(L, dimension_cmd, min_dimen, max_dimen);
+ return tokenlib_set_constant_value(L, dimension_cmd, min_dimen, max_dimen);
}
// static int tokenlib_set_gluespec(lua_State *L)
// {
-// return tokenlib_set_constant(L, gluespec_cmd, min_dimen, max_dimen);
+// return tokenlib_set_constant_value(L, gluespec_cmd, min_dimen, max_dimen);
// }
static int tokenlib_get_integer(lua_State *L)
{
- return tokenlib_get_constant(L, integer_cmd);
+ return tokenlib_get_constant_value(L, integer_cmd);
}
static int tokenlib_get_dimension(lua_State *L)
{
- return tokenlib_get_constant(L, dimension_cmd);
+ return tokenlib_get_constant_value(L, dimension_cmd);
}
// static int tokenlib_get_gluespec(lua_State *L)
// {
-// return tokenlib_get_constant(L, gluespec_cmd);
+// return tokenlib_get_constant_value(L, gluespec_cmd);
// }
/*
@@ -3575,6 +3597,7 @@ static const struct luaL_Reg tokenlib_function_list[] = {
{ "getinstance", tokenlib_get_instance },
{ "getflags", tokenlib_get_flags },
{ "getparameters", tokenlib_get_parameters },
+ { "getconstant", tokenlib_get_constant },
{ "getmacro", tokenlib_get_macro },
{ "getmeaning", tokenlib_get_meaning },
{ "getcmdchrcs", tokenlib_get_cmdchrcs },
@@ -3721,11 +3744,13 @@ void lmt_local_call(int slot)
lua_settop(L, stacktop);
}
-int lmt_function_call_by_class(int slot, int property, halfword *value)
+/*tex We replaced |class| by |category because of g++ issues. */
+
+int lmt_function_call_by_category(int slot, int property, halfword *value)
{
lua_State *L = lmt_lua_state.lua_instance;
int stacktop = lua_gettop(L);
- int class = lua_value_none_code;
+ int category = lua_value_none_code;
lua_pushcfunction(L, lmt_traceback);
lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_lua_state.function_table_id);
if (lua_rawgeti(L, -1, slot) == LUA_TFUNCTION) {
@@ -3744,9 +3769,9 @@ int lmt_function_call_by_class(int slot, int property, halfword *value)
lmt_error(L, "function call", slot, i == LUA_ERRRUN ? 0 : 1);
} else {
if (lua_type(L, -2) == LUA_TNUMBER) {
- class = lmt_tointeger(L, -2);
+ category = lmt_tointeger(L, -2);
}
- switch (class) {
+ switch (category) {
case lua_value_none_code:
{
break;
@@ -3798,7 +3823,7 @@ int lmt_function_call_by_class(int slot, int property, halfword *value)
case lua_value_float_code:
case lua_value_string_code:
{
- class = lua_value_none_code;
+ category = lua_value_none_code;
break;
}
case lua_value_boolean_code:
@@ -3816,14 +3841,14 @@ int lmt_function_call_by_class(int slot, int property, halfword *value)
break;
default:
{
- class = lua_value_none_code;
+ category = lua_value_none_code;
break;
}
}
}
}
lua_settop(L, stacktop);
- return class;
+ return category;
}
/* some day maybe an alternative too
diff --git a/source/luametatex/source/lua/lmttokenlib.h b/source/luametatex/source/lua/lmttokenlib.h
index 450c6173a..bfc3ed6f2 100644
--- a/source/luametatex/source/lua/lmttokenlib.h
+++ b/source/luametatex/source/lua/lmttokenlib.h
@@ -33,7 +33,7 @@ extern halfword lmt_token_list_from_lua (lua_State *L, int slot);
extern halfword lmt_token_code_from_lua (lua_State *L, int slot);
extern void lmt_function_call (int slot, int prefix);
-extern int lmt_function_call_by_class (int slot, int property, halfword *value);
+extern int lmt_function_call_by_category (int slot, int property, halfword *value);
extern void lmt_token_call (int p);
extern void lmt_local_call (int slot);
diff --git a/source/luametatex/source/luametatex.h b/source/luametatex/source/luametatex.h
index 07921d53a..973b405ae 100644
--- a/source/luametatex/source/luametatex.h
+++ b/source/luametatex/source/luametatex.h
@@ -89,7 +89,7 @@
# define luametatex_version 210
# define luametatex_revision 04
# define luametatex_version_string "2.10.04"
-# define luametatex_development_id 20221208
+# define luametatex_development_id 20221214
# define luametatex_name_camelcase "LuaMetaTeX"
# define luametatex_name_lowercase "luametatex"
diff --git a/source/luametatex/source/tex/texcommands.c b/source/luametatex/source/tex/texcommands.c
index c7ec0a2f4..0ad91e420 100644
--- a/source/luametatex/source/tex/texcommands.c
+++ b/source/luametatex/source/tex/texcommands.c
@@ -774,10 +774,12 @@ void tex_initialize_commands(void)
tex_primitive(tex_command, "def", def_cmd, def_code, 0);
tex_primitive(tex_command, "xdef", def_cmd, global_expanded_def_code, 0);
tex_primitive(tex_command, "gdef", def_cmd, global_def_code, 0);
+ tex_primitive(luatex_command, "cdef", def_cmd, constant_def_code, 0);
tex_primitive(luatex_command, "edefcsname", def_cmd, expanded_def_csname_code, 0);
tex_primitive(luatex_command, "defcsname", def_cmd, def_csname_code, 0);
tex_primitive(luatex_command, "xdefcsname", def_cmd, global_expanded_def_csname_code, 0);
tex_primitive(luatex_command, "gdefcsname", def_cmd, global_def_csname_code, 0);
+ tex_primitive(luatex_command, "cdefcsname", def_cmd, constant_def_csname_code, 0);
tex_primitive(tex_command, "scriptfont", define_family_cmd, script_size, 0);
tex_primitive(tex_command, "scriptscriptfont", define_family_cmd, script_script_size, 0);
@@ -961,6 +963,7 @@ void tex_initialize_commands(void)
tex_primitive(luatex_command, "semiprotected", prefix_cmd, semiprotected_code, 0);
tex_primitive(luatex_command, "enforced", prefix_cmd, enforced_code, 0);
tex_primitive(luatex_command, "inherited", prefix_cmd, inherited_code, 0);
+ tex_primitive(luatex_command, "constant", prefix_cmd, constant_code, 0);
tex_primitive(tex_command, "long", prefix_cmd, long_code, 0);
tex_primitive(tex_command, "outer", prefix_cmd, outer_code, 0);
@@ -1303,10 +1306,16 @@ void tex_initialize_commands(void)
cs_text(deep_frozen_cs_protection_code) = tex_maketexstring("inaccessible");
cs_text(deep_frozen_cs_end_write_code) = tex_maketexstring("endwrite");
- set_eq_level(deep_frozen_cs_end_write_code, level_one);
set_eq_type(deep_frozen_cs_end_write_code, call_cmd);
set_eq_flag(deep_frozen_cs_end_write_code, 0);
set_eq_value(deep_frozen_cs_end_write_code, null);
+ set_eq_level(deep_frozen_cs_end_write_code, level_one);
+
+ /*tex The empty list reference should be reassigned after compacting! */
+
+ lmt_token_state.empty = get_reference_token();
+ // tex_add_token_reference(lmt_token_state.empty);
+ set_token_reference(lmt_token_state.empty, max_token_reference);
lmt_string_pool_state.reserved = lmt_string_pool_state.string_pool_data.ptr;
lmt_hash_state.no_new_cs = 1;
diff --git a/source/luametatex/source/tex/texcommands.h b/source/luametatex/source/tex/texcommands.h
index 55de1dce6..8df61a4db 100644
--- a/source/luametatex/source/tex/texcommands.h
+++ b/source/luametatex/source/tex/texcommands.h
@@ -797,6 +797,11 @@ typedef enum local_control_codes {
bits for this but we don't have enough. Now, because frozen macros can be unfrozen we can
indeed have a prefix that bypasses the check. Explicit (re)definitions are then up to the user.
+ Constant macros are special in the sense that we set the reference count to the maximum. This is
+ then a signal that we have an expanded macro with a meaning that we can immediately copy into
+ the expanded token list, as in csname construction. This saves some memory access and token
+ allocation.
+
*/
typedef enum prefix_codes {
@@ -820,6 +825,7 @@ typedef enum prefix_codes {
enforced_code,
always_code,
inherited_code,
+ constant_code,
long_code,
outer_code,
} prefix_codes;
@@ -859,9 +865,11 @@ typedef enum def_codes {
def_csname_code,
global_expanded_def_csname_code,
global_def_csname_code,
+ constant_def_code,
+ constant_def_csname_code,
} def_codes;
-# define last_def_code global_def_csname_code
+# define last_def_code constant_def_csname_code
typedef enum let_codes {
global_let_code,
diff --git a/source/luametatex/source/tex/texconditional.c b/source/luametatex/source/tex/texconditional.c
index 2197e9065..925e9fac9 100644
--- a/source/luametatex/source/tex/texconditional.c
+++ b/source/luametatex/source/tex/texconditional.c
@@ -555,9 +555,7 @@ void tex_conditional_if(halfword code, int unless)
}
goto RESULT;
case if_zero_int_code:
- {
- result = tex_scan_int(0, NULL) == 0;
- }
+ result = tex_scan_int(0, NULL) == 0;
goto RESULT;
case if_abs_dim_code:
case if_dim_code:
@@ -587,15 +585,10 @@ void tex_conditional_if(halfword code, int unless)
}
goto RESULT;
case if_zero_dim_code:
- {
- result = tex_scan_dimen(0, 0, 0, 0, NULL) == 0;
- }
+ result = tex_scan_dimen(0, 0, 0, 0, NULL) == 0;
goto RESULT;
case if_odd_code:
- {
- halfword v = tex_scan_int(0, NULL);
- result = odd(v);
- }
+ result = odd(tex_scan_int(0, NULL));
goto RESULT;
case if_vmode_code:
result = abs(cur_list.mode) == vmode;
@@ -970,8 +963,7 @@ void tex_conditional_if(halfword code, int unless)
halfword t = token_info(lmt_input_state.cur_input.loc);
lmt_input_state.cur_input.loc = token_link(lmt_input_state.cur_input.loc);
if (t < cs_token_flag && token_cmd(t) == parameter_reference_cmd) {
- // result = token_info(input_state.parameter_stack[input_state.cur_input.parameter_start + token_chr(t) - 1]) != null ? 1 : 2;
- result = lmt_input_state.parameter_stack[lmt_input_state.cur_input.parameter_start + token_chr(t) - 1] != null ? 1 : 2;
+ result = lmt_input_state.parameter_stack[lmt_input_state.cur_input.parameter_start + token_chr(t) - 1] != null ? 1 : 2;
}
}
goto CASE;
@@ -1103,19 +1095,19 @@ void tex_conditional_if(halfword code, int unless)
// }
default:
{
- int class;
+ int category;
strnumber u = tex_save_cur_string();
int save_scanner_status = lmt_input_state.scanner_status;
lmt_input_state.scanner_status = scanner_is_normal;
lmt_token_state.luacstrings = 0;
- class = lmt_function_call_by_class(code - last_if_test_code, 0, &result);
+ category = lmt_function_call_by_category(code - last_if_test_code, 0, &result);
tex_restore_cur_string(u);
lmt_input_state.scanner_status = save_scanner_status;
if (lmt_token_state.luacstrings > 0) {
tex_lua_string_start();
/* bad */
}
- switch (class) {
+ switch (category) {
case lua_value_integer_code:
case lua_value_cardinal_code:
case lua_value_dimension_code:
diff --git a/source/luametatex/source/tex/texdumpdata.h b/source/luametatex/source/tex/texdumpdata.h
index 02514bdf3..4f3450ef4 100644
--- a/source/luametatex/source/tex/texdumpdata.h
+++ b/source/luametatex/source/tex/texdumpdata.h
@@ -55,7 +55,7 @@
*/
-# define luametatex_format_fingerprint 678
+# define luametatex_format_fingerprint 679
/* These end up in the string pool. */
diff --git a/source/luametatex/source/tex/texequivalents.c b/source/luametatex/source/tex/texequivalents.c
index bdf21446e..223e46e15 100644
--- a/source/luametatex/source/tex/texequivalents.c
+++ b/source/luametatex/source/tex/texequivalents.c
@@ -243,6 +243,7 @@ void tex_dump_equivalents_mem(dumpstream f)
/*tex A special register. */
dump_int(f, lmt_token_state.par_loc);
/* dump_int(f, lmt_token_state.line_par_loc); */ /*tex See note in textoken.c|. */
+ dump_int(f, lmt_token_state.empty);
}
void tex_undump_equivalents_mem(dumpstream f)
@@ -284,6 +285,7 @@ void tex_undump_equivalents_mem(dumpstream f)
/* } else { */
/* tex_fatal_undump_error("lineparloc"); */
/* } */
+ undump_int(f, lmt_token_state.empty);
return;
}
diff --git a/source/luametatex/source/tex/texequivalents.h b/source/luametatex/source/tex/texequivalents.h
index 336c9e206..c84b90226 100644
--- a/source/luametatex/source/tex/texequivalents.h
+++ b/source/luametatex/source/tex/texequivalents.h
@@ -1155,6 +1155,7 @@ typedef enum flag_bit {
value_flag_bit = 0x08000,
semiprotected_flag_bit = 0x10000,
inherited_flag_bit = 0x20000,
+ constant_flag_bit = 0x40000,
} flag_bits;
/*tex Flags: */
@@ -1180,6 +1181,7 @@ typedef enum flag_bit {
# define add_conditional_flag(a) ((a) | conditional_flag_bit)
# define add_value_flag(a) ((a) | value_flag_bit)
# define add_inherited_flag(a) ((a) | inherited_flag_bit)
+# define add_constant_flag(a) ((a) | constant_flag_bit)
# define remove_flag(a,b) ((a) & ~(b))
@@ -1220,6 +1222,7 @@ typedef enum flag_bit {
# define is_conditional(a) (((a) & conditional_flag_bit) == conditional_flag_bit)
# define is_value(a) (((a) & value_flag_bit) == value_flag_bit)
# define is_inherited(a) (((a) & inherited_flag_bit) == inherited_flag_bit)
+# define is_constant(a) (((a) & constant_flag_bit) == constant_flag_bit)
# define is_expandable(cmd) (cmd > max_command_cmd)
diff --git a/source/luametatex/source/tex/texexpand.c b/source/luametatex/source/tex/texexpand.c
index 8a2fa79a0..f257f8b0f 100644
--- a/source/luametatex/source/tex/texexpand.c
+++ b/source/luametatex/source/tex/texexpand.c
@@ -88,7 +88,8 @@ inline static void tex_aux_expand_after(void)
if (cur_cmd > max_command_cmd) {
tex_expand_current_token();
} else {
- tex_back_input(t2);
+ tex_back_input(t2);
+ /* token_link(t1) = t2; */ /* no gain, rarely happens */
}
tex_back_input(t1);
}
@@ -615,7 +616,6 @@ inline static int tex_aux_uni_to_buffer(unsigned char *b, int m, int c)
much sense. It also long token lists that never (should) match anyway.
*/
-
static int tex_aux_collect_cs_tokens(halfword *p, int *n)
{
while (1) {
@@ -650,7 +650,17 @@ static int tex_aux_collect_cs_tokens(halfword *p, int *n)
*/
case call_cmd:
case tolerant_call_cmd:
- tex_aux_macro_call(cur_cs, cur_cmd, cur_chr);
+ if (get_token_reference(cur_chr) == max_token_reference) { // ! get_token_parameters(cur_chr)) {
+ /* we avoid the macro stack and expansion and we don't trace either */
+ halfword h = token_link(cur_chr);
+ while (h) {
+ *p = tex_store_new_token(*p, token_info(h));
+ *n += 1;
+ h = token_link(h);
+ }
+ } else {
+ tex_aux_macro_call(cur_cs, cur_cmd, cur_chr);
+ }
break;
case end_cs_name_cmd:
return 1;
@@ -677,7 +687,7 @@ int tex_is_valid_csname(void)
tex_get_x_or_protected(); /* we skip unprotected ! */
} while (cur_cmd != end_cs_name_cmd);
goto FINISH;
- /* no real gain: */
+ /* no real gain as we hardly ever end up here */
// while (1) {
// tex_get_token();
// if (cur_cmd == end_cs_name_cmd) {
@@ -941,6 +951,16 @@ int tex_get_parameter_count(void)
return n;
}
+/*tex
+ We can avoid the copy of parameters to the stack but it complicates the code because we also need
+ to clean up the previous set of parameters etc. It's not worth the effort. However, there are
+ plenty of optimizations compared to the original. Some are measurable on an average run, others
+ are more likely to increase performance when thousands of successive runs happen in e.g. a virtual
+ environment where threads fight for memory access and cpu cache. And because \CONTEXT\ is us used
+ that way we keep looking into ways to gain performance, but not at the cost of dirty hacks (that
+ I tried out of curiosity but rejected in the end).
+*/
+
static void tex_aux_macro_call(halfword cs, halfword cmd, halfword chr)
{
int tracing = tracing_macros_par > 0;
@@ -955,7 +975,7 @@ static void tex_aux_macro_call(halfword cs, halfword cmd, halfword chr)
if (is_untraced(eq_flag(cs))) {
tracing = 0;
} else {
- if (! get_token_parameters(chr)) {
+ if (! get_token_preamble(chr)) {
tex_print_str("->");
} else {
/* maybe move the preamble scanner to here */
@@ -964,14 +984,14 @@ static void tex_aux_macro_call(halfword cs, halfword cmd, halfword chr)
}
tex_end_diagnostic();
}
- if (get_token_parameters(chr)) {
+ if (get_token_preamble(chr)) {
halfword matchpointer = token_link(chr);
halfword matchtoken = token_info(matchpointer);
int save_scanner_status = lmt_input_state.scanner_status;
halfword save_warning_index = lmt_input_state.warning_index;
int nofscanned = 0;
int nofarguments = 0;
- halfword pstack[9]; /* We could go for 15 if we accept |#A-#F|. */
+ halfword pstack[max_match_count];
/*tex
Scan the parameters and make |link(r)| point to the macro body; but |return| if an
illegal |\par| is detected.
@@ -1334,7 +1354,7 @@ static void tex_aux_macro_call(halfword cs, halfword cmd, halfword chr)
++nofscanned;
if (tracing) {
tex_begin_diagnostic();
- tex_print_format("%c%i<-", match_visualizer, nofscanned);
+ tex_print_format("%c%c<-", match_visualizer, '0' + nofscanned + (nofscanned > 9 ? gap_match_count : 0));
tex_show_token_list(pstack[nofscanned - 1], null, default_token_show_max, 0);
tex_end_diagnostic();
}
diff --git a/source/luametatex/source/tex/texinputstack.c b/source/luametatex/source/tex/texinputstack.c
index e73451226..52262e486 100644
--- a/source/luametatex/source/tex/texinputstack.c
+++ b/source/luametatex/source/tex/texinputstack.c
@@ -62,9 +62,15 @@ input_file_state_info input_file_state = {
.line = 0,
};
-#define reserved_input_stack_slots 2
-#define reserved_in_stack_slots 2
-#define reserved_param_stack_slots 10 /*tex We play safe and always keep 10 in reserve (we have 9 max anyway). */
+/*tex
+ We play safe and always keep a few batches of parameter slots in reserve so that we
+ are unlikely to overrun.
+*/
+
+# define reserved_input_stack_slots 2
+# define reserved_in_stack_slots 2
+//define reserved_param_stack_slots 32
+# define reserved_param_stack_slots (2 * max_match_count)
void tex_initialize_input_state(void)
{
@@ -793,7 +799,7 @@ void tex_end_token_list(void)
case macro_text:
{
tex_delete_token_reference(lmt_input_state.cur_input.start);
- if (get_token_parameters(lmt_input_state.cur_input.start)) {
+ if (get_token_preamble(lmt_input_state.cur_input.start)) {
/*tex Parameters must be flushed: */
int ptr = lmt_input_state.parameter_stack_data.ptr;
int start = lmt_input_state.cur_input.parameter_start;
@@ -850,10 +856,17 @@ void tex_cleanup_input_state(void)
ptr = lmt_input_state.parameter_stack_data.ptr;
start = lmt_input_state.cur_input.parameter_start;
while (ptr > start) {
- --ptr;
- if (lmt_input_state.parameter_stack[ptr]) {
+ if (lmt_input_state.parameter_stack[--ptr]) {
tex_flush_token_list(lmt_input_state.parameter_stack[ptr]);
}
+ // halfword p = lmt_input_state.parameter_stack[--ptr];
+ // if (p) {
+ // if (! token_link(p)) {
+ // tex_put_available_token(p); /* very little gain on average */
+ // } else {
+ // tex_flush_token_list(p);
+ // }
+ // }
}
lmt_input_state.parameter_stack_data.ptr = start;
break;
diff --git a/source/luametatex/source/tex/texlanguage.c b/source/luametatex/source/tex/texlanguage.c
index 0fcd3b243..200ffbd1e 100644
--- a/source/luametatex/source/tex/texlanguage.c
+++ b/source/luametatex/source/tex/texlanguage.c
@@ -1279,8 +1279,9 @@ static int tex_aux_still_okay(halfword f, halfword l, halfword r, int n, const c
tex_normal_warning("language", "the hyphenated word contains non-glyphs, skipping");
return 0;
} else {
- halfword c = (halfword) aux_str2uni((const unsigned char *) utf8original);
- utf8original += utf8_size(c);
+ int cl;
+ halfword c = (halfword) aux_str2uni_len((const unsigned char *) utf8original, &cl);
+ utf8original += cl;
if (! (c && c == glyph_character(f))) {
tex_normal_warning("language", "the hyphenated word contains different characters, skipping");
return 0;
diff --git a/source/luametatex/source/tex/texmaincontrol.c b/source/luametatex/source/tex/texmaincontrol.c
index 24729d8cb..dbb52ab15 100644
--- a/source/luametatex/source/tex/texmaincontrol.c
+++ b/source/luametatex/source/tex/texmaincontrol.c
@@ -814,10 +814,10 @@ typedef enum saved_localbox_items {
static void tex_aux_scan_local_box(int code) {
quarterword options = 0;
- halfword class = 0;
- tex_scan_local_boxes_keys(&options, &class);
+ halfword index = 0;
+ tex_scan_local_boxes_keys(&options, &index);
tex_set_saved_record(saved_localbox_item_location, local_box_location_save_type, 0, code);
- tex_set_saved_record(saved_localbox_item_index, local_box_index_save_type, 0, class);
+ tex_set_saved_record(saved_localbox_item_index, local_box_index_save_type, 0, index);
tex_set_saved_record(saved_localbox_item_options, local_box_options_save_type, 0, options);
lmt_save_state.save_stack_data.ptr += saved_localbox_n_of_items;
tex_new_save_level(local_box_group);
@@ -894,23 +894,6 @@ static void tex_aux_finish_local_box(void)
}
}
-// static void tex_aux_run_leader(void) {
-// switch (cur_chr) {
-// case a_leaders_code:
-// tex_aux_scan_box(a_leaders_flag, 0, 0);
-// break;
-// case c_leaders_code:
-// tex_aux_scan_box(c_leaders_flag, 0, 0);
-// break;
-// case x_leaders_code:
-// tex_aux_scan_box(x_leaders_flag, 0, 0);
-// break;
-// case g_leaders_code:
-// tex_aux_scan_box(g_leaders_flag, 0, 0);
-// break;
-// }
-// }
-
static int leader_flags[] = {
a_leaders_flag,
c_leaders_flag,
@@ -1244,6 +1227,10 @@ static void tex_aux_run_text_boundary(void) {
case protrusion_boundary:
boundary_data(n) = tex_scan_int(0, NULL);
break;
+ case page_boundary:
+ /* or maybe force vmode */
+ tex_scan_int(0, NULL);
+ break;
default:
break;
}
@@ -1260,6 +1247,7 @@ static void tex_aux_run_math_boundary(void) {
break;
}
case protrusion_boundary:
+ case page_boundary:
tex_scan_int(0, NULL);
break;
}
@@ -4479,7 +4467,7 @@ static void tex_aux_set_define_font(int a)
static void tex_aux_set_def(int a, int force)
{
- halfword expand = 0;
+ int expand = 0;
switch (cur_chr) {
case expanded_def_code:
expand = 1;
@@ -4505,6 +4493,15 @@ static void tex_aux_set_def(int a, int force)
cur_cs = tex_create_csname();
a = add_global_flag(a);
goto DONE;
+ case constant_def_code:
+ expand = 2;
+ a = add_constant_flag(a);
+ break;
+ case constant_def_csname_code:
+ expand = 2;
+ cur_cs = tex_create_csname();
+ a = add_constant_flag(a);
+ goto DONE;
}
tex_get_r_token();
DONE:
@@ -4513,7 +4510,13 @@ static void tex_aux_set_def(int a, int force)
}
if (force || tex_define_permitted(cur_cs, a)) {
halfword p = cur_cs;
- halfword t = expand ? tex_scan_macro_expand() : tex_scan_macro_normal();
+ halfword t = expand == 2 ? tex_scan_toks_expand(0, null, 1) : (expand ? tex_scan_macro_expand() : tex_scan_macro_normal());
+ if (is_constant(a)) {
+ /* todo: check if already defined or just accept a leak */
+ set_token_reference(t, max_token_reference);
+ } else if (! token_link(t)) {
+ t = lmt_token_state.empty; /* maybe in tex_define */
+ }
tex_define(a, p, tex_flags_to_cmd(a), t);
}
}
@@ -4674,7 +4677,14 @@ static void tex_aux_set_let(int a, int force)
a = add_global_flag(a);
}
if (force || tex_define_permitted(cur_cs, a)) {
- tex_define(a, cur_cs, tex_flags_to_cmd(a), get_reference_token());
+ /*tex
+ The commented line permits plenty empty definitions, a |\let| can run out of
+ ref count so maybe some day \unknown
+ */
+ // halfword empty = get_reference_token();
+ halfword empty = lmt_token_state.empty;
+ // tex_add_token_reference(empty);
+ tex_define(a, cur_cs, tex_flags_to_cmd(a), empty);
}
return;
default:
@@ -4711,7 +4721,7 @@ static void tex_aux_set_let(int a, int force)
}
tex_define_inherit(a, p, (singleword) newf, (singleword) cmd, cur_chr);
} else {
- tex_define(a, p, (singleword) cur_cmd, cur_chr);
+ tex_define(a, p, (singleword) cur_cmd, cur_chr);
}
}
@@ -4929,18 +4939,18 @@ static void tex_aux_set_math_parameter(int a)
case math_parameter_let_spacing:
case math_parameter_let_atom_rule:
{
- halfword class = tex_scan_math_class_number(0);
+ halfword mathclass = tex_scan_math_class_number(0);
halfword display = tex_scan_math_class_number(1);
halfword text = tex_scan_math_class_number(0);
halfword script = tex_scan_math_class_number(0);
halfword scriptscript = tex_scan_math_class_number(0);
- if (valid_math_class_code(class)) {
+ if (valid_math_class_code(mathclass)) {
switch (code) {
case math_parameter_let_spacing:
- code = internal_int_location(first_math_class_code + class);
+ code = internal_int_location(first_math_class_code + mathclass);
break;
case math_parameter_let_atom_rule:
- code = internal_int_location(first_math_atom_code + class);
+ code = internal_int_location(first_math_atom_code + mathclass);
break;
}
value = (display << 24) + (text << 16) + (script << 8) + scriptscript;
@@ -4959,20 +4969,20 @@ static void tex_aux_set_math_parameter(int a)
case math_parameter_copy_atom_rule:
case math_parameter_copy_parent:
{
- halfword class = tex_scan_math_class_number(0);
+ halfword mathclass = tex_scan_math_class_number(0);
halfword parent = tex_scan_math_class_number(1);
- if (valid_math_class_code(class) && valid_math_class_code(parent)) {
+ if (valid_math_class_code(mathclass) && valid_math_class_code(parent)) {
switch (code) {
case math_parameter_copy_spacing:
- code = internal_int_location(first_math_class_code + class);
+ code = internal_int_location(first_math_class_code + mathclass);
value = count_parameter(first_math_class_code + parent);
break;
case math_parameter_copy_atom_rule:
- code = internal_int_location(first_math_atom_code + class);
+ code = internal_int_location(first_math_atom_code + mathclass);
value = count_parameter(first_math_atom_code + parent);
break;
case math_parameter_copy_parent:
- code = internal_int_location(first_math_parent_code + class);
+ code = internal_int_location(first_math_parent_code + mathclass);
value = count_parameter(first_math_parent_code + parent);
break;
}
@@ -4991,21 +5001,21 @@ static void tex_aux_set_math_parameter(int a)
case math_parameter_set_display_pre_penalty:
case math_parameter_set_display_post_penalty:
{
- halfword class = tex_scan_math_class_number(0);
+ halfword mathclass = tex_scan_math_class_number(0);
halfword penalty = tex_scan_int(1, NULL);
- if (valid_math_class_code(class)) {
+ if (valid_math_class_code(mathclass)) {
switch (code) {
case math_parameter_set_pre_penalty:
- code = internal_int_location(first_math_pre_penalty_code + class);
+ code = internal_int_location(first_math_pre_penalty_code + mathclass);
break;
case math_parameter_set_post_penalty:
- code = internal_int_location(first_math_post_penalty_code + class);
+ code = internal_int_location(first_math_post_penalty_code + mathclass);
break;
case math_parameter_set_display_pre_penalty:
- code = internal_int_location(first_math_display_pre_penalty_code + class);
+ code = internal_int_location(first_math_display_pre_penalty_code + mathclass);
break;
case math_parameter_set_display_post_penalty:
- code = internal_int_location(first_math_display_post_penalty_code + class);
+ code = internal_int_location(first_math_display_post_penalty_code + mathclass);
break;
}
tex_word_define(a, code, penalty);
@@ -5021,13 +5031,13 @@ static void tex_aux_set_math_parameter(int a)
}
case math_parameter_let_parent:
{
- halfword class = tex_scan_math_class_number(0);
+ halfword mathclass = tex_scan_math_class_number(0);
halfword pre = tex_scan_math_class_number(1);
halfword post = tex_scan_math_class_number(0);
halfword options = tex_scan_math_class_number(0);
halfword reserved = tex_scan_math_class_number(0);
- if (valid_math_class_code(class)) {
- code = internal_int_location(first_math_parent_code + class);
+ if (valid_math_class_code(mathclass)) {
+ code = internal_int_location(first_math_parent_code + mathclass);
value = (reserved << 24) + (options << 16) + (pre << 8) + post;
tex_word_define(a, code, value);
// tex_assign_internal_int_value(a, code, value);
@@ -5052,9 +5062,9 @@ static void tex_aux_set_math_parameter(int a)
}
case math_parameter_options:
{
- halfword class = tex_scan_math_class_number(0);
- if (valid_math_class_code(class)) {
- code = internal_int_location(first_math_options_code + class);
+ halfword mathclass = tex_scan_math_class_number(0);
+ if (valid_math_class_code(mathclass)) {
+ code = internal_int_location(first_math_options_code + mathclass);
value = tex_scan_int(1, NULL);
tex_word_define(a, code, value);
// tex_assign_internal_int_value(a, code, value);
@@ -5409,6 +5419,7 @@ void tex_run_prefixed_command(void)
case always_code: flags = add_aliased_flag (flags); force = 1; break;
/*tex This one is special */
case inherited_code: flags = add_inherited_flag (flags); break;
+ case constant_code: flags = add_constant_flag (flags); break;
default:
goto PICKUP;
}
@@ -5956,7 +5967,7 @@ static void tex_aux_run_message(void)
strnumber s = tex_aux_scan_string();
if (error_help_par) {
strnumber helpinfo = tex_tokens_to_string(error_help_par);
- char *h = tex_to_cstring(helpinfo);
+ const char *h = tex_to_cstring(helpinfo);
tex_handle_error(
normal_error_type,
"%T",
diff --git a/source/luametatex/source/tex/texmarks.c b/source/luametatex/source/tex/texmarks.c
index 01e002fbd..c967beb4b 100644
--- a/source/luametatex/source/tex/texmarks.c
+++ b/source/luametatex/source/tex/texmarks.c
@@ -21,8 +21,6 @@
Watch out: zero is always valid and the good old single mark!
- Todo: class -> index
-
*/
mark_state_info lmt_mark_state = {
@@ -115,23 +113,23 @@ int tex_valid_mark(halfword m) {
return m < lmt_mark_state.mark_data.top;
}
-halfword tex_new_mark(quarterword subtype, halfword class, halfword ptr)
+halfword tex_new_mark(quarterword subtype, halfword index, halfword ptr)
{
halfword mark = tex_new_node(mark_node, subtype);
- mark_index(mark) = class;
+ mark_index(mark) = index;
mark_ptr(mark) = ptr;
if (lmt_mark_state.min_used < 0) {
- lmt_mark_state.min_used = class;
- lmt_mark_state.max_used = class;
+ lmt_mark_state.min_used = index;
+ lmt_mark_state.max_used = index;
} else {
- if (class < lmt_mark_state.min_used) {
- lmt_mark_state.min_used = class;
+ if (index < lmt_mark_state.min_used) {
+ lmt_mark_state.min_used = index;
}
- if (class > lmt_mark_state.max_used) {
- lmt_mark_state.max_used = class;
+ if (index > lmt_mark_state.max_used) {
+ lmt_mark_state.max_used = index;
}
}
- tex_set_mark(class, current_marks_code, ptr);
+ tex_set_mark(index, current_marks_code, ptr);
return mark;
}
@@ -315,16 +313,16 @@ int tex_has_mark(halfword m)
void tex_run_mark(void)
{
- halfword class = 0;
+ halfword index = 0;
halfword code = cur_chr;
switch (code) {
case set_marks_code:
case clear_marks_code:
case flush_marks_code:
- class = tex_scan_mark_number();
+ index = tex_scan_mark_number();
break;
}
- if (tex_valid_mark(class)) {
+ if (tex_valid_mark(index)) {
quarterword subtype = set_mark_value_code;
halfword ptr = null;
switch (code) {
@@ -333,13 +331,13 @@ void tex_run_mark(void)
ptr = tex_scan_toks_expand(0, NULL, 0);
break;
case clear_marks_code:
- tex_wipe_mark(class);
+ tex_wipe_mark(index);
return;
case flush_marks_code:
subtype = reset_mark_value_code;
break;
}
- tex_tail_append(tex_new_mark(subtype, class, ptr));
+ tex_tail_append(tex_new_mark(subtype, index, ptr));
} else {
/* error already issued */
}
diff --git a/source/luametatex/source/tex/texmarks.h b/source/luametatex/source/tex/texmarks.h
index e787fa9d0..9ce819f07 100644
--- a/source/luametatex/source/tex/texmarks.h
+++ b/source/luametatex/source/tex/texmarks.h
@@ -50,7 +50,7 @@ extern void tex_reset_mark (halfword m);
extern void tex_wipe_mark (halfword m);
extern void tex_delete_mark (halfword m, int what);
extern halfword tex_get_some_mark (halfword chr, halfword val);
-extern halfword tex_new_mark (quarterword subtype, halfword cls, halfword ptr);
+extern halfword tex_new_mark (quarterword subtype, halfword index, halfword ptr);
extern void tex_update_top_marks (void);
extern void tex_update_first_and_bot_mark (halfword m);
extern void tex_update_first_marks (void);
diff --git a/source/luametatex/source/tex/texmath.c b/source/luametatex/source/tex/texmath.c
index 327e8e6a3..216ba553b 100644
--- a/source/luametatex/source/tex/texmath.c
+++ b/source/luametatex/source/tex/texmath.c
@@ -1929,9 +1929,9 @@ static void tex_aux_append_math_accent(mathcodeval mval, mathdictval dval)
*/
-static void tex_aux_append_math_fence(halfword fence, quarterword class)
+static void tex_aux_append_math_fence(halfword fence, quarterword mathclass)
{
- switch (class) {
+ switch (mathclass) {
case open_noad_subtype:
{
tex_aux_push_math(math_fence_group, cur_list.math_style);
@@ -1968,7 +1968,7 @@ static void tex_aux_append_math_fence(halfword fence, quarterword class)
}
}
-static void tex_aux_append_math_fence_val(mathcodeval mval, mathdictval dval, quarterword class)
+static void tex_aux_append_math_fence_val(mathcodeval mval, mathdictval dval, quarterword mathclass)
{
halfword fence = tex_new_node(fence_noad, middle_fence_side);
halfword delimiter = tex_new_node(delimiter_node, mval.class_value);
@@ -1981,10 +1981,10 @@ static void tex_aux_append_math_fence_val(mathcodeval mval, mathdictval dval, qu
set_noad_classes(fence, mval.class_value);
/* todo : share the next three with the regular fences */
noad_options(fence) |= noad_option_no_check;
- if (class == middle_noad_subtype && cur_group != math_fence_group) {
+ if (mathclass == middle_noad_subtype && cur_group != math_fence_group) {
tex_aux_append_math_fence_val(tex_no_math_code(), tex_no_dict_code(), open_noad_subtype);
}
- tex_aux_append_math_fence(fence, class);
+ tex_aux_append_math_fence(fence, mathclass);
}
static void tex_aux_append_math_char(mathcodeval mval, mathdictval dval, int automatic)
@@ -2147,9 +2147,9 @@ int tex_scan_math_code_val(halfword code, mathcodeval *mval, mathdictval *dval)
case math_class_number_code:
{
halfword family = cur_fam_par;
- halfword class = tex_scan_int(0, NULL);
+ halfword mathclass = tex_scan_int(0, NULL);
tex_scan_math_cmd_val(mval, dval);
- mval->class_value = (short) class;
+ mval->class_value = (short) mathclass;
mval->family_value = (short) family;
}
break;
@@ -2518,7 +2518,7 @@ void tex_run_math_modifier(void)
*/
-static void tex_aux_scan_delimiter(halfword target, int code, int class)
+static void tex_aux_scan_delimiter(halfword target, int code, int mathclass)
{
delcodeval dval = tex_no_del_code();
mathcodeval mval = tex_no_math_code();
@@ -2584,8 +2584,8 @@ static void tex_aux_scan_delimiter(halfword target, int code, int class)
goto REALDELIMITER;
}
FAKEDELIMITER:
- if (class != unset_noad_class) {
- mval.class_value = (short) class;
+ if (mathclass != unset_noad_class) {
+ mval.class_value = (short) mathclass;
}
dval.small = mval;
dval.large = mval;
@@ -3451,7 +3451,7 @@ void tex_run_math_fraction(void)
halfword userstyle = -1;
halfword attrlist = null;
fullword options = 0;
- halfword class = fraction_noad_subtype;
+ halfword mathclass = fraction_noad_subtype;
halfword rulethickness = preset_rule_thickness;
int ruledone = 0;
fraction_h_factor(fraction) = 1000;
@@ -3581,7 +3581,7 @@ void tex_run_math_fraction(void)
if (tex_scan_mandate_keyword("class", 1)) {
halfword c = (quarterword) tex_scan_math_class_number(0);
if (valid_math_class_code(c)) {
- class = c;
+ mathclass = c;
}
}
break;
@@ -3673,7 +3673,7 @@ void tex_run_math_fraction(void)
}
fraction_rule_thickness(fraction) = rulethickness;
noad_options(fraction) = options;
- set_noad_main_class(fraction, class);
+ set_noad_main_class(fraction, mathclass);
if (attrlist) {
tex_attach_attribute_list_attribute(fraction, attrlist);
}
@@ -5183,16 +5183,16 @@ void tex_reset_all_styles(halfword level)
}
}
-inline static halfword tex_aux_math_class_default(halfword class) {
- return (class << 24) + (class << 16) + (class << 8) + class;
+inline static halfword tex_aux_math_class_default(halfword mathclass) {
+ return (mathclass << 24) + (mathclass << 16) + (mathclass << 8) + mathclass;
}
-inline static void tex_set_math_class_default(halfword class, halfword parent, halfword options)
+inline static void tex_set_math_class_default(halfword mathclass, halfword parent, halfword options)
{
- tex_word_define(0, internal_int_location(first_math_class_code + class), tex_aux_math_class_default(parent));
- tex_word_define(0, internal_int_location(first_math_atom_code + class), tex_aux_math_class_default(class));
- tex_word_define(0, internal_int_location(first_math_options_code + class), options);
- tex_word_define(0, internal_int_location(first_math_parent_code + class), tex_aux_math_class_default(class));
+ tex_word_define(0, internal_int_location(first_math_class_code + mathclass), tex_aux_math_class_default(parent));
+ tex_word_define(0, internal_int_location(first_math_atom_code + mathclass), tex_aux_math_class_default(mathclass));
+ tex_word_define(0, internal_int_location(first_math_options_code + mathclass), options);
+ tex_word_define(0, internal_int_location(first_math_parent_code + mathclass), tex_aux_math_class_default(mathclass));
}
static void tex_aux_set_math_atom_rule(halfword left, halfword right, halfword newleft, halfword newright)
@@ -5203,13 +5203,13 @@ static void tex_aux_set_math_atom_rule(halfword left, halfword right, halfword n
void tex_initialize_math_spacing(void)
{
- for (int class = 0; class <= max_math_class_code; class++) {
- tex_set_math_class_default(class, class, no_class_options);
+ for (int mathclass = 0; mathclass <= max_math_class_code; mathclass++) {
+ tex_set_math_class_default(mathclass, mathclass, no_class_options);
/*tex We do this here as there is no real need for yet another initializer. */
- tex_word_define(0, internal_int_location(first_math_pre_penalty_code + class), infinite_penalty);
- tex_word_define(0, internal_int_location(first_math_post_penalty_code + class), infinite_penalty);
- tex_word_define(0, internal_int_location(first_math_display_pre_penalty_code + class), infinite_penalty);
- tex_word_define(0, internal_int_location(first_math_display_post_penalty_code + class), infinite_penalty);
+ tex_word_define(0, internal_int_location(first_math_pre_penalty_code + mathclass), infinite_penalty);
+ tex_word_define(0, internal_int_location(first_math_post_penalty_code + mathclass), infinite_penalty);
+ tex_word_define(0, internal_int_location(first_math_display_pre_penalty_code + mathclass), infinite_penalty);
+ tex_word_define(0, internal_int_location(first_math_display_post_penalty_code + mathclass), infinite_penalty);
}
tex_reset_all_styles(level_one);
diff --git a/source/luametatex/source/tex/texmlist.c b/source/luametatex/source/tex/texmlist.c
index 1d4cbacd8..b9453875e 100644
--- a/source/luametatex/source/tex/texmlist.c
+++ b/source/luametatex/source/tex/texmlist.c
@@ -477,11 +477,11 @@ static void tex_aux_trace_kerns(halfword kern, const char *what, const char *det
}
}
-static halfword tex_aux_math_insert_font_kern(halfword current, scaled amount, halfword template, const char *trace)
+static halfword tex_aux_math_insert_font_kern(halfword current, scaled amount, halfword attributetemplate, const char *trace)
{
/*tex Maybe |math_font_kern|, also to prevent expansion. */
halfword kern = tex_new_kern_node(amount, font_kern_subtype);
- tex_attach_attribute_list_copy(kern, template ? template : current);
+ tex_attach_attribute_list_copy(kern, attributetemplate ? attributetemplate : current);
if (node_next(current)) {
tex_couple_nodes(kern, node_next(current));
}
@@ -490,11 +490,11 @@ static halfword tex_aux_math_insert_font_kern(halfword current, scaled amount, h
return kern;
}
-static halfword tex_aux_math_insert_italic_kern(halfword current, scaled amount, halfword template, const char *trace)
+static halfword tex_aux_math_insert_italic_kern(halfword current, scaled amount, halfword attributetemplate, const char *trace)
{
/*tex Maybe |math_italic_kern|. */
halfword kern = tex_new_kern_node(amount, italic_kern_subtype);
- tex_attach_attribute_list_copy(kern, template ? template : current);
+ tex_attach_attribute_list_copy(kern, attributetemplate ? attributetemplate : current);
if (node_next(current)) {
tex_couple_nodes(kern, node_next(current));
}
@@ -1666,7 +1666,7 @@ inline static void tex_aux_calculate_glue(scaled m, scaled *f, scaled *n)
/*tex integer part of |m| */
*n = tex_x_over_n_r(m, unity, f);
/*tex the new glue specification */
- if (f < 0) {
+ if (*f < 0) {
--n;
f += unity;
}
@@ -5540,9 +5540,9 @@ if (! stack && has_noad_option_exact(target)) {
}
}
-inline static int tex_aux_fallback_math_spacing_class(halfword style, halfword class)
+inline static int tex_aux_fallback_math_spacing_class(halfword style, halfword mathclass)
{
- unsigned parent = (unsigned) count_parameter(first_math_class_code + class);
+ unsigned parent = (unsigned) count_parameter(first_math_class_code + mathclass);
switch (style) {
case display_style: case cramped_display_style: return (parent >> 24) & 0xFF;
case text_style: case cramped_text_style: return (parent >> 16) & 0xFF;
@@ -5673,9 +5673,9 @@ static halfword tex_aux_math_spacing_glue(halfword ltype, halfword rtype, halfwo
}
}
-inline static int tex_aux_fallback_math_ruling_class(halfword style, halfword class)
+inline static int tex_aux_fallback_math_ruling_class(halfword style, halfword mathclass)
{
- unsigned parent = (unsigned) count_parameter(first_math_atom_code + class);
+ unsigned parent = (unsigned) count_parameter(first_math_atom_code + mathclass);
switch (style) {
case display_style: case cramped_display_style: return (parent >> 24) & 0xFF;
case text_style: case cramped_text_style: return (parent >> 16) & 0xFF;
@@ -6838,6 +6838,8 @@ static void tex_mlist_to_hlist_finalize_list(mliststate *state)
Apply some logic. The hard coded pairwise comparison is replaced by a generic one
because we can have more classes. For a while spacing and pairing was under a mode
control but that made no sense. We start with the begin class.
+
+ Setting |state->beginclass| still fragile ... todo.
*/
recent_class_overload = get_noad_right_class(current);
if (current_type == simple_noad && state->beginclass == unset_noad_class) {
@@ -6853,6 +6855,9 @@ static void tex_mlist_to_hlist_finalize_list(mliststate *state)
current = node_next(current);
goto WIPE;
}
+ if (recent_subtype == math_begin_class) {
+ state->beginclass = current_subtype;
+ }
/*tex
This is a special case where a sign starts something marked as (like) numeric, in
which there will be different spacing applied.
diff --git a/source/luametatex/source/tex/texprinting.c b/source/luametatex/source/tex/texprinting.c
index bb021047e..86fa47e28 100644
--- a/source/luametatex/source/tex/texprinting.c
+++ b/source/luametatex/source/tex/texprinting.c
@@ -352,7 +352,7 @@ void tex_print_str(const char *s)
lmt_string_to_buffer(s);
return;
default:
- break;
+ return;
}
if (terminal || logfile) {
int len = (int) strlen(s);
diff --git a/source/luametatex/source/tex/texscanning.c b/source/luametatex/source/tex/texscanning.c
index 15e887a71..e4354bba1 100644
--- a/source/luametatex/source/tex/texscanning.c
+++ b/source/luametatex/source/tex/texscanning.c
@@ -225,12 +225,12 @@ inline static void tex_aux_downgrade_cur_val(int level, int succeeded, int negat
static void tex_aux_set_cur_val_by_lua_value_cmd(halfword index, halfword property)
{
- int class = lua_value_none_code;
+ int category = lua_value_none_code;
halfword value = 0; /* can also be scaled */
strnumber u = tex_save_cur_string();
lmt_token_state.luacstrings = 0;
- class = lmt_function_call_by_class(index, property, &value);
- switch (class) {
+ category = lmt_function_call_by_category(index, property, &value);
+ switch (category) {
case lua_value_none_code:
cur_val_level = no_val_level;
break;
@@ -1380,20 +1380,20 @@ static halfword tex_aux_scan_something_internal(halfword cmd, halfword chr, int
case math_parameter_set_display_pre_penalty:
case math_parameter_set_display_post_penalty:
{
- halfword class = tex_scan_math_class_number(0);
- if (valid_math_class_code(class)) {
+ halfword mathclass = tex_scan_math_class_number(0);
+ if (valid_math_class_code(mathclass)) {
switch (chr) {
case math_parameter_set_pre_penalty:
- cur_val = count_parameter(first_math_pre_penalty_code + class);
+ cur_val = count_parameter(first_math_pre_penalty_code + mathclass);
break;
case math_parameter_set_post_penalty:
- cur_val = count_parameter(first_math_post_penalty_code + class);
+ cur_val = count_parameter(first_math_post_penalty_code + mathclass);
break;
case math_parameter_set_display_pre_penalty:
- cur_val = count_parameter(first_math_display_pre_penalty_code + class);
+ cur_val = count_parameter(first_math_display_pre_penalty_code + mathclass);
break;
case math_parameter_set_display_post_penalty:
- cur_val = count_parameter(first_math_display_post_penalty_code + class);
+ cur_val = count_parameter(first_math_display_post_penalty_code + mathclass);
break;
}
} else {
@@ -1411,9 +1411,9 @@ static halfword tex_aux_scan_something_internal(halfword cmd, halfword chr, int
}
case math_parameter_options:
{
- halfword class = tex_scan_math_class_number(0);
- if (valid_math_class_code(class)) {
- cur_val = count_parameter(first_math_options_code + class);
+ halfword mathclass = tex_scan_math_class_number(0);
+ if (valid_math_class_code(mathclass)) {
+ cur_val = count_parameter(first_math_options_code + mathclass);
} else {
cur_val = 0;
}
@@ -1890,6 +1890,20 @@ static void tex_aux_improper_constant_error(void)
*/
+
+static void tex_aux_scan_int_no_number()
+{
+ /*tex Express astonishment that no number was here. Mo longer a goto because g++ doesn't like it. */
+ if (lmt_error_state.intercept) {
+ lmt_error_state.last_intercept = 1 ;
+ if (cur_cmd != spacer_cmd) {
+ tex_back_input(cur_tok);
+ }
+ } else {
+ tex_aux_missing_number_error();
+ }
+}
+
halfword tex_scan_int(int optional_equal, int *radix)
{
int negative = 0;
@@ -1959,7 +1973,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
result = tex_aux_scan_something_internal(cur_cmd, cur_chr, int_val_level, 0, 0);
if (cur_val_level != int_val_level) {
result = 0;
- goto NONUMBER;
+ tex_aux_scan_int_no_number();
}
} else if (cur_cmd == math_style_cmd) {
/* A pity that we need to check this way in |scan_int|. */
@@ -1970,7 +1984,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
result = cur_chr;
} else {
result = 0;
- goto NONUMBER;
+ tex_aux_scan_int_no_number();
}
} else {
/*tex has an error message been issued? */
@@ -1997,7 +2011,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
if (ok_so_far) {
result = result * 8 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
if (lmt_error_state.intercept) {
vacuous = 1;
goto DONE;
@@ -2031,7 +2045,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
if (ok_so_far) {
result = result * 16 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
if (lmt_error_state.intercept) {
vacuous = 1;
goto DONE;
@@ -2060,7 +2074,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
if (ok_so_far) {
result = result * 10 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
if (lmt_error_state.intercept) {
vacuous = 1;
goto DONE;
@@ -2077,16 +2091,7 @@ halfword tex_scan_int(int optional_equal, int *radix)
}
DONE:
if (vacuous) {
- NONUMBER:
- /*tex Express astonishment that no number was here */
- if (lmt_error_state.intercept) {
- lmt_error_state.last_intercept = 1 ;
- if (cur_cmd != spacer_cmd) {
- tex_back_input(cur_tok);
- }
- } else {
- tex_aux_missing_number_error();
- }
+ tex_aux_scan_int_no_number();
} else {
tex_push_back(cur_tok, cur_cmd, cur_chr);
}
@@ -3289,7 +3294,7 @@ halfword tex_scan_font_identifier(halfword *spec)
if (tex_is_valid_font(fnt)) {
return fnt;
} else {
- goto BAD;
+ break; /* to error */
}
}
case internal_int_cmd:
@@ -3301,7 +3306,7 @@ halfword tex_scan_font_identifier(halfword *spec)
return fnt;
}
}
- goto BAD;
+ break; /* to error */
}
default:
{
@@ -3312,19 +3317,17 @@ halfword tex_scan_font_identifier(halfword *spec)
if (tex_is_valid_font((halfword) fnt)) {
return (halfword) fnt;
}
- } else {
- /*tex Fall through to a font error message. */
}
- BAD:
- tex_handle_error(
- back_error_type,
- "Missing or invalid font identifier (or equivalent) or integer (register or otherwise)",
- "I was looking for a control sequence whose current meaning has been defined by\n"
- "\\font or a valid font id number."
- );
- return null_font;
+ break; /* to error */
}
}
+ tex_handle_error(
+ back_error_type,
+ "Missing or invalid font identifier (or equivalent) or integer (register or otherwise)",
+ "I was looking for a control sequence whose current meaning has been defined by\n"
+ "\\font or a valid font id number."
+ );
+ return null_font;
}
/*tex
@@ -3612,9 +3615,10 @@ inline static int tex_aux_valid_macro_preamble(halfword *p, int *counter, halfwo
*hash_brace = cur_tok;
*p = tex_store_new_token(*p, cur_tok);
*p = tex_store_new_token(*p, end_match_token);
- set_token_parameters(h, *counter - zero_token + 1);
+ set_token_preamble(h, 1);
+ set_token_parameters(h, *counter - zero_token);
return 1;
- } else if (*counter == nine_token) {
+ } else if (*counter == F_token_l) {
tex_aux_too_many_parameters_error();
} else {
switch (cur_tok) {
@@ -3669,7 +3673,13 @@ inline static int tex_aux_valid_macro_preamble(halfword *p, int *counter, halfwo
default:
++*counter;
if (cur_tok != *counter) {
- tex_aux_parameters_order_error();
+ if (cur_tok >= A_token_l && cur_tok <= F_token_l) {
+ *counter += gap_match_count;
+ cur_tok += match_token - letter_token;
+ break;
+ } else {
+ tex_aux_parameters_order_error();
+ }
}
cur_tok += match_token - other_token;
break;
@@ -3682,7 +3692,8 @@ inline static int tex_aux_valid_macro_preamble(halfword *p, int *counter, halfwo
}
if (h != *p) {
*p = tex_store_new_token(*p, end_match_token);
- set_token_parameters(h, *counter - zero_token + 1);
+ set_token_preamble(h, 1);
+ set_token_parameters(h, *counter - zero_token);
}
if (cur_cmd == right_brace_cmd) {
++lmt_input_state.align_state;
@@ -3721,8 +3732,12 @@ halfword tex_scan_macro_normal(void)
if (cur_cmd == parameter_cmd) {
/*tex Keep the |#|. */
} else if (cur_tok <= zero_token || cur_tok > counter) {
- tex_aux_illegal_parameter_in_body_error();
- cur_tok = s;
+ if (cur_tok >= A_token_l && cur_tok <= F_token_l) {
+ cur_tok = token_val(parameter_reference_cmd, cur_chr - '0' - gap_match_count);
+ } else {
+ tex_aux_illegal_parameter_in_body_error();
+ cur_tok = s;
+ }
} else {
cur_tok = token_val(parameter_reference_cmd, cur_chr - '0');
}
@@ -3799,8 +3814,12 @@ halfword tex_scan_macro_expand(void)
if (cur_cmd == parameter_cmd) {
/*tex Keep the |#|. */
} else if (cur_tok <= zero_token || cur_tok > counter) {
- tex_aux_illegal_parameter_in_body_error();
- cur_tok = s;
+ if (cur_tok >= A_token_l && cur_tok <= F_token_l) {
+ cur_tok = token_val(parameter_reference_cmd, cur_chr - '0' - gap_match_count);
+ } else {
+ tex_aux_illegal_parameter_in_body_error();
+ cur_tok = s;
+ }
} else {
cur_tok = token_val(parameter_reference_cmd, cur_chr - '0');
}
@@ -4245,7 +4264,7 @@ static void tex_aux_scan_expr(halfword level)
switch (level) {
case int_val_level:
case attr_val_level:
- if ((factor > infinity) || (factor < -infinity)) {
+ if ((factor > max_integer) || (factor < min_integer)) {
lmt_scanner_state.arithmic_error = 1;
factor = 0;
}
@@ -4264,7 +4283,7 @@ static void tex_aux_scan_expr(halfword level)
}
break;
default:
- if ((state > expression_subtract) && ((factor > infinity) || (factor < -infinity))) {
+ if ((state > expression_subtract) && ((factor > max_integer) || (factor < min_integer))) {
lmt_scanner_state.arithmic_error = 1;
factor = 0;
}
@@ -4326,7 +4345,7 @@ static void tex_aux_scan_expr(halfword level)
switch (level) {
case int_val_level:
case attr_val_level:
- term = tex_fract(term, numerator, factor, infinity);
+ term = tex_fract(term, numerator, factor, max_integer);
break;
case dimen_val_level:
term = tex_fract(term, numerator, factor, max_dimen);
@@ -4363,7 +4382,7 @@ static void tex_aux_scan_expr(halfword level)
switch (level) {
case int_val_level:
case attr_val_level:
- expression = tex_aux_add_or_sub(expression, term, infinity, result);
+ expression = tex_aux_add_or_sub(expression, term, max_integer, result);
break;
case dimen_val_level:
expression = tex_aux_add_or_sub(expression, term, max_dimen, result);
@@ -4850,7 +4869,7 @@ static halfword tex_scan_bit_int(int *radix)
result = tex_aux_scan_something_internal(cur_cmd, cur_chr, int_val_level, 0, 0);
if (cur_val_level != int_val_level) {
result = 0;
- goto NONUMBER;
+ tex_aux_missing_number_error();
}
} else if (cur_cmd == math_style_cmd) {
result = (cur_chr == yet_unset_math_style) ? tex_scan_math_style_identifier(0, 0) : cur_chr;
@@ -4859,7 +4878,7 @@ static halfword tex_scan_bit_int(int *radix)
result = cur_chr;
} else {
result = 0;
- goto NONUMBER;
+ tex_aux_missing_number_error();
}
} else {
int vacuous = 1;
@@ -4882,7 +4901,7 @@ static halfword tex_scan_bit_int(int *radix)
if (ok_so_far) {
result = result * 8 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
tex_aux_number_to_big_error();
ok_so_far = 0;
}
@@ -4911,7 +4930,7 @@ static halfword tex_scan_bit_int(int *radix)
if (ok_so_far) {
result = result * 16 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
tex_aux_number_to_big_error();
ok_so_far = 0;
}
@@ -4935,7 +4954,7 @@ static halfword tex_scan_bit_int(int *radix)
if (ok_so_far) {
result = result * 10 + d;
if (result > max_integer) {
- result = infinity;
+ result = max_integer;
tex_aux_number_to_big_error();
ok_so_far = 0;
}
@@ -4947,7 +4966,6 @@ static halfword tex_scan_bit_int(int *radix)
}
DONE:
if (vacuous) {
- NONUMBER:
tex_aux_missing_number_error();
} else {
tex_push_back(cur_tok, cur_cmd, cur_chr);
@@ -5562,10 +5580,10 @@ static void tex_aux_scan_expression(int level)
break;
}
}
- if (v < -infinity) {
- v = -infinity;
- } else if (v > infinity) {
- v = infinity;
+ if (v < min_integer) {
+ v = min_integer;
+ } else if (v > max_integer) {
+ v = max_integer;
}
expression_entry(stack.tail) = v;
break;
diff --git a/source/luametatex/source/tex/texstringpool.h b/source/luametatex/source/tex/texstringpool.h
index a15b9fad5..f053a642a 100644
--- a/source/luametatex/source/tex/texstringpool.h
+++ b/source/luametatex/source/tex/texstringpool.h
@@ -78,35 +78,33 @@ extern string_pool_info lmt_string_pool_state;
inline static void tex_flush_char(void) { --lmt_string_pool_state.string_temp_top; }
-extern strnumber tex_make_string (void);
-extern strnumber tex_push_string (const unsigned char *s, int l);
-extern char *tex_take_string (int *len);
-extern int tex_str_eq_buf (strnumber s, int k, int n);
-extern int tex_str_eq_str (strnumber s, strnumber t);
-extern int tex_str_eq_cstr (strnumber s, const char *, size_t);
-extern int tex_get_strings_started (void);
-extern void tex_reset_cur_string (void);
-/* strnumber tex_search_string (strnumber search); */
-/* int tex_used_strings (void); */
-extern strnumber tex_maketexstring (const char *s);
-extern strnumber tex_maketexlstring (const char *s, size_t);
-extern void tex_append_char (unsigned char c);
-extern void tex_append_string (const unsigned char *s, unsigned l);
-extern char *tex_makecstring (int s, int *allocated);
-extern char *tex_makeclstring (int s, size_t *len);
-extern void tex_dump_string_pool (dumpstream f);
-extern void tex_undump_string_pool (dumpstream f);
-extern void tex_initialize_string_pool (void);
-extern void tex_initialize_string_mem (void);
-extern void tex_flush_str (strnumber s);
-extern strnumber tex_save_cur_string (void);
-extern void tex_restore_cur_string (strnumber u);
-
-/* void tex_increment_pool_string (int n); */
-/* void tex_decrement_pool_string (int n); */
-
-extern void tex_compact_string_pool (void);
-
-inline static char *tex_to_cstring (int s) { return str_length(s) > 0 ? (char *) str_string(s) : ""; }
+extern strnumber tex_make_string (void);
+extern strnumber tex_push_string (const unsigned char *s, int l);
+extern char *tex_take_string (int *len);
+extern int tex_str_eq_buf (strnumber s, int k, int n);
+extern int tex_str_eq_str (strnumber s, strnumber t);
+extern int tex_str_eq_cstr (strnumber s, const char *, size_t);
+extern int tex_get_strings_started (void);
+extern void tex_reset_cur_string (void);
+/* strnumber tex_search_string (strnumber search); */
+/* int tex_used_strings (void); */
+extern strnumber tex_maketexstring (const char *s);
+extern strnumber tex_maketexlstring (const char *s, size_t);
+extern void tex_append_char (unsigned char c);
+extern void tex_append_string (const unsigned char *s, unsigned l);
+extern char *tex_makecstring (int s, int *allocated);
+extern char *tex_makeclstring (int s, size_t *len);
+extern void tex_dump_string_pool (dumpstream f);
+extern void tex_undump_string_pool (dumpstream f);
+extern void tex_initialize_string_pool (void);
+extern void tex_initialize_string_mem (void);
+extern void tex_flush_str (strnumber s);
+extern strnumber tex_save_cur_string (void);
+extern void tex_restore_cur_string (strnumber u);
+extern void tex_compact_string_pool (void);
+/* void tex_increment_pool_string (int n); */
+/* void tex_decrement_pool_string (int n); */
+
+inline static const char *tex_to_cstring (int s) { return str_length(s) > 0 ? (char *) str_string(s) : ""; }
# endif
diff --git a/source/luametatex/source/tex/textoken.c b/source/luametatex/source/tex/textoken.c
index b46e6de85..f820e51d7 100644
--- a/source/luametatex/source/tex/textoken.c
+++ b/source/luametatex/source/tex/textoken.c
@@ -92,7 +92,7 @@ token_state_info lmt_token_state = {
.buffer = NULL,
.bufloc = 0,
.bufmax = 0,
- .padding = 0,
+ .empty = null,
};
/*tex Some properties are dumped in the format so these are aet already! */
@@ -212,6 +212,7 @@ void tex_compact_tokens(void)
}
}
}
+ lmt_token_state.empty = mapper[lmt_token_state.empty];
// print(dump_state.format_identifier);
tex_print_format("tokenlist compacted from %i to %i entries, ", lmt_token_memory_state.tokens_data.top, nc);
if (nofluacmds) {
@@ -335,27 +336,41 @@ void tex_add_token_reference(halfword p)
{
if (get_token_reference(p) < max_token_reference) {
add_token_reference(p);
- } else {
- tex_overflow_error("reference count", max_token_reference);
+ // } else {
+ // tex_overflow_error("reference count", max_token_reference);
}
}
void tex_increment_token_reference(halfword p, int n)
{
if ((get_token_reference(p) + n) < max_token_reference) {
- inc_token_reference(p,n);
- } else {
- tex_overflow_error("reference count", max_token_reference);
+ inc_token_reference(p, n);
+ } else {
+ inc_token_reference(p, max_token_reference - get_token_reference(p));
+ // } else {
+ // tex_overflow_error("reference count", max_token_reference);
}
}
+// void tex_delete_token_reference(halfword p)
+// {
+// if (p) {
+// if (get_token_reference(p)) {
+// sub_token_reference(p);
+// } else {
+// tex_flush_token_list(p);
+// }
+// }
+// }
+
void tex_delete_token_reference(halfword p)
{
if (p) {
- if (get_token_reference(p)) {
- sub_token_reference(p);
- } else {
+ halfword r = get_token_reference(p);
+ if (! r) {
tex_flush_token_list(p);
+ } if(r < max_token_reference) {
+ sub_token_reference(p);
}
}
}
@@ -465,6 +480,9 @@ void tex_print_meaning(halfword code)
tex_print_cs(cur_cs);
return;
} else {
+ if (cur_chr && get_token_reference(cur_chr) == max_token_reference) {
+ tex_print_str("constant ");
+ }
switch (code) {
case meaning_code:
case meaning_full_code:
@@ -477,7 +495,7 @@ void tex_print_meaning(halfword code)
tex_print_cs(cur_cs);
tex_print_char(' ');
if (cur_chr && token_link(cur_chr)) {
- halfword body = get_token_parameters(cur_chr) ? tex_show_token_list(token_link(cur_chr), null, default_token_show_max, 1) : token_link(cur_chr);
+ halfword body = get_token_preamble(cur_chr) ? tex_show_token_list(token_link(cur_chr), null, default_token_show_max, 1) : token_link(cur_chr);
tex_print_char('{');
if (body) {
tex_show_token_list(body, null, default_token_show_max, 0);
@@ -582,7 +600,7 @@ halfword tex_show_token_list(halfword p, halfword q, int l, int asis)
{
if (p) {
/*tex the highest parameter number, as an \ASCII\ digit */
- unsigned char n = '0';
+ unsigned char n = 0;
int min = 0;
int max = lmt_token_memory_state.tokens_data.top;
lmt_print_state.tally = 0;
@@ -639,6 +657,8 @@ halfword tex_show_token_list(halfword p, halfword q, int l, int asis)
tex_print_tex_str(match_visualizer);
if (chr <= 9) {
tex_print_char(chr + '0');
+ } else if (chr <= max_match_count) {
+ tex_print_char(chr + '0' + gap_match_count);
} else {
tex_print_char('!');
return null;
@@ -650,7 +670,7 @@ halfword tex_show_token_list(halfword p, halfword q, int l, int asis)
++n;
}
tex_print_char(chr ? chr : '0');
- if (n > '9') {
+ if (n > max_match_count) {
/*tex Can this happen at all? */
return null;
} else {
@@ -698,8 +718,9 @@ inline static halfword get_unichar_from_buffer(int *b)
if (a <= 0x80) {
*b += 1;
} else {
- a = (halfword) aux_str2uni(lmt_fileio_state.io_buffer + *b);
- *b += utf8_size(a);
+ int al;
+ a = (halfword) aux_str2uni_len(lmt_fileio_state.io_buffer + *b, &al);
+ *b += al;
}
return a;
}
@@ -892,7 +913,7 @@ int tex_scan_optional_keyword(const char *s)
/*tex
Here we know that the first character(s) matched so we are in the middle of a keyword already
- which means a different loop than the previous one.
+ which means a different loop than the previous one.
*/
int tex_scan_mandate_keyword(const char *s, int offset)
@@ -2111,8 +2132,9 @@ halfword tex_string_to_toks(const char *ss)
halfword p = null;
/*tex new node being added to the token list via |store_new_token| */
while (s < se) {
- halfword t = (halfword) aux_str2uni((const unsigned char *) s);
- s += utf8_size(t);
+ int tl;
+ halfword t = (halfword) aux_str2uni_len((const unsigned char *) s, &tl);
+ s += tl;
if (t == ' ') {
t = space_token;
} else {
@@ -2148,8 +2170,9 @@ static halfword lmt_str_toks(lstring b) /* returns head */
halfword head = null;
halfword tail = head;
while (k < (unsigned char *) b.s + b.l) {
- halfword t = aux_str2uni(k);
- k += utf8_size(t);
+ int tl;
+ halfword t = aux_str2uni_len(k, &tl);
+ k += tl;
if (t == ' ') {
t = space_token;
} else {
@@ -2190,14 +2213,14 @@ halfword tex_str_toks(lstring s, halfword *tail)
unsigned char *k = s.s;
unsigned char *l = k + s.l;
while (k < l) {
- halfword t = aux_str2uni(k);
+ int tl;
+ halfword t = aux_str2uni_len(k, &tl);
if (t == ' ') {
- k += 1;
t = space_token;
} else {
- k += utf8_size(t);
t += other_token;
}
+ k += tl;
p = tex_store_new_token(p, t);
if (! h) {
h = p;
@@ -2220,14 +2243,14 @@ halfword tex_cur_str_toks(halfword *tail)
/*tex tail of the token list */
while (k < l) {
/*tex token being appended */
- halfword t = aux_str2uni(k);
+ int tl;
+ halfword t = aux_str2uni_len(k, &tl);
if (t == ' ') {
- k += 1;
t = space_token;
} else {
- k += utf8_size(t);
t += other_token;
}
+ k += tl;
p = tex_store_new_token(p, t);
if (! h) {
h = p;
@@ -2261,8 +2284,9 @@ halfword tex_str_scan_toks(int ct, lstring ls)
while (k < l) {
int cc;
/*tex token being appended */
- halfword t = aux_str2uni(k);
- k += utf8_size(t);
+ int lt;
+ halfword t = aux_str2uni_len(k, &lt);
+ k += lt;
cc = tex_get_cat_code(ct, t);
if (cc == 0) {
/*tex We have a potential control sequence so we check for it. */
@@ -2271,8 +2295,7 @@ halfword tex_str_scan_toks(int ct, lstring ls)
int c = 0 ;
unsigned char *name = k ;
while (k < l) {
- t = (halfword) aux_str2uni((const unsigned char *) k);
- s = utf8_size(t);
+ t = (halfword) aux_str2uni_len((const unsigned char *) k, &s);
c = tex_get_cat_code(ct,t);
if (c == 11) {
k += s ;
@@ -3131,7 +3154,7 @@ char *tex_tokenlist_to_tstring(int pp, int inhibit_par, int *siz, int skippreamb
int p = token_link(pp);
if (p) {
int e = escape_char_par; /*tex The serialization of the escape, normally a backlash. */
- int n = '0'; /*tex The character after |#|, so |#0| upto |#9| */
+ int n = 0; /*tex The character after |#|, so |#0| upto |#9| */
int min = 0;
int max = lmt_token_memory_state.tokens_data.top;
int skip = 0;
@@ -3149,7 +3172,7 @@ char *tex_tokenlist_to_tstring(int pp, int inhibit_par, int *siz, int skippreamb
}
lmt_token_state.bufloc = 0;
if (skippreamble) {
- skip = get_token_parameters(pp);
+ skip = get_token_preamble(pp);
}
while (p) {
if (p < min || p > max) {
@@ -3192,12 +3215,14 @@ char *tex_tokenlist_to_tstring(int pp, int inhibit_par, int *siz, int skippreamb
tex_aux_append_char_to_buffer(match_visualizer);
if (chr <= 9) {
tex_aux_append_char_to_buffer(chr + '0');
+ } else if (chr <= max_match_count) {
+ tex_aux_append_char_to_buffer(chr + '0' + gap_match_count);
} else {
- tex_aux_append_char_to_buffer('!');
+ tex_aux_append_char_to_buffer('!');
goto EXIT;
}
} else {
- if (chr > 9) {
+ if (chr > max_match_count) {
goto EXIT;
}
}
@@ -3210,9 +3235,14 @@ char *tex_tokenlist_to_tstring(int pp, int inhibit_par, int *siz, int skippreamb
++n;
}
if (! skip) {
- tex_aux_append_char_to_buffer(chr ? chr : '0');
+ // tex_aux_append_char_to_buffer(chr ? chr : '0');
+ if (chr <= 9) {
+ tex_aux_append_char_to_buffer(chr + '0');
+ } else if (chr <= max_match_count) {
+ tex_aux_append_char_to_buffer(chr + '0' + gap_match_count);
+ }
}
- if (n > '9') {
+ if (n > max_match_count) {
goto EXIT;
}
break;
@@ -3457,14 +3487,14 @@ halfword tex_parse_str_to_tok(halfword head, halfword *tail, halfword ct, const
const char *se = str + lstr;
while (str < se) {
/*tex hh: |str2uni| could return len too (also elsewhere) */
- halfword u = (halfword) aux_str2uni((const unsigned char *) str);
+ int ul;
+ halfword u = (halfword) aux_str2uni_len((const unsigned char *) str, &ul);
halfword t = null;
halfword cc = tex_get_cat_code(ct, u);
- str += utf8_size(u);
+ str += ul;
/*tex
- This is a relating simple converter; if more is needed one can just use
- |tex.print| with a regular |\def| or |\gdef| and feed the string into the
- regular scanner.
+ This is a relative simple converter; if more is needed one can just use |tex.print|
+ with a regular |\def| or |\gdef| and feed the string into the regular scanner.
*/
switch (cc) {
case escape_cmd:
@@ -3473,8 +3503,8 @@ halfword tex_parse_str_to_tok(halfword head, halfword *tail, halfword ct, const
int lname = 0;
const char *name = str;
while (str < se) {
- halfword u = (halfword) aux_str2uni((const unsigned char *) str);
- int s = utf8_size(u);
+ int s;
+ halfword u = (halfword) aux_str2uni_len((const unsigned char *) str, &s);
int c = tex_get_cat_code(ct, u);
if (c == letter_cmd) {
str += s;
diff --git a/source/luametatex/source/tex/textoken.h b/source/luametatex/source/tex/textoken.h
index da2d01f7c..68632792b 100644
--- a/source/luametatex/source/tex/textoken.h
+++ b/source/luametatex/source/tex/textoken.h
@@ -108,32 +108,39 @@ typedef struct token_state_info {
char *buffer;
int bufloc;
int bufmax;
- int padding;
+ int empty;
} token_state_info;
extern token_state_info lmt_token_state;
-// # define max_token_reference 0x7FFF /* we can bump to 0xFFFF when we go unsigned here */
-//
-//define token_reference(a) token_memory_state.tokens[a].half1
-//
-// #define get_token_parameters(a) lmt_token_memory_state.tokens[a].quart2
-// #define get_token_reference(a) lmt_token_memory_state.tokens[a].quart3
-//
-// #define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].quart2 = (b)
-//
-// #define add_token_reference(a) lmt_token_memory_state.tokens[a].quart3 += 1
-// #define sub_token_reference(a) lmt_token_memory_state.tokens[a].quart3 -= 1
-// #define inc_token_reference(a,b) lmt_token_memory_state.tokens[a].quart3 += (quarterword) (b)
-// #define dec_token_reference(a,b) lmt_token_memory_state.tokens[a].quart3 -= (quarterword) (b)
+/*tex
+
+ We now can have 15 paremeters but if needed we can go higher. However, we then also need to
+ cache more and change the |preamble| and |count| to some funny bit ranges. If needed we can
+ bump the reference count maximum but quite likely one already has run out of something else
+ already.
+
+ \starttyping
+ preamble = 0xF0000000 : 1 when we have one, including trailing #
+ count = 0x0F000000
+ reference = 0x00FFFFFF
+ \stoptyping
+
+*/
+
+# define max_match_count 15
+# define gap_match_count 7
-# define max_token_reference 0x0FFFFFFF
+# define max_token_reference 0x00FFFFFF
-# define get_token_parameters(a) (lmt_token_memory_state.tokens[a].hulf1 >> 28)
-# define get_token_reference(a) (lmt_token_memory_state.tokens[a].hulf1 & 0x0FFFFFFF)
+# define get_token_preamble(a) ((lmt_token_memory_state.tokens[a].hulf1 >> 28) & 0xF)
+# define get_token_parameters(a) ((lmt_token_memory_state.tokens[a].hulf1 >> 24) & 0xF)
+# define get_token_reference(a) ((lmt_token_memory_state.tokens[a].hulf1 ) & max_token_reference)
-# define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 28) /* normally the variable is still zero here */
+# define set_token_preamble(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 28) /* normally the variable is still zero here */
+# define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 24) /* normally the variable is still zero here */
+# define set_token_reference(a,b) lmt_token_memory_state.tokens[a].hulf1 += (b)
# define add_token_reference(a) lmt_token_memory_state.tokens[a].hulf1 += 1 /* we are way off the parameter count */
# define sub_token_reference(a) lmt_token_memory_state.tokens[a].hulf1 -= 1 /* we are way off the parameter count */
# define inc_token_reference(a,b) lmt_token_memory_state.tokens[a].hulf1 += (b) /* we are way off the parameter count */
diff --git a/source/luametatex/source/tex/textypes.h b/source/luametatex/source/tex/textypes.h
index a09409522..c2cd57e64 100644
--- a/source/luametatex/source/tex/textypes.h
+++ b/source/luametatex/source/tex/textypes.h
@@ -155,7 +155,7 @@ extern halfword tex_badness(
# define one_bp 65781
-# define infinity 017777777777 /*tex the largest positive value that \TEX\ knows */
+# define max_infinity 0x7FFFFFFF /*tex the largest positive value that \TEX\ knows */
# define min_infinity -0x7FFFFFFF
# define awful_bad 07777777777 /*tex more than a billion demerits |0x3FFFFFFF| */
# define infinite_bad 10000 /*tex infinitely bad value */
diff --git a/source/luametatex/source/utilities/auxunistring.c b/source/luametatex/source/utilities/auxunistring.c
index 9fe5531d6..746fde4ad 100644
--- a/source/luametatex/source/utilities/auxunistring.c
+++ b/source/luametatex/source/utilities/auxunistring.c
@@ -11,36 +11,100 @@
*/
-unsigned aux_str2uni(const unsigned char *k)
+// unsigned xaux_str2uni(const unsigned char *k)
+// {
+// const unsigned char *text = k;
+// int ch = *text++;
+// if (ch < 0x80) {
+// return (unsigned) ch;
+// } else if (ch <= 0xbf) {
+// return 0xFFFD;
+// } else if (ch <= 0xdf) {
+// if (text[0] >= 0x80 && text[0] < 0xc0) {
+// return (unsigned) (((ch & 0x1f) << 6) | (text[0] & 0x3f));
+// }
+// } else if (ch <= 0xef) {
+// if (text[0] >= 0x80 && text[0] < 0xc0 && text[1] >= 0x80 && text[1] < 0xc0) {
+// return (unsigned) (((ch & 0xf) << 12) | ((text[0] & 0x3f) << 6) | (text[1] & 0x3f));
+// }
+// } else if (ch <= 0xf7) {
+// if (text[0] < 0x80 || text[1] < 0x80 || text[2] < 0x80 ||
+// text[0] >= 0xc0 || text[1] >= 0xc0 || text[2] >= 0xc0) {
+// return 0xFFFD;
+// } else {
+// int w1 = (((ch & 0x7) << 2) | ((text[0] & 0x30) >> 4)) - 1;
+// int w2 = ((text[1] & 0xf) << 6) | (text[2] & 0x3f);
+// w1 = (w1 << 6) | ((text[0] & 0xf) << 2) | ((text[1] & 0x30) >> 4);
+// return (unsigned) (w1 * 0x400 + w2 + 0x10000);
+// }
+// }
+// return 0xFFFD;
+// }
+
+unsigned aux_str2uni(const unsigned char *text)
+{
+ if (text[0] < 0x80) {
+ return (unsigned) text[0];
+ } else if (text[0] <= 0xbf) {
+ return 0xFFFD;
+ } else if (text[0] <= 0xdf) {
+ if (text[1] >= 0x80 && text[1] < 0xc0) {
+ return (unsigned) (((text[0] & 0x1f) << 6) | (text[1] & 0x3f));
+ }
+ } else if (text[0] <= 0xef) {
+ if (text[1] >= 0x80 && text[1] < 0xc0 && text[2] >= 0x80 && text[2] < 0xc0) {
+ return (unsigned) (((text[0] & 0xf) << 12) | ((text[1] & 0x3f) << 6) | (text[2] & 0x3f));
+ }
+ } else if (text[0] <= 0xf7) {
+ if (text[1] < 0x80 || text[2] < 0x80 || text[3] < 0x80 ||
+ text[1] >= 0xc0 || text[2] >= 0xc0 || text[3] >= 0xc0) {
+ return 0xFFFD;
+ } else {
+ int w1 = (((text[0] & 0x7) << 2) | ((text[1] & 0x30) >> 4)) - 1;
+ int w2 = ((text[2] & 0xf) << 6) | (text[3] & 0x3f);
+ w1 = (w1 << 6) | ((text[1] & 0xf) << 2) | ((text[2] & 0x30) >> 4);
+ return (unsigned) (w1 * 0x400 + w2 + 0x10000);
+ }
+ }
+ return 0xFFFD;
+}
+
+unsigned aux_str2uni_len(const unsigned char *text, int *len)
{
- const unsigned char *text = k;
- int ch = *text++;
- if (ch < 0x80) {
- return (unsigned) ch;
- } else if (ch <= 0xbf) {
+ if (text[0] < 0x80) {
+ *len = 1;
+ return (unsigned) text[0];
+ } else if (text[0] <= 0xbf) {
+ *len = 1;
return 0xFFFD;
- } else if (ch <= 0xdf) {
- if (text[0] >= 0x80 && text[0] < 0xc0) {
- return (unsigned) (((ch & 0x1f) << 6) | (text[0] & 0x3f));
+ } else if (text[0] <= 0xdf) {
+ if (text[1] >= 0x80 && text[1] < 0xc0) {
+ *len = 2;
+ return (unsigned) (((text[0] & 0x1f) << 6) | (text[1] & 0x3f));
}
- } else if (ch <= 0xef) {
- if (text[0] >= 0x80 && text[0] < 0xc0 && text[1] >= 0x80 && text[1] < 0xc0) {
- return (unsigned) (((ch & 0xf) << 12) | ((text[0] & 0x3f) << 6) | (text[1] & 0x3f));
+ } else if (text[0] <= 0xef) {
+ if (text[1] >= 0x80 && text[1] < 0xc0 && text[2] >= 0x80 && text[2] < 0xc0) {
+ *len = 3;
+ return (unsigned) (((text[0] & 0xf) << 12) | ((text[1] & 0x3f) << 6) | (text[2] & 0x3f));
}
- } else if (ch <= 0xf7) {
- if (text[0] < 0x80 || text[1] < 0x80 || text[2] < 0x80 ||
- text[0] >= 0xc0 || text[1] >= 0xc0 || text[2] >= 0xc0) {
+ } else if (text[0] <= 0xf7) {
+ if (text[1] < 0x80 || text[2] < 0x80 || text[3] < 0x80 ||
+ text[1] >= 0xc0 || text[2] >= 0xc0 || text[3] >= 0xc0) {
+ *len = 4;
return 0xFFFD;
} else {
- int w1 = (((ch & 0x7) << 2) | ((text[0] & 0x30) >> 4)) - 1;
- int w2 = ((text[1] & 0xf) << 6) | (text[2] & 0x3f);
- w1 = (w1 << 6) | ((text[0] & 0xf) << 2) | ((text[1] & 0x30) >> 4);
+ *len = 4;
+ int w1 = (((text[0] & 0x7) << 2) | ((text[1] & 0x30) >> 4)) - 1;
+ int w2 = ((text[2] & 0xf) << 6) | (text[3] & 0x3f);
+ w1 = (w1 << 6) | ((text[1] & 0xf) << 2) | ((text[2] & 0x30) >> 4);
return (unsigned) (w1 * 0x400 + w2 + 0x10000);
}
}
+ *len = 1;
return 0xFFFD;
}
+
unsigned char *aux_uni2str(unsigned unic)
{
unsigned char *buf = lmt_memory_malloc(5);
diff --git a/source/luametatex/source/utilities/auxunistring.h b/source/luametatex/source/utilities/auxunistring.h
index 4c5ee3639..92f46d91c 100644
--- a/source/luametatex/source/utilities/auxunistring.h
+++ b/source/luametatex/source/utilities/auxunistring.h
@@ -6,7 +6,8 @@
# define LMT_UTILITIES_UNISTRING_H
extern unsigned char *aux_uni2str (unsigned);
-extern unsigned aux_str2uni (const unsigned char *);
+extern unsigned aux_str2uni (const unsigned char *text);
+extern unsigned aux_str2uni_len (const unsigned char *text, int *len);
extern char *aux_uni2string (char *utf8_text, unsigned ch);
extern unsigned aux_splitutf2uni (unsigned int *ubuf, const char *utf8buf);
extern size_t aux_utf8len (const char *text, size_t size);
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 9bd797523..b557f5666 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2022.12.09 16:31}
+\newcontextversion{2022.12.15 17:49}
%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/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 3a7b24584..1c6f24507 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2022.12.09 16:31}
+\edef\contextversion{2022.12.15 17:49}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 3c2193719..ac24c71a5 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2022.12.09 16:31}
+\newcontextversion{2022.12.15 17:49}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index b89cecdfe..2e915c2a4 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -49,7 +49,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2022.12.09 16:31}
+\edef\contextversion{2022.12.15 17:49}
%D Kind of special:
diff --git a/tex/context/base/mkiv/mult-fmt.lua b/tex/context/base/mkiv/mult-fmt.lua
index 67133aab2..bbcdfd343 100644
--- a/tex/context/base/mkiv/mult-fmt.lua
+++ b/tex/context/base/mkiv/mult-fmt.lua
@@ -217,9 +217,9 @@ function interfaces.setuserinterface(interface,response)
constant = constant[interface] or constant.en or given
constants[constant] = given -- breedte -> width
nofconstants = nofconstants + 1
- setmacro("c!" .. given,given,"immutable")
+ setmacro("c!" .. given,given,"immutable","constant")
if reversetoo then
- setmacro("k!" .. constant,given,"immutable")
+ setmacro("k!" .. constant,given,"immutable","constant")
end
report_constant("%-40s: %s",given,constant)
end
@@ -232,7 +232,7 @@ function interfaces.setuserinterface(interface,response)
variable = variable[interface] or variable.en or given
variables[given] = variable -- ja -> yes
nofvariables = nofvariables + 1
- setmacro("v!" .. given,variable,"immutable")
+ setmacro("v!" .. given,variable,"immutable","constant")
report_variable("%-40s: %s",given,variable)
end
logs.stopfilelogging()
@@ -244,7 +244,7 @@ function interfaces.setuserinterface(interface,response)
element = element[interface] or element.en or given
elements[element] = given
nofelements = nofelements + 1
- setmacro("e!" .. given,element,"immutable")
+ setmacro("e!" .. given,element,"immutable","constant")
report_element("%-40s: %s",given,element)
end
logs.stopfilelogging()
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index 835588e46..d213bf7d7 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -436,7 +436,8 @@ return {
--
"getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters",
--
- "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter",
+ "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter",
+ "setexpandeddummyparameter", "resetdummyparameter",
"usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter",
--
"processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 891b795ad..2a73d765b 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -298,8 +298,11 @@ return {
"boxymove",
"boxyoffset",
"catcodetable",
+ "cdef",
+ "cdefcsname",
"cfcode",
"clearmarks",
+ "constant",
"copymathatomrule",
"copymathparent",
"copymathspacing",
@@ -640,6 +643,7 @@ return {
"tracinghyphenation",
"tracinginserts",
"tracinglevels",
+ "tracinglists",
"tracingmarks",
"tracingmath",
"tracingnodes",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 93a9c8822..8f7009b07 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 089aadf1a..36e22cc39 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkxl/anch-bck.mklx b/tex/context/base/mkxl/anch-bck.mklx
index 818fade98..2eeebd547 100644
--- a/tex/context/base/mkxl/anch-bck.mklx
+++ b/tex/context/base/mkxl/anch-bck.mklx
@@ -637,7 +637,7 @@
if nofposboxes = 1 :
posboxes[1] := (posboxes[1] enlarged mpvar "lineoffset") cornered mpvar "lineoffset" ;
fill posboxes[1] withcolor mpvar "fillcolor" ;
- draw posboxes[1] withpen pencircle scaled mpvar "linewidth" withcolor mpvar "linecolor" ;
+ draw posboxes[1] withpen pencircle scaled mpvar "linewidth" withcolor mpvar "linecolor" ;
fi ;
\stopMPpositiongraphic
diff --git a/tex/context/base/mkxl/anch-box.mkxl b/tex/context/base/mkxl/anch-box.mkxl
index 02cdf5fb8..9885123c2 100644
--- a/tex/context/base/mkxl/anch-box.mkxl
+++ b/tex/context/base/mkxl/anch-box.mkxl
@@ -42,7 +42,6 @@
% linecolor=\namedboxanchorcontentparameter{#1}{\c!rulecolor}}%
% \stoppositionoverlay
% \endgroup}
-
\tolerant\permanent\protected\def\connectboxanchors[#1]#*[#2]#*[#3]#*[#4]#*#:#5#6%
{\begingroup
%
@@ -70,17 +69,40 @@
\setMPpositiongraphic
{\boxanchorposone}%
{\namedboxanchorcontentparameter{#1}\c!mp}%
- {from=\boxanchorposone,%
+ {span=no,
+ from=\boxanchorposone,%
to=\boxanchorpostwo,%
- distance={\namedboxanchorcontentparameter{#1}\c!distance},%
+ % distance={\namedboxanchorcontentparameter{#1}\c!distance},%
dashtype={\namedboxanchorcontentparameter{#1}\c!dash},%
- arrow={\namedboxanchorcontentparameter{#1}\c!arrow},%
- alternative={\namedboxanchorcontentparameter{#1}\c!alternative},%
- text={\namedboxanchorcontentparameter{#1}\c!text},%
- rulethickness={\namedboxanchorcontentparameter{#1}\c!rulethickness},%
- linecolor=\namedboxanchorcontentparameter{#1}{\c!rulecolor}}%
+ % arrow={\namedboxanchorcontentparameter{#1}\c!arrow},%
+ % alternative={\namedboxanchorcontentparameter{#1}\c!alternative},%
+ % text={\namedboxanchorcontentparameter{#1}\c!text},%
+ % rulethickness={\namedboxanchorcontentparameter{#1}\c!rulethickness},%
+ linecolor=\namedboxanchorcontentparameter{#1}{\c!rulecolor},
+ #3}%
+ %
\stoppositionoverlay
}%
+ \ifcstok{\namedboxanchorcontentparameter{#1}\c!page}\v!yes
+ \normalexpanded{%
+ \startpositionoverlay{text+1}% will become configurable region
+ \setMPpositiongraphic
+ {\boxanchorpostwo}%
+ {\namedboxanchorcontentparameter{#1}\c!mp}%
+ {span=yes,
+ from=\boxanchorposone,%
+ to=\boxanchorpostwo,%
+ % distance={\namedboxanchorcontentparameter{#1}\c!distance},%
+ dashtype={\namedboxanchorcontentparameter{#1}\c!dash},%
+ % arrow={\namedboxanchorcontentparameter{#1}\c!arrow},%
+ % alternative={\namedboxanchorcontentparameter{#1}\c!alternative},%
+ % text={\namedboxanchorcontentparameter{#1}\c!text},%
+ % rulethickness={\namedboxanchorcontentparameter{#1}\c!rulethickness},%
+ linecolor=\namedboxanchorcontentparameter{#1}{\c!rulecolor}%
+ #3}%
+ \stoppositionoverlay
+ }%
+ \fi
\endgroup}
% dedicated or not
@@ -120,7 +142,7 @@
\stoppositionoverlay
\endgroup}
-\let\m_anch_matrix_list\empty
+\lettonothing\m_anch_matrix_list
\tolerant\permanent\protected\def\startmatrixanchors
{\glet\m_anch_matrix_list\empty
diff --git a/tex/context/base/mkxl/anch-pgr.mkxl b/tex/context/base/mkxl/anch-pgr.mkxl
index 4ffedbfc3..5071f16d5 100644
--- a/tex/context/base/mkxl/anch-pgr.mkxl
+++ b/tex/context/base/mkxl/anch-pgr.mkxl
@@ -204,13 +204,13 @@
%D
%D \typebuffer[graphic]
-\immutable\def\MPanchoridentifier{mpa} % {mp-anchor}
-\mutable \def\MPanchornumber {\the\realpageno}
-\mutable \let\MPanchorid \empty
+\immutable\def \MPanchoridentifier{mpa} % {mp-anchor}
+\mutable \def \MPanchornumber {\the\realpageno}
+\mutable \lettonothing\MPanchorid
%D The rest of the definitions concerning such overlays may look complicated,
-\mutable\let\currentpositionoverlay\empty
+\mutable\lettonothing\currentpositionoverlay
%D Position actions are automatically executed when a position is set.
@@ -256,7 +256,7 @@
\expandafter\gobbletwoarguments
\fi}
-\let\currentpositionregion\empty
+\lettonothing\currentpositionregion
\def\anch_positions_region_overlay_indeed#1#2%
{\begingroup
@@ -294,14 +294,14 @@
\ifdefined\checkpositionoverlays \else \let\checkpositionoverlays\relax \fi
-\mutable\let\currentpositionoverlay\empty
+\mutable\lettonothing\currentpositionoverlay
\def\anch_positions_overlay_start_yes#1%
{\checkpositionoverlays
\edef\currentpositionoverlay{#1}}
\permanent\protected\def\stoppositionoverlay
- {\let\currentpositionoverlay\empty}
+ {\lettonothing\currentpositionoverlay}
%D A position graphic is a normal (non||reused) \METAPOST\ graphic, used
%D immediately, with zero dimensions, so that a sequence of them does not harm.
diff --git a/tex/context/base/mkxl/anch-pos.mkxl b/tex/context/base/mkxl/anch-pos.mkxl
index f8891eb33..75e8f87d7 100644
--- a/tex/context/base/mkxl/anch-pos.mkxl
+++ b/tex/context/base/mkxl/anch-pos.mkxl
@@ -55,10 +55,10 @@
% see top: \newbox\b_anch_position
% see top: \newif \ifpositioning % sort of public
-\mutable\let\currentposition \empty
-\mutable\let\currentpositionaction\empty
-\mutable\let\currentpositionanchor\empty
-\mutable\let\currentpositionregion\empty
+\mutable\lettonothing\currentposition
+\mutable\lettonothing\currentpositionaction
+\mutable\lettonothing\currentpositionanchor
+\mutable\lettonothing\currentpositionregion
%D Sometimes we want to trick the position handler a bit:
diff --git a/tex/context/base/mkxl/anch-tab.mkxl b/tex/context/base/mkxl/anch-tab.mkxl
index 11e9598d9..1c89666dc 100644
--- a/tex/context/base/mkxl/anch-tab.mkxl
+++ b/tex/context/base/mkxl/anch-tab.mkxl
@@ -227,9 +227,9 @@
%D In order to prevent potential clashes with abbreviations, postpone the mapping and
%D make them mutable.
-\mutable\let\GSC\empty
-\mutable\let\GFC\empty
-\mutable\let\GTC\empty
+\mutable\lettonothing\GSC
+\mutable\lettonothing\GFC
+\mutable\lettonothing\GTC
\appendtoks
\enforced\let\GSC\tbGSC
diff --git a/tex/context/base/mkxl/attr-lay.mkxl b/tex/context/base/mkxl/attr-lay.mkxl
index 00c633533..122839c06 100644
--- a/tex/context/base/mkxl/attr-lay.mkxl
+++ b/tex/context/base/mkxl/attr-lay.mkxl
@@ -66,14 +66,14 @@
\def\currentviewerlayer{\the\currentviewerlayertoks}
\appendtoks
- \let\currentviewerlayer\empty
+ \lettonothing\currentviewerlayer
\to \everybeforepagebody
% layout components are implemented rather directly (speed)
\installcorenamespace{layoutcomponentattribute}
-\mutable\let\layoutcomponentboxattribute\empty
+\mutable\lettonothing\layoutcomponentboxattribute
\permanent\def\attr_layoutcomponent_initialize#1%
{\edef\layoutcomponentboxattribute{\clf_definedlayoutcomponent{#1}}%
@@ -87,11 +87,11 @@
\fi}
\permanent\def\attr_layoutcomponent_reset
- {\let\layoutcomponentboxattribute\empty}
+ {\lettonothing\layoutcomponentboxattribute}
-\permanent\let\setlayoutcomponentattribute \gobbleoneargument
-\permanent\let\resetlayoutcomponentattribute\relax
- \let\layoutcomponentboxattribute \empty
+\permanent\let \setlayoutcomponentattribute \gobbleoneargument
+\permanent\let \resetlayoutcomponentattribute\relax
+ \lettonothing\layoutcomponentboxattribute
\permanent\protected\def\showlayoutcomponents
{\enforced\let\setlayoutcomponentattribute \attr_layoutcomponent_set
diff --git a/tex/context/base/mkxl/back-exp.mkxl b/tex/context/base/mkxl/back-exp.mkxl
index 82329cc6a..3c8c23c59 100644
--- a/tex/context/base/mkxl/back-exp.mkxl
+++ b/tex/context/base/mkxl/back-exp.mkxl
@@ -312,7 +312,7 @@
\permanent\protected\def\dostartexport
{%\glet\dostartexport\relax
- \let\currentexport\empty
+ \lettonothing\currentexport
\clf_setupexport
align {\exportparameter\c!align}%
bodyfont \dimexpr\exportparameter\c!bodyfont\relax
diff --git a/tex/context/base/mkxl/bibl-bib.mkxl b/tex/context/base/mkxl/bibl-bib.mkxl
index cc916b329..d8ab26d28 100644
--- a/tex/context/base/mkxl/bibl-bib.mkxl
+++ b/tex/context/base/mkxl/bibl-bib.mkxl
@@ -450,7 +450,7 @@
\edef\bibtexpublicationsalternative{\@@pbalternative}% parent
\ifempty\bibtexpublicationsalternative \else
\processcommacommand[\bibtexpublicationsalternative]\dodoloadbibtexpublicationalternative
- \let\@@pbalternative\empty
+ \lettonothing\@@pbalternative
\fi
\fi}
@@ -655,9 +655,9 @@
{\global\advance\bibtexcounter\plusone
\ctxlua{bibtex.hacks.registerplaced("\currentbibtexsessiontag")}%
\let\currentlist\currentbibtexsession
- \let\currentlistentrynumber \bibtexcounter
- \let\currentlistentrytitle \thebibtexpublicationlistelement
- \let\currentlistentrypagenumber\empty
+ \let\currentlistentrynumber\bibtexcounter
+ \let\currentlistentrytitle\thebibtexpublicationlistelement
+ \lettonothing\currentlistentrypagenumber
\strc_lists_apply_renderingsetup}
{}} % invalid
diff --git a/tex/context/base/mkxl/bibl-tra.mkxl b/tex/context/base/mkxl/bibl-tra.mkxl
index c84d0878e..fc21724b3 100644
--- a/tex/context/base/mkxl/bibl-tra.mkxl
+++ b/tex/context/base/mkxl/bibl-tra.mkxl
@@ -258,7 +258,7 @@
{\dosingleempty\dosetupbibtex}
\protected\def\dosetupbibtex[#1]%
- {\let\@@pbdatabase\empty
+ {\lettonothing\@@pbdatabase
\getparameters[\??pb][#1]%
\the\everysetupbibtex}
@@ -299,7 +299,7 @@
{\readsysfile{bibl-\@@pbalternative.tex}
{\showmessage\m!publications{6}{bibl-\@@pbalternative}}
{\showmessage\m!publications{1}{bibl-\@@pbalternative}}%
- \let\@@pbalternative\empty}%
+ \lettonothing\@@pbalternative}%
\let\setuppublicationlayout\normalsetuppublicationlayout % overloaded in bibl-num ... vadjust needs to be done with option
\getparameters[\??pb][#1]% as bibl-* can have set things back
\the\everysetuppublications
@@ -537,7 +537,7 @@
\fi
\ifnum\todocounter>\zerocount
% find the current author list
- \let\templist\empty
+ \lettonothing\templist
\dorecurse{#2}
{\scratchtoks\doubleexpandafter{\csname\??pb @#1\recurselevel\endcsname}%
\edef\templist{\ifempty\templist\else\templist,\fi\the\scratchtoks}}%
@@ -881,10 +881,10 @@
{\global\advance\bibtexcounter\plusone
\def\currentpublicationkey{#1}%
\ctxlua{bibtex.hacks.registerplaced("#1")}%
- \def \currentlist {pubs}%
- \edef\currentlistentrynumber {\number\bibtexcounter}%
- \let \currentlistentrytitle \bibtexpubtext
- \let \currentlistentrypagenumber\empty
+ \def\currentlist{pubs}%
+ \edef\currentlistentrynumber{\number\bibtexcounter}%
+ \let\currentlistentrytitle\bibtexpubtext
+ \lettonothing\currentlistentrypagenumber
\strc_lists_apply_renderingsetup}
{}} % invalid
@@ -897,7 +897,7 @@
\the\initializebibdefinitions % NEW
\def\@@currentalternative{:l:}%
\presetbibvariables
- \let\biblanguage\empty
+ \lettonothing\biblanguage
\ignorespaces
\bibgetvard{#1}%
\removeunwantedspaces
@@ -963,9 +963,9 @@
\ifempty\LOextras
\setupcite[\@@currentalternative][#1]%
\else
- \expandafter\ifrelax\csname \??pv \@@currentalternative\c!right\endcsname
+ \expandafter\ifrelax\csname\??pv\@@currentalternative\c!right\endcsname
% avoids tail recursion
- \expandafter\let\csname \??pv \@@currentalternative\c!right\endcsname\empty
+ \expandafter\lettonothing\csname\??pv\@@currentalternative\c!right\endcsname
\fi
\expandafter\ifrelax\csname LOright\endcsname
\edef\LOextras{{\LOextras\bibalternative\c!right}}%
@@ -1050,22 +1050,22 @@
%D Delegate this to \LUA.
-% \let\ixlastcommand \relax
-% \let\ixsecondcomman \relax
-% \let\ixfirstcommand \relax
-% \let\thebibauthors \empty
-% \let\thebibyears \empty
-% \let\authorcount \!!zerocount
+% \let \ixlastcommand \relax
+% \let \ixsecondcomman\relax
+% \let \ixfirstcommand\relax
+% \lettonothing\thebibauthors
+% \lettonothing\thebibyears
+% \let \authorcount \!!zerocount
-\let\currentbibauthor\empty
+\lettonothing\currentbibauthor
\protected\def\ixbibauthoryear#1#2#3#4%
{\bgroup
- \gdef\ixlastcommand {#4}%
+ \gdef\ixlastcommand{#4}%
\gdef\ixsecondcommand{#3}%
- \gdef\ixfirstcommand {#2}%
- \glet\thebibauthors \empty
- \glet\thebibyears \empty
+ \gdef\ixfirstcommand{#2}%
+ \glettonothing\thebibauthors
+ \glettonothing\thebibyears
\getcommalistsize[#1]%
\ifbibcitecompress
\dorecurse\commalistsize{\xdef\thebibyears{\thebibyears,}}%
@@ -1105,7 +1105,7 @@
{\getcommacommandsize[#1]%
\ifcase\commalistsize
% anonymous?
- \let\currentbibauthor\empty
+ \lettonothing\currentbibauthor
\or
\def\currentbibauthor{#1}%
\or
@@ -1118,7 +1118,7 @@
\protected\def\handlemultiplebibauthors#1#2%
{\citescratchcounter\zerocount
- \let\currentbibauthor\empty
+ \lettonothing\currentbibauthor
\protected\def\bibprocessauthoritem##1%
{\advance\citescratchcounter\plusone
\ifnum \citescratchcounter=#1\relax
diff --git a/tex/context/base/mkxl/buff-ini.mkxl b/tex/context/base/mkxl/buff-ini.mkxl
index c6aa6de3f..d561841ff 100644
--- a/tex/context/base/mkxl/buff-ini.mkxl
+++ b/tex/context/base/mkxl/buff-ini.mkxl
@@ -22,7 +22,7 @@
%D pretty and never be efficient but it has served us for ages (conceptually it's
%D as in \MKII).
-\mutable\let\currentbuffer\empty
+\mutable\lettonothing\currentbuffer
% \doifelsebuffer {#1} % expandable
% \doifelsebufferempty {#1} % non expandable
diff --git a/tex/context/base/mkxl/buff-par.mklx b/tex/context/base/mkxl/buff-par.mklx
index b6ffa3f53..63e6f47bd 100644
--- a/tex/context/base/mkxl/buff-par.mklx
+++ b/tex/context/base/mkxl/buff-par.mklx
@@ -131,11 +131,11 @@
\relax
\endgroup}
-\mutable\let\currentparallelinstance\empty
-\mutable\let\currentparallelnumber \empty
-\mutable\let\currentparallelline \empty
-\mutable\let\currentparallellabel \empty
-\mutable\let\currentparallelcontent \empty
+\mutable\lettonothing\currentparallelinstance
+\mutable\lettonothing\currentparallelnumber
+\mutable\lettonothing\currentparallelline
+\mutable\lettonothing\currentparallellabel
+\mutable\lettonothing\currentparallelcontent
\permanent\protected\def\doflushparallel#instance#status#line#label#content% called at lua end
{\begingroup
diff --git a/tex/context/base/mkxl/buff-ver.mkxl b/tex/context/base/mkxl/buff-ver.mkxl
index ec7ef5fc3..6fef148f1 100644
--- a/tex/context/base/mkxl/buff-ver.mkxl
+++ b/tex/context/base/mkxl/buff-ver.mkxl
@@ -582,7 +582,7 @@
% [category] [settings] {name} % for historic reasons, all filenames are {}
-\mutable\let\currenttypingfile\empty
+\mutable\lettonothing\currenttypingfile
\appendtoks
\frozen\protected\instance\edefcsname\e!type\currenttyping\v!file\endcsname{\typefile[\currenttyping]}%
@@ -846,7 +846,7 @@
{\dontleavehmode
\begingroup
\enforced\let\setupcurrenttyping\setupcurrenttype % a terrible hack but it saves code
- \let\currenttype\empty
+ \lettonothing\currenttype
\ifparameters
\buff_verbatim_type_buffer_indeed_inline\currenttyping\empty% []
\or
diff --git a/tex/context/base/mkxl/catc-ini.mkxl b/tex/context/base/mkxl/catc-ini.mkxl
index 0740e7e2a..6e40ca822 100644
--- a/tex/context/base/mkxl/catc-ini.mkxl
+++ b/tex/context/base/mkxl/catc-ini.mkxl
@@ -319,9 +319,9 @@
-%
\fi}
-\let\syst_catcodes_trace_set \empty
-\let\syst_catcodes_trace_push\empty
-\let\syst_catcodes_trace_pop \empty
+\lettonothing\syst_catcodes_trace_set
+\lettonothing\syst_catcodes_trace_push
+\lettonothing\syst_catcodes_trace_pop
% \tracecatcodetables
diff --git a/tex/context/base/mkxl/chem-str.mkxl b/tex/context/base/mkxl/chem-str.mkxl
index 6c591225e..5f3f8b6c7 100644
--- a/tex/context/base/mkxl/chem-str.mkxl
+++ b/tex/context/base/mkxl/chem-str.mkxl
@@ -82,7 +82,7 @@
[\c!align=\v!normal,
\c!strut=\v!no]
-\mutable\let\currentdefinedchemical\empty
+\mutable\lettonothing\currentdefinedchemical
\permanent\protected\def\setupchemicalframed
{\setupframed[\??chemicalframed]}
@@ -120,9 +120,9 @@
\ifcase\currentxfontsize\or\scriptstyle\or\scriptscriptstyle\fi
#1}}
-\setvalue{\??chemicalsize\v!small }{\txx}
-\setvalue{\??chemicalsize\v!medium}{\tx}
-\setvalue{\??chemicalsize\v!big }{}
+\defcsname\??chemicalsize\v!small \endcsname{\txx}
+\defcsname\??chemicalsize\v!medium\endcsname{\tx}
+\defcsname\??chemicalsize\v!big \endcsname{}
\newtoks \everychemical
\newtoks \everystructurechemical
@@ -256,14 +256,14 @@
\permanent\protected\def\chemicalbottext#1{\global\settrue\c_chem_some_text\gdef\m_chem_bot_text{#1}\ignorespaces}
\permanent\protected\def\chemicalmidtext#1{\global\settrue\c_chem_some_text\gdef\m_chem_mid_text{#1}\ignorespaces}
-\mutable\let\toptext\empty
-\mutable\let\bottext\empty
-\mutable\let\midtext\empty
+\mutable\lettonothing\toptext
+\mutable\lettonothing\bottext
+\mutable\lettonothing\midtext
\appendtoks
- \let\toptext\chemicaltoptext \glet\m_chem_top_text\empty
- \let\bottext\chemicalbottext \glet\m_chem_bot_text\empty
- \let\midtext\chemicalmidtext \glet\m_chem_mid_text\empty
+ \let\toptext\chemicaltoptext \glettonothing\m_chem_top_text
+ \let\bottext\chemicalbottext \glettonothing\m_chem_bot_text
+ \let\midtext\chemicalmidtext \glettonothing\m_chem_mid_text
\global\setfalse\c_chem_some_text
\to \everystructurechemical
diff --git a/tex/context/base/mkxl/colo-ext.mkxl b/tex/context/base/mkxl/colo-ext.mkxl
index d4747ae94..f3779bb58 100644
--- a/tex/context/base/mkxl/colo-ext.mkxl
+++ b/tex/context/base/mkxl/colo-ext.mkxl
@@ -80,7 +80,7 @@
\colo_intents_set_text
\to \everysetupcolors
-\let\p_colo_intent\empty
+\lettonothing\p_colo_intent
\def\colo_intents_set_text
{\edef\p_colo_intent{\colorsparameter\c!intent}%
diff --git a/tex/context/base/mkxl/colo-ini.mkxl b/tex/context/base/mkxl/colo-ini.mkxl
index f7909e2a3..68aba39ab 100644
--- a/tex/context/base/mkxl/colo-ini.mkxl
+++ b/tex/context/base/mkxl/colo-ini.mkxl
@@ -61,10 +61,10 @@
\let\m_colo_weight_gray\v!yes
-\mutable\let\currentcolormodel \empty
-\mutable\let\currentcolorname \empty
-\mutable\let\currentcolorpalet \empty
-\mutable\let\currentcolorprefix\empty % \currentcolorpalet:
+\mutable\lettonothing\currentcolormodel
+\mutable\lettonothing\currentcolorname
+\mutable\lettonothing\currentcolorpalet
+\mutable\lettonothing\currentcolorprefix % \currentcolorpalet:
%D \macros
%D {definecolor,defineglobalcolor,definenamedcolor,definespotcolor,definemultitonecolor,
@@ -490,8 +490,8 @@
\expandafter\secondoftwoarguments
\fi}
-\mutable\let\paletlist\empty
-\mutable\let\paletsize\!!zerocount
+\mutable\lettonothing\paletlist
+\mutable\let \paletsize\!!zerocount
\permanent\protected\def\getpaletlist[#1]%
{\edef\paletlist{\begincsname\??paletlist#1\endcsname}}
@@ -588,15 +588,15 @@
{\edef\currentcolorpalet{#1}%
\ifempty\currentcolorpalet
% seems to be a reset
- \let\currentcolorprefix\empty
+ \lettonothing\currentcolorprefix
%\t_colo_prefix\emptytoks
\orelse\ifcsname\??paletlist\currentcolorpalet\endcsname
\edef\currentcolorprefix{#1:}%
%\t_colo_prefix\expandafter{\currentcolorprefix}%
\else
\colo_helpers_show_message\m!colors7\currentcolorpalet
- \let\currentcolorpalet\empty
- \let\currentcolorprefix\empty
+ \lettonothing\currentcolorpalet
+ \lettonothing\currentcolorprefix
%\t_colo_prefix\emptytoks
\fi
\the\everysetuppalet
@@ -1101,8 +1101,8 @@
%D \stopregistercolor
%D \stoptyping
-\mutable\let\maintextcolor \empty
-\mutable\def\defaulttextcolor{black}
+\mutable\lettonothing\maintextcolor
+\mutable\def \defaulttextcolor{black}
\permanent\protected\def\inheritmaintextcolor
{\ifempty\maintextcolor\else\colo_helpers_activate\maintextcolor\fi}
@@ -1130,7 +1130,7 @@
\permanent\protected\lettonothing\stoptextcolor
-\let\p_colo_textcolor\empty
+\lettonothing\p_colo_textcolor
\def\colo_helpers_initialize_maintextcolor
{\edef\p_colo_textcolor{\directcolorsparameter\c!textcolor}%
diff --git a/tex/context/base/mkxl/cont-log.mkxl b/tex/context/base/mkxl/cont-log.mkxl
index 56cf4053f..710848b67 100644
--- a/tex/context/base/mkxl/cont-log.mkxl
+++ b/tex/context/base/mkxl/cont-log.mkxl
@@ -316,7 +316,6 @@
\enforced\instance\def\LuaTeX {LuaTeX}%
\enforced\instance\def\LuajitTeX {LuajitTeX}%
\enforced\instance\def\LuaMetaTeX{LuaMetaTeX}%
- %\let\wordboundary\empty % primitive so we need to promote it to frozen (orjust preroll)
\to \everysimplifycommands
\protect \endinput
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 12a02f132..b777a015c 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2022.12.09 16:31}
+\newcontextversion{2022.12.15 17:49}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index 6ff802992..882be6cc3 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2022.12.09 16:31}
+\immutable\edef\contextversion{2022.12.15 17:49}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
@@ -495,7 +495,7 @@
\loadmkxlfile{math-lop}
\loadmklxfile{math-acc}
\loadmklxfile{math-rad}
-\loadmklxfile{math-del}
+\loadmklxfile{math-dld}
\loadmkxlfile{math-inl}
\loadmkxlfile{math-dis}
%loadmkxlfile{math-lan}
diff --git a/tex/context/base/mkxl/core-con.mkxl b/tex/context/base/mkxl/core-con.mkxl
index 9e2b05778..5a2d50493 100644
--- a/tex/context/base/mkxl/core-con.mkxl
+++ b/tex/context/base/mkxl/core-con.mkxl
@@ -19,8 +19,8 @@
\unprotect
-\ifdefined\currentlanguage \else \let\currentlanguage\empty \fi
-\ifdefined\labeltext \else \let\labeltext \firstofoneargument \fi
+\ifdefined\currentlanguage \else \lettonothing\currentlanguage \fi
+\ifdefined\labeltext \else \let\labeltext\firstofoneargument \fi
%D This module deals with all kind of conversions from numbers and dates. I
%D considered splitting this module in a support one and a core one, but to keep
@@ -973,9 +973,9 @@
%D Taken from x-asciimath (see digits-001.tex for an example):
-\mutable\let\spaceddigitsmethod \empty % alternative methods : 1 default, 2 and 3 only when > 4
-\mutable\let\spaceddigitssymbol \empty % extra splitter symbol : {,}
-\mutable\let\spaceddigitsseparator\empty % separator symbol : {\Uchar{"2008}}
+\mutable\lettonothing\spaceddigitsmethod % alternative methods : 1 default, 2 and 3 only when > 4
+\mutable\lettonothing\spaceddigitssymbol % extra splitter symbol : {,}
+\mutable\lettonothing\spaceddigitsseparator % separator symbol : {\Uchar{"2008}}
\permanent\protected\def\spaceddigits#1%
{\clf_spaceddigits
diff --git a/tex/context/base/mkxl/core-env.mkxl b/tex/context/base/mkxl/core-env.mkxl
index 77e634212..0777d2823 100644
--- a/tex/context/base/mkxl/core-env.mkxl
+++ b/tex/context/base/mkxl/core-env.mkxl
@@ -383,7 +383,7 @@
%D The next one is meant for \c!setups situations, hence the check for a
%D shortcut.
-\let\m_syst_setups_asked\empty
+\lettonothing\m_syst_setups_asked
\permanent\protected\def\doprocesslocalsetups#1% sort of public, fast local variant
{\edef\m_syst_setups_asked{#1}%
@@ -623,7 +623,7 @@
\permanent\protected\def\setgvariables{\syst_variables_set[\getrawgparameters]}
\permanent\protected\def\setxvariables{\syst_variables_set[\getrawxparameters]}
-\mutable\let\currentvariableclass\empty
+\mutable\lettonothing\currentvariableclass
\tolerant\def\syst_variables_set[#1]#*[#2]#*[#3]% tricky, test on s-pre-60
{\doifelse{#2}\currentvariableclass
@@ -643,14 +643,12 @@
\permanent \def\getvariable #1#2{\begincsname\??variables#1:#2\endcsname}
\permanent\protected\def\showvariable#1#2{\showvalue{\begincsname\??variables#1:#2\endcsname}}
-\let\currentvariableclass\empty
-
%D \macros
%D {checkvariables}
%D
%D I'll probably forget that this on exists.
-\let\m_syst_variables_temp\empty
+\lettonothing\m_syst_variables_temp
\permanent\tolerant\def\checkvariables[#1]#*[#2]%
{\dogetparameters\syst_variables_check_value[#1][#2]}
diff --git a/tex/context/base/mkxl/core-ini.mkxl b/tex/context/base/mkxl/core-ini.mkxl
index 41c73b903..4e4c696a7 100644
--- a/tex/context/base/mkxl/core-ini.mkxl
+++ b/tex/context/base/mkxl/core-ini.mkxl
@@ -220,6 +220,7 @@
\let\setlayoutcomponentattribute \gobbleoneargument
\let\resetlayoutcomponentattribute\relax
-\let\layoutcomponentboxattribute \empty
+
+\lettonothing\layoutcomponentboxattribute
\protect \endinput
diff --git a/tex/context/base/mkxl/core-sys.mkxl b/tex/context/base/mkxl/core-sys.mkxl
index b8bd7905e..a928508bb 100644
--- a/tex/context/base/mkxl/core-sys.mkxl
+++ b/tex/context/base/mkxl/core-sys.mkxl
@@ -90,7 +90,7 @@
\permanent\protected\def\setjobfullname#1% #1 = default if not given
{\doifelsenothing\jobfilename
- {\let\jobfullname\empty}
+ {\lettonothing\jobfullname}
{\doif\jobfilesuffix\c!tex{\edef\jobfullname{\jobfilename.#1}}}}
%D There are a couple of system states avaiable:
diff --git a/tex/context/base/mkxl/core-two.mkxl b/tex/context/base/mkxl/core-two.mkxl
index cadd9d059..38f03c7c4 100644
--- a/tex/context/base/mkxl/core-two.mkxl
+++ b/tex/context/base/mkxl/core-two.mkxl
@@ -82,8 +82,9 @@
\setfalse\twopassdatafound
-\mutable\let\twopassdata \empty
-\mutable\let\twopassdatalist\empty
+\mutable\lettonothing\twopassdata
+\mutable\lettonothing\twopassdatalist
+
\mutable\let\noftwopassitems\!!zeropoint
\def\syst_twopass_check % can be delegated to lua once obsolete is gone
diff --git a/tex/context/base/mkxl/file-ini.mklx b/tex/context/base/mkxl/file-ini.mklx
index 35a49c72d..8febbdea1 100644
--- a/tex/context/base/mkxl/file-ini.mklx
+++ b/tex/context/base/mkxl/file-ini.mklx
@@ -182,11 +182,12 @@
\newconstant\splitoffkind
\mutable\def\splitoffroot{.}
-\mutable\let\splitofffull\empty
-\mutable\let\splitoffpath\empty
-\mutable\let\splitoffbase\empty
-\mutable\let\splitoffname\empty
-\mutable\let\splitofftype\empty
+
+\mutable\lettonothing\splitofffull
+\mutable\lettonothing\splitoffpath
+\mutable\lettonothing\splitoffbase
+\mutable\lettonothing\splitoffname
+\mutable\lettonothing\splitofftype
\permanent\protected\def\splitfilename{\clf_splitfilename}
diff --git a/tex/context/base/mkxl/file-job.mklx b/tex/context/base/mkxl/file-job.mklx
index 58c6aa3d5..8f6c0aa56 100644
--- a/tex/context/base/mkxl/file-job.mklx
+++ b/tex/context/base/mkxl/file-job.mklx
@@ -46,7 +46,7 @@
% helper (not really needed nowadays)
-\mutable\let\locatedfilepath\empty
+\mutable\lettonothing\locatedfilepath
\permanent\protected\def\locatefilepath#name%
{\edef\locatedfilepath{\clf_locatefilepath{#name}}} % todo: set at the lua end, catcodes and such
@@ -289,7 +289,7 @@
\ifparameters
\or
\ifhastok={#namespace}%
- \let\currentdocument\empty
+ \lettonothing\currentdocument
\setupcurrentdocument[#namespace]%
\else
\edef\currentdocument{#namespace}%
@@ -324,7 +324,7 @@
\ifparameters
\or
\ifhastok={#namespace}%
- \let\currentdocument\empty
+ \lettonothing\currentdocument
\setupcurrentdocument[#namespace]%
\fi
\or
diff --git a/tex/context/base/mkxl/file-mod.mklx b/tex/context/base/mkxl/file-mod.mklx
index 56e12f72a..c0059bf94 100644
--- a/tex/context/base/mkxl/file-mod.mklx
+++ b/tex/context/base/mkxl/file-mod.mklx
@@ -40,9 +40,10 @@
\installcorenamespace{module}
-\mutable\let\currentmodule \s!unknown
-\mutable\let\currentmodulecategory \empty
-\mutable\let\currentmoduleparameters\empty
+\mutable\let\currentmodule\s!unknown
+
+\mutable\lettonothing\currentmodulecategory
+\mutable\lettonothing\currentmoduleparameters
\installmacrostack\currentmodule
\installmacrostack\currentmodulecategory
@@ -53,21 +54,20 @@
\push_macro_currentmodulecategory
\push_macro_currentmoduleparameters
\ifparameters
- \let\currentmodule\empty
+ \lettonothing\currentmodule
\or
- \let \currentmodulecategory \empty
- \edef\currentmodule {#category}%
- \let \currentmoduleparameters\empty
+ \lettonothing\currentmodulecategory
+ \edef\currentmodule{#category}%
+ \lettonothing\currentmoduleparameters
\or
\ifhastok={#name}%
- \let\currentmodulecategory \empty
- \edef\currentmodule {#category}%
+ \lettonothing\currentmodulecategory
+ \edef\currentmodule{#category}%
\edef\currentmoduleparameters{#name}%
\else
- \edef\currentmodulecategory {#category}%
- \edef\currentmodulecategory {#category}%
- \edef\currentmodule {#name}%
- \let \currentmoduleparameters\empty
+ \edef\currentmodulecategory{#category}%
+ \edef\currentmodule{#name}%
+ \lettonothing\currentmoduleparameters
\fi
\or
\edef\currentmodulecategory {#category}%
@@ -139,7 +139,7 @@
\getparameters[\??module#name:][#parameters]% internal (defaults)
\normalexpanded{\getparameters[\??module#name:][\the\scratchtoks]}% loadtime (user)
\fi
- \let\currentmoduleparameters\empty
+ \lettonothing\currentmoduleparameters
\the\everysetupmodule}
\permanent\def\moduleparameter#name#parameter% should have been \namedmoduleparameter
diff --git a/tex/context/base/mkxl/file-res.mklx b/tex/context/base/mkxl/file-res.mklx
index a123b5e22..a62408921 100644
--- a/tex/context/base/mkxl/file-res.mklx
+++ b/tex/context/base/mkxl/file-res.mklx
@@ -62,7 +62,7 @@
%D to redefine the original \type {\input} when needed, for instance when loading
%D third party libraries.
-\mutable\let\readfilename\empty
+\mutable\lettonothing\readfilename
\def\syst_files_read_file#protocol#path#name% #true #false
{\edef\readfilename{\clf_getreadfilename{#protocol}{#path}{#name}}%
diff --git a/tex/context/base/mkxl/font-col.mklx b/tex/context/base/mkxl/font-col.mklx
index bd099bbe9..03515201f 100644
--- a/tex/context/base/mkxl/font-col.mklx
+++ b/tex/context/base/mkxl/font-col.mklx
@@ -34,7 +34,7 @@
\permanent\tolerant\protected\def\definefontfallback[#name]#spacer[#font]#spacer[#ranges]#spacer[#settings]%
{\let\mathsizesuffix\relax
\clf_fontcollectiondefine{#name}{#font}{#ranges}{#settings}%
- \let\mathsizesuffix\empty}
+ \lettonothing\mathsizesuffix}
\permanent\tolerant\protected\def\resetfontfallback[#name]#spacer[#font]%
{\clf_fontcollectionreset{#name}{#font}}
@@ -54,7 +54,7 @@
\font_fallbacks_prepare#fallbacks%
\endgroup}
-\let\m_font_fallbacks\empty % set in the font-ini
+\lettonothing\m_font_fallbacks % set in the font-ini
\appendtoks
\ifconditional\c_font_fallbacks_in_progress\else
@@ -68,7 +68,7 @@
\fi
\to\everydefinefont
-\let\m_font_fallbacks_spec\empty
+\lettonothing\m_font_fallbacks_spec
\def\font_fallbacks_start_cloning
{\begingroup
diff --git a/tex/context/base/mkxl/font-emp.mklx b/tex/context/base/mkxl/font-emp.mklx
index e99f74afd..dfb97426c 100644
--- a/tex/context/base/mkxl/font-emp.mklx
+++ b/tex/context/base/mkxl/font-emp.mklx
@@ -38,7 +38,7 @@
%D
%D or even better:
-\let\m_font_emphasized_typeface\empty
+\lettonothing\m_font_emphasized_typeface
\def\font_emphasis_checked_typeface#slanted#italic%
{\edef\m_font_emphasized_typeface{\font_bodyfontvariable\s!em}%
diff --git a/tex/context/base/mkxl/font-fea.mklx b/tex/context/base/mkxl/font-fea.mklx
index 9f4d2119e..3e6a4b2eb 100644
--- a/tex/context/base/mkxl/font-fea.mklx
+++ b/tex/context/base/mkxl/font-fea.mklx
@@ -136,12 +136,10 @@
% beware: these are global features on top of existing font features
-\mutable\let\currentfeature\s!current
-
-\let\m_font_feature_list \s!current
-\let\m_font_feature_asked\empty
-
-\newconstant\c_font_feature_state
+\mutable\let \currentfeature \s!current
+\let \m_font_feature_list \s!current
+\lettonothing\m_font_feature_asked
+\newconstant \c_font_feature_state
\newevery\everyfontfeatureswitch
@@ -193,7 +191,7 @@
\the\everyfontfeatureswitch}
\protected\def\font_feature_replace
- {\ifnum\c_font_feature_state=\zerocount
+ {\ifzero\c_font_feature_state
\ifx\m_font_feature_asked\currentfeature\else
\font_feature_replace_indeed
\fi
@@ -214,9 +212,9 @@
\fi}
\protected\def\font_feature_reset_indeed
- {\let\m_font_feature_asked\empty
- \let\currentfeature \s!current
- \let\m_font_feature_list \s!current
+ {\lettonothing\m_font_feature_asked
+ \let\currentfeature\s!current
+ \let\m_font_feature_list\s!current
\clf_resetfeature}
\permanent\protected\def\revivefeature
diff --git a/tex/context/base/mkxl/font-fil.mklx b/tex/context/base/mkxl/font-fil.mklx
index b71f8df69..79535ea11 100644
--- a/tex/context/base/mkxl/font-fil.mklx
+++ b/tex/context/base/mkxl/font-fil.mklx
@@ -44,7 +44,7 @@
\permanent\protected\tolerant\protected\def\startfontclass[#class]%
{\push_macro_fontclass
\doifelse{#class}\v!each
- {\let\fontclass\empty}
+ {\lettonothing\fontclass}
{\doifsomething{#class}{\def\fontclass{#class}}}}
\permanent\protected\def\stopfontclass
@@ -65,8 +65,8 @@
\installcorenamespace {fontfile} % file synonyms
-\let\m_font_name\empty
-\let\m_font_file\empty
+\lettonothing\m_font_name
+\lettonothing\m_font_file
\mutable\def\defaultfontfile{\truefontname{Normal}} % was cmtt10, but that one is gone
@@ -141,7 +141,7 @@
% \def\fntsetdefname {\glet\somefontname\defaultfontfile}
% \def\fntsetsomename{\gdef\somefontname} % takes argument
-% \def\fntsetnopsize {\let\somefontsize\empty}
+% \def\fntsetnopsize {\lettonothing\somefontsize}
% \def\fntsetsomesize{\def\somefontsize} % takes argument
% happens later, else mkvi parsing gets into troubles
@@ -272,8 +272,8 @@
%D model and at that time we still defaulted to no model at all. Nowadays we default
%D to the \type {modern} fontclass.
-\let\fontclass \empty
-\let\defaultfontclass\empty
+\lettonothing\fontclass
+\lettonothing\defaultfontclass
\permanent\def\fontclassname#class#name% tricky ... no lastnamedcs here due to nesting
{\ifcsname\??fontfile#class#name\endcsname
@@ -307,48 +307,48 @@
\ifcsname\??fontfile #name\s!features\endcsname \edef\m_font_features{\lastnamedcs}\orelse % symbolic_name
\ifcsname\??fontfile\fontclass#name\endcsname \expandafter\font_helpers_set_features_yes\lastnamedcs \orelse % class + parent_name
\ifcsname\??fontfile #name\endcsname \expandafter\font_helpers_set_features_yes\lastnamedcs \else % parent_name
- \let\m_font_features\empty\fi}
+ \lettonothing\m_font_features\fi}
\def\font_helpers_set_fallbacks_yes#name%
{\ifcsname\??fontfile\fontclass#name\s!fallbacks\endcsname \edef\m_font_fallbacks{\lastnamedcs}\orelse
\ifcsname\??fontfile #name\s!fallbacks\endcsname \edef\m_font_fallbacks{\lastnamedcs}\orelse
\ifcsname\??fontfile\fontclass#name\endcsname \expandafter\font_helpers_set_fallbacks_yes\lastnamedcs \orelse
\ifcsname\??fontfile #name\endcsname \expandafter\font_helpers_set_fallbacks_yes\lastnamedcs \else
- \let\m_font_fallbacks\empty\fi}
+ \lettonothing\m_font_fallbacks\fi}
\def\font_helpers_set_goodies_yes#name%
{\ifcsname\??fontfile\fontclass#name\s!goodies \endcsname \edef\m_font_goodies{\lastnamedcs}\orelse
\ifcsname\??fontfile #name\s!goodies \endcsname \edef\m_font_goodies{\lastnamedcs}\orelse
\ifcsname\??fontfile\fontclass#name\endcsname \expandafter\font_helpers_set_goodies_yes\lastnamedcs \orelse
\ifcsname\??fontfile #name\endcsname \expandafter\font_helpers_set_goodies_yes\lastnamedcs \else
- \let\m_font_goodies\empty\fi}
+ \lettonothing\m_font_goodies\fi}
\def\font_helpers_set_designsize_yes#name%
{\ifcsname\??fontfile\fontclass#name\s!designsize\endcsname \edef\m_font_designsize{\lastnamedcs}\orelse
\ifcsname\??fontfile #name\s!designsize\endcsname \edef\m_font_designsize{\lastnamedcs}\orelse
\ifcsname\??fontfile\fontclass#name\endcsname \expandafter\font_helpers_set_designsize_yes\lastnamedcs \orelse
\ifcsname\??fontfile #name\endcsname \expandafter\font_helpers_set_designsize_yes\lastnamedcs \else
- \let\m_font_designsize\empty\fi}
+ \lettonothing\m_font_designsize\fi}
\def\font_helpers_set_features_nop#name%
{\ifcsname\??fontfile#name\s!features\endcsname \edef\m_font_features{\lastnamedcs}\orelse
\ifcsname\??fontfile#name\endcsname \expandafter\font_helpers_set_features_nop\lastnamedcs \else
- \let\m_font_features\empty\fi}
+ \lettonothing\m_font_features\fi}
\def\font_helpers_set_fallbacks_nop#name%
{\ifcsname\??fontfile#name\s!fallbacks\endcsname \edef\m_font_fallbacks{\lastnamedcs}\orelse
\ifcsname\??fontfile#name\endcsname \expandafter\font_helpers_set_fallbacks_nop\lastnamedcs \else
- \let\m_font_fallbacks\empty\fi}
+ \lettonothing\m_font_fallbacks\fi}
\def\font_helpers_set_goodies_nop#name%
{\ifcsname\??fontfile#name\s!goodies\endcsname \edef\m_font_goodies{\lastnamedcs}\orelse
\ifcsname\??fontfile#name\endcsname \expandafter\font_helpers_set_goodies_nop\lastnamedcs \else
- \let\m_font_goodies\empty\fi}
+ \lettonothing\m_font_goodies\fi}
\def\font_helpers_set_designsize_nop#name%
{\ifcsname\??fontfile#name\s!designsize\endcsname \edef\m_font_designsize{\lastnamedcs}\orelse
\ifcsname\??fontfile#name\endcsname \expandafter\font_helpers_set_designsize_nop\lastnamedcs \else
- \let\m_font_designsize\empty\fi}
+ \lettonothing\m_font_designsize\fi}
\def\font_helpers_update_font_parameters_yes
{\font_helpers_set_features_yes \somefontname
diff --git a/tex/context/base/mkxl/font-ini.mklx b/tex/context/base/mkxl/font-ini.mklx
index 5e521e263..f1691c8eb 100644
--- a/tex/context/base/mkxl/font-ini.mklx
+++ b/tex/context/base/mkxl/font-ini.mklx
@@ -333,7 +333,7 @@
\the\everybodyfont
\settrue\c_font_synchronize}
-\mutable\let\savedfont\empty
+\mutable\lettonothing\savedfont
\installmacrostack\savedfont
@@ -712,8 +712,9 @@
\mutable\let\somefontspec \s!unknown
\mutable\let\somefontfile \s!unknown
\mutable\let\somefontsize \zerocount
-\mutable\let\somefontsizex\empty
-\mutable\let\somefontsizey\empty
+
+\mutable\lettonothing\somefontsizex
+\mutable\lettonothing\somefontsizey
% \newcount\scaledfontmode % font-lib.mklx
% \newcount\scaledfontsize % font-lib.mklx
@@ -747,7 +748,8 @@
% \newcount\c_font_scaled_font_mode_saved % font-lib.mklx
% \newcount\c_font_scaled_points % font-lib.mklx
-\mutable\let\somefontspec \empty
+\mutable\lettonothing\somefontspec
+
\mutable\let\lastrawfontcall \relax
\mutable\let\lastglobalrawfontcall\relax
@@ -763,9 +765,9 @@
\protected\def\font_helpers_low_level_define_normal#specification#csname%
{% we can now set more at the lua end
\glet\somefontname\defaultfontfile
- \let\somefontsize\empty
- \let\somefontsizex\empty
- \let\somefontsizey\empty
+ \lettonothing\somefontsize
+ \lettonothing\somefontsizex
+ \lettonothing\somefontsizey
\clf_definefont_one{\detokenize\expandafter{\normalexpanded{#specification}}}% the escapestring catches at \somedimen
% sets \scaledfontmode and \somefontname and \somefontsize
\ifcase\fontface\relax
@@ -849,7 +851,7 @@
\relax
\ifcase\scaledfontsize
%\scaledfontsize\plusone
- \let\somefontspec\empty
+ \lettonothing\somefontspec
\let\lastrawfontcall\relax
\mutable\letcsname#csname\endcsname\relax
\else
@@ -862,9 +864,9 @@
\protected\def\font_helpers_low_level_define_compact#specification#csname%
{% we can now set more at the lua end
\glet\somefontname\defaultfontfile
- \let\somefontsize\empty
- \let\somefontsizex\empty
- \let\somefontsizey\empty
+ \lettonothing\somefontsize
+ \lettonothing\somefontsizex
+ \lettonothing\somefontsizey
\clf_definefont_one{\detokenize\expandafter{\normalexpanded{#specification}}}% the escapestring catches at \somedimen
% sets \scaledfontmode and \somefontname and \somefontsize
\ifcase\fontface\relax
@@ -961,7 +963,7 @@
\relax
\ifcase\scaledfontsize
%\scaledfontsize\plusone
- \let\somefontspec\empty
+ \lettonothing\somefontspec
\let\lastrawfontcall\relax
\mutable\letcsname#csname\endcsname\relax
\else
@@ -980,7 +982,7 @@
% experiment
\expandafter\let\expandafter\lastrawfontcall\csname#csname\endcsname
\ifrelax\lastrawfontcall
- \let\somefontspec\empty
+ \lettonothing\somefontspec
\else
%
% \ifempty\fontclass\else\global\fi
@@ -1162,7 +1164,7 @@
\newconditional\c_font_auto_size \settrue\c_font_auto_size
-\mutable\let\lastfontidentifier\empty
+\mutable\lettonothing\lastfontidentifier
\def\v_font_identifier_basic{\??fontinstancebasic \lastfontidentifier-\fontsize-\fontface}
\def\v_font_identifier_class{\??fontinstanceclass\fontclass-\lastfontidentifier-\fontsize-\fontface}
@@ -1455,13 +1457,13 @@
\def\font_basics_define_body_font_environment_empty[#body][#settings][#dummy]%
{\push_macro_fontclass
- \let\fontclass\empty
+ \lettonothing\fontclass
\font_basics_define_body_font_environment_class[][#body][#settings]%
\pop_macro_fontclass}
\def\font_basics_define_body_font_environment_unset[#body][#dummya][#dummyb]%
{\push_macro_fontclass
- \let\fontclass\empty
+ \lettonothing\fontclass
\font_basics_define_body_font_environment_class[][#body][]%
\pop_macro_fontclass}
@@ -1604,7 +1606,7 @@
\protected\def\font_basics_define_body_font_class_given[#1][#2][#3]#4%
{\push_macro_fontclass
\doifelse{#4}\s!default
- {\let\fontclass\empty}
+ {\lettonothing\fontclass}
{\def\fontclass{#4}}%
\definebodyfont[#1][#2][#3]%
\pop_macro_fontclass}
@@ -1914,8 +1916,8 @@
\edef\m_font_step{\font_bodyfontvariable\m_font_keyword}%
\normalexpanded{\font_helpers_set_font_set_font_option_body{#method}{\m_font_step}{#message}}%
\orelse\ifx\m_font_keyword\v!reset
- \let\fontstyle\empty % new 31/7/2006
- \let\fontsize \empty
+ \lettonothing\fontstyle % new 31/7/2006
+ \lettonothing\fontsize
\orelse\ifcsname\??fontstyle\m_font_keyword\endcsname
\let\fontstyle\m_font_keyword
\else
@@ -1965,11 +1967,6 @@
\fi
-% \let\defaultfontstyle \s!rm
-% \let\defaultfontalternative\s!tf
-% \let\defaultfontsize \empty
-% \let\defaultfontface \!!zerocount
-
%D So far for synchronisation. (We can inline the following macros.)
\permanent\protected\def\setcurrentfont#body#style#alternative#size% not used
@@ -2192,8 +2189,8 @@
{\font_helpers_check_nested_x_fontsize
\font_helpers_set_current_font_xxx_alternative{#alternative}{5}\scriptscriptstyle
\currentxfontsize\plustwo
- \enforced\let\tx\empty
- \enforced\let\txx\empty}
+ \enforced\lettonothing\tx
+ \enforced\lettonothing\txx}
%D This alternative is not really needed, but for old time's sake we keep it there.
%D We can speed it up when needed.
@@ -2369,8 +2366,8 @@
\else
\font_scale_defined_xx
\fi
- \enforced\let\tx \empty
- \enforced\let\txx\empty}
+ \enforced\lettonothing\tx
+ \enforced\lettonothing\txx}
\permanent\protected\def\sx
{\currentxfontsize\plusone
@@ -2397,10 +2394,10 @@
\font_scale_inherit_normal_xx
\fi
\fi
- \enforced\let\tx \empty
- \enforced\let\txx\empty
- \enforced\let\sx \empty
- \enforced\let\sxx\empty}
+ \enforced\lettonothing\tx
+ \enforced\lettonothing\txx
+ \enforced\lettonothing\sx
+ \enforced\lettonothing\sxx}
\permanent\protected\def\useinheritxsizes{\settrue \c_font_inherit_scale} % not yet public, playground for WS and me
\permanent\protected\def\usedefinedxsizes{\setfalse\c_font_inherit_scale} % not yet public, playground for WS and me
diff --git a/tex/context/base/mkxl/font-mat.mklx b/tex/context/base/mkxl/font-mat.mklx
index 39ed13069..e7a7574a3 100644
--- a/tex/context/base/mkxl/font-mat.mklx
+++ b/tex/context/base/mkxl/font-mat.mklx
@@ -121,7 +121,7 @@
\settrue \c_font_auto_size
\fi}
-\mutable\let\mathsizesuffix\empty
+\mutable\lettonothing\mathsizesuffix
\mutable\let\fontfamily\relax % for now public but it is a helper
@@ -134,16 +134,20 @@
% the order is important as we depend on known id's when completing fonts
% enabling is needed when we have fallbacks which spoils the families; per
% mid 2022 this is no longer true as we do fallbacks differently
- \let\mathsizesuffix\mathscriptscriptsuffix\let\fontface\!!plusthree
+ \let\mathsizesuffix\mathscriptscriptsuffix
+ \let\fontface\!!plusthree
\font_helpers_set_math_family_a\scriptscriptfont#mrtag\font % defines
\font_helpers_set_math_family_a\scriptscriptfont#mrtag\font % enables / still needed ?
- \let\mathsizesuffix\mathscriptsuffix \let\fontface\!!plustwo
+ \let\mathsizesuffix\mathscriptsuffix
+ \let\fontface\!!plustwo
\font_helpers_set_math_family_a\scriptfont #mrtag\font % defines
\font_helpers_set_math_family_a\scriptfont #mrtag\font % enables / still needed ?
- \let\mathsizesuffix\mathtextsuffix \let\fontface\!!plusone
+ \let\mathsizesuffix\mathtextsuffix
+ \let\fontface\!!plusone
\font_helpers_set_math_family_a\textfont #mrtag\font % defines
\font_helpers_set_math_family_a\textfont #mrtag\font % enables / still needed ?
- \let\mathsizesuffix\empty \let\fontface\!!zerocount
+ \lettonothing\mathsizesuffix
+ \let\fontface\!!zerocount
\let\fontbody\savedfontbody
\setfalse\c_font_auto_size}
@@ -166,12 +170,14 @@
\font_helpers_set_math_family_set_scales_compact
% the order is important as we depend on known id's when completing fonts
% enabling is needed when we have fallbacks which spoils the families
- \let\mathsizesuffix\mathtextsuffix \let\fontface\!!plusone
+ \let\mathsizesuffix\mathtextsuffix
+ \let\fontface\!!plusone
\font_helpers_set_math_family_a\textfont #mrtag\font % defines
\font_helpers_set_math_family_a\textfont #mrtag\font % enables / still needed ?
\scriptfont #mrtag\font % reuses
\scriptscriptfont#mrtag\font % reuses
- \let\mathsizesuffix\empty \let\fontface\!!zerocount
+ \lettonothing\mathsizesuffix
+ \let\fontface\!!zerocount
\let\fontbody\savedfontbody
\setfalse\c_font_auto_size}
@@ -189,16 +195,20 @@
\let\fontfamily#familytag%
\c_math_last_family_used\zerocount
\font_helpers_set_math_family_set_scales_normal
- \let\mathsizesuffix\mathscriptscriptsuffix\let\fontface\!!plusthree
+ \let\mathsizesuffix\mathscriptscriptsuffix
+ \let\fontface\!!plusthree
\font_helpers_set_math_family_bold_a\scriptscriptfont#mbfam#mrfam% defines
\font_helpers_set_math_family_bold_a\scriptscriptfont#mbfam#mrfam% enables / still needed ?
- \let\mathsizesuffix\mathscriptsuffix \let\fontface\!!plustwo
+ \let\mathsizesuffix\mathscriptsuffix
+ \let\fontface\!!plustwo
\font_helpers_set_math_family_bold_a\scriptfont #mbfam#mrfam% defines
\font_helpers_set_math_family_bold_a\scriptfont #mbfam#mrfam% enables / still needed ?
- \let\mathsizesuffix\mathtextsuffix \let\fontface\!!plusone
+ \let\mathsizesuffix\mathtextsuffix
+ \let\fontface\!!plusone
\font_helpers_set_math_family_bold_a\textfont #mbfam#mrfam% defines
\font_helpers_set_math_family_bold_a\textfont #mbfam#mrfam% enables / still needed ?
- \let\mathsizesuffix\empty \let\fontface\!!zerocount
+ \lettonothing\mathsizesuffix
+ \let\fontface\!!zerocount
\let\fontbody\savedfontbody
\let\defaultfontclass\savedfontclass
\setfalse\c_font_auto_size}
@@ -209,12 +219,14 @@
\let\savedfontbody\fontbody
\let\fontfamily#familytag%
\c_math_last_family_used\zerocount
- \let\mathsizesuffix\mathtextsuffix \let\fontface\!!plusone
+ \let\mathsizesuffix\mathtextsuffix
+ \let\fontface\!!plusone
\font_helpers_set_math_family_bold_a\textfont #mbfam#mrfam% defines
\font_helpers_set_math_family_bold_a\textfont #mbfam#mrfam% enables / still needed ?
\scriptfont #mbfam\textfont#mbfam% reuses
\scriptscriptfont#mbfam\textfont#mbfam% reuses
- \let\mathsizesuffix\empty \let\fontface\!!zerocount
+ \lettonothing\mathsizesuffix
+ \let\fontface\!!zerocount
\let\fontbody\savedfontbody
\let\defaultfontclass\savedfontclass
\setfalse\c_font_auto_size}
@@ -325,15 +337,15 @@
%D 0 while in rl mode 0 is a copy of 1. There is no real overhead involved in this.
%D This also permits different font definitions for normal and mixed.
-\let\m_font_class_direction\empty
-\let\m_font_class_features \empty
-\let\m_font_class_fallbacks\empty
-\let\m_font_class_goodies \empty
+\lettonothing\m_font_class_direction
+\lettonothing\m_font_class_features
+\lettonothing\m_font_class_fallbacks
+\lettonothing\m_font_class_goodies
-\let\m_font_direction\empty
-\let\m_font_features \empty
-\let\m_font_fallbacks\empty
-\let\m_font_goodies \empty
+\lettonothing\m_font_direction
+\lettonothing\m_font_features
+\lettonothing\m_font_fallbacks
+\lettonothing\m_font_goodies
\appendtoks
\font_helpers_set_math_family\c_font_fam_mr\s!mr
@@ -474,7 +486,7 @@
\permanent\protected\def\autobigmath{\synchronizebigmathflag\plusone\synchronizebigmath}
\permanent\protected\def\bigmath {\synchronizebigmathflag\plustwo\synchronizebigmath}
-\mutable\let\bigmathfontsize\empty
+\mutable\lettonothing\bigmathfontsize
\permanent\protected\def\synchronizebigmath
{\ifconditional\c_font_compact
diff --git a/tex/context/base/mkxl/font-sel.mklx b/tex/context/base/mkxl/font-sel.mklx
index a25b7fab7..9e5c53894 100644
--- a/tex/context/base/mkxl/font-sel.mklx
+++ b/tex/context/base/mkxl/font-sel.mklx
@@ -269,7 +269,7 @@
\edef\currentselectfont{\expandnamespacevalue\??fontshortstyle{#style}\s!rm}%
\setupcurrentselectfont[#settings]%
\else
- \let\currentselectfont\empty
+ \lettonothing\currentselectfont
\setupcurrentselectfont[#style]%
\fi}
diff --git a/tex/context/base/mkxl/font-set.mklx b/tex/context/base/mkxl/font-set.mklx
index 631c4af05..421217c8b 100644
--- a/tex/context/base/mkxl/font-set.mklx
+++ b/tex/context/base/mkxl/font-set.mklx
@@ -34,7 +34,7 @@
% \enablemode[lmmath]
-\let\m_font_fallback_name\empty
+\lettonothing\m_font_fallback_name
% keep as reference:
%
diff --git a/tex/context/base/mkxl/font-sol.mklx b/tex/context/base/mkxl/font-sol.mklx
index 8f3d3d712..064f39b9d 100644
--- a/tex/context/base/mkxl/font-sol.mklx
+++ b/tex/context/base/mkxl/font-sol.mklx
@@ -107,11 +107,11 @@
}%
\relax}
-\let\currentfontsolution\empty
+\lettonothing\currentfontsolution
\permanent\protected\def\resetfontsolution % resets all
{\clf_resetfontsolution
- \let\currentfontsolution\empty}
+ \lettonothing\currentfontsolution}
\permanent\protected\def\startfontsolution % [#1]
{\pushmacro\currentfontsolution
diff --git a/tex/context/base/mkxl/font-sty.mklx b/tex/context/base/mkxl/font-sty.mklx
index 5391f39b6..49fa52d38 100644
--- a/tex/context/base/mkxl/font-sty.mklx
+++ b/tex/context/base/mkxl/font-sty.mklx
@@ -142,8 +142,8 @@
%D These commands are not grouped! Grouping is most probably done by the calling
%D macro's and would lead to unnecessary overhead.
-\let\m_current_convert_font \empty
-\let\m_current_convert_font_dt\empty
+\lettonothing\m_current_convert_font
+\lettonothing\m_current_convert_font_dt
\permanent\protected\def\doconvertfont#specification% takes second argument / this command is obsolete
{\edef\m_current_convert_font{#specification}%
@@ -180,7 +180,7 @@
\setfalse\fontattributeisset
-\mutable\let\currentdetokenizedstyleparameter\empty
+\mutable\lettonothing\currentdetokenizedstyleparameter
\permanent\protected\def\dousestyleparameter#value%
{\edef\currentstyleparameter{#value}%
@@ -259,8 +259,8 @@
\protected\def\font_styles_use_generic#specification%
{\let\currentstyle\s!unknown % reasonable generic tag
- \letstyleparameter\c!style\empty
- \letstyleparameter\c!color\empty
+ \resetstyleparameter\c!style
+ \resetstyleparameter\c!color
\setupcurrentstyle[#specification]%
\usestylestyleandcolor\c!style\c!color}
diff --git a/tex/context/base/mkxl/font-sym.mklx b/tex/context/base/mkxl/font-sym.mklx
index e1de316ef..83b3447ea 100644
--- a/tex/context/base/mkxl/font-sym.mklx
+++ b/tex/context/base/mkxl/font-sym.mklx
@@ -129,9 +129,9 @@
\installcorenamespace{symbolfont}
-\mutable\let\skedsymbolfont \empty % for diagnostics
-\mutable\let\currentsymbolfont\empty
-\mutable\let\askedsymbolfont \empty
+\mutable\lettonothing\skedsymbolfont % for diagnostics
+\mutable\lettonothing\currentsymbolfont
+\mutable\lettonothing\askedsymbolfont
\permanent\protected\def\setscaledstyledsymbolicfont#1#2#3% quite a slowdown, glyphfontfile
{\edef\askedsymbolfont{\truefontname{\glyphfontfile{#3}} at \the\dimexpr#2\dimexpr\currentfontbodyscale\dimexpr#1}%
diff --git a/tex/context/base/mkxl/font-var.mklx b/tex/context/base/mkxl/font-var.mklx
index 421521f50..aeec18054 100644
--- a/tex/context/base/mkxl/font-var.mklx
+++ b/tex/context/base/mkxl/font-var.mklx
@@ -38,17 +38,19 @@
\immutable\def\defaultfontbody {\normalizedbodyfontsize}
\immutable\let\defaultfontstyle \s!rm
\immutable\let\defaultfontalternative\s!tf
-\immutable\let\defaultfontsize \empty
\immutable\let\defaultfontface \!!zerocount
-\mutable\let\globalfontclass\empty
-\mutable\let\fontclass \empty
+\immutable\lettonothing\defaultfontsize
+
\mutable\let\fontbody \defaultfontbody
\mutable\let\fontstyle \defaultfontstyle
\mutable\let\fontalternative\defaultfontalternative
\mutable\let\fontsize \defaultfontsize
\mutable\let\fontface \!!zerocount
+\mutable\lettonothing\globalfontclass
+\mutable\lettonothing\fontclass
+
\installmacrostack\fontstyle
% we can use an indirect mapping for fontclasses (map string onto numbers) and indeed this
diff --git a/tex/context/base/mkxl/grph-epd.mkxl b/tex/context/base/mkxl/grph-epd.mkxl
index c8e5cd1c8..a26ee3235 100644
--- a/tex/context/base/mkxl/grph-epd.mkxl
+++ b/tex/context/base/mkxl/grph-epd.mkxl
@@ -19,7 +19,7 @@
% hm, this one is globally overloaded
-\mutable\let\mergedfigurereference\empty
+\mutable\lettonothing\mergedfigurereference
\defineoverlay[system:graphics:epdf][\directsetup{system:graphics:epdf}]
diff --git a/tex/context/base/mkxl/grph-fig.mkxl b/tex/context/base/mkxl/grph-fig.mkxl
index dc709c477..0d4462730 100644
--- a/tex/context/base/mkxl/grph-fig.mkxl
+++ b/tex/context/base/mkxl/grph-fig.mkxl
@@ -31,7 +31,7 @@
\newconstant\c_grph_buffers_mode
-\mutable\let\lasttypesetbuffer\empty
+\mutable\lettonothing\lasttypesetbuffer
\permanent\protected\def\typesetbuffer {\bgroup\setconstant\c_grph_buffers_mode\plusone \grph_buffers_typeset}
\permanent\protected\def\typesetbufferonly{\bgroup\setconstant\c_grph_buffers_mode\zerocount\grph_buffers_typeset}
diff --git a/tex/context/base/mkxl/grph-inc.mkxl b/tex/context/base/mkxl/grph-inc.mkxl
index 29efe620f..19cce3511 100644
--- a/tex/context/base/mkxl/grph-inc.mkxl
+++ b/tex/context/base/mkxl/grph-inc.mkxl
@@ -806,7 +806,7 @@
\ifdim\scratchdimen<\d_grph_include_collection_minheight \d_grph_include_collection_minheight\scratchdimen \fi
\fi}
-\mutable\let\currentexternalfigurecollection\empty
+\mutable\lettonothing\currentexternalfigurecollection
\permanent\protected\def\startexternalfigurecollection[#1]%
{\begingroup
diff --git a/tex/context/base/mkxl/grph-trf.mkxl b/tex/context/base/mkxl/grph-trf.mkxl
index 0f1458873..639eacbbc 100644
--- a/tex/context/base/mkxl/grph-trf.mkxl
+++ b/tex/context/base/mkxl/grph-trf.mkxl
@@ -61,9 +61,9 @@
% scratch:
-\let\m_grph_scale_temp \empty
-\let\m_grph_scale_temp_x\empty
-\let\m_grph_scale_temp_y\empty
+\lettonothing\m_grph_scale_temp
+\lettonothing\m_grph_scale_temp_x
+\lettonothing\m_grph_scale_temp_y
% public:
@@ -104,10 +104,10 @@
{\bgroup
% this is quite common so we might make this a helper
\ifarguments
- \let\currentscale\empty
+ \lettonothing\currentscale
\or
\ifhastok={#1}%
- \let\currentscale\empty
+ \lettonothing\currentscale
\setupcurrentscale[#1]%
\else
\edef\currentscale{#1}%
@@ -795,8 +795,8 @@
\c!offset=\v!overlay,
\c!frame=\v!off]
-\let\p_rotation_location\empty
-\let\p_rotation_rotation\empty
+\lettonothing\p_rotation_location
+\lettonothing\p_rotation_rotation
\permanent\tolerant\protected\def\rotate[#1]% \bgroup: \rotate kan argument zijn
{\bgroup
diff --git a/tex/context/base/mkxl/hand-ini.mkxl b/tex/context/base/mkxl/hand-ini.mkxl
index 1d4dabf6b..3a4193f1a 100644
--- a/tex/context/base/mkxl/hand-ini.mkxl
+++ b/tex/context/base/mkxl/hand-ini.mkxl
@@ -73,7 +73,7 @@
% \def\fonthandlingerror{\writestatus\m!fonts{font handling is replaced by features in mkiv}}
%
-% \let\fonthandling\empty
+% \lettonothing\fonthandling
%
% \protected\def\startfonthandling #1{\fonthandlingerror\fonthandlingerror\gobbleuntil\stopfonthandling} % can't happen
% \protected\def\definefonthandling {\dotripleempty\dodefinefonthandling}
diff --git a/tex/context/base/mkxl/lang-hyp.mkxl b/tex/context/base/mkxl/lang-hyp.mkxl
index ae8b84dcb..25699696e 100644
--- a/tex/context/base/mkxl/lang-hyp.mkxl
+++ b/tex/context/base/mkxl/lang-hyp.mkxl
@@ -107,19 +107,19 @@
% [\c!method=\s!traditional] % no translations
\permanent\tolerant\protected\def\definehyphenationfeatures[#1]#*[#2]%
- {\begingroup
- \letdummyparameter\c!characters \empty % maybe \s!characters
- \letdummyparameter\c!hyphens \empty % maybe \s!hyphens
- \letdummyparameter\c!joiners \empty % maybe \s!joiners
- \letdummyparameter\c!rightwords \zerocount % maybe \s!rightwords
- \letdummyparameter\s!lefthyphenmin \zerocount
- \letdummyparameter\s!righthyphenmin \zerocount
- \letdummyparameter\s!hyphenmin \zerocount
- \letdummyparameter\s!lefthyphenchar \zerocount
- \letdummyparameter\s!righthyphenchar\zerocount
- \letdummyparameter\c!alternative \empty
- \letdummyparameter\c!rightedge \empty
- \letdummyparameter\c!rightchars \empty
+ {\begingroup % maybe simple handler
+ \resetdummyparameter\c!characters % maybe \s!characters
+ \resetdummyparameter\c!hyphens % maybe \s!hyphens
+ \resetdummyparameter\c!joiners % maybe \s!joiners
+ \letdummyparameter \c!rightwords \zerocount % maybe \s!rightwords
+ \letdummyparameter \s!lefthyphenmin \zerocount
+ \letdummyparameter \s!righthyphenmin \zerocount
+ \letdummyparameter \s!hyphenmin \zerocount
+ \letdummyparameter \s!lefthyphenchar \zerocount
+ \letdummyparameter \s!righthyphenchar\zerocount
+ \resetdummyparameter\c!alternative
+ \resetdummyparameter\c!rightedge
+ \resetdummyparameter\c!rightchars
\getdummyparameters[#2]%
\clf_definehyphenationfeatures
{#1}%
diff --git a/tex/context/base/mkxl/lang-ini.mkxl b/tex/context/base/mkxl/lang-ini.mkxl
index ff9f5cfda..9acc2535b 100644
--- a/tex/context/base/mkxl/lang-ini.mkxl
+++ b/tex/context/base/mkxl/lang-ini.mkxl
@@ -58,9 +58,9 @@
%D \startmode[*nl] dutch \stopmode}
%D \stoptyping
-\mutable\let\askedlanguage \empty
-\mutable\let\currentlanguage \empty
-\mutable\let\currentmainlanguage\empty
+\mutable\lettonothing\askedlanguage
+\mutable\lettonothing\currentlanguage
+\mutable\lettonothing\currentmainlanguage
%D \macros
%D {defaultlanguage,languageparameter,specificlanguageparameter}
@@ -191,7 +191,7 @@
% \language[#1] gave unwanted side effect of loading language specifics
-\mutable\let\currentsetuplanguage\empty
+\mutable\lettonothing\currentsetuplanguage
\permanent\tolerant\protected\def\installlanguage[#1]#*[#2]%
{\ifcondition\validassignment{#2}%
@@ -544,7 +544,7 @@
%D You can setup the default language to reset settings.
-\mutable\let\currentlanguagesetups\empty
+\mutable\lettonothing\currentlanguagesetups
\appendtoks
\edef\currentlanguagesetups{\languageparameter\c!setups}%
diff --git a/tex/context/base/mkxl/lang-lab.mkxl b/tex/context/base/mkxl/lang-lab.mkxl
index 2a42861cd..a1d758f09 100644
--- a/tex/context/base/mkxl/lang-lab.mkxl
+++ b/tex/context/base/mkxl/lang-lab.mkxl
@@ -60,7 +60,7 @@
\installcorenamespace{label}
-% \let\currentlabelcategory\empty
+% \lettonothing\currentlabelcategory
\permanent\tolerant\protected\def\definelabelclass[#1]#*[#2]%
{\normalexpanded
@@ -77,12 +77,13 @@
% hm, not interfaced
-\mutable\let\thetextprefix\empty
+\mutable\lettonothing\thetextprefix
\mutable\let\currenttextprefixclass\s!unknown
-\mutable\let\currenttextprefixname \empty
\mutable\let\currenttextprefixtag \s!unknown
+\mutable\lettonothing\currenttextprefixname
+
\protected\def\lang_labels_define_class_indeed#1#2#3#4#5#6#7#8#9%
{\permanent\instance\protected\defcsname setup#1text\endcsname{\protecttextprefixes #2\def\currenttextprefixclass{#1}\lang_labels_text_prefix_setup}%
\permanent\instance\protected\defcsname preset#1text\endcsname{\protecttextprefixes\plusone\def\currenttextprefixclass{#1}\lang_labels_text_prefix_setup}%
@@ -223,8 +224,8 @@
\expandafter\lang_labels_text_prefix_assign_dumb
\fi{#1}}
-\let\m_lang_labels_left \empty
-\let\m_lang_labels_right\empty
+\lettonothing\m_lang_labels_left
+\lettonothing\m_lang_labels_right
\def\lang_labels_text_prefix_assign_yes#1[#2,#3,#4]%
{\def\m_lang_labels_left {#2}% no longer an edef ... else \Word undefined expansion issues
diff --git a/tex/context/base/mkxl/lang-url.mkxl b/tex/context/base/mkxl/lang-url.mkxl
index 87e64feaf..2d41c6c32 100644
--- a/tex/context/base/mkxl/lang-url.mkxl
+++ b/tex/context/base/mkxl/lang-url.mkxl
@@ -64,8 +64,8 @@
\enforced\let\Ux\eUx
\to \everyhyphenatedurl
-\mutable\let\hyphenatedurlseparator \empty % \periodcentered
-\mutable\let\hyphenatedurldiscretionary\empty
+\mutable\lettonothing\hyphenatedurlseparator % \periodcentered
+\mutable\lettonothing\hyphenatedurldiscretionary
\setnewconstant\hyphenatedurllefthyphenmin \plusthree
\setnewconstant\hyphenatedurlrighthyphenmin\plusthree
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index a2b09a084..6c0fb6b82 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -395,7 +395,7 @@
\protected\def\math_alignment_lbox#1%
{\begingroup
- \setbox\scratchbox\hbox{\letformulaparameter\c!location\empty#1}%
+ \setbox\scratchbox\hbox{\resetformulaparameter\c!location#1}%
\ifzeropt\wd\scratchbox\else
%\enablematrixalign
\hpack
@@ -409,7 +409,7 @@
\protected\def\math_alignment_rbox#1%
{\begingroup
- \setbox\scratchbox\hbox{\letformulaparameter\c!location\empty#1}%
+ \setbox\scratchbox\hbox{\resetformulaparameter\c!location#1}%
\ifzeropt\wd\scratchbox\else
%\enablematrixalign
\hpack
@@ -1499,11 +1499,12 @@
\defcsname\??mathmatrixrulealternative\v!auto\endcsname#1#2%
{\math_matrix_hrule_progress{#1}%
- \ifnum\c_math_matrix_first=\zerocount
- \kern-\dimexpr\linewidth\relax
- \else
- \kern-\dimexpr.5\d_math_eqalign_distance+\linewidth\relax
- \fi
+ % \ifzero\c_math_matrix_first
+ % \kern-\dimexpr\linewidth\relax
+ % \else
+ % \kern-\dimexpr.5\d_math_eqalign_distance+\linewidth\relax
+ % \fi
+ \kern-\dimexpr\ifzero\c_math_matrix_first\else.5\d_math_eqalign_distance+\fi\linewidth\relax
\math_matrix_horizontal_rule_yes{#2}%
%boundary\c_math_matrix_sl_boundary
\enforced\let\NR\math_matrix_NL_NR}
@@ -1720,8 +1721,8 @@
\installcorenamespace{mathmatrixalignlocation}
-\mutable\let\mathmatrixleft \empty % experimental hook
-\mutable\let\mathmatrixright\empty % experimental hook
+\mutable\lettonothing\mathmatrixleft % experimental hook
+\mutable\lettonothing\mathmatrixright % experimental hook
\defcsname\??mathmatrixalignlocation\v!top \endcsname{\raise\dimexpr(\nextboxdp-\nextboxht)/2 +\mathaxisheight\mathstyle\relax}
\defcsname\??mathmatrixalignlocation\v!high \endcsname{\raise\dimexpr(\nextboxdp-\nextboxht)/2\relax}
@@ -2307,7 +2308,7 @@
\def\strc_math_flush_box_framed_fit_inline
{\let\currentformulaframed\currentformula
- \letformulaframedparameter\c!location\empty
+ \resetformulaframedparameter\c!location
\letformulaframedparameter\c!width\v!fit
\strc_math_flush_box_framed_common}
diff --git a/tex/context/base/mkxl/math-del.mklx b/tex/context/base/mkxl/math-dld.mklx
index 0377f3507..33849e723 100644
--- a/tex/context/base/mkxl/math-del.mklx
+++ b/tex/context/base/mkxl/math-dld.mklx
@@ -1,5 +1,5 @@
%D \module
-%D [ file=math-del,
+%D [ file=math-dld,
%D version=2022.07.29,
%D title=\CONTEXT\ Math Macros,
%D subtitle=delimiteds,
@@ -46,7 +46,7 @@
\frozen\protected\instance\edefcsname\currentmathdelimited\endcsname{\math_delimited_handle{\currentmathdelimited}}
\to \everydefinemathdelimited
-\mutable\let\currentmathdelimited\empty
+\mutable\lettonothing\currentmathdelimited
\tolerant\protected\def\math_delimited_handle#tag#*[#settings]#:#body%
{\begingroup
diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl
index 1efc6bbe6..69be6adca 100644
--- a/tex/context/base/mkxl/math-fen.mkxl
+++ b/tex/context/base/mkxl/math-fen.mkxl
@@ -399,7 +399,7 @@
\setfalse\c_math_fenced_level_mode
\c_attr_mathsize\attributeunsetvalue
%
- \letmathfenceparameter\c!size\empty
+ \resetmathfenceparameter\c!size
\letmathfenceparameter\c!factor\v!auto
% so far
\ifparameter#2\or
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index 5fcd232a2..480a56642 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -1968,7 +1968,7 @@
\protected\def\math_function_handle#1#2#3%
{\begingroup
- \letdummyparameter\c!mathlimits\empty
+ \resetdummyparameter\c!mathlimits
\getdummyparameters[#1]%
\edef\p_limits{\dummyparameter\c!mathlimits}%
\mathatom
diff --git a/tex/context/base/mkxl/math-rad.mklx b/tex/context/base/mkxl/math-rad.mklx
index 9dfc80d13..645d32740 100644
--- a/tex/context/base/mkxl/math-rad.mklx
+++ b/tex/context/base/mkxl/math-rad.mklx
@@ -101,8 +101,8 @@
\frozen\protected\instance\edefcsname\currentmathradical\endcsname{\math_radical_handle{\currentmathradical}}
\to \everydefinemathradical
-\mutable\let\currentmathradical \empty
-\mutable\let\currentmathradicaldegree\empty
+\mutable\lettonothing\currentmathradical
+\mutable\lettonothing\currentmathradicaldegree
\setmathignore\Umathradicaldegreebefore\plusone
diff --git a/tex/context/base/mkxl/math-stc.mklx b/tex/context/base/mkxl/math-stc.mklx
index 828115f83..8eb9d59ad 100644
--- a/tex/context/base/mkxl/math-stc.mklx
+++ b/tex/context/base/mkxl/math-stc.mklx
@@ -215,9 +215,9 @@
%D First we implement the helper that deals with an extensible in the middle and
%D top and|/|or bottom texts:
-\let\m_math_stackers_text_top \empty
-\let\m_math_stackers_text_bottom\empty
-\let\m_math_stackers_text_middle\empty
+\lettonothing\m_math_stackers_text_top
+\lettonothing\m_math_stackers_text_bottom
+\lettonothing\m_math_stackers_text_middle
\def\math_stackers_flushtext#command#text%
{\ifdim\scratchleftoffset >\zeropoint\math_stackers_skip\scratchleftoffset \fi
diff --git a/tex/context/base/mkxl/meta-ini.mkxl b/tex/context/base/mkxl/meta-ini.mkxl
index 55a0d8043..bd4445a2f 100644
--- a/tex/context/base/mkxl/meta-ini.mkxl
+++ b/tex/context/base/mkxl/meta-ini.mkxl
@@ -368,15 +368,15 @@
\permanent\protected\def\finalizeMPdrawing
{\MPdrawingdonetrue}
-\mutable\let\MPdrawingdata\empty
+\mutable\lettonothing\MPdrawingdata
\permanent\protected\def\resetMPdrawing
- {\glet\MPdrawingdata\empty
+ {\glettonothing\MPdrawingdata
\global\MPdrawingdonefalse}
\permanent\protected\def\pushMPdrawing
{\globalpushmacro\MPdrawingdata
- \glet\MPdrawingdata\empty}
+ \glettonothing\MPdrawingdata}
\permanent\protected\def\popMPdrawing
{\globalpopmacro\MPdrawingdata}
@@ -415,7 +415,7 @@
\mutable\def\width {0 } % left-over, obsolete
\mutable\def\height{0 } % left-over, obsolete
-\mutable\let\currentMPclip\empty
+\mutable\lettonothing\currentMPclip
\protected\def\meta_grab_clip_path#1#2#3%
{\begingroup
@@ -496,7 +496,7 @@
%D Currently the inheritance of backgrounds does not work and we might drop it
%D anyway (too messy)
-\let\m_meta_current_variable\empty
+\lettonothing\m_meta_current_variable
\installbasicnativeautosetuphandler \??mpcategory {mpcategory}
@@ -681,7 +681,7 @@
\def\meta_uniquempgraphic_yes[#1]#*#=%
{% ugly code but we run on top of older code
- \letdummyparameter\c!instance\empty
+ \resetdummyparameter\c!instance
\getdummyparameters[#1]%
\edef\currentMPinstance{\dummyparameter\c!instance}%
% here we feed the instance into the analyzer
@@ -757,7 +757,7 @@
% \orelse\ifcsname\??mpgraphic\currentMPgraphicname\endcsname
% \let\currentmpcategory\currentMPgraphicname
% \else
-% \let\currentmpcategory\empty
+% \lettonothing\currentmpcategory
% \fi
% \ifempty\currentmpcategory
% % message
@@ -773,7 +773,7 @@
\def\meta_usempgraphic_yes[#1]#*#=%
{% ugly code but we run on top of older code
- \letdummyparameter\c!instance\empty
+ \resetdummyparameter\c!instance
\getdummyparameters[#1]%
\edef\currentMPinstance{\dummyparameter\c!instance}%
% here we feed the instance into the analyzer
@@ -783,7 +783,7 @@
\orelse\ifcsname\??mpgraphic\currentMPgraphicname\endcsname
\let\currentmpcategory\currentMPgraphicname
\else
- \let\currentmpcategory\empty
+ \lettonothing\currentmpcategory
\fi
\ifempty\currentmpcategory
% message
@@ -801,7 +801,7 @@
\orelse\ifcsname\??mpgraphic\currentMPgraphicname\endcsname
\let\currentmpcategory\currentMPgraphicname
\else
- \let\currentmpcategory\empty
+ \lettonothing\currentmpcategory
\fi
\ifempty\currentmpcategory
% message
@@ -973,7 +973,7 @@
% \ifempty\currentMPinstance
% \let\currentMPinstance\defaultMPinstance
% \fi
-% \let\currentMPgraphicname\empty
+% \lettonothing\currentMPgraphicname
% \edef\currentMPformat{\MPinstanceparameter\s!format}%
% \meta_enable_include
% \meta_process_graphic{#2}%
@@ -988,7 +988,7 @@
\ifempty\currentMPinstance
\let\currentMPinstance\defaultMPinstance
\fi
- \let\currentMPgraphicname\empty
+ \lettonothing\currentMPgraphicname
\edef\currentMPformat{\MPinstanceparameter\s!format}%
\meta_enable_include
\meta_process_graphic{#2}%
@@ -996,15 +996,15 @@
\def\meta_start_mpcode_yes[#1]#2\stopMPcode
{\begingroup
- \letdummyparameter\c!instance\empty
- \letdummyparameter\c!stacking\empty
+ \resetdummyparameter\c!instance
+ \resetdummyparameter\c!stacking
\getdummyparameters[#1]%
\edef\currentMPinstance{\dummyparameter\c!instance}%
\setmpcategoryparameter\c!stacking{\dummyparameter\c!stacking}%
\ifempty\currentMPinstance
\let\currentMPinstance\defaultMPinstance
\fi
- \let\currentMPgraphicname\empty
+ \lettonothing\currentMPgraphicname
\edef\currentMPformat{\MPinstanceparameter\s!format}%
\meta_enable_include
\meta_process_graphic{#2}%
@@ -1105,17 +1105,17 @@
% \setupcolors[state=stop,conversion=never] % quite tricky ... type mismatch
-\startMPinitializations
- CurrentLayout:="\currentlayout";
-\stopMPinitializations
+% \startMPinitializations
+% CurrentLayout:="\currentlayout";
+% \stopMPinitializations
%D A dirty trick, ** in colo-ini.lua (mpcolor). We cannot use a vardef, because
%D that fails with spot colors.
-\startMPinitializations
- def OverlayLineColor=\ifempty\overlaylinecolor black \else\MPcolor{\overlaylinecolor} \fi enddef;
- def OverlayColor =\ifempty\overlaycolor black \else\MPcolor{\overlaycolor} \fi enddef;
-\stopMPinitializations
+% \startMPinitializations
+% def OverlayLineColor=\ifempty\overlaylinecolor black \else\MPcolor{\overlaylinecolor} \fi enddef;
+% def OverlayColor =\ifempty\overlaycolor black \else\MPcolor{\overlaycolor} \fi enddef;
+% \stopMPinitializations
\appendtoks
\disablediscretionaries
@@ -1367,7 +1367,7 @@
\ifempty\currentMPinstance
\let\currentMPinstance\defaultMPinstance
\fi
- \let\currentMPgraphicname\empty
+ \lettonothing\currentMPgraphicname
\edef\currentMPformat{\MPinstanceparameter\s!format}%
\meta_enable_include
\meta_process_graphic{#2;draw origin}%
@@ -1398,8 +1398,8 @@
%D Some more helpers (see \type {meta-grd.mkiv} for an example of usage):
-\permanent\def\MPdpar#1#2{\the\dimexpr#1#2\relax\empty}
-\permanent\def\MPnpar#1#2{\the\numexpr#1#2\relax\empty}
+\permanent\def\MPdpar#1#2{\the\dimexpr#1#2\relax\empty} % why \empty here
+\permanent\def\MPnpar#1#2{\the\numexpr#1#2\relax\empty} % why \empty here
\permanent\def\MPspar#1#2{"#1#2"}
%D Done.
diff --git a/tex/context/base/mkxl/meta-pdf.mkxl b/tex/context/base/mkxl/meta-pdf.mkxl
index 32f53ceb3..8dc0bdfac 100644
--- a/tex/context/base/mkxl/meta-pdf.mkxl
+++ b/tex/context/base/mkxl/meta-pdf.mkxl
@@ -34,7 +34,7 @@
%D graphics. The color control flags are also gone as we now integrate into the
%D regular colorspace handling (i.e.\ no longer independent configurations.)
-\mutable\let\MPfilename\empty
+\mutable\lettonothing\MPfilename
\permanent\protected\def\convertMPtoPDF#1#2#3% scaling no longer supported at this level (so #2 & #3 are ignored)
{\dostarttagged\t!mpgraphic\empty
diff --git a/tex/context/base/mkxl/meta-pdh.mkxl b/tex/context/base/mkxl/meta-pdh.mkxl
index b748682a7..0313d0669 100644
--- a/tex/context/base/mkxl/meta-pdh.mkxl
+++ b/tex/context/base/mkxl/meta-pdh.mkxl
@@ -84,9 +84,10 @@
\ifdefined\makeMPintoPDFobject \else \newconstant\makeMPintoPDFobject \fi
\ifdefined\everyMPtoPDFconversion \else \newtoks \everyMPtoPDFconversion \fi
-\let\lastPDFMPobject \!!zerocount
-\let\currentPDFresources\empty
-\let\setMPextensions \relax
+\let\lastPDFMPobject\!!zerocount
+\let\setMPextensions\relax
+
+\lettonothing\currentPDFresources
\def\PDFMPformoffset{\ifdefined\objectoffset\objectoffset\else\zeropoint\fi} % no longer used
@@ -139,7 +140,7 @@
%D A common hook.
-\let\MPfshowcommand\empty
+\lettonothing\MPfshowcommand
%D Objects.
diff --git a/tex/context/base/mkxl/mlib-int.lmt b/tex/context/base/mkxl/mlib-int.lmt
index 47560e8c4..ea9092611 100644
--- a/tex/context/base/mkxl/mlib-int.lmt
+++ b/tex/context/base/mkxl/mlib-int.lmt
@@ -187,8 +187,10 @@ do
local d_overlay_depth = isdimen("d_overlay_depth") registerdirect("OverlayDepth", function() return getdimen(d_overlay_depth) * factor end)
local d_overlay_linewidth = isdimen("d_overlay_linewidth") registerdirect("OverlayLineWidth", function() return getdimen(d_overlay_linewidth) * factor end)
local d_overlay_offset = isdimen("d_overlay_offset") registerdirect("OverlayOffset", function() return getdimen(d_overlay_offset) * factor end)
- registerdirect("OverlayRegion", function() return getmacro("m_overlay_region") end)
- --------------("CurrentLayout", function() return getmacro("currentlayout") end)
+ registerdirect("OverlayRegion", function() return getmacro("m_overlay_region") end)
+ registerdirect("CurrentLayout", function() return getmacro("currentlayout") end)
+ registerdirect("OverlayColor", function() return getmacro("overlaycolor") end)
+ registerdirect("OverlayLineColor", function() return getmacro("overlaylinecolor") end)
end
diff --git a/tex/context/base/mkxl/mult-aux.mkxl b/tex/context/base/mkxl/mult-aux.mkxl
index f387bf95d..93d1113a3 100644
--- a/tex/context/base/mkxl/mult-aux.mkxl
+++ b/tex/context/base/mkxl/mult-aux.mkxl
@@ -15,13 +15,19 @@
%D (interface might change). The code here evolved in an email exchange between me
%D and Wolgang Schuster.
+%D We use constant definitions here because we don't need to expand the keywords
+%D which saves a little on the stack (read: memory access). The gain in performance
+%D is normally not noticeable unless one has plenty of parameter checking, which
+%D can happen in some scenarios. Even then the gain is only there when one has
+%D thousands of runs on e.g. virtual platforms.
+
\writestatus{loading}{ConTeXt Multilingual Macros / Helpers}
\registerctxluafile{mult-aux}{}
\unprotect
-\immutable\edef\??empty{\Uchar25} \immutable\letvalue{\Uchar25}\empty % hex 19
+\immutable\cdef\??empty{\Uchar25} \immutable\letvalue{\Uchar25}\empty % hex 19
% \edef\s!parent{\Uchar29} % inlining  is ugly, a tiny bit faster, but neglectable on a run
@@ -84,7 +90,7 @@
% KEEP THIS:
%
-% \let\m_mult_interfaces_namespace\empty
+% \lettonothing\m_mult_interfaces_namespace
%
% \def\mult_interfaces_get_parameters#1[#2%
% {\if\noexpand#2]%
@@ -172,7 +178,7 @@
%D a comma and trigger a warning but we intercept that elsewhere. The alternative is
%D to skip to the comma first which takes more time.
-\let\m_mult_interfaces_namespace\empty
+\lettonothing\m_mult_interfaces_namespace
\def\mult_interfaces_get_parameters#1[%
{\def\m_mult_interfaces_namespace{#1}%
@@ -355,8 +361,8 @@
\mutable\let\dousecurrentstyleparameter\relax
\mutable\let\dousecurrentcolorparameter\relax
-\mutable\let\currentstyleparameter\empty
-\mutable\let\currentcolorparameter\empty
+\mutable\lettonothing\currentstyleparameter
+\mutable\lettonothing\currentcolorparameter
% maybe we should have \names ones too
@@ -402,35 +408,35 @@
{\let#8#4%
% watch out: no \edef#4{##1} before the ifarguments because #1 can have macros
\ifarguments
- \let#4\empty
+ \lettonothing#4%
\the#5% predefine
- \let#7\empty
+ \lettonothing#7%
\letcsname#1#4:\s!chain\endcsname\empty
- \edefcsname#1#4:\s!parent\endcsname{#3}%
+ \cdefcsname#1#4:\s!parent\endcsname{#3}%
\or
\edef#4{##1}%
\the#5% predefine
- \let#7\empty
- \edefcsname#1#4:\s!chain\endcsname{##1}%
- \edefcsname#1#4:\s!parent\endcsname{#3}%
+ \lettonothing#7%
+ \cdefcsname#1#4:\s!chain\endcsname{##1}%
+ \cdefcsname#1#4:\s!parent\endcsname{#3}%
\or
\edef#4{##1}%
\the#5% predefine
\relax
\ifhastok={##2}%
- \let#7\empty
- \edefcsname#1#4:\s!chain\endcsname{##1}%
- \edefcsname#1#4:\s!parent\endcsname{#3}%
+ \lettonothing#7%
+ \cdefcsname#1#4:\s!chain\endcsname{##1}%
+ \cdefcsname#1#4:\s!parent\endcsname{#3}%
\mult_interfaces_get_parameters{#1#4:}[##2]%
\else
\edef#7{##2}%
\ifempty#7%
- \edefcsname#1#4:\s!chain\endcsname{##1}%
- \edefcsname#1#4:\s!parent\endcsname{#3}%
+ \cdefcsname#1#4:\s!chain\endcsname{##1}%
+ \cdefcsname#1#4:\s!parent\endcsname{#3}%
\else
\mult_check_for_parent{#1}{#3}#4#7%
- \edefcsname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
- \edefcsname#1#4:\s!parent\endcsname{#1##2}%
+ \cdefcsname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
+ \cdefcsname#1#4:\s!parent\endcsname{#1##2}%
\fi
\fi
\or
@@ -438,8 +444,8 @@
\the#5% predefine
\edef#7{##2}%
\mult_check_for_parent{#1}{#3}#4#7%
- \edefcsname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
- \edefcsname#1#4:\s!parent\endcsname{#1##2}%
+ \cdefcsname#1#4:\s!chain\endcsname{\mult_interfaces_chain#1{##2}##1}%
+ \cdefcsname#1#4:\s!parent\endcsname{#1##2}%
\mult_interfaces_get_parameters{#1#4:}[##3]%
\fi
\the#6%
@@ -472,7 +478,7 @@
\the#4}%
\processcommalist[##1]#8%
\else
- \let#3\empty
+ \lettonothing#3%
\mult_interfaces_get_parameters{#1:}[##1]%
\the#4%
\fi
@@ -509,7 +515,7 @@
{\ifarguments
% \setuplayout
\let#6#3% % previous becomes current
- \let#3\empty % current becomes empty
+ \lettonothing#3% % current becomes empty
#2\doingrootsetroot
\the#5%
\the#8% switchsetups
@@ -518,7 +524,7 @@
% \setuplayout[key=value]
\let#7#3%
\let#6#3%
- \let#3\empty
+ \lettonothing#3%
#2\doingrootsetuproot
\mult_interfaces_get_parameters{#1:}[##1]%
\the#5%
@@ -579,10 +585,10 @@
\frozen\tolerant\protected\def#2[##1]##*[##2]##*[##3]%
{\let#7#3%
\ifarguments
- \let#3\empty
+ \lettonothing#3%
\the#4%
\or
- \let#3\empty
+ \lettonothing#3%
\mult_interfaces_get_parameters{#1:}[##1]%
\the#4%
\or
@@ -757,17 +763,17 @@
{\frozen\tolerant\protected\defcsname#1\endcsname[##1]##*[##2]%
{\begingroup
\ifarguments
- \let#2\empty
+ \lettonothing#2%
\or
%\ifcondition\expandafter\mult_check_for_assignment_indeed_begin_\detokenize{##1}=^^^^0003^^^^0003^^^^0004%
% \ifcondition\mult_aux_no_assignment_indeed##1\ignorearguments
% \edef#2{##1}%
% \else
- % \let#2\empty
+ % \lettonothing#2%
% #3[##1]%
% \fi
\ifhastok={##1}%
- \let#2\empty
+ \lettonothing#2%
#3[##1]%
\else
\edef#2{##1}%
@@ -825,7 +831,7 @@
\writestatus\m!system{duplicate user namespace '#1'}\wait
\else
\global\advance\c_mult_interfaces_n_of_namespaces\plusone
- \immutable\xdefcsname ????#1\endcsname{\v_interfaces_prefix_template}%
+ \global\immutable\cdefcsname ????#1\endcsname{\v_interfaces_prefix_template}%
\fi}
\permanent\protected\def\installcorenamespace#1%
@@ -833,7 +839,7 @@
\writestatus\m!system{duplicate core namespace '#1'}\wait
\else
\global\advance\c_mult_interfaces_n_of_namespaces\plusone
- \immutable\xdefcsname ??#1\endcsname{\v_interfaces_prefix_template}%
+ \global\immutable\cdefcsname ??#1\endcsname{\v_interfaces_prefix_template}%
\clf_registernamespace\c_mult_interfaces_n_of_namespaces{#1}%
\fi}
@@ -858,6 +864,7 @@
\permanent\protected\def\setdummyparameter #1{\defcsname\??dummy#1\endcsname}
\permanent\protected\def\setexpandeddummyparameter#1{\edefcsname\??dummy#1\endcsname}
\permanent\protected\def\letdummyparameter #1{\letcsname\??dummy#1\endcsname}
+\permanent\protected\def\resetdummyparameter #1{\letcsname\??dummy#1\endcsname\empty}
\edef\mult_interfaces_dummy{\??dummy} % nor immutable
@@ -1006,7 +1013,7 @@
\protected\def\mult_interfaces_install_definition_set#1#2#3#4#5#6#7%
{\newcount#3%
- \let#6\empty
+ \lettonothing#6%
\protected\def#2%
{\expandafter\let\expandafter\c_mult_set\csname #1_t_#6\endcsname
\ifrelax\c_mult_set
@@ -1197,10 +1204,10 @@
\frozen\tolerant\protected\def#2[##1]##*[##2]##*[##3]%
{\let#7#3%
\ifarguments
- \let#3\empty
+ \lettonothing#3%
\the#4%
\or
- \let#3\empty
+ \lettonothing#3%
\let\mult_interfaces_adef\mult_interfaces_adef_nop
\mult_interfaces_get_parameters{#1:}[##1]%
\let\mult_interfaces_adef\mult_interfaces_adef_yes
diff --git a/tex/context/base/mkxl/mult-ini.lmt b/tex/context/base/mkxl/mult-ini.lmt
index 7c60d5b33..a58e60059 100644
--- a/tex/context/base/mkxl/mult-ini.lmt
+++ b/tex/context/base/mkxl/mult-ini.lmt
@@ -17,7 +17,7 @@ local implement = interfaces.implement
local allocate = utilities.storage.allocate
local mark = utilities.storage.mark
-local prtcatcodes = catcodes.numbers.prtcatcodes
+----- prtcatcodes = catcodes.numbers.prtcatcodes
local vrbcatcodes = catcodes.numbers.vrbcatcodes
local contextsprint = context.sprint
local setmetatableindex = table.setmetatableindex
diff --git a/tex/context/base/mkxl/mult-ini.mkxl b/tex/context/base/mkxl/mult-ini.mkxl
index b357c3e12..0e010429e 100644
--- a/tex/context/base/mkxl/mult-ini.mkxl
+++ b/tex/context/base/mkxl/mult-ini.mkxl
@@ -55,14 +55,14 @@
%D \type {!!!!}. In the meantime some of these are obsolete (we had some 12
%D originally).
-\immutable\def\c!prefix!{c!}
-\immutable\def\k!prefix!{k!}
-\immutable\def\e!prefix!{e!}
-\immutable\def\f!prefix!{f!} % for the moment we keep this one
-\immutable\def\m!prefix!{m!}
-\immutable\def\s!prefix!{s!}
-\immutable\def\v!prefix!{v!}
-\immutable\def\t!prefix!{t!}
+\immutable\cdef\c!prefix!{c!}
+\immutable\cdef\k!prefix!{k!}
+\immutable\cdef\e!prefix!{e!}
+\immutable\cdef\f!prefix!{f!} % for the moment we keep this one
+\immutable\cdef\m!prefix!{m!}
+\immutable\cdef\s!prefix!{s!}
+\immutable\cdef\v!prefix!{v!}
+\immutable\cdef\t!prefix!{t!}
%D \macros
%D [constants,variables,commands]
@@ -73,22 +73,22 @@
%D \type {??}, and a system constant, which has the prefix \type {c!}. We'll se some
%D more of this.
-\immutable\def\??prefix {??}
-\immutable\def\@@prefix {@@}
+\immutable\cdef\??prefix {??}
+\immutable\cdef\@@prefix {@@}
%D Just to be complete we repeat some of the already defined system constants here.
%D Maybe their prefix \type {\s!} now falls into place.
-\def\s!next {next} \def\s!default {default}
-\def\s!dummy {dummy} \def\s!unknown {unknown}
+\cdef\s!next {next} \cdef\s!default {default}
+\cdef\s!dummy {dummy} \cdef\s!unknown {unknown}
-\def\s!do {do} \def\s!dodo {dodo}
+\cdef\s!do {do} \cdef\s!dodo {dodo}
-\def\s!complex {complex} \def\s!start {start}
-\def\s!simple {simple} \def\s!stop {stop}
+\cdef\s!complex {complex} \cdef\s!start {start}
+\cdef\s!simple {simple} \cdef\s!stop {stop}
-\def\s!true {true}
-\def\s!false {false}
+\cdef\s!true {true}
+\cdef\s!false {false}
%D The word \type {height} takes 6~token memory cells. The control sequence \type
%D {\height} on the other hand uses only one. Knowing this, we can improve the
@@ -109,32 +109,32 @@
%D than once. Savings like this should of course be implemented in english, just
%D because \TEX\ is english.
-\def\s!width {width}
-\def\s!height {height}
-\def\s!depth {depth}
-\def\s!spread {spread}
-\def\s!plus {plus}
-\def\s!minus {minus}
-\def\s!to {to}
-
-\def\s!fil {fil}
-\def\s!fill {fill}
-\def\s!filll {filll}
-
-\def\s!attr {attr}
-\def\s!axis {axis}
-\def\s!both {both}
-\def\s!bottom {bottom}
-\def\s!left {left}
-\def\s!options {options}
-\def\s!orientation{orientation}
-\def\s!reverse {reverse}
-\def\s!right {right}
-\def\s!top {top}
-\def\s!xmove {xmove}
-\def\s!xoffset {xoffset}
-\def\s!ymove {ymove}
-\def\s!yoffset {yoffset}
+\cdef\s!width {width}
+\cdef\s!height {height}
+\cdef\s!depth {depth}
+\cdef\s!spread {spread}
+\cdef\s!plus {plus}
+\cdef\s!minus {minus}
+\cdef\s!to {to}
+
+\cdef\s!fil {fil}
+\cdef\s!fill {fill}
+\cdef\s!filll {filll}
+
+\cdef\s!attr {attr}
+\cdef\s!axis {axis}
+\cdef\s!both {both}
+\cdef\s!bottom {bottom}
+\cdef\s!left {left}
+\cdef\s!options {options}
+\cdef\s!orientation{orientation}
+\cdef\s!reverse {reverse}
+\cdef\s!right {right}
+\cdef\s!top {top}
+\cdef\s!xmove {xmove}
+\cdef\s!xoffset {xoffset}
+\cdef\s!ymove {ymove}
+\cdef\s!yoffset {yoffset}
%D \macros
@@ -171,9 +171,9 @@
%D \def\e!name{meaning}
%D \stoptyping
-%permanent\protected\def\defineinterfaceconstant#1#2{\immutable\defcsname\c!prefix!#1\endcsname{#2}}
-\permanent\protected\def\defineinterfacevariable#1#2{\immutable\defcsname\v!prefix!#1\endcsname{#2}}
-\permanent\protected\def\defineinterfaceelement #1#2{\immutable\defcsname\e!prefix!#1\endcsname{#2}}
+%permanent\protected\def\defineinterfaceconstant#1#2{\immutable\cdefcsname\c!prefix!#1\endcsname{#2}}
+\permanent\protected\def\defineinterfacevariable#1#2{\immutable\cdefcsname\v!prefix!#1\endcsname{#2}}
+\permanent\protected\def\defineinterfaceelement #1#2{\immutable\cdefcsname\e!prefix!#1\endcsname{#2}}
%D Next come some interface independant constants:
%D
@@ -181,7 +181,7 @@
%D \definefileconstant {name} {meaning}
%D \stoptyping
-\permanent\protected\def\definefileconstant#1#2{\immutable\defcsname\f!prefix!#1\endcsname{#2}}
+\permanent\protected\def\definefileconstant#1#2{\immutable\cdefcsname\f!prefix!#1\endcsname{#2}}
%D And finaly we have the one argument, space saving constants
%D
@@ -190,13 +190,13 @@
%D \definemessageconstant {name}
%D \stoptyping
-\permanent\protected\def\definesystemconstant #1{\immutable\defcsname\s!prefix!#1\endcsname{#1}}
-\permanent\protected\def\definemessageconstant#1{\immutable\defcsname\m!prefix!#1\endcsname{#1}}
+\permanent\protected\def\definesystemconstant #1{\immutable\cdefcsname\s!prefix!#1\endcsname{#1}}
+\permanent\protected\def\definemessageconstant#1{\immutable\cdefcsname\m!prefix!#1\endcsname{#1}}
%D For now here:
-\permanent\protected\def\definetagconstant #1{\immutable\defcsname\t!prefix!#1\endcsname{#1}}
-\permanent\protected\def\aliastagconstant #1#2{\aliased \letcsname\t!prefix!#1\expandafter\endcsname\csname\t!prefix!#2\endcsname}
+\permanent\protected\def\definetagconstant #1{\immutable\cdefcsname\t!prefix!#1\endcsname{#1}}
+\permanent\protected\def\aliastagconstant #1#2{\aliased \letcsname\t!prefix!#1\expandafter\endcsname\csname\t!prefix!#2\endcsname}
%D In a parameter driven system, some parameters are shared by more system
%D components. In \CONTEXT\ we can distinguish parameters by a unique prefix. Such a
@@ -206,7 +206,7 @@
%D \definesystemvariable {name}
%D \stoptyping
-\permanent\protected\def\definesystemvariable#1{\immutable\edefcsname\??prefix#1\endcsname{\@@prefix#1}}
+\permanent\protected\def\definesystemvariable#1{\immutable\cdefcsname\??prefix#1\endcsname{\@@prefix#1}}
\definesystemvariable{ms}
@@ -370,7 +370,7 @@
\aliased\let\stopmessages\relax
-\mutable\let\currentmessagetext\empty
+\mutable\lettonothing\currentmessagetext
\permanent\protected\def\setinterfacemessage#1#2#3%
{\ifcsname\m!prefix!#1\endcsname\else\immutable\gdefcsname\m!prefix!#1\endcsname{#1}\fi
@@ -685,11 +685,11 @@
\permanent\overloaded\protected\def\setinterfaceconstant#1#2%
{\clf_setinterfaceconstant{#1}{#2}%
- \immutable\defcsname\c!prefix!#1\endcsname{#1}}
+ \immutable\cdefcsname\c!prefix!#1\endcsname{#1}}
\permanent\overloaded\protected\def\setinterfacevariable#1#2%
{\clf_setinterfacevariable{#1}{#2}%
- \immutable\defcsname\v!prefix!#1\endcsname{#2}}
+ \immutable\cdefcsname\v!prefix!#1\endcsname{#2}}
%D \macros
%D {defineinterfaceconstant}
@@ -699,7 +699,7 @@
%D c||version, but for documentation purposes the x||alternative comes in handy.
\permanent\overloaded\protected\def\defineinterfaceconstant#1#2%
- {\immutable\defcsname\c!prefix!#1\endcsname{#2}}
+ {\immutable\cdefcsname\c!prefix!#1\endcsname{#2}}
%D \macros
%D {startelements}
diff --git a/tex/context/base/mkxl/node-ext.mkxl b/tex/context/base/mkxl/node-ext.mkxl
index 697bb7d29..2f0df1ba3 100644
--- a/tex/context/base/mkxl/node-ext.mkxl
+++ b/tex/context/base/mkxl/node-ext.mkxl
@@ -66,7 +66,7 @@
%D \dostopclipping
%D \stoptyping
-\mutable\let\MPclippath\empty
+\mutable\lettonothing\MPclippath
% \permanent\protected\def\dostartclipping#1#2#3% we can move this to lua and only set a box here
% {\forcecolorhack
diff --git a/tex/context/base/mkxl/node-rul.mkxl b/tex/context/base/mkxl/node-rul.mkxl
index ec9003f58..6f62e3022 100644
--- a/tex/context/base/mkxl/node-rul.mkxl
+++ b/tex/context/base/mkxl/node-rul.mkxl
@@ -78,9 +78,9 @@
\installcommandhandler \??bar {bar} \??bar
-\mutable\let\p_node_color \empty % of just \p_*
-\mutable\let\p_node_text \empty
-\mutable\let\p_node_offset\empty
+\mutable\lettonothing\p_node_color % of just \p_*
+\mutable\lettonothing\p_node_text
+\mutable\lettonothing\p_node_offset
\aliased\let\setupbars\setupbar
@@ -298,10 +298,10 @@
\newdimen\d_rule_offset
\newdimen\d_rule_factor
-\mutable\let\m_rule_direction\empty
-% \mutable\let\m_rule_factor \empty
-\mutable\let\m_rule_option \empty
-\mutable\let\m_rule_color \empty
+\mutable\lettonothing\m_rule_direction
+%mutable\lettonothing\m_rule_factor
+\mutable\lettonothing\m_rule_option
+\mutable\lettonothing\m_rule_color
\startuseMPgraphic{rules:under:random}
draw
diff --git a/tex/context/base/mkxl/pack-box.mkxl b/tex/context/base/mkxl/pack-box.mkxl
index 7c64b0032..746d225cb 100644
--- a/tex/context/base/mkxl/pack-box.mkxl
+++ b/tex/context/base/mkxl/pack-box.mkxl
@@ -51,7 +51,7 @@
%
% \anchor[text-1][preset=lefttop][framed settings]{HELLO WORLD}
-\mutable\let\currentanchor\empty
+\mutable\lettonothing\currentanchor
\permanent\tolerant\protected\def\defineanchor[#1]#*[#2]#*[#3]#*[#4]% name targetlayer layersetting framedsetting
{\defcsname\??anchor#1\endcsname{\pack_anchors_process_defined{#2}{#3}{#4}}}
@@ -359,8 +359,8 @@
{\box\nextbox}%
\setcollector
[caption][#1]%
- {\letdummyparameter\c!style\empty
- \letdummyparameter\c!color\empty
+ {\resetdummyparameter\c!style
+ \resetdummyparameter\c!color
\getdummyparameters[#2]%
\dousestyleparameter{\directdummyparameter\c!style}%
\setupinterlinespace
@@ -548,8 +548,8 @@
\defcsname\??bleedinglocation tr\endcsname{\settrue\c_pack_boxes_r\settrue\c_pack_boxes_t}
\defcsname\??bleedinglocation rt\endcsname{\settrue\c_pack_boxes_r\settrue\c_pack_boxes_t}
-\mutable\let\currentbleedposition\empty
-\mutable\let\currentpageposition \empty
+\mutable\lettonothing\currentbleedposition
+\mutable\lettonothing\currentpageposition
\permanent\tolerant\protected\def\bleed[#1]%
{\hbox\bgroup
@@ -694,10 +694,10 @@
\permanent\tolerant\protected\def\setlayertext[#1]#*[#2]#*[#3]%
{\bgroup
- \letdummyparameter\c!align\empty
- \letdummyparameter\c!width\hsize
- \letdummyparameter\c!color\empty
- \letdummyparameter\c!style\empty
+ \resetdummyparameter\c!align
+ \letdummyparameter \c!width\hsize
+ \resetdummyparameter\c!color
+ \resetdummyparameter\c!style
\getdummyparameters[#3]%
\dowithnextboxcontent
{\forgetall
@@ -1191,10 +1191,10 @@
\halfwaytotallistanchorcode
\fi
\relax
- \ifdim\scratchxoffset=\zeropoint\else
+ \ifzeropt\scratchxoffset\else
\boxxoffset\nextbox\scratchxoffset
\fi
- \ifdim\scratchyoffset=\zeropoint\else
+ \ifzeropt\scratchyoffset\else
\boxyoffset\nextbox\scratchyoffset
\fi
\global\setbox\scratchcounterone\hpack\bgroup
@@ -1238,7 +1238,7 @@
\installmacrostack\boxanchoringclass
-\mutable\let\boxanchoringclass\empty
+\mutable\lettonothing\boxanchoringclass
\newcount\c_anchor_auto_box_class
diff --git a/tex/context/base/mkxl/pack-com.mkxl b/tex/context/base/mkxl/pack-com.mkxl
index 2b751e08b..787fe4d96 100644
--- a/tex/context/base/mkxl/pack-com.mkxl
+++ b/tex/context/base/mkxl/pack-com.mkxl
@@ -228,9 +228,9 @@
\newtoks\everycombination
-\aliased\let\combination\empty
+\aliased\lettonothing\combination
-\let\p_nx_ny\empty
+\lettonothing\p_nx_ny
% \permanent\tolerant\protected\def\startcombination[#1]#*[#2]% can be simplified
% {\bgroup % so we can grab a group
@@ -240,16 +240,16 @@
% %
% \ifempty\p_nx_ny
% \ifcondition\validassignment{#1}%
-% \let\currentcombination\empty
+% \lettonothing\currentcombination
% \setupcurrentcombination[#1]%
% \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
% \else
% \doifelseinstring{*}\currentcombination
% {\edef\p_nx_ny{\currentcombination*\plusone*}%
-% \let\currentcombination\empty}
+% \lettonothing\currentcombination}
% {\doifelsenumber\currentcombination
% {\edef\p_nx_ny{\currentcombination*\plusone*}%
-% \let\currentcombination\empty}
+% \lettonothing\currentcombination}
% {\edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}}}%
% \fi
% \else
@@ -265,15 +265,15 @@
% %
% % \ifempty\p_nx_ny
% % \ifhastok={#1}%
-% % \let\currentcombination\empty
+% % \lettonothing\currentcombination
% % \setupcurrentcombination[#1]%
% % \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
% % \orelse\ifhastok*{\currentcombination}%
% % \edef\p_nx_ny{\currentcombination*\plusone*}%
-% % \let\currentcombination\empty
+% % \lettonothing\currentcombination
% % \orelse\ifchknum\currentcombination\or
% % \edef\p_nx_ny{\currentcombination*\plusone*}%
-% % \let\currentcombination\empty
+% % \lettonothing\currentcombination
% % \else
% % \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
% % \fi
@@ -303,7 +303,7 @@
% %
% \dostarttaggedchained\t!combination\currentcombination\??combination
% \vbox \ifx\p_height\v!fit\else to \p_height \fi \bgroup
-% \enforced\let\combination\empty % permits \combination{}{} handy for cld
+% \enforced\lettonothing\combination % permits \combination{}{} handy for cld
% \normalexpanded{\pack_combinations_start_indeed[\p_nx_ny]}}
%
% \permanent\protected\def\stopcombination
@@ -332,16 +332,16 @@
%
\ifempty\p_nx_ny
\ifcondition\validassignment{#1}%
- \let\currentcombination\empty
+ \lettonothing\currentcombination
\setupcurrentcombination[#1]%
\edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
\else
\doifelseinstring{*}\currentcombination
{\edef\p_nx_ny{\currentcombination*\plusone*}%
- \let\currentcombination\empty}
+ \lettonothing\currentcombination}
{\doifelsenumber\currentcombination
{\edef\p_nx_ny{\currentcombination*\plusone*}%
- \let\currentcombination\empty}
+ \lettonothing\currentcombination}
{\edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}}}%
\fi
\else
@@ -358,15 +358,15 @@
%
% \ifempty\p_nx_ny
% \ifhastok={#1}%
-% \let\currentcombination\empty
+% \lettonothing\currentcombination
% \setupcurrentcombination[#1]%
% \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
% \orelse\ifhastok*{\currentcombination}%
% \edef\p_nx_ny{\currentcombination*\plusone*}%
-% \let\currentcombination\empty
+% \lettonothing\currentcombination
% \orelse\ifchknum\currentcombination\or
% \edef\p_nx_ny{\currentcombination*\plusone*}%
-% \let\currentcombination\empty
+% \lettonothing\currentcombination
% \else
% \edef\p_nx_ny{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
% \fi
@@ -399,7 +399,7 @@
\ifcsname\??combinationmethod\combinationparameter\c!method\endcsname
\lastnamedcs\else\vbox
\fi\ifx\p_height\v!fit\else to \p_height \fi \bgroup
- \enforced\let\combination\empty % permits \combination{}{} handy for cld
+ \enforced\lettonothing\combination % permits \combination{}{} handy for cld
\normalexpanded{\pack_combinations_start_indeed[\p_nx_ny]}}
\permanent\protected\def\stopcombination
diff --git a/tex/context/base/mkxl/pack-cut.mkxl b/tex/context/base/mkxl/pack-cut.mkxl
index 1e23a97e3..3f4e6d0c3 100644
--- a/tex/context/base/mkxl/pack-cut.mkxl
+++ b/tex/context/base/mkxl/pack-cut.mkxl
@@ -58,13 +58,14 @@
\newcount\cutmarkoffset \cutmarkoffset \plusone
\mutable\let\cutmarksymbol \relax
-\mutable\let\cutmarktoptext \empty
-\mutable\let\cutmarkbottomtext \empty
-\mutable\let\cutmarkhoffset \empty
-\mutable\let\cutmarkvoffset \empty
\mutable\def\cutmarklength {2\bodyfontsize}
\mutable\def\cutmarkrulethickness{\onepoint}
+\mutable\lettonothing\cutmarktoptext
+\mutable\lettonothing\cutmarkbottomtext
+\mutable\lettonothing\cutmarkhoffset
+\mutable\lettonothing\cutmarkvoffset
+
\permanent\protected\def\horizontalcuts
{\hpack to \d_pack_cutmarks_width
{\dorecurse\horizontalcutmarks{\vrule\s!width\cutmarkrulethickness\s!height\cutmarklength\hfill}%
@@ -122,7 +123,7 @@
{\scratchskip\ifempty\cutmarkhoffset\cutmarkoffset\scratchdimen\else\cutmarkhoffset\fi
\setbox\scratchbox\hpack{\verticalcuts}%
\llap{\copy\scratchbox\hskip\scratchskip}%
- \ifdim\d_pack_cutmarks_depth=\zeropoint
+ \ifzeropt\d_pack_cutmarks_depth
\hfill
\else
\bgroup
diff --git a/tex/context/base/mkxl/pack-lyr.mkxl b/tex/context/base/mkxl/pack-lyr.mkxl
index 3b7e2324d..e1652273e 100644
--- a/tex/context/base/mkxl/pack-lyr.mkxl
+++ b/tex/context/base/mkxl/pack-lyr.mkxl
@@ -97,35 +97,35 @@
\permanent\def\layeranchor{\currentlayer:\the\realpageno}
-\let\p_pack_layers_doublesided\empty
-\let\p_pack_layers_state \empty
-\let\p_pack_layers_option \empty
-\let\p_pack_layers_method \empty
-\let\p_pack_layers_preset \empty
-\let\p_pack_layers_rotation \empty
-\let\p_pack_layers_position \empty
-\let\p_pack_layers_hoffset \empty
-\let\p_pack_layers_voffset \empty
-\let\p_pack_layers_offset \empty
-\let\p_pack_layers_dx \empty
-\let\p_pack_layers_dy \empty
-\let\p_pack_layers_sx \empty
-\let\p_pack_layers_sy \empty
-\let\p_pack_layers_x \empty
-\let\p_pack_layers_y \empty
-\let\p_pack_layers_corner \empty
-\let\p_pack_layers_location \empty
-\let\p_pack_layers_line \empty
-\let\p_pack_layers_column \empty
-\let\p_pack_layers_width \empty
-\let\p_pack_layers_height \empty
-\let\p_pack_layers_direction \empty
-\let\p_pack_layers_region \empty
-
-\let\m_pack_layers_page \empty
-\let\m_pack_layers_target \empty
-\let\m_pack_layers_region \empty
-\let\m_pack_layers_anchor \empty
+\lettonothing\p_pack_layers_doublesided
+\lettonothing\p_pack_layers_state
+\lettonothing\p_pack_layers_option
+\lettonothing\p_pack_layers_method
+\lettonothing\p_pack_layers_preset
+\lettonothing\p_pack_layers_rotation
+\lettonothing\p_pack_layers_position
+\lettonothing\p_pack_layers_hoffset
+\lettonothing\p_pack_layers_voffset
+\lettonothing\p_pack_layers_offset
+\lettonothing\p_pack_layers_dx
+\lettonothing\p_pack_layers_dy
+\lettonothing\p_pack_layers_sx
+\lettonothing\p_pack_layers_sy
+\lettonothing\p_pack_layers_x
+\lettonothing\p_pack_layers_y
+\lettonothing\p_pack_layers_corner
+\lettonothing\p_pack_layers_location
+\lettonothing\p_pack_layers_line
+\lettonothing\p_pack_layers_column
+\lettonothing\p_pack_layers_width
+\lettonothing\p_pack_layers_height
+\lettonothing\p_pack_layers_direction
+\lettonothing\p_pack_layers_region
+
+\lettonothing\m_pack_layers_page
+\lettonothing\m_pack_layers_target
+\lettonothing\m_pack_layers_region
+\lettonothing\m_pack_layers_anchor
\newconditional\c_pack_layers_repeated
\newconditional\c_pack_layers_trace
@@ -196,8 +196,8 @@
%D \setlayer [identifier] [optional parameters] {data}
%D \stoptyping
-\mutable\let\currentlayerwidth \empty
-\mutable\let\currentlayerheight\empty
+\mutable\lettonothing\currentlayerwidth
+\mutable\lettonothing\currentlayerheight
\permanent\tolerant\protected\def\setcurrentlayerdimensions[#1]#*[#2]% name left|right
{\edef\currentlayerwidth {\thelayerwidth {#2#1}}%
@@ -218,7 +218,7 @@
\edef\m_pack_layers_target{#2}%
\pack_layers_set_indeed{#3}%
\orelse\ifhastok={#2}%
- \let\m_pack_layers_target\empty
+ \lettonothing\m_pack_layers_target
\pack_layers_set_indeed{#2}%
\else
\edef\m_pack_layers_target{#2}%
@@ -400,9 +400,11 @@
{\alignedbox[\p_pack_layers_location]\vpack{\box\nextbox}}%
\fi
\ifnum\p_pack_layers_line=\zerocount\else % no \ifcase, can be negative
+ % \ifzero\p_pack_layers_line\else % todo: test this
\advance\d_pack_layers_y_position\dimexpr\p_pack_layers_line\lineheight+\topskip-\lineheight-\ht\nextbox\relax
\fi
\ifnum\p_pack_layers_column=\zerocount\else % no \ifcase, can be negative
+ % \ifzero\p_pack_layers_column\else % todo: test this
\advance\d_pack_layers_x_position\layoutcolumnoffset\p_pack_layers_column\relax
\fi
\ifx\p_pack_layers_location\v!grid
@@ -449,6 +451,7 @@
\def\pack_layers_set_bottom_positions
{\ifnum\p_pack_layers_line=\zerocount\else % can be < 0
+% {\ifzero\p_pack_layers_line\else % todo: test this
\edef\p_pack_layers_line{\the\numexpr-\p_pack_layers_line+\layoutlines+\plusone\relax}% use counter instead ?
\fi
\ifdim\d_pack_layers_y_size>\zeropoint
@@ -459,6 +462,7 @@
\def\pack_layers_set_right_positions
{\ifnum\p_pack_layers_column=\zerocount\else % can be < 0
+% {\ifzero\p_pack_layers_column\else % todo: test this
\edef\p_pack_layers_column{\the\numexpr-\layerparameter\c!column+\layoutcolumns+\plusone\relax}% use counter instead ?
\fi
\ifdim\d_pack_layers_x_size>\zeropoint
diff --git a/tex/context/base/mkxl/pack-mat.mkxl b/tex/context/base/mkxl/pack-mat.mkxl
index 66be25a9d..e336c195e 100644
--- a/tex/context/base/mkxl/pack-mat.mkxl
+++ b/tex/context/base/mkxl/pack-mat.mkxl
@@ -18,6 +18,9 @@
\unprotect
+% todo \v!mathframed
+% todo \v!mathstrikeout
+
\newconditional \c_framed_math_framed
\installtextracker
@@ -25,44 +28,199 @@
{\settrue \c_framed_math_framed}
{\setfalse\c_framed_math_framed}
-\tolerant\protected\def\mathframed[#1]#:#2%
+\integerdef\c_framed_math_last_left \zerocount
+\integerdef\c_framed_math_last_right\zerocount
+
+\installglobalmacrostack\c_framed_math_last_left
+\installglobalmacrostack\c_framed_math_last_right
+
+\installcorenamespace{mathframed}
+
+\defineframed[\??mathframed]
+
+\setupframed[\??mathframed][\c!location=\v!middle]
+
+\tolerant\permanent\protected\def\definemathframed[#1]#*[#2]#*[#3]%
+ {\ifarguments\or
+ \defineframed[#1][\??mathframed]%
+ \or
+ \defineframed[#1][\??mathframed][#2]%
+ \or
+ \defineframed[#1][#2][#3]%
+ \fi
+ \tolerant\frozen\protected\defcsname#1\endcsname{\math_framed{#1}}}
+
+\definemathframed[mathframed]
+
+% \def\math_framed#1#*[#2]#:#3%
+% {\begingroup
+% \ifconditional\c_framed_math_framed
+% \defineboxanchor[temp]%
+% \fi
+% \setmathatomrule\mathbegincode\mathbincode\allmathstyles\mathbegincode\mathbincode % hm
+% \normalexpanded
+% {\setbox\scratchbox\hpack
+% \ifconditional\c_framed_math_framed
+% \s!source \namedboxanchor{temp}
+% \fi
+% \s!ymove \Umathaxis\Ustyle\mathstyle
+% \bgroup
+% \localframedwithsettings
+% [#1][#2]%
+% {\startimath
+% \Ustyle\mathstyle
+% #3%
+% \stopimath
+% \integerdef\c_framed_math_last_left \lastleftclass
+% \integerdef\c_framed_math_last_right\lastrightclass
+% \push_macro_c_framed_math_last_left
+% \push_macro_c_framed_math_last_right
+% }%
+% \egroup}%
+% \pop_macro_c_framed_math_last_left
+% \pop_macro_c_framed_math_last_right
+% \mathatom
+% \s!class \mathexplicitcode
+% \ifnum\c_framed_math_last_left <\zerocount\else\s!leftclass \c_framed_math_last_left \fi
+% \ifnum\c_framed_math_last_right<\zerocount\else\s!rightclass\c_framed_math_last_right\fi
+% \bgroup
+% \ifconditional\c_framed_math_framed
+% \setboxanchor[temp][\c!corner={\v!left ,\v!bottom},\c!location={\v!right,\v!height}]%
+% \hpack{\smallinfofont\the\c_framed_math_last_left}%
+% \setboxanchor[temp][\c!corner={\v!right,\v!bottom},\c!location={\v!left ,\v!height}]%
+% \hpack{\smallinfofont\the\c_framed_math_last_right}%
+% \fi
+% \box\scratchbox
+% \egroup
+% \endgroup}
+
+\dimensiondef\d_math_framed_offset\zeropoint
+
+\def\math_framed#1#*[#2]#:#3%
{\begingroup
\ifconditional\c_framed_math_framed
\defineboxanchor[temp]%
\fi
\setmathatomrule\mathbegincode\mathbincode\allmathstyles\mathbegincode\mathbincode % hm
- \normalexpanded
- {\setbox\scratchbox\hpack
- \ifconditional\c_framed_math_framed
- \s!source \namedboxanchor{temp}
- \fi
- \s!ymove \Umathaxis\Ustyle\mathstyle
- \bgroup
- \framed
- [\c!location=\v!middle,#1]
- {\startimath
- \Ustyle\mathstyle
- #2%
- \stopimath}%
- \egroup}%
- \scratchcounterone\lastleftclass
- \scratchcountertwo\lastrightclass
- % \writestatus{!!}{[\number\lastleftclass,\number\lastrightclass]}%
+ %
+ \scratchdimen\Umathaxis\Ustyle\mathstyle
+ %
+ \edef\currentframed{#1}%
+ \setbox\scratchbox\hbox{\localframedwithsettings[#1][#2]%
+ {\strut\global\dimensiondef\d_math_framed_offset\dimexpr
+ \framedoffset/2
+% +2\d_framed_linewidth
+ \relax}}%
+ %
+ \setbox\scratchbox\hpack\bgroup
+ \startimath
+ \Ustyle\mathstyle
+ #3%
+ \stopimath
+ \normalexpanded{\aftergrouped{%
+ \integerdef\c_framed_math_last_left \the\lastleftclass
+ \integerdef\c_framed_math_last_right\the\lastrightclass
+ }}%
+ \egroup
+ %
+ \boxymove\scratchbox\dimexpr
+ \scratchdimen
+ -\d_math_framed_offset/2
+ \relax
+ %
+ \setbox\scratchbox\hpack
+ \localframedwithsettings
+ [#1][#2]%
+ {\box\scratchbox}%
+ %
+ \boxymove\scratchbox\scratchdimen
+ %
+ \ifconditional\c_framed_math_framed
+ \boxsource\scratchbox \namedboxanchor{temp}% test
+ \fi
+ %
\mathatom
\s!class \mathexplicitcode
- \ifnum\scratchcounterone<\zerocount\else\s!leftclass \scratchcounterone\fi
- \ifnum\scratchcountertwo<\zerocount\else\s!rightclass\scratchcountertwo\fi
+ \ifnum\c_framed_math_last_left <\zerocount\else\s!leftclass \c_framed_math_last_left \fi
+ \ifnum\c_framed_math_last_right<\zerocount\else\s!rightclass\c_framed_math_last_right\fi
\bgroup
\ifconditional\c_framed_math_framed
- \setboxanchor[temp][\c!corner={\v!left,\v!bottom},\c!location={\v!right,\v!height}]
- \hpack{\smallinfofont \the\scratchcounterone}%
- \setboxanchor[temp][\c!corner={\v!right,\v!bottom},\c!location={\v!left,\v!height}]
- \hpack{\smallinfofont \the\scratchcountertwo}%
+ \setboxanchor[temp][\c!corner={\v!left ,\v!bottom},\c!location={\v!right,\v!height}]%
+ \hpack{\smallinfofont\the\c_framed_math_last_left}%
+ \setboxanchor[temp][\c!corner={\v!right,\v!bottom},\c!location={\v!left ,\v!height}]%
+ \hpack{\smallinfofont\the\c_framed_math_last_right}%
\fi
\box\scratchbox
\egroup
\endgroup}
+\defineoverlay[mathstrikeout][\useMPgraphic{\framedparameter{mp}}]
+
+\definemathframed
+ [mathstrikeout]
+ [\c!offset=\v!overlay,
+ \c!mp=mathstrikeout,
+ \c!rulethickness=1.5\linewidth,
+ \c!background={\v!foreground,mathstrikeout},
+ %\c!color=darkgreen,
+ \c!textstyle=\txx,
+ \c!mathstyle=\s!script,
+ \c!frame=\v!off,
+ \c!arrow=\v!yes]
+
+\definemathframed
+ [mathcrossout]
+ [mathstrikeout]
+ [\c!mp=mathcrossout,
+ strike:location=bottom]
+
+\permanent\protected\def\mathstrikeoutlabel
+ {\iftok{\framedparameter{strike:math}}\emptytoks
+ \useframedstyleandcolor\c!textstyle\c!color
+ \framedparameter{strike:text}%
+ \else
+ \startimath
+ \dousecolorparameter{\framedparameter\c!color}% mathcolor
+ \usemathstyleparameter\framedparameter\c!mathstyle
+ \framedparameter{strike:math}%
+ \stopimath
+ \fi}
+
+\startuseMPgraphic{mathstrikeout}
+ path arr ; arr := (llcorner OverlayBox -- urcorner OverlayBox) ;
+ if "\framedparameter{arrow}" = "yes" : drawarrow else : draw fi arr
+ withpen pencircle scaled OverlayLineWidth
+ withcolor OverlayColor
+ ;
+ label.top("\mathstrikeoutlabel", point 1 of arr)
+ withcolor OverlayColor
+ ;
+ % draw OverlayBox
+ % dashed evenly
+ % withpen pencircle scaled .5OverlayLineWidth
+ % withcolor OverlayColor
+ % ;
+ setbounds currentpicture to OverlayBox ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{mathcrossout}
+ draw (
+ (llcorner OverlayBox -- urcorner OverlayBox) &&
+ (ulcorner OverlayBox -- lrcorner OverlayBox)
+ )
+ withpen pencircle scaled OverlayLineWidth
+ withcolor OverlayColor
+ ;
+ if "\framedparameter{strike:location}" = "bottom" :
+ label.bot("\mathstrikeoutlabel", center bottomboundary currentpicture)
+ else :
+ label.top("\mathstrikeoutlabel", center topboundary currentpicture)
+ fi
+ withcolor OverlayColor
+ ;
+ setbounds currentpicture to OverlayBox ;
+\stopuseMPgraphic
+
%D \starttyping
%D \enabletrackers[framed.math]
%D
diff --git a/tex/context/base/mkxl/pack-obj.mkxl b/tex/context/base/mkxl/pack-obj.mkxl
index 3dad2644a..e0cce8e08 100644
--- a/tex/context/base/mkxl/pack-obj.mkxl
+++ b/tex/context/base/mkxl/pack-obj.mkxl
@@ -184,7 +184,7 @@
%D For the moment here:
-\mutable\let\lastpredefinedsymbol\empty % some day we can do more at the lua end
+\mutable\lettonothing\lastpredefinedsymbol % some day we can do more at the lua end
\permanent\protected\def\predefinesymbol[#1]%
{\begingroup
diff --git a/tex/context/base/mkxl/pack-pos.mkxl b/tex/context/base/mkxl/pack-pos.mkxl
index e2fd1c8f8..872d334a7 100644
--- a/tex/context/base/mkxl/pack-pos.mkxl
+++ b/tex/context/base/mkxl/pack-pos.mkxl
@@ -56,10 +56,10 @@
\permanent\tolerant\protected\def\startpositioning[#1]#*[#2]%
{\bgroup
\ifparameters
- \let\currentpositioning\empty
+ \lettonothing\currentpositioning
\or
\ifhastok={#1}%
- \let\currentpositioning\empty
+ \lettonothing\currentpositioning
\setupcurrentpositioning[#1]%
\else
\edef\currentpositioning{#1}%
diff --git a/tex/context/base/mkxl/pack-rul.mkxl b/tex/context/base/mkxl/pack-rul.mkxl
index 3f43b2abc..3c4d77062 100644
--- a/tex/context/base/mkxl/pack-rul.mkxl
+++ b/tex/context/base/mkxl/pack-rul.mkxl
@@ -210,30 +210,30 @@
\newdimen\d_framed_target_dp
\newdimen\d_framed_linewidth \aliased\let\ruledlinewidth\d_framed_linewidth % needed at lua end
-\let\p_framed_frame \empty % \framedparameter\c!frame
-\let\p_framed_backgroundoffset\empty
-\let\p_framed_foregroundstyle \empty
-\let\p_framed_autostrut \empty
-\let\p_framed_location \empty
-\let\p_framed_orientation \empty
-\let\p_framed_anchoring \empty
-\let\p_framed_synchronize \empty
-\let\p_framed_autowidth \empty
-\let\p_framed_franalyze \empty
-\let\p_framed_backgroundcorner\empty
-\let\p_framed_backgroundradius\empty
-\let\p_framed_framecorner \empty
-\let\p_framed_frameradius \empty
-\let\p_framed_lines \empty
-\let\p_framed_empty \empty
-\let\p_framed_backgroundcolor \empty
-\let\p_framed_framecolor \empty
-\let\p_framed_component \empty
-\let\p_framed_background \empty
-\let\p_framed_rulethickness \empty
-\let\p_framed_foregroundcolor \empty
-\let\p_framed_setups \empty
-\let\p_framed_synchronize \empty
+\lettonothing\p_framed_frame % \framedparameter\c!frame
+\lettonothing\p_framed_backgroundoffset
+\lettonothing\p_framed_foregroundstyle
+\lettonothing\p_framed_autostrut
+\lettonothing\p_framed_location
+\lettonothing\p_framed_orientation
+\lettonothing\p_framed_anchoring
+\lettonothing\p_framed_synchronize
+\lettonothing\p_framed_autowidth
+\lettonothing\p_framed_franalyze
+\lettonothing\p_framed_backgroundcorner
+\lettonothing\p_framed_backgroundradius
+\lettonothing\p_framed_framecorner
+\lettonothing\p_framed_frameradius
+\lettonothing\p_framed_lines
+\lettonothing\p_framed_empty
+\lettonothing\p_framed_backgroundcolor
+\lettonothing\p_framed_framecolor
+\lettonothing\p_framed_component
+\lettonothing\p_framed_background
+\lettonothing\p_framed_rulethickness
+\lettonothing\p_framed_foregroundcolor
+\lettonothing\p_framed_setups
+\lettonothing\p_framed_synchronize
%D We don't have to stick to a \TEX\ drawn rule, but also can use rounded
%D or even fancier shapes, as we will see later on.
@@ -420,7 +420,7 @@
\newdimen\d_overlay_offset
\newdimen\d_overlay_linewidth
-\let\m_overlay_region\empty
+\lettonothing\m_overlay_region
% expandable ... in a future version the space will go (in mp one can use Overlay*)
@@ -511,7 +511,7 @@
\newtoks\everybackgroundbox
-\let\m_framed_background\empty % we might need a public name
+\lettonothing\m_framed_background % we might need a public name
\def\pack_framed_process_background
{\ifcsname\??overlaybuiltin\m_framed_background\endcsname
@@ -1112,14 +1112,14 @@
\permanent\protected\lettonothing\localendstrut
\permanent\protected\lettonothing\localstrut
-\mutable\let\localoffset \empty
-\mutable\let\localwidth \empty
-\mutable\let\localheight \empty
-\mutable\let\localformat \empty
+\mutable\lettonothing\localoffset
+\mutable\lettonothing\localwidth
+\mutable\lettonothing\localheight
+\mutable\lettonothing\localformat
-\mutable\let\framedwidth \empty
-\mutable\let\framedheight\empty
-\mutable\let\framedoffset\empty
+\mutable\lettonothing\framedwidth
+\mutable\lettonothing\framedheight
+\mutable\lettonothing\framedoffset
% better a constant:
@@ -1241,10 +1241,10 @@
\ifcstok{\framedparameter\c!adaptive}\v!yes
\let\p_framed_adaptive\s!delay
\else
- \let\p_framed_adaptive\empty
+ \lettonothing\p_framed_adaptive
\fi
\else
- \let\p_framed_adaptive\empty
+ \lettonothing\p_framed_adaptive
\edef\p_framed_lines{\framedparameter\c!lines}%
\ifempty\p_framed_lines
\orelse\ifcase\p_framed_lines
diff --git a/tex/context/base/mkxl/page-app.mkxl b/tex/context/base/mkxl/page-app.mkxl
index 660dcb879..e8cc12aaa 100644
--- a/tex/context/base/mkxl/page-app.mkxl
+++ b/tex/context/base/mkxl/page-app.mkxl
@@ -96,10 +96,10 @@
{\setbox\b_page_fitting\hpack\bgroup
\scale[\c!scale=\fittingpageparameter\c!scale]{\box\b_page_fitting}%
\egroup}%
- \ifdim\ht\b_page_fitting=\zeropoint
+ \ifzeropt\ht\b_page_fitting
\ht\b_page_fitting\onepoint
\fi
- \ifdim\wd\b_page_fitting=\zeropoint
+ \ifzeropt\wd\b_page_fitting
\wd\b_page_fitting\onepoint
\fi
\d_page_fitting_width \wd\b_page_fitting
diff --git a/tex/context/base/mkxl/page-bck.mkxl b/tex/context/base/mkxl/page-bck.mkxl
index 5c9b96fd7..597ab419e 100644
--- a/tex/context/base/mkxl/page-bck.mkxl
+++ b/tex/context/base/mkxl/page-bck.mkxl
@@ -52,7 +52,7 @@
%D We keep calculations and checks to a minimum and also try to minimize
%D the amount of tracing due to expansion.
-\mutable\let\currentotrbackground\empty
+\mutable\lettonothing\currentotrbackground
%D This is the only spot where we have a low level dependency on the way
%D parent chains are defined but we want the speed.
diff --git a/tex/context/base/mkxl/page-box.mklx b/tex/context/base/mkxl/page-box.mklx
index a65989222..1cd668e95 100644
--- a/tex/context/base/mkxl/page-box.mklx
+++ b/tex/context/base/mkxl/page-box.mklx
@@ -80,18 +80,18 @@
% \boxyoffset#box\dimexpr\boxyoffset#box-\topoffset\relax}
% \def\page_boxes_apply_offset % #box
-% {\unless\ifzeropt\topoffset % we can't do an unless here
+% {\unless\ifdim\topoffset=\zeropoint
% \expandafter\page_boxes_apply_offset_indeed
-% \orunless\ifzeropt\backoffset
+% \orunless\ifdim\backoffset=\zeropoint
% \expandafter\page_boxes_apply_offset_indeed
% \else
% \expandafter\gobbleoneargument
% \fi}
\def\page_boxes_apply_offset % #box
- {\unless\ifdim\topoffset=\zeropoint
+ {\unless\ifzeropt\topoffset
\expandafter\page_boxes_apply_offset_indeed
- \orunless\ifdim\backoffset=\zeropoint
+ \orunless\ifzeropt\backoffset
\expandafter\page_boxes_apply_offset_indeed
\else
\expandafter\gobbleoneargument
diff --git a/tex/context/base/mkxl/page-brk.mkxl b/tex/context/base/mkxl/page-brk.mkxl
index f30d9cb2c..af558b591 100644
--- a/tex/context/base/mkxl/page-brk.mkxl
+++ b/tex/context/base/mkxl/page-brk.mkxl
@@ -45,8 +45,8 @@
\newtoks\everybeforepagebreak
\newtoks\everyafterpagebreak
-\let\page_breaks_current_option \empty
-\let\page_breaks_current_options\empty
+\lettonothing\page_breaks_current_option
+\lettonothing\page_breaks_current_options
\installcorenamespace{pagebreakmethod}
\installcorenamespace{pagebreaks}
@@ -288,8 +288,8 @@
\newtoks\everyaftercolumnbreak
\newtoks\everysynchronizecolumn
-\let\page_breaks_columns_current_option \empty
-\let\page_breaks_columns_current_options\empty
+\lettonothing\page_breaks_columns_current_option
+\lettonothing\page_breaks_columns_current_options
\def\page_breaks_columns_handle#1%
{\edef\page_breaks_columns_current_options{#1}%
diff --git a/tex/context/base/mkxl/page-cst.mkxl b/tex/context/base/mkxl/page-cst.mkxl
index 12ee0bd38..d2058ec46 100644
--- a/tex/context/base/mkxl/page-cst.mkxl
+++ b/tex/context/base/mkxl/page-cst.mkxl
@@ -128,10 +128,10 @@
{\bgroup
\enforced\let\startpagegrid\page_grd_start_dummy
\ifarguments
- \let\currentpagegrid\empty
+ \lettonothing\currentpagegrid
\or
\ifhastok={#1}%
- \let\currentpagegrid\empty
+ \lettonothing\currentpagegrid
\setupcurrentpagegrid[#1]%
\else
\def\currentpagegrid{#1}%
diff --git a/tex/context/base/mkxl/page-flt.mkxl b/tex/context/base/mkxl/page-flt.mkxl
index a360dc42f..32f04e6b3 100644
--- a/tex/context/base/mkxl/page-flt.mkxl
+++ b/tex/context/base/mkxl/page-flt.mkxl
@@ -182,10 +182,10 @@
%
% \placefloatwithsetups[somefigure]{}{\externalfigure[dummy][width=5cm,height=2cm]}
-\mutable\let\floatsetupcaption\empty
-\mutable\let\floatsetupcontent\empty
-\mutable\let\floatsetupwidth \empty
-\mutable\let\floatsetupheight \empty
+\mutable\lettonothing\floatsetupcaption
+\mutable\lettonothing\floatsetupcontent
+\mutable\lettonothing\floatsetupwidth
+\mutable\lettonothing\floatsetupheight
\aliased\let\placesetupfloat\gobbleoneoptional
diff --git a/tex/context/base/mkxl/page-imp.mkxl b/tex/context/base/mkxl/page-imp.mkxl
index 5846fb22a..c9244224d 100644
--- a/tex/context/base/mkxl/page-imp.mkxl
+++ b/tex/context/base/mkxl/page-imp.mkxl
@@ -61,7 +61,7 @@
\newbox \shipoutscratchbox
\setnewconstant\shipoutfinalizemethod\plusone
-\mutable\let\pagestoshipout\empty % {1,3,6}
+\mutable\lettonothing\pagestoshipout % {1,3,6}
\permanent\protected\def\shipoutrange#1#2%
{\begingroup
@@ -706,7 +706,7 @@
\wd\arrangedpageA\paperwidth
\outputarrangedbox\arrangedpageA
\egroup
- \ifdim\ht\arrangedpageB=\zeropoint
+ \ifzeropt\ht\arrangedpageB
\exitloop
\fi}%
\global\arrangedpageN\zerocount
@@ -1367,10 +1367,10 @@
\installcorenamespace {pageshift}
\permanent\protected\tolerant\def\definepageshift[#1]#*[#2]#*[#3]%
- {\setvalue{\??pageshift#2:#1}{#3}}
+ {\defcsname\??pageshift#2:#1\endcsname{#3}}
-\let\page_boxes_h_shifts\empty
-\let\page_boxes_v_shifts\empty
+\lettonothing\page_boxes_h_shifts
+\lettonothing\page_boxes_v_shifts
\newcount\c_page_boxes_h_shifts
\newcount\c_page_boxes_v_shifts
diff --git a/tex/context/base/mkxl/page-inf.mkxl b/tex/context/base/mkxl/page-inf.mkxl
index 107591af3..4865d5990 100644
--- a/tex/context/base/mkxl/page-inf.mkxl
+++ b/tex/context/base/mkxl/page-inf.mkxl
@@ -22,8 +22,8 @@
\newtoks\everyresetversion
\newtoks\everysetupversion
-\mutable\let\currentversioninfo\empty
-\mutable\let\currentversiontext\empty
+\mutable\lettonothing\currentversioninfo
+\mutable\lettonothing\currentversiontext
\let\page_info_add_to_box\gobbleoneargument
@@ -35,12 +35,12 @@
\edef\currentversiontext{\dummyparameter\c!text}%
\else
\edef\currentversioninfo{#1}%
- \let \currentversiontext\empty
+ \lettonothing\currentversiontext
\fi
\ifcsname\??layoutinfo\currentversioninfo\endcsname
\let\page_info_add_to_box\page_info_add_to_box_indeed
\else
- \let\currentversioninfo\empty
+ \lettonothing\currentversioninfo
\let\page_info_add_to_box\gobbleoneargument
\fi
\the\everysetupversion}
@@ -57,7 +57,7 @@
{\begincsname\??layoutinfo#1\endcsname}
\installversioninfo\v!final
- {\let\currentversioninfo\empty
+ {\lettonothing\currentversioninfo
\let\page_info_add_to_box\gobbleoneargument}
\installversioninfo\v!concept
diff --git a/tex/context/base/mkxl/page-inj.mklx b/tex/context/base/mkxl/page-inj.mklx
index 8732e2628..02f853c55 100644
--- a/tex/context/base/mkxl/page-inj.mklx
+++ b/tex/context/base/mkxl/page-inj.mklx
@@ -70,13 +70,13 @@
\fi}
\def\page_injections_direct_settings_parameters#settings% #parameters%
- {\let\currentpageinjection\empty
+ {\lettonothing\currentpageinjection
\checkpageinjectionparent
\setupcurrentpageinjection[#settings]%
\page_injections_direct_indeed}
\def\page_injections_direct_parameters% #parameters%
- {\let\currentpageinjection\empty
+ {\lettonothing\currentpageinjection
\checkpageinjectionparent
\page_injections_direct_indeed}
diff --git a/tex/context/base/mkxl/page-lay.mkxl b/tex/context/base/mkxl/page-lay.mkxl
index 628e112b6..d030c3ff9 100644
--- a/tex/context/base/mkxl/page-lay.mkxl
+++ b/tex/context/base/mkxl/page-lay.mkxl
@@ -154,7 +154,7 @@
\page_layouts_check_next
\or % \setuplayout[name]
\ifx\currentlayout\v!reset
- \let\currentlayout\empty
+ \lettonothing\currentlayout
\fi
\letlayoutparameter\c!state\v!normal % global ? still needed ?
\glet\currentlayout\currentlayout % global
@@ -162,7 +162,7 @@
\page_layouts_check_next
\or % \setuplayout (reverts to main layout)
\letlayoutparameter\c!state\v!normal % global ? still needed ?
- \glet\currentlayout\empty % global
+ \glettonothing\currentlayout % global
\page_layouts_synchronize
\page_layouts_check_next
\fi
@@ -334,8 +334,8 @@
\let\v_page_target_top_fill \relax
\let\v_page_target_bottom_fill\relax
-\let\papersize \empty
-\let\printpapersize\empty
+\lettonothing\papersize
+\lettonothing\printpapersize
\def\v_page_target_top {\namedlayouttargetparameter\papersize\c!top }
\def\v_page_target_bottom {\namedlayouttargetparameter\papersize\c!bottom}
@@ -430,7 +430,7 @@
\fi}
\protected\def\page_paper_setup_size_settings[#1]% sometimes used to set paper/print size
- {\let\currentlayouttarget\empty
+ {\lettonothing\currentlayouttarget
\edef\m_layouttarget_paper_saved{\page_paper_the_paper_size{\layouttargetparameter\c!page }}%
\edef\m_layouttarget_print_saved{\page_paper_the_print_size{\layouttargetparameter\c!paper}}%
\setupcurrentlayouttarget[#1]%
@@ -570,7 +570,7 @@
\page_paper_set_restore\m_page_asked_paper\m_page_asked_print
%
% locate page target
- \let\currentlayouttarget\empty
+ \lettonothing\currentlayouttarget
\page_paper_reset_paper
\processcommacommand[\m_page_asked_paper]\page_paper_identify_target
\ifempty\currentlayouttarget
@@ -661,8 +661,8 @@
\let\synchronizegridsnapping\relax
\fi
-\let\p_page_layouts_width \empty
-\let\p_page_layouts_height\empty
+\lettonothing\p_page_layouts_width
+\lettonothing\p_page_layouts_height
\def\page_layouts_synchronize
{\setups[\layoutparameter\c!preset]\relax
@@ -879,8 +879,40 @@
\glet\v_page_layouts_pre_check\relax
\page_layouts_synchronize}
+% \def\page_layouts_check_default
+% {\ifcsname\namedlayouthash\v_real_page_normal\c!state\endcsname
+% \page_layouts_check_default_indeed\v_real_page_normal
+% \orelse\ifcsname\namedlayouthash\v_real_page_reverse\c!state\endcsname
+% \page_layouts_check_default_indeed\v_real_page_reverse
+% \orelse\ifcsname\namedlayouthash\v_real_page_named\c!state\endcsname
+% \page_layouts_check_default_indeed\v_real_page_named
+% \orelse\ifcsname\namedlayouthash\v_real_page_current\c!state\endcsname
+% \page_layouts_check_default_indeed\v_real_page_current
+% \orelse\ifcsname\namedlayouthash\v_real_page_odd_or_even\c!state\endcsname
+% \page_layouts_check_default_indeed\v_real_page_odd_or_even
+% \orelse\ifrelax\v_page_layouts_pre_check
+% % okay
+% \else
+% \page_layouts_check_revert
+% \fi}
+
+% \showframe
+%
+% \setuplayout [width=100mm,height=200mm]
+% \definelayout[shorta][height=80mm]
+% \definelayout[shortb][height=130mm]
+%
+% \starttext
+% \definelayout[2][shorta] \definelayout[4][shortb]
+% \definelayout[7][shorta] \definelayout[8][shortb] % we need to check before
+% \dorecurse{20}{#1: \samplefile{knuth}\par}
+% \stoptext
+
\def\page_layouts_check_default
- {\ifcsname\namedlayouthash\v_real_page_normal\c!state\endcsname
+ {\ifrelax\v_page_layouts_pre_check\else
+ \page_layouts_check_revert
+ \fi
+ \ifcsname\namedlayouthash\v_real_page_normal\c!state\endcsname
\page_layouts_check_default_indeed\v_real_page_normal
\orelse\ifcsname\namedlayouthash\v_real_page_reverse\c!state\endcsname
\page_layouts_check_default_indeed\v_real_page_reverse
@@ -890,10 +922,10 @@
\page_layouts_check_default_indeed\v_real_page_current
\orelse\ifcsname\namedlayouthash\v_real_page_odd_or_even\c!state\endcsname
\page_layouts_check_default_indeed\v_real_page_odd_or_even
- \orelse\ifrelax\v_page_layouts_pre_check
- % okay
- \else
- \page_layouts_check_revert
+ % \orelse\ifrelax\v_page_layouts_pre_check
+ % % okay
+ % \else
+ % \page_layouts_check_revert
\fi}
\permanent\protected\def\installlayoutmethod#1#2%
diff --git a/tex/context/base/mkxl/page-lin.mklx b/tex/context/base/mkxl/page-lin.mklx
index 5a1dc2e60..7383ab4ca 100644
--- a/tex/context/base/mkxl/page-lin.mklx
+++ b/tex/context/base/mkxl/page-lin.mklx
@@ -96,7 +96,8 @@
\def\page_lines_start_define
{\setxvalue{\??linenumberinginstance\currentlinenumbering}%
{\clf_registerlinenumbering
- continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ % continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ continue {\ifzero\c_page_lines_mode\v!yes\else\v!no\fi}%
start \linenumberingparameter\c!start
step \linenumberingparameter\c!step
method {\linenumberingparameter\c!method}%
@@ -107,7 +108,8 @@
{\clf_setuplinenumbering
\csname\??linenumberinginstance\currentlinenumbering\endcsname
{%
- continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ % continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ continue {\ifzero\c_page_lines_mode\v!yes\else\v!no\fi}%
}%
\relax}
@@ -116,7 +118,8 @@
\clf_setuplinenumbering
\lastnamedcs
{%
- continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ % continue {\ifnum\c_page_lines_mode=\zerocount\v!yes\else\v!no\fi}%
+ continue {\ifzero\c_page_lines_mode\v!yes\else\v!no\fi}%
start \linenumberingparameter\c!start
step \linenumberingparameter\c!step
method {\linenumberingparameter\c!method}%
@@ -222,17 +225,17 @@
{\edef\m_argument{#1}%
\ifx\m_argument\v!continue
\c_page_lines_mode\zerocount
- \let\currentlinenumbering\empty
+ \lettonothing\currentlinenumbering
\else
\c_page_lines_mode\plusone
\ifx\m_argument\v!empty
- \let\currentlinenumbering\empty
+ \lettonothing\currentlinenumbering
\orelse\ifhastok={#1}%
- \let\currentlinenumbering\empty
+ \lettonothing\currentlinenumbering
\setupcurrentlinenumbering[#1]%
\else
\doifelsenumber\m_argument
- {\let\currentlinenumbering\empty
+ {\lettonothing\currentlinenumbering
\letlinenumberingparameter\c!start\m_argument}
{\let\currentlinenumbering\m_argument}%
\fi
@@ -574,8 +577,8 @@
\permanent\def\currentreferencelinenumber{\clf_filterreference{linenumber}}
-\let\m_page_lines_from\empty
-\let\m_page_lines_to \empty
+\lettonothing\m_page_lines_from
+\lettonothing\m_page_lines_to
\permanent\protected\def\doifelsesamelinereference#1#2#3%
{\doifelsereferencefound{lr:b:#1}
diff --git a/tex/context/base/mkxl/page-mcl.mkxl b/tex/context/base/mkxl/page-mcl.mkxl
index e88371da1..416d22348 100644
--- a/tex/context/base/mkxl/page-mcl.mkxl
+++ b/tex/context/base/mkxl/page-mcl.mkxl
@@ -465,7 +465,7 @@
%
\reseteverypar % todo
%
- \ifdim\pagetotal=\zeropoint \else
+ \ifzeropt\pagetotal\else
\verticalstrut
\vskip-\struttotal
\fi
diff --git a/tex/context/base/mkxl/page-mix.mkxl b/tex/context/base/mkxl/page-mix.mkxl
index 21e923864..0210d75b3 100644
--- a/tex/context/base/mkxl/page-mix.mkxl
+++ b/tex/context/base/mkxl/page-mix.mkxl
@@ -262,7 +262,7 @@
\global\setbox\b_page_mix_preceding\vbox % pack ?
{\forgetall
\page_otr_command_flush_top_insertions
- \ifdim\htdp\b_page_mix_preceding=\zeropoint \else
+ \ifzeropt\htdp\b_page_mix_preceding\else
\writestatus\m!columns{preceding error}%
\unvbox\b_page_mix_preceding
\fi
@@ -401,7 +401,7 @@
%D \stopmixedcolumns
%D \stoptyping
-\mutable\let\currentmixedcolumnsmethod\empty
+\mutable\lettonothing\currentmixedcolumnsmethod
\installmacrostack\currentmixedcolumns
\installmacrostack\currentmixedcolumnsmethod
@@ -448,7 +448,7 @@
\def\page_mix_start_columns_b[#1][#2]%
{\ifhastok={#1}%
- \let\currentmixedcolumns\empty
+ \lettonothing\currentmixedcolumns
\page_mix_error_b
\page_mix_start_columns_checked\page_mix_start_columns_b_yes\page_mix_start_columns_b_nop[#1]%
\else
@@ -473,7 +473,7 @@
{\writestatus\m!columns{best use an instance of mixed columns}}
\def\page_mix_start_columns_c[#1][#2]%
- {\let\currentmixedcolumns\empty
+ {\lettonothing\currentmixedcolumns
\page_mix_start_columns_checked
\page_mix_start_columns_c_yes
\page_mix_start_columns_c_nop}
@@ -614,7 +614,7 @@
% \defcsname\??mixedcolumnsbefore\s!otr\endcsname
% {\par
-% \ifdim\pagetotal=\zeropoint \else
+% \ifzeropt\pagetotal\else
% \verticalstrut % probably no longer needed
% \vskip-\struttotal % probably no longer needed
% \fi}
@@ -625,7 +625,7 @@
% {\par
% \global\advance\c_page_mix_otr_nesting\plusone
% \ifcase\c_page_mix_otr_nesting\or
-% \ifdim\pagetotal=\zeropoint \else
+% \ifzeropt\pagetotal\else
% \obeydepth % we could handle this in pre material
% \fi
% \fi}
@@ -634,7 +634,7 @@
{\par
\global\advance\c_page_mix_otr_nesting\plusone
\ifcase\c_page_mix_otr_nesting\or
- \ifdim\pagetotal=\zeropoint \else
+ \ifzeropt\pagetotal\else
% make sure that whitespace and blanks are done
\strut
\vskip-\lineheight
@@ -871,7 +871,7 @@
\page_mix_construct_and_shipout\box\b_page_mix_collected\zerocount % three arguments
\setbox\b_page_mix_collected\vpack{\clf_mixflushrest}% we could avoid this
\clf_mixcleanup
- \ifdim\ht\b_page_mix_collected=\zeropoint
+ \ifzeropt\ht\b_page_mix_collected
\exitloop
\fi
\fi}%
diff --git a/tex/context/base/mkxl/page-one.mkxl b/tex/context/base/mkxl/page-one.mkxl
index c14173223..40d7d0af0 100644
--- a/tex/context/base/mkxl/page-one.mkxl
+++ b/tex/context/base/mkxl/page-one.mkxl
@@ -337,7 +337,7 @@
\newskip \s_page_one_between_top_insert
\def\page_one_prepare_top_float
- {\ifdim\d_page_floats_inserted_top=\zeropoint
+ {\ifzeropt\d_page_floats_inserted_top
\settrue\c_page_one_top_of_insert
\else
\setfalse\c_page_one_top_of_insert
@@ -558,7 +558,7 @@
\protected\def\page_one_command_flush_margin_blocks
{\ifconditional\c_page_margin_blocks_present % \ifvoid\b_page_margin_blocks \else
- \ifdim\pagetotal=\zeropoint
+ \ifzeropt\pagetotal
\null % \fixedspace
\fi
\page_otr_command_next_page % \page
diff --git a/tex/context/base/mkxl/page-pcl.mkxl b/tex/context/base/mkxl/page-pcl.mkxl
index 02f98a543..f546a6119 100644
--- a/tex/context/base/mkxl/page-pcl.mkxl
+++ b/tex/context/base/mkxl/page-pcl.mkxl
@@ -788,7 +788,7 @@
{\begingroup
\begingroup
\doifelseassignment{#1}%
- {\let\currentpagecolumns\empty
+ {\lettonothing\currentpagecolumns
\setuppagecolumns[#1]}%
{\edef\currentpagecolumns{#1}}%
\edef\p_page{\pagecolumnsparameter\c!page}%
diff --git a/tex/context/base/mkxl/page-pst.mkxl b/tex/context/base/mkxl/page-pst.mkxl
index 16f71e0dc..79e3be29d 100644
--- a/tex/context/base/mkxl/page-pst.mkxl
+++ b/tex/context/base/mkxl/page-pst.mkxl
@@ -52,7 +52,7 @@
\newcount \c_page_postponed_blocks_next_page % set at the lua end
\newconditional\c_page_postponed_busy
-\mutable\let\currentpostponedpage\empty
+\mutable\lettonothing\currentpostponedpage
\permanent\protected\defcsname\e!start\v!postponing\endcsname
{\bgroup
diff --git a/tex/context/base/mkxl/page-sid.mkxl b/tex/context/base/mkxl/page-sid.mkxl
index ec53a23a4..614945a9d 100644
--- a/tex/context/base/mkxl/page-sid.mkxl
+++ b/tex/context/base/mkxl/page-sid.mkxl
@@ -172,7 +172,7 @@
% cutspace
\fi
\fi
- \ifdim\d_page_sides_shift=\zeropoint \relax
+ \ifzeropt\d_page_sides_shift
\ifnum\c_page_sides_float_type=\plusfour
\global\advance\d_page_sides_shift\d_page_sides_extrashift
\global\d_page_sides_extrashift\zeropoint
@@ -442,6 +442,9 @@
{\iftracesidefloats
\enabletrackers[otr.forcestrutdepth]% \c_page_force_strut_depth_trace_mode\plusone
\fi
+ % \unless\ifvmode
+ % \writestatus{side floats}{confusion}
+ % \fi
% flush what we have and check
\forcestrutdepth
% trigger pagebuilder, \pageboundary gives nicer tracing
@@ -449,10 +452,7 @@
\penalty\zerocount % works too
\else
%\tracingpages\plusone \tracingonline\plustwo
- \begingroup
- % \pageboundarypenalty\plustenthousand % is now:
\pageboundary\plustenthousand % becomes a penalty (after triggering the callback) (experimental!)
- \endgroup
%\tracingpages\zerocount
\fi
\page_otr_command_set_vsize} % new, no longer really needed
diff --git a/tex/context/base/mkxl/page-str.mkxl b/tex/context/base/mkxl/page-str.mkxl
index 067283ee0..e883d8859 100644
--- a/tex/context/base/mkxl/page-str.mkxl
+++ b/tex/context/base/mkxl/page-str.mkxl
@@ -31,7 +31,7 @@
\unprotect
-\mutable\let\currentoutputstream\empty
+\mutable\lettonothing\currentoutputstream
\newif \ifinoutputstream % will become a conditional or mode
\newtoks \everyenableoutputstream
diff --git a/tex/context/base/mkxl/page-txt.mklx b/tex/context/base/mkxl/page-txt.mklx
index a66dc0829..f8daa0c47 100644
--- a/tex/context/base/mkxl/page-txt.mklx
+++ b/tex/context/base/mkxl/page-txt.mklx
@@ -90,8 +90,8 @@
\fi
\to \everysetuplayoutelement
-\mutable\let\currenttextstate \empty
-\mutable\let\previoustextstate\empty
+\mutable\lettonothing\currenttextstate
+\mutable\lettonothing\previoustextstate
\def\page_layouts_reset_element_status#vertical%
{\gdefcsname\??layouttextsreset#vertical\endcsname{\page_layouts_set_element_status_normal#vertical}}
@@ -175,7 +175,7 @@
\permanent\protected\def\setupfootertexts{\setuptexts[\v!footer]}
\permanent\protected\def\setupbottomtexts{\setuptexts[\v!bottom]}
-\mutable\let\currentlayoutelementstate\empty
+\mutable\lettonothing\currentlayoutelementstate
\permanent\tolerant\protected\def\setuptexts[#vertical]#spacer[#horizontal]#spacer[#a]#spacer[#b]#spacer[#c]#spacer[#d]%
{\ifarguments
@@ -221,7 +221,7 @@
\setvalue{\??layouttextstrut\v!yes}{\setstrut\strut} % maybe more variants
-\let\m_page_layouts_element_content\empty
+\lettonothing\m_page_layouts_element_content
\protected\def\page_layouts_process_element_single#content%
{\edef\m_page_layouts_element_content{\detokenize{#content}}% so no \v!xxx
@@ -272,7 +272,7 @@
\newcount\c_page_layouts_element_state_n
-\mutable\let\textlinestatus\empty
+\mutable\lettonothing\textlinestatus
\def\page_layouts_set_element_status#vertical%
{\c_page_layouts_element_state_n=0\namedlayoutelementparameter#vertical\c!n\relax
@@ -451,8 +451,8 @@
\box\b_page_layouts_element
\vkern-#height\relax}
-\let\page_layouts_place_extra_text_left \empty % historic
-\let\page_layouts_place_extra_text_right\empty % historic
+\lettonothing\page_layouts_place_extra_text_left % historic
+\lettonothing\page_layouts_place_extra_text_right % historic
\def\page_layouts_place_text_line_right
{\hpack
@@ -780,8 +780,8 @@
\let\page_layouts_place_extra_text_left \page_layouts_place_page_number_left
\let\page_layouts_place_extra_text_right\page_layouts_place_page_number_right
\else
- \let\page_layouts_place_extra_text_left \empty
- \let\page_layouts_place_extra_text_right\empty
+ \lettonothing\page_layouts_place_extra_text_left
+ \lettonothing\page_layouts_place_extra_text_right
\fi}
\def\page_layouts_identify_page_number_location
diff --git a/tex/context/base/mkxl/publ-ini.mkxl b/tex/context/base/mkxl/publ-ini.mkxl
index a9597d854..25b436f7b 100644
--- a/tex/context/base/mkxl/publ-ini.mkxl
+++ b/tex/context/base/mkxl/publ-ini.mkxl
@@ -112,8 +112,8 @@
%D to split between cite and list here as it only complicates matters (timing) and is
%D not clear either.
-\mutable\let\currentbtxspecification \empty
-\mutable\let\currentbtxspecificationfallback\empty
+\mutable\lettonothing\currentbtxspecification
+\mutable\lettonothing\currentbtxspecificationfallback
\installmacrostack\currentbtxspecification
\installmacrostack\currentbtxspecificationfallback
@@ -139,7 +139,7 @@
\edef\currentbtxspecification{#1}%
\edef\currentbtxspecificationfallback{\namedbtxparameter\currentbtxspecification\c!default}%
\ifx\currentbtxspecificationfallback\currentbtxspecification
- \let\currentbtxspecificationfallback\empty
+ \lettonothing\currentbtxspecificationfallback
\fi
\clf_btxsetspecification{\currentbtxspecification}}
@@ -152,7 +152,7 @@
{\edef\currentbtxspecification{#1}%
\edef\currentbtxspecificationfallback{\namedbtxparameter\currentbtxspecification\c!default}%
\ifx\currentbtxspecificationfallback\currentbtxspecification
- \let\currentbtxspecificationfallback\empty
+ \lettonothing\currentbtxspecificationfallback
\fi
% has to be done explicitly: \loadbtxdefinitionfile[\currentbtxspecification]%
\ifempty\currentbtxspecification
@@ -367,8 +367,8 @@
% access
-\let\currentbtxtag \empty
-\let\currentbtxdataset\v!default
+\lettonothing\currentbtxtag
+\let \currentbtxdataset\v!default
\permanent\protected\def\setbtxentry[#1]% or maybe btxsetentry
{\edef\currentbtxtag{\clf_btxsetentry{\currentbtxdataset}{#1}}}
@@ -441,30 +441,31 @@
%D Variables:
-\mutable\let\currentbtxbacklink \empty \permanent\protected\def\btxsetbacklink {\def\currentbtxbacklink}
-\mutable\let\currentbtxcategory \empty \permanent\protected\def\btxsetcategory {\def\currentbtxcategory}
-\mutable\let\currentbtxcombis \empty \permanent\protected\def\btxsetcombis {\def\currentbtxcombis}
-\mutable\let\currentbtxdataset \empty \permanent\protected\def\btxsetdataset {\def\currentbtxdataset}
-\mutable\let\currentbtxfirst \empty \permanent\protected\def\btxsetfirst {\def\currentbtxfirst}
-\mutable\let\currentbtxsecond \empty \permanent\protected\def\btxsetsecond {\def\currentbtxsecond}
-\mutable\let\currentbtxsuffix \empty \permanent\protected\def\btxsetsuffix {\def\currentbtxsuffix}
-\mutable\let\currentbtxinternal \empty \permanent\protected\def\btxsetinternal {\def\currentbtxinternal}
-\mutable\let\currentbtxlefttext \empty \permanent\protected\def\btxsetlefttext {\def\currentbtxlefttext}
-\mutable\let\currentbtxrighttext \empty \permanent\protected\def\btxsetrighttext {\def\currentbtxrighttext}
-\mutable\let\currentbtxbefore \empty \permanent\protected\def\btxsetbefore {\def\currentbtxbefore}
-\mutable\let\currentbtxafter \empty \permanent\protected\def\btxsetafter {\def\currentbtxafter}
-\mutable\let\currentbtxlanguage \empty \permanent\protected\def\btxsetlanguage {\def\currentbtxlanguage}
-\mutable\let\currentbtxtag \empty \permanent\protected\def\btxsettag {\def\currentbtxtag}
-\mutable\let\currentbtxnumber \empty \permanent\protected\def\btxsetnumber {\def\currentbtxnumber}
-\mutable\let\currentbtxfirstinternal\empty \permanent\protected\def\btxsetfirstinternal{\def\currentbtxfirstinternal}
-\mutable\let\currentbtxlastinternal \empty \permanent\protected\def\btxsetlastinternal {\def\currentbtxlastinternal}
+\mutable\lettonothing\currentbtxbacklink \permanent\protected\def\btxsetbacklink {\def\currentbtxbacklink}
+\mutable\lettonothing\currentbtxcategory \permanent\protected\def\btxsetcategory {\def\currentbtxcategory}
+\mutable\lettonothing\currentbtxcombis \permanent\protected\def\btxsetcombis {\def\currentbtxcombis}
+\mutable\lettonothing\currentbtxdataset \permanent\protected\def\btxsetdataset {\def\currentbtxdataset}
+\mutable\lettonothing\currentbtxfirst \permanent\protected\def\btxsetfirst {\def\currentbtxfirst}
+\mutable\lettonothing\currentbtxsecond \permanent\protected\def\btxsetsecond {\def\currentbtxsecond}
+\mutable\lettonothing\currentbtxsuffix \permanent\protected\def\btxsetsuffix {\def\currentbtxsuffix}
+\mutable\lettonothing\currentbtxinternal \permanent\protected\def\btxsetinternal {\def\currentbtxinternal}
+\mutable\lettonothing\currentbtxlefttext \permanent\protected\def\btxsetlefttext {\def\currentbtxlefttext}
+\mutable\lettonothing\currentbtxrighttext \permanent\protected\def\btxsetrighttext {\def\currentbtxrighttext}
+\mutable\lettonothing\currentbtxbefore \permanent\protected\def\btxsetbefore {\def\currentbtxbefore}
+\mutable\lettonothing\currentbtxafter \permanent\protected\def\btxsetafter {\def\currentbtxafter}
+\mutable\lettonothing\currentbtxlanguage \permanent\protected\def\btxsetlanguage {\def\currentbtxlanguage}
+\mutable\lettonothing\currentbtxtag \permanent\protected\def\btxsettag {\def\currentbtxtag}
+\mutable\lettonothing\currentbtxnumber \permanent\protected\def\btxsetnumber {\def\currentbtxnumber}
+\mutable\lettonothing\currentbtxfirstinternal \permanent\protected\def\btxsetfirstinternal{\def\currentbtxfirstinternal}
+\mutable\lettonothing\currentbtxlastinternal \permanent\protected\def\btxsetlastinternal {\def\currentbtxlastinternal}
\mutable\let\currentbtxauthorvariant\v!normal \permanent\protected\def\btxsetauthorvariant{\def\currentbtxauthorvariant}
-\mutable\let\currentbtxfirstnames \empty \permanent\protected\def\btxsetfirstnames {\let\currentbtxfirstnames\currentbtxfirstnames_indeed}
-\mutable\let\currentbtxinitials \empty \permanent\protected\def\btxsetinitials {\let\currentbtxinitials \currentbtxinitials_indeed }
-\mutable\let\currentbtxjuniors \empty \permanent\protected\def\btxsetjuniors {\let\currentbtxjuniors \currentbtxjuniors_indeed }
-\mutable\let\currentbtxsurnames \empty \permanent\protected\def\btxsetsurnames {\let\currentbtxsurnames \currentbtxsurnames_indeed }
-\mutable\let\currentbtxvons \empty \permanent\protected\def\btxsetvons {\let\currentbtxvons \currentbtxvons_indeed }
+
+\mutable\lettonothing\currentbtxfirstnames \permanent\protected\def\btxsetfirstnames {\let\currentbtxfirstnames\currentbtxfirstnames_indeed}
+\mutable\lettonothing\currentbtxinitials \permanent\protected\def\btxsetinitials {\let\currentbtxinitials \currentbtxinitials_indeed }
+\mutable\lettonothing\currentbtxjuniors \permanent\protected\def\btxsetjuniors {\let\currentbtxjuniors \currentbtxjuniors_indeed }
+\mutable\lettonothing\currentbtxsurnames \permanent\protected\def\btxsetsurnames {\let\currentbtxsurnames \currentbtxsurnames_indeed }
+\mutable\lettonothing\currentbtxvons \permanent\protected\def\btxsetvons {\let\currentbtxvons \currentbtxvons_indeed }
\newconstant\currentbtxoverflow \permanent\protected\def\btxsetoverflow #1{\currentbtxoverflow #1\relax}
\newconstant\currentbtxconcat \permanent\protected\def\btxsetconcat #1{\currentbtxconcat #1\relax}
@@ -479,70 +480,70 @@
\protected\def\currentbtxsurnames_indeed {\clf_btxcurrentsurnames \numexpr\currentbtxauthorindex\relax}
\protected\def\currentbtxvons_indeed {\clf_btxcurrentvons \numexpr\currentbtxauthorindex\relax}
-\mutable\let\currentbtxfirstpage \empty \permanent\protected\def\btxsetfirstpage#1{\def\currentbtxfirstpage{\btx_page_number{#1}}}
-\mutable\let\currentbtxlastpage \empty \permanent\protected\def\btxsetlastpage #1{\def\currentbtxlastpage {\btx_page_number{#1}}}
-
-\mutable\let\currentbtxfield \empty
-\mutable\let\currentbtxfielddoi \empty
-\mutable\let\currentbtxfieldmonth \empty
-\mutable\let\currentbtxfieldyear \empty
-\mutable\let\currentbtxfieldurl \empty
-\mutable\let\currentbtxcriterium \empty
-\mutable\let\currentbtxlist \empty
-\mutable\let\currentbtxlistentry \empty
-\mutable\let\currentbtxlistindex \empty
-\mutable\let\currentbtxreference \empty
-\mutable\let\currentbtxrenderingtitle \empty
-\mutable\let\currentbtxcitetag \empty
+\mutable\lettonothing\currentbtxfirstpage \permanent\protected\def\btxsetfirstpage#1{\def\currentbtxfirstpage{\btx_page_number{#1}}}
+\mutable\lettonothing\currentbtxlastpage \permanent\protected\def\btxsetlastpage #1{\def\currentbtxlastpage {\btx_page_number{#1}}}
+
+\mutable\lettonothing\currentbtxfield
+\mutable\lettonothing\currentbtxfielddoi
+\mutable\lettonothing\currentbtxfieldmonth
+\mutable\lettonothing\currentbtxfieldyear
+\mutable\lettonothing\currentbtxfieldurl
+\mutable\lettonothing\currentbtxcriterium
+\mutable\lettonothing\currentbtxlist
+\mutable\lettonothing\currentbtxlistentry
+\mutable\lettonothing\currentbtxlistindex
+\mutable\lettonothing\currentbtxreference
+\mutable\lettonothing\currentbtxrenderingtitle
+\mutable\lettonothing\currentbtxcitetag
\mutable\def\currentbtxauthorvariant{normal}
\protected\def\btx_reset_list % not needed as we're grouped
- {\let\currentbtxcombis \empty
- \let\currentbtxcategory \empty
- \let\currentbtxinternal \empty
- \let\currentbtxlefttext \empty
- \let\currentbtxrighttext\empty
- \let\currentbtxbefore \empty
- \let\currentbtxafter \empty
- \let\currentbtxbacklink \empty
- \let\currentbtxlanguage \empty
- \let\currentbtxsuffix \empty
- %\let\currentbtxdataset \empty % will always be set
- %\let\currentbtxtag \empty % will always be set
- \let\currentbtxnumber \empty}
+ {\lettonothing\currentbtxcombis
+ \lettonothing\currentbtxcategory
+ \lettonothing\currentbtxinternal
+ \lettonothing\currentbtxlefttext
+ \lettonothing\currentbtxrighttext
+ \lettonothing\currentbtxbefore
+ \lettonothing\currentbtxafter
+ \lettonothing\currentbtxbacklink
+ \lettonothing\currentbtxlanguage
+ \lettonothing\currentbtxsuffix
+ %\lettonothing\currentbtxdataset % will always be set
+ %\lettonothing\currentbtxtag % will always be set
+ \lettonothing\currentbtxnumber}
\protected\def\btx_reset_cite % check for less .. not all resets needed when we're grouped (only subcites)
- {\let \currentbtxfirst \empty
- \let \currentbtxsecond \empty
- \let \currentbtxsuffix \empty
- \let \currentbtxinternal \empty
- \let \currentbtxlefttext \empty
- \let \currentbtxrighttext \empty
- \let \currentbtxbefore \empty
- \let \currentbtxafter \empty
- \let \currentbtxbacklink \empty
- \let \currentbtxlanguage \empty
- %\let \currentbtxdataset \empty % will always be set, beware of local reset ~
- %\let \currentbtxtag \empty % will always be set, beware of local reset ~
- \let \currentbtxnumber \empty
- \setconstant\currentbtxoverflow \zerocount
- \setconstant\currentbtxconcat \zerocount
- \setconstant\currentbtxcount \zerocount}
+ {\lettonothing\currentbtxfirst
+ \lettonothing\currentbtxsecond
+ \lettonothing\currentbtxsuffix
+ \lettonothing\currentbtxinternal
+ \lettonothing\currentbtxlefttext
+ \lettonothing\currentbtxrighttext
+ \lettonothing\currentbtxbefore
+ \lettonothing\currentbtxafter
+ \lettonothing\currentbtxbacklink
+ \lettonothing\currentbtxlanguage
+ %\lettonothing\currentbtxdataset % will always be set, beware of local reset ~
+ %\lettonothing\currentbtxtag % will always be set, beware of local reset ~
+ \lettonothing\currentbtxnumber
+ \setconstant\currentbtxoverflow\zerocount
+ \setconstant\currentbtxconcat\zerocount
+ \setconstant\currentbtxcount\zerocount}
\protected\def\btx_reset_page % probably not needed
- {\let \currentbtxfirstpage \empty
- \let \currentbtxlastpage \empty
- \let \currentbtxfirstinternal\empty
- \let \currentbtxlastinternal \empty
- \setconstant\currentbtxoverflow \zerocount
- \setconstant\currentbtxconcat \zerocount
- \setconstant\currentbtxcount \zerocount}
+ {\lettonothing\currentbtxfirstpage
+ \lettonothing\currentbtxlastpage
+ \lettonothing\currentbtxfirstinternal
+ \lettonothing\currentbtxlastinternal
+ \setconstant\currentbtxoverflow\zerocount
+ \setconstant\currentbtxconcat\zerocount
+ \setconstant\currentbtxcount\zerocount}
\protected\def\btx_reset_numbering % probably not needed
- {\let \currentbtxfirst \empty
- \let \currentbtxsecond\empty
- \let \currentbtxsuffix\empty
+ {\lettonothing\currentbtxfirst
+ \lettonothing\currentbtxsecond
+ \lettonothing\currentbtxsuffix
\setconstant\currentbtxconcat\zerocount}
%D Pages:
@@ -775,9 +776,9 @@
\fi
%
\iflocation
- \letinteractionparameter\c!style\empty
-% \letinteractionparameter\c!color\empty
-% \letinteractionparameter\c!contrastcolor\empty
+ \resetinteractionparameter\c!style
+ %\resetinteractionparameter\c!color
+ %\resetinteractionparameter\c!contrastcolor
\fi
\to \everybtxlistrendering
@@ -968,7 +969,7 @@
\newcount\c_btx_list_index
-\let\m_btx_list_action\empty
+\lettonothing\m_btx_list_action
\def\publ_flush_list_step_command
{\btxsetlisttag{\c_btx_list_index}
@@ -1170,8 +1171,8 @@
\aliased\let\btxcitereference\btx_cite_reference_inject
-\mutable\let\currentbtxnumbering \empty
-\mutable\let\currentbtxcitealternative \empty
+\mutable\lettonothing\currentbtxnumbering
+\mutable\lettonothing\currentbtxcitealternative
\appendtoks
\edef\currentbtxnumbering{\btxrenderingparameter\c!numbering}%
@@ -1181,7 +1182,7 @@
\letlistparameter\c!headnumber\v!always
\orelse\ifx\currentbtxnumbering\v!no
\letlistparameter\c!headnumber\v!no
- \let\currentbtxnumbering\empty
+ \lettonothing\currentbtxnumbering
% \letlistparameter\c!textcommand\outdented % needed? we can use titlealign
\letlistparameter\c!symbol \v!none
\letlistparameter\c!aligntitle \v!yes
@@ -1303,7 +1304,7 @@
\newconditional\btxinteractivetext
\newconditional\btxinteractivepage
-\mutable\let\currentbtxinteraction\empty
+\mutable\lettonothing\currentbtxinteraction
\installcorenamespace{btxinteraction}
@@ -1323,7 +1324,7 @@
\ifx\currentbtxinteraction\v!stop
\setfalse\btxinteractive
\else
- \enforced\let\structurelistlocation\empty
+ \enforced\lettonothing\structurelistlocation
\settrue\btxinteractive
\begincsname\??btxinteraction\currentbtxinteraction\endcsname
\fi
@@ -1376,13 +1377,13 @@
% text : not to list, show in text
% always : mark for list, show in text
-\let\p_publ_cite_before \empty
-\let\p_publ_cite_after \empty
-\let\p_publ_cite_lefttext \empty
-\let\p_publ_cite_righttext\empty
+\lettonothing\p_publ_cite_before
+\lettonothing\p_publ_cite_after
+\lettonothing\p_publ_cite_lefttext
+\lettonothing\p_publ_cite_righttext
-\mutable\let\currentbtxciteuservariables\empty
-\mutable\let\currentbtxcitealternative \empty
+\mutable\lettonothing\currentbtxciteuservariables
+\mutable\lettonothing\currentbtxcitealternative
\permanent\protected\def\btxhybridcite % so one can alias the old
{\dontleavehmode
@@ -1393,7 +1394,7 @@
{\strictdoifelsenextoptional{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}}
\protected\def\publ_cite_tags_indeed#1%
- {\letinteractionparameter\c!style\empty
+ {\resetinteractionparameter\c!style
\setbtxparametersetroot\s!cite % we need to get the default
\edef\currentbtxcitealternative{\btxparameter\c!alternative}%
\setbtxparameterset\s!cite\currentbtxcitealternative
@@ -1406,14 +1407,14 @@
{\doifelseassignment{#1}\publ_cite_tags_settings_indeed\publ_cite_tags_variants_indeed{#1}}
\def\publ_cite_tags_settings_indeed#1[#2]%
- {\letinteractionparameter\c!style\empty
- %\letinteractionparameter\c!color\empty
- \letdummyparameter\c!reference \empty
- \letdummyparameter\c!alternative\empty
- \letdummyparameter\c!before \empty
- \letdummyparameter\c!after \empty
- \letdummyparameter\c!lefttext \empty
- \letdummyparameter\c!righttext \empty
+ {\resetinteractionparameter\c!style
+ %\resetinteractionparameter\c!color
+ \resetdummyparameter\c!reference
+ \resetdummyparameter\c!alternative
+ \resetdummyparameter\c!before
+ \resetdummyparameter\c!after
+ \resetdummyparameter\c!lefttext
+ \resetdummyparameter\c!righttext
\getdummyparameters[#1]%
\edef\p_reference{\dummyparameter\c!reference}%
\ifempty\p_reference
@@ -1447,7 +1448,7 @@
\endgroup}
\def\publ_cite_tags_variants_indeed#1[#2]%
- {\letinteractionparameter\c!style\empty
+ {\resetinteractionparameter\c!style
\edef\currentbtxcitealternative{#1}%
\edef\currentbtxcitetag{#2}%
\setbtxparameterset\s!cite\currentbtxcitealternative
@@ -1909,7 +1910,7 @@
% \btxusecommand[btx:apa:list:article:title]{foo}
% \btxstopstyle
-\mutable\let\m_btx_saved_current\empty
+\mutable\lettonothing\m_btx_saved_current
\permanent\protected\def\btxstartstyle[#1]%
{\begingroup
diff --git a/tex/context/base/mkxl/regi-ini.mkxl b/tex/context/base/mkxl/regi-ini.mkxl
index 515b6afd6..8ba7edc42 100644
--- a/tex/context/base/mkxl/regi-ini.mkxl
+++ b/tex/context/base/mkxl/regi-ini.mkxl
@@ -23,7 +23,7 @@
%D Beware, the enable and disable commands are global switches, so best use the
%D start|/|stop commands.
-\mutable\let\currentregime\empty
+\mutable\lettonothing\currentregime
\permanent\protected\def\enableregime[#1]{\clf_enableregime{#1}}
\permanent\protected\def\disableregime {\clf_disableregime}
diff --git a/tex/context/base/mkxl/scrn-bar.mklx b/tex/context/base/mkxl/scrn-bar.mklx
index 4cfcbde81..8d2f30d03 100644
--- a/tex/context/base/mkxl/scrn-bar.mklx
+++ b/tex/context/base/mkxl/scrn-bar.mklx
@@ -64,7 +64,7 @@
{\iflocation
\begingroup
\ifhastok={#tag}%
- \let\currentinteractionbar\empty
+ \lettonothing\currentinteractionbar
\setupcurrentinteractionbar[#tag]%
\edef\currentinteractionbar{\interactionbarparameter\c!alternative}%
\else
@@ -112,7 +112,7 @@
\def\scrn_bar_buttons_indeed#settings#list%
{\begingroup
- %\let\currentinteractionbar\empty
+ %\lettonothing\currentinteractionbar
\setupcurrentinteractionbar[#settings]%
\d_scrn_bar_width \interactionbarparameter\c!width\relax
\d_scrn_bar_distance\interactionbarparameter\c!distance\relax
@@ -121,7 +121,7 @@
\fi
\doifnothing{\interactionbarparameter\c!height}{\letinteractionbarparameter\c!height\v!broad}%
\doifnothing{\interactionbarparameter\c!depth }{\letinteractionbarparameter\c!depth\zeropoint}%%%
- \letinteractionbarparameter\c!background\empty
+ \resetinteractionbarparameter\c!background
\setbox2\hbox{\inheritedinteractionbarframed{\symbol[\interactionparameter\c!symbolset][\v!previouspage]}}%
\scratchheight\ht2 % needed because we default to nothing
\letinteractionbarparameter\c!strut\v!no
diff --git a/tex/context/base/mkxl/scrn-but.mklx b/tex/context/base/mkxl/scrn-but.mklx
index 9832ffbbb..a3715c813 100644
--- a/tex/context/base/mkxl/scrn-but.mklx
+++ b/tex/context/base/mkxl/scrn-but.mklx
@@ -328,8 +328,8 @@
\aliased\let\setupinteractionmenus\setupinteractionmenu
-\mutable\let\currentinteractionmenudistance\empty
-\mutable\let\currentinteractionmenustate \empty
+\mutable\lettonothing\currentinteractionmenudistance
+\mutable\lettonothing\currentinteractionmenustate
\let\scrn_menu_action\relax
@@ -434,7 +434,7 @@
\newconditional\c_scrn_menu_zerodimensions
-\mutable\let\currentinteractionmenulocation\empty
+\mutable\lettonothing\currentinteractionmenulocation
\def\scrn_menu_set_used
{\d_scrn_menu_offset_left \ifchkdim\interactionmenuparameter\c!leftoffset \or\lastchkdim\else\zeropoint\fi
@@ -729,7 +729,7 @@
\permanent\protected\def\scrn_menu_got_start[#action]#text\stopgot
{\scrn_menu_action_start
\letinteractionmenuparameter\c!frame\v!off
- \letinteractionmenuparameter\c!background\empty
+ \resetinteractionmenuparameter\c!background
\scrn_button_make
\interactionmenuparameter
\inheritedinteractionmenuframed
@@ -742,7 +742,7 @@
\permanent\protected\def\scrn_menu_nop_start#text\stopnop
{\scrn_menu_action_start
\letinteractionmenuparameter\c!frame\v!off
- \letinteractionmenuparameter\c!background\empty
+ \resetinteractionmenuparameter\c!background
\letinteractionmenuparameter\c!empty\v!yes
\inheritedinteractionmenuframed{\ignorespaces#text\removeunwantedspaces}%
\scrn_menu_action_stop}
@@ -750,7 +750,7 @@
\permanent\protected\def\scrn_menu_txt_start#text\stoptxt
{\scrn_menu_action_start
\letinteractionmenuparameter\c!frame\v!off
- \letinteractionmenuparameter\c!background\empty
+ \resetinteractionmenuparameter\c!background
\inheritedinteractionmenuframed{\ignorespaces#text\removeunwantedspaces}%
\scrn_menu_action_stop}
@@ -1005,7 +1005,7 @@
\def\scrn_menu_menu_button_b#settings#dummy#text#action%
{\dontleavehmode \begingroup
- \let\currentbutton\empty
+ \lettonothing\currentbutton
\setupcurrentbutton[#settings]%
\scrn_button_make
\buttonparameter
diff --git a/tex/context/base/mkxl/scrn-fld.mklx b/tex/context/base/mkxl/scrn-fld.mklx
index 6c134268c..de448bf50 100644
--- a/tex/context/base/mkxl/scrn-fld.mklx
+++ b/tex/context/base/mkxl/scrn-fld.mklx
@@ -110,13 +110,13 @@
\setupforms
[\c!method=XML] % no need for everyjob initialization as this is the default
-\mutable\let\currentfieldbackgroundcolor \empty
-\mutable\let\currentfieldbackgroundcolorvalue\empty
-\mutable\let\currentfieldbodycategory \empty
-\mutable\let\currentfieldframecolor \empty
-\mutable\let\currentfieldframecolorvalue \empty
-\mutable\let\currentfieldlabel \empty
-\mutable\let\currentfieldstackname \empty
+\mutable\lettonothing\currentfieldbackgroundcolor
+\mutable\lettonothing\currentfieldbackgroundcolorvalue
+\mutable\lettonothing\currentfieldbodycategory
+\mutable\lettonothing\currentfieldframecolor
+\mutable\lettonothing\currentfieldframecolorvalue
+\mutable\lettonothing\currentfieldlabel
+\mutable\lettonothing\currentfieldstackname
\appendtoks
\iflocation
@@ -327,7 +327,7 @@
%D (implemented as properties).
\appendtoks
- \let\currentfieldcategory\empty
+ \lettonothing\currentfieldcategory
\doifelse{\interactionparameter\c!fieldlayer}\v!auto
{\setupcurrentfieldcategory[\c!fieldlayer=\currentviewerlayer]}%
{\setupcurrentfieldcategory[\c!fieldlayer=]}%
@@ -476,13 +476,13 @@
\newconditional\fieldisvertical
\newconditional\fieldishorizontal
-\mutable\let\currentfieldtotalframed \empty
-\mutable\let\currentfieldlabelframed \empty
-\mutable\let\currentfieldcontentframed\empty
+\mutable\lettonothing\currentfieldtotalframed
+\mutable\lettonothing\currentfieldlabelframed
+\mutable\lettonothing\currentfieldcontentframed
-\mutable\let\fieldtotalframedparameterhash \empty % weird that we have to flag this
-\mutable\let\fieldlabelframedparameterhash \empty % idem
-\mutable\let\fieldcontentframedparameterhash\empty % idem
+\mutable\lettonothing\fieldtotalframedparameterhash % weird that we have to flag this
+\mutable\lettonothing\fieldlabelframedparameterhash % idem
+\mutable\lettonothing\fieldcontentframedparameterhash % idem
\permanent\tolerant\protected\def\field[#tag]#spacer[#label]% can be sped up with \setupcurrentfieldtotalframed etc
{\iflocation
@@ -670,7 +670,7 @@
\tolerant\def\scrn_tooltip_ignore[#settings]#:#anchortext#tiptext%
{#anchortext}
-\mutable\let\currenttooltipname\empty
+\mutable\lettonothing\currenttooltipname
\tolerant\def\scrn_tooltip_indeed[#settings]#:#anchortext#tiptext% a more modern aproach (push buttons)
{\dontleavehmode \hbox \bgroup
@@ -683,7 +683,7 @@
{\setupcurrenttooltip[#settings]}%
{\setupcurrenttooltip[\c!location=#settings]}%
\setbox\b_scrn_tooltip_text\hbox
- {\lettooltipparameter\c!location\empty
+ {\resettooltipparameter\c!location
\inheritedtooltipframed{#tiptext}}%
\definesymbol
[\currenttooltipname:txt]
@@ -986,7 +986,7 @@
\setupcurrentinteractionmenu[#settings]%
\let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_m
\orelse\ifhastok={#tag}%
- \let\currentbutton\empty
+ \lettonothing\currentbutton
\setupcurrentbutton[#tag]%
\let\scrn_rollbutton_symbol\scrn_rollbutton_symbol_b
\else
diff --git a/tex/context/base/mkxl/scrn-hlp.mklx b/tex/context/base/mkxl/scrn-hlp.mklx
index da2afd0d0..f8476cb8f 100644
--- a/tex/context/base/mkxl/scrn-hlp.mklx
+++ b/tex/context/base/mkxl/scrn-hlp.mklx
@@ -74,8 +74,8 @@
\frozen\instance\protected\edefcsname\e!stop \currenthelp\endcsname{\scrn_help_stop }%
\to \everydefinehelp
-\mutable\let\currenthelpreference\empty
-\mutable\let\currenthelpname \empty
+\mutable\lettonothing\currenthelpreference
+\mutable\lettonothing\currenthelpname
\protected\def\scrn_help_argument#category%
{\def\currenthelp{#category}%
diff --git a/tex/context/base/mkxl/scrn-pag.mklx b/tex/context/base/mkxl/scrn-pag.mklx
index 09c542678..be1b6ad8f 100644
--- a/tex/context/base/mkxl/scrn-pag.mklx
+++ b/tex/context/base/mkxl/scrn-pag.mklx
@@ -35,9 +35,9 @@
\newdimen\canvasbleedoffset
\newdimen\canvasartoffset
-\mutable\let\currentinteractionscreendelay \empty
-\mutable\let\currentinteractionscreenheight\empty
-\mutable\let\currentinteractionscreenwidth \empty
+\mutable\lettonothing\currentinteractionscreendelay
+\mutable\lettonothing\currentinteractionscreenheight
+\mutable\lettonothing\currentinteractionscreenwidth
\newconditional\c_scrn_canvas_tight_page
@@ -210,7 +210,7 @@
}
\appendtoks
- \let\scrn_canvas_synchronize_common\empty
+ \lettonothing\scrn_canvas_synchronize_common
\to \everyaftershipout
\def\scrn_canvas_synchronize_only
@@ -289,12 +289,12 @@
%D Page transitions:
-\let\scrn_transitions_list\empty
+\lettonothing\scrn_transitions_list
\permanent\tolerant\protected\def\setuppagetransitions[#list]%
{\edef\scrn_transitions_list{#list}%
\ifx\scrn_transitions_list\v!reset
- \let\scrn_transitions_list\empty
+ \lettonothing\scrn_transitions_list
\fi}
\def\scrn_transitions_set
diff --git a/tex/context/base/mkxl/scrn-ref.mklx b/tex/context/base/mkxl/scrn-ref.mklx
index ffe1fab16..b86677ab2 100644
--- a/tex/context/base/mkxl/scrn-ref.mklx
+++ b/tex/context/base/mkxl/scrn-ref.mklx
@@ -51,10 +51,10 @@
\enabledirectives[destinations.offset=\the\dimexpr\interactionparameter\c!focusoffset\relax]%
\to \everysetupinteraction
-\mutable\let\currentinteractioncloseaction \empty
-\mutable\let\currentinteractionclosepageaction\empty
-\mutable\let\currentinteractionopenaction \empty
-\mutable\let\currentinteractionopenpageaction \empty
+\mutable\lettonothing\currentinteractioncloseaction
+\mutable\lettonothing\currentinteractionclosepageaction
+\mutable\lettonothing\currentinteractionopenaction
+\mutable\lettonothing\currentinteractionopenpageaction
%D We have to make sure of some settings:
diff --git a/tex/context/base/mkxl/scrn-wid.mklx b/tex/context/base/mkxl/scrn-wid.mklx
index 8bc3a3a1b..2361bbf3e 100644
--- a/tex/context/base/mkxl/scrn-wid.mklx
+++ b/tex/context/base/mkxl/scrn-wid.mklx
@@ -94,11 +94,11 @@
\c!depth=\v!fit,
\c!location=\v!high]
-\mutable\let\currentattachmentdepth \empty
-\mutable\let\currentattachmentheight \empty
-\mutable\let\currentattachmentregistered\empty
-\mutable\let\currentattachmentsymbol \empty
-\mutable\let\currentattachmentwidth \empty
+\mutable\lettonothing\currentattachmentdepth
+\mutable\lettonothing\currentattachmentheight
+\mutable\lettonothing\currentattachmentregistered
+\mutable\lettonothing\currentattachmentsymbol
+\mutable\lettonothing\currentattachmentwidth
\permanent\tolerant\protected\def\registerattachment[#tag]#spacer[#settings]% we save (globally) at the lua end
{\ifarguments\else
@@ -403,10 +403,10 @@
\c!buffer=\v!comment,
\c!location=\v!high]
-\mutable\let\currentcommentdepth \empty
-\mutable\let\currentcommentheight\empty
-\mutable\let\currentcommentsymbol\empty
-\mutable\let\currentcommentwidth \empty
+\mutable\lettonothing\currentcommentdepth
+\mutable\lettonothing\currentcommentheight
+\mutable\lettonothing\currentcommentsymbol
+\mutable\lettonothing\currentcommentwidth
\appendtoks
\frozen\protected\instance\edefcsname \currentcomment\endcsname{\scrn_comment_argument[\currentcomment]}%
@@ -586,8 +586,8 @@
%D \stoptext
%D \stoptyping
-\mutable\let\currentrendering \empty
-\mutable\let\currentrenderingwindow\empty
+\mutable\lettonothing\currentrendering
+\mutable\lettonothing\currentrenderingwindow
\permanent\tolerant\protected\def\userendering[#tag]#spacer[#mime]#spacer[#file]#spacer[#option]%
{\clf_registerrendering
@@ -617,11 +617,11 @@
\installframedcommandhandler \??renderingwindow {renderingwindow} \??renderingwindow
\appendtoks
- \letrenderingwindowparameter\c!openpageaction \empty
- \letrenderingwindowparameter\c!closepageaction\empty
- \setrenderingwindowparameter\c!width {\d_scrn_rendering_width }%
- \setrenderingwindowparameter\c!height {\d_scrn_rendering_height}%
- \letrenderingwindowparameter\c!align \v!flushleft
+ \resetrenderingwindowparameter\c!openpageaction
+ \resetrenderingwindowparameter\c!closepageaction
+ \setrenderingwindowparameter \c!width {\d_scrn_rendering_width }%
+ \setrenderingwindowparameter \c!height {\d_scrn_rendering_height}%
+ \letrenderingwindowparameter \c!align \v!flushleft
\to \everypresetrenderingwindow
\permanent\tolerant\protected\def\placerenderingwindow[#window]#spacer[#rendering]% do all in lua
diff --git a/tex/context/base/mkxl/spac-hor.mkxl b/tex/context/base/mkxl/spac-hor.mkxl
index 111bdc94c..ea43b2635 100644
--- a/tex/context/base/mkxl/spac-hor.mkxl
+++ b/tex/context/base/mkxl/spac-hor.mkxl
@@ -29,7 +29,7 @@
\bitwiseflip \normalizeparmode \normalizeparnormalizeparcode
\bitwiseflip \normalizeparmode \flattenvleadersnormalizeparcode
-\let\v_spac_indentation_current\empty % amount/keyword
+\lettonothing\v_spac_indentation_current % amount/keyword
\newdimen \d_spac_indentation_par
\parindent\d_spac_indentation_par % for the show
@@ -54,7 +54,7 @@
\aliased\let\synchronizeindenting\spac_indentation_setup_size
-\let\m_spac_indentation_options\empty
+\lettonothing\m_spac_indentation_options
\def\spac_indentation_setup_options[#1]%
{\edef\m_spac_indentation_options{#1}% comma separated list
@@ -762,7 +762,7 @@
\permanent\tolerant\protected\def\startnarrower[#1]%
{\begingroup
- \let\currentnarrower\empty
+ \lettonothing\currentnarrower
\ifparameter#1\or
\spac_narrower_start_apply{#1}%
\else
@@ -870,12 +870,12 @@
\installcorenamespace{tolerancemethods}
-\mutable\let\bottomtolerance\empty % why not zero (not used annyway, but for now we keep it)
+\mutable\lettonothing\bottomtolerance % why not zero (not used annyway, but for now we keep it)
\permanent\protected\def\installtolerancemethod#1#2#3%
{\defcsname\??tolerancemethods#1:#2\endcsname{#3}}
-\installtolerancemethod \v!vertical \v!verystrict {\let\bottomtolerance\empty} % why not zero
+\installtolerancemethod \v!vertical \v!verystrict {\lettonothing\bottomtolerance} % why not zero
\installtolerancemethod \v!vertical \v!strict {\def\bottomtolerance{.050}}
\installtolerancemethod \v!vertical \v!tolerant {\def\bottomtolerance{.075}}
\installtolerancemethod \v!vertical \v!verytolerant {\def\bottomtolerance{.100}}
diff --git a/tex/context/base/mkxl/spac-lin.mkxl b/tex/context/base/mkxl/spac-lin.mkxl
index 53da64923..f4473d2ea 100644
--- a/tex/context/base/mkxl/spac-lin.mkxl
+++ b/tex/context/base/mkxl/spac-lin.mkxl
@@ -63,7 +63,7 @@
\frozen\instance\letvalue {\e!stop \currentlines }\spac_lines_stop
\to \everydefinelines
-\let\p_lines_option\empty
+\lettonothing\p_lines_option
\let\spac_lines_break \relax
\let\spac_after_first_obeyed_line\relax
@@ -96,7 +96,7 @@
\else
\scratchdimen\dimexpr\commalistelement\relax
\hskip
- \ifdim\scratchdimen=\zeropoint
+ \ifzeropt\scratchdimen
\zeropoint
\else
\scratchdimen
diff --git a/tex/context/base/mkxl/spac-pag.mkxl b/tex/context/base/mkxl/spac-pag.mkxl
index 32b3b8d79..ff85007b8 100644
--- a/tex/context/base/mkxl/spac-pag.mkxl
+++ b/tex/context/base/mkxl/spac-pag.mkxl
@@ -30,7 +30,7 @@
\setpagestate[#1][\number#2]%
\fi}
-\let\m_spac_pagestates_realpage\empty
+\lettonothing\m_spac_pagestates_realpage
\newconditional\c_spac_pagestates_found
@@ -145,7 +145,7 @@
\installcorenamespace{pagechanges}
-\newif\ifpagechanged \mutable\let\lastchangedpage\empty
+\newif\ifpagechanged \mutable\lettonothing\lastchangedpage
\def\spac_pagechanges_check#1#2#3%
{\pagechangedfalse
diff --git a/tex/context/base/mkxl/spac-par.mkxl b/tex/context/base/mkxl/spac-par.mkxl
index 098595dfe..654f195f6 100644
--- a/tex/context/base/mkxl/spac-par.mkxl
+++ b/tex/context/base/mkxl/spac-par.mkxl
@@ -227,7 +227,7 @@
%D indentation as set (by the output routine) inside the group are forgotten
%D afterwards. (I must not forget its existence).
-\mutable\let\currentparagraphproperties\empty % visible for tracing
+\mutable\lettonothing\currentparagraphproperties % visible for tracing
\permanent\def\carryoverpar#1% #1 can be \endgroup or \egroup or ... expandable !
{\normalexpanded
diff --git a/tex/context/base/mkxl/spac-ver.mkxl b/tex/context/base/mkxl/spac-ver.mkxl
index 755460ac2..bb12b5f5d 100644
--- a/tex/context/base/mkxl/spac-ver.mkxl
+++ b/tex/context/base/mkxl/spac-ver.mkxl
@@ -81,7 +81,7 @@
\relax}
\ifdefined\bodyfontinterlinespace \else
- \let\bodyfontinterlinespace\empty
+ \lettonothing\bodyfontinterlinespace
\fi
\permanent\protected\def\presetnormallineheight % each bodyfont
@@ -118,12 +118,13 @@
\installcorenamespace{interlinespacerelative}
-\aliased\let\setrelativeinterlinespace \relax % used elsewhere
-\mutable\let\currentrelativeinterlinespace\empty
+\aliased\let\setrelativeinterlinespace\relax % used elsewhere
+
+\mutable\lettonothing\currentrelativeinterlinespace
\defcsname\??interlinespacerelative\v!on \endcsname{\oninterlineskip}
\defcsname\??interlinespacerelative\v!off \endcsname{\offinterlineskip}
-\defcsname\??interlinespacerelative\v!reset\endcsname{\enforced\let\currentrelativeinterlinespace\empty
+\defcsname\??interlinespacerelative\v!reset\endcsname{\enforced\lettonothing\currentrelativeinterlinespace
\enforced\let\setrelativeinterlinespace\relax
\setfontparameters}
\defcsname\??interlinespacerelative\v!auto \endcsname{\enforced\let\setrelativeinterlinespace\spac_linespacing_set_relative_interlinespace}
@@ -501,7 +502,8 @@
{\enforced\let\spac_lines_vbox\vbox}
\let\v_spac_lines_around_action_set\relax
-\let\m_spac_lines_around \empty
+
+\lettonothing\m_spac_lines_around
\newconstant\c_spac_lines_correction_mode
@@ -1074,9 +1076,9 @@
\appendtoks
% \setbox\strutbox\copy\nostrutbox
- \enforced\let\strut \empty
- \enforced\let\endstrut\empty
- \enforced\let\begstrut\empty
+ \enforced\lettonothing\strut
+ \enforced\lettonothing\endstrut
+ \enforced\lettonothing\begstrut
\to \everysetnostrut
%D When enabled, sigstruts will remove themselves if nothing goes inbetween. For
@@ -1429,7 +1431,7 @@
\ifcsname\??gridsnappersets#1\endcsname\lastnamedcs\else#1\fi}}
\permanent\protected\def\installsnapvalues#1#2%
- {\let\m_spac_snapper\empty
+ {\lettonothing\m_spac_snapper
\rawprocesscommacommand[#2]\spac_grids_expand_snapper
\edef\p_spac_snapper{#1:\m_spac_snapper}%
\ifcsname\??gridsnapperattributes\p_spac_snapper\endcsname
@@ -1649,14 +1651,15 @@
\permanent\protected\def\setupgridsnapping[#1]% less overhead than setuplayout (needs testing)
{\setlayoutparameter\c!grid{#1}\synchronizegridsnapping}
-\mutable\let\checkedgridmethod\empty % these can become private
-\mutable\let\checkedgridscope \v!local % these can become private
+\mutable\lettonothing\checkedgridmethod % this can become private
+
+\mutable\let\checkedgridscope\v!local % this can become private
\permanent\protected\def\checkgridmethod#1%
{\edef\p_grid{#1}%
\ifempty\p_grid
- \let\checkedgridmethod\empty
- \let\checkedgridscope \v!local
+ \lettonothing\checkedgridmethod
+ \let\checkedgridscope\v!local
\else
\splitatcolon\p_grid\checkedgridscope\checkedgridmethod
\ifempty\checkedgridmethod
@@ -2179,12 +2182,12 @@
\c!location=\v!left,
\c!n=\zerocount]
-\let\m_spac_hanging_location\empty
+\lettonothing\m_spac_hanging_location
\permanent\tolerant\protected\def\starthanging[#1]%
{\dontleavehmode\bgroup
\ifhastok={#1}%
- \let\m_spac_hanging_location\empty
+ \lettonothing\m_spac_hanging_location
\setupcurrenthanging[#1]%
\else
\edef\m_spac_hanging_location{#1}%
diff --git a/tex/context/base/mkxl/strc-bkm.mkxl b/tex/context/base/mkxl/strc-bkm.mkxl
index c5bd87324..8e5e7e4b1 100644
--- a/tex/context/base/mkxl/strc-bkm.mkxl
+++ b/tex/context/base/mkxl/strc-bkm.mkxl
@@ -90,8 +90,8 @@
\expandafter\gobblethreeoptionals
\fi}
-\let\m_bookmarks_names \empty
-\let\m_bookmarks_opened\empty
+\lettonothing\m_bookmarks_names
+\lettonothing\m_bookmarks_opened
\tolerant\def\strc_bookmarks_place_yes[#1]#*[#2]#*[#3]%
{\begingroup
@@ -104,7 +104,7 @@
\let\m_bookmarks_names\v!all
\fi
\ifparameters\or\or
- \doifelseassignment{#2}{\let\m_bookmarks_opened\empty\setupcurrentbookmark[#2]}\donothing
+ \doifelseassignment{#2}{\lettonothing\m_bookmarks_opened\setupcurrentbookmark[#2]}\donothing
\or
\setupcurrentbookmark[#3]% no every so not all possible
\fi
diff --git a/tex/context/base/mkxl/strc-blk.mkxl b/tex/context/base/mkxl/strc-blk.mkxl
index 97ae671f1..c81739530 100644
--- a/tex/context/base/mkxl/strc-blk.mkxl
+++ b/tex/context/base/mkxl/strc-blk.mkxl
@@ -43,12 +43,12 @@
% maybe: systemmode "block:<name>"
-\let\m_block \empty
-\let\m_subblock\empty
+\lettonothing\m_block
+\lettonothing\m_subblock
\protected\def\strc_blocks_begin#1%
- {\edef\m_block {#1}%
- \let \m_subblock\empty
+ {\edef\m_block{#1}%
+ \lettonothing\m_subblock
\doifelsenextoptionalcs\strc_blocks_begin_yes\strc_blocks_begin_nop}
\protected\def\strc_blocks_begin_yes[#1]%
@@ -75,7 +75,7 @@
% \tolerant\protected\def\strc_blocks_begin#1#*[#2]#*[#3]% #:#/% get rid of spaces and pars
% {\edef\m_block{#1}%
-% \let\m_subblock\empty
+% \lettonothing\m_subblock
% \ifhastok={#2}%
% \expandafter\strc_blocks_begin_a % [settings]
% \orelse\ifparameter#2\or
diff --git a/tex/context/base/mkxl/strc-con.mklx b/tex/context/base/mkxl/strc-con.mklx
index 55ddb8edf..d931bc779 100644
--- a/tex/context/base/mkxl/strc-con.mklx
+++ b/tex/context/base/mkxl/strc-con.mklx
@@ -105,28 +105,27 @@
%aliased\let\currentconstructionhash \??construction
-\mutable\let\currentconstructionmain \empty
-\mutable\let\currentconstructionlevel \empty
-\mutable\let\currentconstructionhandler \empty
-
-\mutable\let\currentconstructionattribute \empty
-\mutable\let\currentconstructionbookmark \empty
-\mutable\let\currentconstructioncatcodes \empty
-\mutable\let\currentconstructioncoding \empty
-\mutable\let\currentconstructionexpansion \empty
-\mutable\let\currentconstructionincrementnumber\empty
-\mutable\let\currentconstructionlabel \empty
-\mutable\let\currentconstructionlist \empty
-\mutable\let\currentconstructionlistentry \empty
-\mutable\let\currentconstructionlistnumber \empty
-\mutable\let\currentconstructionmarking \empty
-\mutable\let\currentconstructionnumber \empty
-\mutable\let\currentconstructionreference \empty
-\mutable\let\currentconstructionreferencetext \empty
-\mutable\let\currentconstructionreferenceprefix\empty
-\mutable\let\currentconstructionsynchronize \empty
-\mutable\let\currentconstructiontitle \empty
-\mutable\let\currentconstructionxmlsetup \empty
+\mutable\lettonothing\currentconstructionmain
+\mutable\lettonothing\currentconstructionlevel
+\mutable\lettonothing\currentconstructionhandler
+\mutable\lettonothing\currentconstructionattribute
+\mutable\lettonothing\currentconstructionbookmark
+\mutable\lettonothing\currentconstructioncatcodes
+\mutable\lettonothing\currentconstructioncoding
+\mutable\lettonothing\currentconstructionexpansion
+\mutable\lettonothing\currentconstructionincrementnumber
+\mutable\lettonothing\currentconstructionlabel
+\mutable\lettonothing\currentconstructionlist
+\mutable\lettonothing\currentconstructionlistentry
+\mutable\lettonothing\currentconstructionlistnumber
+\mutable\lettonothing\currentconstructionmarking
+\mutable\lettonothing\currentconstructionnumber
+\mutable\lettonothing\currentconstructionreference
+\mutable\lettonothing\currentconstructionreferencetext
+\mutable\lettonothing\currentconstructionreferenceprefix
+\mutable\lettonothing\currentconstructionsynchronize
+\mutable\lettonothing\currentconstructiontitle
+\mutable\lettonothing\currentconstructionxmlsetup
\settrue\c_strc_constructions_define_commands % use with care, might become a proper key
@@ -296,17 +295,17 @@
\protected\defcsname\??constructioncommandhandler\v!construction\endcsname
{\endgroup}
-\let\p_strc_constructions_sample \empty
-\let\p_strc_constructions_align \empty
-\let\p_strc_constructions_indenting \empty
-\let\p_strc_constructions_width \empty
-\let\p_strc_constructions_aligntitle \empty
-\let\p_strc_constructions_renderingsetup\empty
-\let\p_strc_constructions_headalign \empty
-\let\p_strc_constructions_hang \empty
-\let\p_strc_constructions_inbetween \empty
-\let\p_strc_constructions_closesymbol \empty
-\let\p_strc_constructions_distance \empty
+\lettonothing\p_strc_constructions_sample
+\lettonothing\p_strc_constructions_align
+\lettonothing\p_strc_constructions_indenting
+\lettonothing\p_strc_constructions_width
+\lettonothing\p_strc_constructions_aligntitle
+\lettonothing\p_strc_constructions_renderingsetup
+\lettonothing\p_strc_constructions_headalign
+\lettonothing\p_strc_constructions_hang
+\lettonothing\p_strc_constructions_inbetween
+\lettonothing\p_strc_constructions_closesymbol
+\lettonothing\p_strc_constructions_distance
\newconditional\c_strc_constructions_distance_none
diff --git a/tex/context/base/mkxl/strc-des.mklx b/tex/context/base/mkxl/strc-des.mklx
index 9f9119466..6c04c9ac1 100644
--- a/tex/context/base/mkxl/strc-des.mklx
+++ b/tex/context/base/mkxl/strc-des.mklx
@@ -75,7 +75,7 @@
\fi
\to \everydefinedescription
-\let\p_strc_constructions_title \empty
+\lettonothing\p_strc_constructions_title
\protected\defcsname\??constructioninitializer\v!description\endcsname
{\let \currentdescription \currentconstruction
diff --git a/tex/context/base/mkxl/strc-doc.mkxl b/tex/context/base/mkxl/strc-doc.mkxl
index 50b71d9d2..11c96f9c1 100644
--- a/tex/context/base/mkxl/strc-doc.mkxl
+++ b/tex/context/base/mkxl/strc-doc.mkxl
@@ -19,45 +19,45 @@
%D This will move:
-\mutable\let\currentstructureattribute \empty
-\mutable\let\currentstructurebackreference \empty
-\mutable\let\currentstructurebookmark \empty
-\mutable\let\currentstructurecatcodes \empty
-\mutable\let\currentstructurecoding \empty
-\mutable\let\currentstructurecoupling \empty
-\mutable\let\currentstructureexpansion \empty
-\mutable\let\currentstructureincrementnumber \empty
-\mutable\let\currentstructurelabel \empty
-\mutable\let\currentstructurelevel \empty
-\mutable\let\currentstructurelist \empty
-\mutable\let\currentstructurelistattribute \empty
-\mutable\let\currentstructuremarking \empty
-\mutable\let\currentstructurename \empty
-\mutable\let\currentstructureownnumber \empty
-\mutable\let\currentstructureplaceholder \empty
-\mutable\let\currentstructurereference \empty
-\mutable\let\currentstructurereferenceattribute \empty
-\mutable\let\currentstructurereferenceprefix \empty
-\mutable\let\currentstructuresaveinlist \empty
-\mutable\let\currentstructureshownumber \empty
-\mutable\let\currentstructuretitle \empty
-\mutable\let\currentstructurexmlsetup \empty
+\mutable\lettonothing\currentstructureattribute
+\mutable\lettonothing\currentstructurebackreference
+\mutable\lettonothing\currentstructurebookmark
+\mutable\lettonothing\currentstructurecatcodes
+\mutable\lettonothing\currentstructurecoding
+\mutable\lettonothing\currentstructurecoupling
+\mutable\lettonothing\currentstructureexpansion
+\mutable\lettonothing\currentstructureincrementnumber
+\mutable\lettonothing\currentstructurelabel
+\mutable\lettonothing\currentstructurelevel
+\mutable\lettonothing\currentstructurelist
+\mutable\lettonothing\currentstructurelistattribute
+\mutable\lettonothing\currentstructuremarking
+\mutable\lettonothing\currentstructurename
+\mutable\lettonothing\currentstructureownnumber
+\mutable\lettonothing\currentstructureplaceholder
+\mutable\lettonothing\currentstructurereference
+\mutable\lettonothing\currentstructurereferenceattribute
+\mutable\lettonothing\currentstructurereferenceprefix
+\mutable\lettonothing\currentstructuresaveinlist
+\mutable\lettonothing\currentstructureshownumber
+\mutable\lettonothing\currentstructuretitle
+\mutable\lettonothing\currentstructurexmlsetup
-\mutable\let\currentstructurecomponentattribute \empty
-\mutable\let\currentstructurecomponentbookmark \empty
-\mutable\let\currentstructurecomponentcatcodes \empty
-\mutable\let\currentstructurecomponentcoding \empty
-\mutable\let\currentstructurecomponentexpansion \empty
-\mutable\let\currentstructurecomponentlabel \empty
-\mutable\let\currentstructurecomponentlevel \empty
-\mutable\let\currentstructurecomponentlist \empty
-\mutable\let\currentstructurecomponentmarking \empty
-\mutable\let\currentstructurecomponentname \empty
-\mutable\let\currentstructurecomponentreference \empty
-\mutable\let\currentstructurecomponentreferenceprefix\empty
-\mutable\let\currentstructurecomponentsynchronize \empty
-\mutable\let\currentstructurecomponenttitle \empty
-\mutable\let\currentstructurecomponentxmlsetup \empty
+\mutable\lettonothing\currentstructurecomponentattribute
+\mutable\lettonothing\currentstructurecomponentbookmark
+\mutable\lettonothing\currentstructurecomponentcatcodes
+\mutable\lettonothing\currentstructurecomponentcoding
+\mutable\lettonothing\currentstructurecomponentexpansion
+\mutable\lettonothing\currentstructurecomponentlabel
+\mutable\lettonothing\currentstructurecomponentlevel
+\mutable\lettonothing\currentstructurecomponentlist
+\mutable\lettonothing\currentstructurecomponentmarking
+\mutable\lettonothing\currentstructurecomponentname
+\mutable\lettonothing\currentstructurecomponentreference
+\mutable\lettonothing\currentstructurecomponentreferenceprefix
+\mutable\lettonothing\currentstructurecomponentsynchronize
+\mutable\lettonothing\currentstructurecomponenttitle
+\mutable\lettonothing\currentstructurecomponentxmlsetup
\permanent\protected\def\setstructuresynchronization#1% todo: use ctxcontext
{\clf_setinternalreference
diff --git a/tex/context/base/mkxl/strc-enu.mklx b/tex/context/base/mkxl/strc-enu.mklx
index 89e1b307a..d3cf165de 100644
--- a/tex/context/base/mkxl/strc-enu.mklx
+++ b/tex/context/base/mkxl/strc-enu.mklx
@@ -146,10 +146,10 @@
\frozen\protected\instance \defcsname\e!stop #tag\endcsname{\stopnamedenumeration}%
\fi}
-\let\m_strc_enumeration_sub\empty
+\lettonothing\m_strc_enumeration_sub
\appendtoks
- \let\m_strc_enumeration_sub\empty
+ \lettonothing\m_strc_enumeration_sub
\ifempty\currentenumerationparent
% clone => parent | subclone => clone | subsubclone => subclone
\strc_define_commands_enumeration
@@ -182,8 +182,8 @@
%\strc_enumerations_setup_counter\currentenumeration
\to \everydefineenumeration
-\let\p_strc_constructions_title \empty
-\let\p_strc_constructions_number\empty
+\lettonothing\p_strc_constructions_title
+\lettonothing\p_strc_constructions_number
\protected\defcsname\??constructioninitializer\v!enumeration\endcsname
{\let \currentenumeration \currentconstruction
diff --git a/tex/context/base/mkxl/strc-flt.mklx b/tex/context/base/mkxl/strc-flt.mklx
index 192fd137a..f444a9b1c 100644
--- a/tex/context/base/mkxl/strc-flt.mklx
+++ b/tex/context/base/mkxl/strc-flt.mklx
@@ -187,13 +187,13 @@
\d_page_floats_compress_distance\floatparameter\c!compressdistance\relax
\to \everysetupfloat
-\mutable\let\currentfloatattribute \empty
-\mutable\let\currentfloatcounter \empty
-\mutable\let\currentfloatgroup \empty
-\mutable\let\currentfloatnumber \empty
-\mutable\let\currentfloatsynchronize\empty
+\mutable\lettonothing\currentfloatattribute
+\mutable\lettonothing\currentfloatcounter
+\mutable\lettonothing\currentfloatgroup
+\mutable\lettonothing\currentfloatnumber
+\mutable\lettonothing\currentfloatsynchronize
-\let\m_strc_floats_previous_number \empty % we can also just push/pop
+\lettonothing\m_strc_floats_previous_number % we can also just push/pop
%D We need to do it again here:
@@ -323,12 +323,12 @@
%D Captions.
-\mutable\let\floatcaptionarrangement\empty
-\mutable\let\floatcaptionattribute \empty
-\mutable\let\floatcaptiondirectives \empty
-\mutable\let\floatcaptionlocation \empty
-\mutable\let\floatcaptionnumber \empty
-\mutable\let\floatcaptionsuffix \empty
+\mutable\lettonothing\floatcaptionarrangement
+\mutable\lettonothing\floatcaptionattribute
+\mutable\lettonothing\floatcaptiondirectives
+\mutable\lettonothing\floatcaptionlocation
+\mutable\lettonothing\floatcaptionnumber
+\mutable\lettonothing\floatcaptionsuffix
% For a while these were placeholders:
%
@@ -419,7 +419,7 @@
\newdimen\d_strc_floats_caption_height
\newdimen\d_strc_floats_caption_depth
-\let\m_strc_floats_last_caption_tag\empty
+\lettonothing\m_strc_floats_last_caption_tag
\def\strc_floats_make_complete_caption
{\doifsomething{\floatcaptionparameter\c!spacebefore}{\blank[\floatcaptionparameter\c!spacebefore]}%
@@ -588,7 +588,7 @@
% before we're really dealing with the float. Some day I'll root out the global
% settings.
-\aliased\let\lastplacedfloat\empty
+\aliased\lettonothing\lastplacedfloat
\def\strc_floats_set_current_tag#tag%
{\edef\currentfloat{#tag}%
@@ -600,32 +600,33 @@
{\writestatus\m!floatblocks{unknown float type '\currentfloat'}%
\let\currentfloat\v!figure}% also a hack
\enforced\glet\lastplacedfloat\currentfloat
- \let\m_strc_floats_saved_userdata\empty
+ \lettonothing\m_strc_floats_saved_userdata
\let\currentfloatcaption\currentfloat}
-\mutable\let\askedfloatmethod \empty
-\mutable\let\askedfloatoptions\empty
+\mutable\lettonothing\askedfloatmethod
+\mutable\lettonothing\askedfloatoptions
\def\strc_floats_reset_variables
{\global\emptyfloatcaptionfalse
\global\nofloatcaptionfalse
\global\nofloatnumberfalse
- \glet\askedfloatmethod \empty
- \glet\askedfloatoptions\empty}
+ \glettonothing\askedfloatmethod
+ \glettonothing\askedfloatoptions}
% place
-\mutable\let\floatlabel \empty
-\mutable\let\floatcolumn \empty
-\mutable\let\floatrow \empty
-\mutable\let\floatlocation \empty
-\mutable\let\floatlocationmethod\empty
+\mutable\lettonothing\floatlabel
+\mutable\lettonothing\floatcolumn
+\mutable\lettonothing\floatrow
+\mutable\lettonothing\floatlocation
+\mutable\lettonothing\floatlocationmethod
+\mutable\lettonothing\floatlocationdefault
\def\strc_floats_analyze_location
{% more will be moved here
- \let\floatlabel \empty
- \let\floatcolumn\empty
- \let\floatrow \empty
+ \lettonothing\floatlabel
+ \lettonothing\floatcolumn
+ \lettonothing\floatrow
%
\edef\floatcaptionlocation{\floatcaptionparameter\c!location}%
%
@@ -644,9 +645,10 @@
{\strc_floats_set_current_tag{#tag}%
\strc_floats_reset_variables
\xdef\askedfloatoptions{#location}%
+ \edef\floatlocationdefault{\floatparameter\c!default}%
\edef\floatlocation{#location}%
\ifempty\floatlocation
- \edef\floatlocation{\floatparameter\c!default}% beware of a clash between alignment locations
+ \let\floatlocation\floatlocationdefault % beware of a clash between alignment locations
\fi
\ifintable
\the\c_floats_every_table_float
@@ -672,7 +674,7 @@
\installsetuponlycommandhandler \??floatuserdata {floatuserdata}
-\let\m_strc_floats_saved_userdata\empty % todo: reset this in non start|stop cases
+\lettonothing\m_strc_floats_saved_userdata % todo: reset this in non start|stop cases
%D We abuse the settings to pick up some float parameters too which makes it
%D messy.
@@ -707,12 +709,13 @@
\setupcurrentfloatuserdata[#userdata]%
\def\m_strc_floats_saved_userdata{#userdata}%
\else
- \let\m_strc_floats_saved_userdata\empty
+ \lettonothing\m_strc_floats_saved_userdata
\fi
- % check
+ % check (see elsewhere
+ \edef\floatlocationdefault{\floatparameter\c!default}%
\edef\floatlocation{\floatcaptionparameter\c!location}%
\ifempty\floatlocation
- \edef\floatlocation{\floatparameter\c!default}%
+ \let\floatlocation\floatlocationdefault % beware of a clash between alignment locations
\fi
% inherit
\setexpandedfloatparameter\c!topoffset {\floatcaptionparameter\c!topoffset}%
@@ -860,8 +863,9 @@
\ifempty\forcedfloatmethod \else
\doifelsecommandhandler\??float\forcedfloatmethod
{\let\currentfloat\forcedfloatmethod
- \edef\floatlocation{\floatparameter\c!default}%
- \let\forcedfloatmethod\floatlocation}
+ \edef\floatlocationdefault{\floatparameter\c!default}%
+ \let\floatlocation\floatlocationdefault
+ \let\forcedfloatmethod\floatlocationdefault}
\donothing
\fi
\ifempty\forcedfloatmethod
@@ -1114,14 +1118,14 @@
%D \stopplacefigure
%D \stoptyping
-\glet\currentsubfloatcounter\empty
+\glettonothing\currentsubfloatcounter
\permanent\protected\def\startsubfloatnumbering
{\glet\currentsubfloatcounter\s!unknown}
\permanent\protected\def\stopsubfloatnumbering
{\strc_counters_reset_sub\currentsubfloatcounter\plustwo
- \glet\currentsubfloatcounter\empty}
+ \glettonothing\currentsubfloatcounter}
\defineconversionset[subfloats][number,characters]
@@ -1135,8 +1139,8 @@
\def\strc_floats_place_packaged_boxes_indeed#userdata%
{\bgroup
\ifconditional\usesamefloatnumber
- \glet\currentfloatnumber \m_strc_floats_previous_number
- \glet\currentfloatattribute \empty
+ \glet\currentfloatnumber\m_strc_floats_previous_number
+ \glettonothing\currentfloatattribute
\glet\currentfloatsynchronize\relax
\else
\edef\currentfloatcounter{\namedcounterparameter\currentfloat\s!name}%
@@ -1327,7 +1331,7 @@
\permanent\protected\def\hangsidefloat[#number]%
{\global\c_page_sides_n_of_lines#number\relax}
-\mutable\let\extrafloatlocation\empty
+\mutable\lettonothing\extrafloatlocation
\def\strc_floats_set_extra_action#rightpagelocation#leftpagelocation%
{\rightorleftpageaction
@@ -1353,7 +1357,7 @@
\def\strc_floats_check_extra_actions % less tracingthis way ....
{\doifnotinset\v!text\floatlocation % fuzzy, text overloads left, since then it's a directive
- {\let\extrafloatlocation\empty
+ {\lettonothing\extrafloatlocation
% \d_page_sides_downshift will be reset afterwards, and can
% already be set at this point
\processcommacommand[\floatlocation]\strc_floats_check_extra_actions_step
@@ -2075,13 +2079,13 @@
\def\strc_floats_build_box_top_stack_normal
{\doifelseinset\v!overlay{\floatcaptionparameter\c!location}
- \strc_floats_build_box_top_stack_normal_overlay
- \strc_floats_build_box_top_stack_normal_content}
+ \strc_floats_build_box_top_stack_normal_overlay
+ \strc_floats_build_box_top_stack_normal_content}
\def\strc_floats_build_box_bottom_stack_normal
{\doifinset\v!overlay{\floatcaptionparameter\c!location}
- \strc_floats_build_box_bottom_stack_normal_overlay
- \strc_floats_build_box_bottom_stack_normal_content}
+ \strc_floats_build_box_bottom_stack_normal_overlay
+ \strc_floats_build_box_bottom_stack_normal_content}
\def\strc_floats_build_box_top_stack_grid
{\dp\b_strc_floats_caption\strutdepth
@@ -2504,13 +2508,12 @@
\installcorenamespace{floatmethods}
-\mutable\let\floatmethod \empty % set by lua
-\mutable\let\floatlabel \empty % set by lua
-\mutable\let\floatcolumn \empty % set by lua
-\mutable\let\floatrow \empty % set by lua
-\mutable\let\floatspecification\empty
-
-\mutable\let\forcedfloatmethod \empty % set by lua and floatcombinations
+\mutable\lettonothing\floatmethod % set by lua
+\mutable\lettonothing\floatlabel % set by lua
+\mutable\lettonothing\floatcolumn % set by lua
+\mutable\lettonothing\floatrow % set by lua
+\mutable\lettonothing\floatspecification
+\mutable\lettonothing\forcedfloatmethod % set by lua and floatcombinations
\permanent\protected\def\setfloatmethodvariables#1% \floatmethod \floatlabel \floatrow \floatcolumn
{\clf_analysefloatmethod{#1}} % move definition to lua end
@@ -2521,7 +2524,10 @@
\def\strc_floats_get_box
{\ifvisible
\ifcsname\??floatmethods\currentoutputroutine:\floatmethod\endcsname \else
- \let\floatmethod\v!here
+ \let\floatmethod\floatlocationdefault
+ \ifcsname\??floatmethods\currentoutputroutine:\floatmethod\endcsname \else
+ \let\floatmethod\v!here
+ \fi
\fi
\ifempty\forcedfloatmethod \else
\let\floatmethod\forcedfloatmethod
@@ -2539,7 +2545,7 @@
\installcorenamespace{floatsettings}
\permanent\protected\def\installfloatmethod#1#2#3% routine keyword handler
- {\setvalue{\??floatmethods#1:#2}{#3}}
+ {\defcsname\??floatmethods#1:#2\endcsname{#3}}
\permanent\protected\def\handlefloatmethod#1%
{\csname\??floatmethods\currentoutputroutine:#1\endcsname}
diff --git a/tex/context/base/mkxl/strc-itm.mklx b/tex/context/base/mkxl/strc-itm.mklx
index db6bdadf3..a4a0b283a 100644
--- a/tex/context/base/mkxl/strc-itm.mklx
+++ b/tex/context/base/mkxl/strc-itm.mklx
@@ -224,10 +224,10 @@
\newcount \c_strc_itemgroups_column_depth
\def \v_strc_itemgroups_counter {itemgroup:\currentparentitemgroup}
-\let \m_strc_itemgroups_repeat_start \empty
+\lettonothing \m_strc_itemgroups_repeat_start
\def \v_strc_itemgroups_unknown_symbol {?}
-\let \m_strc_itemgroups_indenting \empty
-\let \m_strc_itemgroups_destination \empty
+\lettonothing \m_strc_itemgroups_indenting
+\lettonothing \m_strc_itemgroups_destination
\mutable\let \currentitemlevel \!!zerocount % public
\mutable\def \currentnofitems {\the\c_strc_itemgroups_max_items}
@@ -235,9 +235,9 @@
\newtoks \itemgroupcommands % maybe public
-\mutable\def \currentitemgroupsymbol {n} % here we cannot use a _ in the name
-\mutable\let \currentitemgroupconversionset \empty % here we cannot use a _ in the name
-\mutable\let \currentitemgroupsegments \empty
+\mutable\def \currentitemgroupsymbol {n} % here we cannot use a _ in the name
+\mutable\lettonothing \currentitemgroupconversionset % here we cannot use a _ in the name
+\mutable\lettonothing \currentitemgroupsegments
\def\strc_itemgroups_register_status
{\clf_registeritemgroup{\currentparentitemgroup}\c_strc_itemgroups_nesting\c_strc_itemgroups_n_of_items\dimexpr\itemgroupparameter\c!maxwidth\relax}
@@ -393,8 +393,8 @@
% \protected\def\strc_itemgroups_process_options#options%
% {\normalexpanded{\strc_itemgroups_process_option_list[#options]}} % expansion of options is handy for xml
-\mutable\let\itemgroupfirst \empty
-\mutable\let\itemgroupsecond\empty
+\mutable\lettonothing\itemgroupfirst
+\mutable\lettonothing\itemgroupsecond
\def\strc_itemgroups_process_option#option%
{\edef\scratchstringone{#option}%
@@ -474,8 +474,8 @@
%\letitemgroupparameter\c!factor \!!zerocount
\letitemgroupparameter\c!factor {\zerocount}%
\setitemgroupparameter\c!packcriterium{\zerocount}%
- \letitemgroupparameter\c!inner \empty
- \letitemgroupparameter\c!beforehead \empty
+ \resetitemgroupparameter\c!inner
+ \resetitemgroupparameter\c!beforehead
\letitemgroupparameter\c!afterhead \blank
\letitemgroupparameter\c!before \blank
\letitemgroupparameter\c!inbetween \blank
@@ -503,23 +503,30 @@
\setfalse\c_strc_itemgroups_symbol
\setfalse\c_strc_itemgroups_columns
% to be checked
- \let\m_strc_itemgroups_destination\empty
- \let\strc_itemgroups_used_symbol \empty % ** start value
- \let\strc_itemgroups_margin_symbol\empty
- \let\strc_itemgroups_extra_symbol \empty
+ \lettonothing\m_strc_itemgroups_destination
+ \lettonothing\strc_itemgroups_used_symbol % ** start value
+ \lettonothing\strc_itemgroups_margin_symbol
+ \lettonothing\strc_itemgroups_extra_symbol
%
\global\letitemgroupparameter\c!maxwidth\!!zeropoint
}
-\setvalue{\??itemgroupfirst\v!intro }{\settrue\c_strc_itemgroups_intro}
-\setvalue{\??itemgroupfirst\v!continue }{\settrue\c_strc_itemgroups_continue}
-\setvalue{\??itemgroupfirst\v!random }{\settrue\c_strc_itemgroups_randomize
- \settrue\c_strc_itemgroups_collecting}
-\setvalue{\??itemgroupkeyword\v!horizontal}{\settrue\c_strc_itemgroups_horizontal
- \settrue\c_strc_itemgroups_collecting
- \settrue\c_strc_itemgroups_inline
- \settrue\c_strc_itemgroups_joined
- \strc_itemgroups_process_set_option_pack}
+\defcsname\??itemgroupfirst\v!intro\endcsname
+ {\settrue\c_strc_itemgroups_intro}
+
+\defcsname\??itemgroupfirst\v!continue\endcsname
+ {\settrue\c_strc_itemgroups_continue}
+
+\defcsname\??itemgroupfirst\v!random\endcsname
+ {\settrue\c_strc_itemgroups_randomize
+ \settrue\c_strc_itemgroups_collecting}
+
+\defcsname\??itemgroupkeyword\v!horizontal\endcsname
+ {\settrue\c_strc_itemgroups_horizontal
+ \settrue\c_strc_itemgroups_collecting
+ \settrue\c_strc_itemgroups_inline
+ \settrue\c_strc_itemgroups_joined
+ \strc_itemgroups_process_set_option_pack}
\def\strc_itemgroups_preset_stage_one#options%
{\processcommacommand[#options]\strc_itemgroups_preset_stage_one_indeed}
@@ -741,11 +748,11 @@
% \strc_itemgroups_insert_reference
% \endgroup}
-\let\strc_itemgroups_temp_symbol \empty
-\let\strc_itemgroups_used_symbol \empty
-\let\strc_itemgroups_asked_symbol \empty
-\let\strc_itemgroups_margin_symbol\empty
-\let\strc_itemgroups_extra_symbol \empty
+\lettonothing\strc_itemgroups_temp_symbol
+\lettonothing\strc_itemgroups_used_symbol
+\lettonothing\strc_itemgroups_asked_symbol
+\lettonothing\strc_itemgroups_margin_symbol
+\lettonothing\strc_itemgroups_extra_symbol
\def\strc_itemgroups_set_symbol#symbol%
{\edef\strc_itemgroups_temp_symbol{#symbol}%
@@ -762,14 +769,14 @@
\strc_itemgroups_store_global_symbol\currentitemgroupsymbol
\strc_itemgroups_store_local_symbol\v_strc_itemgroups_unknown_symbol
\let\strc_itemgroups_used_symbol\strc_itemgroups_set_symbol_symbol_item
- \let\strc_itemgroups_asked_symbol\empty}
+ \lettonothing\strc_itemgroups_asked_symbol}
\def\strc_itemgroups_set_symbol_conversion
{\let\currentitemgroupsymbol\strc_itemgroups_temp_symbol
\strc_itemgroups_store_global_symbol\currentitemgroupsymbol
\strc_itemgroups_store_local_symbol\strc_itemgroups_insert_item_counter
\let\strc_itemgroups_used_symbol\strc_itemgroups_set_symbol_conversion_item
- \let\strc_itemgroups_asked_symbol\empty}
+ \lettonothing\strc_itemgroups_asked_symbol}
\def\strc_itemgroups_set_symbol_symbol_item
{\symbol[\currentitemgroupsymbol]}
@@ -802,8 +809,8 @@
\advance\d_strc_itemgroups_list_width\itemgroupparameter\c!distance\relax
\let\currentitemgroup\m_strc_itemgroups_saved}
-\let\p_itemgroups_options \empty
-\let\p_itemgroups_extra_options\empty
+\lettonothing\p_itemgroups_options
+\lettonothing\p_itemgroups_extra_options
\permanent\tolerant\protected\def\startitemgroup[#category]#spacer[#options]#spacer[#settings]%
{\begingroup % (1)
@@ -816,7 +823,7 @@
\edef\currentitemgroup{\currentparentitemgroup:\currentitemlevel}%
%
\edef\p_itemgroups_options{\itemgroupparameter\c!option}%
- \let\p_itemgroups_extra_options\empty
+ \lettonothing\p_itemgroups_extra_options
\ifcase\nofarguments
\strc_itemgroups_start_indeed{}%
\or
@@ -937,11 +944,11 @@
\fi\fi
\ifconditional\c_strc_itemgroups_paragraph
\ifnum\c_strc_itemgroups_nesting>\plusone
- \letitemgroupparameter\c!inbetween\empty
+ \resetitemgroupparameter\c!inbetween
\fi
\fi
\ifconditional\c_strc_itemgroups_pack
- \letitemgroupparameter\c!inbetween\empty
+ \resetitemgroupparameter\c!inbetween
\fi
\ifconditional\c_strc_itemgroups_columns
\ifinsidecolumns\orelse\ifcase\c_strc_itemgroups_column_depth
@@ -1159,7 +1166,7 @@
% \stopitemize
% \stopitemize
-\mutable\let\currentitemreference\empty
+\mutable\lettonothing\currentitemreference
\tolerant\permanent\protected\def\startitemgroupitem[#reference]% we can reuse more
{\def\currentitemreference{#reference}%
@@ -1270,7 +1277,7 @@
{\startitemgroupitem}
\protected\def\strc_itemgroups_start_no_item
- {\let\currentitemreference\empty
+ {\lettonothing\currentitemreference
\strc_itemgroups_increment_item_counter
%\advance\c_strc_itemgroups_n_of_items\plusone
\setbox\b_strc_itemgroups\emptyhbox
@@ -1462,7 +1469,7 @@
\strc_itemgroups_used_symbol
\fi
\fi}%
- \let\strc_itemgroups_extra_symbol\empty
+ \lettonothing\strc_itemgroups_extra_symbol
\setfalse\c_strc_itemgroups_symbol}
\def\strc_itemgroups_make_fitting_box
@@ -1504,7 +1511,7 @@
\edef\m_strc_itemgroups_repeat_start{\currentitemlevel}%
\fi
\else
- \let\m_strc_itemgroups_repeat_start\empty
+ \lettonothing\m_strc_itemgroups_repeat_start
\fi}
\def\strc_itemgroups_insert_item
@@ -1527,7 +1534,7 @@
\orelse\ifdim\d_strc_itemgroups_asked_width>\zeropoint
\strc_itemgroups_make_aligned_box
\fi
- \let\m_strc_itemgroups_destination\empty
+ \lettonothing\m_strc_itemgroups_destination
\ht\b_strc_itemgroups\strutheight % just in case a symbols is not yet available in
\dp\b_strc_itemgroups\strutdepth % the current run (more a mkii mp side artifact)
\strc_itemgroups_check_for_repeated
@@ -1557,7 +1564,7 @@
\ignorepars} % \ignorespaces
\def\strc_itemgroups_start_item_nop
- {\let\currentitemreference\empty
+ {\lettonothing\currentitemreference
\strc_itemgroups_increment_item_counter
\advance\c_strc_itemgroups_n_of_items\plusone
\setbox\b_strc_itemgroups\hbox
@@ -1713,7 +1720,7 @@
\let\strc_itemgroups_collected_store\relax
-\let\m_strc_itemgroups_collected\empty
+\lettonothing\m_strc_itemgroups_collected
\normalexpanded{\def\strc_itemgroups_collected_store#1\csname\e!stop\v!item\endcsname}%
{\advance\c_strc_itemgroups_collected_stored\plusone
@@ -1844,7 +1851,7 @@
%letitemgroupparameter\c!width\zeropoint
\strc_itemgroups_make_symbol_box
\strc_itemgroups_make_destination_box
- \let\m_strc_itemgroups_destination\empty
+ \lettonothing\m_strc_itemgroups_destination
\ht\b_strc_itemgroups\strutheight
\dp\b_strc_itemgroups\strutdepth
\box\b_strc_itemgroups
diff --git a/tex/context/base/mkxl/strc-lab.mkxl b/tex/context/base/mkxl/strc-lab.mkxl
index 368a412a7..98bd390f9 100644
--- a/tex/context/base/mkxl/strc-lab.mkxl
+++ b/tex/context/base/mkxl/strc-lab.mkxl
@@ -71,10 +71,10 @@
% todo: \strc_labels_command for user
-\let\m_strc_labels_sub\empty
+\lettonothing\m_strc_labels_sub
\appendtoks
- \let\m_strc_labels_sub\empty
+ \lettonothing\m_strc_labels_sub
\ifempty\currentlabelparent
% clone => parent | subclone => clone | subsubclone => subclone
\strc_define_commands_label
@@ -106,8 +106,8 @@
\letlabelparameter\s!counter\p_counter
\to \everydefinelabel
-\let\p_strc_constructions_title \empty
-\let\p_strc_constructions_number\empty
+\lettonothing\p_strc_constructions_title
+\lettonothing\p_strc_constructions_number
\newconditional\c_strc_constructions_number_keep
diff --git a/tex/context/base/mkxl/strc-lnt.mklx b/tex/context/base/mkxl/strc-lnt.mklx
index d88227bc5..31a558a06 100644
--- a/tex/context/base/mkxl/strc-lnt.mklx
+++ b/tex/context/base/mkxl/strc-lnt.mklx
@@ -87,7 +87,7 @@
% maybe do this in lua
-\mutable\let\currentlinenotereference\empty
+\mutable\lettonothing\currentlinenotereference
\def\page_lines_in_from{\in[lr:b:\currentlinenotereference]}
\def\page_lines_in_to {\in[lr:e:\currentlinenotereference]}
@@ -136,7 +136,7 @@
\fi
\fi}
-\let\currentlinenotereference\empty
+\lettonothing\currentlinenotereference
\mutable\let\linenotelinenumber\relax
diff --git a/tex/context/base/mkxl/strc-lst.mklx b/tex/context/base/mkxl/strc-lst.mklx
index c04d68fa7..e14f0c735 100644
--- a/tex/context/base/mkxl/strc-lst.mklx
+++ b/tex/context/base/mkxl/strc-lst.mklx
@@ -258,7 +258,7 @@
% use settings of first
\else
% use settings of root
- \let\m_first\empty
+ \lettonothing\m_first
\fi
\strc_lists_place_indeed\m_first\m_list{#settings}%
\stoppacked
@@ -271,7 +271,7 @@
\def\strc_lists_place_indeed#tag#list#settings%
{\begingroup
- \the\t_lists_every_renderingcleanup % \let\currentlistentrylocation\empty
+ \the\t_lists_every_renderingcleanup % \lettonothing\currentlistentrylocation
\edef\currentlist{#tag}%
\setupcurrentlist[#settings]%
\the\everystructurelist
@@ -523,7 +523,7 @@
\permanent\protected\def\strclistsentryprocess#tag#method#index#extra% This one is called at the lua end!
{\clf_pushlist#index\relax
- %\let\currentlistentrylocation\empty
+ %\lettonothing\currentlistentrylocation
\edef\currentlist {#tag}%
\edef\currentlistmethod{#method}%
\edef\currentlistindex {#index}%
@@ -627,7 +627,8 @@
\rightlabeltext\currentlistlabel}
\mutable\let\currentlistnumber\!!zerocount
-\mutable\let\currentlistlabel \empty
+
+\mutable\lettonothing\currentlistlabel
\protected\def\strc_lists_symbol_default
{\dontleavehmode
@@ -852,10 +853,10 @@
\newconditional\c_lists_show_number
\newconditional\c_lists_show_page
-\mutable\let\currentlistentrylocation \empty % watch the 'entry' in the name
-\mutable\let\currentlistentrynumber \empty % watch the 'entry' in the name
-\mutable\let\currentlistentrytitle \empty % watch the 'entry' in the name
-\mutable\let\currentlistentrypagenumber\empty % watch the 'entry' in the name
+\mutable\lettonothing\currentlistentrylocation % watch the 'entry' in the name
+\mutable\lettonothing\currentlistentrynumber % watch the 'entry' in the name
+\mutable\lettonothing\currentlistentrytitle % watch the 'entry' in the name
+\mutable\lettonothing\currentlistentrypagenumber % watch the 'entry' in the name
\appendtoks
\dontcomplain
@@ -918,10 +919,10 @@
\appendtoks
% as we don't want any interference we clear some variables
% afterwards
- \let\currentlistentrylocation \empty
- \let\currentlistentrynumber \empty
- \let\currentlistentrytitle \empty
- \let\currentlistentrypagenumber\empty
+ \lettonothing\currentlistentrylocation
+ \lettonothing\currentlistentrynumber
+ \lettonothing\currentlistentrytitle
+ \lettonothing\currentlistentrypagenumber
\setfalse\c_lists_has_page
\setfalse\c_lists_has_number
\setfalse\c_lists_show_page
@@ -929,7 +930,7 @@
\setfalse\c_lists_show_number
\to \t_lists_every_renderingcleanup
-\let\m_strc_list_alternative\empty % combined
+\lettonothing\m_strc_list_alternative % combined
\protected\def\strc_lists_apply_renderingsetup
{\the\t_lists_every_renderingsetup
@@ -1247,8 +1248,8 @@
\noindent % otherwise annotations are mirrored up
\typo_injectors_mark_list
\hbox \strc_lists_get_reference_attribute\v!all \strc_lists_get_destination_attribute {
- \letlistparameter\c!depth\zeropoint
- \letlistparameter\c!color\empty
+ \letlistparameter \c!depth\zeropoint
+ \resettlistparameter\c!color
\inheritedlistframed {
\letinteractionparameter\c!strut\v!no % still needed?
\strc_lists_set_style_color\c!style\c!color\v!all
@@ -1475,8 +1476,8 @@
\a_strc_lists_destination\attributeunsetvalue
\fi
\ifnum\a_strc_lists_destination=\attributeunsetvalue
- \let\strc_lists_get_destination_attribute\empty
- \let\strc_lists_set_destination_attribute\empty
+ \lettonothing\strc_lists_get_destination_attribute
+ \lettonothing\strc_lists_set_destination_attribute
\else
\let\strc_lists_get_destination_attribute\strc_lists_get_destination_attribute_indeed
\let\strc_lists_set_destination_attribute\strc_lists_set_destination_attribute_indeed
@@ -1487,8 +1488,8 @@
\a_strc_lists_destination\attributeunsetvalue
\let\strc_lists_get_reference_attribute\gobbleoneargument
\let\strc_lists_set_reference_attribute\gobbleoneargument
- \let\strc_lists_get_destination_attribute\empty
- \let\strc_lists_set_destination_attribute\empty
+ \lettonothing\strc_lists_get_destination_attribute
+ \lettonothing\strc_lists_set_destination_attribute
\let\strc_lists_set_style_color\strc_lists_set_style_color_normal}
\def\strc_lists_interaction_check_yes
@@ -1503,8 +1504,8 @@
\def\strc_lists_interaction_check_nop
{\let\strc_lists_get_reference_attribute \gobbleoneargument
\let\strc_lists_set_reference_attribute \gobbleoneargument
- \let\strc_lists_get_destination_attribute\empty
- \let\strc_lists_set_destination_attribute\empty
+ \lettonothing\strc_lists_get_destination_attribute
+ \lettonothing\strc_lists_set_destination_attribute
\let\strc_lists_set_style_color \strc_lists_set_style_color_normal}
\strc_lists_interaction_check_nop
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 90321a627..bac25c520 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -181,7 +181,7 @@
\newtoks\everyresetformulas
\appendtoks
- \let\currentformula\empty % to be checked:
+ \lettonothing\currentformula % to be checked:
\to \everyresetformulas
% implementation
@@ -199,7 +199,7 @@
\c!list=\currentplaceformulalist,
\c!bookmark=\currentplaceformulabookmark]%
[#2]%
- \glet\namedformulaentry\empty % \relax
+ \glettonothing\namedformulaentry % \relax
\glet#3\m_strc_counters_last_registered_index
\glet#4\m_strc_counters_last_registered_synchronize
\glet#5\m_strc_counters_last_registered_attribute}
@@ -388,30 +388,30 @@
\mutable\let\currentsubformulanumber \relax
\mutable\let\currentformulasnumber \relax
-\mutable\let\currentformulasreference \empty
-\mutable\let\currentformulareference \empty
-\mutable\let\currentsubformulareference \empty
-\mutable\let\currentnestedformulanumber \empty
-\mutable\let\currentnestedformulareference\empty
-\mutable\let\currentnestedformulaattribute\empty
+\mutable\lettonothing\currentformulasreference
+\mutable\lettonothing\currentformulareference
+\mutable\lettonothing\currentsubformulareference
+\mutable\lettonothing\currentnestedformulanumber
+\mutable\lettonothing\currentnestedformulareference
+\mutable\lettonothing\currentnestedformulaattribute
\appendtoks
- \glet\currentformulasreference \empty
- \glet\currentformulareference \empty
- \glet\currentsubformulareference \empty
- \glet\currentnestedformulareference\empty
+ \glettonothing\currentformulasreference
+ \glettonothing\currentformulareference
+ \glettonothing\currentsubformulareference
+ \glettonothing\currentnestedformulareference
\to \everyresetformulas
-\mutable\let\currentformulassuffix \empty
-\mutable\let\currentformulasuffix \empty
-\mutable\let\currentsubformulasuffix \empty
-\mutable\let\currentnestedformulasuffix\empty
+\mutable\lettonothing\currentformulassuffix
+\mutable\lettonothing\currentformulasuffix
+\mutable\lettonothing\currentsubformulasuffix
+\mutable\lettonothing\currentnestedformulasuffix
\appendtoks
- \glet\currentformulassuffix \empty
- \glet\currentformulasuffix \empty
- \glet\currentsubformulasuffix \empty
- \glet\currentnestedformulasuffix\empty
+ \glettonothing\currentformulassuffix
+ \glettonothing\currentformulasuffix
+ \glettonothing\currentsubformulasuffix
+ \glettonothing\currentnestedformulasuffix
\to \everyresetformulas
\mutable\let\currentplaceformulasynchronize \relax
@@ -426,10 +426,10 @@
\glet\currentnestedformulasynchronize\relax
\to \everyresetformulas
-\mutable\let\currentsubformulasattribute \empty
-\mutable\let\currentsubformulasnumber \empty
-\mutable\let\currentsubformulasreference \empty
-\mutable\let\currentsubformulassynchronize\empty
+\mutable\lettonothing\currentsubformulasattribute
+\mutable\lettonothing\currentsubformulasnumber
+\mutable\lettonothing\currentsubformulasreference
+\mutable\lettonothing\currentsubformulassynchronize
\def\strc_formulas_handle_current_references
{\strc_formulas_reference_show
@@ -494,8 +494,8 @@
% \fi
% \strc_counters_increment\v!formula}%
% \fi
-% \glet\currentplaceformulasuffix\empty
-% \glet\currentnestedformulasuffix\empty
+% \glettonothing\currentplaceformulasuffix
+% \glettonothing\currentnestedformulasuffix
% \placecurrentformulanumber}
\def\strc_formulas_handle_numbering_indeed
@@ -517,8 +517,8 @@
\fi
\strc_counters_increment\v!formula}%
\fi
- \glet\currentplaceformulasuffix\empty
- \glet\currentnestedformulasuffix\empty
+ \glettonothing\currentplaceformulasuffix
+ \glettonothing\currentnestedformulasuffix
\placecurrentformulanumber}
\def\strc_formulas_handle_numbering
@@ -535,8 +535,8 @@
\doifelsetext\currentnestedformulasuffix
{\strc_counters_setown_sub\v!formula\plustwo\currentnestedformulasuffix}%
{\strc_counters_increment_sub\v!formula\plustwo}%
- \glet\currentplaceformulasuffix\empty
- \glet\currentnestedformulasuffix\empty
+ \glettonothing\currentplaceformulasuffix
+ \glettonothing\currentnestedformulasuffix
\placecurrentformulanumber}
\def\strc_formulas_handle_sub_numbering
@@ -684,7 +684,7 @@
\newconstant\c_strc_math_split_mode
-\mutable\let\m_strc_math_split\empty
+\mutable\lettonothing\m_strc_math_split
\aliased\let\c_strc_math_line_mode\zerocount
\aliased\let\c_strc_math_flow_mode\plusone
@@ -698,7 +698,7 @@
\def\strc_formulas_display_space_before_normal
{% not ok, try \stopformula\par\startformula vs \stopformula\startformula
- \let\m_spacebefore\empty
+ \lettonothing\m_spacebefore
\ifvmode
\ifdim\lastskip>\zeropoint\else
\ifdim\prevdepth<\zeropoint\else
@@ -797,7 +797,7 @@
\fi
\ifvmode
\ifconditional\c_strc_formulas_packed
- \let\p_spacebefore\empty
+ \lettonothing\p_spacebefore
\else
\edef\p_spacebefore{\formulaparameter\c!spacebefore}%
\fi
@@ -815,7 +815,7 @@
\fi
\ifvmode
\ifconditional\c_strc_formulas_packed
- \let\p_spaceafter\empty
+ \lettonothing\p_spaceafter
\else
\edef\p_spaceafter{\formulaparameter\c!spaceafter}%
\fi
@@ -1672,8 +1672,8 @@
% already defined
%
-% \let\startinnermath\empty
-% \let\stopinnermath \empty
+% \lettonothing\startinnermath
+% \lettonothing\stopinnermath
% \defineformulaalternative[multi][\begindmath][\enddmath]
%
@@ -1758,7 +1758,7 @@
\global\settrue\c_strc_formulas_inside_formulas
\edef\currentformulasreference{#1}%
\strc_formulas_handle_number
- \let\currentformula\empty
+ \lettonothing\currentformula
% \strc_formulas_forget_display_skips
\enforced\protected\def\startformula
{\advance\scratchcounter\plusone
@@ -1808,8 +1808,8 @@
\tolerant\protected\def\strc_formulas_place[#1]%
{\xdef\currentplaceformulareference{#1}%
- \glet\currentplaceformulasuffix\empty
- \glet\currentnestedformulasuffix\empty
+ \glettonothing\currentplaceformulasuffix
+ \glettonothing\currentnestedformulasuffix
\global\setfalse\c_strc_formulas_incremented
\global\setfalse\c_strc_formulas_referenced
\global\settrue\c_strc_formulas_inside_place
@@ -1839,9 +1839,9 @@
% \startplaceformula[title=whatever] \startformula e=mc^2 \stopformula \stopplaceformula
% \startplaceformula[suffix=x] \startformula e=mc^2 \stopformula \stopplaceformula
-\mutable\let\currentplaceformulatitle \empty
-\mutable\let\currentplaceformulareference\empty
-\mutable\let\currentplaceformulasuffix \empty
+\mutable\lettonothing\currentplaceformulatitle
+\mutable\lettonothing\currentplaceformulareference
+\mutable\lettonothing\currentplaceformulasuffix
\permanent\tolerant\protected\def\startplaceformula[#1]%
{\begingroup
@@ -1858,25 +1858,25 @@
{\doifassignmentelse{#1}\strc_formulas_start_place_parameters\strc_formulas_start_place_reference[#1]}
\def\strc_formulas_start_place_nop[#1]%
- {\glet\currentplaceformulareference\empty
- \glet\currentplaceformulasuffix \empty
+ {\glettonothing\currentplaceformulareference
+ \glettonothing\currentplaceformulasuffix
\strc_formulas_place_nop}
\def\strc_formulas_start_place_reference[#1]%
{\xdef\currentplaceformulareference{#1}%
- \glet\currentplaceformulasuffix\empty
+ \glettonothing\currentplaceformulasuffix
%\doifelsenextbgroup\strc_formulas_place_yes\strc_formulas_place_nop} % [ref]{}
\strc_formulas_place_nop}
-\mutable\let\currentplaceformulabookmark\empty
-\mutable\let\currentplaceformulalist \empty
+\mutable\lettonothing\currentplaceformulabookmark
+\mutable\lettonothing\currentplaceformulalist
\def\strc_formulas_start_place_parameters[#1]% maybe a dedicated setup handler
- {\letdummyparameter\c!title \empty
- \letdummyparameter\c!reference\empty
- \letdummyparameter\c!bookmark \empty
- \letdummyparameter\c!list \empty
- \letdummyparameter\c!suffix \empty
+ {\resetdummyparameter\c!title
+ \resetdummyparameter\c!reference
+ \resetdummyparameter\c!bookmark
+ \resetdummyparameter\c!list
+ \resetdummyparameter\c!suffix
\getdummyparameters[#1]%
\edef\currentplaceformulatitle {\dummyparameter\c!title}%
\edef\currentplaceformulareference{\dummyparameter\c!reference}%
@@ -1904,13 +1904,13 @@
\xdef\currentnestedformulasuffix {\mathalignmentparameter\c!suffix}%
\global\d_math_eqalign_number_threshold\mathalignmentparameter\c!numberthreshold\relax
\orelse\ifhastok+{#1}%
- \glet\currentnestedformulareference\empty
+ \glettonothing\currentnestedformulareference
\xdef\currentnestedformulasuffix {+}%
\orelse\ifempty\currentplaceformulareference
\xdef\currentnestedformulareference{#1}%
\xdef\currentnestedformulasuffix {#2}%
\else
- \glet\currentnestedformulareference\empty
+ \glettonothing\currentnestedformulareference
\xdef\currentnestedformulasuffix {#1}%
\fi
\strc_formulas_place_number_nested_check}
@@ -1991,7 +1991,7 @@
\hskip-\leftskip % bah
\box\b_strc_math_display}
-\mutable\let\namedformulaentry\empty % \relax % this will become a key/value so that we can do bookmarks
+\mutable\lettonothing\namedformulaentry % \relax % this will become a key/value so that we can do bookmarks
\permanent\protected\def\setformulalistentry#1%
{\xdef\namedformulaentry{#1}}
diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx
index fbe45b2e8..76c95ab18 100644
--- a/tex/context/base/mkxl/strc-not.mklx
+++ b/tex/context/base/mkxl/strc-not.mklx
@@ -146,10 +146,10 @@
\instance\protected\edefcsname\e!start#tag\endcsname{\strc_notations_start[#tag]}%
\instance\protected\edefcsname\e!stop #tag\endcsname{\strc_notations_stop}}
-\let\m_strc_notation_sub\empty
+\lettonothing\m_strc_notation_sub
\appendtoks
- \let\m_strc_notation_sub\empty
+ \lettonothing\m_strc_notation_sub
\ifempty\currentnotationparent
% clone => parent | subclone => clone | subsubclone => subclone
\strc_define_commands_notation
@@ -184,8 +184,8 @@
%\strc_notes_setup_counter\currentnotation
\to \everydefinenotation
-\let\p_strc_constructions_title \empty
-\let\p_strc_constructions_number\empty
+\lettonothing\p_strc_constructions_title
+\lettonothing\p_strc_constructions_number
\protected\defcsname\??constructioninitializer\v!notation\endcsname
{\let \currentnotation \currentconstruction
@@ -544,8 +544,8 @@
\newconstant\a_strc_notes_text_reference
\newconstant\a_strc_notes_text_destination
-\let\strc_notes_get_reference_attribute_symbol \empty
-\let\strc_notes_get_destination_attribute_symbol\empty
+\lettonothing\strc_notes_get_reference_attribute_symbol
+\lettonothing\strc_notes_get_destination_attribute_symbol
\def\strc_notes_interaction_check_inline
{\edef\p_interaction{\noteparameter\c!interaction}%
@@ -561,8 +561,8 @@
\mutable\let\currentnotenumber\!!zerocount
-\let\strc_notes_get_reference_attribute_symbol \empty
-\let\strc_notes_get_destination_attribute_symbol\empty
+\lettonothing\strc_notes_get_reference_attribute_symbol
+\lettonothing\strc_notes_get_destination_attribute_symbol
\let\strc_notes_set_reference_attribute_number\donothing
\let\strc_notes_set_reference_attribute_text \donothing
@@ -576,8 +576,8 @@
\let\m_strc_notes_internal\relax
\def\strc_notes_prepare_inline_references_nop
- {\let\strc_notes_get_reference_attribute_symbol\empty
- \let\strc_notes_get_destination_attribute_symbol\empty
+ {\lettonothing\strc_notes_get_reference_attribute_symbol
+ \lettonothing\strc_notes_get_destination_attribute_symbol
\let\strc_notes_set_style_color_inline\strc_notes_set_style_color_inline_nop}
\def\strc_notes_prepare_inline_references_yes
@@ -727,7 +727,7 @@
\dostoptagged
\egroup
\endgroup
- \glet\lastnotesymbol\empty}
+ \glettonothing\lastnotesymbol}
\protected\def\strc_notes_inject_dummy % temp hack
{\removeunwantedspaces
@@ -739,7 +739,7 @@
\fi
\nobreak
\hpack to .5\emwidth{}%
- \glet\lastnotesymbol\empty}
+ \glettonothing\lastnotesymbol}
\protected\def\strc_notes_inject_separator % patch by WS due to request on list
{\edef\p_textseparator{\noteparameter\c!textseparator}%
@@ -1630,7 +1630,7 @@
\newconditional\inlocalnotes
-\mutable\let\localnoteslist\empty
+\mutable\lettonothing\localnoteslist
\permanent\tolerant\protected\def\startlocalnotes[#list]% grouping ? (we used to have a second argument ... settings)
{\settrue\inlocalnotes
@@ -1641,7 +1641,7 @@
{\processcommacommand[\localnoteslist]\strc_notes_local_stop_step
\setfalse\inlocalnotes}
-\let\p_strc_notes_continue\empty
+\lettonothing\p_strc_notes_continue
\def\strc_notes_local_start_step#tag%
{\p_strc_notes_continue{\noteparameter\c!continue}%
@@ -1974,7 +1974,7 @@
\installcorenamespace{notesymbol}
-\mutable\let\lastnotesymbol\empty % todo: per class
+\mutable\lettonothing\lastnotesymbol % todo: per class
\permanent\tolerant\protected\def\notesymbol[#tag]#keepspacer[#reference]%
{\ifnotesenabled
diff --git a/tex/context/base/mkxl/strc-num.mkxl b/tex/context/base/mkxl/strc-num.mkxl
index f0735b0e5..3f3bd2143 100644
--- a/tex/context/base/mkxl/strc-num.mkxl
+++ b/tex/context/base/mkxl/strc-num.mkxl
@@ -70,7 +70,7 @@
\edef\p_number{\counterparameter\c!number}%
\ifempty\p_number \else
\clf_setcounter{\counterparameter\s!name}\numexpr\p_number\relax
- \letcounterparameter\c!number\empty
+ \resetcounterparameter\c!number
\fi
\edef\p_start{\counterparameter\c!start}%
\setexpandedcounterparameter\c!start{\ifempty\p_start0\else\number\p_start\fi}%
@@ -378,8 +378,8 @@
% currentstructurecomponent => \strc_current_ or just \m_strc_
-\mutable\let\currentname \empty
-\mutable\let\currentcounter\empty
+\mutable\lettonothing\currentname
+\mutable\lettonothing\currentcounter
\protected\def\strc_counters_register_component#1#2#3#4#5#6#7[#8][#9]% maybe also nolist
{\begingroup
@@ -426,7 +426,7 @@
\let\currentstructurecomponentreferenceprefix\referenceprefix
\fi
\ifdefined\currentstructurecomponentreferenceprefix\else
- \let\currentstructurecomponentreferenceprefix\empty
+ \lettonothing\currentstructurecomponentreferenceprefix
\fi}
\def\strc_counters_register_component_page#1%
@@ -666,7 +666,7 @@
% \ifempty#2%
% \the#5%
% \else
-% \let\currentcounter\empty
+% \lettonothing\currentcounter
% \the\everysetupcounter
% \fi
% \strc_counter_setup_pop}%
@@ -688,7 +688,7 @@
% \edef\p_number{\counterparameter\c!number}%
% \ifempty\p_number \else
% \strc_counters_set\currentcounter\p_number
-% \letcounterparameter\c!number\empty
+% \resetcounterparameter\c!number
% \fi
% \fi
% \to \everysetupcounter
diff --git a/tex/context/base/mkxl/strc-ref.mklx b/tex/context/base/mkxl/strc-ref.mklx
index 012d9d92d..c55509f54 100644
--- a/tex/context/base/mkxl/strc-ref.mklx
+++ b/tex/context/base/mkxl/strc-ref.mklx
@@ -70,28 +70,28 @@
\installdirectcommandhandler \??referencing {referencing} % \??referencing
-\mutable\let\referenceprefix \empty
-
-\mutable\let\currentdestinationattribute \empty
-
-\mutable\let\currentreferenceattribute \empty
-\mutable\let\currentreferencecoding \empty
-\mutable\let\currentreferencecontent \empty
-\mutable\let\currentreferencedata \empty
-\mutable\let\currentreferenceexpansion \empty
-\mutable\let\currentreferenceformatautocase\empty
-\mutable\let\currentreferenceformatlabel \empty
-\mutable\let\currentreferenceformatsetups \empty
-\mutable\let\currentreferenceformattype \empty
-\mutable\let\currentreferencekind \empty
-\mutable\let\currentreferencelabels \empty
-%mutable\let\currentreferencenumber \empty
-%mutable\let\currentreferenceorder \empty
-%mutable\let\currentreferencepage \empty
-%mutable\let\currentreferencerealpage \empty
-%mutable\let\currentreferencetext \empty
-%mutable\let\currentreferencetitle \empty
-\mutable\let\currentreferenceuserdata \empty
+\mutable\lettonothing\referenceprefix
+
+\mutable\lettonothing\currentdestinationattribute
+
+\mutable\lettonothing\currentreferenceattribute
+\mutable\lettonothing\currentreferencecoding
+\mutable\lettonothing\currentreferencecontent
+\mutable\lettonothing\currentreferencedata
+\mutable\lettonothing\currentreferenceexpansion
+\mutable\lettonothing\currentreferenceformatautocase
+\mutable\lettonothing\currentreferenceformatlabel
+\mutable\lettonothing\currentreferenceformatsetups
+\mutable\lettonothing\currentreferenceformattype
+\mutable\lettonothing\currentreferencekind
+\mutable\lettonothing\currentreferencelabels
+%mutable\lettonothing\currentreferencenumber
+%mutable\lettonothing\currentreferenceorder
+%mutable\lettonothing\currentreferencepage
+%mutable\lettonothing\currentreferencerealpage
+%mutable\lettonothing\currentreferencetext
+%mutable\lettonothing\currentreferencetitle
+\mutable\lettonothing\currentreferenceuserdata
\newif\ifreferencing \referencingtrue
@@ -375,7 +375,7 @@
\ifnum\lastdestinationattribute>\zerocount
\edef#cs{attr \destinationattribute\number\lastdestinationattribute}%
\else
- \let#cs\empty
+ \lettonothing#cs%
\fi}
%D It's about time to clean up references .. stable enough now.
@@ -542,7 +542,7 @@
%D one keeps references local, but the global ones in view. To enable this feature,
%D we explictly split the prefix from the reference.
-\let\referenceprefix\empty
+\lettonothing\referenceprefix
%D For a long time the only way to access an external file was to use the file
%D prefix (\type {somefile::}. However, when you split up a document, redefining the
@@ -580,11 +580,11 @@
%D
%D We also use the odd/even characteristic to determine the page state.
-\mutable\let\currentrealreference \empty
-\mutable\let\currentpagereference \empty
-\mutable\let\currenttextreference \empty
-\mutable\let\currentsubtextreference \empty
-\mutable\let\currentsubsubtextreference\empty
+\mutable\lettonothing\currentrealreference
+\mutable\lettonothing\currentpagereference
+\mutable\lettonothing\currenttextreference
+\mutable\lettonothing\currentsubtextreference
+\mutable\lettonothing\currentsubsubtextreference
% referencepagestate:
%
@@ -923,14 +923,14 @@
\permanent\protected\def\setupreferenceprefix[#prefix]%
{\edef\p_prefix{#prefix}%
\ifempty\p_prefix
- \let\referenceprefix\empty
+ \lettonothing\referenceprefix
\orelse\ifx\p_prefix\m_strc_references_prefix_yes
\letreferencingparameter\c!prefix\s!unknown
\global\advance\prefixcounter\plusone
\edef\referenceprefix{\the\prefixcounter}%
\orelse\ifx\p_prefix\m_strc_references_prefix_nop
\letreferencingparameter\c!prefix\s!unknown
- \let\referenceprefix\empty
+ \lettonothing\referenceprefix
\orelse\ifx\p_prefix\s!unknown
% forget about it
\else
@@ -1217,9 +1217,9 @@
\newtoks\defaultleftreferencetoks
\newtoks\defaultrightreferencetoks
-\permanent\let\rightofreferencecontent\empty
-\permanent\let\leftofreference \empty
-\permanent\let\rightofreference \empty
+\permanent\lettonothing\rightofreferencecontent
+\permanent\lettonothing\leftofreference
+\permanent\lettonothing\rightofreference
\permanent\protected\def\leftofreferencecontent
{\removeunwantedspaces
@@ -1284,14 +1284,14 @@
{#1}%
\else
\defaultleftreferencetoks
- \enforced\let\leftofreferencecontent\empty
+ \enforced\lettonothing\leftofreferencecontent
\fi
\rightreferencetoks
\ifparameter#2\or
{#2}%
\else
\defaultrightreferencetoks
- \enforced\let\rightofreferencecontent\empty
+ \enforced\lettonothing\rightofreferencecontent
\fi
% inefficient: double resolve
\doifelsereferencefound{#3} % we need to resolve the text
@@ -1411,8 +1411,8 @@
\def\currentreferencecontent{\directsetup\currentreferenceformatsetups}%
\fi
%
- \enforced\let\leftofreferencecontent \empty
- \enforced\let\rightofreferencecontent\empty
+ \enforced\lettonothing\leftofreferencecontent
+ \enforced\lettonothing\rightofreferencecontent
\strc_references_pickup_goto}
\permanent\protected\def\autoreferencelabeltext
diff --git a/tex/context/base/mkxl/strc-reg.mkxl b/tex/context/base/mkxl/strc-reg.mkxl
index b0f50ecfd..3af07f0a4 100644
--- a/tex/context/base/mkxl/strc-reg.mkxl
+++ b/tex/context/base/mkxl/strc-reg.mkxl
@@ -138,33 +138,33 @@
%D test \index{test+one} test \index{test+two} more \index{more}
%D \stoptyping
-\mutable\let\currentregistercharacter \empty
-\mutable\let\currentregistercoding \empty
-\mutable\let\currentregisterentries \empty
-\mutable\let\currentregisterentriesa \empty
-\mutable\let\currentregisterentriesb \empty
-\mutable\let\currentregisterentriesc \empty
-\mutable\let\currentregisterexpansion \empty
-\mutable\let\currentregisterkeys \empty
-\mutable\let\currentregisterkeysa \empty
-\mutable\let\currentregisterkeysb \empty
-\mutable\let\currentregisterkeysc \empty
-\mutable\let\currentregisterlabel \empty
-\mutable\let\currentregistermaxwidth \empty
-\mutable\let\currentregistername \empty
-\mutable\let\currentregisternumber \empty
-\mutable\let\currentregisterownnumber \empty
-\mutable\let\currentregisterpageindex \empty
-\mutable\let\currentregisterpagesymbol \empty
-\mutable\let\currentregistersectionindex\empty
-\mutable\let\currentregisterseeindex \empty
-\mutable\let\currentregisterseeword \empty
-\mutable\let\currentregistersynchronize \empty
-\mutable\let\currentregisterxmlsetup \empty
-\mutable\let\currentregisterprocessors \empty
-\mutable\let\currentregisterprocessorsa \empty
-\mutable\let\currentregisterprocessorsb \empty
-\mutable\let\currentregisterprocessorsc \empty
+\mutable\lettonothing\currentregistercharacter
+\mutable\lettonothing\currentregistercoding
+\mutable\lettonothing\currentregisterentries
+\mutable\lettonothing\currentregisterentriesa
+\mutable\lettonothing\currentregisterentriesb
+\mutable\lettonothing\currentregisterentriesc
+\mutable\lettonothing\currentregisterexpansion
+\mutable\lettonothing\currentregisterkeys
+\mutable\lettonothing\currentregisterkeysa
+\mutable\lettonothing\currentregisterkeysb
+\mutable\lettonothing\currentregisterkeysc
+\mutable\lettonothing\currentregisterlabel
+\mutable\lettonothing\currentregistermaxwidth
+\mutable\lettonothing\currentregistername
+\mutable\lettonothing\currentregisternumber
+\mutable\lettonothing\currentregisterownnumber
+\mutable\lettonothing\currentregisterpageindex
+\mutable\lettonothing\currentregisterpagesymbol
+\mutable\lettonothing\currentregistersectionindex
+\mutable\lettonothing\currentregisterseeindex
+\mutable\lettonothing\currentregisterseeword
+\mutable\lettonothing\currentregistersynchronize
+\mutable\lettonothing\currentregisterxmlsetup
+\mutable\lettonothing\currentregisterprocessors
+\mutable\lettonothing\currentregisterprocessorsa
+\mutable\lettonothing\currentregisterprocessorsb
+\mutable\lettonothing\currentregisterprocessorsc
\newconditional\c_strc_registers_defining
\setnewconstant\c_strc_registers_maxlevel \plusfive
@@ -188,8 +188,8 @@
\dorecurse\c_strc_registers_maxlevel{% weird, expanded should not be needed
\normalexpanded{\defineregister[\currentregister:\recurselevel][\currentregister]}%
%\defineregister[\currentregister:\recurselevel][\currentregister]%
- \letregisterparameter{\c!entries:\recurselevel}\empty % needed as we use detokenize (ok, we can
- \letregisterparameter{\c!keys :\recurselevel}\empty % avoid it, but it's faster too)
+ \resetregisterparameter{\c!entries:\recurselevel}% needed as we use detokenize (ok, we can
+ \resetregisterparameter{\c!keys :\recurselevel}% avoid it, but it's faster too)
}%
%
\setfalse\c_strc_registers_defining
@@ -202,8 +202,8 @@
%D Registering:
-\glet\currentregistername \empty
-\glet\currentregisternumber\!!zerocount
+\glettonothing\currentregistername
+\glet \currentregisternumber\!!zerocount
\def\strc_registers_register_page_entry
{\iftrialtypesetting
@@ -1083,7 +1083,7 @@
\fi
\fi}
-\let\m_current_register\empty
+\lettonothing\m_current_register
\permanent\protected\def\pushcurrentregister#1%
{\let\m_current_register\currentregister
@@ -1156,7 +1156,7 @@
\doapplyregisterentrycommand{#2}{#5}%
\fi
\else
- \let\currentregisterseeindex\empty
+ \lettonothing\currentregisterseeindex
\doapplyregisterentrycommand{#2}{#5}%
\fi
\popcurrentregister}
@@ -1191,7 +1191,7 @@
\iflocation
\def\currentregisterseeindex{#6}%
\else
- \let\currentregisterseeindex\empty
+ \lettonothing\currentregisterseeindex
\fi
\ifnum#2=\plusone
\labeltexts\v!see{\doapplyregisterseecommand{#4}{#7}}%
@@ -1224,7 +1224,7 @@
\iflocation
\def\currentregistersectionindex{#6}%
\else
- \let\currentregistersectionindex\empty
+ \lettonothing\currentregistersectionindex
\fi
\ifnum#2=\plusone\else
,\space
@@ -1284,7 +1284,7 @@
% not yet ok : new internal handler names
-\aliased\let\registerpageseparatorsymbol\empty
+\lettonothing\registerpageseparatorsymbol
\permanent\protected\def\registerpagebuttonsymbol
{\vrule\s!width\emwidth\s!height\exheight\s!depth\zeropoint\relax}
@@ -1298,7 +1298,7 @@
{\enforced\frozen\def\registerpageseparatorsymbol{,\space}} % now done via conversion
\defcsname\??registersymbol\v!none\endcsname
- {\enforced\frozen\let\registerpageseparatorsymbol\empty
+ {\enforced\frozen\lettonothing\registerpageseparatorsymbol
\enforced\frozen\let\registeronepage\gobblefivearguments
\enforced\frozen\let\registerpagerange\gobbleeightarguments}
diff --git a/tex/context/base/mkxl/strc-ren.mkxl b/tex/context/base/mkxl/strc-ren.mkxl
index 012722f6e..1c9c23ac0 100644
--- a/tex/context/base/mkxl/strc-ren.mkxl
+++ b/tex/context/base/mkxl/strc-ren.mkxl
@@ -435,9 +435,10 @@
\c!renderingsetup=\??headrenderings:\currentheadalternative]
\let\currentheadalternative \v!normal
-\let\currentheadrenderingsetup \empty
\let\currentheadrenderingalternative\v!vertical
+\lettonothing\currentheadrenderingsetup
+
\permanent\tolerant\protected\def\defineheadplacement[#1]#*[#2]%
{\doifelsenextbgroup
{\strc_rendering_define_placement_yes[#1][#2]}%
@@ -465,8 +466,8 @@
% \headshownumber
% \headisdisplay
-\let\headnumbercontent\empty
-\let\headtextcontent \empty
+\lettonothing\headnumbercontent
+\lettonothing\headtextcontent
\newdimen\headwidth
\newdimen\headtextwidth
diff --git a/tex/context/base/mkxl/strc-sbe.mkxl b/tex/context/base/mkxl/strc-sbe.mkxl
index f301583ec..5ece81a43 100644
--- a/tex/context/base/mkxl/strc-sbe.mkxl
+++ b/tex/context/base/mkxl/strc-sbe.mkxl
@@ -79,7 +79,7 @@
bookmark {\sectionblockparameter\c!bookmark}%
\relax}
-\mutable\let\currentsectionblock\empty % was \s!unknown
+\mutable\lettonothing\currentsectionblock % was \s!unknown
\permanent\tolerant\protected\def\startsectionblock[#1]#*[#2]%
{%\ctxlua{structures.counters.check(0)}% we assume sane usage of \page, as this is the only workable place (in push)
diff --git a/tex/context/base/mkxl/strc-sec.mkxl b/tex/context/base/mkxl/strc-sec.mkxl
index 3973d0834..9ac35ee15 100644
--- a/tex/context/base/mkxl/strc-sec.mkxl
+++ b/tex/context/base/mkxl/strc-sec.mkxl
@@ -55,8 +55,8 @@
\def\m_strc_references_prefix_yes{+}
\def\m_strc_references_prefix_nop{-}
-\mutable\let\currentstructurereferenceprefix\empty
-\mutable\let\currentstructurereferencetext \empty
+\mutable\lettonothing\currentstructurereferenceprefix
+\mutable\lettonothing\currentstructurereferencetext
\installglobalmacrostack\currentstructurereferenceprefix
@@ -105,15 +105,16 @@
\permanent\def\namedstructureheadlocation#1% expandable, maybe [#1]
{\csname\??savedinternalreference\ifcsname\??savedinternalreference#1\endcsname#1\else\s!default\fi\endcsname}
-\mutable\let\currentheadbackreference \empty
-\mutable\let\currentheaddefault \empty
-\mutable\let\currentheadincrement \empty
-\mutable\let\currentheadinteraction \empty
-\mutable\let\currentheadlabeltag \empty
-\mutable\let\currentheadnumber \!!zerocount
-\mutable\let\currentheadrenderingalternative\empty
-\mutable\let\currentheadrenderingsetup \empty
-\mutable\let\currentheadtext \empty
+\mutable\lettonothing\currentheadbackreference
+\mutable\lettonothing\currentheaddefault
+\mutable\lettonothing\currentheadincrement
+\mutable\lettonothing\currentheadinteraction
+\mutable\lettonothing\currentheadlabeltag
+\mutable\lettonothing\currentheadrenderingalternative
+\mutable\lettonothing\currentheadrenderingsetup
+\mutable\lettonothing\currentheadtext
+
+\mutable\let\currentheadnumber\!!zerocount
% zeros:
%
@@ -457,9 +458,9 @@
\setstructurelevel\currenthead{\thenamedheadlevel\currenthead}%
\to \everyredefinehead
-\mutable\let\currentsectionheadcoupling\empty
-\mutable\let\currentsectionheadsection \empty
-\mutable\let\currentsectionlevel \empty
+\mutable\lettonothing\currentsectionheadcoupling
+\mutable\lettonothing\currentsectionheadsection
+\mutable\lettonothing\currentsectionlevel
\appendtoks
% beware, this is a global register
@@ -502,14 +503,14 @@
\pop_macro_currentheadparent
\pop_macro_currenthead}
-\mutable\let\currentnamedsection\empty
+\mutable\lettonothing\currentnamedsection
\installmacrostack\currentnamedsection
% structure sections (the parents of chapter etc)
-\aliased\let\firstsectionname\empty
-\aliased\let\lastsectionname \empty
+\mutable\lettonothing\firstsectionname
+\mutable\lettonothing\lastsectionname
%aliased\let\resetallstructuremarks \relax
%aliased\let\resetcurrentstructuremarks \relax
@@ -554,7 +555,7 @@
\newtoks\everydefinesection
-\mutable\let\currentsection\empty % historic alias
+\mutable\lettonothing\currentsection % historic alias
\permanent\protected\def\definesection[#1]%
{\ifcsname\??headlevel#1\endcsname \else
@@ -819,9 +820,10 @@
\fi
\dostoptagged}
-\mutable\let\currenthead \empty
-\mutable\let\currentheadcoupling\empty
-\mutable\let\currentheadsection \empty
+\mutable\lettonothing\currenthead
+\mutable\lettonothing\currentheadcoupling
+\mutable\lettonothing\currentheadsection
+
\mutable\let\currentheadlevel \!!zerocount
\mutable\let\currentheadcounter \!!zerocount
@@ -876,9 +878,9 @@
\newtoks\everybeforesectionheadhandle
\newtoks\everyaftersectionheadhandle
-\mutable\let\getheadnumber\empty
-\mutable\let\getheadtitle \empty
-\mutable\let\getheadsyncs \empty
+\mutable\lettonothing\getheadnumber
+\mutable\lettonothing\getheadtitle
+\mutable\lettonothing\getheadsyncs
\def\strc_sectioning_handle#1#2#3% name data userdata (we can move #1 to the caller)
{\xdef\currenthead {#1}%
@@ -905,9 +907,9 @@
%
% \currentstructuresynchronize % will move
%
- \let\getheadnumber\empty
- \let\getheadtitle \empty
- \let\getheadsyncs \empty
+ \lettonothing\getheadnumber
+ \lettonothing\getheadtitle
+ \lettonothing\getheadsyncs
\ifconditional\c_strc_sectioning_increment
\ifconditional\c_strc_sectioning_place
\strc_sectioning_before_yes
@@ -1214,7 +1216,7 @@
%permanent\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\currenthead+\minusone\relax}
\permanent\def\previoussectioncountervalue{\clf_depthnumber\numexpr\thenamedheadlevel\previoushead\relax}
-\mutable\let\previoushead\empty
+\mutable\lettonothing\previoushead
\def\strc_sectioning_handle_page_nop
{\edef\p_continue{\headparameter\c!continue}%
diff --git a/tex/context/base/mkxl/strc-syn.mkxl b/tex/context/base/mkxl/strc-syn.mkxl
index e6081d0d9..af6d0c6e2 100644
--- a/tex/context/base/mkxl/strc-syn.mkxl
+++ b/tex/context/base/mkxl/strc-syn.mkxl
@@ -260,12 +260,12 @@
% these might become private
-\mutable\let\currentsynonymoption \empty
-\mutable\let\currentsynonymcoding \empty
-\mutable\let\currentsynonymexpansion\empty
-\mutable\let\currentsynonym \empty
-\mutable\let\currentsynonymtag \empty
-\mutable\let\currentsynonymtext \empty
+\mutable\lettonothing\currentsynonymoption
+\mutable\lettonothing\currentsynonymcoding
+\mutable\lettonothing\currentsynonymexpansion
+\mutable\lettonothing\currentsynonym
+\mutable\lettonothing\currentsynonymtag
+\mutable\lettonothing\currentsynonymtext
\permanent\tolerant\protected\def\definesynonyms[#1]#*[#2]#*[#3]#*[#4]% name plural \meaning \use
{\ifnum\lastarguments=\plusfour
@@ -498,7 +498,7 @@
{}% todo: message that invalid
\endgroup}
-\mutable\let\currentsimplelistentry\empty
+\mutable\lettonothing\currentsimplelistentry
\protected\def\strc_synonym_normal#1#2#3#4%
{\begingroup
@@ -527,12 +527,12 @@
% these might become private
-\mutable\let\currentsortingoption \empty
-\mutable\let\currentsortingcoding \empty
-\mutable\let\currentsortingexpansion\empty
-\mutable\let\currentsorting \empty
-\mutable\let\currentsortingtag \empty
-\mutable\let\currentsortingtext \empty
+\mutable\lettonothing\currentsortingoption
+\mutable\lettonothing\currentsortingcoding
+\mutable\lettonothing\currentsortingexpansion
+\mutable\lettonothing\currentsorting
+\mutable\lettonothing\currentsortingtag
+\mutable\lettonothing\currentsortingtext
\permanent\tolerant\protected\def\definesorting[#1]#*[#2]#*[#3]%
{\ifnum\lastarguments=\plusthree
diff --git a/tex/context/base/mkxl/strc-tag.mkxl b/tex/context/base/mkxl/strc-tag.mkxl
index 55f8125f8..3c00acb65 100644
--- a/tex/context/base/mkxl/strc-tag.mkxl
+++ b/tex/context/base/mkxl/strc-tag.mkxl
@@ -280,7 +280,7 @@
\newconditional\c_strc_tags_enabled
-\aliased\let\dotaggedplaceholder\empty
+\lettonothing\dotaggedplaceholder
\immutable\chardef\strc_tags_placeholder_char\zerocount % "FFFC
@@ -309,7 +309,7 @@
\enforced\let\dostoptagged \donothing
\else
% initial
- \enforced\let\dotaggedplaceholder \empty
+ \enforced\lettonothing\dotaggedplaceholder
\enforced\let\dostarttagged \gobbletwoarguments
\enforced\let\dostarttaggednodetail\gobbleoneargument
\enforced\let\dostarttaggedchained \gobblethreearguments
@@ -388,10 +388,10 @@
{\endgraf % we end before the group
\begingroup
\ifarguments
- \let\currentparagraph\empty
+ \lettonothing\currentparagraph
\or
\ifhastok={#1}%
- \let\currentparagraph\empty
+ \lettonothing\currentparagraph
\setupcurrentparagraph[#1]
\else
\edef\currentparagraph{#1}%
diff --git a/tex/context/base/mkxl/strc-usr.mkxl b/tex/context/base/mkxl/strc-usr.mkxl
index 9ecb80ebd..cd1f97dec 100644
--- a/tex/context/base/mkxl/strc-usr.mkxl
+++ b/tex/context/base/mkxl/strc-usr.mkxl
@@ -98,7 +98,7 @@
\permanent\protected\def\startuserdata
{\begingroup
- \let\currentuserdata\empty
+ \lettonothing\currentuserdata
\doifelsenextoptionalcs\userdata_start_delayed\userdata_start_indeed}
\def\userdata_start_delayed[#1]%
diff --git a/tex/context/base/mkxl/supp-box.mkxl b/tex/context/base/mkxl/supp-box.mkxl
index 5a45396d1..cc934fe04 100644
--- a/tex/context/base/mkxl/supp-box.mkxl
+++ b/tex/context/base/mkxl/supp-box.mkxl
@@ -1081,7 +1081,7 @@
%D This can be done in a more modern way but for nostalgic reasons we keep it.
-\mutable\let\nextprocessedtoken\empty
+\mutable\lettonothing\nextprocessedtoken
\mutable\let\before \relax % for now mutable
%mutable\let\between\relax % is a math character
@@ -1180,8 +1180,8 @@
%D See \MKIV\ file for the older implementation.
-\let\m_syst_boxes_left \empty
-\let\m_syst_boxes_right\empty
+\lettonothing\m_syst_boxes_left
+\lettonothing\m_syst_boxes_right
\permanent\protected\def\limitatetext#1#2#3%
{% we could also split in \LUA
diff --git a/tex/context/base/mkxl/symb-ini.mkxl b/tex/context/base/mkxl/symb-ini.mkxl
index e26892e4d..cf61ddb1f 100644
--- a/tex/context/base/mkxl/symb-ini.mkxl
+++ b/tex/context/base/mkxl/symb-ini.mkxl
@@ -58,12 +58,12 @@
\setupsymbols
[\c!stylealternative=\v!text]
-\mutable\let\currentsymbol \empty
-\mutable\let\currentsymbolset\empty
+\mutable\lettonothing\currentsymbol
+\mutable\lettonothing\currentsymbolset
\newtoks\t_symb_setups
-\let\m_symb_current_set\empty
+\lettonothing\m_symb_current_set
\newconditional\c_symb_found
@@ -88,7 +88,7 @@
\aliased\let\doifinsymbolsetelse\doifelseinsymbolset
\aliased\let\doifsymbolsetelse \doifelsesymbolset
-\letvalue{\??symbolset}\empty
+\letvalue\??symbolset\empty
%def\symbolset#1{\csname\??symbolset\ifcsname\??symbolset#1\endcsname#1\fi\endcsname} % no [#1], to be used in commalists etc
diff --git a/tex/context/base/mkxl/syst-aux.mkxl b/tex/context/base/mkxl/syst-aux.mkxl
index a507218c1..410d959bf 100644
--- a/tex/context/base/mkxl/syst-aux.mkxl
+++ b/tex/context/base/mkxl/syst-aux.mkxl
@@ -163,7 +163,7 @@
%D alternatives to this command. Beware, only the simple one has \type {\noexpand}
%D before its argument.
-\let\m_syst_helpers_expanded\empty
+\lettonothing\m_syst_helpers_expanded
\pushoverloadmode
@@ -224,17 +224,17 @@
%D Maybe even nicer is a let that aliases but keeps the name.
-% \aliased\let\donothing\empty
+ % \lettonothing\donothing
\immutable\def\donothing {} % better in tracing
%untraced\immutable\def\untraceddonothing{}
-\let\m_syst_string_one \empty
-\let\m_syst_string_two \empty
-\let\m_syst_string_three\empty
-\let\m_syst_string_four \empty
+\lettonothing\m_syst_string_one
+\lettonothing\m_syst_string_two
+\lettonothing\m_syst_string_three
+\lettonothing\m_syst_string_four
-\let\m_syst_action_yes \empty
-\let\m_syst_action_nop \empty
+\lettonothing\m_syst_action_yes
+\lettonothing\m_syst_action_nop
%D \macros
%D {doifnextcharelse}
@@ -806,7 +806,7 @@
%D arguments state. Again it permits leaner and meaner macro definitions with a bit
%D less clutter in tracing.
-\mutable\let\commalistcommand\empty
+\mutable\lettonothing\commalistcommand
\protected\def\syst_helpers_process_comma_item#+,%
{\ifarguments
@@ -931,7 +931,7 @@
\let\syst_helpers_comma_list_step\relax
-\mutable\let\currentcommalistitem\empty
+\mutable\lettonothing\currentcommalistitem
\permanent\protected\def\startprocesscommalist[#1]#2\stopprocesscommalist
{\def\syst_helpers_comma_list_step##1{\def\currentcommalistitem{##1}#2}%
@@ -987,17 +987,17 @@
%D this more hip and a bit faster now but \unknown\ it's seldom used nowadays as we
%D have better ways now.
-\mutable\let\commalistelement\empty
+\mutable\lettonothing\commalistelement
-\let\m_syst_string_one\empty
-\let\m_syst_string_two\empty
+\lettonothing\m_syst_string_one
+\lettonothing\m_syst_string_two
\let\syst_helpers_do_compare_process_action\relax
\protected\def\syst_helpers_do_compare_process_action_a[#1=>#2][#3]%
{\edef\m_syst_string_two{#1}%
\ifx\m_syst_string_two\s!default
- \let\commalistelement\empty
+ \lettonothing\commalistelement
#2%
\fi}
@@ -1115,8 +1115,8 @@
%D A two step expansion is used to prevent problems with complicated arguments, for
%D instance arguments that consist of two or more expandable tokens.
-\mutable\let\firstcharacter \empty
-\mutable\let\remainingcharacters\empty
+\mutable\lettonothing\firstcharacter
+\mutable\lettonothing\remainingcharacters
\permanent\protected\def\getfirstcharacter #1{\clf_getfirstcharacter{#1}}
\permanent\protected\def\doifelsefirstchar #1#2{\clf_doifelsefirstchar{#1}{#2}}
@@ -1160,7 +1160,7 @@
% \let\syst_helpers_do_do_if_in_string \relax
% \let\syst_helpers_do_do_if_not_in_string \relax
%
-% \let\m_syst_sub_string \empty
+% \lettonothing\m_syst_sub_string
%
% \protected\def\doifelseinstring#1%
% {\edef\m_syst_sub_string{#1}% expand #1 here
@@ -1586,7 +1586,7 @@
%D funny to see that this alternative saw the light so lately --- can be used to do
%D expanded assigments.
-% \mutable\let\currentvalue\empty % only mkii
+% \mutable\lettonothing\currentvalue % only mkii
\permanent\protected\def\getparameters {\dogetparameters\dosetvalue}
\permanent\protected\def\geteparameters {\dogetparameters\dosetevalue}
@@ -1661,8 +1661,9 @@
%D trouble and tokens.
\mutable\let\currentassignmentlistcommand\gobbletwoarguments
-\mutable\let\currentassignmentlistkey \empty
-\mutable\let\currentassignmentlistvalue \empty
+
+\mutable\lettonothing\currentassignmentlistkey
+\mutable\lettonothing\currentassignmentlistvalue
\let\syst_helpers_process_assign_entry\gobbleoneargument
@@ -1838,7 +1839,7 @@
{\expandafterspaces\syst_helpers_get_from_comma_list}
\permanent\protected\def\getfromcommalist[#1]#*[#2]%
- {\let\commalistelement\empty
+ {\lettonothing\commalistelement
\commalistcounter#2\relax
\expandafterspaces\syst_helpers_get_from_comma_list#1\ignorearguments\ignorearguments}
@@ -2819,8 +2820,8 @@
%D
%D Trivial:
-\permanent\protected\def\letempty #1{\let #1\empty}
-\permanent\protected\def\globalletempty#1{\glet#1\empty}
+\permanent\protected\def\letempty #1{\lettonothing #1}
+\permanent\protected\def\globalletempty#1{\glettonothing#1}
\permanent\protected\def\letvalueempty #1{\letcsname #1\endcsname\empty}
\permanent\protected\def\letgvalueempty#1{\gletcsname#1\endcsname\empty}
@@ -3195,7 +3196,8 @@
\mutable\def\recurselevel{0}
\mutable\let\recurseaction\relax
-\mutable\let\recursestring\empty
+
+\mutable\lettonothing\recursestring
%% \protected\def\syst_helpers_stepwise_recurse#1#2#3% from to step
%% {\ifnum#1>#2\relax
@@ -3472,12 +3474,12 @@
%D Here are the more modern implementations:
\permanent\protected\def\installmacrostack#1%
- {\ifdefined#1\else\mutable\let#1\empty\fi
+ {\ifdefined#1\else\mutable\lettonothing#1\fi
\protected\gdefcsname push_macro_\csstring#1\endcsname{\localpushmacro#1}%
\protected\gdefcsname pop_macro_\csstring#1\endcsname{\localpopmacro #1}}
\permanent\protected\def\installglobalmacrostack#1%
- {\ifdefined#1\else\mutable\glet#1\empty\fi
+ {\ifdefined#1\else\mutable\glettonothing#1\fi
\protected\gdefcsname push_macro_\csstring#1\endcsname{\globalpushmacro#1}%
\protected\gdefcsname pop_macro_\csstring#1\endcsname{\globalpopmacro #1}}
@@ -4493,7 +4495,8 @@
%D These macros are clones of the ones implemented in page~378 of Knuth's \TEX book.
\newtoks\t_syst_helpers_scratch
-\let \m_syst_helpers_scratch\empty
+
+\lettonothing\m_syst_helpers_scratch
\permanent\protected\def\appendtoks#1\to#2%
{\ifrelax\dodoglobal
@@ -4629,9 +4632,9 @@
\permanent\protected\def\beforesplitstring#1\at#2\to#3%
{\def\syst_helpers_split_string##1#2##0^^^^0004% no #- as we need to count
{\ifarguments
- \let#3\empty
+ \lettonothing#3%
\or
- \let#3\empty
+ \lettonothing#3%
\else
\def#3{##1}%
\fi}%
@@ -4640,7 +4643,7 @@
\permanent\protected\def\aftersplitstring#1\at#2\to#3%
{\def\syst_helpers_split_string##0#2##2^^^^0004% no #- as we need to count
{\ifarguments
- \let#3\empty
+ \lettonothing#3%
\or
\def#3{#1}%
\else
@@ -4656,11 +4659,11 @@
\permanent\protected\def\splitstring#1\at#2\to#3\and#4%
{\def\syst_helpers_split_string##1#2##2^^^^0004%
{\ifarguments
- \let#3\empty
- \let#4\empty
+ \lettonothing#3*
+ \lettonothing#4*
\or
\def#3{#1}%
- \let#4\empty
+ \lettonothing#4%
\else
\def#3{##1}%
\def#4{##2}%
@@ -4670,11 +4673,11 @@
\permanent\protected\def\greedysplitstring#1\at#2\to#3\and#4%
{\def\syst_helpers_split_string##1#2##2^^^^0004%
{\ifarguments
- \let#3\empty
- \let#4\empty
+ \lettonothing#3%
+ \lettonothing#4%
\or
\def#3{#1}%
- \let#4\empty
+ \lettonothing#4%
\else
\def#3{##1}%
\def#4{##2}%
@@ -4700,9 +4703,9 @@
\permanent\protected\def\aftertestandsplitstring#1\at#2\to#3%
{\def\syst_helpers_split_string##0#2##2^^^^0004% no #- as we need to count
{\ifarguments
- \let#3\empty
+ \lettonothing#3%
\or
- \let#3\empty
+ \lettonothing#3%
\else
\def#3{##2}%
\fi}%
@@ -4711,11 +4714,11 @@
\permanent\protected\def\testandsplitstring#1\at#2\to#3\and#4%
{\def\syst_helpers_split_string##1#2##2^^^^0004%
{\ifarguments
- \let#3\empty
- \let#4\empty
+ \lettonothing#3%
+ \lettonothing#4%
\or
- \let#3\empty
- \let#4\empty
+ \lettonothing#3%
+ \lettonothing#4%
\else
\def#3{##1}%
\def#4{##2}%
@@ -4876,7 +4879,7 @@
\permanent\protected\def\substituteincommalist#1#2#3% old, new, list (slooow)
{\edef\m_syst_string_one{#1}%
\edef\m_syst_string_two{#2}%
- \let\m_syst_string_four\empty
+ \lettonothing\m_syst_string_four
\normalexpanded{\rawprocesscommacommand[#3]}\syst_helpers_substitute_in_comma_list_step
\let#3\m_syst_string_four}
@@ -4903,9 +4906,10 @@
%D This macro was used in the bibtex code (and is probably no longer needed).
\newcount\c_syst_helpers_comma_list_index
-\let \m_syst_helpers_comma_list_target\empty
-\mutable\let\newcommalistelement\empty
+\lettonothing\m_syst_helpers_comma_list_target
+
+\mutable\lettonothing\newcommalistelement
\def\syst_helpers_replace_in_comma_list_step#1% we can use #+ here too
{\ifnum\commalistcounter=\c_syst_helpers_comma_list_index\relax
@@ -4938,8 +4942,8 @@
\permanent\protected\def\replaceincommalist#1#2% #1 = commalistelement #2 = position starts at 1
{\c_syst_helpers_comma_list_index#2\relax
- \let\m_syst_helpers_comma_list_target\empty
- \let\commalistelement\empty
+ \lettonothing\m_syst_helpers_comma_list_target
+ \lettonothing\commalistelement
\commalistcounter\plusone
\expandafter\processcommalist\expandafter[#1]\syst_helpers_replace_in_comma_list_step
\dodoglobal\let#1\m_syst_helpers_comma_list_target}
@@ -4952,7 +4956,7 @@
%D kind of useless for handling comma lists in alignments. In these situations the
%D next macro can be of use.
-\let\m_syst_helpers_comma_list_command_global\empty
+\lettonothing\m_syst_helpers_comma_list_command_global
\def\syst_helpers_comma_list_command_global_step#1,%
{\if]#1\else
@@ -5361,14 +5365,15 @@
%D As we can see below, spaces following a control sequence are to enclosed in \type
%D {{}}.
-\let\syst_helpers_strip_character \relax
-\let\m_syst_helpers_strip_character\empty
+\let\syst_helpers_strip_character\relax
+
+\lettonothing\m_syst_helpers_strip_character
\permanent\protected\def\stripcharacter#1\from#2\to#3%
{\def\syst_helpers_strip_character##1#1##2\end
{\edef\m_syst_helpers_strip_character{\m_syst_helpers_strip_character##1}%
\doifnotempty{##2}{\syst_helpers_strip_character##2\end}}%
- \let\m_syst_helpers_strip_character\empty
+ \lettonothing\m_syst_helpers_strip_character
\edef\m_syst_string_one{#2}%
\expandafter\syst_helpers_strip_character\m_syst_string_one#1\end
\dodoglobal\let#3\m_syst_helpers_strip_character}
@@ -5599,7 +5604,7 @@
%D
%D They remove braces and backslashes and give us something to sort.
-\let\m_syst_helpers_untexed\empty
+\lettonothing\m_syst_helpers_untexed
\permanent\protected\def\untexsomething
{\begingroup
@@ -5785,7 +5790,7 @@
\advance\privatescratchcounter \minusone
\edef#3{#3##1}%
\fi}%
- % \let#3\empty % #3 can be #2, so:
+ % \lettonothing#3% #3 can be #2, so:
\expandafter\let\expandafter#3\expandafter\empty
\expandafter\handletokens#2\with\syst_helpers_split_off_tokens
\else
@@ -5821,7 +5826,7 @@
%D assignment, this time by using \type {\futurelet}, and grabbing an argument as
%D well. That way we can handle the sentinal, a blank space and grouped tokens.
-\mutable\let\nexthandledtoken\empty % part of public interface
+\mutable\lettonothing\nexthandledtoken % part of public interface
\let\syst_helpers_handle_tokens_command\relax
@@ -6051,13 +6056,13 @@
\let\syst_helpers_serialize_comma_list_step\relax
-\mutable\let\serializedcommalist\empty
+\mutable\lettonothing\serializedcommalist
\def\syst_helpers_serialize_comma_list_step#1%
{\edef\serializedcommalist{\serializedcommalist#1}}
\permanent\protected\def\serializecommalist[#1]%
- {\let\serializedcommalist\empty
+ {\lettonothing\serializedcommalist
\processcommacommand[#1]\syst_helpers_serialize_comma_list_step}
%D \macros
@@ -6647,18 +6652,32 @@
\or \plusten
\else {\number#1}\fi}
-\permanent\def\constantdimen#1%
- {\ifdim#1=\zeropoint
+% \permanent\def\constantdimen#1% takes register
+% {\ifdim#1=\zeropoint
+% \zeropoint
+% \else
+% \the#1\relax
+% \fi}
+
+\permanent\def\constantdimen#1% takes register
+ {\ifzeropt#1\norelax
\zeropoint
\else
- \the#1\relax
+ \todimension#1\norelax
\fi}
+% \permanent\def\constantdimenargument#1% takes register
+% {\ifdim#1=\zeropoint
+% \zeropoint
+% \else
+% {\the#1}%
+% \fi}
+
\permanent\def\constantdimenargument#1%
- {\ifdim#1=\zeropoint
+ {\ifzeropt#1%\norelax
\zeropoint
\else
- {\the#1}%
+ {\todimension#1}%
\fi}
\permanent\def\constantemptyargument#1%
diff --git a/tex/context/base/mkxl/syst-ini.mkxl b/tex/context/base/mkxl/syst-ini.mkxl
index 96bdde764..b529c04bc 100644
--- a/tex/context/base/mkxl/syst-ini.mkxl
+++ b/tex/context/base/mkxl/syst-ini.mkxl
@@ -494,11 +494,11 @@
%D \macros
%D {tempstring, scratchstring*}
-\mutable\let\tempstring \empty
+\mutable\lettonothing\tempstring
-\mutable\let\scratchstring \empty
-\mutable\let\scratchstringone\empty
-\mutable\let\scratchstringtwo\empty
+\mutable\lettonothing\scratchstring
+\mutable\lettonothing\scratchstringone
+\mutable\lettonothing\scratchstringtwo
%D \macros
%D {scratchwidth, scratchheight, scratchdepth, scratchoffset, scratchdistance}
@@ -968,7 +968,7 @@
%D {\let} (the only advantage is that we often give them names with some
%D prefix.
-\permanent\protected\def\newmacro #1{\mutable\let#1\empty}
+\permanent\protected\def\newmacro #1{\mutable\lettonothing#1}
\permanent\protected\def\setnewmacro#1{\mutable\let#1}
\permanent\protected\def\newfraction#1{\mutable\let#1\!!plusone}
@@ -1234,7 +1234,7 @@
\immediate\write\statuswrite{fatal error: duplicate system namespace '#1'}%
\else
\global\advance\c_syst_helpers_n_of_namespaces\plusone
- \immutable\edefcsname ??#1\endcsname{\v_interfaces_prefix_template_system}%
+ \immutable\cdefcsname ??#1\endcsname{\v_interfaces_prefix_template_system}%
\fi}
%D It makes more sense to have these here:
@@ -1281,8 +1281,9 @@
\mutable\let\of \relax % \empty
\mutable\let\and \relax % \empty
\mutable\let\with\relax % \empty
-\mutable\let\nop \empty % used often
-\mutable\let\yes \empty % used often
+
+\mutable\lettonothing\nop % used often
+\mutable\lettonothing\yes % used often
%D Another experiment:
diff --git a/tex/context/base/mkxl/tabl-frm.mkxl b/tex/context/base/mkxl/tabl-frm.mkxl
index 4caa287f7..d3112d9c2 100644
--- a/tex/context/base/mkxl/tabl-frm.mkxl
+++ b/tex/context/base/mkxl/tabl-frm.mkxl
@@ -102,13 +102,13 @@
\setupframed[\??framedtablecolumn#1:#2][#3]%
\fi}
-\mutable\let\currentframedtable\empty
+\mutable\lettonothing\currentframedtable
\permanent\tolerant\protected\def\startframedtable[#1]#*[#2]%
{\begingroup
\forgetall
\ifhastok={#1}%
- \let\currentframedtable\empty
+ \lettonothing\currentframedtable
\setupframed[\??framedtable][#1]%
\else
\edef\currentframedtable{#1}%
@@ -218,7 +218,7 @@
\fi}%
\ifcase\c_tabl_framed_pass
\or
- \letframedparameter\c!background\empty
+ \resetframedparameter\c!background
\letframedparameter\c!frame\v!off
\or
\letframedparameter\c!height\d_tabl_framed_h
diff --git a/tex/context/base/mkxl/tabl-ltb.mkxl b/tex/context/base/mkxl/tabl-ltb.mkxl
index 3376b30c6..54bce7d94 100644
--- a/tex/context/base/mkxl/tabl-ltb.mkxl
+++ b/tex/context/base/mkxl/tabl-ltb.mkxl
@@ -140,7 +140,8 @@
\permanent\def\linetablerparameter#1% faster, leaner and meaner
{\begincsname
\??linetable
- \ifnum\c_tabl_lines_row=\zerocount % geen ifcase
+ % \ifnum\c_tabl_lines_row=\zerocount % geen ifcase
+ \ifzero\c_tabl_lines_row
\ifcsname\??linetable r:\v!header#1\endcsname
r:\v!header
\orelse\ifcsname\??linetable r:0#1\endcsname
@@ -348,7 +349,7 @@
\dp\b_tabl_lines_current\c_tabl_lines_part\strutdepth
% noindent en endgraf needed else whitespace mess-up!
\whitespace % here not after verticalstrut
- \ifdim\topskipgap=\zeropoint\else
+ \ifzeropt\topskipgap\else
\verticalstrut
\nobreak
\kern-\struttotal
diff --git a/tex/context/base/mkxl/tabl-ntb.mkxl b/tex/context/base/mkxl/tabl-ntb.mkxl
index dc644270d..59777fb9b 100644
--- a/tex/context/base/mkxl/tabl-ntb.mkxl
+++ b/tex/context/base/mkxl/tabl-ntb.mkxl
@@ -213,7 +213,7 @@
\let\tabl_ntb_anchor_stop \relax
\let\tabl_ntb_anchor_process\gobbleoneargument
-\let\m_tabl_ntb_anchor_background\empty
+\lettonothing\m_tabl_ntb_anchor_background
\let\xanchor\!!zerocount
\let\yanchor\!!zerocount
@@ -239,17 +239,17 @@
\def\tabl_ntb_anchor_setup
{\ifcstok{\naturaltablelocalparameter\c!synchronize}\v!background
- \let\tabl_ntb_anchor_start \tabl_ntb_anchor_start_indeed
- \let\tabl_ntb_anchor_stop \tabl_ntb_anchor_stop_indeed
- \let\tabl_ntb_anchor_process \tabl_ntb_anchor_process_indeed
+ \let\tabl_ntb_anchor_start\tabl_ntb_anchor_start_indeed
+ \let\tabl_ntb_anchor_stop\tabl_ntb_anchor_stop_indeed
+ \let\tabl_ntb_anchor_process\tabl_ntb_anchor_process_indeed
\edef\m_tabl_ntb_anchor_background{\naturaltablelocalparameter\c!background}%
\resetnaturaltablelocalparameter\c!background
\setlocalanchoring
\else
- \let\m_tabl_ntb_anchor_background\empty
- \let\tabl_ntb_anchor_start \gobbletwoarguments
- \let\tabl_ntb_anchor_stop \relax
- \let\tabl_ntb_anchor_process \gobbleoneargument
+ \lettonothing\m_tabl_ntb_anchor_background
+ \let\tabl_ntb_anchor_start\gobbletwoarguments
+ \let\tabl_ntb_anchor_stop\relax
+ \let\tabl_ntb_anchor_process\gobbleoneargument
\fi
\resetnaturaltablelocalparameter\c!synchronize}
@@ -721,9 +721,9 @@
% \dorecurse{10}{\bTR \dorecurse{6}{\bTD xxx \eTD} \eTR}
% \eTABLE
-\let\m_tabl_ntb_before_split\empty
-\let\m_tabl_ntb_after_split \empty
-\let\m_tabl_ntb_same_page \empty
+\lettonothing\m_tabl_ntb_before_split
+\lettonothing\m_tabl_ntb_after_split
+\lettonothing\m_tabl_ntb_same_page
% split + page:
%
@@ -758,13 +758,13 @@
\fi[#1]}
\def\tabl_ntb_td_yes[#1]#2\eTD
- {\letnaturaltableparameter\c!ny \m_tabl_ntb_default_nr
- \letnaturaltableparameter\c!nx \m_tabl_ntb_default_nc
- \letnaturaltableparameter\c!nc \plusone
- \letnaturaltableparameter\c!nr \plusone
- \letnaturaltableparameter\c!n \c_tabl_ntb_running_col
- \letnaturaltableparameter\c!m \empty
- \letnaturaltableparameter\c!action\empty % not that important
+ {\letnaturaltableparameter \c!ny \m_tabl_ntb_default_nr
+ \letnaturaltableparameter \c!nx \m_tabl_ntb_default_nc
+ \letnaturaltableparameter \c!nc \plusone
+ \letnaturaltableparameter \c!nr \plusone
+ \letnaturaltableparameter \c!n \c_tabl_ntb_running_col
+ \resetnaturaltableparameter\c!m
+ \resetnaturaltableparameter\c!action% not that important
\setupcurrentnaturaltable[#1]%
%
\c_tabl_ntb_nx\naturaltableparameter\c!nx\relax
@@ -850,8 +850,8 @@
\letnaturaltableparameter\c!nc\plusone
\letnaturaltableparameter\c!nr\plusone
\setupcurrentnaturaltable[#1]%
- \letnaturaltableparameter\c!n \empty
- \letnaturaltableparameter\c!m \empty}
+ \resetnaturaltableparameter\c!n
+ \resetnaturaltableparameter\c!m}
\def\tabl_ntb_td_pass_m#1%
{\scratchcounter\numexpr\m_tabl_ntb_m-\c_tabl_ntb_running_col+\minusone-\c_tabl_ntb_spn\relax
@@ -862,8 +862,8 @@
\letnaturaltableparameter\c!nc\plusone
\letnaturaltableparameter\c!nr\plusone
\setupcurrentnaturaltable[#1]%
- \letnaturaltableparameter\c!n \empty
- \letnaturaltableparameter\c!m \empty}
+ \resetnaturaltableparameter\c!n
+ \resetnaturaltableparameter\c!m}
\def\tabl_ntb_cell_preset
{\c_tabl_ntb_current_row\c_tabl_ntb_maximum_row
@@ -1291,9 +1291,9 @@
\xdef\m_tabl_ntb_same_page {#3}}
\protected\def\tabl_ntb_row_align_reset
- {\glet\m_tabl_ntb_before_split\empty
- \glet\m_tabl_ntb_after_split \empty
- \glet\m_tabl_ntb_same_page \empty}
+ {\glettonothing\m_tabl_ntb_before_split
+ \glettonothing\m_tabl_ntb_after_split
+ \glettonothing\m_tabl_ntb_same_page }
\def\tabl_ntb_prelocate_error
{\writestatus\m!TABLE{fatal error: use \string\prelocateTBLrows\space to increase table memory (now: \the\c_tabl_prelocated_rows)}}
@@ -1397,7 +1397,7 @@
\protected\def\tabl_ntb_after_page
{\ifnum\c_tabl_ntb_row>\c_tabl_ntb_n_of_head_lines
- \ifnum\tabl_ntb_get_nob\c_tabl_ntb_row=\zerocount
+ \ifnum\tabl_ntb_get_nob\c_tabl_ntb_row=\zerocount % no \ifzero
\ifx\m_tabl_ntb_same_page\v!after
% \blank[\v!samepage,\v!strong]%
\nobreak
@@ -1632,9 +1632,9 @@
\def\tabl_ntb_table_stop
{\forgetall % new, here see narrower-004.tex
%\setbox\scratchbox\hbox
- % {\letnaturaltablelocalparameter\c!frame\v!off
- % \letnaturaltablelocalparameter\c!background\empty
- % \letnaturaltablelocalparameter\c!align\v!no
+ % {\letnaturaltablelocalparameter \c!frame \v!off
+ % \resetnaturaltablelocalparameter\c!background
+ % \letnaturaltablelocalparameter \c!align \v!no
% \inheritednaturaltablelocalframed{\strut}}%
%\edef\minimalcellheight{\the\ht\scratchbox}% not used
\localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
@@ -2010,10 +2010,10 @@
\protected\def\tabl_ntb_cell_process_a#1#2[#3]#4% grouping added ! ! !
{\begingroup
- \letnaturaltablelocalparameter\c!option\empty
+ \resetnaturaltablelocalparameter\c!option\empty
\tabl_ntb_setup_cell{#1}{#2}%
\setupcurrentnaturaltablelocal[#3]%
- \letnaturaltablelocalparameter\c!background\empty
+ \resetnaturaltablelocalparameter\c!background
\letnaturaltablelocalparameter\c!frame\v!off
\scratchcounter\tabl_ntb_get_col{#1}{#2}\relax
\setbox\scratchbox\hbox
@@ -2073,7 +2073,7 @@
\setbox\scratchbox\hbox
{\tabl_ntb_setup_cell{#2}{#3}%
\setupcurrentnaturaltablelocal[#4,#1]%
- \letnaturaltablelocalparameter\c!background\empty
+ \resetnaturaltablelocalparameter\c!background
\letnaturaltablelocalparameter\c!frame\v!off
\inheritednaturaltablelocalframed{\tabl_ntb_cell_start#5\tabl_ntb_cell_stop}}%
\setbox\scratchboxone\emptyhbox
@@ -2115,9 +2115,9 @@
{\tabl_ntb_setup_cell{#1}{#2}%
\bgroup
\setupcurrentnaturaltablelocal[#3]%
- \letnaturaltablelocalparameter\c!background\empty
- \letnaturaltablelocalparameter\c!frame\v!off
- \setnaturaltablelocalparameter\c!width{\d_tabl_ntb_width}%
+ \resetnaturaltablelocalparameter\c!background
+ \letnaturaltablelocalparameter \c!frame \v!off
+ \setnaturaltablelocalparameter \c!width {\d_tabl_ntb_width}%
\inheritednaturaltablelocalframed{\tabl_ntb_cell_start\tabl_ntb_char_align{#1}{#2}#4\tabl_ntb_cell_stop}%
\egroup}
@@ -2126,8 +2126,8 @@
\tabl_ntb_setup_cell{#1}{#2}%
\setupcurrentnaturaltablelocal[#3]% to get the color right, the way we
\directcolor[\naturaltablelocalparameter\c!color]%
- \letnaturaltablelocalparameter\c!color\empty
- \setnaturaltablelocalparameter\c!width{\d_tabl_ntb_width}%
+ \resetnaturaltablelocalparameter\c!color
+ \setnaturaltablelocalparameter \c!width{\d_tabl_ntb_width}%
\ifzeropt\d_tabl_ntb_height % case: nc=maxcolumns
\else
\setnaturaltablelocalparameter\c!height{\d_tabl_ntb_height}%
diff --git a/tex/context/base/mkxl/tabl-tab.mkxl b/tex/context/base/mkxl/tabl-tab.mkxl
index 815767e18..8bd1d052a 100644
--- a/tex/context/base/mkxl/tabl-tab.mkxl
+++ b/tex/context/base/mkxl/tabl-tab.mkxl
@@ -129,7 +129,7 @@
\!taLastRegularTabskip\scratchskip
\!taOnceOnlyTabskipfalse
\!taBeginFormattrue
- \let\!tfRowOfWidths\empty
+ \lettonothing\!tfRowOfWidths
\doreadtableformatkeys}
\def\!tfSetWidth
@@ -170,7 +170,7 @@
\else
\!tgValue
\fi
- \let\!tfWidthText\empty % Override possible prior `w[sample entry]'
+ \lettonothing\!tfWidthText % Override possible prior `w[sample entry]'
\doreadtableformatkeys}
\def\!tfSetTabskip
@@ -181,7 +181,7 @@
\scratchskip\!tgValue
\fi
\divide\scratchskip\plustwo
- \ifnum\!taColumnNumber=\zerocount
+ \ifzero\!taColumnNumber
%\!thToksEdef\!taRuleColumnTemplate{\the\!taRuleColumnTemplate\tabskip\the\scratchskip}%
\normalexpanded{\!taRuleColumnTemplate{\the\!taRuleColumnTemplate\tabskip\the\scratchskip}}%
\else
@@ -221,7 +221,7 @@
\!tfAdjoinPriorColumn}
\def\!tfAdjoinPriorColumn
- {\ifnum\!taColumnNumber=\zerocount
+ {\ifzero\!taColumnNumber
\!taPreamble=\!taRuleColumnTemplate % New \tabskip may have been added
\else
\ifempty\!tfRowOfWidths\else % no "w" keys specified yet, not even this col
@@ -240,7 +240,7 @@
\!taLeftGlue{\hfil}%
\!taRightGlue{\hfil}%
\!taMinimumColumnWidth\zeropoint
- \let\!tfWidthText\empty
+ \lettonothing\!tfWidthText
\!taOnceOnlyTabskipfalse
\doreadtableformatkeys}
@@ -325,7 +325,7 @@
\def\!tgCheckForSpace
{\def\!tgCode{1}%
- \let\!tgValue\empty
+ \lettonothing\!tgValue
\ifx\tempstring\!thSpaceToken
\expandafter\!tgReturn
\else
@@ -682,7 +682,7 @@
% extensions
\newtableformatkey q%
- {\let\!tqStyle\empty
+ {\lettonothing\!tqStyle
\futurelet\!tnext\!tqTestForBracket}
\newtableformatkey Q%
@@ -759,7 +759,7 @@
% #2=extra depth
\!taDimenA=#1\relax
\!taDimenB=#2\relax
- \let\!TsSpaceFactor\empty
+ \lettonothing\!TsSpaceFactor
\ifmmode
\expandafter\mathpalette % (*) the only place where still use this
\expandafter\!TsEnlargeMath
@@ -896,8 +896,8 @@
\newcount\c_tabl_table_n_of_vrules \c_tabl_table_n_of_vrules\plusone
-\let\m_tabl_table_vrule_color\empty
-\let\m_tabl_table_hrule_color\empty
+\lettonothing\m_tabl_table_vrule_color
+\lettonothing\m_tabl_table_hrule_color
\def\tabl_table_insert_vrule
{\vrule\s!width
@@ -930,7 +930,7 @@
\global\c_tabl_table_n_of_vrules\plusone
\unskip
\fi
- \glet\m_tabl_table_vrule_color\empty
+ \glettonothing\m_tabl_table_vrule_color
\hfil
\aligntab}
@@ -1381,8 +1381,8 @@
{\tabl_tables_chuck_auto_row % before the tail, else noalign problem
\tabl_table_insert_tail
\noalign\bgroup
- \glet\tabl_table_head\empty
- \glet\tabl_table_tail\empty
+ \glettonothing\tabl_table_head
+ \glettonothing\tabl_table_tail
\egroup
\tabl_table_finish
\ifempty\p_tabl_table_frame
@@ -1540,7 +1540,7 @@
\newtoks\localtabledefinitions
-\mutable\let\currenttableformat\empty
+\mutable\lettonothing\currenttableformat
\def\tabl_table_third_stage#1%
{\global\settrue\tableactionstatepermitted
@@ -1612,8 +1612,8 @@
\egroup
\dontcomplain
\tabl_table_split_box\tablecontentbox
- \glet\tabl_table_head\empty % new here
- \glet\tabl_table_tail\empty % new here
+ \glettonothing\tabl_table_head % new here
+ \glettonothing\tabl_table_tail % new here
\flushnotes
\egroup}
@@ -1663,8 +1663,8 @@
%D This is so old ... adapting it to use tolerant might break something:
-\let\tabl_table_head\empty % needs checking
-\let\tabl_table_tail\empty % needs checking
+\lettonothing\tabl_table_head % needs checking
+\lettonothing\tabl_table_tail % needs checking
\letcsname\e!start\v!tablehead\endcsname\relax % todo: frozen, but we use a grabber
\letcsname\e!stop \v!tablehead\endcsname\relax % todo: frozen, but we use a grabber
@@ -1711,8 +1711,8 @@
\noalign\bgroup
\nobreak
\tabl_table_set_action\tableunknownstate
- \glet\tabl_tables_check_auto_row\empty
- \glet\tabl_tables_chuck_auto_row\empty
+ \glettonothing\tabl_tables_check_auto_row
+ \glettonothing\tabl_tables_chuck_auto_row
\global\currenttablecolumn\zerocount
\egroup}
@@ -1841,18 +1841,18 @@
{\glet\tabl_tables_check_auto_row\tabl_tables_check_auto_row_indeed
\glet\tabl_tables_chuck_auto_row\tabl_tables_chuck_auto_row_indeed}
-\let\tabl_tables_check_auto_row\empty
-\let\tabl_tables_chuck_auto_row\empty
+\lettonothing\tabl_tables_check_auto_row
+\lettonothing\tabl_tables_chuck_auto_row
\def\tabl_tables_check_auto_row_indeed
- {\glet\tabl_tables_check_auto_row\empty
+ {\glettonothing\tabl_tables_check_auto_row
\ifnum\tableactionstate=\tablerulestate \FR\orelse
\ifnum\tableactionstate=\tableunknownstate\FR\else
\MR\fi}
\def\tabl_tables_chuck_auto_row_indeed
- {\glet\tabl_tables_check_auto_row\empty
- \glet\tabl_tables_chuck_auto_row\empty
+ {\glettonothing\tabl_tables_check_auto_row
+ \glettonothing\tabl_tables_chuck_auto_row
\ifnum\tableactionstate=\tablerulestate \SR\orelse
\ifnum\tableactionstate=\tableunknownstate\SR\else
\LR\fi}
@@ -1908,8 +1908,8 @@
\newcount\c_tabl_table_hrule_thickness_factor
\newcount\c_tabl_table_drule_span
-\let\m_tabl_table_vrule_color\empty
-\let\m_tabl_table_hrule_color\empty
+\lettonothing\m_tabl_table_vrule_color
+\lettonothing\m_tabl_table_hrule_color
\appendtoks
\enforced\let\VL\tabl_table_VL
@@ -1934,7 +1934,7 @@
\permanent\tolerant\protected\def\tabl_table_VL[#1]%
{\tabl_tables_check_auto_row
\global\advance\currenttablecolumn\plusone
- \glet\m_tabl_table_vrule_color\empty
+ \glettonothing\m_tabl_table_vrule_color
\global\c_tabl_table_vrule_thickness_factor\m_tabl_table_VLwidth\relax
\iftok{#1}\emptytoks\else
\rawprocesscommalist[#1]\tabl_table_vrulecommand
@@ -1978,7 +1978,7 @@
\bgroup
\global\c_tabl_table_hrule_thickness_factor\m_tabl_table_HLheight\relax
\ifparameter#1\or
- \glet\m_tabl_table_hrule_color\empty
+ \glettonothing\m_tabl_table_hrule_color
\rawprocesscommalist[#1]\tabl_table_hrulecommand
\ifempty\m_tabl_table_hrule_color\else
\switchtocolor[\m_tabl_table_hrule_color]%
@@ -2094,7 +2094,7 @@
\global\c_tabl_table_hrule_thickness_factor\m_tabl_table_HLheight\relax
\global\c_tabl_table_drule_span\zerocount
\iftok{#1}\emptytoks\else
- \glet\m_tabl_table_hrule_color\empty
+ \glettonothing\m_tabl_table_hrule_color
\rawprocesscommalist[#1]\tabl_table_drulecommand
% \ifempty\m_tabl_table_hrule_color\else
% \switchtocolor[\m_tabl_table_hrule_color]% see *DL*
diff --git a/tex/context/base/mkxl/tabl-tbl.mkxl b/tex/context/base/mkxl/tabl-tbl.mkxl
index 91ee0262a..ad18daef4 100644
--- a/tex/context/base/mkxl/tabl-tbl.mkxl
+++ b/tex/context/base/mkxl/tabl-tbl.mkxl
@@ -233,7 +233,7 @@
%newconditional \c_tabl_pre_is_set
\newconditional \c_tabl_post_is_set
-\let \m_tabl_tabulate_separator_factor \empty % fraction
+\lettonothing \m_tabl_tabulate_separator_factor % fraction
\aliased\let\tabulatesplitlinemode\c_tabl_tabulate_splitlinemode % temp hack, we need an interface
@@ -292,7 +292,7 @@
\tabl_tabulate_initialize_box_nop#1%
\fi}
-\def\tabl_tabulate_initialize_box_yes {\global \setbox\lastnamedcs\emptybox}
+\def\tabl_tabulate_initialize_box_yes {\global\setbox\lastnamedcs\emptybox}
\def\tabl_tabulate_initialize_box_nop#1{\expandafter\newbox\csname\??tabulatebox\number#1\endcsname}
\tabl_tabulate_initialize_boxes{16} % not really needed
@@ -361,7 +361,7 @@
\xdef\m_tabl_tabulate_color{#1}%
\else
\glet\m_tabl_tabulate_color\m_tabl_tabulate_color_local
- \glet\m_tabl_tabulate_color_local\empty
+ \glettonothing\m_tabl_tabulate_color_local
\fi
\ifcase\c_tabl_tabulate_localcolorspan
\global\c_tabl_tabulate_colorspan#2\relax
@@ -388,7 +388,7 @@
\xdef\m_tabl_tabulate_vrule_color{#1}%
\else
\glet\m_tabl_tabulate_vrule_color\m_tabl_tabulate_vrule_color_local
- \glet\m_tabl_tabulate_vrule_color_local\empty
+ \glettonothing\m_tabl_tabulate_vrule_color_local
\fi}
\let\tabl_tabulate_check_local_color \gobbletwoarguments
@@ -408,7 +408,7 @@
\def\tabl_tabulate_inject_pre_skip#1%
{\ifdim#1>\zeropoint
\kern#1\relax % hskip
- \orelse\ifnum\c_tabl_tabulate_column=\zerocount
+ \orelse\ifzero\c_tabl_tabulate_column
\ifconditional\c_tabl_tabulate_autorulespacing
\ifcase\c_tabl_tabulate_has_rule_spec_first\else
\kern\s_tabl_tabulate_first\relax % hskip
@@ -841,10 +841,10 @@
\t_tabl_tabulate_emath\emptytoks
\t_tabl_tabulate_font\emptytoks
\t_tabl_tabulate_settings\emptytoks
- \glet\m_tabl_tabulate_alignment\empty
- \glet\m_tabl_tabulate_color\empty
- \glet\m_tabl_tabulate_text_color\empty
- \glet\m_tabl_tabulate_vrule_color\empty
+ \glettonothing\m_tabl_tabulate_alignment
+ \glettonothing\m_tabl_tabulate_color
+ \glettonothing\m_tabl_tabulate_text_color
+ \glettonothing\m_tabl_tabulate_vrule_color
\global\c_tabl_tabulate_colorspan\zerocount
\global\setfalse\c_tabl_auto_align_mode
\global\setfalse\c_tabl_auto_align_mode_new
@@ -871,8 +871,8 @@
\fi}
\permanent\protected\def\tabl_tabulate_set_last_entry#1% rulespec
- {\glet\m_tabl_tabulate_color\empty
- \glet\m_tabl_tabulate_vrule_color\empty
+ {\glettonothing\m_tabl_tabulate_color
+ \glettonothing\m_tabl_tabulate_vrule_color
\iftok{#1}\emptytoks
\global\d_tabl_tabulate_vrulethickness\zeropoint
\else
@@ -1115,9 +1115,9 @@
% Here begins the implementation.
-\let\tabl_tabulate_insert_head\empty
-\let\tabl_tabulate_insert_body\empty
-\let\tabl_tabulate_insert_foot\empty
+\lettonothing\tabl_tabulate_insert_head
+\lettonothing\tabl_tabulate_insert_body
+\lettonothing\tabl_tabulate_insert_foot
\def\tabl_tabulate_insert_head_content
{\noalign{\global\settrue\c_tabl_tabulate_someamble}%
@@ -1134,23 +1134,23 @@
%\expandafter\ifempty\csname\??tabulatehead\currenttabulation\endcsname
%\expandafter\ifempty\lastnamedcs
\ifempty\lastnamedcs
- \let\tabl_tabulate_insert_head\empty
+ \lettonothing\tabl_tabulate_insert_head
\else
\let\tabl_tabulate_insert_head\tabl_tabulate_insert_head_content
\fi
\else
- \let\tabl_tabulate_insert_head\empty
+ \lettonothing\tabl_tabulate_insert_head
\fi
\ifcsname\??tabulatefoot\currenttabulation\endcsname
%\expandafter\ifempty\csname\??tabulatefoot\currenttabulation\endcsname
%\expandafter\ifempty\lastnamedcs
\ifempty\lastnamedcs
- \let\tabl_tabulate_insert_foot\empty
+ \lettonothing\tabl_tabulate_insert_foot
\else
\let\tabl_tabulate_insert_foot\tabl_tabulate_insert_foot_content
\fi
\else
- \let\tabl_tabulate_insert_foot\empty
+ \lettonothing\tabl_tabulate_insert_foot
\fi}
\def\tabl_tabulate_insert_content
@@ -1173,7 +1173,7 @@
\permanent\protected\defcsname\e!start\v!tabulatehead\endcsname{\doifelsenextoptionalcs\tabl_tabulate_start_head_yes\tabl_tabulate_start_head_nop}
\permanent\protected\defcsname\e!start\v!tabulatetail\endcsname{\doifelsenextoptionalcs\tabl_tabulate_start_foot_yes\tabl_tabulate_start_foot_nop}
-\let\m_tabl_tabulate_data\empty
+\lettonothing\m_tabl_tabulate_data
\def\tabl_tabulate_start_head_yes[#1]%
{\processcontent{\e!stop\v!tabulatehead}\m_tabl_tabulate_data{\letcsname\??tabulatehead#1\endcsname\m_tabl_tabulate_data}}
@@ -1216,7 +1216,7 @@
\permanent\protected\defcsname\e!start\v!tabulate\endcsname
{\bgroup % whole thing
- \let\currenttabulationparent\empty
+ \lettonothing\currenttabulationparent
\tabl_start_regular}
\tolerant\protected\def\tabl_start_regular[#1]#*[#2]% [format] | [settings] | [format] [settings] | [settings] [format]
@@ -1411,30 +1411,30 @@
% color columns
-\let\m_tabl_tabulate_color_previous \empty
-\let\m_tabl_tabulate_color \empty
-\let\m_tabl_tabulate_text_color \empty
-\let\m_tabl_tabulate_color_local \empty
-\let\m_tabl_tabulate_vrule_color \empty
-\let\m_tabl_tabulate_vrule_color_local \empty
-\let\m_tabl_tabulate_vrule_color_default\empty % used local
-\let\m_tabl_tabulate_hrule_color_default\empty % used local
-\let\m_tabl_tabulate_blank_default \empty
+\lettonothing\m_tabl_tabulate_color_previous
+\lettonothing\m_tabl_tabulate_color
+\lettonothing\m_tabl_tabulate_text_color
+\lettonothing\m_tabl_tabulate_color_local
+\lettonothing\m_tabl_tabulate_vrule_color
+\lettonothing\m_tabl_tabulate_vrule_color_local
+\lettonothing\m_tabl_tabulate_vrule_color_default % used local
+\lettonothing\m_tabl_tabulate_hrule_color_default % used local
+\lettonothing\m_tabl_tabulate_blank_default
\appendtoks
- \glet \m_tabl_tabulate_color_previous \empty
- \glet \m_tabl_tabulate_color \empty
- \glet \m_tabl_tabulate_text_color \empty
- \glet \m_tabl_tabulate_color_local \empty
- \glet \m_tabl_tabulate_vrule_color \empty
- \glet \m_tabl_tabulate_vrule_color_local \empty
+ \glettonothing\m_tabl_tabulate_color_previous
+ \glettonothing\m_tabl_tabulate_color
+ \glettonothing\m_tabl_tabulate_text_color
+ \glettonothing\m_tabl_tabulate_color_local
+ \glettonothing\m_tabl_tabulate_vrule_color
+ \glettonothing\m_tabl_tabulate_vrule_color_local
\global\d_tabl_tabulate_vrulethickness_local\zeropoint
\to \t_tabl_tabulate_every_row
\protected\def\tabl_tabulate_color_side_right_second
{\ifempty\m_tabl_tabulate_color_previous \else
\tabl_tabulate_color_set\m_tabl_tabulate_color_previous
- \glet\m_tabl_tabulate_color_previous\empty
+ \glettonothing\m_tabl_tabulate_color_previous
\fi}
\protected\def\tabl_tabulate_color_side_left_second
@@ -1451,9 +1451,9 @@
{\ifempty\m_tabl_tabulate_color \else
\tabl_tabulate_color_set\m_tabl_tabulate_color
\ifcase\c_tabl_tabulate_colorspan
- %\glet\m_tabl_tabulate_color_previous\empty
+ %\glettonothing\m_tabl_tabulate_color_previous
\or
- \glet\m_tabl_tabulate_color_previous\empty
+ \glettonothing\m_tabl_tabulate_color_previous
\or
\glet\m_tabl_tabulate_color_previous\m_tabl_tabulate_color
\or
@@ -1635,7 +1635,7 @@
\directvskip\s_tabl_tabulate_separator
\egroup}
-\let\m_tabl_tabulate_hrule_color\empty
+\lettonothing\m_tabl_tabulate_hrule_color
\def\tabl_tabulate_hrule_preset_step#1%
{\doifelsenumber{#1}%
@@ -1756,10 +1756,10 @@
% \registerparoptions
% \ifinsidefloat
% % that is, an unbreakable one
-% \glet\tabl_tabulate_register_par_options\empty
+% \glettonothing\tabl_tabulate_register_par_options
% \else
% % unsafe in crossing pages, at each b...
-% % \glet\tabl_tabulate_register_par_options\empty
+% % \glettonothing\tabl_tabulate_register_par_options
% \fi
% \fi}
%
@@ -1774,10 +1774,10 @@
{\registerparoptions
\ifinsidefloat
% that is, an unbreakable one
- \glet\tabl_tabulate_register_par_options\empty
+ \glettonothing\tabl_tabulate_register_par_options
\else
% unsafe in crossing pages, at each b...
- % \glet\tabl_tabulate_register_par_options\empty
+ % \glettonothing\tabl_tabulate_register_par_options
\fi}
\let\tabl_tabulate_register_par_options\relax
@@ -1806,7 +1806,7 @@
\hss}}
\def\tabl_tabulate_flush_indent
- {\ifnum\c_tabl_tabulate_column=\zerocount
+ {\ifzero\c_tabl_tabulate_column
\tabl_tabulate_flush_indent_indeed
\fi}
@@ -2037,7 +2037,7 @@
\expandafter\ignorepars % \ignorespaces
\else
% successive lines
- \let\tabl_tabulate_eskip\empty
+ \lettonothing\tabl_tabulate_eskip
\dontcomplain
\glet\tabl_tabulate_hook\tabl_tabulate_hook_yes
\expandafter\tabl_tabulate_splitoff_box
@@ -2047,7 +2047,7 @@
\protected\def\tabl_tabulate_xeskip_second{\tabl_tabulate_eskip}
\protected\def\tabl_tabulate_flush_second_indeed
- {\glet\tabl_tabulate_flush_collected_indeed\empty
+ {\glettonothing\tabl_tabulate_flush_collected_indeed
\global\c_tabl_tabulate_column\zerocount
\tabl_tabulate_pbreak_check
\dofastloopcs\c_tabl_tabulate_columns\tabl_tabulate_flush_second_step
@@ -2156,6 +2156,7 @@
\permanent\def\tabl_tabulate_HL_second
{\csname
\ifnum\c_tabl_tabulate_noflines=\zerocount F\orelse
+ % \ifzeroc_tabl_tabulate_noflines F\orelse
\ifnum\c_tabl_tabulate_noflines=\c_tabl_tabulate_totalnoflines L\else
M\fi
L\endcsname}
@@ -2213,8 +2214,8 @@
%D places where we can use \LUA\ code (for instance in alignment of numbers. The
%D repeat parser is replace at the \LUA\ end as well.
-\let\tabl_tabulate_flush_collected \empty
-\let\tabl_tabulate_flush_collected_indeed\empty
+\lettonothing\tabl_tabulate_flush_collected
+\lettonothing\tabl_tabulate_flush_collected_indeed
\let\v_tabl_tabulate_align\!!zerocount
@@ -2266,8 +2267,8 @@
\ifx\p_synchronize\v!background
\edef\currentframedcontent{\tabulationparameter\c!frame}%
\ifx\currentframedcontent\v!off
- \lettabulationparameter\c!frame\empty
- \let\currentframedcontent\empty
+ \resettabulationparameter\c!frame
+ \lettonothing\currentframedcontent
\letframedcontentparameter\c!frame\v!off
\fi
\letframedcontentparameter\c!synchronize\p_synchronize
@@ -2318,7 +2319,7 @@
%
\the\t_tabl_tabulate_initializers_first % collect more here
%
- \glet\tabl_tabulate_flush_collected\empty
+ \glettonothing\tabl_tabulate_flush_collected
\ifdim\d_tabl_tabulate_margin>\zeropoint
\t_tabl_tabulate_preamble
{\aligntab
@@ -2398,7 +2399,7 @@
\setbox\scratchbox\emptybox % free memory
\ifconditional\c_tabl_tabulate_split
\splittopskip\strutht
- \glet\tabl_tabulate_flush_collected_indeed\empty
+ \glettonothing\tabl_tabulate_flush_collected_indeed
\glet\tabl_tabulate_flush_collected\tabl_tabulate_flush_second
\fi
\c_tabl_tabulate_totalnoflines\c_tabl_tabulate_noflines
@@ -2714,7 +2715,7 @@
\permanent\protected\defcsname starttabulate\endcsname
{\bgroup % whole thing
\settrue\c_tabl_generic
- \let\currenttabulationparent\empty
+ \lettonothing\currenttabulationparent
\tabl_start_regular}
\permanent\letcsname stoptabulate\endcsname\relax % testcase cvs-002.tex
@@ -2829,11 +2830,11 @@
% \c!foregroundcolor=,
% \c!foregroundstyle=]
-\let\m_table_current_row_background \empty
-\let\m_table_current_row_background_default \empty
-\let\m_table_current_row_background_filler \empty
-\let\m_table_current_row_background_defaultfiller\empty
-\let\m_table_current_row_background_auto \empty
+\lettonothing\m_table_current_row_background
+\lettonothing\m_table_current_row_background_default
+\lettonothing\m_table_current_row_background_filler
+\lettonothing\m_table_current_row_background_defaultfiller
+\lettonothing\m_table_current_row_background_auto
\protected\def\tabl_register_row_background#1%
{\xdef\m_table_current_row_background{#1}}
@@ -2886,16 +2887,16 @@
\fi}
\appendtoks
- \glet\m_table_current_row_background\empty
- \glet\m_table_current_row_background_filler\empty
+ \glettonothing\m_table_current_row_background
+ \glettonothing\m_table_current_row_background_filler
\global\c_tabl_tabulate_nofrealrows\zerocount
\global\c_tabl_tabulate_autocolor\zerocount
\clf_resetbackgroundrowdata
\to \t_tabl_tabulate_initializers_first
\appendtoks
- \glet\m_table_current_row_background\empty
- \glet\m_table_current_row_background_filler\empty
+ \glettonothing\m_table_current_row_background
+ \glettonothing\m_table_current_row_background_filler
\global\c_tabl_tabulate_nofrealrows\zerocount
\global\c_tabl_tabulate_autocolor\zerocount
\clf_resetbackgroundrowdata
@@ -2906,8 +2907,8 @@
\to \t_tabl_tabulate_every_real_row
\appendtoks
- \glet\m_table_current_row_background\empty
- \glet\m_table_current_row_background_filler\empty
+ \glettonothing\m_table_current_row_background
+ \glettonothing\m_table_current_row_background_filler
\to \t_tabl_tabulate_every_after_row
\permanent\protected\def\tabl_tabulate_NL_first[#1]%
@@ -3003,7 +3004,7 @@
\edef\m_table_current_row_background_auto{\tabulateparameter{\c!backgroundcolor:\number\c_tabl_tabulate_autocolor}}%
\fi
\ifempty\m_table_current_row_background_auto
- \let\m_table_current_row_background_auto\empty % \m_table_current_row_background_default
+ \lettonothing\m_table_current_row_background_auto % \m_table_current_row_background_default
\fi
\tabl_register_row_background{\m_table_current_row_background_auto}}
@@ -3036,9 +3037,9 @@
\to \t_tabl_tabulate_initializers_first
\appendtoks
- \edef\m_table_current_row_background_default {\tabulateparameter\c!backgroundcolor}%
+ \edef\m_table_current_row_background_default{\tabulateparameter\c!backgroundcolor}%
\edef\m_table_current_row_background_default_filler{\tabulateparameter\c!background}%
- \let \m_table_current_row_background_auto \empty
+ \lettonothing\m_table_current_row_background_auto
\to \everytabulate
\setuptabulate
diff --git a/tex/context/base/mkxl/tabl-tsp.mkxl b/tex/context/base/mkxl/tabl-tsp.mkxl
index 5f01e7eb4..51069b75f 100644
--- a/tex/context/base/mkxl/tabl-tsp.mkxl
+++ b/tex/context/base/mkxl/tabl-tsp.mkxl
@@ -69,16 +69,15 @@
\newconditional\splitfloatdone
\newconditional\onlyonesplitofffloat \settrue\onlyonesplitofffloat
-\newif \ifinsidesplitfloat % will become conditional
+\newif \ifinsidesplitfloat % will become conditional
+\newcount\noffloatssplits
+\newtoks \everysplitfloatsetup
-\newcount \noffloatssplits
-\newtoks \everysplitfloatsetup
+\mutable\let\extrasplitfloatlines \!!zerocount
+\mutable\let\splitfloatfinalizer \relax
-\mutable\let \extrasplitfloatlines \!!zerocount
-\mutable\let \splitfloatfinalizer \relax
-\mutable\let \splitfloatcommand \empty
-
-\mutable\let \floatcaptionsuffix \empty
+\mutable\lettonothing\splitfloatcommand
+\mutable\lettonothing\floatcaptionsuffix
\permanent\tolerant\protected\def\splitfloat[#1]#:#2% nog dubbele refs
{\bgroup
@@ -134,7 +133,7 @@
\global\advance\noffloatssplits\plusone
\ifcase\noffloatssplits\relax \or
\ifconditional\onlyonesplitofffloat
- \let\floatcaptionsuffix\empty
+ \lettonothing\floatcaptionsuffix
\fi
\fi
\bgroup
diff --git a/tex/context/base/mkxl/tabl-xtb.mklx b/tex/context/base/mkxl/tabl-xtb.mklx
index ceea878da..4f3d1683c 100644
--- a/tex/context/base/mkxl/tabl-xtb.mklx
+++ b/tex/context/base/mkxl/tabl-xtb.mklx
@@ -98,7 +98,7 @@
\newcount\c_tabl_x_swapped
\newcount\c_tabl_x_swapped_max
-\let\m_tabl_x_swapped_settings\empty
+\lettonothing\m_tabl_x_swapped_settings
\aliased\let\currentxtablerow \clf_x_table_r
\aliased\let\currentxtablecolumn\clf_x_table_c
@@ -156,8 +156,8 @@
\c!rightmargindistance=\zeropoint,% whole table
]
-\def\tabl_x_default_buffer{x_table_\number\c_tabl_x_nesting}
-\let\tabl_x_current_buffer\empty
+\def \tabl_x_default_buffer{x_table_\number\c_tabl_x_nesting}
+\lettonothing\tabl_x_current_buffer
\permanent\protected\def\startxtable{\tabl_x_start_table}
@@ -280,7 +280,7 @@
footer {\xtableparameter\c!footer}%
\relax
%
- \letxtableparameter\c!option\empty
+ \resetxtableparameter\c!option
% not so nice but needed as we use this in the setup
\linewidth\xtableparameter\c!rulethickness\relax
% so we freeze it
diff --git a/tex/context/base/mkxl/toks-aux.lmt b/tex/context/base/mkxl/toks-aux.lmt
index c152afb36..83e714d77 100644
--- a/tex/context/base/mkxl/toks-aux.lmt
+++ b/tex/context/base/mkxl/toks-aux.lmt
@@ -44,6 +44,7 @@ local function flags(t)
if t.instance then r[#r+1] = "instance" end
if t.tolerant then r[#r+1] = "tolerant" end
if t.protected then r[#r+1] = "protected" end
+ if t.constant then r[#r+1] = "constant" end
return r
end
@@ -119,6 +120,7 @@ interfaces.implement {
elseif cn == "letter" or cn == "other char" then
wr(f3(id,cd,ix,cn,ix))
elseif cn == "match" then
+ -- needs checking for additions
local s
if ix == 32 then s = "optional spacer" -- space
elseif ix == 42 then s = "skip spaces" -- *
diff --git a/tex/context/base/mkxl/trac-tex.mkxl b/tex/context/base/mkxl/trac-tex.mkxl
index 13c1a047f..5e1c9e5bc 100644
--- a/tex/context/base/mkxl/trac-tex.mkxl
+++ b/tex/context/base/mkxl/trac-tex.mkxl
@@ -24,7 +24,7 @@
% \def\enabletextracerwhatever {...}
% \def\disabletextracerwhatever{...}
-\mutable\let\alltextracers\empty % so that we can report available tracers
+\mutable\lettonothing\alltextracers % so that we can report available tracers
\permanent\protected\def\installtextracer#1%
{\addtocommalist{#1}\alltextracers}
diff --git a/tex/context/base/mkxl/type-ini.mklx b/tex/context/base/mkxl/type-ini.mklx
index bba2d433b..d750260e2 100644
--- a/tex/context/base/mkxl/type-ini.mklx
+++ b/tex/context/base/mkxl/type-ini.mklx
@@ -39,29 +39,29 @@
\newtoks \everybeforedefinetypeface
\newtoks \everyafterdefinetypeface
-\mutable\let\typescriptfiles \empty
-\mutable\let\currenttypescripts\empty
-\mutable\let\currenttypefile \empty
+\mutable\lettonothing\typescriptfiles
+\mutable\lettonothing\currenttypescripts
+\mutable\lettonothing\currenttypefile
\installmacrostack\currenttypefile
-\mutable\let\typescriptone \empty % public, used in typescripts
-\mutable\let\typescripttwo \empty % public, used in typescripts
-\mutable\let\typescriptthree\empty % public, used in typescripts
+\mutable\lettonothing\typescriptone % public, used in typescripts
+\mutable\lettonothing\typescripttwo % public, used in typescripts
+\mutable\lettonothing\typescriptthree % public, used in typescripts
\installmacrostack\typescriptone
\installmacrostack\typescripttwo
\installmacrostack\typescriptthree
-\mutable\let\fontclassstyle \empty
+\mutable\lettonothing\fontclassstyle
\installmacrostack\fontclassstyle
-\let\m_font_typescripts_one \empty
-\let\m_font_typescripts_two \empty
-\let\m_font_typescripts_three\empty
-\let\m_font_typescripts_check\empty
-\let\m_font_typescripts_match\empty
+\lettonothing\m_font_typescripts_one
+\lettonothing\m_font_typescripts_two
+\lettonothing\m_font_typescripts_three
+\lettonothing\m_font_typescripts_check
+\lettonothing\m_font_typescripts_match
\installmacrostack\m_font_typescripts_one
\installmacrostack\m_font_typescripts_two
@@ -105,7 +105,7 @@
\permanent\protected\def\usetypescriptfile[#filename]%
{\ifcstok{#filename}\v!reset
- \let\typescriptfiles\empty
+ \lettonothing\typescriptfiles
\else
\splitfilename{#filename}%
\addtocommalist\splitoffbase\typescriptfiles
@@ -296,7 +296,7 @@
{\let\typescriptone \m_font_typescripts_one
\let\typescripttwo \m_font_typescripts_two
\let\typescriptthree\m_font_typescripts_three
- \let\m_font_typescripts_match\empty
+ \lettonothing\m_font_typescripts_match
\doifelsenextoptionalcs\font_typescripts_start_process_one\font_typescripts_start_process_all}
\def\font_typescripts_start_process_all % could be a \let
@@ -496,11 +496,11 @@
\def\font_typefaces_defining_start#name#style#settings%
{\let\m_ts_rscale \!!plusone % as we push/pop
- \let\m_ts_features \empty
- \let\m_ts_fallbacks \empty
- \let\m_ts_goodies \empty
- \let\m_ts_direction \empty
- \let\m_ts_designsize\empty
+ \lettonothing\m_ts_features
+ \lettonothing\m_ts_fallbacks
+ \lettonothing\m_ts_goodies
+ \lettonothing\m_ts_direction
+ \lettonothing\m_ts_designsize
\geteparameters[m_ts_][#settings]% todo raw ... no need for key interpretation
\push_macro_fontclass
\push_macro_fontclassstyle
diff --git a/tex/context/base/mkxl/typo-ada.mkxl b/tex/context/base/mkxl/typo-ada.mkxl
index e8b37997b..beb03e264 100644
--- a/tex/context/base/mkxl/typo-ada.mkxl
+++ b/tex/context/base/mkxl/typo-ada.mkxl
@@ -27,7 +27,7 @@
\newdimen\d_adaptive_line
\newdimen\d_adaptive_hsize
-\mutable\let\m_adaptive_color\empty
+\mutable\lettonothing\m_adaptive_color
\newbox\b_adaptive_box
@@ -70,7 +70,7 @@
{\ifcase#1\dontleavehmode\fi
\begingroup
\ifhastok={#2}%
- \let\currentadaptive\empty
+ \lettonothing\currentadaptive
\setupcurrentadaptive[#2]%
\else
\edef\currentadaptive{#2}%
diff --git a/tex/context/base/mkxl/typo-del.mkxl b/tex/context/base/mkxl/typo-del.mkxl
index 5b8431070..f790f9907 100644
--- a/tex/context/base/mkxl/typo-del.mkxl
+++ b/tex/context/base/mkxl/typo-del.mkxl
@@ -314,9 +314,9 @@
%D \NC [fr:en] \NC {\tttf fr} \quotation[fr:en]{{\tttf <en=\currentlanguage>} something french} \NC \NR
%D \stoptabulate
-\mutable\let\currentdelimitedlanguage\empty
-\mutable\let\innerdelimitedlanguage \empty
-\mutable\let\outerdelimitedlanguage \empty
+\mutable\lettonothing\currentdelimitedlanguage
+\mutable\lettonothing\innerdelimitedlanguage
+\mutable\lettonothing\outerdelimitedlanguage
\installglobalmacrostack\currentdelimitedlanguage
@@ -344,11 +344,11 @@
{\let\currentdelimitedlanguage\innerdelimitedlanguage}%
\donothing
\fi
- \let\m_delimited_argument\empty}
+ \lettonothing\m_delimited_argument}
\def\typo_delimited_set_language_yes_a
{\let\currentdelimitedlanguage\m_delimited_argument
- \let\m_delimited_argument\empty}
+ \lettonothing\m_delimited_argument}
\def\typo_delimited_push#1#2%
{\push_macro_currentdelimitedtext % can we combine these two
diff --git a/tex/context/base/mkxl/typo-dir.mkxl b/tex/context/base/mkxl/typo-dir.mkxl
index af680282c..a5a4bc568 100644
--- a/tex/context/base/mkxl/typo-dir.mkxl
+++ b/tex/context/base/mkxl/typo-dir.mkxl
@@ -51,8 +51,8 @@
% maybe use chardefs
-\mutable\let\currentbidimode\empty
-\mutable\let\currentbidistamp\empty
+\mutable\lettonothing\currentbidimode
+\mutable\lettonothing\currentbidistamp
\def\typo_dir_get_mode
{\def\currentbidimode{\clf_getbidimode % test edef
diff --git a/tex/context/base/mkxl/typo-itm.mkxl b/tex/context/base/mkxl/typo-itm.mkxl
index 7ae1b732f..1622866ce 100644
--- a/tex/context/base/mkxl/typo-itm.mkxl
+++ b/tex/context/base/mkxl/typo-itm.mkxl
@@ -103,7 +103,7 @@
\ifempty\p_typo_items_symbol
\let\m_typo_items_symbol\firstofoneargument
\orelse\ifx\p_typo_items_symbol\v!none
- \let\p_typo_items_symbol\empty
+ \lettonothing\p_typo_items_symbol
\let\m_typo_items_symbol\firstofoneargument
\else
\doifelseconversiondefined\p_typo_items_symbol
diff --git a/tex/context/base/mkxl/typo-mar.mkxl b/tex/context/base/mkxl/typo-mar.mkxl
index 242797a5d..c49f8824f 100644
--- a/tex/context/base/mkxl/typo-mar.mkxl
+++ b/tex/context/base/mkxl/typo-mar.mkxl
@@ -142,10 +142,10 @@
\newconditional\inhibitmargindata % This one is used at the Lua end!
\newtoks \everymargindatacontent % Later on we will set this one.
-\mutable\let\currentmargindatastrut \empty
-\mutable\let\currentmargindatawidth \empty
-\mutable\let\currentmarginfirstheight\empty
-\mutable\let\currentmarginreference \empty
+\mutable\lettonothing\currentmargindatastrut
+\mutable\lettonothing\currentmargindatawidth
+\mutable\lettonothing\currentmarginfirstheight
+\mutable\lettonothing\currentmarginreference
\appendtoks
\settrue\inhibitmargindata
@@ -239,7 +239,7 @@
\margindataparameter\c!command{#content}%
\endstrut
\egroup
- \let\currentmarginfirstheight\empty
+ \lettonothing\currentmarginfirstheight
\else
\setbox\nextbox\naturalhbox \currentmarginreference \bgroup
\typo_margins_data_synchronize
diff --git a/tex/context/base/mkxl/typo-shp.mkxl b/tex/context/base/mkxl/typo-shp.mkxl
index 3f1d3f3d8..64cacef09 100644
--- a/tex/context/base/mkxl/typo-shp.mkxl
+++ b/tex/context/base/mkxl/typo-shp.mkxl
@@ -77,7 +77,7 @@
% \permanent\protected\tolerant\def\startshapedparagraph[#1]% no grouping
% {\begingroup
-% \let\currentshapedparagraph\empty
+% \lettonothing\currentshapedparagraph
% \setupshapedparagraph[#1]%
% \edef\p_mp {\shapedparagraphparameter\c!mp}%
% \edef\p_repeat{\shapedparagraphparameter\c!repeat}%
@@ -154,7 +154,7 @@
\permanent\protected\tolerant\def\startshapedparagraph[#1]% no grouping
{\begingroup
- \let\currentshapedparagraph\empty
+ \lettonothing\currentshapedparagraph
\setupshapedparagraph[#1]%
\setlocalhsize
\doifsomething{\shapedparagraphparameter\c!text}
diff --git a/tex/context/base/mkxl/typo-wrp.mkxl b/tex/context/base/mkxl/typo-wrp.mkxl
index 850d42e78..71559a8a3 100644
--- a/tex/context/base/mkxl/typo-wrp.mkxl
+++ b/tex/context/base/mkxl/typo-wrp.mkxl
@@ -52,7 +52,7 @@
{\wordboundary\strut}
\appendtoks
- \let\spac_crlf_placeholder\empty
+ \lettonothing\spac_crlf_placeholder
\to \everysetnostrut
\appendtoks
diff --git a/tex/context/modules/mkxl/s-publications-show.mkxl b/tex/context/modules/mkxl/s-publications-show.mkxl
index 9f4098489..f4967f7e4 100644
--- a/tex/context/modules/mkxl/s-publications-show.mkxl
+++ b/tex/context/modules/mkxl/s-publications-show.mkxl
@@ -26,9 +26,9 @@
\tolerant\gdef\publ_show_dataset_whatever#1[#2]%
{\begingroup
- \letdummyparameter\c!specification\currentbtxspecification
- \setdummyparameter\c!dataset {\currentbtxdataset}%
- \letdummyparameter\c!field \empty
+ \letdummyparameter \c!specification\currentbtxspecification
+ \setdummyparameter \c!dataset {\currentbtxdataset}%
+ \resetdummyparameter\c!field
\ifparameter#2\or
\ifhastok={#2}%
\getdummyparameters[#2]%
diff --git a/tex/context/modules/mkxl/x-mathml.mkxl b/tex/context/modules/mkxl/x-mathml.mkxl
index 12ddf2586..ea3052d2d 100644
--- a/tex/context/modules/mkxl/x-mathml.mkxl
+++ b/tex/context/modules/mkxl/x-mathml.mkxl
@@ -283,7 +283,7 @@
\newcount\@MMLlevel \def\MMLcreset{\@MMLlevel\zerocount}
-\let\MMLctempresetlist\empty \def\setMMLcreset{\edef\MMLctempresetlist}
+\lettonothing\MMLctempresetlist \def\setMMLcreset{\edef\MMLctempresetlist}
\let\MMLdoL\donothing
\let\MMLdoR\donothing
@@ -311,7 +311,7 @@
\edef\MMLdoL{\noexpand\left \mmlapplyopentoken }
\edef\MMLdoR{\noexpand\right\mmlapplyclosetoken}
\fi
- \let\MMLctempresetlist\empty
+ \lettonothing\MMLctempresetlist
\xmldoifelse {#1} {/mml:apply} {
% % <apply> <apply> ... </apply> <ci> .. </ci> </apply>
% \xmldoifelse {#1} {/mml:apply(mml:plus|mml:minus)} {% [a]
@@ -571,7 +571,7 @@
\startxmlsetups mml:cn:integer
\mathatom class \mathdigitcode \bgroup
\edef\mmlintegerbase{\xmlattdef{#1}{base}{}}
- \ifx\mmlintegerbase\empty
+ \ifempty\mmlintegerbase
\xmlflush{#1}
\else
\mtext {
@@ -976,7 +976,7 @@
\setupMMLappearance[power][\c!reduction=\v!yes]
-\let\MMLpowerelement\empty
+\lettonothing\MMLpowerelement
\startxmlsetups mml:power
\xmldoifelse {#1} {/mml:apply} {
@@ -1479,12 +1479,12 @@
}
}
} {
- \let\mmlsumprodlower\empty
+ \lettonothing\mmlsumprodlower
}
\xmldoifelse {#1} {/mml:uplimit} {
\def\mmlsumprodupper{\normalsuperscript{\xmlfirst{#1}{/mml:uplimit}}}
} {
- \let\mmlsumprodupper\empty
+ \lettonothing\mmlsumprodupper
}
\xmldoif {#1} {/mml:interval} { % open math converter gives this
\edef\mmlintervalfrom{\xmlindex{#1}{/mml:interval}{1}}
@@ -1754,7 +1754,7 @@
\else
\normalsuperscript{\ifconditional\xmlinversefunction-\fi\MMLpowerelement}
\setfalse\xmlinversefunction
- \glet\MMLpowerelement\empty
+ \glettonothing\MMLpowerelement
\fi
\xmlsetup{#1}{mml:function:argument}
\stopxmlsetups
@@ -2364,14 +2364,14 @@
\scratchwidth \xmlattdef{#1}{width} \!!zeropoint % must be string
\scratchheight\xmlattdef{#1}{height}\!!zeropoint
\scratchdepth \xmlattdef{#1}{depth} \!!zeropoint
- \ifdim\scratchheight=\zeropoint
- \ifdim\scratchdepth=\zeropoint\else
+ \ifzeropt\scratchheight
+ \ifzeropt\scratchdepth\else
\novrule\s!depth\scratchdepth\s!height\zeropoint\s!width\zeropoint
\fi
\else
\novrule\s!depth\zeropoint\s!height\scratchheight\s!width\zeropoint
\fi
- \ifdim\scratchwidth=\zeropoint
+ \ifzeropt\scratchwidth
% maybe we need to do it anyway
\orelse\ifx\MMLmspaceoption\v!test
\hbox to \scratchwidth{\showstruts\strut\hss\lower2\exheight\hbox{\infofont\xmlattdef{#1}{width}}\hss\strut}
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 8536adc85..d3fd3dbfe 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2022-12-09 16:31
+-- merge date : 2022-12-15 17:49
do -- begin closure to overcome local limits and interference