summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2022-08-05 12:41:19 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2022-08-05 12:41:19 +0200
commit79db9f0bfc67ea8b4ed21d966e270f0adddfd8b8 (patch)
tree47d1b3ffd491caa9bd24117387d7eb7ba5535637
parent1e83b1b27a30fc8df44607a37103b6c65efec538 (diff)
downloadcontext-79db9f0bfc67ea8b4ed21d966e270f0adddfd8b8.tar.gz
2022-08-05 11:41:00
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua2
-rw-r--r--context/data/scite/context/scite-context-data-context.properties16
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties212
-rw-r--r--doc/context/documents/general/manuals/luametatex.pdfbin1419352 -> 1429915 bytes
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex486
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-math.tex2
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex13
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex.tex3
-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-fr.mkii8
-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/lxml-tex.lua2
-rw-r--r--tex/context/base/mkiv/mult-low.lua1
-rw-r--r--tex/context/base/mkiv/mult-prm.lua9
-rw-r--r--tex/context/base/mkiv/scrp-cjk.lua1
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24614 -> 24626 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin258885 -> 259607 bytes
-rw-r--r--tex/context/base/mkxl/attr-ini.lmt10
-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/lpdf-lmt.lmt2
-rw-r--r--tex/context/base/mkxl/math-ali.lmt17
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl37
-rw-r--r--tex/context/base/mkxl/math-dif.mkxl9
-rw-r--r--tex/context/base/mkxl/math-fen.mkxl23
-rw-r--r--tex/context/base/mkxl/math-ini.lmt141
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl69
-rw-r--r--tex/context/base/mkxl/math-spa.lmt36
-rw-r--r--tex/context/base/mkxl/math-twk.mkxl22
-rw-r--r--tex/context/base/mkxl/node-nut.lmt6
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl9
-rw-r--r--tex/context/fonts/mkiv/asana-math.lfg7
-rw-r--r--tex/context/fonts/mkiv/bonum-math.lfg64
-rw-r--r--tex/context/fonts/mkiv/cambria-math.lfg18
-rw-r--r--tex/context/fonts/mkiv/dejavu-math.lfg52
-rw-r--r--tex/context/fonts/mkiv/ebgaramond.lfg90
-rw-r--r--tex/context/fonts/mkiv/erewhon-math.lfg38
-rw-r--r--tex/context/fonts/mkiv/garamond-math.lfg35
-rw-r--r--tex/context/fonts/mkiv/kpfonts-math.lfg32
-rw-r--r--tex/context/fonts/mkiv/libertinus-math.lfg38
-rw-r--r--tex/context/fonts/mkiv/lm.lfg38
-rw-r--r--tex/context/fonts/mkiv/lucida-opentype-math.lfg54
-rw-r--r--tex/context/fonts/mkiv/pagella-math.lfg55
-rw-r--r--tex/context/fonts/mkiv/schola-math.lfg54
-rw-r--r--tex/context/fonts/mkiv/stix-two-math.lfg55
-rw-r--r--tex/context/fonts/mkiv/termes-math.lfg56
-rw-r--r--tex/context/interface/mkii/keys-fr.xml8
-rw-r--r--tex/context/modules/mkxl/x-mathml.mkxl39
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
52 files changed, 1636 insertions, 249 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 dd21a5947..9d03c9fff 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", "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", "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", "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", "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", "Umathbotaccent", "Umathtopaccent", "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 deb35658d..9e2bf9f2a 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
@@ -1,7 +1,7 @@
return {
["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" },
["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "unexpanded", "unless", "widowpenalties" },
- ["luatex"]={ "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "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", "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", "Ustopdisplaymath", "Ustopmath", "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", "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", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathleftclass", "mathlimitsmode", "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", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "skewed", "skewedwithdelims", "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", "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", "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", "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", "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", "mathinlinemainstyle", "mathleftclass", "mathlimitsmode", "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", "skewed", "skewedwithdelims", "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" },
["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", "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" },
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
index 9a9f807a8..a482dc98b 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -112,14 +112,14 @@ flattenhleadersnormalizecode normalizeparnormalizeparcode flattenvleadersnormali
lefttopkernclassoptioncode righttopkernclassoptioncode leftbottomkernclassoptioncode rightbottomkernclassoptioncode lookaheadforendclassoptioncode \
noitaliccorrectionclassoptioncode defaultmathclassoptions checkligatureclassoptioncode checkitaliccorrectionclassoptioncode checkkernpairclassoptioncode \
flattenclassoptioncode omitpenaltyclassoptioncode unpackclassoptioncode raiseprimeclassoptioncode carryoverlefttopkernclassoptioncode \
-carryoverleftbottomkernclassoptioncode carryoverrighttopkernclassoptioncode carryoverrightbottomkernclassoptioncode 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
+carryoverleftbottomkernclassoptioncode carryoverrighttopkernclassoptioncode carryoverrightbottomkernclassoptioncode preferdelimiterdimensionsclassoptioncode 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 97a71a5c6..c753551b9 100644
--- a/context/data/scite/context/scite-context-data-tex.properties
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -24,111 +24,113 @@ Umathaccenttopovershoot Umathaccenttopshiftup Umathaccentvariant Umathadapttolef
Umathaxis Umathbotaccentvariant Umathchar Umathcharclass Umathchardef \
Umathcharfam Umathcharnum Umathcharnumdef Umathcharslot Umathclass \
Umathcode Umathcodenum Umathconnectoroverlapmin Umathdegreevariant Umathdelimiterovervariant \
-Umathdelimiterpercent Umathdelimitershortfall Umathdelimiterundervariant Umathdenominatorvariant 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 \
-Ustopdisplaymath Ustopmath 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 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 mathdirection mathdisplaymode mathdisplayskipmode \
-mathdoublescriptmode mathendclass matheqnogapstep mathfenced mathfontcontrol \
-mathforwardpenalties mathfrac mathghost mathgluemode mathgroupingmode \
-mathleftclass mathlimitsmode 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 setmathignore setmathoptions setmathpostpenalty \
-setmathprepenalty setmathspacing shapingpenaltiesmode shapingpenalty skewed \
-skewedwithdelims 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
+Umathdelimiterpercent Umathdelimitershortfall Umathdelimiterundervariant Umathdenominatorvariant Umathdict \
+Umathdictdef 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 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 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 mathinlinemainstyle mathleftclass mathlimitsmode 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 skewed skewedwithdelims \
+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
keywordclass.tex.omega=\
Omegaminorversion Omegarevision Omegaversion
diff --git a/doc/context/documents/general/manuals/luametatex.pdf b/doc/context/documents/general/manuals/luametatex.pdf
index e7c0b89f0..e540e7f6d 100644
--- a/doc/context/documents/general/manuals/luametatex.pdf
+++ b/doc/context/documents/general/manuals/luametatex.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
index d01e35b4a..5e96bddb5 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex
@@ -16,18 +16,20 @@
\libindex{known}
{\em The callbacks are a moving target. Don't bother me with questions about
-them.}
+them. Some are new and/or experimental and therefore not yet documented. In
+\CONTEXT\ we can easily adapt interfaces so changes in these have no real effect
+on users. Of course in due time all will be official and documented.}
This library has functions that register, find and list callbacks. Callbacks are
\LUA\ functions that are called in well defined places. There are two kinds of
callbacks: those that mix with existing functionality, and those that (when
-enabled) replace functionality. In mosty cases the second category is expected to
-behave similar to the built in functionality because in a next step specific
-data is expected. For instance, you can replace the hyphenation routine. The
-function gets a list that can be hyphenated (or not). The final list should be
-valid and is (normally) used for constructing a paragraph. Another function can
-replace the ligature builder and|/|or kerner. Doing something else is possible
-but in the end might not give the user the expected outcome.
+enabled) replace functionality. In most cases the second category is expected to
+behave similar to the built in functionality because in a next step specific data
+is expected. For instance, you can replace the hyphenation routine. The function
+gets a list that can be hyphenated (or not). The final list should be valid and
+is (normally) used for constructing a paragraph. Another function can replace the
+ligature builder and|/|or kern routine. Doing something else is possible but in
+the end might not give the user the expected outcome.
The first thing you need to do is registering a callback:
@@ -76,7 +78,7 @@ if callback.known("foo") then ... end
\startsection[title={File related callbacks}][library=callback]
-\subsection{\cbk {find_format_file} and \cbk {find_log_file}}
+\startsubsection[title={\cbk {find_format_file} and \cbk {find_log_file}}]
\topicindex{callbacks+format file}
\topicindex{callbacks+log file}
@@ -91,7 +93,9 @@ These callbacks are called as:
The \type {askedname} is a format file for reading (the format file for writing
is always opened in the current directory) or a log file for writing.
-\subsection{\cbk {open_data_file}}
+\stopsubsection
+
+\startsubsection[title={\cbk {open_data_file}}]
\topicindex{callbacks+opening files}
@@ -125,11 +129,13 @@ their only argument.
% function ()
% \stopfunctioncall
+\stopsubsection
+
\stopsection
\startsection[title={Data processing callbacks}][library=callback]
-\subsection{\cbk {process_jobname}}
+\startsubsection[title={\cbk {process_jobname}}]
\topicindex{callbacks+jobname}
@@ -148,13 +154,15 @@ inside this function or infinite recursion may occur. If you return \type {nil},
\LUATEX\ will pretend your callback never happened. This callback does not
replace any internal code.
+\stopsubsection
+
\stopsection
\startsection[title={Node list processing callbacks}][library=callback]
The description of nodes and node lists is in~\in{chapter}[nodes].
-\subsection{\cbk {contribute_filter}}
+\startsubsection[title={\cbk {contribute_filter}}]
\topicindex{callbacks+contributions}
@@ -178,7 +186,9 @@ what list you can give a treat.
\LL
\stoptabulate
-\subsection{\cbk {buildpage_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {buildpage_filter}}]
\topicindex{callbacks+building pages}
@@ -211,7 +221,9 @@ state is with respect to the \quote {current page}. The possible values for the
\LL
\stoptabulate
-\subsection{\cbk {build_page_insert}}
+\stopsubsection
+
+\startsubsection[title={\cbk {build_page_insert}}]
\topicindex{callbacks+inserts}
@@ -242,7 +254,9 @@ prepended spacing. This permits for instance a different top space (when \type
course you can mess with the insert box but you need to make sure that \LUATEX\
is happy afterwards.
-\subsection{\cbk {pre_linebreak_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {pre_linebreak_filter}}]
\topicindex{callbacks+linebreaks}
@@ -300,7 +314,9 @@ three things:
This callback does not replace any internal code.
-\subsection{\cbk {linebreak_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {linebreak_filter}}]
\topicindex{callbacks+linebreaks}
@@ -325,7 +341,9 @@ represent an \prm {hbox}. Failure to do so will result in a fatal error.
Setting this callback to \type {false} is possible, but dangerous, because it is
possible you will end up in an unfixable \quote {deadcycles loop}.
-\subsection{\type {append_to_vlist_filter}}
+\stopsubsection
+
+\startsubsection[title={\type {append_to_vlist_filter}}]
\topicindex{callbacks+contributions}
@@ -344,7 +362,9 @@ the box or deal with it yourself. The prevdepth is also optional. Locations are
\type {post_linebreak}. When the third argument returned is \type {true} the
normal prevdepth correction will be applied, based on the first node.
-\subsection{\cbk {post_linebreak_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {post_linebreak_filter}}]
\topicindex{callbacks+linebreaks}
@@ -359,9 +379,14 @@ end
This callback does not replace any internal code.
-\subsection{\cbk {glyph_run}}
+\stopsubsection
+
+\startsubsection[title={\cbk {glyph_run}}]
\topicindex{callbacks+fonts}
+\topicindex{callbacks+hyphenation}
+\topicindex{callbacks+kerning}
+\topicindex{callbacks+ligature building}
When set this callback is triggered when \TEX\ normally handles the ligaturing
and kerning. In \LUATEX\ you use the \typ {hpack_filter} and \typ
@@ -379,7 +404,9 @@ The traditional \TEX\ font processing is bypassed so you need to take care of th
with the helpers. (For the moment we keep the ligaturing and kerning callbacks but
they are kind of obsolete.)
-\subsection{\cbk {hpack_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {hpack_filter}}]
\topicindex{callbacks+packing}
@@ -400,7 +427,9 @@ the number is in scaled points.
This callback does not replace any internal code.
-\subsection{\cbk {vpack_filter}}
+\stopsubsection
+
+\startsubsection[title={\cbk {vpack_filter}}]
\topicindex{callbacks+packing}
@@ -420,47 +449,70 @@ end
This callback does not replace any internal code.
-\subsection{\type {hpack_quality}}
+\stopsubsection
+
+\startsubsection[title={\cbk {packed_vbox_filter}}]
\topicindex{callbacks+packing}
-This callback can be used to intercept the overfull messages that can result from
-packing a horizontal list (as happens in the par builder). The function takes a
-few arguments:
+After the \cbk {vpack_filter} callback (see previous section) is triggered the
+box get packed and after that this callback can be configured to kick in.
\startfunctioncall
-function(<string> incident, <number> detail, <node> head, <number> first,
- <number> last)
- return <node> whatever
+function(<node> head, <string> groupcode)
+ return <node> newhead
end
\stopfunctioncall
-The incident is one of \type {overfull}, \type {underfull}, \type {loose} or
-\type {tight}. The detail is either the amount of overflow in case of \type
-{overfull}, or the badness otherwise. The head is the list that is constructed
-(when protrusion or expansion is enabled, this is an intermediate list).
-Optionally you can return a node, for instance an overfull rule indicator. That
-node will be appended to the list (just like \TEX's own rule would).
+This callback does not replace any internal code.
-\subsection{\type {vpack_quality}}
+\stopsubsection
-\topicindex{callbacks+packing}
+\startsubsection[title={\cbk {alignment_filter}}]
-This callback can be used to intercept the overfull messages that can result from
-packing a vertical list (as happens in the page builder). The function takes a
-few arguments:
+\topicindex{callbacks+alignments}
+
+This is an experimental callback that when set is called several times during the
+construction of an alignment. The context values are available in \typ
+{tex.getalignmentcontextvalues()}.
\startfunctioncall
-function(<string> incident, <number> detail, <node> head, <number> first,
- <number> last)
+function(<node> head, <string> context, <node> attributes, <node> preamble)
+ -- no return values
end
\stopfunctioncall
-The incident is one of \type {overfull}, \type {underfull}, \type {loose} or
-\type {tight}. The detail is either the amount of overflow in case of \type
-{overfull}, or the badness otherwise. The head is the list that is constructed.
+There are no sanity checks so if a user messes up the passed node lists the results
+can be unpredictable and, as with other node related callbacks, crash the engine.
-\subsection{\cbk {process_rule}}
+\stopsubsection
+
+\startsubsection[title={\cbk {localbox_filter}}]
+
+\topicindex{callbacks+local boxes}
+
+Local boxes are a somewhat tricky and error prone feature so use this callback
+with care because the paragraph is easily messed up. A line can have a left,
+right and middle box where the middle one has no width. The callback gets quite
+some parameters passed:
+
+\startfunctioncall
+function(<node> linebox, <node> leftbox, <node> rightbox, <node> middlebox,
+ <number> linenumber,
+ <number> leftskip, <number> rightskip, <number> lefthang, <number> righthang,
+ <number> indentation, <number> parinitleftskip, <number> parinitrightskip,
+ <number> parfillleftskip, <number> parfillrightskip,
+ <number> overshoot)
+ -- no return values
+end
+\stopfunctioncall
+
+This is an experimental callback that will be tested in different \CONTEXT\
+mechanisms before it will be declared stable.
+
+\stopsubsection
+
+\startsubsection[title={\cbk {process_rule}}]
\topicindex{callbacks+rules}
@@ -469,7 +521,9 @@ This is an experimental callback. It can be used with rules of subtype~4
height. The callback can use \type {pdf.print} to write code to the \PDF\
file but beware of not messing up the final result. No checking is done.
-\subsection{\type {pre_output_filter}}
+\stopsubsection
+
+\startsubsection[title={\type {pre_output_filter}}]
\topicindex{callbacks+output}
@@ -485,83 +539,137 @@ end
This callback does not replace any internal code.
-\subsection{\cbk {hyphenate}}
+\stopsubsection
+
+\startsubsection[title={\cbk {hyphenate}}]
\topicindex{callbacks+hyphenation}
+This callback is supposed to insert discretionary nodes in the node list it
+receives.
+
\startfunctioncall
function(<node> head, <node> tail)
+ -- no return values
end
\stopfunctioncall
-No return values. This callback has to insert discretionary nodes in the node
-list it receives.
-
Setting this callback to \type {false} will prevent the internal discretionary
insertion pass.
-\subsection{\cbk {ligaturing}}
+\stopsubsection
+
+\startsubsection[title={\cbk {ligaturing}}]
\topicindex{callbacks+ligature building}
+This callback, which expects no return values, has to apply ligaturing to the
+node list it receives.
+
\startfunctioncall
function(<node> head, <node> tail)
+ -- no return values
end
\stopfunctioncall
-No return values. This callback has to apply ligaturing to the node list it
-receives.
-
You don't have to worry about return values because the \type {head} node that is
passed on to the callback is guaranteed not to be a glyph_node (if need be, a
temporary node will be prepended), and therefore it cannot be affected by the
mutations that take place. After the callback, the internal value of the \quote
{tail of the list} will be recalculated.
-The \type {next} of \type {head} is guaranteed to be non-nil.
-
-The \type {next} of \type {tail} is guaranteed to be nil, and therefore the
-second callback argument can often be ignored. It is provided for orthogonality,
-and because it can sometimes be handy when special processing has to take place.
+The \type {next} of \type {head} is guaranteed to be non-nil. The \type {next} of
+\type {tail} is guaranteed to be nil, and therefore the second callback argument
+can often be ignored. It is provided for orthogonality, and because it can
+sometimes be handy when special processing has to take place.
Setting this callback to \type {false} will prevent the internal ligature
-creation pass.
+creation pass. You must not ruin the node list. For instance, the head normally
+is a local par node, and the tail a glue. Messing too much can push \LUATEX\ into
+panic mode.
-You must not ruin the node list. For instance, the head normally is a local par node,
-and the tail a glue. Messing too much can push \LUATEX\ into panic mode.
+\stopsubsection
-\subsection{\cbk {kerning}}
+\startsubsection[title={\cbk {kerning}}]
\topicindex{callbacks+kerning}
+This callback has to apply kerning between the nodes in the node list it
+receives. See \cbk {ligaturing} for calling conventions.
+
\startfunctioncall
function(<node> head, <node> tail)
+ -- no return values
end
\stopfunctioncall
-No return values. This callback has to apply kerning between the nodes in the
-node list it receives. See \cbk {ligaturing} for calling conventions.
-
Setting this callback to \type {false} will prevent the internal kern insertion
-pass.
+pass. You must not ruin the node list. For instance, the head normally is a local
+par node, and the tail a glue. Messing too much can push \LUATEX\ into panic
+mode.
+
+\stopsubsection
+
+\startsubsection[title={\cbk {append_line_filter}}]
-You must not ruin the node list. For instance, the head normally is a local par node,
-and the tail a glue. Messing too much can push \LUATEX\ into panic mode.
+\topicindex{callbacks+lines}
-\subsection{\type {insert_par}}
+Every time a line is added this callback is triggered, when set. migrated
+material and adjusts also qualify as such and the detail relates to the adjust
+index.
+
+\startfunctioncall
+function(<node> head, <node> tail, <string> context, <number> detail)
+ return <node> newhead
+end
+\stopfunctioncall
+
+A list of possible context values can be queried with \typ
+{tex.getappendlinecontextvalues()}.
+
+\stopsubsection
+
+\stopsection
+
+\startsection[title={Paragraph callbacks}]
+
+\startsubsection[title={\type {insert_par}}]
+
+\topicindex{callbacks+paragraphs}
Each paragraph starts with a local par node that keeps track of for instance
the direction. You can hook a callback into the creator:
\startfunctioncall
function(<node> par, <string> location)
+ -- no return values
end
\stopfunctioncall
There is no return value and you should make sure that the node stays valid
as otherwise \TEX\ can get confused.
-\subsection{\cbk {mlist_to_hlist}}
+\stopsubsection
+
+\startsubsection[title={\cbk {begin_paragraph}}]
+
+\topicindex{callbacks+paragraphs}
+
+{\em todo}
+
+\stopsubsection
+
+\startsubsection[title={\cbk {paragraph_context}}]
+
+\topicindex{callbacks+paragraphs}
+
+{\em todo}
+
+\stopsubsection
+
+\startsection[title={Math related callbacks}]
+
+\startsubsection[title={\cbk {mlist_to_hlist}}]
\topicindex{callbacks+math}
@@ -581,28 +689,61 @@ penalties have to be inserted in this list, \type {false} otherwise.
Setting this callback to \type {false} is bad, it will almost certainly result in
an endless loop.
+\stopsubsection
+
+\startsubsection[title={\cbk {math_rule}}]
+
+\topicindex{callbacks+math}
+\topicindex{callbacks+ruled}
+
+{\em todo}
+
+\stopsubsection
+
+\startsubsection[title={\cbk {make_extensible}}]
+
+\topicindex{callbacks+math}
+\topicindex{callbacks+fonts}
+
+{\em todo}
+
+\stopsubsection
+
+\startsubsection[title={\cbk {register_extensible}}]
+
+\topicindex{callbacks+math}
+\topicindex{callbacks+fonts}
+
+{\em todo}
+
+\stopsubsection
+
\stopsection
\startsection[title={Information reporting callbacks}][library=callback]
-\subsection{\cbk {pre_dump}}
+\startsubsection[title={\cbk {pre_dump}}]
\topicindex{callbacks+dump}
\startfunctioncall
function()
+ -- no return values
end
\stopfunctioncall
This function is called just before dumping to a format file starts. It does not
replace any code and there are neither arguments nor return values.
-\subsection{\cbk {start_run}}
+\stopsubsection
+
+\startsubsection[title={\cbk {start_run}}]
\topicindex{callbacks+job run}
\startfunctioncall
function()
+ -- no return values
end
\stopfunctioncall
@@ -610,7 +751,9 @@ This callback replaces the code that prints \LUATEX's banner. Note that for
successful use, this callback has to be set in the \LUA\ initialization script,
otherwise it will be seen only after the run has already started.
-\subsection{\cbk {stop_run}}
+\stopsubsection
+
+\startsubsection[title={\cbk {stop_run}}]
\topicindex{callbacks+job run}
@@ -623,12 +766,15 @@ This callback replaces the code that prints \LUATEX's statistics and \quote
{output written to} messages. The engine can still do housekeeping and therefore
you should not rely on this hook for postprocessing the \PDF\ or log file.
-\subsection{\cbk {intercept_tex_error}, \cbk {intercept_lua_error}}
+\stopsubsection
+
+\startsubsection[title={\cbk {intercept_tex_error}, \cbk {intercept_lua_error}}]
\topicindex{callbacks+errors}
\startfunctioncall
function()
+ -- no return values
end
\stopfunctioncall
@@ -638,25 +784,31 @@ the normal actions are removed). You may find some of the values in the \type
{status} table useful. The \TEX\ related callback gets two arguments: the current
processing mode and a boolean indicating if there was a runaway.
-\subsection{\cbk {show_error_message} and \cbk {show_warning_message}}
+\stopsubsection
+
+\startsubsection[title={\cbk {show_error_message} and \cbk {show_warning_message}}]
\topicindex{callbacks+errors}
\topicindex{callbacks+warnings}
\startfunctioncall
function()
+ -- no return values
end
\stopfunctioncall
These callback replaces the code that prints the error message. The usual
interaction after the message is not affected.
-\subsection{\cbk {start_file}}
+\stopsubsection
+
+\startsubsection[title={\cbk {start_file}}]
\topicindex{callbacks+files}
\startfunctioncall
function(category,filename)
+ -- no return values
end
\stopfunctioncall
@@ -674,30 +826,37 @@ This callback replaces the code that \LUATEX\ prints when a file is opened like
\LL
\stoptabulate
-\subsection{\cbk {stop_file}}
+\stopsubsection
+
+\startsubsection[title={\cbk {stop_file}}]
\topicindex{callbacks+files}
\startfunctioncall
function(category)
+ -- no return values
end
\stopfunctioncall
This callback replaces the code that \LUATEX\ prints when a file is closed like
the \type {)} for regular files.
-\subsection{\cbk {wrapup_run}}
+\stopsubsection
+
+\startsubsection[title={\cbk {wrapup_run}}]
\topicindex{callbacks+wrapping up}
This callback is called after the \PDF\ and log files are closed. Use it at your own
risk.
+\stopsubsection
+
\stopsection
\startsection[title={Font-related callbacks}][library=callback]
-\subsection{\cbk {define_font}}
+\startsubsection[title={\cbk {define_font}}]
\topicindex{callbacks+fonts}
@@ -736,7 +895,29 @@ font structure.
Setting this callback to \type {false} is pointless as it will prevent font
loading completely but will nevertheless generate errors.
-\subsection{\cbk {show_whatsit}}
+\stopsubsection
+
+\startsubsection[title={\cbk {missing_character}}]
+
+\topicindex{callbacks+fonts}
+\topicindex{callbacks+characters}
+
+This callback is triggered when a character node is created and the font doesn't
+have the requested character.
+
+\startfunctioncall
+function(<node> glyph, <number> font, <number> character)
+ -- no return value
+end
+\stopfunctioncall
+
+\stopsubsection
+
+\stopsection
+
+\startsection[title=Reporting]
+
+\startsubsection[title={\cbk {show_whatsit}}]
\topicindex{callbacks+whatsits}
@@ -755,6 +936,149 @@ compatible with the rest of tracing. The tracinglevels indicates if the current
level and\|/or input level are shown cf. \prm {tracinglevels}. Of course one
is free to show whatever in whatever way suits the whatsit best.
+\stopsubsection
+
+\startsubsection[title={\cbk {get_attribute}}]
+
+\topicindex{callbacks+attributes}
+
+Because attributes are abstract pairs of indices and values the reported
+properties makes not much sense and are very macro package (and user) dependent.
+This callback permits more verbose reporting by the engine when tracing is
+enabled.
+
+\startfunctioncall
+function(<number> index, <number> value)
+ return <string>, <string>
+end
+\stopfunctioncall
+
+\stopsubsection
+
+\startsubsection[title={\cbk {get_noad_class}}]
+
+\topicindex{callbacks+classes}
+
+We have built|-|in math classes but there can also be user defined ones. This
+callback can be used to report more meaningful strings instead of numbers when
+tracing.
+
+\startfunctioncall
+function(<number> class)
+ return <string>
+end
+\stopfunctioncall
+
+\stopsubsection
+
+\startsubsection[title={\cbk {trace_memory}}]
+
+When the engine starts all kind of memory is pre|-|allocated> depending on the
+configuration more gets allocated when a category runs out of memory. The
+\LUAMETATEX\ engine is more dynamic than \LUATEX. If this callback is set it will
+get called as follows:
+
+\startfunctioncall
+function(<string> category, <boolean> success)
+ -- no return value
+end
+\stopfunctioncall
+
+The boolean indicates if the allocation has been successful. One can best quit
+the run when this one is \type {false}, if the engine doesn't already do that.
+
+\stopsubsection
+
+\startsubsection[title={\type {hpack_quality}}]
+
+\topicindex{callbacks+packing}
+
+This callback can be used to intercept the overfull messages that can result from
+packing a horizontal list (as happens in the par builder). The function takes a
+few arguments:
+
+\startfunctioncall
+function(<string> incident, <number> detail, <node> head, <number> first,
+ <number> last)
+ return <node> whatever
+end
+\stopfunctioncall
+
+The incident is one of \type {overfull}, \type {underfull}, \type {loose} or
+\type {tight}. The detail is either the amount of overflow in case of \type
+{overfull}, or the badness otherwise. The head is the list that is constructed
+(when protrusion or expansion is enabled, this is an intermediate list).
+Optionally you can return a node, for instance an overfull rule indicator. That
+node will be appended to the list (just like \TEX's own rule would).
+
+\stopsubsection
+
+\startsubsection[title={\type {vpack_quality}}]
+
+\topicindex{callbacks+packing}
+
+This callback can be used to intercept the overfull messages that can result from
+packing a vertical list (as happens in the page builder). The function takes a
+few arguments:
+
+\startfunctioncall
+function(<string> incident, <number> detail, <node> head, <number> first,
+ <number> last)
+end
+\stopfunctioncall
+
+The incident is one of \type {overfull}, \type {underfull}, \type {loose} or
+\type {tight}. The detail is either the amount of overflow in case of \type
+{overfull}, or the badness otherwise. The head is the list that is constructed.
+
+\stopsubsection
+
+\startsubsection[title={\type {show_lua_call}}]
+
+\topicindex{callbacks+lua}
+
+This one can be used to help reporting definitions that relate to \LUA\ calls to
+be more meaningful when tracing.
+
+\startfunctioncall
+function(<string> name, <number> index)
+ return <string>
+end
+\stopfunctioncall
+
+\stopsubsection
+
+\startsubsection[title={\type {handle_overload}}]
+
+\topicindex{callbacks+overload}
+
+This is one of the few callbacks that is aimed at \CONTEXT: it relates to overload
+protection of macros and other variables.
+
+\startfunctioncall
+function(<boolean> error, <number> overload, <string> csname, <number> flags)
+ -- no return values
+end
+\stopfunctioncall
+
+The overload is determined by:
+
+\starttabulate[|c|l|c|c|c|c|c|]
+\DB \BC \BC immutable \BC permanent \BC primitive \BC frozen \BC instance \NC \NR
+\TB
+\NC 1 \NC warning \NC \star \NC \star \NC \star \NC \NC \NC \NR
+\NC 2 \NC error \NC \star \NC \star \NC \star \NC \NC \NC \NR
+\NC 3 \NC warning \NC \star \NC \star \NC \star \NC \star \NC \NC \NR
+\NC 4 \NC error \NC \star \NC \star \NC \star \NC \star \NC \NC \NR
+\NC 5 \NC warning \NC \star \NC \star \NC \star \NC \star \NC \star \NC \NR
+\NC 6 \NC error \NC \star \NC \star \NC \star \NC \star \NC \star \NC \NR
+\LL
+\stoptabulate
+
+This relates to the optional prefixed that can be used when defining and setting
+quantities and is therefore also a bit of a playground. All macros and aliases in
+\CONTEXT\ are classified this way.
+
\stopsection
\stopchapter
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
index b114dbba3..2bfffb64c 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
@@ -2525,7 +2525,7 @@ deal with whatever has to be done with respect to finalizing. Because users use
the high level commands anyway, disabling is okay for \CONTEXT\ and less likely
to be done for other macro packages, so be careful with this one.
-\startsubsection
+\stopsubsection
\startsubsection[title={Skips around display math and \prm {mathdisplayskipmode}}]
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex b/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
index 3122a5431..8908df6ba 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
@@ -369,6 +369,19 @@ conversion to \CCODE\ is done with a \LUA\ script ran by, surprise, \LUAMETATEX.
\stopsubsection
+\startsubsection[title=Changes from \LUATEX\ 1.10]
+
+\topicindex {\LUATEX}
+
+This engine is a follow up on \LUATEX, that became more or less frozen after
+version 1.10. Apart from reorganizing the code base, simplifying the build,
+limiting dependencies etc.\ this project also adds new functionality and removes
+some as well. The main differences are discussed in a separate section. The basic
+ideas remain the same but the engine is not downward compatible. This is why we
+have \CONTEXT\ \MKIV\ for \LUATEX\ and \CONTEXT\ \LMTX\ for \LUAMETATEX .
+
+\stopsubsection
+
\stopsection
\startsection[title=Implementation notes]
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex
index bb4613dab..1cd368d0a 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex
@@ -98,6 +98,9 @@
% On the 2018 Dell 7520 Precission Xeon laptop runtime for 322 pages is now exactly
% 8 seconds (just below 40 pages per second), we talking July 16, 2022.
+%
+% At the first of August 2022 the (slightly reorganized and updated) manual counted 350 pages
+% and took 8.6 seconds to process (some 41 pages per second), so we're rather stable.
% \enableexperiments [tabulateusesize]
% \enableexperiments [tabulatesparseskips]
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index ab5bc863f..e5eeff7b9 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.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 b7cadf7a8..e302eb6f9 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.01 20:30}
+\edef\contextversion{2022.08.05 11:40}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-fr.mkii b/tex/context/base/mkii/mult-fr.mkii
index 1c9591d67..0d2c7c424 100644
--- a/tex/context/base/mkii/mult-fr.mkii
+++ b/tex/context/base/mkii/mult-fr.mkii
@@ -870,6 +870,7 @@
\setinterfaceconstant{frameradius}{rayoncadre}
\setinterfaceconstant{frames}{cadres}
\setinterfaceconstant{freeregion}{regionlibre}
+\setinterfaceconstant{freezespacing}{freezespacing}
\setinterfaceconstant{from}{de}
\setinterfaceconstant{functioncolor}{couleurfonction}
\setinterfaceconstant{functionstyle}{stylefonction}
@@ -950,6 +951,7 @@
\setinterfaceconstant{lastpubsep}{sepdernierepub}
\setinterfaceconstant{layout}{miseenpage}
\setinterfaceconstant{left}{gauche}
+\setinterfaceconstant{leftclass}{leftclass}
\setinterfaceconstant{leftcolor}{couleurgauche}
\setinterfaceconstant{leftcompoundhyphen}{traitdunioncomposegauche}
\setinterfaceconstant{leftedge}{bordgauche}
@@ -1008,6 +1010,7 @@
\setinterfaceconstant{menu}{menu}
\setinterfaceconstant{method}{methode}
\setinterfaceconstant{middle}{milieu}
+\setinterfaceconstant{middleclass}{middleclass}
\setinterfaceconstant{middlecolor}{couleurmilieu}
\setinterfaceconstant{middlecommand}{commandemilieu}
\setinterfaceconstant{middlesource}{middlesource}
@@ -1054,6 +1057,8 @@
\setinterfaceconstant{numberconversionset}{jeuconversionnumero}
\setinterfaceconstant{numberdistance}{distancenumero}
\setinterfaceconstant{numbering}{numérotation}
+\setinterfaceconstant{numberlocation}{numberlocation}
+\setinterfaceconstant{numbermethod}{numbermethod}
\setinterfaceconstant{numberorder}{ordrenumero}
\setinterfaceconstant{numberprefix}{prefixenumero}
\setinterfaceconstant{numbersegments}{segmentsnumero}
@@ -1064,6 +1069,7 @@
\setinterfaceconstant{numberstopper}{stoppeurnumero}
\setinterfaceconstant{numberstrut}{entretoisenumero}
\setinterfaceconstant{numberstyle}{stylenumero}
+\setinterfaceconstant{numberthreshold}{numberthreshold}
\setinterfaceconstant{numberwidth}{largeurnumero}
\setinterfaceconstant{nx}{nx}
\setinterfaceconstant{ny}{ny}
@@ -1117,6 +1123,7 @@
\setinterfaceconstant{palet}{palette}
\setinterfaceconstant{paper}{papier}
\setinterfaceconstant{paragraph}{paragraphe}
+\setinterfaceconstant{penalties}{penalties}
\setinterfaceconstant{period}{periode}
\setinterfaceconstant{place}{placer}
\setinterfaceconstant{placehead}{placertete}
@@ -1170,6 +1177,7 @@
\setinterfaceconstant{reverse}{inverser}
\setinterfaceconstant{right}{droite}
\setinterfaceconstant{rightchars}{caracteresdroite}
+\setinterfaceconstant{rightclass}{rightclass}
\setinterfaceconstant{rightcolor}{couleurdroite}
\setinterfaceconstant{rightcompoundhyphen}{traitdunioncomposedroite}
\setinterfaceconstant{rightedge}{borddroit}
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 736563f33..493ef50a7 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.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 70ef42f89..736cd6e73 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.01 20:30}
+\edef\contextversion{2022.08.05 11:40}
%D Kind of special:
diff --git a/tex/context/base/mkiv/lxml-tex.lua b/tex/context/base/mkiv/lxml-tex.lua
index 95fafafac..520797883 100644
--- a/tex/context/base/mkiv/lxml-tex.lua
+++ b/tex/context/base/mkiv/lxml-tex.lua
@@ -2251,7 +2251,7 @@ function lxml.snippet(id,i)
if e then
local dt = e.dt
if dt then
- local dti = dt[i]
+ local dti = dt[tonumber(i)] -- string in lxml
if dti then
xmlsprint(dti,e)
end
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index b20156062..d2097e7b6 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -215,6 +215,7 @@ return {
"checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode",
"flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode",
"carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode",
+ "preferdelimiterdimensionsclassoptioncode",
--
"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 e935fb40c..ceaa8d5e7 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -106,6 +106,8 @@ return {
"Umathdelimitershortfall",
"Umathdelimiterundervariant",
"Umathdenominatorvariant",
+ "Umathdict",
+ "Umathdictdef",
"Umathextrasubpreshift",
"Umathextrasubprespace",
"Umathextrasubshift",
@@ -227,8 +229,10 @@ return {
"Ustack",
"Ustartdisplaymath",
"Ustartmath",
+ "Ustartmathmode",
"Ustopdisplaymath",
"Ustopmath",
+ "Ustopmathmode",
"Ustyle",
"Usubprescript",
"Usubscript",
@@ -479,6 +483,8 @@ return {
"mathbackwardpenalties",
"mathbeginclass",
"mathcheckfencesmode",
+ "mathdictgroup",
+ "mathdictproperties",
"mathdirection",
"mathdisplaymode",
"mathdisplayskipmode",
@@ -492,6 +498,7 @@ return {
"mathghost",
"mathgluemode",
"mathgroupingmode",
+ "mathinlinemainstyle",
"mathleftclass",
"mathlimitsmode",
"mathmiddle",
@@ -574,6 +581,8 @@ return {
"setdefaultmathcodes",
"setfontid",
"setmathatomrule",
+ "setmathdisplaypostpenalty",
+ "setmathdisplayprepenalty",
"setmathignore",
"setmathoptions",
"setmathpostpenalty",
diff --git a/tex/context/base/mkiv/scrp-cjk.lua b/tex/context/base/mkiv/scrp-cjk.lua
index f9df7ed45..0667e8031 100644
--- a/tex/context/base/mkiv/scrp-cjk.lua
+++ b/tex/context/base/mkiv/scrp-cjk.lua
@@ -695,6 +695,7 @@ local chinese_8 = {
hiragana = stretch_break, -- nobreak_autoshrink_break_stretch,
katakana = stretch_break, -- nobreak_autoshrink_break_stretch,
half_width_open = nobreak_autoshrink_break_stretch_nobreak_autoshrink,
+half_width_open = stretch_break,
half_width_close = nobreak_autoshrink_nobreak_stretch,
full_width_open = nobreak_autoshrink_break_stretch_nobreak_shrink,
full_width_close = nobreak_autoshrink_nobreak_stretch,
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index b900f2fb5..a41240d11 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 776c1f125..aafa04ff5 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkxl/attr-ini.lmt b/tex/context/base/mkxl/attr-ini.lmt
index 059de8fd7..8b2ec8911 100644
--- a/tex/context/base/mkxl/attr-ini.lmt
+++ b/tex/context/base/mkxl/attr-ini.lmt
@@ -216,12 +216,14 @@ function attributes.registervalue(index,value)
-- this can be an option
for i=c[1],c[2] do
if list[i] == nil then
+ -- we avoid 0 because that can be a signal attribute value
+ local n = i == 0 and 1 or i
if trace_values then
- report_value("reusing slot %i for attribute %i in range (%i,%i)",i,index,c[1],c[2])
+ report_value("reusing slot %i for attribute %i in range (%i,%i)",n,index,c[1],c[2])
end
- c[1] = i
- list[i] = value
- return i
+ c[1] = n
+ list[n] = value
+ return n
end
end
else
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index f72bb5f81..f9cc4b1b1 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.01 20:30}
+\newcontextversion{2022.08.05 11:40}
%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 27bbaa46a..f167c0f58 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.01 20:30}
+\immutable\edef\contextversion{2022.08.05 11:40}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index cef18529c..7dbbe0cb7 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -1965,7 +1965,7 @@ do
permissions = permissions | 0xF0C3 -- needs work
--
optionlist = { }
- for k, v in table.sortedhash(options) do
+ for k, v in sortedhash(options) do
if permissions & v == v then
optionlist[#optionlist+1] = k
end
diff --git a/tex/context/base/mkxl/math-ali.lmt b/tex/context/base/mkxl/math-ali.lmt
index a84d5a4c4..718975a50 100644
--- a/tex/context/base/mkxl/math-ali.lmt
+++ b/tex/context/base/mkxl/math-ali.lmt
@@ -82,3 +82,20 @@ function mathematics.registersimplematrix(name,action)
useractions[name] = action
end
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
+}
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index a9e9af722..aaf76c9b1 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -885,6 +885,39 @@
\frozen\instance \defcsname \e!stop \currentmathcases\endcsname{\math_cases_stop}%
\to \everydefinemathcases
+%D Why not \unknown:
+%D
+%D \starttyping
+%D \definemathcases[mycases][simplecommand=mycases]
+%D
+%D \startformula
+%D \startmycases
+%D \NC 1 \NC x>0 \NR
+%D \NC -1 \NC x<0 \NR
+%D \stopmycases
+%D \stopformula
+%D
+%D \startformula
+%D \mycases{1,x>0;-1,x<0}
+%D \stopformula
+%D \stoptyping
+
+\permanent\tolerant\protected\def\math_cases_simple[#1]#*[#2]#:#3%
+ {\begingroup
+ \edef\currentmathcases{#1}%
+ \setupcurrentmathcases[#2]%
+ \math_cases_start[\currentmathcases]%
+ \clf_simplecases{\mathcasesparameter\c!action}{#3}%
+ \math_cases_stop
+ \endgroup}
+
+\appendtoks
+ \edef\p_simplecommand{\mathcasesparameter\c!simplecommand}%
+ \ifempty\p_simplecommand\else
+ \frozen\protected\instance\edefcsname\p_simplecommand\endcsname{\math_cases_simple[\currentmathcases]}%
+ \fi
+\to \everydefinemathcases
+
\let\math_cases_strut\relax
\newcount\c_math_cases_nc
@@ -2604,6 +2637,9 @@
\permanent\protected\def\math_simplealign_NC
{\aligntab}
+\permanent\protected\def\math_simplealign_EQ
+ {\aligntab=\aligntab}
+
\noaligned\tolerant\permanent\protected\def\math_simplealign_NR[#1]#*[#2]%
{\unskip
\strc_formulas_place_number_nested{#1}{#2}\crcr}
@@ -2630,6 +2666,7 @@
\enforced\let\MC\math_simplealign_NC
\enforced\let\NC\math_simplealign_NC
\enforced\let\NR\math_simplealign_NR
+ \enforced\let\EQ\math_simplealign_EQ
\enforced\let\TB\math_common_TB
\math_eqalign_set_defaults
\math_eqalign_set_columns{\mathsimplealignparameter\c!align}%
diff --git a/tex/context/base/mkxl/math-dif.mkxl b/tex/context/base/mkxl/math-dif.mkxl
index 5cd65a80f..ad53ee25a 100644
--- a/tex/context/base/mkxl/math-dif.mkxl
+++ b/tex/context/base/mkxl/math-dif.mkxl
@@ -20,10 +20,12 @@
% For new times sake:
\let\normal_math_dd\dd
+ \let\normal_math_DD\DD
\def\c!differentiald{differentiald} % for now
\def\upright_math_dd{\mathatom \s!unpack \mathdifferentialcode{\mathupright d}}
+ \def\upright_math_DD{\mathatom \s!unpack \mathdifferentialcode{\mathupright D}}
\permanent\protected\def\dd
{\ifcstok{\mathematicsparameter\c!differentiald}\s!upright
@@ -32,6 +34,13 @@
\normal_math_dd
\fi}
+ \permanent\protected\def\DD
+ {\ifcstok{\mathematicsparameter\c!differentiald}\s!upright
+ \upright_math_DD
+ \else
+ \normal_math_DD
+ \fi}
+
% \setupmathematics[differentiald=upright]
\popoverloadmode
diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl
index 85a28acca..8f2a4d405 100644
--- a/tex/context/base/mkxl/math-fen.mkxl
+++ b/tex/context/base/mkxl/math-fen.mkxl
@@ -130,10 +130,12 @@
\s!axis
\s!exact}
-\newconstant \c_math_fenced_class
+\newconstant\c_math_fenced_class
+\integerdef \c_math_fence_check \zerocount
\def\math_fenced_common#1#2#3#4% \Uwhatever class symbol source
{\c_math_fenced_class\mathfenceparameter#2\relax
+ \math_fenced_check_size_mismatch % we need to catch an unbalanced \F as we are sequential
\ifconditional\c_math_fenced_sized
\orelse\ifconditional\c_math_fenced_level_mode
\ifnum\c_math_fenced_class=\mathopencode
@@ -347,14 +349,14 @@
{\math_fenced_fenced_stop\currentmathfence
\endgroup}
-\def\math_fenced_start_wrap#1%
+\protected\def\math_fenced_start_wrap#1%
{\begingroup
\edef\m_math_fenced_wrap{#1}%
\ifempty\m_math_fenced_wrap \else
\math_fenced_fenced_start\m_math_fenced_wrap
\fi}
-\def\math_fenced_stop_wrap
+\protected\def\math_fenced_stop_wrap
{\ifempty\m_math_fenced_wrap \else
\math_fenced_fenced_stop\m_math_fenced_wrap
\fi
@@ -410,6 +412,7 @@
%D \starttyping
%D \startTEXpage[offset=1dk,width=20dk]
%D \ruledhbox{$ \F3 \left( 1 + \F2 \left( a + b \right) + \left( a + b \right) \right) $}\par
+%D \ruledhbox{$ \left( 1 + \F3 \left( a + b \right) + \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F3 \left( 1 + \F0 \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F3 \left( 1 + \F= \left( a + b \right) \right) $}\par
%D \ruledhbox{$ \F4 \left( 1 + \fenced[parenthesis]{a + b} \right) $}\par
@@ -435,8 +438,18 @@
\letcsname\??fencelevels*\endcsname\donothing
+\def\math_fenced_check_size_mismatch
+ {\ifnum\c_math_fence_check=\c_math_fence_nesting
+ \c_attr_mathsize\attributeunsetvalue
+ \setfalse\c_math_fenced_level_mode
+ \c_math_fenced_level\zerocount
+ \fi}
+
\permanent\protected\def\F#1%
- {\settrue\c_math_fenced_level_mode
+ {\ifconditional\c_math_fenced_level_mode\else
+ \integerdef\c_math_fence_check\c_math_fence_nesting
+ \fi
+ \settrue\c_math_fenced_level_mode
\ifchknum#1\or
\c_math_fenced_level#1\relax
\orelse\ifcsname\??fencelevels#1\endcsname
@@ -857,7 +870,7 @@
\protected\def\math_fences_auto_left #1{\c_attr_mathautofence\plusone #1\c_attr_mathautofence\attributeunsetvalue}
\protected\def\math_fences_auto_right #1{\c_attr_mathautofence\plustwo #1\c_attr_mathautofence\attributeunsetvalue}
-\protected\def\math_fences_auto_middle#1{\c_attr_mathautofence\plusthree#1\c_attr_mathautofence\attributeunsetvalue nooverflow }
+\protected\def\math_fences_auto_middle#1{\c_attr_mathautofence\plusthree#1\c_attr_mathautofence\attributeunsetvalue}
\protected\def\math_fences_auto_both #1{\c_attr_mathautofence\plusfour #1\c_attr_mathautofence\attributeunsetvalue}
\permanent\let\autofenceopen \math_fences_auto_left % for testing
diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt
index 654e29d2b..48d905ca6 100644
--- a/tex/context/base/mkxl/math-ini.lmt
+++ b/tex/context/base/mkxl/math-ini.lmt
@@ -16,7 +16,7 @@ if not modules then modules = { } end modules ['math-ini'] = {
-- then we also have to set the other characters (only a subset done now)
local next, type = next, type
-local formatters, find = string.formatters, string.find
+local formatters, find, nospaces = string.formatters, string.find, string.nospaces
local utfchar, utfbyte, utflength = utf.char, utf.byte, utf.length
----- floor = math.floor
local sortedhash = table.sortedhash
@@ -48,6 +48,145 @@ local chardata = characters.data
local texsetattribute = tex.setattribute
local setmathcode = tex.setmathcode
local setdelcode = tex.setdelcode
+local texintegerdef = tex.integerdef
+
+-- This is relatively new and experimental:
+
+do
+
+ local dictionaries = { }
+ mathematics.dictionaries = dictionaries
+
+ local names = dictionaries.names or utilities.storage.allocate()
+ local groups = dictionaries.groups or utilities.storage.allocate()
+ local data = dictionaries.data or utilities.storage.allocate()
+
+ if storage then
+ storage.register("mathematics/dictionaries/names", names, "characters.dictionaries.names")
+ storage.register("mathematics/dictionaries/groups", groups, "characters.dictionaries.groups")
+ storage.register("mathematics/dictionaries/data", data, "characters.dictionaries.data")
+ end
+
+ function dictionaries.registergroup(name)
+ local group = rawget(names,name)
+ if not group then
+ group = #groups + 1
+ names[name] = group
+ names[group] = group
+ groups[group] = name
+ data[group] = { }
+ local csname = "math" .. nospaces(name) .. "dictionary"
+ texintegerdef(csname,group,"immutable")
+ end
+ return group
+ end
+
+ function dictionaries.registercharacter(group,index,description)
+ local d = names[group] -- can be number or string
+ if d then
+ data[d][index] = description
+ end
+ end
+
+ local fontchardata = fonts.hashes.characters
+ local f_dictionary = false
+ local register = callback.register
+ local whatdetail = "all"
+
+ local function trace(n,properties,group,index,font,char)
+ -- local properties, group, index, font, char = nodes.nuts.getchardict(nodes.nuts.tonut(n))
+ local char = fontchardata[font][char]
+ if char or whatdetail == "all" then
+ local unicode = char and char.unicode
+ if unicode then
+ local groupname = groups[group]
+ local indexname = false
+ if groupname then
+ indexname = data[group][index] -- dictionaries.data
+ else
+ groupname = "unknown"
+ end
+ if not indexname then
+ indexname = chardata[unicode]
+ indexname = indexname and indexname.description or "unknown"
+ end
+ if not f_dictionary then
+ f_dictionary = formatters["properties [%04X:%04X:%04X] [%s] %U : %s"]
+ end
+ return f_dictionary(properties,group,index,groupname,unicode,indexname)
+ end
+ end
+ end
+
+ trackers.register("math.dictionaries",function(v)
+ whatdetail = v
+ if whatdetail then
+ register("get_math_dictionary",trace)
+ else
+ register("get_math_dictionary")
+ end
+ end)
+
+ register("get_math_dictionary",trace)
+
+ -- This is experimental and a prelude to the long pending "relate math rendering to
+ -- some field" wish. In TeX characters and symbols are grouped by class but that is
+ -- mostly related to spacing etc. while we actually want to group by meaning. A
+ -- reasonable but incomplete starting point is:
+ --
+ -- https://www.w3.org/TR/MathML3/appendixa.html#parsing_DefEncAtt
+ --
+ -- But it has some weird short names mixed with long ones (and a strange suddenly
+ -- uppercase: Differential-Operator) but we are not bound to that at all. We will
+ -- probably remove and add categories anyway. This openmath stuff looks a bit
+ -- abandoned but we can use it as a start and playground anyway.
+ --
+ -- The char-def.lua file will have mathgroup entries reflecting this.
+
+ local registergroup = mathematics.dictionaries.registergroup
+
+ registergroup("default")
+ registergroup("binary arithmic")
+ registergroup("binary linear algebra")
+ registergroup("binary logical")
+ registergroup("binary relation")
+ registergroup("binary set")
+ registergroup("constant arithmic")
+ registergroup("constant set")
+ registergroup("differential")
+ registergroup("integral")
+ registergroup("interval")
+ registergroup("lambda")
+ registergroup("limit")
+ registergroup("nary arithmic")
+ registergroup("nary constructor")
+ registergroup("nary functional")
+ registergroup("nary linear algebra")
+ registergroup("nary logical")
+ registergroup("nary minmax")
+ registergroup("nary relation")
+ registergroup("nary set list")
+ registergroup("nary set relation")
+ registergroup("nary set")
+ registergroup("nary statistics")
+ registergroup("partial") -- partial differential
+ registergroup("product")
+ registergroup("quantifier")
+ registergroup("unary arithmic")
+ registergroup("unary elementary")
+ registergroup("unary functional")
+ registergroup("unary linear algebra")
+ registergroup("unary logical")
+ registergroup("unary set")
+ registergroup("unary vector")
+
+ -- \Umathdictdef\vdash 1 \mathbinarylogicaldictionary "22A2 \mathrelationcode 0 "22A2
+ --
+ -- \startluacode
+ -- mathematics.dictionaries.registercharacter("binary logical",0x22A2,"implies")
+ -- \stopluacode
+
+end
-- These are different from mkiv with luatex.
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index d3d652b37..0ce6d14ef 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -463,6 +463,11 @@
% +\checkkernpairclassoptioncode
% +\flattenclassoptioncode
% +\omitpenaltyclassoptioncode % old school check, we do pairwise instead
+ % +\carryoverlefttopkernclassoptioncode
+ % +\carryoverleftbottomkernclassoptioncode
+ % +\carryoverrighttopkernclassoptioncode
+ % +\carryoverrightbottomkernclassoptioncode
+ % +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathordinarycode\numexpr
@@ -547,6 +552,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathradicalcode\numexpr
@@ -556,6 +562,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathaccentcode\numexpr
@@ -591,6 +598,7 @@
+\carryoverleftbottomkernclassoptioncode
+\carryoverrighttopkernclassoptioncode
+\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
% test case for \lefttopkernclassoptioncode and \leftbottomkernclassoptioncode in cambria close:
@@ -738,15 +746,27 @@
\setfalse\indisplaymath
\fi}
+% \permanent\protected\def\startforceddisplaymath
+% {\startimath
+% \displaystyle
+% \begingroup
+% \settrue\indisplaymath}
+%
+% \permanent\protected\def\stopforceddisplaymath
+% {\endgroup
+% \stopimath}
+
+% \def\startidmath{\Ustartmathmode \displaystyle}
+% \def\stopidmath {\Ustopmathmode}
+
\permanent\protected\def\startforceddisplaymath
- {\startimath
- \displaystyle
- \begingroup
+ {\Ustartmathmode \displaystyle
+ \begingroup % can go
\settrue\indisplaymath}
\permanent\protected\def\stopforceddisplaymath
- {\endgroup
- \stopimath}
+ {\endgroup % can go
+ \Ustopmathmode}
\permanent\protected\def\startpickupmath % for the moment private
{\ifconditional\indisplaymath
@@ -877,12 +897,20 @@
\normalstopimath
\fi}
-%D maybe more setters
+%D We wrap in a construct so that we can do:
+%D
+%D \starttyping
+%D \startformula
+%D \dm{f(x) = \frac{x}{y}} \mtp{,}
+%D \im{g(x) = \frac{x}{y}} \mtp{.}
+%D \stopformula
+%D \stoptyping
\permanent\protected\def\dm#1%
{\relax
\ifmmode
- \beginmathgroup\forcedisplaymath#1\endmathgroup
+ %\beginmathgroup\forcedisplaymath#1\endmathgroup
+ \mathconstruct{\forcedisplaymath#1}%
\else
\startimath\begingroup\forcedisplaymath#1\endgroup\stopimath
\fi}
@@ -890,7 +918,8 @@
\permanent\protected\def\im#1%
{\relax
\ifmmode
- \beginmathgroup\forceinlinemath#1\endmathgroup
+ %\beginmathgroup\forceinlinemath#1\endmathgroup
+ \mathconstruct{\forceinlinemath#1}%
\else
\startimath#1\stopimath
\fi}
@@ -4019,6 +4048,30 @@
\scriptspace.05\Umathquad\textstyle % for Mikael
\to \everymathematics
+%D New:
+
+% \startformula
+% \mathatom class 0 all \mathbincode {a b c d} \breakhere
+% \mathatom class 0 all \mathfractioncode {a b c d} \breakhere
+% \base {FE03} \breakhere
+% \base[16]{FE03} \breakhere
+% \base[8] {7204}
+% \stopformula
+
+\permanent\tolerant\def\mathdigits#1%
+ {\ifmmode
+ \mathatom class \mathdigitcode all \mathdigitcode {#1}%
+ \else
+ #1%
+ \fi}
+
+\permanent\tolerant\protected\def\base[#1]#*#:#2%
+ {\ifmmode
+ \mathdigits{\tf#2}\ifparameter#1\or\subscript{\mathdigits{\tf#1}}\fi
+ \else
+ #2\ifparameter#1\or\low{#1}\fi
+ \fi}
+
\protect \endinput
% % not used (yet)
diff --git a/tex/context/base/mkxl/math-spa.lmt b/tex/context/base/mkxl/math-spa.lmt
index 698692a2c..2bde8dd1d 100644
--- a/tex/context/base/mkxl/math-spa.lmt
+++ b/tex/context/base/mkxl/math-spa.lmt
@@ -12,6 +12,8 @@ local setmetatableindex = table.setmetatableindex
local boundary_code = nodes.nodecodes.boundary
local hlist_code = nodes.nodecodes.hlist
+local kern_code = nodes.nodecodes.kern
+local penalty_code = nodes.nodecodes.penalty
local glue_code = nodes.nodecodes.glue
local line_code = nodes.listcodes.line
local ghost_code = nodes.listcodes.ghost
@@ -39,6 +41,7 @@ local addxoffset = nuts.addxoffset
local nextglue = nuts.traversers.glue
local nextlist = nuts.traversers.list
local nextboundary = nuts.traversers.boundary
+local nextnode = nuts.traversers.node
local texgetdimen = tex.getdimen
local texsetdimen = tex.setdimen
@@ -56,15 +59,32 @@ stages[1] = function(specification,stage)
for s in nextboundary, head do
if getdata(s) == boundary then
-- todo: skip over ghost, maybe penalty, maybe glues all in one loop
- local n = getnext(s)
- while n and getid(n) == hlist_code and getsubtype(n) == ghost_code do
- n = getnext(n)
- end
- -- while n and getid(n) == glue_code do
- if n and getid(n) == glue_code then
- n = getnext(n)
+-- local n = getnext(s)
+-- if n and getid(n) == kern_code then -- also needed
+-- n = getnext(n)
+-- end
+-- while n and getid(n) == hlist_code and getsubtype(n) == ghost_code do
+-- n = getnext(n)
+-- end
+-- -- while n and getid(n) == glue_code do
+-- if n and getid(n) == glue_code then
+-- n = getnext(n)
+-- end
+ for n, id, subtype in nextnode, getnext(s) do
+ s = n
+ if id == kern_code then
+ -- move on (s_2 case)
+ elseif id == glue_code then
+ -- move on
+ elseif id == penalty_code then
+ -- move on (untested)
+ elseif id == hlist_code and subtype == ghost_code then
+ -- move on
+ else
+ break
+ end
end
- distance = distance + getdimensions(head,n)
+ distance = distance + getdimensions(head,s)
break
end
end
diff --git a/tex/context/base/mkxl/math-twk.mkxl b/tex/context/base/mkxl/math-twk.mkxl
index 995f48bcb..269c855c0 100644
--- a/tex/context/base/mkxl/math-twk.mkxl
+++ b/tex/context/base/mkxl/math-twk.mkxl
@@ -71,4 +71,26 @@
\permanent\protected\def\±{\mathortext\mathunaryplusminus\textpm}
\permanent\protected\def\∓{\mathortext\mathunaryminusplus\textmp}
+% \permanent\protected\def\minute{\hbox shift -.8ex{$\char"2032$}}
+% \permanent\protected\def\second{\hbox shift -.8ex{$\char"2033$}}
+%
+% \permanent\protected\def\minute{$\char\privatecharactercode{prime 0x2032 1}$}
+% \permanent\protected\def\second{$\char\privatecharactercode{prime 0x2033 1}$}
+%
+% \permanent\protected\def\minute{$\Umathchar\zerocount\zerocount\privatecharactercode{prime 0x2032 1}$}
+% \permanent\protected\def\second{$\Umathchar\zerocount\zerocount\privatecharactercode{prime 0x2033 1}$}
+%
+% \immutable\Umathchardef\minute\zerocount\zerocount\privatecharactercode{prime 0x2032 1}
+% \immutable\Umathchardef\second\zerocount\zerocount\privatecharactercode{prime 0x2033 1}
+
+\immutable\chardef\textminute"2032
+\immutable\chardef\textsecond"2033
+
+\immutable\Umathchardef\mathminute\zerocount\zerocount\privatecharactercode{prime 0x2032 1}
+\immutable\Umathchardef\mathsecond\zerocount\zerocount\privatecharactercode{prime 0x2033 1}
+
+\permanent\protected\def\minute{\iffontchar\font\textminute\textminute\else\mathminute\fi}
+\permanent\protected\def\second{\iffontchar\font\textsecond\textsecond\else\mathsecond\fi}
+
+
\protect
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index 92e8f0990..fccb539f3 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -84,7 +84,7 @@ local nuts = {
getboxglue = direct.getglue,
getchar = direct.getchar,
getcharspec = direct.getcharspec,
- getcomponents = direct.getcomponents,
+ -- getcomponents = direct.getcomponents,
getdata = direct.getdata,
getdepth = direct.getdepth,
getdir = direct.getdir,
@@ -92,6 +92,7 @@ local nuts = {
getdisc = direct.getdisc,
getdiscpart = direct.getdiscpart,
getdiscretionary = direct.getdisc,
+ getchardict = direct.getchardict,
getexpansion = direct.getexpansion,
getfam = direct.getfam,
getfield = direct.getfield,
@@ -196,7 +197,7 @@ local nuts = {
setbox = direct.setbox,
setboxglue = direct.setglue,
setchar = direct.setchar,
- setcomponents = direct.setcomponents,
+ -- setcomponents = direct.setcomponents,
setdata = direct.setdata,
setdepth = direct.setdepth,
setdir = direct.setdir,
@@ -204,6 +205,7 @@ local nuts = {
setdisc = direct.setdisc,
setdiscpart = direct.setdiscpart,
setdiscretionary = direct.setdisc,
+ setchardict = direct.setchardict,
setexpansion = direct.setexpansion,
setfam = direct.setfam,
setfield = direct.setfield,
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 2f200056b..ed581db6a 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -1133,7 +1133,9 @@
{\vadjust pre \bgroup
\hbox to \displaywidth \bgroup
\strut
+ \hskip\leftskip
#1\hss
+ \hskip\rightskip
\strut
\egroup
\egroup}
@@ -1142,7 +1144,9 @@
{\vadjust \bgroup
\hbox to \displaywidth \bgroup
\strut
+ \hskip\leftskip
#1\hss
+ \hskip\rightskip
\strut
\egroup
\egroup}
@@ -1254,7 +1258,10 @@
\c_strc_math_split_status \zerocount
\to \everymathematics
-%
+\prependtoks
+ % we need to keep an eye on this
+ \mathgluemode\ifcase\raggedstatus\plusthree\else\zerocount\fi
+\to \everymathematics
\defcsname\??mathtextalign\v!flushleft\endcsname
{\raggedright
diff --git a/tex/context/fonts/mkiv/asana-math.lfg b/tex/context/fonts/mkiv/asana-math.lfg
index afa59d40a..07a96741b 100644
--- a/tex/context/fonts/mkiv/asana-math.lfg
+++ b/tex/context/fonts/mkiv/asana-math.lfg
@@ -24,6 +24,13 @@
-- Just don't use this font. It's not good enough for production unless we patch it
-- a lot, which we will not do unless we need it.
+-- When set this will bypass the italic correction hackery!
+
+-- local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+-- local integral_bottom = { bottomright = -0.25 }
+
+
return {
name = "asana-math",
version = "1.00",
diff --git a/tex/context/fonts/mkiv/bonum-math.lfg b/tex/context/fonts/mkiv/bonum-math.lfg
index 154f7c346..73a1efcaf 100644
--- a/tex/context/fonts/mkiv/bonum-math.lfg
+++ b/tex/context/fonts/mkiv/bonum-math.lfg
@@ -17,6 +17,11 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.30 }
+
return {
name = "bonum-math",
version = "1.00",
@@ -204,6 +209,65 @@ return {
-- bottomright = -0.1,
-- all = true,
-- },
+ [0x7D] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ [0x29] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ -- radical
+ [0x221A] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ },
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ },
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ },
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ },
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ --
+ [0x222B] = integral_variants, ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ [0x222C] = integral_variants, ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ [0x222D] = integral_variants, ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ [0x222E] = integral_variants, ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ [0x222F] = integral_variants, ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ [0x2230] = integral_variants, ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ [0x2231] = integral_variants, ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ [0x2232] = integral_variants, ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ [0x2233] = integral_variants, ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/cambria-math.lfg b/tex/context/fonts/mkiv/cambria-math.lfg
index a56a1b7d6..de8b55b22 100644
--- a/tex/context/fonts/mkiv/cambria-math.lfg
+++ b/tex/context/fonts/mkiv/cambria-math.lfg
@@ -40,6 +40,12 @@ end
-- patches.register("after","analyze math","cambria", function(data,filename) patch(data,filename,2800) end)
-- patches.register("after","analyze math","cambmath",function(data,filename) patch(data,filename,2800) end)
+-- -- We could stick to the italic correction here
+--
+-- local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+-- local integral_bottom = { bottomright = -0.30 }
+
return {
name = "cambria-math",
version = "1.00",
@@ -127,6 +133,18 @@ return {
topright = 0.2,
bottomright = 0.2,
},
+
+ -- Keep as example. not needed in cambria (after all it is the reference):
+
+ -- ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ -- ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ -- ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ -- ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ -- ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ -- ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ -- ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ -- ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ -- ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
},
},
{
diff --git a/tex/context/fonts/mkiv/dejavu-math.lfg b/tex/context/fonts/mkiv/dejavu-math.lfg
index cbba910ce..b13150295 100644
--- a/tex/context/fonts/mkiv/dejavu-math.lfg
+++ b/tex/context/fonts/mkiv/dejavu-math.lfg
@@ -10,6 +10,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.25 }
+
+
return {
name = "dejavu-math",
version = "1.00",
@@ -53,6 +59,52 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/ebgaramond.lfg b/tex/context/fonts/mkiv/ebgaramond.lfg
new file mode 100644
index 000000000..73676ce44
--- /dev/null
+++ b/tex/context/fonts/mkiv/ebgaramond.lfg
@@ -0,0 +1,90 @@
+return {
+ name = "ebgaramond",
+ version = "1.00",
+ comment = "Goodies that complement ebgaramond.",
+ author = "Hans Hagen & Mikael Sundqvist",
+ copyright = "ConTeXt development team",
+ mathematics = {
+ tweaks = {
+ aftercopying = {
+ {
+ tweak = "version",
+ expected = "Version 2019-08-16",
+ },
+ {
+ tweak = "dimensions",
+ list = {
+ -- offset width italic
+ [0x00393] = { 0.05, 1.05, 0.075 }, -- \Gamma
+ -- [0x003A6] = { 0.05, 1.05, 0 }, -- \Phi difficult!
+ [0x003A8] = { 0.05, 1.05, 0.075 }, -- \Psi
+ [0x02113] = { 0, 1, 0.075 }, -- \ell
+ [0x1D436] = { 0, 1, 0.05 }, -- C
+ [0x1D43D] = { 0.3, 1.4, 0.1 }, -- J
+ [0x1D44B] = { 0, 1, 0.05 }, -- X
+ [0x1D450] = { 0, 1.1, 0 }, -- c
+ [0x1D451] = { 0, 1, 0.05 }, -- d
+ [0x1D452] = { 0, 1.1, 0.05 }, -- e
+ [0x1D453] = { 0.15, 1.15, 0.1 }, -- f
+ [0x1D454] = { 0.1, 1.2, 0.1 }, -- g
+ [0xF0276] = { 0, 1.1, 0 }, -- h
+ [0x1D457] = { 0.2, 1.25, 0.05 }, -- j
+ [0x1D459] = { 0, 1, 0.05 }, -- l
+ [0x1D45D] = { 0.15, 1.15, 0 }, -- p
+ [0x1D45E] = { 0, 1.05, 0 }, -- q
+ [0x1D45F] = { 0, 1.05, 0 }, -- r
+ [0x1D461] = { 0, 1, 0.1 }, -- t
+ [0x1D465] = { 0.05, 1.1, 0.05 }, -- x
+ [0x1D466] = { 0.2, 1.2, 0 }, -- y
+ [0x1D6FD] = { 0.05, 1.1, 0.05 }, -- \beta
+ [0x1D6FE] = { 0, 1.05, 0 }, -- \gamma
+ [0x1D6FF] = { 0, 1, 0.1 }, -- \delta
+ [0x1D716] = { 0, 1.1, 0 }, -- \epsilon
+ [0x1D700] = { 0, 1.1, 0 }, -- \varepsilon
+ [0x1D701] = { 0, 1, 0.15 }, -- \zeta
+ [0x1D703] = { 0, 1, 0.1 }, -- \theta
+ [0x1D705] = { 0, 1, 0.1 }, -- \kappa
+ [0x1D706] = { 0.05, 1.1, 0 }, -- \lambda
+ [0x1D707] = { 0.05, 1.05, 0 }, -- \mu
+ [0x1D708] = { 0, 1.1, 0 }, -- \nu
+ [0x1D709] = { 0, 1.1, 0 }, -- \xi
+ [0x1D70B] = { 0, 1.05, 0 }, -- \pi
+ [0x1D70C] = { 0.2, 1.2, 0 }, -- \rho
+ [0x1D70E] = { 0, 1, 0.1 }, -- \sigma
+ [0x1D70F] = { 0.05, 1.05, 0.1 }, -- \tau
+ [0x1D712] = { 0.15, 1.2, 0.05 }, -- \chi
+ [0x1D713] = { 0.05, 1.05, 0.05 }, -- \psi
+ },
+ },
+ {
+ tweak = "fixprimes",
+ scale = 0.75,
+ smaller = true,
+ factor = 0.8,
+ fake = 0.75,
+ },
+ {
+ tweak = "checkspacing",
+ },
+ {
+ tweak = "addscripts",
+ },
+ },
+ },
+ alternates = {
+ partial = { feature = 'ss02', value = 1, comment = "Curved partial" },
+ semibold = { feature = 'ss04', value = 1, comment = "Semibold" },
+ extrabold = { feature = 'ss05', value = 1, comment = "Extrabold" },
+ hbar = { feature = 'ss06', value = 1, comment = "Horizontal bar for h-bar" },
+ integral = { feature = 'ss07', value = 1, comment = "A more slanted integral sign" },
+ tilde = { feature = 'ss09', value = 1, comment = "A tilde variant" },
+ outbendingh = { feature = 'ss10', value = 1, comment = "Out-bending h" },
+ largeoperators = { feature = 'ss11', value = 1, comment = "Larger operators" },
+ },
+ bigslots = {
+ 1, 3, 5, 7
+ },
+ },
+}
+
+
diff --git a/tex/context/fonts/mkiv/erewhon-math.lfg b/tex/context/fonts/mkiv/erewhon-math.lfg
index ff0b8dac4..e1e7fe9fd 100644
--- a/tex/context/fonts/mkiv/erewhon-math.lfg
+++ b/tex/context/fonts/mkiv/erewhon-math.lfg
@@ -30,6 +30,44 @@ return {
-- topright = 0,
bottomright = -0.15,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
},
},
{
diff --git a/tex/context/fonts/mkiv/garamond-math.lfg b/tex/context/fonts/mkiv/garamond-math.lfg
index cdefd8077..bdbb6b155 100644
--- a/tex/context/fonts/mkiv/garamond-math.lfg
+++ b/tex/context/fonts/mkiv/garamond-math.lfg
@@ -110,6 +110,41 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
},
},
{
diff --git a/tex/context/fonts/mkiv/kpfonts-math.lfg b/tex/context/fonts/mkiv/kpfonts-math.lfg
index cb75644a9..3c2b89b79 100644
--- a/tex/context/fonts/mkiv/kpfonts-math.lfg
+++ b/tex/context/fonts/mkiv/kpfonts-math.lfg
@@ -39,6 +39,38 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.25,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.05,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.05,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.05,
+ bottomright = -0.05,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
},
},
-- {
diff --git a/tex/context/fonts/mkiv/libertinus-math.lfg b/tex/context/fonts/mkiv/libertinus-math.lfg
index f0b542f42..4992b41be 100644
--- a/tex/context/fonts/mkiv/libertinus-math.lfg
+++ b/tex/context/fonts/mkiv/libertinus-math.lfg
@@ -79,6 +79,44 @@ return {
-- topright = 0,
bottomright = -0.15,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.2,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.2,
+ }, -- right brace bottom
+ -- ["0x7D.variants.*"] = {
+ -- topright = -0.05,
+ -- bottomright = -0.05,
+ -- }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.15,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
},
},
{
diff --git a/tex/context/fonts/mkiv/lm.lfg b/tex/context/fonts/mkiv/lm.lfg
index e3dbfc6b8..250fe9e93 100644
--- a/tex/context/fonts/mkiv/lm.lfg
+++ b/tex/context/fonts/mkiv/lm.lfg
@@ -279,6 +279,44 @@ return {
[0x1D4B3] = { bottomright = -0.11, }, -- script X
[0x1D4B4] = { bottomright = -0.18, }, -- script Y
[0x1D4B5] = { bottomright = -0.05, }, -- script Z
+
+ ["0x7D.parts.top"] = {
+ topright = -0.25,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.25,
+ bottomright = -0.25,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.3,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.3,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.25,
+ bottomright = -0.25,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
},
},
-- {
diff --git a/tex/context/fonts/mkiv/lucida-opentype-math.lfg b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
index 1ca9e77eb..a8cd48ca2 100644
--- a/tex/context/fonts/mkiv/lucida-opentype-math.lfg
+++ b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
@@ -24,6 +24,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.45 }
+
+
return {
name = "lucida-opentype-math",
version = "1.00",
@@ -113,6 +119,54 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/pagella-math.lfg b/tex/context/fonts/mkiv/pagella-math.lfg
index 88018193d..f03c10d65 100644
--- a/tex/context/fonts/mkiv/pagella-math.lfg
+++ b/tex/context/fonts/mkiv/pagella-math.lfg
@@ -27,6 +27,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.20 }
+
+
return {
name = "pagella-math",
version = "1.00",
@@ -144,6 +150,55 @@ return {
-- bottomright = 3,
-- },
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+ [0x27EB] = { topright = -0.2, bottomright = -0.2 },
+ ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
},
},
{
diff --git a/tex/context/fonts/mkiv/schola-math.lfg b/tex/context/fonts/mkiv/schola-math.lfg
index 1287f19d0..5c96f9055 100644
--- a/tex/context/fonts/mkiv/schola-math.lfg
+++ b/tex/context/fonts/mkiv/schola-math.lfg
@@ -10,6 +10,12 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.20 }
+
+
return {
name = "schola-math",
version = "1.00",
@@ -52,6 +58,54 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.25,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.25,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
},
},
{
diff --git a/tex/context/fonts/mkiv/stix-two-math.lfg b/tex/context/fonts/mkiv/stix-two-math.lfg
index d543a4e9b..bd09c192b 100644
--- a/tex/context/fonts/mkiv/stix-two-math.lfg
+++ b/tex/context/fonts/mkiv/stix-two-math.lfg
@@ -1,3 +1,9 @@
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.35 }
+
+
return {
name = "stix-two-math",
version = "1.00",
@@ -51,6 +57,55 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ -- ["0x7D.variants.*"] = {
+ -- topright = -0.15,
+ -- bottomright = -0.15,
+ -- }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.2,
+ bottomright = -0.2,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
},
},
-- 0xFEOO should be chancery style, if present
diff --git a/tex/context/fonts/mkiv/termes-math.lfg b/tex/context/fonts/mkiv/termes-math.lfg
index b7e3b2d45..f45ee4433 100644
--- a/tex/context/fonts/mkiv/termes-math.lfg
+++ b/tex/context/fonts/mkiv/termes-math.lfg
@@ -17,6 +17,11 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
+-- When set this will bypass the italic correction hackery!
+local integral_variants = { bottomright = -0.20 }
+-- local integral_top = { topright = 0.05 }
+local integral_bottom = { bottomright = -0.30 }
+
return {
name = "termes-math",
@@ -72,6 +77,57 @@ return {
-- topright = 0,
bottomright = -0.2,
},
+
+
+ ["0x7D.parts.top"] = {
+ topright = -0.15,
+ }, -- right brace top
+ ["0x7D.parts.bottom"] = {
+ bottomright = -0.15,
+ }, -- right brace bottom
+ ["0x7D.variants.*"] = {
+ topright = -0.1,
+ bottomright = -0.1,
+ }, -- right brace variants
+ ["0x29.parts.top"] = {
+ topright = -0.1,
+ }, -- right parenthesis top
+ ["0x29.parts.bottom"] = {
+ bottomright = -0.1,
+ }, -- right parenthesis bottom
+ ["0x29.variants.*"] = {
+ topright = -0.15,
+ bottomright = -0.15,
+ }, -- right parenthesis variants
+ ["0x221A.parts.top"] = {
+ topright = 0.2,
+ }, -- right radical top
+ ["0x221A.parts.bottom"] = {
+ bottomright = 0.2,
+ }, -- right radical bottom
+ ["0x221A.variants.*"] = {
+ topright = 0.2,
+ bottomright = 0.2,
+ }, -- right radical variants
+
+ -- angle
+ [0x27E9] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+ [0x27EB] = { topright = -0.1, bottomright = -0.1 },
+ ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
+
+ ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom,
+ ["0x222C.variants.*"] = integral_variants, ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom,
+ ["0x222D.variants.*"] = integral_variants, ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom,
+ ["0x222E.variants.*"] = integral_variants, ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom,
+ ["0x222F.variants.*"] = integral_variants, ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom,
+ ["0x2230.variants.*"] = integral_variants, ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom,
+ ["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
+ ["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
+ ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+
+
+
},
},
{
diff --git a/tex/context/interface/mkii/keys-fr.xml b/tex/context/interface/mkii/keys-fr.xml
index 213f129ed..96e655e31 100644
--- a/tex/context/interface/mkii/keys-fr.xml
+++ b/tex/context/interface/mkii/keys-fr.xml
@@ -876,6 +876,7 @@
<cd:constant name='frameradius' value='rayoncadre'/>
<cd:constant name='frames' value='cadres'/>
<cd:constant name='freeregion' value='regionlibre'/>
+ <cd:constant name='freezespacing' value='freezespacing'/>
<cd:constant name='from' value='de'/>
<cd:constant name='functioncolor' value='couleurfonction'/>
<cd:constant name='functionstyle' value='stylefonction'/>
@@ -956,6 +957,7 @@
<cd:constant name='lastpubsep' value='sepdernierepub'/>
<cd:constant name='layout' value='miseenpage'/>
<cd:constant name='left' value='gauche'/>
+ <cd:constant name='leftclass' value='leftclass'/>
<cd:constant name='leftcolor' value='couleurgauche'/>
<cd:constant name='leftcompoundhyphen' value='traitdunioncomposegauche'/>
<cd:constant name='leftedge' value='bordgauche'/>
@@ -1014,6 +1016,7 @@
<cd:constant name='menu' value='menu'/>
<cd:constant name='method' value='methode'/>
<cd:constant name='middle' value='milieu'/>
+ <cd:constant name='middleclass' value='middleclass'/>
<cd:constant name='middlecolor' value='couleurmilieu'/>
<cd:constant name='middlecommand' value='commandemilieu'/>
<cd:constant name='middlesource' value='middlesource'/>
@@ -1060,6 +1063,8 @@
<cd:constant name='numberconversionset' value='jeuconversionnumero'/>
<cd:constant name='numberdistance' value='distancenumero'/>
<cd:constant name='numbering' value='numérotation'/>
+ <cd:constant name='numberlocation' value='numberlocation'/>
+ <cd:constant name='numbermethod' value='numbermethod'/>
<cd:constant name='numberorder' value='ordrenumero'/>
<cd:constant name='numberprefix' value='prefixenumero'/>
<cd:constant name='numbersegments' value='segmentsnumero'/>
@@ -1070,6 +1075,7 @@
<cd:constant name='numberstopper' value='stoppeurnumero'/>
<cd:constant name='numberstrut' value='entretoisenumero'/>
<cd:constant name='numberstyle' value='stylenumero'/>
+ <cd:constant name='numberthreshold' value='numberthreshold'/>
<cd:constant name='numberwidth' value='largeurnumero'/>
<cd:constant name='nx' value='nx'/>
<cd:constant name='ny' value='ny'/>
@@ -1123,6 +1129,7 @@
<cd:constant name='palet' value='palette'/>
<cd:constant name='paper' value='papier'/>
<cd:constant name='paragraph' value='paragraphe'/>
+ <cd:constant name='penalties' value='penalties'/>
<cd:constant name='period' value='periode'/>
<cd:constant name='place' value='placer'/>
<cd:constant name='placehead' value='placertete'/>
@@ -1176,6 +1183,7 @@
<cd:constant name='reverse' value='inverser'/>
<cd:constant name='right' value='droite'/>
<cd:constant name='rightchars' value='caracteresdroite'/>
+ <cd:constant name='rightclass' value='rightclass'/>
<cd:constant name='rightcolor' value='couleurdroite'/>
<cd:constant name='rightcompoundhyphen' value='traitdunioncomposedroite'/>
<cd:constant name='rightedge' value='borddroit'/>
diff --git a/tex/context/modules/mkxl/x-mathml.mkxl b/tex/context/modules/mkxl/x-mathml.mkxl
index 1cb94ff44..12ddf2586 100644
--- a/tex/context/modules/mkxl/x-mathml.mkxl
+++ b/tex/context/modules/mkxl/x-mathml.mkxl
@@ -612,11 +612,13 @@
\stopxmlsetups
\startxmlsetups mml:cn:polar:b
- {\mr e}\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}}
+% {\mr e}\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}}
+ \ee\normalsuperscript{\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\ii}
\stopxmlsetups
\startxmlsetups mml:cn:polar:c
- \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+% \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+ \exp\left(\xmlsnippet{#1}{1}+\xmlsnippet{#1}{3}\ii\right)
\stopxmlsetups
\startxmlsetups mml:cn:complex-polar
@@ -624,7 +626,8 @@
\stopxmlsetups
\startxmlsetups mml:cn:complex % todo ( )
- \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+% \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\thinspace{\mr i}\right)
+ \left(\xmlsnippet{#1}{1} + \xmlsnippet{#1}{3}\ii\right)
\stopxmlsetups
\startxmlsetups mml:cn:complex-cartesian
@@ -832,7 +835,7 @@
\startxmlsetups mml:otherwise
% \xmlflush{#1}\MMLcPIECEseparator&{\mr otherwise}\crcr
- \xmlflush{#1}&{\mr otherwise}\crcr
+ \xmlflush{#1}&\mtext{otherwise}\crcr
\stopxmlsetups
% end of piece
@@ -866,8 +869,10 @@
% min max
-\startxmlsetups mml:min \mathopnolimits{min} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
-\startxmlsetups mml:max \mathopnolimits{max} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+% \startxmlsetups mml:min \mathopnolimits{min} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+\startxmlsetups mml:min \min \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+% \startxmlsetups mml:max \mathopnolimits{max} \xmlsetup{#1}{mml:minmax} \stopxmlsetups
+\startxmlsetups mml:max \max \xmlsetup{#1}{mml:minmax} \stopxmlsetups
\startxmlsetups mml:minmax
\xmldoif {#1} {/mml:bvar} {
@@ -1243,7 +1248,8 @@
\xmlfirst{#1}{/mml:ci}
}
\xmldoifelse {#1} {/mml:bvar} {
- \thinspace {\mr d} \xmlfirst{#1}{/mml:bvar}
+% \thinspace {\mr d} \xmlfirst{#1}{/mml:bvar}
+ \dd \xmlfirst{#1}{/mml:bvar}
} {
% nothing
}
@@ -1270,7 +1276,8 @@
} {
\xmldoifelse {#1} {/mml:bvar} {
\mmlfrac {
- {\mr d}{
+% {\mr d}{
+ \dd{
\xmldoifelse {#1} {/mml:degree} {
\normalsuperscript{\xmlconcat{#1}{/mml:degree}\empty}
} {
@@ -1292,7 +1299,8 @@
}
}
} {
- {\mr d}
+% {\mr d}
+ \dd
\xmlfirst{#1}{/mml:bvar/!mml:degree}
\xmldoif {#1} {/mml:bvar/mml:degree} {
\normalsuperscript{\xmlfirst{#1}{/mml:bvar/mml:degree}}
@@ -1330,7 +1338,8 @@
\startxmlsetups mml:partialdiff
\xmldoifelse {#1} {/mml:list} {
- {\mr D}\normalsubscript{
+% {\mr D}\normalsubscript{
+ \DD\normalsubscript{
\begingroup
\setfalse\mmllistdelimiters
\xmlall{#1}{/mml:list}
@@ -1340,7 +1349,8 @@
} {
\xmldoifelse {#1} {/mml:bvar} {
\mmlfrac {
- {\mr d}\normalsuperscript{
+% {\mr d}\normalsuperscript{
+ \dd\normalsuperscript{
\xmldoifelse {#1} {/mml:degree} {
\xmlconcat{#1}{/mml:degree}\empty
} {
@@ -1353,7 +1363,8 @@
\xmldoif {#1}{/mml:bvar/!mml:degree} {
\xmlfirst{#1}{/mml:bvar/!mml:degree} \,
}
- {\mr d}\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
+% {\mr d}\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
+ \dd\xmlfirst{#1}{/(mml:apply\string|mml:reln\string|mml:ci\string|mml:cn)}
\xmldoif {#1} {/mml:bvar/mml:degree} {
\normalsuperscript{\xmlfirst{#1}{/mml:bvar/mml:degree}}
}
@@ -1692,8 +1703,8 @@
\startxmlsetups mml:naturalnumbers \naturalnumbers \stopxmlsetups
\startxmlsetups mml:complexes \complexes \stopxmlsetups
\startxmlsetups mml:primes \primes \stopxmlsetups
-\startxmlsetups mml:exponentiale \mathopnolimits{e} \stopxmlsetups
-\startxmlsetups mml:imaginaryi \mathopnolimits{i} \stopxmlsetups
+\startxmlsetups mml:exponentiale \ee \stopxmlsetups % \mathopnolimits{e} \stopxmlsetups
+\startxmlsetups mml:imaginaryi \ii \stopxmlsetups % \mathopnolimits{i} \stopxmlsetups
\startxmlsetups mml:notanumber \mathopnolimits{NaN} \stopxmlsetups
\startxmlsetups mml:true \mathopnolimits{true} \stopxmlsetups
\startxmlsetups mml:false \mathopnolimits{false} \stopxmlsetups
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index fe7b710c3..ae49b363f 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-01 20:30
+-- merge date : 2022-08-05 11:40
do -- begin closure to overcome local limits and interference