From 8f472c629a996f1c08281198210354a253d7f56b Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 15 Dec 2022 19:13:44 +0100 Subject: 2022-12-15 17:52:00 --- .../lexers/data/scite-context-data-context.lua | 2 +- .../context/lexers/data/scite-context-data-tex.lua | 2 +- .../context/scite-context-data-context.properties | 234 ++++++++++----------- .../context/scite-context-data-tex.properties | 147 ++++++------- .../documents/general/manuals/lowlevel-macros.pdf | Bin 82764 -> 88216 bytes .../general/manuals/lowlevel/lowlevel-macros.tex | 75 +++++++ metapost/context/base/mpxl/mp-apos.mpxl | 87 ++++---- metapost/context/base/mpxl/mp-cont.mpxl | 8 +- source/luametatex/source/lua/lmtinterface.h | 3 + source/luametatex/source/lua/lmtstatuslib.c | 6 +- source/luametatex/source/lua/lmttexlib.c | 13 +- source/luametatex/source/lua/lmttokenlib.c | 77 ++++--- source/luametatex/source/lua/lmttokenlib.h | 2 +- source/luametatex/source/luametatex.h | 2 +- source/luametatex/source/tex/texcommands.c | 11 +- source/luametatex/source/tex/texcommands.h | 10 +- source/luametatex/source/tex/texconditional.c | 22 +- source/luametatex/source/tex/texdumpdata.h | 2 +- source/luametatex/source/tex/texequivalents.c | 2 + source/luametatex/source/tex/texequivalents.h | 3 + source/luametatex/source/tex/texexpand.c | 36 +++- source/luametatex/source/tex/texinputstack.c | 25 ++- source/luametatex/source/tex/texlanguage.c | 5 +- source/luametatex/source/tex/texmaincontrol.c | 103 +++++---- source/luametatex/source/tex/texmarks.c | 30 ++- source/luametatex/source/tex/texmarks.h | 2 +- source/luametatex/source/tex/texmath.c | 52 ++--- source/luametatex/source/tex/texmlist.c | 23 +- source/luametatex/source/tex/texprinting.c | 2 +- source/luametatex/source/tex/texscanning.c | 140 ++++++------ source/luametatex/source/tex/texstringpool.h | 58 +++-- source/luametatex/source/tex/textoken.c | 114 ++++++---- source/luametatex/source/tex/textoken.h | 43 ++-- source/luametatex/source/tex/textypes.h | 2 +- source/luametatex/source/utilities/auxunistring.c | 100 +++++++-- source/luametatex/source/utilities/auxunistring.h | 3 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/mult-fmt.lua | 8 +- tex/context/base/mkiv/mult-low.lua | 3 +- tex/context/base/mkiv/mult-prm.lua | 4 + tex/context/base/mkiv/status-files.pdf | Bin 24606 -> 24575 bytes tex/context/base/mkiv/status-lua.pdf | Bin 264746 -> 264780 bytes tex/context/base/mkxl/anch-bck.mklx | 2 +- tex/context/base/mkxl/anch-box.mkxl | 40 +++- tex/context/base/mkxl/anch-pgr.mkxl | 14 +- tex/context/base/mkxl/anch-pos.mkxl | 8 +- tex/context/base/mkxl/anch-tab.mkxl | 6 +- tex/context/base/mkxl/attr-lay.mkxl | 12 +- tex/context/base/mkxl/back-exp.mkxl | 2 +- tex/context/base/mkxl/bibl-bib.mkxl | 8 +- tex/context/base/mkxl/bibl-tra.mkxl | 46 ++-- tex/context/base/mkxl/buff-ini.mkxl | 2 +- tex/context/base/mkxl/buff-par.mklx | 10 +- tex/context/base/mkxl/buff-ver.mkxl | 4 +- tex/context/base/mkxl/catc-ini.mkxl | 6 +- tex/context/base/mkxl/chem-str.mkxl | 20 +- tex/context/base/mkxl/colo-ext.mkxl | 2 +- tex/context/base/mkxl/colo-ini.mkxl | 24 +-- tex/context/base/mkxl/cont-log.mkxl | 1 - tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 4 +- tex/context/base/mkxl/core-con.mkxl | 10 +- tex/context/base/mkxl/core-env.mkxl | 8 +- tex/context/base/mkxl/core-ini.mkxl | 3 +- tex/context/base/mkxl/core-sys.mkxl | 2 +- tex/context/base/mkxl/core-two.mkxl | 5 +- tex/context/base/mkxl/file-ini.mklx | 11 +- tex/context/base/mkxl/file-job.mklx | 6 +- tex/context/base/mkxl/file-mod.mklx | 28 +-- tex/context/base/mkxl/file-res.mklx | 2 +- tex/context/base/mkxl/font-col.mklx | 6 +- tex/context/base/mkxl/font-emp.mklx | 2 +- tex/context/base/mkxl/font-fea.mklx | 18 +- tex/context/base/mkxl/font-fil.mklx | 28 +-- tex/context/base/mkxl/font-ini.mklx | 61 +++--- tex/context/base/mkxl/font-mat.mklx | 56 +++-- tex/context/base/mkxl/font-sel.mklx | 2 +- tex/context/base/mkxl/font-set.mklx | 2 +- tex/context/base/mkxl/font-sol.mklx | 4 +- tex/context/base/mkxl/font-sty.mklx | 10 +- tex/context/base/mkxl/font-sym.mklx | 6 +- tex/context/base/mkxl/font-var.mklx | 8 +- tex/context/base/mkxl/grph-epd.mkxl | 2 +- tex/context/base/mkxl/grph-fig.mkxl | 2 +- tex/context/base/mkxl/grph-inc.mkxl | 2 +- tex/context/base/mkxl/grph-trf.mkxl | 14 +- tex/context/base/mkxl/hand-ini.mkxl | 2 +- tex/context/base/mkxl/lang-hyp.mkxl | 26 +-- tex/context/base/mkxl/lang-ini.mkxl | 10 +- tex/context/base/mkxl/lang-lab.mkxl | 11 +- tex/context/base/mkxl/lang-url.mkxl | 4 +- tex/context/base/mkxl/math-ali.mkxl | 21 +- tex/context/base/mkxl/math-del.mklx | 127 ----------- tex/context/base/mkxl/math-dld.mklx | 127 +++++++++++ tex/context/base/mkxl/math-fen.mkxl | 2 +- tex/context/base/mkxl/math-ini.mkxl | 2 +- tex/context/base/mkxl/math-rad.mklx | 4 +- tex/context/base/mkxl/math-stc.mklx | 6 +- tex/context/base/mkxl/meta-ini.mkxl | 50 ++--- tex/context/base/mkxl/meta-pdf.mkxl | 2 +- tex/context/base/mkxl/meta-pdh.mkxl | 9 +- tex/context/base/mkxl/mlib-int.lmt | 6 +- tex/context/base/mkxl/mult-aux.mkxl | 73 ++++--- tex/context/base/mkxl/mult-ini.lmt | 2 +- tex/context/base/mkxl/mult-ini.mkxl | 112 +++++----- tex/context/base/mkxl/node-ext.mkxl | 2 +- tex/context/base/mkxl/node-rul.mkxl | 14 +- tex/context/base/mkxl/pack-box.mkxl | 24 +-- tex/context/base/mkxl/pack-com.mkxl | 32 +-- tex/context/base/mkxl/pack-cut.mkxl | 11 +- tex/context/base/mkxl/pack-lyr.mkxl | 68 +++--- tex/context/base/mkxl/pack-mat.mkxl | 206 +++++++++++++++--- tex/context/base/mkxl/pack-obj.mkxl | 2 +- tex/context/base/mkxl/pack-pos.mkxl | 4 +- tex/context/base/mkxl/pack-rul.mkxl | 70 +++--- tex/context/base/mkxl/page-app.mkxl | 4 +- tex/context/base/mkxl/page-bck.mkxl | 2 +- tex/context/base/mkxl/page-box.mklx | 8 +- tex/context/base/mkxl/page-brk.mkxl | 8 +- tex/context/base/mkxl/page-cst.mkxl | 4 +- tex/context/base/mkxl/page-flt.mkxl | 8 +- tex/context/base/mkxl/page-imp.mkxl | 10 +- tex/context/base/mkxl/page-inf.mkxl | 10 +- tex/context/base/mkxl/page-inj.mklx | 4 +- tex/context/base/mkxl/page-lay.mkxl | 58 +++-- tex/context/base/mkxl/page-lin.mklx | 21 +- tex/context/base/mkxl/page-mcl.mkxl | 2 +- tex/context/base/mkxl/page-mix.mkxl | 16 +- tex/context/base/mkxl/page-one.mkxl | 4 +- tex/context/base/mkxl/page-pcl.mkxl | 2 +- tex/context/base/mkxl/page-pst.mkxl | 2 +- tex/context/base/mkxl/page-sid.mkxl | 8 +- tex/context/base/mkxl/page-str.mkxl | 2 +- tex/context/base/mkxl/page-txt.mklx | 18 +- tex/context/base/mkxl/publ-ini.mkxl | 217 +++++++++---------- tex/context/base/mkxl/regi-ini.mkxl | 2 +- tex/context/base/mkxl/scrn-bar.mklx | 6 +- tex/context/base/mkxl/scrn-but.mklx | 14 +- tex/context/base/mkxl/scrn-fld.mklx | 34 +-- tex/context/base/mkxl/scrn-hlp.mklx | 4 +- tex/context/base/mkxl/scrn-pag.mklx | 12 +- tex/context/base/mkxl/scrn-ref.mklx | 8 +- tex/context/base/mkxl/scrn-wid.mklx | 32 +-- tex/context/base/mkxl/spac-hor.mkxl | 10 +- tex/context/base/mkxl/spac-lin.mkxl | 4 +- tex/context/base/mkxl/spac-pag.mkxl | 4 +- tex/context/base/mkxl/spac-par.mkxl | 2 +- tex/context/base/mkxl/spac-ver.mkxl | 33 +-- tex/context/base/mkxl/strc-bkm.mkxl | 6 +- tex/context/base/mkxl/strc-blk.mkxl | 10 +- tex/context/base/mkxl/strc-con.mklx | 65 +++--- tex/context/base/mkxl/strc-des.mklx | 2 +- tex/context/base/mkxl/strc-doc.mkxl | 76 +++---- tex/context/base/mkxl/strc-enu.mklx | 8 +- tex/context/base/mkxl/strc-flt.mklx | 112 +++++----- tex/context/base/mkxl/strc-itm.mklx | 93 ++++---- tex/context/base/mkxl/strc-lab.mkxl | 8 +- tex/context/base/mkxl/strc-lnt.mklx | 4 +- tex/context/base/mkxl/strc-lst.mklx | 43 ++-- tex/context/base/mkxl/strc-mat.mkxl | 110 +++++----- tex/context/base/mkxl/strc-not.mklx | 30 +-- tex/context/base/mkxl/strc-num.mkxl | 12 +- tex/context/base/mkxl/strc-ref.mklx | 76 +++---- tex/context/base/mkxl/strc-reg.mkxl | 74 +++---- tex/context/base/mkxl/strc-ren.mkxl | 7 +- tex/context/base/mkxl/strc-sbe.mkxl | 2 +- tex/context/base/mkxl/strc-sec.mkxl | 58 ++--- tex/context/base/mkxl/strc-syn.mkxl | 26 +-- tex/context/base/mkxl/strc-tag.mkxl | 8 +- tex/context/base/mkxl/strc-usr.mkxl | 2 +- tex/context/base/mkxl/supp-box.mkxl | 6 +- tex/context/base/mkxl/symb-ini.mkxl | 8 +- tex/context/base/mkxl/syst-aux.mkxl | 141 +++++++------ tex/context/base/mkxl/syst-ini.mkxl | 17 +- tex/context/base/mkxl/tabl-frm.mkxl | 6 +- tex/context/base/mkxl/tabl-ltb.mkxl | 5 +- tex/context/base/mkxl/tabl-ntb.mkxl | 74 +++---- tex/context/base/mkxl/tabl-tab.mkxl | 60 +++--- tex/context/base/mkxl/tabl-tbl.mkxl | 135 ++++++------ tex/context/base/mkxl/tabl-tsp.mkxl | 17 +- tex/context/base/mkxl/tabl-xtb.mklx | 8 +- tex/context/base/mkxl/toks-aux.lmt | 2 + tex/context/base/mkxl/trac-tex.mkxl | 2 +- tex/context/base/mkxl/type-ini.mklx | 38 ++-- tex/context/base/mkxl/typo-ada.mkxl | 4 +- tex/context/base/mkxl/typo-del.mkxl | 10 +- tex/context/base/mkxl/typo-dir.mkxl | 4 +- tex/context/base/mkxl/typo-itm.mkxl | 2 +- tex/context/base/mkxl/typo-mar.mkxl | 10 +- tex/context/base/mkxl/typo-shp.mkxl | 4 +- tex/context/base/mkxl/typo-wrp.mkxl | 2 +- tex/context/modules/mkxl/s-publications-show.mkxl | 6 +- tex/context/modules/mkxl/x-mathml.mkxl | 20 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 197 files changed, 2791 insertions(+), 2206 deletions(-) delete mode 100644 tex/context/base/mkxl/math-del.mklx create mode 100644 tex/context/base/mkxl/math-dld.mklx 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 Binary files a/doc/context/documents/general/manuals/lowlevel-macros.pdf and b/doc/context/documents/general/manuals/lowlevel-macros.pdf 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, <); + 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 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 089aadf1a..36e22cc39 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf 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-del.mklx deleted file mode 100644 index 0377f3507..000000000 --- a/tex/context/base/mkxl/math-del.mklx +++ /dev/null @@ -1,127 +0,0 @@ -%D \module -%D [ file=math-del, -%D version=2022.07.29, -%D title=\CONTEXT\ Math Macros, -%D subtitle=delimiteds, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\writestatus{loading}{ConTeXt Math Macros / Delimited} - -\unprotect - -%D This is a variant on radicals but in the end it was better to just define a new -%D environment for this. This is because we don't have the rule and we want a -%D different control over the spacing. We also don't want the degree. - -% Todo: also add the mp plugin here but that more fun stuff for later (when we pick -% up school math). - -\installcorenamespace{mathdelimited} -\installcorenamespace{mathdelimitedalternative} - -\installcommandhandler \??mathdelimited {mathdelimited} \??mathdelimited - -\setupmathdelimited - [\c!alternative=\v!normal, - \c!mpoffset=.25\exheight, - \c!topoffset=\zeropoint, - \c!bottomoffset=\zeropoint, - \c!height=\zeropoint, - \c!depth=\zeropoint, - \c!strut=\v!height, - \c!source=\zerocount, - \c!size=\zerocount, - \c!left=\zerocount, - \c!right=\zerocount, - \c!leftmargin=\zeropoint, - \c!rightmargin=\zeropoint] - -\appendtoks - \frozen\protected\instance\edefcsname\currentmathdelimited\endcsname{\math_delimited_handle{\currentmathdelimited}} -\to \everydefinemathdelimited - -\mutable\let\currentmathdelimited\empty - -\tolerant\protected\def\math_delimited_handle#tag#*[#settings]#:#body% - {\begingroup - \edef\currentmathdelimited{#tag}% - \setupcurrentmathdelimited[#settings]% - \math_delimited_alternative{% - \begincsname\??mathwhateverstrut\mathdelimitedparameter\c!strut\endcsname - \scratchdimen\mathdelimitedparameter\c!leftmargin \relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi - #body% - \scratchdimen\mathdelimitedparameter\c!rightmargin\relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi - }% - \endgroup} - -\def\math_delimited_alternative{\csname\??mathdelimitedalternative\mathdelimitedparameter\c!alternative\endcsname} - -\protected\def\math_delimited_common - {\Udelimited - \s!height\dimexpr\mathdelimitedparameter\c!height+\mathdelimitedparameter\c!topoffset\relax - \s!depth \dimexpr\mathdelimitedparameter\c!depth+\mathdelimitedparameter\c!bottomoffset\relax - \s!source\numexpr\namedboxanchor{\mathdelimitedparameter\c!source}\relax - \s!style \normalmathstyle - \s!size \numexpr\namedboxanchor{\mathdelimitedparameter\c!size}\relax - \zerocount \mathdelimitedparameter\c!left - \zerocount \mathdelimitedparameter\c!right - \relax} - -\defcsname\??mathdelimitedalternative\v!default\endcsname % #body% - {\math_delimited_common} % {#body}} - -\defcsname\??mathdelimitedalternative\v!normal\endcsname#body% - {\edef\p_color{\mathdelimitedparameter\c!color}% - \ifempty\p_color - \math_delimited_common{#body}% {} really needed as \rootdelimited expands first - \else - \pushcolor[\p_color]% - \math_delimited_common - {\popcolor#body}% - \fi} - -\integerdef\delimitedrighthatuc \privatecharactercode{delimited right hat} -\integerdef\delimitedrighttildeuc \privatecharactercode{delimited right tilde} -\integerdef\delimitedrightcheckuc \privatecharactercode{delimited right check} - -% todo: some more .. are the offsets okay? - -\definemathdelimited - [fourier] - [\c!topoffset=.2\exheight, - \c!right=\delimitedrighthatuc] - -\definemathdelimited - [inversefourier] - [fourier] - [\c!right=\delimitedrightcheckuc] - -\definemathdelimited - [fuzzyfourier] - [fourier] - [\c!right=\delimitedrighttildeuc] - -% \definemathdelimited -% [bannuity] -% [%topoffset=.2\exheight, -% \c!strut=no, -% \c!rightmargin=.05\emwidth, -% \c!right=\delimitedrightanutityuc] - -% $ \autofences \fourier{(z+\frac12)} + \courier{(z+\frac12)} + \xourier{(z+\frac12)} $ - -\definemathdelimited [primed] [\c!right="2032,\c!size=1,\c!topoffset=.2\exheight] -\definemathdelimited [doubleprimed] [primed] [\c!right="2033] -\definemathdelimited [tripleprimed] [primed] [\c!right="2034] -\definemathdelimited [quadrupleprimed] [primed] [\c!right="2057] -\definemathdelimited [reverseprimed] [primed] [\c!right="2035] -\definemathdelimited [doublereverseprimed] [primed] [\c!right="2036] -\definemathdelimited [triplereverseprimed] [primed] [\c!right="2037] - -\protect \endinput diff --git a/tex/context/base/mkxl/math-dld.mklx b/tex/context/base/mkxl/math-dld.mklx new file mode 100644 index 000000000..33849e723 --- /dev/null +++ b/tex/context/base/mkxl/math-dld.mklx @@ -0,0 +1,127 @@ +%D \module +%D [ file=math-dld, +%D version=2022.07.29, +%D title=\CONTEXT\ Math Macros, +%D subtitle=delimiteds, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Math Macros / Delimited} + +\unprotect + +%D This is a variant on radicals but in the end it was better to just define a new +%D environment for this. This is because we don't have the rule and we want a +%D different control over the spacing. We also don't want the degree. + +% Todo: also add the mp plugin here but that more fun stuff for later (when we pick +% up school math). + +\installcorenamespace{mathdelimited} +\installcorenamespace{mathdelimitedalternative} + +\installcommandhandler \??mathdelimited {mathdelimited} \??mathdelimited + +\setupmathdelimited + [\c!alternative=\v!normal, + \c!mpoffset=.25\exheight, + \c!topoffset=\zeropoint, + \c!bottomoffset=\zeropoint, + \c!height=\zeropoint, + \c!depth=\zeropoint, + \c!strut=\v!height, + \c!source=\zerocount, + \c!size=\zerocount, + \c!left=\zerocount, + \c!right=\zerocount, + \c!leftmargin=\zeropoint, + \c!rightmargin=\zeropoint] + +\appendtoks + \frozen\protected\instance\edefcsname\currentmathdelimited\endcsname{\math_delimited_handle{\currentmathdelimited}} +\to \everydefinemathdelimited + +\mutable\lettonothing\currentmathdelimited + +\tolerant\protected\def\math_delimited_handle#tag#*[#settings]#:#body% + {\begingroup + \edef\currentmathdelimited{#tag}% + \setupcurrentmathdelimited[#settings]% + \math_delimited_alternative{% + \begincsname\??mathwhateverstrut\mathdelimitedparameter\c!strut\endcsname + \scratchdimen\mathdelimitedparameter\c!leftmargin \relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi + #body% + \scratchdimen\mathdelimitedparameter\c!rightmargin\relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi + }% + \endgroup} + +\def\math_delimited_alternative{\csname\??mathdelimitedalternative\mathdelimitedparameter\c!alternative\endcsname} + +\protected\def\math_delimited_common + {\Udelimited + \s!height\dimexpr\mathdelimitedparameter\c!height+\mathdelimitedparameter\c!topoffset\relax + \s!depth \dimexpr\mathdelimitedparameter\c!depth+\mathdelimitedparameter\c!bottomoffset\relax + \s!source\numexpr\namedboxanchor{\mathdelimitedparameter\c!source}\relax + \s!style \normalmathstyle + \s!size \numexpr\namedboxanchor{\mathdelimitedparameter\c!size}\relax + \zerocount \mathdelimitedparameter\c!left + \zerocount \mathdelimitedparameter\c!right + \relax} + +\defcsname\??mathdelimitedalternative\v!default\endcsname % #body% + {\math_delimited_common} % {#body}} + +\defcsname\??mathdelimitedalternative\v!normal\endcsname#body% + {\edef\p_color{\mathdelimitedparameter\c!color}% + \ifempty\p_color + \math_delimited_common{#body}% {} really needed as \rootdelimited expands first + \else + \pushcolor[\p_color]% + \math_delimited_common + {\popcolor#body}% + \fi} + +\integerdef\delimitedrighthatuc \privatecharactercode{delimited right hat} +\integerdef\delimitedrighttildeuc \privatecharactercode{delimited right tilde} +\integerdef\delimitedrightcheckuc \privatecharactercode{delimited right check} + +% todo: some more .. are the offsets okay? + +\definemathdelimited + [fourier] + [\c!topoffset=.2\exheight, + \c!right=\delimitedrighthatuc] + +\definemathdelimited + [inversefourier] + [fourier] + [\c!right=\delimitedrightcheckuc] + +\definemathdelimited + [fuzzyfourier] + [fourier] + [\c!right=\delimitedrighttildeuc] + +% \definemathdelimited +% [bannuity] +% [%topoffset=.2\exheight, +% \c!strut=no, +% \c!rightmargin=.05\emwidth, +% \c!right=\delimitedrightanutityuc] + +% $ \autofences \fourier{(z+\frac12)} + \courier{(z+\frac12)} + \xourier{(z+\frac12)} $ + +\definemathdelimited [primed] [\c!right="2032,\c!size=1,\c!topoffset=.2\exheight] +\definemathdelimited [doubleprimed] [primed] [\c!right="2033] +\definemathdelimited [tripleprimed] [primed] [\c!right="2034] +\definemathdelimited [quadrupleprimed] [primed] [\c!right="2057] +\definemathdelimited [reverseprimed] [primed] [\c!right="2035] +\definemathdelimited [doublereverseprimed] [primed] [\c!right="2036] +\definemathdelimited [triplereverseprimed] [primed] [\c!right="2037] + +\protect \endinput 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:" -\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 } 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} { % % ... .. % \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 -- cgit v1.2.3