summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua4
-rw-r--r--context/data/scite/context/scite-context-data-context.properties59
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties313
-rw-r--r--context/data/vscode/settings.json4
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex13
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-math.tex81
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex1
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex.tex4
-rw-r--r--doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex3
-rw-r--r--scripts/context/lua/mtx-vscode.lua22
-rw-r--r--scripts/context/lua/mtxrun.lua6
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua6
-rw-r--r--scripts/context/stubs/unix/mtxrun6
-rw-r--r--scripts/context/stubs/win64/mtxrun.lua6
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-de.mkii12
-rw-r--r--tex/context/base/mkii/mult-it.mkii4
-rw-r--r--tex/context/base/mkii/mult-ro.mkii4
-rw-r--r--tex/context/base/mkiv/char-def.lua1
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-prv.lua2
-rw-r--r--tex/context/base/mkiv/math-ini.mkiv18
-rw-r--r--tex/context/base/mkiv/mult-def.lua16
-rw-r--r--tex/context/base/mkiv/mult-low.lua4
-rw-r--r--tex/context/base/mkiv/mult-prm.lua33
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24618 -> 24651 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin259899 -> 260450 bytes
-rw-r--r--tex/context/base/mkiv/util-tab.lua22
-rw-r--r--tex/context/base/mkxl/catc-ini.mkxl28
-rw-r--r--tex/context/base/mkxl/char-prv.lmt34
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/core-con.mkxl2
-rw-r--r--tex/context/base/mkxl/driv-shp.lmt2
-rw-r--r--tex/context/base/mkxl/font-ots.lmt12
-rw-r--r--tex/context/base/mkxl/lang-mis.mkxl10
-rw-r--r--tex/context/base/mkxl/lpdf-lmt.lmt2
-rw-r--r--tex/context/base/mkxl/luat-log.lmt28
-rw-r--r--tex/context/base/mkxl/math-act.lmt50
-rw-r--r--tex/context/base/mkxl/math-ali.lmt327
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl55
-rw-r--r--tex/context/base/mkxl/math-def.mkxl10
-rw-r--r--tex/context/base/mkxl/math-del.mklx32
-rw-r--r--tex/context/base/mkxl/math-fen.mkxl23
-rw-r--r--tex/context/base/mkxl/math-ini.lmt1
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl367
-rw-r--r--tex/context/base/mkxl/math-noa.lmt689
-rw-r--r--tex/context/base/mkxl/math-rad.mklx13
-rw-r--r--tex/context/base/mkxl/node-nut.lmt5
-rw-r--r--tex/context/base/mkxl/node-res.lmt12
-rw-r--r--tex/context/base/mkxl/node-rul.mkxl6
-rw-r--r--tex/context/base/mkxl/node-shp.lmt8
-rw-r--r--tex/context/base/mkxl/pack-box.mkxl48
-rw-r--r--tex/context/base/mkxl/task-ini.lmt4
-rw-r--r--tex/context/base/mkxl/typo-cap.lmt2
-rw-r--r--tex/context/base/mkxl/typo-itc.lmt90
-rw-r--r--tex/context/base/mkxl/typo-rub.lmt202
-rw-r--r--tex/context/fonts/mkiv/pagella-math.lfg12
-rw-r--r--tex/context/interface/mkii/keys-de.xml12
-rw-r--r--tex/context/interface/mkii/keys-it.xml4
-rw-r--r--tex/context/interface/mkii/keys-ro.xml4
-rw-r--r--tex/context/modules/mkiv/s-abbreviations-logos.tex1
-rw-r--r--tex/context/modules/mkxl/m-gimmicks.mkxl25
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
67 files changed, 1844 insertions, 936 deletions
diff --git a/context/data/scite/context/lexers/data/scite-context-data-context.lua b/context/data/scite/context/lexers/data/scite-context-data-context.lua
index 1b9b127c0..f90de0fca 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", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "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", "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", "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", "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" },
+ ["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", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "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", "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", "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" },
} \ 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 0673639aa..4416d41dd 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,9 +1,9 @@
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", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbasedepth", "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", "Umathaccenttopshiftup", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathcode", "Umathcodenum", "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", "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", "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", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "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", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hmcode", "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", "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", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "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", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", "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", "unletfrozen", "unletprotected", "untraced", "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", "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", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "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", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "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", "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", "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", "aligncontent", "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", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "holdingmigrations", "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", "meaningasis", "meaningfull", "meaningless", "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", "overshoot", "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", "scaledfontdimen", "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", "srule", "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", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
+ ["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" },
["xetex"]={ "XeTeXversion" },
} \ No newline at end of file
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
index 2dcdb7966..f88a237f1 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -92,35 +92,36 @@ mathtextpunctuationcode mathimaginarycode mathdifferentialcode mathexponentialco
mathfunctioncode mathdigitcode mathalphacode mathboxcode mathchoicecode \
mathnothingcode mathlimopcode mathnolopcode mathunsetcode mathunspacedcode \
mathallcode mathfakecode mathunarycode mathmaybeordinarycode mathmayberelationcode \
-mathmaybebinarycode 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 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 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
+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 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 \
+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
keywordclass.context.helpers=\
startsetups stopsetups startxmlsetups stopxmlsetups \
diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties
index ca8ab34ff..3ea4d1b49 100644
--- a/context/data/scite/context/scite-context-data-tex.properties
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -17,43 +17,43 @@ unless widowpenalties
keywordclass.tex.luatex=\
Uabove Uabovewithdelims Uatop Uatopwithdelims \
-Uchar Udelcode Udelcodenum Udelimiter Udelimiterover \
+Uchar Udelcode Udelimited Udelimiter Udelimiterover \
Udelimiterunder Uhextensible Uleft Umathaccent Umathaccentbasedepth \
-Umathaccentbaseheight Umathaccentbottomovershoot Umathaccentbottomshiftdown Umathaccentsuperscriptdrop Umathaccentsuperscriptpercent \
-Umathaccenttopovershoot Umathaccenttopshiftup Umathaccentvariant Umathadapttoleft Umathadapttoright \
-Umathaxis Umathbotaccentvariant Umathchar Umathcharclass Umathchardef \
-Umathcharfam Umathcharnum Umathcharnumdef Umathcharslot Umathclass \
-Umathcode Umathcodenum 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 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 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 alignmark alignmentcellsource \
+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 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 allmathstyles \
allscriptscriptstyles allscriptstyles allsplitstyles alltextstyles alluncrampedstyles \
atendofgroup atendofgrouped attribute attributedef automaticdiscretionary \
@@ -71,67 +71,69 @@ etoksapp etokspre everybeforepar everymathatom everytab \
exceptionpenalty expand expandafterpars expandafterspaces expandcstoken \
expanded expandedafter expandedloop expandtoken explicitdiscretionary \
explicithyphenpenalty firstvalidlanguage flushmarks fontcharta fontid \
-fontmathcontrol fontspecdef fontspecid fontspecifiedsize fontspecscale \
-fontspecxscale fontspecyscale fonttextcontrol formatname frozen \
-futurecsname futuredef futureexpand futureexpandis futureexpandisap \
-gdefcsname gleaders glet gletcsname glettonothing \
-gluespecdef glyphdatafield glyphoptions glyphscale glyphscriptfield \
-glyphscriptscale glyphscriptscriptscale glyphstatefield glyphtextscale glyphxoffset \
-glyphxscale glyphxscaled glyphyoffset glyphyscale glyphyscaled \
-gtoksapp gtokspre hccode hjcode hmcode \
-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 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 \
-mugluespecdef mutable noaligned noatomruling noboundary \
-nohrule norelax normalizelinemode normalizeparmode nospaces \
-novrule numericscale numexpression orelse orphanpenalties \
-orphanpenalty orunless outputbox overloaded overloadmode \
-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 scaledinterwordshrink scaledinterwordspace scaledinterwordstretch scaledmathstyle \
-scaledslantperpoint scantextokens semiexpand semiexpanded semiprotected \
-setdefaultmathcodes setfontid setmathatomrule setmathdisplaypostpenalty setmathdisplayprepenalty \
-setmathignore setmathoptions setmathpostpenalty setmathprepenalty setmathspacing \
-shapingpenaltiesmode shapingpenalty snapshotpar 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 unletfrozen unletprotected untraced vpack \
-wordboundary wrapuppar xdefcsname xtoks xtoksapp \
-xtokspre
+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 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 \
+vpack wordboundary wrapuppar xdefcsname xtoks \
+xtoksapp xtokspre
keywordclass.tex.omega=\
Omegaminorversion Omegarevision Omegaversion
@@ -164,71 +166,68 @@ pdfxformmargin pdfxformname pdfxformresources pdfximage
keywordclass.tex.tex=\
- / above \
abovedisplayshortskip abovedisplayskip abovewithdelims accent adjdemerits \
-advance afterassignment aftergroup aligncontent 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 fontspecifiedname futurelet gdef global \
-globaldefs glyph halign hangafter hangindent \
-hbadness hbox hfil hfill hfilneg \
-hfuzz holdinginserts holdingmigrations 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 meaningasis meaningfull \
-meaningless 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 \
-overshoot 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 \
-scaledfontdimen 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 srule string \
+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 unhpack unkern unpenalty \
-unskip unvbox unvcopy unvpack uppercase \
-vadjust valign vbadness vbox vcenter \
-vfil vfill vfilneg vfuzz vrule \
-vsize vskip vsplit vss vtop \
-wd widowpenalty xdef xleaders xspaceskip \
-year
+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
keywordclass.tex.xetex=\
XeTeXversion
diff --git a/context/data/vscode/settings.json b/context/data/vscode/settings.json
index 89f43520e..43a96e07a 100644
--- a/context/data/vscode/settings.json
+++ b/context/data/vscode/settings.json
@@ -24,6 +24,8 @@
// "[context.pdf]": { "files.encoding": "cp1252"},
"terminal.integrated.fontSize": 10,
"terminal.integrated.rendererType": "canvas",
+ "editor.bracketPairColorization.enabled": false,
+ "editor.bracketPairColorization.independentColorPoolPerBracketType": false,
"workbench.colorCustomizations": {
"terminal.ansiBlack": "#000000",
"terminal.ansiWhite": "#FFFFFF",
@@ -40,6 +42,6 @@
"terminal.ansiBrightBlue": "#00007F",
"terminal.ansiBrightMagenta": "#7F007F",
"terminal.ansiBrightCyan": "#007F7F",
- "terminal.ansiBrightYellow": "#7F7F00",
+ "terminal.ansiBrightYellow": "#7F7F00"
}
}
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
index 5e96bddb5..0469d0cc8 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
@@ -227,7 +227,7 @@ state is with respect to the \quote {current page}. The possible values for the
\topicindex{callbacks+inserts}
-This callback is called when the pagebuilder adds an insert. There is not much
+This callback is called when the page builder adds an insert. There is not much
control over this mechanism but this callback permits some last minute
manipulations of the spacing before an insert, something that might be handy when
for instance multiple inserts (types) are appended in a row.
@@ -897,7 +897,7 @@ loading completely but will nevertheless generate errors.
\stopsubsection
-\startsubsection[title={\cbk {missing_character}}]
+\startsubsection[title={\cbk {missing_character} and \cbk {process_character}}]
\topicindex{callbacks+fonts}
\topicindex{callbacks+characters}
@@ -911,6 +911,15 @@ function(<node> glyph, <number> font, <number> character)
end
\stopfunctioncall
+The \type {process_character} callback is experimental and gets called when a
+glyph node is created and the callback field in a character is set.
+
+\startfunctioncall
+function(<number> font, <number> character)
+ -- no return value
+end
+\stopfunctioncall
+
\stopsubsection
\stopsection
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
index 1b26c1ad1..d7bd50eea 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
@@ -1035,6 +1035,7 @@ undefined will get presets, quite likely zero):
\NC \prm {Umathaccentbottomovershoot} \NC \NC \NR
\NC \prm {Umathaccentsuperscriptdrop} \NC \NC \NR
\NC \prm {Umathaccentsuperscriptpercent} \NC \NC \NR
+\NC \prm {Umathaccentextendmargin} \NC margins added to automatically extended accents \NC \NR
\NC \prm {Umathflattenedaccenttopshiftup} \NC the amount that a wide top accent is shifted up \NC \NR
\NC \prm {Umathflattenedaccentbottomshiftdown} \NC the amount that a wide bottom accent is shifted down \NC \NR
\NC \prm {Umathdelimiterpercent} \NC \NC \NR
@@ -1070,6 +1071,7 @@ defaults and tweak them in the goodie files:
\NC AccentBottomOvershoot \NC \prm {Umathaccentbottomovershoot} \NC 0 \NC \NR
\NC AccentSuperscriptDrop \NC \prm {Umathaccentsuperscriptdrop} \NC 0 \NC \NR
\NC AccentSuperscriptPercent \NC \prm {Umathaccentsuperscriptpercent} \NC 0 \NC \NR
+\NC AccentExtendMargin \NC \prm {Umathaccentextendmargin} \NC 0 \NC \NR
\NC FlattenedAccentTopShiftUp \NC \prm {Umathflattenedaccenttopshiftup} \NC undefined \NC \NR
\NC FlattenedAccentBottomShiftDown \NC \prm {Umathflattenedaccentbottomshiftdown} \NC undefined \NC \NR
\NC DelimiterPercent \NC \prm {Umathdelimiterpercent} \NC 0 \NC \NR
@@ -1795,16 +1797,27 @@ concerns the width.
\stopsubsection
-\startsubsection[title={Building radicals with \prm {Uradical} and \prm {Uroot}}]
+\startsubsection[title={Building radicals with \prm {Uradical}, \prm {Uroot} and \prm {Urooted}}]
\topicindex {math+radicals}
+\topicindex {math+roots}
The new primitive \prm {Uroot} allows the construction of a radical noad
including a degree field. Its syntax is an extension of \prm {Uradical}:
\starttyping
-\Uradical <fam integer> <char integer> <radicand>
-\Uroot <fam integer> <char integer> <degree> <radicand>
+\Uradical
+ <fam integer> <left char integer>
+ <content>
+\Uroot
+ <fam integer> <left char integer>
+ <degree>
+ <content>
+\Urooted
+ <fam integer> <left char integer>
+ <fam integer> <right char integer>
+ <degree>
+ <content>
\stoptyping
The placement of the degree is controlled by the math parameters \prm
@@ -1812,6 +1825,35 @@ The placement of the degree is controlled by the math parameters \prm
{Umathradicaldegreeraise}. The degree will be typeset in \prm
{scriptscriptstyle}.
+In \CONTEXT\ we use \prm {Urooted} to wrap something in an \quote {annuity}
+umbrella where there is a symbol at the end that has to behave like the radical
+does at the left end: adapt its size. In order to support variants this primitive
+supports two delimiters.
+
+{\em todo: mention optional keywords}
+
+\stopsubsection
+
+\startsubsection[title={Tight delimiters with \prm {Udelimited}}]
+
+\topicindex {math+radicals}
+\topicindex {math+delimiters}
+
+This new primitive is like \prm {Rooted} in that it takes two delimiters but it
+takes no degree and no rule is drawn.
+
+\starttyping
+\Udelimited
+ <fam integer> <left char integer>
+ <fam integer> <right char integer>
+ <content>
+\stoptyping
+
+In \CONTEXT\ we use it for fourier notations in which case there is only a right
+symbol (like a hat).
+
+{\em todo: mention optional keywords}
+
\stopsubsection
\startsubsection[title={Super- and subscripts}]
@@ -2845,6 +2887,39 @@ You'll notice that we apply more severe penalties at the edges:
\stopsection
+\startsubsection[title={\prm {Umathdiscretionary} and \prm {hmcode}}]
+
+\topicindex {math+discretionaries}
+
+The usual \prm {discretionary} command is supported in math mode but it has the
+disadvantage that one needs to make sure that the content triplet does the math
+right (especially the style). This command takes an optional class specification.
+
+\starttyping
+\Umathdiscretionary [class n] {+} {+} {+}
+\stoptyping
+
+It uses the same logic as \prm {mathchoice} but in this case we handle three
+snippets in the current style.
+
+A fully automatic mechanism kicks in when a character has a \prm {hmcode} set:
+
+\starttabulate[|c|l|p|]
+\DB bit \BC meaning \BC explanation \NC \NR
+\TB
+\NC 1 \NC normal \NC a discretionary is created with the same components \NC \NR
+\NC 2 \NC italic \NC following italic correction is kept with the component \NC \NR
+\LL
+\stoptabulate
+
+So we can say:
+
+\starttyping
+\hmcode `+ 3
+\stoptyping
+
+When the \type {italic} bit is set italic correction is kept at a linebreak.
+
\stopchapter
\stopcomponent
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
index 3fe330295..c3ac0a294 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
@@ -2207,6 +2207,7 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility.
\supported {getattributelist} \nop \yes \relax
\supported {getboth} \nop \yes \relax
\supported {getbox} \nop \yes \relax
+\supported {getclass} \nop \yes \relax
\supported {getchar} \nop \yes \relax
\supported {getdata} \nop \yes \relax
\supported {getdepth} \nop \yes \relax
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex
index fcedbc6e1..aead9b304 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex
@@ -1,5 +1,7 @@
% language=us runpath=texruns:manuals/luametatex
+% \enabledirectives[backend.pdf.inmemory]
+
% ------------------------ ------ ------------------ ------------------------
% 2019-12-17 32bit 64bit 2020-01-10 32bit 64bit 2020-11-30 32bit 64bit
% ------------------------ ------------------------ ------------------------
@@ -105,7 +107,7 @@
% \enableexperiments [tabulateusesize]
% \enableexperiments [tabulatesparseskips]
-\linebuffering
+\ifdefined\linebuffering \linebuffering \fi
\enableexperiments[fonts.compact]
% \enabledirectives[fonts.injections.method=advance] % tricky ... not all xoffsets are advance robust
diff --git a/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex b/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex
index 12852ba13..4cdb72950 100644
--- a/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex
+++ b/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex
@@ -183,7 +183,8 @@ hooks into layers is shown:
{\DemoAnchor{#1}{darkred} {#2}{left,top}%
\DemoAnchor{#1}{darkblue} {#2}{left,bottom}%
\DemoAnchor{#1}{darkgreen} {#2}{right,bottom}%
- \DemoAnchor{#1}{darkyellow}{#2}{right,top}}%
+ \DemoAnchor{#1}{darkyellow}{#2}{right,top}%
+ }%
\startsetups framed:demo
\DemoAnchorX{framed:background}{left,top}%
diff --git a/scripts/context/lua/mtx-vscode.lua b/scripts/context/lua/mtx-vscode.lua
index eb1acf53d..0fd5fd428 100644
--- a/scripts/context/lua/mtx-vscode.lua
+++ b/scripts/context/lua/mtx-vscode.lua
@@ -285,6 +285,20 @@ function scripts.vscode.generate(targetpath)
end
+ -- local function registersettings()
+ --
+ -- local filename = "./settings.json"
+ --
+ -- local data = {
+ -- ["editor.bracketPairColorization.enabled"] = false,
+ -- ["editor.bracketPairColorization.independentColorPoolPerBracketType"] = false,
+ -- }
+ --
+ -- report("saving settings %a",filename)
+ --
+ -- io.savedata(filename,data)
+ -- end
+
local function registertheme(theme)
local category = theme.category
@@ -301,6 +315,7 @@ function scripts.vscode.generate(targetpath)
["name"] = category,
["colors"] = theme.colors,
["tokenColors"] = theme.styles,
+ ["settings"] = theme.settings,
}
report("saving theme %a in %a",category,filename)
@@ -360,11 +375,13 @@ function scripts.vscode.generate(targetpath)
displayName = "ConTeXt",
description = "ConTeXt Syntax Highlighting",
publisher = "ConTeXt Development Team",
+ publisher = "cdt",
version = "1.0.0",
engines = {
vscode = "*"
},
categories = {
+ "Programming Languages",
"Lexers",
"Syntaxes"
},
@@ -597,6 +614,8 @@ function scripts.vscode.generate(targetpath)
styles = styles,
}
+ -- registersettings()
+
end
do
@@ -3457,7 +3476,8 @@ function scripts.vscode.start()
if path then
local codecmd = environment.arguments.program or "code" -- can be codium
-- local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --ignore-gpu-blacklist --extensions-dir "' .. path .. '" --install-extension context'
- local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --install-extension context'
+ -- local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --install-extension context'
+ local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --verbose --force --install-extension cdt.context'
report("running command: %s",command)
os.execute(command)
end
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 4df6d3f5b..e1f2df1bc 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-tab"] = package.loaded["util-tab"] or true
--- original size: 33507, stripped down to: 18420
+-- original size: 34149, stripped down to: 18420
if not modules then modules={} end modules ['util-tab']={
version=1.001,
@@ -26062,8 +26062,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1033876
--- stripped bytes : 406975
+-- original bytes : 1034518
+-- stripped bytes : 407617
-- end library merge
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 4df6d3f5b..e1f2df1bc 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-tab"] = package.loaded["util-tab"] or true
--- original size: 33507, stripped down to: 18420
+-- original size: 34149, stripped down to: 18420
if not modules then modules={} end modules ['util-tab']={
version=1.001,
@@ -26062,8 +26062,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1033876
--- stripped bytes : 406975
+-- original bytes : 1034518
+-- stripped bytes : 407617
-- end library merge
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 4df6d3f5b..e1f2df1bc 100644
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-tab"] = package.loaded["util-tab"] or true
--- original size: 33507, stripped down to: 18420
+-- original size: 34149, stripped down to: 18420
if not modules then modules={} end modules ['util-tab']={
version=1.001,
@@ -26062,8 +26062,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1033876
--- stripped bytes : 406975
+-- original bytes : 1034518
+-- stripped bytes : 407617
-- end library merge
diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua
index 4df6d3f5b..e1f2df1bc 100644
--- a/scripts/context/stubs/win64/mtxrun.lua
+++ b/scripts/context/stubs/win64/mtxrun.lua
@@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-tab"] = package.loaded["util-tab"] or true
--- original size: 33507, stripped down to: 18420
+-- original size: 34149, stripped down to: 18420
if not modules then modules={} end modules ['util-tab']={
version=1.001,
@@ -26062,8 +26062,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1033876
--- stripped bytes : 406975
+-- original bytes : 1034518
+-- stripped bytes : 407617
-- end library merge
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 8b4de2c7c..82a268348 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.08.25 19:18}
+\newcontextversion{2022.09.10 02:42}
%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 376318c3d..f2ca9aba1 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.08.25 19:18}
+\edef\contextversion{2022.09.10 02:42}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii
index 8537c66cd..cd526730e 100644
--- a/tex/context/base/mkii/mult-de.mkii
+++ b/tex/context/base/mkii/mult-de.mkii
@@ -93,7 +93,6 @@
\setinterfacevariable{author}{autor}
\setinterfacevariable{auto}{auto}
\setinterfacevariable{autointro}{autointro}
-\setinterfacevariable{autopunctuation}{autopunctuation}
\setinterfacevariable{back}{zurueck}
\setinterfacevariable{background}{hintergrund}
\setinterfacevariable{backmatter}{epiloge}
@@ -680,6 +679,9 @@
\setinterfaceconstant{autofile}{autofile}
\setinterfaceconstant{autofocus}{autofocus}
\setinterfaceconstant{autohang}{autohang}
+\setinterfaceconstant{autonumbers}{autonumbers}
+\setinterfaceconstant{autopunctuation}{autopunctuation}
+\setinterfaceconstant{autospacing}{autospacing}
\setinterfaceconstant{autostrut}{autostrut}
\setinterfaceconstant{autowidth}{autobreite}
\setinterfaceconstant{availableheight}{availableheight}
@@ -870,6 +872,7 @@
\setinterfaceconstant{frameradius}{rahmenradius}
\setinterfaceconstant{frames}{umrahmen}
\setinterfaceconstant{freeregion}{freeregion}
+\setinterfaceconstant{freezespacing}{freezespacing}
\setinterfaceconstant{from}{von}
\setinterfaceconstant{functioncolor}{functioncolor}
\setinterfaceconstant{functionstyle}{functionstyle}
@@ -950,6 +953,7 @@
\setinterfaceconstant{lastpubsep}{lastpubsep}
\setinterfaceconstant{layout}{layout}
\setinterfaceconstant{left}{links}
+\setinterfaceconstant{leftclass}{leftclass}
\setinterfaceconstant{leftcolor}{linkerfarbe}
\setinterfaceconstant{leftcompoundhyphen}{leftcompoundhyphen}
\setinterfaceconstant{leftedge}{linkekante}
@@ -1008,6 +1012,7 @@
\setinterfaceconstant{menu}{menue}
\setinterfaceconstant{method}{methode}
\setinterfaceconstant{middle}{mittig}
+\setinterfaceconstant{middleclass}{middleclass}
\setinterfaceconstant{middlecolor}{middlecolor}
\setinterfaceconstant{middlecommand}{middlecommand}
\setinterfaceconstant{middlesource}{middlesource}
@@ -1054,6 +1059,8 @@
\setinterfaceconstant{numberconversionset}{numberconversionset}
\setinterfaceconstant{numberdistance}{numberdistance}
\setinterfaceconstant{numbering}{nummerierung}
+\setinterfaceconstant{numberlocation}{numberlocation}
+\setinterfaceconstant{numbermethod}{numbermethod}
\setinterfaceconstant{numberorder}{numberorder}
\setinterfaceconstant{numberprefix}{numberprefix}
\setinterfaceconstant{numbersegments}{numbersegments}
@@ -1064,6 +1071,7 @@
\setinterfaceconstant{numberstopper}{numberstopper}
\setinterfaceconstant{numberstrut}{numberstrut}
\setinterfaceconstant{numberstyle}{nummernstil}
+\setinterfaceconstant{numberthreshold}{numberthreshold}
\setinterfaceconstant{numberwidth}{numberwidth}
\setinterfaceconstant{nx}{nx}
\setinterfaceconstant{ny}{ny}
@@ -1117,6 +1125,7 @@
\setinterfaceconstant{palet}{palette}
\setinterfaceconstant{paper}{papier}
\setinterfaceconstant{paragraph}{absatz}
+\setinterfaceconstant{penalties}{penalties}
\setinterfaceconstant{period}{period}
\setinterfaceconstant{place}{platziere}
\setinterfaceconstant{placehead}{setzekopf}
@@ -1170,6 +1179,7 @@
\setinterfaceconstant{reverse}{reverse}
\setinterfaceconstant{right}{rechts}
\setinterfaceconstant{rightchars}{rightchars}
+\setinterfaceconstant{rightclass}{rightclass}
\setinterfaceconstant{rightcolor}{rechterfarbe}
\setinterfaceconstant{rightcompoundhyphen}{rightcompoundhyphen}
\setinterfaceconstant{rightedge}{rechtekante}
diff --git a/tex/context/base/mkii/mult-it.mkii b/tex/context/base/mkii/mult-it.mkii
index 6541e8db4..18840146a 100644
--- a/tex/context/base/mkii/mult-it.mkii
+++ b/tex/context/base/mkii/mult-it.mkii
@@ -93,7 +93,6 @@
\setinterfacevariable{author}{autore}
\setinterfacevariable{auto}{auto}
\setinterfacevariable{autointro}{autointro}
-\setinterfacevariable{autopunctuation}{autopunctuation}
\setinterfacevariable{back}{dietro}
\setinterfacevariable{background}{sfondo}
\setinterfacevariable{backmatter}{postambolo}
@@ -680,6 +679,9 @@
\setinterfaceconstant{autofile}{autofile}
\setinterfaceconstant{autofocus}{autofocus}
\setinterfaceconstant{autohang}{autohang}
+\setinterfaceconstant{autonumbers}{autonumbers}
+\setinterfaceconstant{autopunctuation}{autopunctuation}
+\setinterfaceconstant{autospacing}{autospacing}
\setinterfaceconstant{autostrut}{autostrut}
\setinterfaceconstant{autowidth}{autoampiezza}
\setinterfaceconstant{availableheight}{availableheight}
diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii
index 79c0349ea..e35ebac50 100644
--- a/tex/context/base/mkii/mult-ro.mkii
+++ b/tex/context/base/mkii/mult-ro.mkii
@@ -93,7 +93,6 @@
\setinterfacevariable{author}{autor}
\setinterfacevariable{auto}{auto}
\setinterfacevariable{autointro}{autointro}
-\setinterfacevariable{autopunctuation}{autopunctuation}
\setinterfacevariable{back}{inapot}
\setinterfacevariable{background}{fundal}
\setinterfacevariable{backmatter}{epilogul}
@@ -680,6 +679,9 @@
\setinterfaceconstant{autofile}{autofile}
\setinterfaceconstant{autofocus}{autofocus}
\setinterfaceconstant{autohang}{autohang}
+\setinterfaceconstant{autonumbers}{autonumbers}
+\setinterfaceconstant{autopunctuation}{autopunctuation}
+\setinterfaceconstant{autospacing}{autospacing}
\setinterfaceconstant{autostrut}{autostrut}
\setinterfaceconstant{autowidth}{autolatime}
\setinterfaceconstant{availableheight}{availableheight}
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index 5325dc06e..1701aeb3b 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -655,6 +655,7 @@ characters.data={
direction="cs",
linebreak="is",
mathclass="relation",
+--mathsymbol=0x2236,
unicodeslot=0x3A,
},
{
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 49e307f12..3ce44cab3 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.08.25 19:18}
+\newcontextversion{2022.09.10 02:42}
%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 edc4989ad..12f23d73f 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.08.25 19:18}
+\edef\contextversion{2022.09.10 02:42}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-prv.lua b/tex/context/base/mkiv/font-prv.lua
index 15057e255..e613eb7d3 100644
--- a/tex/context/base/mkiv/font-prv.lua
+++ b/tex/context/base/mkiv/font-prv.lua
@@ -39,6 +39,8 @@ local sharedprivates = setmetatableindex(function(t,k)
return v
end)
+fonts.helpers.sharedprivates = sharedprivates
+
function helpers.addprivate(tfmdata,name,characterdata)
local properties = tfmdata.properties
local characters = tfmdata.characters
diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv
index 80a9f1412..94b50c12a 100644
--- a/tex/context/base/mkiv/math-ini.mkiv
+++ b/tex/context/base/mkiv/math-ini.mkiv
@@ -1586,11 +1586,11 @@
% \unexpanded\def\disablemathpunctuation{\setfalse\automathpunctuation}
%
% \appendtoks
-% \doifelse{\mathematicsparameter\v!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation
+% \doifelse{\mathematicsparameter\c!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation
% \to \everyswitchmathematics
%
% \setupmathematics
-% [\v!autopunctuation=\v!no]
+% [\c!autopunctuation=\v!no]
%
% \def\math_punctuation_next{\ifx\nexttoken\blankspace\signalcharacter\fi}
%
@@ -1676,9 +1676,9 @@
\let\math_punctuation_yes_period \math_punctuation_nop_period
\let\math_punctuation_yes_semicolon\math_punctuation_all_semicolon
-\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup}
-\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup}
-\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup}
+\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup}
+\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup}
+\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup}
\installcorenamespace {mathautopunctuation}
@@ -1745,12 +1745,12 @@
\mathcode\c_math_comma \c_math_special
\mathcode\c_math_period \c_math_special
\mathcode\c_math_semicolon\c_math_special
- \begincsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname
+ \begincsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname
\to \everymathematics
\appendtoks
- \ifcsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname \else
- \letmathematicsparameter\v!autopunctuation\v!no
+ \ifcsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \else
+ \letmathematicsparameter\c!autopunctuation\v!no
\fi
\to \everysetupmathematics
@@ -1758,7 +1758,7 @@
\def\disablemathpunctuation{\csname\??mathautopunctuation\v!yes\endcsname}
\setupmathematics
- [\v!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon
+ [\c!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon
%D The consequences of setting this are as follows:
%D
diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua
index 56c7944f4..ca465b8c8 100644
--- a/tex/context/base/mkiv/mult-def.lua
+++ b/tex/context/base/mkiv/mult-def.lua
@@ -7628,6 +7628,18 @@ return {
["pe"]="عرض‌خودکار",
["ro"]="autolatime",
},
+ ["autopunctuation"]={
+ ["en"]="autopunctuation",
+ ["fr"]="autoponctuation",
+ },
+ ["autospacing"]={
+ ["en"]="autospacing",
+ ["fr"]="autospacing",
+ },
+ ["autonumbers"]={
+ ["en"]="autonumbers",
+ ["fr"]="autonumbers",
+ },
["availableheight"]={
["en"]="availableheight",
["fr"]="hauteurdisponible",
@@ -14768,10 +14780,6 @@ return {
["pe"]="پیشگفتارخودکار",
["ro"]="autointro",
},
- ["autopunctuation"]={
- ["en"]="autopunctuation",
- ["fr"]="autoponctuation",
- },
["back"]={
["cs"]="zpet",
["de"]="zurueck",
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index 62af2940a..e8ce240f0 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -173,7 +173,7 @@ return {
-- "mathtopaccentcode", "mathbottomaccentcode", "mathdelimitercode", "mathrootcode", "mathprintcode", --
"mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode",
"mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode",
- "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode",
+ "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", "mathnumbergroupcode",
--
"constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument",
--
@@ -216,7 +216,7 @@ return {
"checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode",
"flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode",
"carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode",
- "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode",
+ "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "removeitaliccorrectionclassoptioncode",
--
"noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode",
"noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index b0ba0dda7..546b93af3 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -69,7 +69,7 @@ return {
"Uatopwithdelims",
"Uchar",
"Udelcode",
- "Udelcodenum",
+ "Udelimited",
"Udelimiter",
"Udelimiterover",
"Udelimiterunder",
@@ -80,6 +80,7 @@ return {
"Umathaccentbaseheight",
"Umathaccentbottomovershoot",
"Umathaccentbottomshiftdown",
+ "Umathaccentextendmargin",
"Umathaccentsuperscriptdrop",
"Umathaccentsuperscriptpercent",
"Umathaccenttopovershoot",
@@ -88,17 +89,14 @@ return {
"Umathadapttoleft",
"Umathadapttoright",
"Umathaxis",
- "Umathbotaccentvariant",
+ "Umathbottomaccentvariant",
"Umathchar",
"Umathcharclass",
"Umathchardef",
"Umathcharfam",
- "Umathcharnum",
- "Umathcharnumdef",
"Umathcharslot",
"Umathclass",
"Umathcode",
- "Umathcodenum",
"Umathconnectoroverlapmin",
"Umathdegreevariant",
"Umathdelimiterovervariant",
@@ -221,6 +219,7 @@ return {
"Uradical",
"Uright",
"Uroot",
+ "Urooted",
"Ushiftedsubprescript",
"Ushiftedsubscript",
"Ushiftedsuperprescript",
@@ -250,6 +249,7 @@ return {
"afterassigned",
"aftergrouped",
"aliased",
+ "aligncontent",
"alignmark",
"alignmentcellsource",
"alignmentwrapsource",
@@ -340,6 +340,7 @@ return {
"fontmathcontrol",
"fontspecdef",
"fontspecid",
+ "fontspecifiedname",
"fontspecifiedsize",
"fontspecscale",
"fontspecxscale",
@@ -358,6 +359,7 @@ return {
"gletcsname",
"glettonothing",
"gluespecdef",
+ "glyph",
"glyphdatafield",
"glyphoptions",
"glyphscale",
@@ -377,6 +379,7 @@ return {
"hccode",
"hjcode",
"hmcode",
+ "holdingmigrations",
"hpack",
"hyphenationmin",
"hyphenationmode",
@@ -522,6 +525,9 @@ return {
"mathsurroundmode",
"mathsurroundskip",
"maththreshold",
+ "meaningasis",
+ "meaningfull",
+ "meaningless",
"mugluespecdef",
"mutable",
"noaligned",
@@ -542,6 +548,7 @@ return {
"outputbox",
"overloaded",
"overloadmode",
+ "overshoot",
"pageboundary",
"pageextragoal",
"pagevsize",
@@ -573,6 +580,7 @@ return {
"scaledemwidth",
"scaledexheight",
"scaledextraspace",
+ "scaledfontdimen",
"scaledinterwordshrink",
"scaledinterwordspace",
"scaledinterwordstretch",
@@ -595,6 +603,7 @@ return {
"shapingpenaltiesmode",
"shapingpenalty",
"snapshotpar",
+ "srule",
"supmarkmode",
"swapcsvalues",
"tabsize",
@@ -628,9 +637,11 @@ return {
"uleaders",
"undent",
"unexpandedloop",
+ "unhpack",
"unletfrozen",
"unletprotected",
"untraced",
+ "unvpack",
"vpack",
"wordboundary",
"wrapuppar",
@@ -772,7 +783,6 @@ return {
"advance",
"afterassignment",
"aftergroup",
- "aligncontent",
"atop",
"atopwithdelims",
"badness",
@@ -850,12 +860,10 @@ return {
"font",
"fontdimen",
"fontname",
- "fontspecifiedname",
"futurelet",
"gdef",
"global",
"globaldefs",
- "glyph",
"halign",
"hangafter",
"hangindent",
@@ -866,7 +874,6 @@ return {
"hfilneg",
"hfuzz",
"holdinginserts",
- "holdingmigrations",
"hrule",
"hsize",
"hskip",
@@ -937,9 +944,6 @@ return {
"maxdeadcycles",
"maxdepth",
"meaning",
- "meaningasis",
- "meaningfull",
- "meaningless",
"medmuskip",
"message",
"middle",
@@ -969,7 +973,6 @@ return {
"over",
"overfullrule",
"overline",
- "overshoot",
"overwithdelims",
"pagedepth",
"pagefilllstretch",
@@ -1004,7 +1007,6 @@ return {
"righthyphenmin",
"rightskip",
"romannumeral",
- "scaledfontdimen",
"scriptfont",
"scriptscriptfont",
"scriptscriptstyle",
@@ -1032,7 +1034,6 @@ return {
"splitfirstmark",
"splitmaxdepth",
"splittopskip",
- "srule",
"string",
"tabskip",
"textfont",
@@ -1061,13 +1062,11 @@ return {
"underline",
"unhbox",
"unhcopy",
- "unhpack",
"unkern",
"unpenalty",
"unskip",
"unvbox",
"unvcopy",
- "unvpack",
"uppercase",
"vadjust",
"valign",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index dc2b82185..3e3adfbe6 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index b92cffbec..28adce871 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/util-tab.lua b/tex/context/base/mkiv/util-tab.lua
index 7f372b6b5..64fa1af4f 100644
--- a/tex/context/base/mkiv/util-tab.lua
+++ b/tex/context/base/mkiv/util-tab.lua
@@ -996,3 +996,25 @@ function combine(target,source)
end
table.combine = combine
+
+-- If needed we can add something (some discussion on the list but I'm not sure if
+-- it makes sense because merging such mixed tables is quite unusual.
+--
+-- function table.himerged(...)
+-- local result = { }
+-- local r = 0
+-- for i=1,select("#",...) do
+-- local s = select(i,...)
+-- if s then
+-- for k, v in next, s do
+-- if type(k) == "number" then
+-- r = r + 1
+-- result[r] = v
+-- else
+-- result[k] = v
+-- end
+-- end
+-- end
+-- end
+-- return result
+-- end
diff --git a/tex/context/base/mkxl/catc-ini.mkxl b/tex/context/base/mkxl/catc-ini.mkxl
index 5b33db981..4376acd83 100644
--- a/tex/context/base/mkxl/catc-ini.mkxl
+++ b/tex/context/base/mkxl/catc-ini.mkxl
@@ -165,17 +165,29 @@
%D This can be used when a direct definition has been done and the selector has been
%D lost. A problem is that \type {\next} needs to be unique (as it gets bound) (still?).
+% \def\syst_catcodes_reinstate_normal
+% {\begingroup
+% \edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
+% \global\letcharcode\c_syst_catcodes_b\temp
+% \endgroup}
+%
+% \def\syst_catcodes_reinstate_unexpanded
+% {\begingroup
+% \protected\edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
+% \global\letcharcode\c_syst_catcodes_b\temp
+% \endgroup}
+
+% I really need to get rid of this ...
+
+\let\m_syst_catcodes_temp\relax
+
\def\syst_catcodes_reinstate_normal
- {\begingroup
- \edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
- \global\letcharcode\c_syst_catcodes_b\temp
- \endgroup}
+ {\edef\m_syst_catcodes_temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
+ \letcharcode\c_syst_catcodes_b\m_syst_catcodes_temp}
\def\syst_catcodes_reinstate_unexpanded
- {\begingroup
- \protected\edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
- \global\letcharcode\c_syst_catcodes_b\temp
- \endgroup}
+ {\protected\edef\m_syst_catcodes_temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}%
+ \letcharcode\c_syst_catcodes_b\m_syst_catcodes_temp}
\newconstant\defaultcatcodetable
diff --git a/tex/context/base/mkxl/char-prv.lmt b/tex/context/base/mkxl/char-prv.lmt
index bb0377a75..07a72d53e 100644
--- a/tex/context/base/mkxl/char-prv.lmt
+++ b/tex/context/base/mkxl/char-prv.lmt
@@ -208,40 +208,6 @@ characters.private={
unicodeslot=0xFE937,
},
--
- [0xFE942]={
- description="COMBINING REVERSE ANNUITY SYMBOL BASE",
- unicodeslot=0xFE942,
- },
- [0xFE943]={
- description="COMBINING REVERSE ANNUITY SYMBOL FILL",
- unicodeslot=0xFE942,
- },
- --
- [0xFE944]={
- description="COMBINING FOURIER CIRCUMFLEX BASE",
- unicodeslot=0xFE942,
- },
- [0xFE945]={
- description="COMBINING FOURIER CIRCUMFLEX FILL",
- unicodeslot=0xFE942,
- },
- [0xFE946]={
- description="COMBINING FOURIER TILDE BASE",
- unicodeslot=0xFE942,
- },
- [0xFE947]={
- description="COMBINING FOURIER TILDE FILL",
- unicodeslot=0xFE942,
- },
- [0xFE948]={
- description="COMBINING FOURIER CARON BASE",
- unicodeslot=0xFE942,
- },
- [0xFE949]={
- description="COMBINING FOURIER CARON FILL",
- unicodeslot=0xFE942,
- },
- --
[0xFE957]={ -- vfu
description="SMASHED PRIME 0x02057",
unicodeslot=0xFE957,
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 44470eaf7..a9631b7bb 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.08.25 19:18}
+\newcontextversion{2022.09.10 02:42}
%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 8baf5a786..4ec59e791 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.08.25 19:18}
+\immutable\edef\contextversion{2022.09.10 02:42}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/core-con.mkxl b/tex/context/base/mkxl/core-con.mkxl
index 645eb2308..9e2b05778 100644
--- a/tex/context/base/mkxl/core-con.mkxl
+++ b/tex/context/base/mkxl/core-con.mkxl
@@ -552,7 +552,7 @@
\installcorenamespace {conversionwords}
%D It might be better to move more to \LUA\ as we also need conversion there and
-%D doublicating logic doesn't make things cleaner. It means that all conversions
+%D duplicating logic doesn't make things cleaner. It means that all conversions
%D will get a language argument too. However, we permit definitions at the \TEX\ end
%D so we have to provide some hybrid method.
diff --git a/tex/context/base/mkxl/driv-shp.lmt b/tex/context/base/mkxl/driv-shp.lmt
index 9a72d834d..69adc09a9 100644
--- a/tex/context/base/mkxl/driv-shp.lmt
+++ b/tex/context/base/mkxl/driv-shp.lmt
@@ -990,6 +990,8 @@ local gluewidth = effectiveglue(current,this_box,true)
local usedorientation = false
if hasanchor then
anchor, source, target = getanchors(current)
+-- print(getanchors(current))
+-- if not anchor then anchor = 0 end
end
if hasorientation then
local orientation, xoffset, yoffset, woffset, hoffset, doffset = getorientation(current)
diff --git a/tex/context/base/mkxl/font-ots.lmt b/tex/context/base/mkxl/font-ots.lmt
index 3b7e6dbc3..2ab52a35a 100644
--- a/tex/context/base/mkxl/font-ots.lmt
+++ b/tex/context/base/mkxl/font-ots.lmt
@@ -435,7 +435,7 @@ end
-- However, for arabic we need to keep them around for the sake of mark placement
-- and indices.
-local function flattendisk(head,disc)
+local function flattendisk(head,disc) -- happen seldom, otherwise can be a helper
local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
local prev, next = getboth(disc)
local ishead = head == disc
@@ -472,7 +472,7 @@ local function flattendisk(head,disc)
end
end
-local function appenddisc(disc,list)
+local function appenddisc(disc,list) -- happen seldom, otherwise can be a helper
local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true)
local posthead = list
local replacehead = copynodelist(list)
@@ -3955,19 +3955,11 @@ do
local lookupcache = step.coverage
while start do
local nxt, char, id = isnextchar(start,font,dynamic,state) -- we can move the data/state checks here
--- if forcetestrun and sequence.name == "s_s_7" then
--- if nuts.getid(start) == nodecodes.glyph then
--- print("C F D S",start,char,font,dynamic,state,nuts,getstate(start))
--- end
--- end
if char then
if skiphash and skiphash[char] then -- we never needed it here but let's try
start = nxt
else
local lookupmatch = lookupcache[char]
--- if forcetestrun and sequence.name == "s_s_7" then
--- print(lookupmatch)
--- end
if lookupmatch then
currentscale, currentxscale, currentyscale = getscales(start)
local ok, df
diff --git a/tex/context/base/mkxl/lang-mis.mkxl b/tex/context/base/mkxl/lang-mis.mkxl
index 5aa40537c..48c2fa1cd 100644
--- a/tex/context/base/mkxl/lang-mis.mkxl
+++ b/tex/context/base/mkxl/lang-mis.mkxl
@@ -220,7 +220,7 @@
\fi
\endcsname}
-\setvalue{\??discretionarymode n}#1%
+\defcsname\??discretionarymode n\endcsname#1%
{\detokenize{#1}}
%D The macro \type{\lang_discretionaries_check_before} takes care of loners like
@@ -257,9 +257,9 @@
\ifx :\nexttoken \settrue \punctafterdiscretionary \orelse
\ifx ;\nexttoken \settrue \punctafterdiscretionary \fi}
-\letvalue{\??discretionarymode m}\handlemathmodediscretionary
+\letcsname\??discretionarymode m\endcsname\handlemathmodediscretionary
-\setvalue{\??discretionarymode t}#1%
+\defcsname\??discretionarymode t\endcsname#1%
{\bgroup
\let\nextnextnext\egroup
\def\next##1#1%
@@ -349,7 +349,7 @@
\fi
\endcsname}
-\setuvalue{\??discretionarymode d}#1%
+\protected\defcsname\??discretionarymode d\endcsname#1%
{\edef\lang_discretionaries_token{\detokenize{#1}}%
\let\lang_discretionaries_action\compoundhyphen
\ifcsname\??discretionaryaction\lang_discretionaries_token\endcsname
@@ -358,7 +358,7 @@
\expandafter\indirectdiscretionary
\fi{#1}}
-\setuvalue{\??discretionarymode i}#1%
+\protected\defcsname\??discretionarymode i\endcsname#1%
%{\prewordbreak\discretionary{\hbox{#1}}{}{\hbox{#1}}\postwordbreak}
{\wordboundary\discretionary{\hbox{#1}}{}{\hbox{#1}}\wordboundary}
%{\discretionary options \plusthree{\hbox{#1}}{}{\hbox{#1}}}
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index 76867974a..bf1142119 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -2905,6 +2905,8 @@ local openfile, closefile do
local close = false
local update = false
+ directives.enable("backend.pdf.inmemory", function(v) inmemory = true end)
+
-- local banner <const> = "%\xCC\xD5\xC1\xD4\xC5\xD8\xD0\xC4\xC6\010" -- LUATEXPDF (+128)
local banner <const> = "%\xC3\xCF\xCE\xD4\xC5\xD8\xD4\xD0\xC4\xC6\010" -- CONTEXTPDF (+128)
diff --git a/tex/context/base/mkxl/luat-log.lmt b/tex/context/base/mkxl/luat-log.lmt
index dd6c1b990..0c2405b75 100644
--- a/tex/context/base/mkxl/luat-log.lmt
+++ b/tex/context/base/mkxl/luat-log.lmt
@@ -630,29 +630,35 @@ end
-- logs.errors=characters
-- logs.errors=missing
-- logs.errors=*
+-- logs.quitonerror=missing modules
do
local finalactions = { }
local fatalerrors = { }
local possiblefatal = { }
+ local quitonerror = { }
local loggingerrors = false
function logs.loggingerrors()
return loggingerrors
end
- directives.register("logs.errors",function(v)
+ local function register(v)
loggingerrors = v
if type(v) == "string" then
- fatalerrors = settings_to_hash(v)
- for k, v in next, fatalerrors do
- fatalerrors[k] = string.topattern(k)
+ local target = settings_to_hash(v)
+ for k, v in next, target do
+ target[k] = string.topattern(k)
end
+ return target
else
- fatalerrors = { }
+ return { }
end
- end)
+ end
+
+ directives.register("logs.errors", function(v) fatalerrors = register(v) end)
+ directives.register("logs.quitonerror",function(v) quitonerror = register(v) end)
function logs.registerfinalactions(...)
insert(finalactions,...) -- so we can force an order if needed
@@ -662,6 +668,7 @@ do
local report = nil
local state = nil
local target = nil
+ local fatal = false
local function startlogging(t,r,w,s)
target = t
@@ -692,6 +699,10 @@ do
end
poptarget()
state = oldstate
+ if fatal then
+ logs.report("error logging","error marked as fatal")
+ luatex.abort()
+ end
end
function logs.startfilelogging(...)
@@ -713,6 +724,11 @@ do
if fatalerrors[w] then
possiblefatal[w] = true
else
+ for k, v in next, quitonerror do
+ if find(w,v) then
+ fatal = true
+ end
+ end
for k, v in next, fatalerrors do
if find(w,v) then
possiblefatal[w] = true
diff --git a/tex/context/base/mkxl/math-act.lmt b/tex/context/base/mkxl/math-act.lmt
index 14c0a94ce..4f12bf92e 100644
--- a/tex/context/base/mkxl/math-act.lmt
+++ b/tex/context/base/mkxl/math-act.lmt
@@ -1746,12 +1746,21 @@ do
local method = entry[2]
local fraction = entry[3]
local width = 0
- if how == "c" then
- width = characters[fraction].width -- char
- elseif how == "s" then
- width = fraction * parameters.space -- space
+ local height = 0
+ -- local depth = 0
+ if method == "c" then
+ local template = characters[fraction]
+ width = template.width
+ height = template.height
+ -- depth = template.depth
+ elseif method == "s" then
+ width = fraction * parameters.space -- space
+ height = 0
+ -- depth = 0
else
width = fraction * parameters.quad -- quad
+ height = 0
+ -- depth = 0
end
if trace_tweaking then
report_tweak("setting width of %U to %p",target,original,unicode,width)
@@ -1759,6 +1768,8 @@ do
characters[unicode] = {
width = width,
-- advance = width,
+ height = height,
+ -- depth = depth,
unicode = unicode,
commands = {
-- { "slot", 0, 32 },
@@ -1990,10 +2001,12 @@ do
-- radicals and actuarians are never seen together. We could also have a smaller
-- extender.
+ local nps = fonts.helpers.newprivateslot
+
local radical <const> = 0x0221A
- local actuarian <const> = 0x020E7
- local nairautca <const> = 0xFE942
- local placehold <const> = 0xFE943
+ local actuarian <const> = nps("delimited right annuity") -- 0x020E7
+ local nairautca <const> = nps("delimited left annuity" )
+ local placehold <const> = nps("delimited ghost annuity")
function mathtweaks.addactuarian(target,original,parameters)
local characters = target.characters
@@ -2004,6 +2017,21 @@ do
local basedepth = basechar.depth
local basetotal = baseheight + basedepth
local used = baseheight
+ --
+ characters[0x020E7] = {
+ width = 6*linewidth,
+ height = baseheight,
+ depth = basedepth,
+ unicode = actuarian,
+ callback = "devirtualize",
+ commands = {
+ upcommand[baseheight-4*linewidth],
+ { "rule", linewidth, 4*linewidth },
+ downcommand[basetotal/2-linewidth],
+ { "rule", basetotal/2, linewidth },
+ },
+ }
+ --
characters[actuarian] = {
width = 2*linewidth,
height = baseheight,
@@ -2086,12 +2114,12 @@ do
-- todo: make callback because we can delay it but then we need to stack
-- callbacks
- -- todo: use named privates for snippets
+ local nps = fonts.helpers.newprivateslot
local list = {
- { 0x302, 0xFE944, 0xFE945 },
- { 0x303, 0xFE946, 0xFE947 },
- { 0x30C, 0xFE948, 0xFE949 },
+ { 0x302, nps("delimited right hat" ), nps("delimited ghost hat" ) },
+ { 0x303, nps("delimited right tilde"), nps("delimited ghost tilde") },
+ { 0x30C, nps("delimited right check"), nps("delimited ghost check") },
}
function mathtweaks.addfourier(target,original,parameters)
diff --git a/tex/context/base/mkxl/math-ali.lmt b/tex/context/base/mkxl/math-ali.lmt
index 718975a50..87ea67c72 100644
--- a/tex/context/base/mkxl/math-ali.lmt
+++ b/tex/context/base/mkxl/math-ali.lmt
@@ -8,94 +8,285 @@ if not modules then modules = { } end modules ['math-ali'] = {
local unpack = unpack
local gsub = string.gsub
-local lpegmatch = lpeg.match
+local sort, keys = table.sort, table.keys
local settings_to_array = utilities.parsers.settings_to_array
-
-local rows = utilities.parsers.groupedsplitat(";")
-local cols = utilities.parsers.groupedsplitat(",")
+local P, R, S, C, Cc, Ct, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Ct, lpeg.Cs
+local lpegmatch = lpeg.match
local context = context
-local actions = {
- transpose = function(m)
- local t = { }
- for j=1,#m[1] do
- local r = { }
- for i=1,#m do
- r[i] = m[i][j]
- end
- t[j] = r
- end
- return t
- end,
- negate = function(m)
- for i=1,#m do
- local mi = m[i]
- for j=1,#mi do
- mi[j] = - mi[j]
+do
+
+ local rows = utilities.parsers.groupedsplitat(";")
+ local cols = utilities.parsers.groupedsplitat(",")
+
+ local actions = {
+ transpose = function(m)
+ local t = { }
+ for j=1,#m[1] do
+ local r = { }
+ for i=1,#m do
+ r[i] = m[i][j]
+ end
+ t[j] = r
end
- end
- return m
- end,
- scale = function(m,s)
- s = tonumber(s)
- if s then
+ return t
+ end,
+ negate = function(m)
for i=1,#m do
local mi = m[i]
for j=1,#mi do
- mi[j] = s*mi[j]
+ mi[j] = - mi[j]
end
end
- end
- return m
- end,
-}
+ return m
+ end,
+ scale = function(m,s)
+ s = tonumber(s)
+ if s then
+ for i=1,#m do
+ local mi = m[i]
+ for j=1,#mi do
+ mi[j] = s*mi[j]
+ end
+ end
+ end
+ return m
+ end,
+ }
-local useractions = {
-}
+ local useractions = {
+ }
-interfaces.implement {
- name = "simplematrix",
- arguments = "2 strings",
- actions = function(method,data)
- local m = lpegmatch(rows,(gsub(data,"%s+"," ")))
- for i=1,#m do
- m[i] = lpegmatch(cols,m[i])
- end
- local methods = settings_to_array(method)
- for i=1,#methods do
- local detail = settings_to_array(methods[i])
- local method = detail[1]
- local action = actions[method] or useractions[method]
- if action then
- m = action(m,unpack(detail,2)) or m
+ interfaces.implement {
+ name = "simplematrix",
+ arguments = "2 strings",
+ actions = function(method,data)
+ local m = lpegmatch(rows,(gsub(data,"%s+"," ")))
+ for i=1,#m do
+ m[i] = lpegmatch(cols,m[i])
+ end
+ local methods = settings_to_array(method)
+ for i=1,#methods do
+ local detail = settings_to_array(methods[i])
+ local method = detail[1]
+ local action = actions[method] or useractions[method]
+ if action then
+ m = action(m,unpack(detail,2)) or m
+ end
+ end
+ for i=1,#m do
+ context("\\NC %{ \\NC }t \\NR",m[i])
end
end
- for i=1,#m do
- context("\\NC %{ \\NC }t \\NR",m[i])
+ }
+
+ function mathematics.registersimplematrix(name,action)
+ if type(action) == "function" then
+ useractions[name] = action
end
end
-}
-function mathematics.registersimplematrix(name,action)
- if type(action) == "function" then
- useractions[name] = action
- end
+ -- \cases{1, x>0 ; -1, x<0 }
+
+ interfaces.implement {
+ name = "simplecases",
+ arguments = "2 strings",
+ actions = function(method,data)
+ -- no methods yet
+ local m = lpegmatch(rows,(gsub(data,"%s+"," ")))
+ for i=1,#m do
+ m[i] = lpegmatch(cols,m[i])
+ end
+ for i=1,#m do
+ context("\\NC %{ \\NC }t \\NR",m[i])
+ end
+ end
+ }
+
end
--- \cases{1, x>0 ; -1, x<0 }
+do
+
+ local relations = {
+ ["<"] = "<", [">"] = ">",
+ ["!<"] = "≮", ["!>"] = "≯",
+ ["<<"] = "≪", [">>"] = "≫",
+ ["="] = "=", ["=="] = "=",
+ ["<>"] = "≠", ["!="] = "≠",
+ ["<="] = "≤", [">="] = "≥",
+ ["=<"] = "≦", ["=>"] = "≧",
+ ["!=<"] = "≰", ["!=>"] = "≱",
+ ["~"] = "≈", ["~~"] = "≈",
+ }
+
+ for k, v in next, table.copy(relations) do relations[v] = v end
+
+ -- local binaries = {
+ -- ["+"] = "+",
+ -- ["-"] = "-",
+ -- ["/"] = "/",
+ -- ["*"] = "",
+ -- }
+
+ local separators = {
+ [","] = true,
+ [";"] = true,
+ }
+
+ local alternatives = {
+ -- not that many
+ }
+
+ local p_sign = S("-+")
+ local p_script = S("^")^1
+ local p_number = R("09","..")^1 + lpeg.patterns.nestedbraces
+ local p_alpha = R("az","AZ")^1
+ local p_variable = p_alpha * (P("_") * (p_number + p_alpha))^-1
+
+ local spacing = P(" ")^0
+ local script = Cs(p_script * Cc("{") * p_sign^0 * (p_number + p_variable) * Cc("}"))
+ local sign = C(p_sign) + Cc("+")
+ local number = C(p_number)
+ local variable = C(p_variable)
+ -- local binary = lpeg.utfchartabletopattern(binaries) / binaries
+ local relation = lpeg.utfchartabletopattern(relations) / relations
+ local separator = lpeg.utfchartabletopattern(separators)
+
+ local snippet = Ct (
+ (
+ spacing * sign * spacing * number * spacing * variable
+ + spacing * sign * spacing * number * spacing * Cc(false)
+ + spacing * sign * spacing * Cc(false) * spacing * variable
+ ) * (script + Cc(false))
+ )
+
+ local parser = Ct ( Ct (
+ ( Ct ( snippet^1 ) * spacing * relation )^1
+ * ( Ct ( snippet^1 ) * spacing * separator^0 )
+ )^1 )
+
+ local num = "!"
+
+ local ctx_NC, ctx_NR = context.NC, context.NR
+ local ctx_typ = context.typ
+ local ctx_ord, ctx_rel = context.mathord, context.mathrel
+
+ local clean = table.setmetatableindex(function(t,k)
+ local v = gsub(k,"[{}]","")
+ t[k] = v
+ return v
+ end)
-interfaces.implement {
- name = "simplecases",
- arguments = "2 strings",
- actions = function(method,data)
- -- no methods yet
- local m = lpegmatch(rows,(gsub(data,"%s+"," ")))
- for i=1,#m do
- m[i] = lpegmatch(cols,m[i])
+ alternatives.equationsystem = function(action,str)
+ local rows = lpegmatch(parser,str)
+ if not rows then
+ ctx_typ("bad system, case 1: %s",1,str)
+ return
end
- for i=1,#m do
- context("\\NC %{ \\NC }t \\NR",m[i])
+ local nrow = #rows
+ local all = table.setmetatableindex("table")
+ for r=1,nrow do
+ local row = rows[r]
+ for s=1,#row,2 do
+ local set = row[s]
+ for v=1,#set do
+ local vvv = set[v]
+ local var = vvv[3]
+ if not var then
+ var = num
+ end
+ if set[var] then
+ print("bad system, two constants")
+ end
+ set[var] = set[v]
+ all[s][var] = true
+ set[v] = nil
+ end
+ end
+ end
+ --
+ local cnt = #rows[1]
+ for r=1,nrow do
+ if #rows[r] ~= cnt then
+ ctx_typ("bad system, case %i: %s",2,str)
+ return
+ end
+ end
+ for r=1,#rows[1] do
+ local a = keys(all[r])
+ sort(a,function(a,b)
+ return clean[a] < clean[b]
+ end)
+ all[r] = a
+ end
+ --
+ for r=1,nrow do
+ local row = rows[r]
+ for r=1,#row do
+ local set = row[r]
+ local how = all[r]
+ if #how > 0 then
+ -- local done = false
+ for i=1,#how do
+ local k = how[i]
+ local e = set[k]
+ if e then
+ ctx_NC()
+ -- if not done and e[1] == "+" then
+ if i == 1 and e[1] == "+" then
+ -- ctx_ord("")
+ -- ctx_hphantom(e[1])
+ -- ctx_ord("")
+ else
+ ctx_ord("")
+ context(e[1])
+ ctx_ord("")
+ -- done = true
+ end
+ ctx_NC()
+ if e[2] then
+ context(e[2])
+ -- done = true
+ end
+ if e[3] then
+ context(e[3])
+ -- done = true
+ end
+ if e[4] then
+ context(e[4])
+ -- done = true
+ end
+ else
+ ctx_NC()
+ -- ctx_mathord("")
+ ctx_NC()
+ end
+ end
+ else
+ ctx_NC()
+ ctx_ord("")
+ context(set)
+ ctx_ord("")
+ end
+ end
+ ctx_NR()
end
end
-}
+
+ interfaces.implement {
+ name = "simplealign",
+ -- public = true,
+ protected = true,
+ arguments = "3 strings",
+ actions = function(alternative,action,str)
+ local a = alternatives[alternative]
+ if a then
+ a(action,str)
+ else
+ context(str)
+ end
+ end
+ }
+
+end
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index aaf76c9b1..b6b037117 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -2760,6 +2760,61 @@
\expandafter\startsubstack\the\scratchtoks\strut\stopsubstack
\endgroup}
+%D Similar to simplecases:
+%D
+%D \starttyping
+%D \startformula
+%D \equationsystem {
+%D {(1-a)}x^{2x} - 3y_2 + 14z = 2 + x,
+%D {(1-a)}x^2 - 3y_2 + 4z <= 62,
+%D {(1-a)}x^a - 3y_2 + 4z >= 12,
+%D {(1-a)}x^{2a} - 3y_2 + 24z != 4,
+%D x^^2 - 3y_2 + 4z ~ 1,
+%D x^^2 - 3y_2 + 4z ≠ 1,
+%D -2x - 4z <> 10,
+%D }
+%D \stopformula
+%D \stoptyping
+
+\permanent\tolerant\protected\def\math_align_simple[#1]#*[#2]#:#3%
+ {\begingroup
+ \edef\currentmathsimplealign{#1}%
+ \setupcurrentmathsimplealign[#2]%
+ \math_simplealign_start[\currentmathsimplealign]%
+ \clf_simplealign{\mathsimplealignparameter\c!alternative}{\mathsimplealignparameter\c!action}{#3}%
+ \math_simplealign_stop
+ \endgroup}
+
+\appendtoks
+ \edef\p_simplecommand{\mathsimplealignparameter\c!simplecommand}%
+ \ifempty\p_simplecommand\else
+ \frozen\protected\instance\edefcsname\p_simplecommand\endcsname{\math_align_simple[\currentmathsimplealign]}%
+ \fi
+\to \everydefinemathsimplealign
+
+\definemathsimplealign % new !
+ [equationsystem]
+ [\c!simplecommand=equationsystem,
+ \c!alternative=equationsystem, % for the moment we use this key
+ \c!align={all:right},
+ \c!distance=\v!math,
+ \c!left=,
+ \c!right=]
+
+\definemathsimplealign
+ [lequationsystem]
+ [equationsystem]
+ [\c!simplecommand=lequationsystem,
+ \c!left={\startmathfenced[cases]},
+ \c!right=\stopmathfenced]
+
+\definemathsimplealign
+ [requationsystem]
+ [equationsystem]
+ [\c!simplecommand=requationsystem,
+ \c!left={\startmathfenced[sesac]},
+ \c!right=\stopmathfenced]
+
\protect \endinput
% \placeformula \startformula[-] \startmatrix
diff --git a/tex/context/base/mkxl/math-def.mkxl b/tex/context/base/mkxl/math-def.mkxl
index d46506add..16c65cf55 100644
--- a/tex/context/base/mkxl/math-def.mkxl
+++ b/tex/context/base/mkxl/math-def.mkxl
@@ -49,9 +49,9 @@
\definemathfunction [exp]
\definemathfunction [gcd] [\c!mathlimits=\v!yes]
\definemathfunction [hom]
-\definemathfunction [inf] [\c!mathlimits=\v!yes]
-\definemathfunction [inv] [\c!mathlimits=\v!yes]
-\definemathfunction [injlim] [\c!mathlimits=\v!yes]
+\definemathfunction [inf] [\c!mathlimits=\v!auto]
+\definemathfunction [inv] [\c!mathlimits=\v!auto]
+\definemathfunction [injlim] [\c!mathlimits=\v!auto]
\definemathfunction [ker]
\definemathfunction [lg]
\definemathfunction [liminf] [\c!mathlimits=\v!auto]
@@ -64,12 +64,12 @@
\definemathfunction [min] [\c!mathlimits=\v!auto]
\definemathfunction [mod] [\c!mathlimits=\v!yes]
%definemathfunction [div] [\c!mathlimits=\v!yes]
-\definemathfunction [projlim] [\c!mathlimits=\v!yes]
+\definemathfunction [projlim] [\c!mathlimits=\v!auto]
\definemathfunction [Pr] [\c!mathlimits=\v!yes]
\definemathfunction [sec]
\definemathfunction [sinh]
\definemathfunction [sin]
-\definemathfunction [sup] [\c!mathlimits=\v!yes]
+\definemathfunction [sup] [\c!mathlimits=\v!auto]
\definemathfunction [tanh]
\definemathfunction [tan]
\definemathfunction [diff]
diff --git a/tex/context/base/mkxl/math-del.mklx b/tex/context/base/mkxl/math-del.mklx
index d046a0912..edfd77de2 100644
--- a/tex/context/base/mkxl/math-del.mklx
+++ b/tex/context/base/mkxl/math-del.mklx
@@ -84,17 +84,27 @@
{\popcolor#body}%
\fi}
-% todo:
-%
-% \setupmathdelimited
-% [topoffset=.2\exheight]
-%
-% \definemathdelimited
-% [fourier]
-% [rule=no,
-% left=\zerocount,
-% right="FE944] % 46 48
-%
+\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]
+
% $ \autofences \fourier{(z+\frac12)} + \courier{(z+\frac12)} + \xourier{(z+\frac12)} $
\protect \endinput
diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl
index aeed32fcf..5dd7ee118 100644
--- a/tex/context/base/mkxl/math-fen.mkxl
+++ b/tex/context/base/mkxl/math-fen.mkxl
@@ -270,11 +270,32 @@
\aliased\let\fence \relax
\aliased\let\fenced\relax
+\protected\def\math_fenced_middle_bar {\mfence |\relax}
+\protected\def\math_fenced_middle_colon{\mfence :\relax}
+\protected\def\math_fenced_middle_comma{\mathatom \s!leftclass \mathpunctuationcode \s!rightclass \mathmiddlecode {,}}
+
+\startsetups math:fence:set:bar
+ \aliased\let\suchthat\math_fenced_middle_bar
+ \aliased\let\where \math_fenced_middle_comma
+ \aliased\let\and \math_fenced_middle_comma
+\stopsetups
+
+\startsetups math:fence:set:colon
+ \aliased\let\suchthat\math_fenced_middle_colon
+ \aliased\let\where \math_fenced_middle_comma
+ \aliased\let\and \math_fenced_middle_comma
+\stopsetups
+
+\startsetups math:fence:set
+ \directsetup{math:fence:set:bar}
+\stopsetups
+
\protected\def\math_fenced_middle_common
{\math_fenced_middle} % redefined inside atom
\protected\def\math_fenced_fenced_common
{\startusemathstyleparameter\mathfenceparameter\c!mathstyle
+ \usesetupsparameter\mathfenceparameter
\enforced\let\fence\math_fenced_middle_common}
\protected\def\math_fenced_fenced_start#1%
@@ -604,7 +625,7 @@
\math_fenced_common\Uright\c!rightclass\math_fenced_x_p_right\c!rightsource
\advance\c_math_fence_nesting\minusone}
-\def\math_fenced_x_middle_normal
+\def\math_fenced_x_middle
{\math_fenced_common\Umiddle\c!middleclass\math_fenced_x_p_middle\c!middlesource}
% the expandafter permits \left\Uchar...
diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt
index 81ac23f43..81138b2e2 100644
--- a/tex/context/base/mkxl/math-ini.lmt
+++ b/tex/context/base/mkxl/math-ini.lmt
@@ -368,6 +368,7 @@ registerengineclass("textpunctuation", "tpu")
registerengineclass("unspaced")
registerengineclass("experimental")
registerengineclass("fake")
+registerengineclass("numbergroup", "ngr")
registerengineclass("maybeordinary")
registerengineclass("mayberelation")
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index 5b5610ff5..a1e5c29a6 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -176,6 +176,7 @@
\setnewconstant\mathunspacedcode \mathclassvalue unspaced % for cases where we don't want spacing at all
\setnewconstant\mathexperimentalcode \mathclassvalue experimental % for MS and HH testing purposed only
\setnewconstant\mathunarycode \mathclassvalue unary % dedicated to Alan
+\setnewconstant\mathnumbergroupcode \mathclassvalue numbergroup
\setnewconstant\mathbegincode \mathclassvalue begin
\setnewconstant\mathendcode \mathclassvalue end
@@ -231,6 +232,9 @@
\copymathspacing \mathmayberelationcode \mathrelationcode
\copymathspacing \mathmaybebinarycode \mathbinarycode
+%copymathspacing \mathnumbergroupcode \mathpunctuationcode
+\copymathspacing \mathnumbergroupcode \mathrelationcode % for now
+
\setnewconstant\mathlimopcode \plusone
\setnewconstant\mathnolopcode \plusone
@@ -552,6 +556,7 @@
% +\checkligatureclassoptioncode
+\flattenclassoptioncode
+\checkkernpairclassoptioncode
+ +\removeitaliccorrectionclassoptioncode
\relax
\setmathoptions\mathvariablecode\numexpr
@@ -730,6 +735,8 @@
\definesystemattribute[mathcollapsing] [public]
\definesystemattribute[mathunstack] [public]
\definesystemattribute[mathvariant] [public]
+\definesystemattribute[mathnumbers] [public]
+\definesystemattribute[mathspacing] [public]
\definesystemattribute[displaymath] [public]
@@ -1206,29 +1213,29 @@
\inherited\setmathspacing \mathclosecode \mathfractioncode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathclosecode \mathradicalcode \allmathstyles \zeromuskip
%
- \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allscriptstyles \thinmuskip
% \inherited\setmathspacing \mathpunctuationcode \mathbinarycode \allmathstyles \zeromuskip
- \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathopencode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathopencode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathopencode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathopencode \allscriptstyles \thinmuskip
\inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allsplitstyles \thickmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allsplitstyles \thinmuskip
- \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allscriptstyles \thinmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allscriptstyles \thinmuskip
%
\inherited\setmathspacing \mathconstructcode \mathordinarycode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathconstructcode \mathordinarycode \allscriptstyles \pettymuskip
@@ -2452,16 +2459,39 @@
%D we can stick to numbers. At some point this will change because we can now
%D control in in the engine and goodies per font.
-\installcorenamespace{mathitalics}
+% \installcorenamespace{mathitalics}
+%
+% \setnewconstant\c_math_italics_attribute\attributeunsetvalue
+%
+% \letcsname\??mathitalics 1\endcsname\plusone % fontitalics
+% \letcsname\??mathitalics 2\endcsname\plustwo % fontdata
+% \letcsname\??mathitalics 3\endcsname\plusthree % quad based
+% \letcsname\??mathitalics 4\endcsname\plusfour % combination of 1 and 3
+% \letcsname\??mathitalics \v!none\endcsname\attributeunsetvalue
+% \letcsname\??mathitalics\v!reset\endcsname\attributeunsetvalue
+%
+% \def\math_italics_initialize
+% {\ifnum\c_math_italics_attribute=\attributeunsetvalue \else
+% \clf_initializemathitalics % one time
+% \glet\math_italics_initialize\relax
+% \fi}
+%
+% \appendtoks
+% \edef\p_italics{\mathematicsparameter\s!italics}%
+% \c_math_italics_attribute
+% \ifcsname\??mathitalics\p_italics\endcsname\lastnamedcs\else\attributeunsetvalue\fi
+% \relax
+% % \math_italics_initialize
+% \to \everyswitchmathematics % only in mathematics
+%
+% \appendtoks
+% \math_italics_initialize
+% \c_attr_mathitalics\c_math_italics_attribute
+% \to \everymathematics
\setnewconstant\c_math_italics_attribute\attributeunsetvalue
-\letcsname\??mathitalics 1\endcsname\plusone % fontitalics
-\letcsname\??mathitalics 2\endcsname\plustwo % fontdata
-\letcsname\??mathitalics 3\endcsname\plusthree % quad based
-\letcsname\??mathitalics 4\endcsname\plusfour % combination of 1 and 3
-\letcsname\??mathitalics \v!none\endcsname\attributeunsetvalue
-\letcsname\??mathitalics\v!reset\endcsname\attributeunsetvalue
+% merge these:
\def\math_italics_initialize
{\ifnum\c_math_italics_attribute=\attributeunsetvalue \else
@@ -2472,9 +2502,14 @@
\appendtoks
\edef\p_italics{\mathematicsparameter\s!italics}%
\c_math_italics_attribute
- \ifcsname\??mathitalics\p_italics\endcsname\lastnamedcs\else\attributeunsetvalue\fi
+ \ifx\p_italics\v!none
+ \attributeunsetvalue
+ \orelse\ifx\p_italics\v!reset
+ \attributeunsetvalue
+ \else
+ \plusone
+ \fi
\relax
- % \math_italics_initialize
\to \everyswitchmathematics % only in mathematics
\appendtoks
@@ -2482,9 +2517,6 @@
\c_attr_mathitalics\c_math_italics_attribute
\to \everymathematics
-% \setupmathematics % done later
-% [\s!italics=3] % 4 is probably better
-
% looks nicer but can generate bogus csnames
%
% \setvalue{\??mathitalics1}{\math_italics_initialize\c_math_italics_attribute\plusone } % fontitalics
@@ -2539,11 +2571,11 @@
% \protected\def\disablemathpunctuation{\setfalse\automathpunctuation}
%
% \appendtoks
-% \doifelse{\mathematicsparameter\v!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation
+% \doifelse{\mathematicsparameter\c!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation
% \to \everyswitchmathematics
%
% \setupmathematics
-% [\v!autopunctuation=\v!no]
+% [\c!autopunctuation=\v!no]
%
% \def\math_punctuation_next{\ifx\nexttoken\blankspace\signalcharacter\fi}
%
@@ -2609,12 +2641,12 @@
% todo: use \Umathclass\c_math_comma\mathpunctcode etc for temporary switching
-\def\math_set_o_comma {\Umathcode\c_math_comma \mathordcode \zerocount\c_math_comma}
-\def\math_set_p_comma {\Umathcode\c_math_comma \mathpunctcode\zerocount\c_math_comma}
-\def\math_set_o_period {\Umathcode\c_math_period \mathordcode \zerocount\c_math_period}
-\def\math_set_p_period {\Umathcode\c_math_period \mathpunctcode\zerocount\c_math_period}
-\def\math_set_o_semicolon{\Umathcode\c_math_semicolon\mathordcode \zerocount\c_math_semicolon}
-\def\math_set_p_semicolon{\Umathcode\c_math_semicolon\mathpunctcode\zerocount\c_math_semicolon}
+\def\math_set_o_comma {\Umathcode\c_math_comma \mathordinarycode \zerocount\c_math_comma}
+\def\math_set_p_comma {\Umathcode\c_math_comma \mathpunctuationcode\zerocount\c_math_comma}
+\def\math_set_o_period {\Umathcode\c_math_period \mathordinarycode \zerocount\c_math_period}
+\def\math_set_p_period {\Umathcode\c_math_period \mathpunctuationcode\zerocount\c_math_period}
+\def\math_set_o_semicolon{\Umathcode\c_math_semicolon\mathordinarycode \zerocount\c_math_semicolon}
+\def\math_set_p_semicolon{\Umathcode\c_math_semicolon\mathpunctuationcode\zerocount\c_math_semicolon}
\edef\math_set_o_both {\math_set_o_period\math_set_o_comma}
\edef\math_set_p_both {\math_set_p_period\math_set_p_comma}
@@ -2633,9 +2665,9 @@
\let\math_punctuation_yes_period \math_punctuation_nop_period
\let\math_punctuation_yes_semicolon\math_punctuation_all_semicolon
-\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup}
-\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup}
-\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup}
+\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_comma ,\endgroup}
+\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_period .\endgroup}
+\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_semicolon;\endgroup}
\installcorenamespace {mathautopunctuation}
@@ -2704,12 +2736,12 @@
\mathcode\c_math_comma \c_math_special
\mathcode\c_math_period \c_math_special
\mathcode\c_math_semicolon\c_math_special
- \begincsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname
+ \begincsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname
\to \everymathematics
\appendtoks
- \ifcsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname \else
- \letmathematicsparameter\v!autopunctuation\v!no
+ \ifcsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \else
+ \letmathematicsparameter\c!autopunctuation\v!no
\fi
\to \everysetupmathematics
@@ -2717,7 +2749,73 @@
\permanent\protected\def\disablemathpunctuation{\csname\??mathautopunctuation\v!yes\endcsname}
\setupmathematics
- [\v!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon
+ [\c!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon
+
+%D The next replaces the above:
+
+% \startbuffer
+% \im{x + 1,222,333.44 + x}\par
+% \im{x + 1.222.333,44 + x}\par
+% \im{x + 1, 222, 333. 44 + x}\par
+% \im{(1.5, 1.5) + (1,5;1,5)}\par
+% \im{111 2222}\par
+% \im{f: \reals\to\reals}\par
+% \im{f : \reals\to\reals}\par
+% \im{f\colon\reals\to\reals}\par
+% \im{f \colon\reals\to\reals}\par
+% \stopbuffer
+%
+% \startTEXpage[offset=1dk]
+% \setupmathematics[autospacing=yes] \getbuffer \blank
+% \setupmathematics[autonumbers=1] \getbuffer \blank
+% \setupmathematics[autonumbers=2] \getbuffer \blank
+% \setupmathematics[autonumbers=3] \getbuffer \blank
+% \setupmathematics[autonumbers=4] \getbuffer \blank
+% \setupmathematics[autonumbers=5] \getbuffer \blank
+% \setupmathematics[autonumbers=6] \getbuffer \blank
+% \stopTEXpage
+
+\installcorenamespace{autospacing}
+
+\permanent\protected\def\enablemathautospacing
+ {\attribute\mathspacingattribute\plusone
+ \clf_initializemathspacing}
+
+\permanent\protected\def\disablemathautospacing
+ {\attribute\mathspacingattribute\attributeunsetvalue}
+
+\appendtoks
+ \ifcstok{\mathematicsparameter\c!autospacing}\v!yes
+ \enablemathautospacing
+ \else
+ \disablemathautospacing
+ \fi
+\to \everysetupmathematics
+
+\setupmathematics
+ [\c!autospacing=\v!no]
+
+\permanent\protected\def\enablemathautonumbers
+ {\attribute\mathnumbersattribute\plusone
+ \clf_initializemathnumbers}
+
+\permanent\protected\def\disablemathautonumbers
+ {\attribute\mathnumbersattribute\attributeunsetvalue}
+
+\appendtoks
+ \edef\p_autonumbers{\mathematicsparameter\c!autonumbers}%
+ \ifchknum\p_autonumbers\or
+ \enablemathautonumbers % default
+ \attribute\mathnumbersattribute\p_autonumbers\relax
+ \orelse\ifx\p_autonumbers\v!no
+ \disablemathautonumbers
+ \else
+ \enablemathautonumbers % default
+ \fi
+\to \everysetupmathematics
+
+\setupmathematics
+ [\c!autonumbers=\v!no]
%D The consequences of setting this are as follows:
%D
@@ -3418,54 +3516,143 @@
%D
%D \typebuffer \getbuffer
-\def\math_text_choice_font#1#2#%
- {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
- \hbox#2\bgroup
- \bgroup
- \aftergroup\hss
- \aftergroup\egroup
- \hss
- \font_basics_switchtobodyfont\m_math_text_choice_face
- #1%
- \let\next}
+% %mathscriptboxmode \plusthree % lists and boxes with \boundary=1 (also for testing and demo)
+% %mathscriptboxmode \plusone % collapsed and then removed, now control option
+% %mathscriptcharmode \plusone % idem
+%
+% %mathrulethicknessmode\plusone % adaptive
-\def\math_text_choice_word#1#2#%
- {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
- \hbox#2\bgroup
- \bgroup
- \aftergroup\hss
- \aftergroup\egroup
- \hss
- \font_basics_switchtobodyfont\m_math_text_choice_face
- #1%
- \nospacing % \normalnospaces\plusone
- \let\next}
+% We keep this as reference:
+%
+% \def\math_text_choice_font#1#2#%
+% {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
+% \hbox#2\bgroup
+% \bgroup
+% \aftergroup\hss
+% \aftergroup\egroup
+% \hss
+% \font_basics_switchtobodyfont\m_math_text_choice_face
+% #1%
+% \let\next}
+%
+% \def\math_text_choice_word#1#2#%
+% {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
+% \hbox#2\bgroup
+% \bgroup
+% \aftergroup\hss
+% \aftergroup\egroup
+% \hss
+% \font_basics_switchtobodyfont\m_math_text_choice_face
+% #1%
+% \nospacing % \normalnospaces\plusone
+% \let\next}
+%
+% % \ruledhbox{$\mathtext{abc ffi}$}
+% % \ruledhbox{$\mathword{abc ffi}$}
+%
+% \permanent\protected\def\mathtext {\mathortext{\math_text_choice_font\relax}\hbox}
+% \permanent\protected\def\mathword {\mathortext{\math_text_choice_word\relax}\hbox}
+%
+% \permanent\protected\def\mathtexttf{\mathortext{\math_text_choice_font\tf}\hbox}
+% \permanent\protected\def\mathtextit{\mathortext{\math_text_choice_font\it}\hbox}
+% \permanent\protected\def\mathtextsl{\mathortext{\math_text_choice_font\sl}\hbox}
+% \permanent\protected\def\mathtextbf{\mathortext{\math_text_choice_font\bf}\hbox}
+% \permanent\protected\def\mathtextbi{\mathortext{\math_text_choice_font\bi}\hbox}
+% \permanent\protected\def\mathtextbs{\mathortext{\math_text_choice_font\bs}\hbox}
+%
+% \permanent\protected\def\mathwordtf{\mathortext{\math_text_choice_word\tf}\hbox}
+% \permanent\protected\def\mathwordit{\mathortext{\math_text_choice_word\it}\hbox}
+% \permanent\protected\def\mathwordsl{\mathortext{\math_text_choice_word\sl}\hbox}
+% \permanent\protected\def\mathwordbf{\mathortext{\math_text_choice_word\bf}\hbox}
+% \permanent\protected\def\mathwordbi{\mathortext{\math_text_choice_word\bi}\hbox}
+% \permanent\protected\def\mathwordbs{\mathortext{\math_text_choice_word\bs}\hbox}
+
+%D The split option is sort or a gimmick but one never knows how it might come in
+%D handy. It was also an interesting test for how easy we can get this done (an extra
+%D option as well as cheating in the line break function). And it was a good excuse
+%D to add options to glue (which was pending). Actually, the main reason for this
+%D trickery was that unrolling lists into the main math list could have strange side
+%D effects, due to glue being ignored in math in the libereak routine, so better get
+%D it working than explaining why if could have side effects.
-% \ruledhbox{$\mathtext{abc ffi}$}
-% \ruledhbox{$\mathword{abc ffi}$}
+%D The fact that one can pass e.g \type {to 4cm} before the content is an old and
+%D probably never used feature that we keep in order to remain compatible.
-%mathscriptboxmode \plusthree % lists and boxes with \boundary=1 (also for testing and demo)
-%mathscriptboxmode \plusone % collapsed and then removed, now control option
-%mathscriptcharmode \plusone % idem
+\installcorenamespace{mathtext}
-%mathrulethicknessmode\plusone % adaptive
+\installcommandhandler \??mathtext {mathtext} \??mathtext
-\permanent\protected\def\mathtext {\mathortext{\math_text_choice_font\relax}\hbox}
-\permanent\protected\def\mathword {\mathortext{\math_text_choice_word\relax}\hbox}
+\setupmathtext
+ [\s!leftclass=\mathtextparameter\s!class,
+ \s!rightclass=\mathtextparameter\s!class,
+ \s!class=\mathordinarycode]
-\permanent\protected\def\mathtexttf{\mathortext{\math_text_choice_font\tf}\hbox}
-\permanent\protected\def\mathtextit{\mathortext{\math_text_choice_font\it}\hbox}
-\permanent\protected\def\mathtextsl{\mathortext{\math_text_choice_font\sl}\hbox}
-\permanent\protected\def\mathtextbf{\mathortext{\math_text_choice_font\bf}\hbox}
-\permanent\protected\def\mathtextbi{\mathortext{\math_text_choice_font\bi}\hbox}
-\permanent\protected\def\mathtextbs{\mathortext{\math_text_choice_font\bs}\hbox}
+\appendtoks
+ \frozen\protected\edefcsname\currentmathtext\endcsname{\math_text_handle{\currentmathtext}}
+\to \everydefinemathtext
+
+\newtoks\everymathtext
-\permanent\protected\def\mathwordtf{\mathortext{\math_text_choice_word\tf}\hbox}
-\permanent\protected\def\mathwordit{\mathortext{\math_text_choice_word\it}\hbox}
-\permanent\protected\def\mathwordsl{\mathortext{\math_text_choice_word\sl}\hbox}
-\permanent\protected\def\mathwordbf{\mathortext{\math_text_choice_word\bf}\hbox}
-\permanent\protected\def\mathwordbi{\mathortext{\math_text_choice_word\bi}\hbox}
-\permanent\protected\def\mathwordbs{\mathortext{\math_text_choice_word\bs}\hbox}
+\tolerant\protected\def\math_text_handle_indeed#1#*[#2]#:#3#%
+ {\begingroup
+ \edef\currentmathtext{#1}%
+ \setupcurrentmathtext[#2]%
+ \normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
+ \ifcstok{\mathtextparameter\c!alternative}\v!split
+ \mathatom
+ unroll
+ class \mathtextparameter\s!class
+ leftclass \mathtextparameter\s!leftclass
+ rightclass \mathtextparameter\s!rightclass
+ \bgroup
+ \hbox#3\bgroup
+ \aftergroup\egroup
+ \aftergroup\endgroup
+ \else
+ \hbox#3\bgroup
+ \atendofgroup\hss
+ \aftergroup\endgroup
+ \ifcstok{\mathtextparameter\c!alternative}\v!word
+ \nospacing % \normalnospaces\plusone
+ \fi
+ \hss
+ \fi
+ \font_basics_switchtobodyfont\m_math_text_choice_face
+ \usemathtextstyleandcolor\c!style\c!color
+ \the\everymathtext\relax
+ \let\next}
+
+\protected\def\math_text_handle#1%
+ {\mathortext{\math_text_handle_indeed{#1}}\hbox}
+
+\definemathtext[mathtext]
+\definemathtext[mathtexttf][mathtext][\c!style=\tf]
+\definemathtext[mathtextit][mathtext][\c!style=\it]
+\definemathtext[mathtextsl][mathtext][\c!style=\sl]
+\definemathtext[mathtextbf][mathtext][\c!style=\bf]
+\definemathtext[mathtextbi][mathtext][\c!style=\bi]
+\definemathtext[mathtextbs][mathtext][\c!style=\bs]
+
+\definemathtext[mathword] [mathtext][\c!alternative=\v!word]
+\definemathtext[mathwordtf][mathword][\c!style=\tf]
+\definemathtext[mathwordit][mathword][\c!style=\it]
+\definemathtext[mathwordsl][mathword][\c!style=\sl]
+\definemathtext[mathwordbf][mathword][\c!style=\bf]
+\definemathtext[mathwordbi][mathword][\c!style=\bi]
+\definemathtext[mathwordbs][mathword][\c!style=\bs]
+
+\definemathtext[mathsplit] [mathtext] [\c!alternative=\v!split]
+\definemathtext[mathsplittf][mathsplit][\c!style=\tf]
+\definemathtext[mathsplitit][mathsplit][\c!style=\it]
+\definemathtext[mathsplitsl][mathsplit][\c!style=\sl]
+\definemathtext[mathsplitbf][mathsplit][\c!style=\bf]
+\definemathtext[mathsplitbi][mathsplit][\c!style=\bi]
+\definemathtext[mathsplitbs][mathsplit][\c!style=\bs]
+
+\appendtoks
+ \reinstatecatcodecommand\barasciicode
+ \obeydiscretionaries
+\to \everymathtext
%D Safeguard against redefinitions:
@@ -3773,7 +3960,7 @@
\permanent\protected\def\math_scripts_unstack
{\clf_enablescriptunstacking
- \c_attr_mathunstack\plusone}
+ \c_attr_mathunstack\plustwo} % \plusone for the other way around
\ifdefined\stackscripts \else \aliased\let\stackscripts \relax \fi
\ifdefined\unstackscripts \else \aliased\let\unstackscripts\relax \fi
diff --git a/tex/context/base/mkxl/math-noa.lmt b/tex/context/base/mkxl/math-noa.lmt
index 3f77c2225..dfdfa6766 100644
--- a/tex/context/base/mkxl/math-noa.lmt
+++ b/tex/context/base/mkxl/math-noa.lmt
@@ -64,13 +64,7 @@ local trace_processing = false registertracker("math.processing", function
local trace_analyzing = false registertracker("math.analyzing", function(v) trace_analyzing = v end)
local trace_normalizing = false registertracker("math.normalizing", function(v) trace_normalizing = v end)
local trace_collapsing = false registertracker("math.collapsing", function(v) trace_collapsing = v end)
-local trace_fixing = false registertracker("math.fixing", function(v) trace_fixing = v end)
-local trace_patching = false registertracker("math.patching", function(v) trace_patching = v end)
local trace_goodies = false registertracker("math.goodies", function(v) trace_goodies = v end)
-local trace_variants = false registertracker("math.variants", function(v) trace_variants = v end)
-local trace_alternates = false registertracker("math.alternates", function(v) trace_alternates = v end)
-local trace_italics = false registertracker("math.italics", function(v) trace_italics = v end)
-local trace_kernpairs = false registertracker("math.kernpairs", function(v) trace_kernpairs = v end)
local check_coverage = true registerdirective("math.checkcoverage", function(v) check_coverage = v end)
local use_math_goodies = true registerdirective("math.nogoodies", function(v) use_math_goodies = not v end)
@@ -79,13 +73,7 @@ local report_processing = logreporter("mathematics","processing")
local report_remapping = logreporter("mathematics","remapping")
local report_normalizing = logreporter("mathematics","normalizing")
local report_collapsing = logreporter("mathematics","collapsing")
-local report_fixing = logreporter("mathematics","fixing")
-local report_patching = logreporter("mathematics","patching")
local report_goodies = logreporter("mathematics","goodies")
-local report_variants = logreporter("mathematics","variants")
-local report_alternates = logreporter("mathematics","alternates")
-local report_italics = logreporter("mathematics","italics")
-local report_kernpairs = logreporter("mathematics","kernpairs")
local a_mathrendering = privateattribute("mathrendering")
local a_exportstatus = privateattribute("exportstatus")
@@ -113,6 +101,9 @@ local getfield = nuts.getfield
local getnext = nuts.getnext
local getprev = nuts.getprev
local getboth = nuts.getboth
+local isnext = nuts.isnext
+local isprev = nuts.isprev
+local isboth = nuts.isboth
local getid = nuts.getid
local getsubtype = nuts.getsubtype
local getchar = nuts.getchar
@@ -154,6 +145,9 @@ local setprime = nuts.setprime
local getoffsets = nuts.getoffsets
local setoffsets = nuts.setoffsets
+local getoptions = nuts.getoptions
+local setoptions = nuts.setoptions
+
local flushnode = nuts.flush
local copy_node = nuts.copy
local slide_nodes = nuts.slide
@@ -202,25 +196,24 @@ local enableaction = tasks.enableaction
local setaction = tasks.setaction
local nodecodes = nodes.nodecodes
-local noadcodes = nodes.noadcodes
+----- noadcodes = nodes.noadcodes
local fencecodes = nodes.fencecodes
-
-local ordinarynoad_code = noadcodes.ordinary
-local operatornoad_code = noadcodes.operator
-local binarynoad_code = noadcodes.binary
-local relationnoad_code = noadcodes.relation
-local opennoad_code = noadcodes.open
-local closenoad_code = noadcodes.close
-local middlenoad_code = noadcodes.middle
-local punctuationnoad_code = noadcodes.punctuation
-local innernoad_code = noadcodes.inner
-local fencednoad_code = noadcodes.fenced
-local undernoad_code = noadcodes.under
-local overnoad_code = noadcodes.over
-local vcenternoad_code = noadcodes.vcenter
-local fractionnoad_code = noadcodes.fraction
-local radicalnoad_code = noadcodes.radical
-local accentnoad_code = noadcodes.accent
+local classes = mathematics.classes -- or nodes.noadcodes
+
+local ordinary_class = classes.ordinary
+local operator_class = classes.operator
+local binary_class = classes.binary
+local relation_class = classes.relation
+local open_class = classes.open
+local close_class = classes.close
+local middle_class = classes.middle
+local punctuation_class = classes.punctuation
+local fenced_class = classes.fenced
+local fraction_class = classes.fraction
+local radical_class = classes.radical
+local accent_class = classes.accent
+local numbergroup_class = classes.numbergroup
+local digit_class = classes.digit
local noad_code = nodecodes.noad
local accent_code = nodecodes.accent
@@ -264,7 +257,7 @@ local function process(start,what,n,parent)
local id = getid(start)
if trace_processing then
if id == noad_code then
- report_processing("%w%S, class %a",n*2,nutstring(start),noadcodes[getsubtype(start)])
+ report_processing("%w%S, class %a",n*2,nutstring(start),classes[getsubtype(start)])
elseif id == mathchar_code then
local char, font, fam = getcharspec(start)
report_processing("%w%S, family %a, font %a, char %a, shape %c",n*2,nutstring(start),fam,font,char,char)
@@ -680,7 +673,6 @@ do
function handlers.families(head,style,penalties)
processnoads(head,families,"families")
- return true -- not needed
end
end
@@ -822,7 +814,6 @@ do
function handlers.relocate(head,style,penalties)
processnoads(head,relocate,"relocate")
- return true -- not needed
end
end
@@ -855,7 +846,6 @@ do
function handlers.render(head,style,penalties)
processnoads(head,render,"render")
- return true -- not needed
end
end
@@ -917,7 +907,6 @@ do
function handlers.resize(head,style,penalties)
processnoads(head,resize,"resize")
- return true -- not needed
end
end
@@ -930,7 +919,7 @@ do
local autofences = { }
local dummyfencechar = 0x2E
- local function makefence(what,char)
+ local function makefence(what,char,template)
local d = new_delimiter() -- todo: attr
local f = new_fence() -- todo: attr
if char then
@@ -943,8 +932,8 @@ do
setfam(d,fam)
flushnode(sym)
end
- setattrlist(d,char)
- setattrlist(f,char)
+ setattrlist(d,template)
+ setattrlist(f,template)
setsubtype(f,what)
setfield(f,"delimiter",d)
setfield(f,"class",-1) -- tex itself does this, so not fenceclasses[what]
@@ -972,8 +961,9 @@ do
-- f_c or "?"
-- )
local list = new_submlist()
- setsubtype(noad,fencednoad_code)
+ setsubtype(noad,fenced_class)
setnucleus(noad,list)
+ setattrlist(list,noad)
setlist(list,f_o)
setlink(f_o,o_next) -- prev of list is nil
setlink(c_prev,f_c) -- next of list is nil
@@ -985,7 +975,7 @@ do
local midl = middle[current]
local next = getnext(current)
if midl then
- local fence = makefence(middlefence_code,current)
+ local fence = makefence(middlefence_code,current,current)
setnucleus(current)
flushnode(current)
middle[current] = nil
@@ -1009,8 +999,8 @@ do
return close
else
local c_prev, c_next = getboth(close)
- local f_o = makefence(leftfence_code,open)
- local f_c = makefence(rightfence_code,close)
+ local f_o = makefence(leftfence_code,open,open)
+ local f_c = makefence(rightfence_code,close,close)
makelist(middle,open,f_o,o_next,c_prev,f_c)
setnucleus(close)
flushnode(close)
@@ -1021,8 +1011,8 @@ do
end
local function convert_open(open,last,middle) -- last is really last (final case)
- local f_o = makefence(leftfence_code,open)
- local f_c = makefence(rightfence_code)
+ local f_o = makefence(leftfence_code,open,open)
+ local f_c = makefence(rightfence_code,nil,open)
local o_next = getnext(open)
makelist(middle,open,f_o,o_next,last,nil)
-- open is now a list
@@ -1031,7 +1021,7 @@ do
end
local function convert_close(first,close,middle)
- local f_o = makefence(leftfence_code)
+ local f_o = makefence(leftfence_code,nil,close)
local f_c = makefence(rightfence_code,close)
local c_prev = getprev(close)
local f_next = getnext(first)
@@ -1240,7 +1230,8 @@ do
if start_super == stop_super then
setsup(pointer,getnucleus(start_super))
else
- local list = new_submlist() -- todo attr
+ local list = new_submlist()
+ setattrlist(list,pointer)
setlist(list,start_super)
setsup(pointer,list)
end
@@ -1250,22 +1241,11 @@ do
setnext(stop_super)
end
if start_sub then
-
--- if mode == "sub" then
--- local sup = getsup(pointer)
--- if sup and not getsub(pointer) then
--- local nxt = getnext(pointer)
--- local new = new_noad(pointer)
--- setnucleus(new,new_submlist())
--- setlink(pointer,new,nxt)
--- pointer = new
--- end
--- end
-
if start_sub == stop_sub then
setsub(pointer,getnucleus(start_sub))
else
- local list = new_submlist() -- todo attr
+ local list = new_submlist()
+ setattrlist(list,pointer)
setlist(list,start_sub)
setsub(pointer,list)
end
@@ -1281,7 +1261,6 @@ do
function handlers.unscript(head,style,penalties)
processnoads(head,unscript,"unscript")
- return true -- not needed
end
end
@@ -1296,19 +1275,22 @@ do
local report_unstacking = logreporter("mathematics","unstack")
unstack[noad_code] = function(pointer)
- if getattr(pointer,a_unstack) then
+ local a = getattr(pointer,a_unstack)
+ if a then
local sup = getsup(pointer)
local sub = getsub(pointer)
if sup and sub then
-- if trace_unstacking then
-- report_unstacking() -- todo ... what to show ...
-- end
- local nxt = getnext(pointer)
- local new = new_noad(pointer)
- setnucleus(new,new_submlist())
- setsub(pointer)
- setsub(new,sub)
- setlink(pointer,new,nxt)
+ if a == 1 then
+ a = tex.noadoptioncodes.shiftedsubscript
+ elseif a == 2 then
+ a = tex.noadoptioncodes.shiftedsuperscript
+ else
+ a = 0
+ end
+ setoptions(pointer,getoptions(pointer) | a)
end
end
end
@@ -1316,7 +1298,7 @@ do
function handlers.unstack(head,style,penalties)
if enabled then
processnoads(head,unstack,"unstack")
- return true -- not needed
+
end
end
@@ -1363,6 +1345,9 @@ end
do
+ local trace_alternates = false registertracker("math.alternates", function(v) trace_alternates = v end)
+ local report_alternates = logreporter("mathematics","alternates")
+
local last = 0
local known = setmetatableindex(function(t,k)
@@ -1575,7 +1560,6 @@ do
function handlers.alternates(head,style,penalties)
processnoads(head,alternate,"alternate")
- return true -- not needed
end
end
@@ -1595,129 +1579,160 @@ end
-- some juggling that we want to avoid but we need to do something here (in fact, we could
-- better fix the width of the character)
-do
-
- local a_mathitalics = privateattribute("mathitalics")
-
- local italics = { }
- local default_factor = 1/20
-
- local setcolor = colortracers.set
- local resetcolor = colortracers.reset
- local italic_kern = new_kern
-
- local c_positive_d = "trace:dg"
- local c_negative_d = "trace:dr"
-
- local function insert_kern(current,kern)
- local sub = new_submlist() -- todo: attr
- local noad = new_noad() -- todo: attr
- setlist(sub,kern)
- setnext(kern,noad)
- setnucleus(noad,current)
- return sub
- end
-
- registertracker("math.italics.visualize", function(v)
- if v then
- italic_kern = function(k)
- local n = new_kern(k) -- todo: attr
- set_visual(n,"italic")
- return n
- end
- else
- italic_kern = new_kern
- end
- end)
-
- local function getcorrection(method,font,char) -- -- or character.italic -- (this one is for tex)
-
- local visual = chardata[char].visual
-
- if method == 1 then
- -- check on state
- local italics = fontitalics[font]
- if italics then
- local character = fontcharacters[font][char]
- if character then
- local correction = character.italic
- if correction and correction ~= 0 then
- return correction, visual
- end
- end
- end
- elseif method == 2 then
- -- no check
- local character = fontcharacters[font][char]
- if character then
- local correction = character.italic
- if correction and correction ~= 0 then
- return correction, visual
- end
- end
- elseif method == 3 then
- -- check on visual
- if visual == "it" or visual == "bi" then
- local character = fontcharacters[font][char]
- if character then
- local correction = character.italic
- if correction and correction ~= 0 then
- return correction, visual
- end
- end
- end
- elseif method == 4 then
- -- combination of 1 and 3
- local italics = fontitalics[font]
- if italics and (visual == "it" or visual == "bi") then
- local character = fontcharacters[font][char]
- if character then
- local correction = character.italic
- if correction and correction ~= 0 then
- return correction, visual
- end
- end
- end
- end
-
- end
-
- italics[mathchar_code] = function(pointer,what,n,parent)
- local method = getattr(pointer,a_mathitalics)
- if method and method > 0 and method < 100 then
- local char, font = getcharspec(pointer)
- local correction, visual = getcorrection(method,font,char)
- if correction and correction ~= 0 then
- local next_noad = getnext(parent)
- if not next_noad then
- if n == 1 then
- -- only at the outer level .. will become an option (always,endonly,none)
- if trace_italics then
- report_italics("method %a, flagging italic correction %p between %C and end math",method,correction,char)
- end
- if correction > 0 then
- correction = correction + 100
- else
- correction = correction - 100
- end
- correction = round(correction)
- setattr(pointer,a_mathitalics,correction)
- setattr(parent,a_mathitalics,correction)
- return -- so no reset later on
- end
- end
- end
- end
- setattr(pointer,a_mathitalics,unsetvalue)
- end
+-- do
+--
+-- local a_mathitalics = privateattribute("mathitalics")
+--
+-- local trace_italics = false registertracker("math.italics", function(v) trace_italics = v end)
+-- local report_italics = logreporter("mathematics","italics")
+--
+-- local italics = { }
+--
+-- local function getcorrection(method,font,char) -- -- or character.italic -- (this one is for tex)
+--
+-- local visual = chardata[char].visual
+--
+-- if method == 1 then
+-- -- check on state
+-- local italics = fontitalics[font]
+-- if italics then
+-- local character = fontcharacters[font][char]
+-- if character then
+-- local correction = character.italic
+-- if correction and correction ~= 0 then
+-- return correction, visual
+-- end
+-- end
+-- end
+-- elseif method == 2 then
+-- -- no check
+-- local character = fontcharacters[font][char]
+-- if character then
+-- local correction = character.italic
+-- if correction and correction ~= 0 then
+-- return correction, visual
+-- end
+-- end
+-- elseif method == 3 then
+-- -- check on visual
+-- if visual == "it" or visual == "bi" then
+-- local character = fontcharacters[font][char]
+-- if character then
+-- local correction = character.italic
+-- if correction and correction ~= 0 then
+-- return correction, visual
+-- end
+-- end
+-- end
+-- elseif method == 4 then
+-- -- combination of 1 and 3
+-- local italics = fontitalics[font]
+-- if italics and (visual == "it" or visual == "bi") then
+-- local character = fontcharacters[font][char]
+-- if character then
+-- local correction = character.italic
+-- if correction and correction ~= 0 then
+-- return correction, visual
+-- end
+-- end
+-- end
+-- end
+--
+-- end
+--
+-- -- basically the engine should set it
+--
+-- italics[mathchar_code] = function(pointer,what,n,parent)
+-- local method = getattr(pointer,a_mathitalics)
+-- if method and method > 0 and method < 100 then
+-- local char, font = getcharspec(pointer)
+-- local correction, visual = getcorrection(method,font,char)
+-- if correction and correction ~= 0 then
+-- local next_noad = getnext(parent)
+-- if not next_noad then
+-- if n == 1 then
+-- -- only at the outer level .. will become an option (always,endonly,none)
+-- if trace_italics then
+-- report_italics("method %a, flagging italic correction %p between %C and end math",method,correction,char)
+-- end
+-- if correction > 0 then
+-- correction = correction + 100
+-- else
+-- correction = correction - 100
+-- end
+-- correction = round(correction)
+-- setattr(pointer,a_mathitalics,correction)
+-- setattr(parent,a_mathitalics,correction)
+-- return -- so no reset later on
+-- end
+-- end
+-- end
+-- end
+-- setattr(pointer,a_mathitalics,unsetvalue)
+-- end
+--
+-- function handlers.italics(head,style,penalties)
+-- processnoads(head,italics,"italics")
+-- end
+--
+-- local enable = function()
+-- enableaction("math", "noads.handlers.italics")
+-- if trace_italics then
+-- report_italics("enabling math italics")
+-- end
+-- -- we enable math (unless already enabled elsewhere)
+-- typesetters.italics.enablemath()
+-- enable = false
+-- end
+--
+-- -- best do this only on math mode (less overhead)
+--
+-- function mathematics.setitalics(name)
+-- if enable then
+-- enable()
+-- end
+-- texsetattribute(a_mathitalics,name and name ~= v_reset and tonumber(name) or unsetvalue) -- maybe also v_none
+-- end
+--
+-- function mathematics.getitalics(name)
+-- if enable then
+-- enable()
+-- end
+-- context(name and name ~= v_reset and tonumber(name) or unsetvalue)
+-- end
+--
+-- function mathematics.resetitalics()
+-- texsetattribute(a_mathitalics,unsetvalue)
+-- end
+--
+-- implement {
+-- name = "initializemathitalics",
+-- actions = enable,
+-- onlyonce = true,
+-- }
+--
+-- implement {
+-- name = "setmathitalics",
+-- actions = mathematics.setitalics,
+-- arguments = "string",
+-- }
+--
+-- implement {
+-- name = "getmathitalics",
+-- actions = mathematics.getitalics,
+-- arguments = "string",
+-- }
+--
+-- implement {
+-- name = "resetmathitalics",
+-- actions = mathematics.resetitalics
+-- }
+--
+-- end
- function handlers.italics(head,style,penalties)
- processnoads(head,italics,"italics")
- return true -- not needed
- end
+do
local enable = function()
- enableaction("math", "noads.handlers.italics")
if trace_italics then
report_italics("enabling math italics")
end
@@ -1726,49 +1741,12 @@ do
enable = false
end
- -- best do this only on math mode (less overhead)
-
- function mathematics.setitalics(name)
- if enable then
- enable()
- end
- texsetattribute(a_mathitalics,name and name ~= v_reset and tonumber(name) or unsetvalue) -- maybe also v_none
- end
-
- function mathematics.getitalics(name)
- if enable then
- enable()
- end
- context(name and name ~= v_reset and tonumber(name) or unsetvalue)
- end
-
- function mathematics.resetitalics()
- texsetattribute(a_mathitalics,unsetvalue)
- end
-
implement {
name = "initializemathitalics",
actions = enable,
onlyonce = true,
}
- implement {
- name = "setmathitalics",
- actions = mathematics.setitalics,
- arguments = "string",
- }
-
- implement {
- name = "getmathitalics",
- actions = mathematics.getitalics,
- arguments = "string",
- }
-
- implement {
- name = "resetmathitalics",
- actions = mathematics.resetitalics
- }
-
end
do
@@ -1786,6 +1764,9 @@ do
local a_kernpairs = privateattribute("mathkernpairs")
local kernpairs = { }
+ local trace_kernpairs = false registertracker("math.kernpairs", function(v) trace_kernpairs = v end)
+ local report_kernpairs = logreporter("mathematics","kernpairs")
+
local function enable()
enableaction("math", "noads.handlers.kernpairs")
if trace_kernpairs then
@@ -1817,10 +1798,10 @@ do
if list then
local found = list[first]
if found then
- local next = getnext(parent)
- if next and getid(next) == noad_code then
- pointer = getnucleus(next)
- if pointer then
+ local next = isnext(parent,noad_code)
+ if next then
+-- pointer = getnucleus(next)
+-- if pointer then
local second, secondfont = getcharspec(pointer)
if secondfont == firstfont then
local kern = found[second]
@@ -1829,10 +1810,12 @@ do
if trace_kernpairs then
report_kernpairs("adding %p kerning between %C and %C",kern,first,second)
end
- setlink(parent,new_kern(kern),getnext(parent)) -- todo: attr
+ kern = new_kern(kern)
+ setlink(parent,kern,getnext(parent))
+ setattrlist(kern,pointer)
end
end
- end
+-- end
end
end
end
@@ -1843,11 +1826,164 @@ do
if use_math_goodies then
processnoads(head,kernpairs,"kernpairs")
end
- return true -- not needed
end
end
+do
+
+ local a_numbers = privateattribute("mathnumbers")
+ local a_spacing = privateattribute("mathspacing")
+
+ local numbers = { }
+ local spacing = { }
+
+ local separators = {
+ [0x2E] = { 0x2E, 0x2C, 0x002E, 0x002C, 0x2008, 0x2008 }, -- . -- punctuationspace
+ [0x2C] = { 0x2C, 0x2E, 0x2008, 0x2008, 0x002E, 0x002C }, -- ,
+ }
+
+ local digits = {
+ [0x30] = true, [0x31] = true,
+ [0x32] = true, [0x33] = true,
+ [0x34] = true, [0x35] = true,
+ [0x36] = true, [0x37] = true,
+ [0x38] = true, [0x39] = true,
+ }
+
+ local snoloc = {
+ [punctuation_class] = 0x003A,
+ [relation_class] = 0x2236,
+ }
+
+ local colons = {
+ [0x003A] = snoloc,
+ [0x2236] = snoloc,
+ }
+
+ local followedbyspace_code = tex.noadoptioncodes.followedbyspace
+
+ local function followedbyspace(n)
+ return getoptions(n) & followedbyspace_code == followedbyspace_code
+ end
+
+ numbers[mathchar_code] = function(pointer,what,n,parent)
+ local alternative = getattr(pointer,a_numbers)
+ if alternative then
+ local oldchar = getcharspec(pointer)
+ local found = separators[oldchar]
+ if found then
+ local prev, next = isboth(parent,noad_code)
+ if prev and next then
+ -- local lc = getcharspec(getnucleus(prev))
+ local lc = getcharspec(prev)
+ if digits[lc] then
+ -- local rc = getcharspec(getnucleus(next))
+ local rc = getcharspec(next)
+ if digits[rc] then
+ local newchar = found[alternative]
+ local class = followedbyspace(parent) and punctuation_class or ordinary_class
+ setsubtype(parent,class)
+ if newchar ~= oldchar then
+ setchar(pointer,newchar)
+ end
+ -- if trace_numbers then
+ -- report_numbers("digit separator digit")
+ -- end
+ end
+ end
+ end
+ return
+ end
+ found = digits[oldchar]
+ if found then
+ if followedbyspace(parent) then
+ local next = isnext(parent,noad_code)
+ if next then
+ -- local rc = getcharspec(getnucleus(next))
+ local rc = getcharspec(next)
+ if rc and digits[rc] then
+ local n = new_noad(numbergroup_class)
+ local s = new_submlist()
+ setnucleus(n,s)
+ setattrlist(n,pointer)
+ setattrlist(s,pointer)
+ setlink(parent,n,next)
+ -- if trace_numbers then
+ -- report_numbers("digit spacer digit")
+ -- end
+ end
+ end
+ end
+ return
+ end
+ end
+ end
+
+ spacing[mathchar_code] = function(pointer,what,n,parent)
+ if getattr(pointer,a_spacing) then
+ local oldchar = getcharspec(pointer)
+ local found = colons[oldchar]
+ if found then
+ local prev = isprev(parent,noad_code)
+ if prev then
+ local class = followedbyspace(prev) and relation_class or punctuation_class
+ local newchar = found[class]
+ setsubtype(parent,class)
+ if newchar ~= oldchar then
+ setchar(pointer,newchar)
+ end
+ -- if trace_spacing then
+ -- report_spacinf("spacer colon")
+ -- end
+ end
+ return
+ end
+ end
+ end
+
+ -- numbers
+
+ function handlers.numbers(head,style,penalties)
+ processnoads(head,numbers,"numbers")
+ end
+
+ local enable = function()
+ enableaction("math", "noads.handlers.numbers")
+ -- if trace_numbers then
+ -- report_numbers("enabling math numbers")
+ -- end
+ enable = false
+ end
+
+ implement {
+ name = "initializemathnumbers",
+ actions = enable,
+ onlyonce = true,
+ }
+
+ -- spacing
+
+ function handlers.spacing(head,style,penalties)
+ processnoads(head,spacing,"spacing")
+ end
+
+ local enable = function()
+ enableaction("math", "noads.handlers.spacing")
+ -- if trace_numbers then
+ -- report_spacing("enabling math spacinf")
+ -- end
+ enable = false
+ end
+
+ implement {
+ name = "initializemathspacing",
+ actions = enable,
+ onlyonce = true,
+ }
+
+end
+
-- primes and such
do
@@ -1858,28 +1994,21 @@ do
local collapse = { }
local mathlists = characters.mathlists
local validpair = {
- [ordinarynoad_code] = true,
- [operatornoad_code] = true,
- [binarynoad_code] = true, -- new
- [relationnoad_code] = true,
- [opennoad_code] = true, -- new
- [middlenoad_code] = true, -- new
- [closenoad_code] = true, -- new
- [punctuationnoad_code] = true, -- new
- [innernoad_code] = false,
- [fencednoad_code] = false,
- [undernoad_code] = false,
- [overnoad_code] = false,
- [vcenternoad_code] = false,
- [fractionnoad_code] = true,
- [radicalnoad_code] = false,
- [accentnoad_code] = true,
+ [ordinary_class] = true,
+ [operator_class] = true,
+ [binary_class] = true, -- new
+ [relation_class] = true,
+ [open_class] = true, -- new
+ [middle_class] = true, -- new
+ [close_class] = true, -- new
+ [punctuation_class] = true, -- new
+ [fraction_class] = true,
+ [accent_class] = true,
}
local reported = setmetatableindex("table")
collapse[mathchar_code] = function(pointer,what,n,parent)
-
if parent and mathlists[getchar(pointer)] then
local found, last, lucleus, lsup, lsub, category
local tree = mathlists
@@ -1963,7 +2092,6 @@ do
function noads.handlers.collapse(head,style,penalties)
processnoads(head,collapse,"collapse")
- return true -- not needed
end
local enable = function()
@@ -1975,9 +2103,9 @@ do
end
implement {
- name = "initializemathcollapsing",
- actions = enable,
- onlyonce = true,
+ name = "initializemathcollapsing",
+ actions = enable,
+ onlyonce = true,
}
end
@@ -2049,7 +2177,6 @@ do
function noads.handlers.fixscripts(head,style,penalties)
processnoads(head,fixscripts,"fixscripts")
- return true -- not needed
end
end
@@ -2062,6 +2189,9 @@ do
local chardata = characters.data
local a_variant = privateattribute("mathvariant")
+ local trace_variants = false registertracker("math.variants", function(v) trace_variants = v end)
+ local report_variants = logreporter("mathematics","variants")
+
local function setvariant(pointer,selector,char)
local tfmdata = fontdata[getfont(pointer)]
local mathvariants = tfmdata.resources.variants -- and variantdata / can be a hash
@@ -2090,8 +2220,8 @@ do
if data then
local variants = data.variants
if variants then
- local next = getnext(parent)
- if next and getid(next) == noad_code then
+ local next = isnext(parent,noad_code)
+ if next then
local nucleus = getnucleus(next)
if nucleus and getid(nucleus) == mathchar_code then
local selector = getchar(nucleus)
@@ -2138,7 +2268,6 @@ do
function handlers.variants(head,style,penalties)
processnoads(head,variants,"unicode variant")
- return true -- not needed
end
local valid = {
@@ -2171,21 +2300,13 @@ do
local classes = { }
local colors = {
- [relationnoad_code] = "trace:dr",
- [ordinarynoad_code] = "trace:db",
- [binarynoad_code] = "trace:dg",
- [opennoad_code] = "trace:dm",
- [middlenoad_code] = "trace:dm",
- [closenoad_code] = "trace:dm",
- [punctuationnoad_code] = "trace:dc",
- -- [operatornoad_code] = "",
- -- [innernoad_code = "",
- -- [fencednoad_code = "",
- -- [undernoad_code] = "",
- -- [overnoad_code] = "",
- -- [vcenternoad_code] = "",
- -- [fractionnoad_code] = "",
- -- [radicalnoad_code] = "",
+ [relation_class] = "trace:dr",
+ [ordinary_class] = "trace:db",
+ [binary_class] = "trace:dg",
+ [open_class] = "trace:dm",
+ [middle_class] = "trace:dm",
+ [close_class] = "trace:dm",
+ [punctuation_class] = "trace:dc",
}
local setcolor = colortracers.set
@@ -2202,7 +2323,6 @@ do
function handlers.classes(head,style,penalties)
processnoads(head,classes,"classes")
- return true -- not needed
end
registertracker("math.classes",function(v)
@@ -2414,14 +2534,14 @@ end
-- local a_mathdomain = privateattribute("mathdomain")
-- mathematics.domains = categories
-- local permitted = {
--- ordinary = ordinarynoad_code,
--- binary = binarynoad_code,
--- relation = relationnoad_code,
--- punctuation = punctuationnoad_code,
+-- ordinary = ordinary_class,
+-- binary = binary_class,
+-- relation = relation_class,
+-- punctuation = punctuation_class,
-- inner = innernoad_code,
--- fenced = fencednoad_code,
--- -- fraction = fractionnoad_code,
--- -- radical = radicalnoad_code,
+-- fenced = fenced_class,
+-- -- fraction = fraction_class,
+-- -- radical = radical_class,
-- }
--
-- function mathematics.registerdomain(data)
@@ -2551,7 +2671,6 @@ end
--
-- function handlers.domains(head,style,penalties)
-- processnoads(head,domains,"domains")
--- return true -- not needed
-- end
--
-- end
@@ -2672,9 +2791,9 @@ do
local suspicious = { } noads.processors.suspicious = suspicious
local candidates = {
- [mathematics.classes.maybeordinary] = "maybeordinary",
- [mathematics.classes.mayberelation] = "mayberelation",
- [mathematics.classes.maybebinary ] = "maybebinary",
+ [classes.maybeordinary] = "maybeordinary",
+ [classes.mayberelation] = "mayberelation",
+ [classes.maybebinary ] = "maybebinary",
}
local registered = setmetatableindex("table")
diff --git a/tex/context/base/mkxl/math-rad.mklx b/tex/context/base/mkxl/math-rad.mklx
index caa58b9d0..04d6bfbba 100644
--- a/tex/context/base/mkxl/math-rad.mklx
+++ b/tex/context/base/mkxl/math-rad.mklx
@@ -337,23 +337,28 @@
%
% \dorecurse{8}{$\mathhat{\blackrule[width=#1ex,color=gray]}$ }
+% \annuity {(x+1)} \Uchar"20E7
+
+\integerdef\delimitedleftanutityuc \privatecharactercode{delimited left annuity}
+\integerdef\delimitedrightanutityuc \privatecharactercode{delimited right annuity}
+
\definemathradical
[rannuity]
[\c!left=\zerocount,
- \c!right="20E7,
+ \c!right=\delimitedrightanutityuc,
\c!rightmargin=.05\emwidth]
\definemathradical
[lannuity]
- [\c!left="FE942,
+ [\c!left=\delimitedleftanutityuc,
\c!right=\zerocount,
\c!leftmargin=.05\emwidth,
\c!rightmargin=.05\emwidth]
\definemathradical
[lrannuity]
- [\c!left="FE942,
- \c!right="20E7,
+ [\c!left=\delimitedleftanutityuc,
+ \c!right=\delimitedrightanutityuc,
\c!leftmargin=.05\emwidth,
\c!rightmargin=.05\emwidth]
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index a2a0043ac..62b733125 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -89,6 +89,7 @@ local nuts = {
getchardict = direct.getchardict,
getcharspec = direct.getcharspec,
getchoice = direct.getchoice,
+ getclass = direct.getclass,
getdata = direct.getdata,
getdegree = direct.getdegree,
getdelimiter = direct.getdelimiter,
@@ -180,6 +181,9 @@ local nuts = {
isprevchar = direct.isprevchar,
isprevglyph = direct.isprevglyph,
iszeroglue = direct.iszeroglue,
+ isnext = direct.isnext,
+ isprev = direct.isprev,
+ isboth = direct.isboth,
kerning = direct.kerning,
lastnode = direct.lastnode,
length = direct.length,
@@ -215,6 +219,7 @@ local nuts = {
setchar = direct.setchar,
setchardict = direct.setchardict,
setchoice = direct.setchoice,
+ setclass = direct.setclass,
setdata = direct.setdata,
setdegree = direct.setdegree,
setdelimiter = direct.setdelimiter,
diff --git a/tex/context/base/mkxl/node-res.lmt b/tex/context/base/mkxl/node-res.lmt
index 672f3c5a5..5b7ac3fb5 100644
--- a/tex/context/base/mkxl/node-res.lmt
+++ b/tex/context/base/mkxl/node-res.lmt
@@ -73,6 +73,7 @@ local setshift = nuts.setshift
local setwidth = nuts.setwidth
local setsubtype = nuts.setsubtype
local setleader = nuts.setleader
+local setclass = nuts.setclass
local setdata = nuts.setdata
local setruledata = nuts.setruledata
@@ -452,11 +453,18 @@ function nutpool.temp()
return copy_nut(temp)
end
-function nutpool.noad() return copy_nut(noad) end
+function nutpool.noad(class)
+ local n = copy_nut(noad)
+ if class then
+ setsubtype(n,class)
+ setclass(n,class,class,class)
+ end
+ return n
+end
+
function nutpool.delimiter() return copy_nut(delimiter) end nutpool.delim = nutpool.delimiter
function nutpool.fence() return copy_nut(fence) end
function nutpool.submlist() return copy_nut(submlist) end
-function nutpool.noad() return copy_nut(noad) end
function nutpool.fence() return copy_nut(fence) end
function nutpool.accent() return copy_nut(accent) end
function nutpool.radical() return copy_nut(radical) end
diff --git a/tex/context/base/mkxl/node-rul.mkxl b/tex/context/base/mkxl/node-rul.mkxl
index ac66d11b3..ec9003f58 100644
--- a/tex/context/base/mkxl/node-rul.mkxl
+++ b/tex/context/base/mkxl/node-rul.mkxl
@@ -96,10 +96,10 @@
\protected\def\node_rules_direct#1%
{\groupedcommand
{\dontleavehmode % this should not be needed but it is in \bTD
- \node_rules_set{#1}
+ \node_rules_set{#1}%
\barparameter\c!left
- } %\ignorespaces}%
- {%\removeunwantesspaces
+ }%\ignorespaces}%
+ {%\removeunwantedspaces
\barparameter\c!right}}
\permanent\protected\def\inlinebar[#1]%
diff --git a/tex/context/base/mkxl/node-shp.lmt b/tex/context/base/mkxl/node-shp.lmt
index 7848c623e..7d73d9390 100644
--- a/tex/context/base/mkxl/node-shp.lmt
+++ b/tex/context/base/mkxl/node-shp.lmt
@@ -49,17 +49,17 @@ do
local report = logs.reporter("shipout")
- local trace = false trackers.register("backend", "cleanup", function(v) trace = v end)
+ local trace = false trackers.register("backend.cleanup", function(v) trace = v end)
- local flatten = true -- always true
+ local flatten = true -- also done as line option
local soften = true -- true by default
nodes.handlers.cleanuppage = function(head)
- local count = 0
+ -- local count = 0
local found = 0
local replaced = 0
if flatten then
- head, count = flattendiscretionaries(head)
+ head, count = flattendiscretionaries(head,true) -- nested
end
if soften then
head, found, replaced = softenhyphens(head) -- could have been a lua loop
diff --git a/tex/context/base/mkxl/pack-box.mkxl b/tex/context/base/mkxl/pack-box.mkxl
index 43f6bfbc7..28c1a42f0 100644
--- a/tex/context/base/mkxl/pack-box.mkxl
+++ b/tex/context/base/mkxl/pack-box.mkxl
@@ -1150,30 +1150,14 @@
\defineoverlay[#1:\v!background][\overlayanchorbox{#1:\v!background}]%
\defineoverlay[#1:\v!foreground][\overlayanchorbox{#1:\v!foreground}]}
-\permanent\def\namedboxanchor#1%
- {\csname\??boxanchorid#1\endcsname} % no checking
-
-% \permanent\protected\def\overlayanchorbox#1%
-% {\begingroup
-% \scratchcounter\csname\??boxanchorbox#1\endcsname
-% \ifvoid\scratchcounter\else
-% \setbox\scratchbox\hpack \s!source \namedboxanchor{#1}\bgroup
-% % \setbox\scratchbox\hpack\bgroup
-% \box\scratchcounter
-% \egroup
-% % \boxsource\scratchbox\namedboxanchor{#1}%
-% \wd\scratchbox\overlaywidth
-% \ht\scratchbox\overlayheight
-% \dp\scratchbox\overlaydepth
-% \box\scratchbox
-% \fi
-% \endgroup}
+\permanent\def\namedanchorbox#1%
+ {\begincsname\??boxanchorid#1\endcsname} % no checking
\permanent\protected\def\overlayanchorbox#1%
{\begingroup
\scratchcounter\csname\??boxanchorbox#1\endcsname
\ifvoid\scratchcounter\else
- \boxsource\scratchcounter\namedboxanchor{#1}%
+ \boxsource\scratchcounter\namedanchorbox{#1}%
\wd\scratchcounter\d_overlay_width
\ht\scratchcounter\d_overlay_height
\dp\scratchcounter\d_overlay_depth
@@ -1189,20 +1173,24 @@
\scratchcounterone\csname\??boxanchorbox#1\endcsname\relax
\scratchxoffset\boxanchorparameter\c!xoffset\relax
\scratchyoffset\boxanchorparameter\c!yoffset\relax
- \boxtarget\nextbox \namedboxanchor {#1}\relax
+ \boxtarget\nextbox \namedanchorbox {#1}\relax
\boxanchors\nextbox
% target
- \ifcsname\??boxpreset\boxanchorparameter\c!target\endcsname
- \lastnamedcs
- \else
- \halfwaytotallistanchorcode
- \fi
+ \numexpr
+ \ifcsname\??boxpreset\boxanchorparameter\c!target\endcsname
+ \lastnamedcs
+ \else
+ \halfwaytotallistanchorcode
+ \fi
+ \relax
% source
- \ifcsname\??boxpreset\boxanchorparameter\c!source\endcsname
- \lastnamedcs
- \else
- \halfwaytotallistanchorcode
- \fi
+ \numexpr
+ \ifcsname\??boxpreset\boxanchorparameter\c!source\endcsname
+ \lastnamedcs
+ \else
+ \halfwaytotallistanchorcode
+ \fi
+ \relax
\ifdim\scratchxoffset=\zeropoint\else
\boxxoffset\nextbox\scratchxoffset
\fi
diff --git a/tex/context/base/mkxl/task-ini.lmt b/tex/context/base/mkxl/task-ini.lmt
index 0cb473651..862192c83 100644
--- a/tex/context/base/mkxl/task-ini.lmt
+++ b/tex/context/base/mkxl/task-ini.lmt
@@ -98,6 +98,8 @@ appendaction("shipouts", "wrapup", "nodes.handlers.export",
appendaction("shipouts", "wrapup", "luatex.synctex.collect", nil, "nut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.showtree", nil, "nonut", "disabled" )
+appendaction("math", "normalizers", "noads.handlers.numbers", nil, "nonut", "disabled" )
+appendaction("math", "normalizers", "noads.handlers.spacing", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.unscript", nil, "nonut", "enabled" )
appendaction("math", "normalizers", "noads.handlers.unstack", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.relocate", nil, "nonut", "enabled" )
@@ -112,7 +114,7 @@ appendaction("math", "normalizers", "noads.handlers.resize",
------------("math", "normalizers", "noads.handlers.respace", nil, "nonut", "enabled" )
appendaction("math", "normalizers", "noads.handlers.alternates", nil, "nonut", "enabled" )
appendaction("math", "normalizers", "noads.handlers.tags", nil, "nonut", "disabled" )
-appendaction("math", "normalizers", "noads.handlers.italics", nil, "nonut", "disabled" )
+------------("math", "normalizers", "noads.handlers.italics", nil, "nonut", "disabled" ) -- replaced
appendaction("math", "normalizers", "noads.handlers.kernpairs", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.classes", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.dictionaries", nil, "nonut", "enabled" )
diff --git a/tex/context/base/mkxl/typo-cap.lmt b/tex/context/base/mkxl/typo-cap.lmt
index 4a55c410f..5d7dfdedb 100644
--- a/tex/context/base/mkxl/typo-cap.lmt
+++ b/tex/context/base/mkxl/typo-cap.lmt
@@ -38,7 +38,7 @@ local copy_node = nuts.copy
local endofmath = nuts.endofmath
local insertafter = nuts.insertafter
local findattribute = nuts.findattribute
-local unsetattributes = nuts.unsetattributes
+----- unsetattributes = nuts.unsetattributes
local nextglyph = nuts.traversers.glyph
diff --git a/tex/context/base/mkxl/typo-itc.lmt b/tex/context/base/mkxl/typo-itc.lmt
index dd7945eab..f2f6c428e 100644
--- a/tex/context/base/mkxl/typo-itc.lmt
+++ b/tex/context/base/mkxl/typo-itc.lmt
@@ -6,17 +6,22 @@ if not modules then modules = { } end modules ['typo-itc'] = {
license = "see context related readme files"
}
+-- very old code ...
+
local tonumber = tonumber
local trace_italics = false trackers.register("typesetters.italics", function(v) trace_italics = v end)
local report_italics = logs.reporter("nodes","italics")
-local threshold = 0.5 trackers.register("typesetters.threshold", function(v) threshold = v == true and 0.5 or tonumber(v) end)
+local threshold = 0.5 directives.register("typesetters.italics.threshold", function(v) threshold = v == true and 0.5 or tonumber(v) end)
typesetters.italics = typesetters.italics or { }
local italics = typesetters.italics
+local variables = interfaces.variables
+local settings_to_hash = utilities.parsers.settings_to_hash
+
local nodecodes = nodes.nodecodes
local glyph_code = nodecodes.glyph
local kern_code = nodecodes.kern
@@ -120,11 +125,11 @@ end
-- todo: clear attribute
local function correction_okay(n)
- return not (getoptions(n) & no_correction_code)
+ return not (getoptions(n) & no_correction_code == no_correction_code)
end
local function okay(data,current,font,prevchar,previtalic,char,what)
- if getoptions(current) & no_correction_code then
+ if getoptions(current) & no_correction_code == no_correction_code then
if trace_italics then
report_italics("ignoring %p between %s italic %C and italic %C, %s",previtalic,what,prevchar,char,"disabled")
end
@@ -203,7 +208,8 @@ local function domath(head,current)
local char, id = isglyph(next)
if char and correction_okay(next) then
-- we can have an old font where italic correction has been applied
- -- or a new one where it hasn't been done
+ -- or a new one where it hasn't been done ... actually, we now always
+ -- have one under detailed engine control
local kern = getprev(current)
if kern and getid(kern) == kern_code then
local glyph = getprev(kern)
@@ -212,12 +218,7 @@ local function domath(head,current)
-- punctuation
if is_punctuation[char] then
local a = getattr(glyph,a_mathitalics)
- if a and (a < 100 or a > 100) then
- if a > 100 then
- a = a - 100
- else
- a = a + 100
- end
+ if a then
local i = getkern(kern)
local c, f = isglyph(glyph)
if getheight(next) < 1.25*exheights[f] then
@@ -231,45 +232,45 @@ local function domath(head,current)
end
setkern(kern,0) -- or maybe a small value or half the ic
end
- elseif i == 0 then
- local d = chardata[f][c]
- local i = d.italic
- if i == 0 then
- if trace_italics then
- report_italics("%s italic %p between math %C and punctuation %C","ignoring",i,c,char)
- end
- else
- setkern(kern,i)
- if trace_italics then
- report_italics("%s italic %p between math %C and punctuation %C","setting",i,c,char)
- end
- end
+ -- elseif i == 0 then
+ -- local d = chardata[f][c]
+ -- local i = d.italic
+ -- if i == 0 then
+ -- if trace_italics then
+ -- report_italics("%s italic %p between math %C and punctuation %C","ignoring",i,c,char)
+ -- end
+ -- else
+ -- setkern(kern,i)
+ -- if trace_italics then
+ -- report_italics("%s italic %p between math %C and punctuation %C","setting",i,c,char)
+ -- end
+ -- end
elseif trace_italics then
report_italics("%s italic %p between math %C and punctuation %C","keeping",k,c,char)
end
end
end
end
- else
- local glyph = kern
- if glyph and getid(glyph) == glyph_code then
- -- [math: <glyph>]<glyph> : we add the correction when we have
- -- no punctuation
- if not is_punctuation[char] then
- local a = getattr(glyph,a_mathitalics)
- if a and (a < 100 or a > 100) then
- if a > 100 then
- a = a - 100
- else
- a = a + 100
- end
- if trace_italics then
- report_italics("%s italic %p between math %C and non punctuation %C","adding",a,getchar(glyph),char)
- end
- insertnodeafter(head,glyph,correction_kern(a,glyph))
- end
- end
- end
+ -- else
+ -- local glyph = kern
+ -- if glyph and getid(glyph) == glyph_code then
+ -- -- [math: <glyph>]<glyph> : we add the correction when we have
+ -- -- no punctuation
+ -- if not is_punctuation[char] then
+ -- local a = getattr(glyph,a_mathitalics)
+ -- if a and (a < 100 or a > 100) then
+ -- if a > 100 then
+ -- a = a - 100
+ -- else
+ -- a = a + 100
+ -- end
+ -- if trace_italics then
+ -- report_italics("%s italic %p between math %C and non punctuation %C","adding",a,getchar(glyph),char)
+ -- end
+ -- insertnodeafter(head,glyph,correction_kern(a,glyph))
+ -- end
+ -- end
+ -- end
end
end
end
@@ -668,9 +669,6 @@ implement {
actions = italics.reset,
}
-local variables = interfaces.variables
-local settings_to_hash = utilities.parsers.settings_to_hash
-
local function setupitaliccorrection(option) -- no grouping !
if enabletext then
enabletext()
diff --git a/tex/context/base/mkxl/typo-rub.lmt b/tex/context/base/mkxl/typo-rub.lmt
index f5bba7f7f..0de0221ef 100644
--- a/tex/context/base/mkxl/typo-rub.lmt
+++ b/tex/context/base/mkxl/typo-rub.lmt
@@ -73,6 +73,8 @@ local new_kern = nodepool.kern
local setprop = nuts.setprop
local getprop = nuts.getprop
+local findattribute = nuts.findattribute
+
local enableaction = nodes.tasks.enableaction
local nofrubies = 0
@@ -86,6 +88,12 @@ typesetters.rubies = rubies
local trace_rubies = false trackers.register("typesetters.rubies",function(v) trace_rubies = v end)
local report_rubies = logs.reporter("rubies")
+-- todo: use the more modern lmtx storage model
+
+local registervalue = attributes.registervalue
+local getvalue = attributes.getvalue
+local texsetattribute = tex.setattribute
+
do
local shared = nil
@@ -177,8 +185,9 @@ do
start = false,
stop = false,
}
- rubylist[nofrubies] = setmetatableindex(t, shared)
- texsetattribute(a_ruby,nofrubies)
+ -- rubylist[nofrubies] = setmetatableindex(t,shared)
+ -- texsetattribute(a_ruby,nofrubies)
+ texsetattribute(a_ruby,registervalue(a_ruby,setmetatableindex(t,shared)))
end
implement {
@@ -189,51 +198,156 @@ do
end
+-- function rubies.check(head)
+-- local current = head
+-- local start = nil
+-- local stop = nil
+-- local found = nil
+--
+-- local function flush(where)
+-- local r = rubylist[found]
+-- if r then
+-- local prev = getprev(start)
+-- local next = getnext(stop)
+-- setprev(start)
+-- setnext(stop)
+-- local h = hpack(start)
+-- if start == head then
+-- head = h
+-- else
+-- setlink(prev,h)
+-- end
+-- setlink(h,next)
+-- local bwidth = getwidth(h)
+-- local rwidth = r.width
+-- r.basewidth = bwidth
+-- r.start = start
+-- r.stop = stop
+-- setprop(h,"ruby",found)
+-- if rwidth > bwidth then
+-- -- ruby is wider
+-- setwidth(h,rwidth)
+-- end
+-- end
+-- end
+--
+-- while current do
+-- local nx = getnext(current)
+-- local id = getid(current)
+-- if id == glyph_code then
+-- local a = getattr(current,a_ruby)
+-- if not a then
+-- if found then
+-- flush("flush 1")
+-- found = nil
+-- end
+-- elseif a == found then
+-- stop = current
+-- else
+-- if found then
+-- flush("flush 2")
+-- end
+-- found = a
+-- start = current
+-- stop = current
+-- end
+-- -- go on
+-- elseif id == kern_code and getsubtype(current,fontkern_code) then
+-- -- go on
+-- elseif found and id == disc_code then
+-- -- go on (todo: look into disc)
+-- elseif found then
+-- flush("flush 3")
+-- found = nil
+-- end
+-- current = nx
+-- end
+--
+-- if found then
+-- flush("flush 4")
+-- end
+-- return head, true -- no need for true
+-- end
+
function rubies.check(head)
- local current = head
- local start = nil
- local stop = nil
- local found = nil
-
- local function flush(where)
- local r = rubylist[found]
- if r then
- local prev = getprev(start)
- local next = getnext(stop)
- setprev(start)
- setnext(stop)
- local h = hpack(start)
- if start == head then
- head = h
- else
- setlink(prev,h)
- end
- setlink(h,next)
- local bwidth = getwidth(h)
- local rwidth = r.width
- r.basewidth = bwidth
- r.start = start
- r.stop = stop
- setprop(h,"ruby",found)
- if rwidth > bwidth then
- -- ruby is wider
- setwidth(h,rwidth)
+ local _, current = findattribute(head,a_ruby)
+ if current then
+
+ local start = nil
+ local stop = nil
+ local found = nil
+
+ local function flush(where)
+-- local r = rubylist[found]
+local r = getvalue(a_ruby,found)
+ if r then
+ -- can be an option
+ while start ~= stop and getid(start) == glue_code do
+ start = getnext(start)
+ end
+ while stop ~= start and getid(stop) == glue_code do
+ stop = getprev(stop)
+ end
+ --
+ local prev = getprev(start)
+ local next = getnext(stop)
+ setprev(start)
+ setnext(stop)
+ local h = hpack(start)
+ if start == head then
+ head = h
+ else
+ setlink(prev,h)
+ end
+ setlink(h,next)
+ local bwidth = getwidth(h)
+ local rwidth = r.width
+ r.basewidth = bwidth
+ r.start = start
+ r.stop = stop
+ setprop(h,"ruby",found)
+ if rwidth > bwidth then
+ -- ruby is wider
+ setwidth(h,rwidth)
+ end
end
end
- end
- while current do
- local nx = getnext(current)
- local id = getid(current)
- if id == glyph_code then
+-- while current do
+-- local nx = getnext(current)
+-- local a = getattr(current,a_ruby)
+-- if not a then
+-- if found then
+-- flush("flush 1")
+-- found = nil
+-- end
+-- elseif a == found then
+-- stop = current
+-- else
+-- if found then
+-- flush("flush 2")
+-- end
+-- found = a
+-- start = current
+-- stop = current
+-- end
+-- current = nx
+-- end
+
+ -- todo: we can avoid a lookup
+
+ while current do
+ local nx = getnext(current)
local a = getattr(current,a_ruby)
if not a then
if found then
flush("flush 1")
found = nil
end
+_, current = findattribute(nx,a_ruby)
elseif a == found then
stop = current
+current = nx
else
if found then
flush("flush 2")
@@ -241,30 +355,26 @@ function rubies.check(head)
found = a
start = current
stop = current
+current = nx
end
- -- go on
- elseif id == kern_code and getsubtype(current,fontkern_code) then
- -- go on
- elseif found and id == disc_code then
- -- go on (todo: look into disc)
- elseif found then
- flush("flush 3")
- found = nil
end
- current = nx
+
end
+
if found then
flush("flush 4")
end
return head, true -- no need for true
end
+
local attach
local function whatever(current,list)
local a = getprop(current,"ruby")
if a then
- local ruby = rubylist[a]
+-- local ruby = rubylist[a]
+local ruby = getvalue(a_ruby,a)
local align = ruby.align or v_middle
local stretch = ruby.stretch or v_no
local hoffset = ruby.hoffset or 0
@@ -358,7 +468,7 @@ local function whatever(current,list)
setlist(current,text)
end
setprop(current,"ruby",false)
- rubylist[a] = nil
+-- rubylist[a] = nil
elseif list then
attach(list)
end
diff --git a/tex/context/fonts/mkiv/pagella-math.lfg b/tex/context/fonts/mkiv/pagella-math.lfg
index 9be98adcf..021bd2b7f 100644
--- a/tex/context/fonts/mkiv/pagella-math.lfg
+++ b/tex/context/fonts/mkiv/pagella-math.lfg
@@ -261,6 +261,18 @@ return {
tweak = "addfourier",
variant = 1,
},
+
+{
+ tweak = "kernpairs",
+ list = {
+ -- beware: we kept the italic correction in spite of punctuation class
+ [0x1D453] = { -- f
+ [0x3A] = -.1,
+ [0x3B] = -.1,
+ },
+ },
+},
+
},
},
bigslots = {
diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml
index 2ff113ecd..51785d147 100644
--- a/tex/context/interface/mkii/keys-de.xml
+++ b/tex/context/interface/mkii/keys-de.xml
@@ -96,7 +96,6 @@
<cd:variable name='author' value='autor'/>
<cd:variable name='auto' value='auto'/>
<cd:variable name='autointro' value='autointro'/>
- <cd:variable name='autopunctuation' value='autopunctuation'/>
<cd:variable name='back' value='zurueck'/>
<cd:variable name='background' value='hintergrund'/>
<cd:variable name='backmatter' value='epiloge'/>
@@ -686,6 +685,9 @@
<cd:constant name='autofile' value='autofile'/>
<cd:constant name='autofocus' value='autofocus'/>
<cd:constant name='autohang' value='autohang'/>
+ <cd:constant name='autonumbers' value='autonumbers'/>
+ <cd:constant name='autopunctuation' value='autopunctuation'/>
+ <cd:constant name='autospacing' value='autospacing'/>
<cd:constant name='autostrut' value='autostrut'/>
<cd:constant name='autowidth' value='autobreite'/>
<cd:constant name='availableheight' value='availableheight'/>
@@ -876,6 +878,7 @@
<cd:constant name='frameradius' value='rahmenradius'/>
<cd:constant name='frames' value='umrahmen'/>
<cd:constant name='freeregion' value='freeregion'/>
+ <cd:constant name='freezespacing' value='freezespacing'/>
<cd:constant name='from' value='von'/>
<cd:constant name='functioncolor' value='functioncolor'/>
<cd:constant name='functionstyle' value='functionstyle'/>
@@ -956,6 +959,7 @@
<cd:constant name='lastpubsep' value='lastpubsep'/>
<cd:constant name='layout' value='layout'/>
<cd:constant name='left' value='links'/>
+ <cd:constant name='leftclass' value='leftclass'/>
<cd:constant name='leftcolor' value='linkerfarbe'/>
<cd:constant name='leftcompoundhyphen' value='leftcompoundhyphen'/>
<cd:constant name='leftedge' value='linkekante'/>
@@ -1014,6 +1018,7 @@
<cd:constant name='menu' value='menue'/>
<cd:constant name='method' value='methode'/>
<cd:constant name='middle' value='mittig'/>
+ <cd:constant name='middleclass' value='middleclass'/>
<cd:constant name='middlecolor' value='middlecolor'/>
<cd:constant name='middlecommand' value='middlecommand'/>
<cd:constant name='middlesource' value='middlesource'/>
@@ -1060,6 +1065,8 @@
<cd:constant name='numberconversionset' value='numberconversionset'/>
<cd:constant name='numberdistance' value='numberdistance'/>
<cd:constant name='numbering' value='nummerierung'/>
+ <cd:constant name='numberlocation' value='numberlocation'/>
+ <cd:constant name='numbermethod' value='numbermethod'/>
<cd:constant name='numberorder' value='numberorder'/>
<cd:constant name='numberprefix' value='numberprefix'/>
<cd:constant name='numbersegments' value='numbersegments'/>
@@ -1070,6 +1077,7 @@
<cd:constant name='numberstopper' value='numberstopper'/>
<cd:constant name='numberstrut' value='numberstrut'/>
<cd:constant name='numberstyle' value='nummernstil'/>
+ <cd:constant name='numberthreshold' value='numberthreshold'/>
<cd:constant name='numberwidth' value='numberwidth'/>
<cd:constant name='nx' value='nx'/>
<cd:constant name='ny' value='ny'/>
@@ -1123,6 +1131,7 @@
<cd:constant name='palet' value='palette'/>
<cd:constant name='paper' value='papier'/>
<cd:constant name='paragraph' value='absatz'/>
+ <cd:constant name='penalties' value='penalties'/>
<cd:constant name='period' value='period'/>
<cd:constant name='place' value='platziere'/>
<cd:constant name='placehead' value='setzekopf'/>
@@ -1176,6 +1185,7 @@
<cd:constant name='reverse' value='reverse'/>
<cd:constant name='right' value='rechts'/>
<cd:constant name='rightchars' value='rightchars'/>
+ <cd:constant name='rightclass' value='rightclass'/>
<cd:constant name='rightcolor' value='rechterfarbe'/>
<cd:constant name='rightcompoundhyphen' value='rightcompoundhyphen'/>
<cd:constant name='rightedge' value='rechtekante'/>
diff --git a/tex/context/interface/mkii/keys-it.xml b/tex/context/interface/mkii/keys-it.xml
index eedcdaa82..08686da99 100644
--- a/tex/context/interface/mkii/keys-it.xml
+++ b/tex/context/interface/mkii/keys-it.xml
@@ -96,7 +96,6 @@
<cd:variable name='author' value='autore'/>
<cd:variable name='auto' value='auto'/>
<cd:variable name='autointro' value='autointro'/>
- <cd:variable name='autopunctuation' value='autopunctuation'/>
<cd:variable name='back' value='dietro'/>
<cd:variable name='background' value='sfondo'/>
<cd:variable name='backmatter' value='postambolo'/>
@@ -686,6 +685,9 @@
<cd:constant name='autofile' value='autofile'/>
<cd:constant name='autofocus' value='autofocus'/>
<cd:constant name='autohang' value='autohang'/>
+ <cd:constant name='autonumbers' value='autonumbers'/>
+ <cd:constant name='autopunctuation' value='autopunctuation'/>
+ <cd:constant name='autospacing' value='autospacing'/>
<cd:constant name='autostrut' value='autostrut'/>
<cd:constant name='autowidth' value='autoampiezza'/>
<cd:constant name='availableheight' value='availableheight'/>
diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml
index 78255c1cc..360ec0f64 100644
--- a/tex/context/interface/mkii/keys-ro.xml
+++ b/tex/context/interface/mkii/keys-ro.xml
@@ -96,7 +96,6 @@
<cd:variable name='author' value='autor'/>
<cd:variable name='auto' value='auto'/>
<cd:variable name='autointro' value='autointro'/>
- <cd:variable name='autopunctuation' value='autopunctuation'/>
<cd:variable name='back' value='inapot'/>
<cd:variable name='background' value='fundal'/>
<cd:variable name='backmatter' value='epilogul'/>
@@ -686,6 +685,9 @@
<cd:constant name='autofile' value='autofile'/>
<cd:constant name='autofocus' value='autofocus'/>
<cd:constant name='autohang' value='autohang'/>
+ <cd:constant name='autonumbers' value='autonumbers'/>
+ <cd:constant name='autopunctuation' value='autopunctuation'/>
+ <cd:constant name='autospacing' value='autospacing'/>
<cd:constant name='autostrut' value='autostrut'/>
<cd:constant name='autowidth' value='autolatime'/>
<cd:constant name='availableheight' value='availableheight'/>
diff --git a/tex/context/modules/mkiv/s-abbreviations-logos.tex b/tex/context/modules/mkiv/s-abbreviations-logos.tex
index dfac57f0a..ab2b98a56 100644
--- a/tex/context/modules/mkiv/s-abbreviations-logos.tex
+++ b/tex/context/modules/mkiv/s-abbreviations-logos.tex
@@ -42,6 +42,7 @@
\logo [ANSI] {ansi}
\logo [APA] {apa}
\logo [API] {api}
+\logo [APL] {apl}
\logo [ARABTEX] {Arab\TeXsuffix}
\logo [ARM] {arm}
\logo [ASCII] {ascii}
diff --git a/tex/context/modules/mkxl/m-gimmicks.mkxl b/tex/context/modules/mkxl/m-gimmicks.mkxl
index e2659ae99..bdf044488 100644
--- a/tex/context/modules/mkxl/m-gimmicks.mkxl
+++ b/tex/context/modules/mkxl/m-gimmicks.mkxl
@@ -1,6 +1,6 @@
%D \module
%D [ file=m-gimmicks,
-%D version=2022.07.25
+%D version=2022.08.25
%D title=\CONTEXT\ Extra Modules,
%D subtitle=Whatever comes up,
%D author=Hans Hagen,
@@ -41,13 +41,13 @@
% Question on mailing list:
-\chardef\MacAnulty = \getprivateglyphslot{MacAnulty}
+\chardef\MacAnulty = \privatecharactercode{MacAnulty}
-\startsetups [box:demo:\number\MacAnulty]
+\startsetups [box:mcanulty:\number\MacAnulty]
\Mac Anulty
\stopsetups
-\registerboxglyph category {demo} unicode \MacAnulty \relax
+\registerboxglyph category {mcanulty} unicode \MacAnulty \relax
\startluacode
fonts.handlers.otf.addfeature {
@@ -55,13 +55,17 @@
type = "ligature",
nocheck = true,
data = {
- -- [\number\MacAnulty] = { "M", "c", "A", "n", "u", "l", "t", "y", },
- [fonts.constructors.privateslots.MacAnulty] = { "M", "c", "A", "n", "u", "l", "t", "y", },
+ -- [\number\MacAnulty] = {
+ -- [fonts.constructors.privateslots.MacAnulty] = {
+ [fonts.helpers.privateslot("MacAnulty")] = {
+ "M", "c", "A", "n", "u", "l", "t", "y",
+ },
}
}
\stopluacode
-\definefontfeature[whatever][default][box=demo,mcanulty=yes]
+\definefontfeature[whatever][default][box=mcanulty,mcanulty=yes]
+\definefontfeature[default][default][box=mcanulty,mcanulty=yes]
\startTEXpage [offset=10dk]
% \def\Test#1{%
@@ -83,7 +87,10 @@
% \def\MacKern {-.1}
% \Mac Anulty
-\definedfont[Serif*whatever] McAnulty\quad \MacAnulty\par
-\definedfont[SerifBold*whatever] McAnulty\quad \MacAnulty\par
+{\definedfont[Serif*whatever] McAnulty\quad \MacAnulty\par}
+{\definedfont[SerifBold*whatever] McAnulty\quad \MacAnulty\par}
+
+{\tf McAnulty\quad \MacAnulty\par}
+{\bf McAnulty\quad \MacAnulty\par}
\stopTEXpage
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 0c0f32e66..1b464f549 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-08-25 19:18
+-- merge date : 2022-09-10 02:42
do -- begin closure to overcome local limits and interference