From 809177a0640771ac59eb13a1b52c91acb644e3a1 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sat, 10 Sep 2022 03:48:41 +0200 Subject: 2022-09-10 02:44:00 --- .../lexers/data/scite-context-data-context.lua | 2 +- .../context/lexers/data/scite-context-data-tex.lua | 4 +- .../context/scite-context-data-context.properties | 59 +- .../context/scite-context-data-tex.properties | 313 +++++----- context/data/vscode/settings.json | 4 +- .../manuals/luametatex/luametatex-callbacks.tex | 13 +- .../general/manuals/luametatex/luametatex-math.tex | 81 ++- .../manuals/luametatex/luametatex-nodes.tex | 1 + .../general/manuals/luametatex/luametatex.tex | 4 +- .../manuals/ontarget/ontarget-anchoring.tex | 3 +- scripts/context/lua/mtx-vscode.lua | 22 +- scripts/context/lua/mtxrun.lua | 6 +- scripts/context/stubs/mswin/mtxrun.lua | 6 +- scripts/context/stubs/unix/mtxrun | 6 +- scripts/context/stubs/win64/mtxrun.lua | 6 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-de.mkii | 12 +- tex/context/base/mkii/mult-it.mkii | 4 +- tex/context/base/mkii/mult-ro.mkii | 4 +- tex/context/base/mkiv/char-def.lua | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/font-prv.lua | 2 + tex/context/base/mkiv/math-ini.mkiv | 18 +- tex/context/base/mkiv/mult-def.lua | 16 +- tex/context/base/mkiv/mult-low.lua | 4 +- tex/context/base/mkiv/mult-prm.lua | 33 +- tex/context/base/mkiv/status-files.pdf | Bin 24618 -> 24651 bytes tex/context/base/mkiv/status-lua.pdf | Bin 259899 -> 260450 bytes tex/context/base/mkiv/util-tab.lua | 22 + tex/context/base/mkxl/catc-ini.mkxl | 28 +- tex/context/base/mkxl/char-prv.lmt | 34 - tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/core-con.mkxl | 2 +- tex/context/base/mkxl/driv-shp.lmt | 2 + tex/context/base/mkxl/font-ots.lmt | 12 +- tex/context/base/mkxl/lang-mis.mkxl | 10 +- tex/context/base/mkxl/lpdf-lmt.lmt | 2 + tex/context/base/mkxl/luat-log.lmt | 28 +- tex/context/base/mkxl/math-act.lmt | 50 +- tex/context/base/mkxl/math-ali.lmt | 327 ++++++++-- tex/context/base/mkxl/math-ali.mkxl | 55 ++ tex/context/base/mkxl/math-def.mkxl | 10 +- tex/context/base/mkxl/math-del.mklx | 32 +- tex/context/base/mkxl/math-fen.mkxl | 23 +- tex/context/base/mkxl/math-ini.lmt | 1 + tex/context/base/mkxl/math-ini.mkxl | 367 ++++++++--- tex/context/base/mkxl/math-noa.lmt | 689 ++++++++++++--------- tex/context/base/mkxl/math-rad.mklx | 13 +- tex/context/base/mkxl/node-nut.lmt | 5 + tex/context/base/mkxl/node-res.lmt | 12 +- tex/context/base/mkxl/node-rul.mkxl | 6 +- tex/context/base/mkxl/node-shp.lmt | 8 +- tex/context/base/mkxl/pack-box.mkxl | 48 +- tex/context/base/mkxl/task-ini.lmt | 4 +- tex/context/base/mkxl/typo-cap.lmt | 2 +- tex/context/base/mkxl/typo-itc.lmt | 90 ++- tex/context/base/mkxl/typo-rub.lmt | 202 ++++-- tex/context/fonts/mkiv/pagella-math.lfg | 12 + tex/context/interface/mkii/keys-de.xml | 12 +- tex/context/interface/mkii/keys-it.xml | 4 +- tex/context/interface/mkii/keys-ro.xml | 4 +- tex/context/modules/mkiv/s-abbreviations-logos.tex | 1 + tex/context/modules/mkxl/m-gimmicks.mkxl | 25 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 67 files changed, 1844 insertions(+), 936 deletions(-) diff --git a/context/data/scite/context/lexers/data/scite-context-data-context.lua b/context/data/scite/context/lexers/data/scite-context-data-context.lua index 1b9b127c0..f90de0fca 100644 --- a/context/data/scite/context/lexers/data/scite-context-data-context.lua +++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua @@ -1,4 +1,4 @@ return { - ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "centeringskip", "stretchingskip", "shrinkingskip", "centeringfillskip", "stretchingfillskip", "shrinkingfillskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "binaryshiftedten", "binaryshiftedtwenty", "binaryshiftedthirty", "thickermuskip", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "shapingpenaltyfrozenparcode", "orphanpenaltyfrozenparcode", "allfrozenparcode", "mathpenaltyfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "markautomigrationcode", "insertautomigrationcode", "adjustautomigrationcode", "preautomigrationcode", "postautomigrationcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "leftoriginlistanchorcode", "leftheightlistanchorcode", "leftdepthlistanchorcode", "rightoriginlistanchorcode", "rightheightlistanchorcode", "rightdepthlistanchorcode", "centeroriginlistanchorcode", "centerheightlistanchorcode", "centerdepthlistanchorcode", "halfwaytotallistanchorcode", "halfwayheightlistanchorcode", "halfwaydepthlistanchorcode", "halfwayleftlistanchorcode", "halfwayrightlistanchorcode", "negatexlistsigncode", "negateylistsigncode", "negatelistsigncode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordinarycode", "mathordcode", "mathoperatorcode", "mathopcode", "mathbinarycode", "mathbincode", "mathrelationcode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctuationcode", "mathpunctcode", "mathovercode", "mathundercode", "mathinnercode", "mathradicalcode", "mathfractioncode", "mathmiddlecode", "mathaccentcode", "mathfencedcode", "mathghostcode", "mathvariablecode", "mathactivecode", "mathvcentercode", "mathconstructcode", "mathwrappedcode", "mathbegincode", "mathendcode", "mathexplicitcode", "mathdivisioncode", "mathfactorialcode", "mathdimensioncode", "mathexperimentalcode", "mathtextpunctuationcode", "mathimaginarycode", "mathdifferentialcode", "mathexponentialcode", "mathellipsiscode", "mathfunctioncode", "mathdigitcode", "mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode", "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "flattenhleadersnormalizecode", "normalizeparnormalizeparcode", "flattenvleadersnormalizeparcode", "nopreslackclassoptioncode", "nopostslackclassoptioncode", "lefttopkernclassoptioncode", "righttopkernclassoptioncode", "leftbottomkernclassoptioncode", "rightbottomkernclassoptioncode", "lookaheadforendclassoptioncode", "noitaliccorrectionclassoptioncode", "defaultmathclassoptions", "checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode", "flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode", "carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode", "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continueifinputfile", "continuewhenlmtxmode", "continuewhenmkivmode" }, + ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "centeringskip", "stretchingskip", "shrinkingskip", "centeringfillskip", "stretchingfillskip", "shrinkingfillskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "binaryshiftedten", "binaryshiftedtwenty", "binaryshiftedthirty", "thickermuskip", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "shapingpenaltyfrozenparcode", "orphanpenaltyfrozenparcode", "allfrozenparcode", "mathpenaltyfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "markautomigrationcode", "insertautomigrationcode", "adjustautomigrationcode", "preautomigrationcode", "postautomigrationcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "leftoriginlistanchorcode", "leftheightlistanchorcode", "leftdepthlistanchorcode", "rightoriginlistanchorcode", "rightheightlistanchorcode", "rightdepthlistanchorcode", "centeroriginlistanchorcode", "centerheightlistanchorcode", "centerdepthlistanchorcode", "halfwaytotallistanchorcode", "halfwayheightlistanchorcode", "halfwaydepthlistanchorcode", "halfwayleftlistanchorcode", "halfwayrightlistanchorcode", "negatexlistsigncode", "negateylistsigncode", "negatelistsigncode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordinarycode", "mathordcode", "mathoperatorcode", "mathopcode", "mathbinarycode", "mathbincode", "mathrelationcode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctuationcode", "mathpunctcode", "mathovercode", "mathundercode", "mathinnercode", "mathradicalcode", "mathfractioncode", "mathmiddlecode", "mathaccentcode", "mathfencedcode", "mathghostcode", "mathvariablecode", "mathactivecode", "mathvcentercode", "mathconstructcode", "mathwrappedcode", "mathbegincode", "mathendcode", "mathexplicitcode", "mathdivisioncode", "mathfactorialcode", "mathdimensioncode", "mathexperimentalcode", "mathtextpunctuationcode", "mathimaginarycode", "mathdifferentialcode", "mathexponentialcode", "mathellipsiscode", "mathfunctioncode", "mathdigitcode", "mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode", "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", "mathnumbergroupcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "flattenhleadersnormalizecode", "normalizeparnormalizeparcode", "flattenvleadersnormalizeparcode", "nopreslackclassoptioncode", "nopostslackclassoptioncode", "lefttopkernclassoptioncode", "righttopkernclassoptioncode", "leftbottomkernclassoptioncode", "rightbottomkernclassoptioncode", "lookaheadforendclassoptioncode", "noitaliccorrectionclassoptioncode", "defaultmathclassoptions", "checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode", "flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode", "carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode", "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "removeitaliccorrectionclassoptioncode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continueifinputfile", "continuewhenlmtxmode", "continuewhenmkivmode" }, ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "moreboxtracing", "lessboxtracing", "noboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "forceinlinemath", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "mathgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchitalic", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "newboundary", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "mathclassvalue", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "ordfracspacing", "ordradspacing", "ordmiddlespacing", "ordaccentspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "opfracspacing", "opradspacing", "opmiddlespacing", "opaccentspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "binfracspacing", "binradspacing", "binmiddlespacing", "binaccentspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "relfracspacing", "relradspacing", "relmiddlespacing", "relaccentspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "openfracspacing", "openradspacing", "openmiddlespacing", "openaccentspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "closefracspacing", "closeradspacing", "closemiddlespacing", "closeaccentspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "punctfracspacing", "punctradspacing", "punctmiddlespacing", "punctaccentspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "innerfracspacing", "innerradspacing", "innermiddlespacing", "inneraccentspacing", "fracordspacing", "fracopspacing", "fracbinspacing", "fracrelspacing", "fracopenspacing", "fracclosespacing", "fracpunctspacing", "fracinnerspacing", "fracfracspacing", "fracradspacing", "fracmiddlespacing", "fracaccentspacing", "radordspacing", "radopspacing", "radbinspacing", "radrelspacing", "radopenspacing", "radclosespacing", "radpunctspacing", "radinnerspacing", "radfracspacing", "radradspacing", "radmiddlespacing", "radaccentspacing", "middleordspacing", "middleopspacing", "middlebinspacing", "middlerelspacing", "middleopenspacing", "middleclosespacing", "middlepunctspacing", "middleinnerspacing", "middlefracspacing", "middleradspacing", "middlemiddlespacing", "middleaccentspacing", "accentordspacing", "accentopspacing", "accentbinspacing", "accentrelspacing", "accentopenspacing", "accentclosespacing", "accentpunctspacing", "accentinnerspacing", "accentfracspacing", "accentradspacing", "accentmiddlespacing", "accentaccentspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "normalprimescript", "superscript", "subscript", "nosuperscript", "nosubscript", "primescript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "triggeredmathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbottomaccent", "Umathtopaccent", "Umathbotaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "rtltext", "ltrtext", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" }, } \ No newline at end of file diff --git a/context/data/scite/context/lexers/data/scite-context-data-tex.lua b/context/data/scite/context/lexers/data/scite-context-data-tex.lua index 0673639aa..4416d41dd 100644 --- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua +++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua @@ -1,9 +1,9 @@ return { ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" }, ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "unexpanded", "unless", "widowpenalties" }, - ["luatex"]={ "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbasedepth", "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", "Umathaccenttopshiftup", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterpercent", "Umathdelimitershortfall", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathdict", "Umathdictdef", "Umathdiscretionary", "Umathextrasubpreshift", "Umathextrasubprespace", "Umathextrasubshift", "Umathextrasubspace", "Umathextrasuppreshift", "Umathextrasupprespace", "Umathextrasupshift", "Umathextrasupspace", "Umathflattenedaccentbasedepth", "Umathflattenedaccentbaseheight", "Umathflattenedaccentbottomshiftdown", "Umathflattenedaccenttopshiftup", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpresubshiftdistance", "Umathpresupshiftdistance", "Umathprimeraise", "Umathprimeraisecomposed", "Umathprimeshiftdrop", "Umathprimeshiftup", "Umathprimespaceafter", "Umathprimevariant", "Umathprimewidth", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathruledepth", "Umathruleheight", "Umathskeweddelimitertolerance", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathsource", "Umathspaceafterscript", "Umathspacebeforescript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdistance", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdistance", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathuseaxis", "Umathvextensiblevariant", "Umathvoid", "Umathxscale", "Umathyscale", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uoperator", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uprimescript", "Uradical", "Uright", "Uroot", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", "Ushiftedsuperscript", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustartmathmode", "Ustopdisplaymath", "Ustopmath", "Ustopmathmode", "Ustretched", "Ustretchedwithdelims", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "beginmathgroup", "beginsimplegroup", "boundary", "boxadapt", "boxanchor", "boxanchors", "boxattribute", "boxdirection", "boxfreeze", "boxgeometry", "boxorientation", "boxrepack", "boxshift", "boxsource", "boxtarget", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hmcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "indexofcharacter", "indexofregister", "inherited", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastatomclass", "lastboundary", "lastchkdim", "lastchknum", "lastleftclass", "lastloopiterator", "lastnamedcs", "lastnodesubtype", "lastpageextra", "lastparcontext", "lastrightclass", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letmathatomrule", "letmathparent", "letmathspacing", "letprotected", "lettonothing", "linebreakcriterium", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localcontrolledloop", "localinterlinepenalty", "localleftbox", "localleftboxbox", "localmiddlebox", "localmiddleboxbox", "localrightbox", "localrightboxbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathaccent", "mathatom", "mathatomglue", "mathatomskip", "mathbackwardpenalties", "mathbeginclass", "mathcheckfencesmode", "mathdictgroup", "mathdictproperties", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathleftclass", "mathlimitsmode", "mathmainstyle", "mathmiddle", "mathnolimitsmode", "mathpenaltiesmode", "mathrad", "mathrightclass", "mathrulesfam", "mathrulesmode", "mathscale", "mathscriptsmode", "mathslackmode", "mathspacingmode", "mathstackstyle", "mathstyle", "mathstylefontid", "mathsurroundmode", "mathsurroundskip", "maththreshold", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "pageboundary", "pageextragoal", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "pettymuskip", "postexhyphenchar", "posthyphenchar", "postinlinepenalty", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "preinlinepenalty", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitloop", "quitvmode", "resetmathspacing", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scaledemwidth", "scaledexheight", "scaledextraspace", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tinymuskip", "todimension", "tohexadecimal", "tointeger", "tokenized", "toksapp", "tokspre", "tolerant", "tomathstyle", "toscaled", "tosparsedimension", "tosparsescaled", "tpack", "tracingadjusts", "tracingalignments", "tracingexpressions", "tracingfonts", "tracingfullboxes", "tracinghyphenation", "tracinginserts", "tracinglevels", "tracingmarks", "tracingmath", "tracingnodes", "tracingpenalties", "uleaders", "undent", "unexpandedloop", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoks", "xtoksapp", "xtokspre" }, + ["luatex"]={ "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelimited", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbasedepth", "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", "Umathaccentextendmargin", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", "Umathaccenttopshiftup", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbottomaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharslot", "Umathclass", "Umathcode", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterpercent", "Umathdelimitershortfall", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathdict", "Umathdictdef", "Umathdiscretionary", "Umathextrasubpreshift", "Umathextrasubprespace", "Umathextrasubshift", "Umathextrasubspace", "Umathextrasuppreshift", "Umathextrasupprespace", "Umathextrasupshift", "Umathextrasupspace", "Umathflattenedaccentbasedepth", "Umathflattenedaccentbaseheight", "Umathflattenedaccentbottomshiftdown", "Umathflattenedaccenttopshiftup", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpresubshiftdistance", "Umathpresupshiftdistance", "Umathprimeraise", "Umathprimeraisecomposed", "Umathprimeshiftdrop", "Umathprimeshiftup", "Umathprimespaceafter", "Umathprimevariant", "Umathprimewidth", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathruledepth", "Umathruleheight", "Umathskeweddelimitertolerance", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathsource", "Umathspaceafterscript", "Umathspacebeforescript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdistance", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdistance", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathuseaxis", "Umathvextensiblevariant", "Umathvoid", "Umathxscale", "Umathyscale", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uoperator", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uprimescript", "Uradical", "Uright", "Uroot", "Urooted", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", "Ushiftedsuperscript", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustartmathmode", "Ustopdisplaymath", "Ustopmath", "Ustopmathmode", "Ustretched", "Ustretchedwithdelims", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "aligncontent", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "beginmathgroup", "beginsimplegroup", "boundary", "boxadapt", "boxanchor", "boxanchors", "boxattribute", "boxdirection", "boxfreeze", "boxgeometry", "boxorientation", "boxrepack", "boxshift", "boxsource", "boxtarget", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedname", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyph", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hmcode", "holdingmigrations", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "indexofcharacter", "indexofregister", "inherited", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastatomclass", "lastboundary", "lastchkdim", "lastchknum", "lastleftclass", "lastloopiterator", "lastnamedcs", "lastnodesubtype", "lastpageextra", "lastparcontext", "lastrightclass", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letmathatomrule", "letmathparent", "letmathspacing", "letprotected", "lettonothing", "linebreakcriterium", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localcontrolledloop", "localinterlinepenalty", "localleftbox", "localleftboxbox", "localmiddlebox", "localmiddleboxbox", "localrightbox", "localrightboxbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathaccent", "mathatom", "mathatomglue", "mathatomskip", "mathbackwardpenalties", "mathbeginclass", "mathcheckfencesmode", "mathdictgroup", "mathdictproperties", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathleftclass", "mathlimitsmode", "mathmainstyle", "mathmiddle", "mathnolimitsmode", "mathpenaltiesmode", "mathrad", "mathrightclass", "mathrulesfam", "mathrulesmode", "mathscale", "mathscriptsmode", "mathslackmode", "mathspacingmode", "mathstackstyle", "mathstyle", "mathstylefontid", "mathsurroundmode", "mathsurroundskip", "maththreshold", "meaningasis", "meaningfull", "meaningless", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "overshoot", "pageboundary", "pageextragoal", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "pettymuskip", "postexhyphenchar", "posthyphenchar", "postinlinepenalty", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "preinlinepenalty", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitloop", "quitvmode", "resetmathspacing", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scaledemwidth", "scaledexheight", "scaledextraspace", "scaledfontdimen", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", "srule", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tinymuskip", "todimension", "tohexadecimal", "tointeger", "tokenized", "toksapp", "tokspre", "tolerant", "tomathstyle", "toscaled", "tosparsedimension", "tosparsescaled", "tpack", "tracingadjusts", "tracingalignments", "tracingexpressions", "tracingfonts", "tracingfullboxes", "tracinghyphenation", "tracinginserts", "tracinglevels", "tracingmarks", "tracingmath", "tracingnodes", "tracingpenalties", "uleaders", "undent", "unexpandedloop", "unhpack", "unletfrozen", "unletprotected", "untraced", "unvpack", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoks", "xtoksapp", "xtokspre" }, ["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" }, ["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfomitinfodict", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" }, - ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "holdingmigrations", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningasis", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parinitleftskip", "parinitrightskip", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "srule", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topskip", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "unboundary", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" }, + ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "futurelet", "gdef", "global", "globaldefs", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parinitleftskip", "parinitrightskip", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topskip", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "unboundary", "underline", "unhbox", "unhcopy", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" }, ["xetex"]={ "XeTeXversion" }, } \ No newline at end of file diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties index 2dcdb7966..f88a237f1 100644 --- a/context/data/scite/context/scite-context-data-context.properties +++ b/context/data/scite/context/scite-context-data-context.properties @@ -92,35 +92,36 @@ mathtextpunctuationcode mathimaginarycode mathdifferentialcode mathexponentialco mathfunctioncode mathdigitcode mathalphacode mathboxcode mathchoicecode \ mathnothingcode mathlimopcode mathnolopcode mathunsetcode mathunspacedcode \ mathallcode mathfakecode mathunarycode mathmaybeordinarycode mathmayberelationcode \ -mathmaybebinarycode constantnumber constantnumberargument constantdimen constantdimenargument \ -constantemptyargument luastringsep !!bs !!es lefttorightmark \ -righttoleftmark lrm rlm bidilre bidirle \ -bidipop bidilro bidirlo breakablethinspace nobreakspace \ -nonbreakablespace narrownobreakspace zerowidthnobreakspace ideographicspace ideographichalffillspace \ -twoperemspace threeperemspace fourperemspace fiveperemspace sixperemspace \ -figurespace punctuationspace hairspace enquad emquad \ -zerowidthspace zerowidthnonjoiner zerowidthjoiner zwnj zwj \ -optionalspace asciispacechar softhyphen Ux eUx \ -Umathaccents parfillleftskip parfillrightskip startlmtxmode stoplmtxmode \ -startmkivmode stopmkivmode wildcardsymbol normalhyphenationcode automatichyphenationcode \ -explicithyphenationcode syllablehyphenationcode uppercasehyphenationcode collapsehyphenationcode compoundhyphenationcode \ -strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode explicitpenaltyhyphenationcode permitgluehyphenationcode \ -permitallhyphenationcode permitmathreplacehyphenationcode forcecheckhyphenationcode lazyligatureshyphenationcode forcehandlerhyphenationcode \ -feedbackcompoundhyphenationcode ignoreboundshyphenationcode partialhyphenationcode completehyphenationcode normalizelinenormalizecode \ -parindentskipnormalizecode swaphangindentnormalizecode swapparsshapenormalizecode breakafterdirnormalizecode removemarginkernsnormalizecode \ -clipwidthnormalizecode flattendiscretionariesnormalizecode discardzerotabskipsnormalizecode flattenhleadersnormalizecode normalizeparnormalizeparcode \ -flattenvleadersnormalizeparcode nopreslackclassoptioncode nopostslackclassoptioncode lefttopkernclassoptioncode righttopkernclassoptioncode \ -leftbottomkernclassoptioncode rightbottomkernclassoptioncode lookaheadforendclassoptioncode noitaliccorrectionclassoptioncode defaultmathclassoptions \ -checkligatureclassoptioncode checkitaliccorrectionclassoptioncode checkkernpairclassoptioncode flattenclassoptioncode omitpenaltyclassoptioncode \ -unpackclassoptioncode raiseprimeclassoptioncode carryoverlefttopkernclassoptioncode carryoverleftbottomkernclassoptioncode carryoverrighttopkernclassoptioncode \ -carryoverrightbottomkernclassoptioncode preferdelimiterdimensionsclassoptioncode autoinjectclassoptioncode noligaturingglyphoptioncode nokerningglyphoptioncode \ -noleftligatureglyphoptioncode noleftkernglyphoptioncode norightligatureglyphoptioncode norightkernglyphoptioncode noexpansionglyphoptioncode \ -noprotrusionglyphoptioncode noitaliccorrectionglyphoptioncode nokerningcode noligaturingcode frozenflagcode \ -tolerantflagcode protectedflagcode primitiveflagcode permanentflagcode noalignedflagcode \ -immutableflagcode mutableflagcode globalflagcode overloadedflagcode immediateflagcode \ -conditionalflagcode valueflagcode instanceflagcode ordmathflattencode binmathflattencode \ -relmathflattencode punctmathflattencode innermathflattencode normalworddiscoptioncode preworddiscoptioncode \ -postworddiscoptioncode continueifinputfile continuewhenlmtxmode continuewhenmkivmode +mathmaybebinarycode mathnumbergroupcode constantnumber constantnumberargument constantdimen \ +constantdimenargument constantemptyargument luastringsep !!bs !!es \ +lefttorightmark righttoleftmark lrm rlm bidilre \ +bidirle bidipop bidilro bidirlo breakablethinspace \ +nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace ideographicspace \ +ideographichalffillspace twoperemspace threeperemspace fourperemspace fiveperemspace \ +sixperemspace figurespace punctuationspace hairspace enquad \ +emquad zerowidthspace zerowidthnonjoiner zerowidthjoiner zwnj \ +zwj optionalspace asciispacechar softhyphen Ux \ +eUx Umathaccents parfillleftskip parfillrightskip startlmtxmode \ +stoplmtxmode startmkivmode stopmkivmode wildcardsymbol normalhyphenationcode \ +automatichyphenationcode explicithyphenationcode syllablehyphenationcode uppercasehyphenationcode collapsehyphenationcode \ +compoundhyphenationcode strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode explicitpenaltyhyphenationcode \ +permitgluehyphenationcode permitallhyphenationcode permitmathreplacehyphenationcode forcecheckhyphenationcode lazyligatureshyphenationcode \ +forcehandlerhyphenationcode feedbackcompoundhyphenationcode ignoreboundshyphenationcode partialhyphenationcode completehyphenationcode \ +normalizelinenormalizecode parindentskipnormalizecode swaphangindentnormalizecode swapparsshapenormalizecode breakafterdirnormalizecode \ +removemarginkernsnormalizecode clipwidthnormalizecode flattendiscretionariesnormalizecode discardzerotabskipsnormalizecode flattenhleadersnormalizecode \ +normalizeparnormalizeparcode flattenvleadersnormalizeparcode nopreslackclassoptioncode nopostslackclassoptioncode lefttopkernclassoptioncode \ +righttopkernclassoptioncode leftbottomkernclassoptioncode rightbottomkernclassoptioncode lookaheadforendclassoptioncode noitaliccorrectionclassoptioncode \ +defaultmathclassoptions checkligatureclassoptioncode checkitaliccorrectionclassoptioncode checkkernpairclassoptioncode flattenclassoptioncode \ +omitpenaltyclassoptioncode unpackclassoptioncode raiseprimeclassoptioncode carryoverlefttopkernclassoptioncode carryoverleftbottomkernclassoptioncode \ +carryoverrighttopkernclassoptioncode carryoverrightbottomkernclassoptioncode preferdelimiterdimensionsclassoptioncode autoinjectclassoptioncode removeitaliccorrectionclassoptioncode \ +noligaturingglyphoptioncode nokerningglyphoptioncode noleftligatureglyphoptioncode noleftkernglyphoptioncode norightligatureglyphoptioncode \ +norightkernglyphoptioncode noexpansionglyphoptioncode noprotrusionglyphoptioncode noitaliccorrectionglyphoptioncode nokerningcode \ +noligaturingcode frozenflagcode tolerantflagcode protectedflagcode primitiveflagcode \ +permanentflagcode noalignedflagcode immutableflagcode mutableflagcode globalflagcode \ +overloadedflagcode immediateflagcode conditionalflagcode valueflagcode instanceflagcode \ +ordmathflattencode binmathflattencode relmathflattencode punctmathflattencode innermathflattencode \ +normalworddiscoptioncode preworddiscoptioncode postworddiscoptioncode continueifinputfile continuewhenlmtxmode \ +continuewhenmkivmode keywordclass.context.helpers=\ startsetups stopsetups startxmlsetups stopxmlsetups \ diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties index ca8ab34ff..3ea4d1b49 100644 --- a/context/data/scite/context/scite-context-data-tex.properties +++ b/context/data/scite/context/scite-context-data-tex.properties @@ -17,43 +17,43 @@ unless widowpenalties keywordclass.tex.luatex=\ Uabove Uabovewithdelims Uatop Uatopwithdelims \ -Uchar Udelcode Udelcodenum Udelimiter Udelimiterover \ +Uchar Udelcode Udelimited Udelimiter Udelimiterover \ Udelimiterunder Uhextensible Uleft Umathaccent Umathaccentbasedepth \ -Umathaccentbaseheight Umathaccentbottomovershoot Umathaccentbottomshiftdown Umathaccentsuperscriptdrop Umathaccentsuperscriptpercent \ -Umathaccenttopovershoot Umathaccenttopshiftup Umathaccentvariant Umathadapttoleft Umathadapttoright \ -Umathaxis Umathbotaccentvariant Umathchar Umathcharclass Umathchardef \ -Umathcharfam Umathcharnum Umathcharnumdef Umathcharslot Umathclass \ -Umathcode Umathcodenum Umathconnectoroverlapmin Umathdegreevariant Umathdelimiterovervariant \ -Umathdelimiterpercent Umathdelimitershortfall Umathdelimiterundervariant Umathdenominatorvariant Umathdict \ -Umathdictdef Umathdiscretionary Umathextrasubpreshift Umathextrasubprespace Umathextrasubshift \ -Umathextrasubspace Umathextrasuppreshift Umathextrasupprespace Umathextrasupshift Umathextrasupspace \ -Umathflattenedaccentbasedepth Umathflattenedaccentbaseheight Umathflattenedaccentbottomshiftdown Umathflattenedaccenttopshiftup Umathfractiondelsize \ -Umathfractiondenomdown Umathfractiondenomvgap Umathfractionnumup Umathfractionnumvgap Umathfractionrule \ -Umathfractionvariant Umathhextensiblevariant Umathlimitabovebgap Umathlimitabovekern Umathlimitabovevgap \ -Umathlimitbelowbgap Umathlimitbelowkern Umathlimitbelowvgap Umathlimits Umathnoaxis \ -Umathnolimits Umathnolimitsubfactor Umathnolimitsupfactor Umathnumeratorvariant Umathopenupdepth \ -Umathopenupheight Umathoperatorsize Umathoverbarkern Umathoverbarrule Umathoverbarvgap \ -Umathoverdelimiterbgap Umathoverdelimitervariant Umathoverdelimitervgap Umathoverlayaccentvariant Umathoverlinevariant \ -Umathphantom Umathpresubshiftdistance Umathpresupshiftdistance Umathprimeraise Umathprimeraisecomposed \ -Umathprimeshiftdrop Umathprimeshiftup Umathprimespaceafter Umathprimevariant Umathprimewidth \ -Umathquad Umathradicaldegreeafter Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern \ -Umathradicalrule Umathradicalvariant Umathradicalvgap Umathruledepth Umathruleheight \ -Umathskeweddelimitertolerance Umathskewedfractionhgap Umathskewedfractionvgap Umathsource Umathspaceafterscript \ -Umathspacebeforescript Umathstackdenomdown Umathstacknumup Umathstackvariant Umathstackvgap \ -Umathsubscriptvariant Umathsubshiftdistance Umathsubshiftdown Umathsubshiftdrop Umathsubsupshiftdown \ -Umathsubsupvgap Umathsubtopmax Umathsupbottommin Umathsuperscriptvariant Umathsupshiftdistance \ -Umathsupshiftdrop Umathsupshiftup Umathsupsubbottommax Umathtopaccentvariant Umathunderbarkern \ -Umathunderbarrule Umathunderbarvgap Umathunderdelimiterbgap Umathunderdelimitervariant Umathunderdelimitervgap \ -Umathunderlinevariant Umathuseaxis Umathvextensiblevariant Umathvoid Umathxscale \ -Umathyscale Umiddle Unosubprescript Unosubscript Unosuperprescript \ -Unosuperscript Uoperator Uover Uoverdelimiter Uoverwithdelims \ -Uprimescript Uradical Uright Uroot Ushiftedsubprescript \ -Ushiftedsubscript Ushiftedsuperprescript Ushiftedsuperscript Uskewed Uskewedwithdelims \ -Ustack Ustartdisplaymath Ustartmath Ustartmathmode Ustopdisplaymath \ -Ustopmath Ustopmathmode Ustretched Ustretchedwithdelims Ustyle \ -Usubprescript Usubscript Usuperprescript Usuperscript Uunderdelimiter \ -Uvextensible adjustspacing adjustspacingshrink adjustspacingstep adjustspacingstretch \ -afterassigned aftergrouped aliased alignmark alignmentcellsource \ +Umathaccentbaseheight Umathaccentbottomovershoot Umathaccentbottomshiftdown Umathaccentextendmargin Umathaccentsuperscriptdrop \ +Umathaccentsuperscriptpercent Umathaccenttopovershoot Umathaccenttopshiftup Umathaccentvariant Umathadapttoleft \ +Umathadapttoright Umathaxis Umathbottomaccentvariant Umathchar Umathcharclass \ +Umathchardef Umathcharfam Umathcharslot Umathclass Umathcode \ +Umathconnectoroverlapmin Umathdegreevariant Umathdelimiterovervariant Umathdelimiterpercent Umathdelimitershortfall \ +Umathdelimiterundervariant Umathdenominatorvariant Umathdict Umathdictdef Umathdiscretionary \ +Umathextrasubpreshift Umathextrasubprespace Umathextrasubshift Umathextrasubspace Umathextrasuppreshift \ +Umathextrasupprespace Umathextrasupshift Umathextrasupspace Umathflattenedaccentbasedepth Umathflattenedaccentbaseheight \ +Umathflattenedaccentbottomshiftdown Umathflattenedaccenttopshiftup Umathfractiondelsize Umathfractiondenomdown Umathfractiondenomvgap \ +Umathfractionnumup Umathfractionnumvgap Umathfractionrule Umathfractionvariant Umathhextensiblevariant \ +Umathlimitabovebgap Umathlimitabovekern Umathlimitabovevgap Umathlimitbelowbgap Umathlimitbelowkern \ +Umathlimitbelowvgap Umathlimits Umathnoaxis Umathnolimits Umathnolimitsubfactor \ +Umathnolimitsupfactor Umathnumeratorvariant Umathopenupdepth Umathopenupheight Umathoperatorsize \ +Umathoverbarkern Umathoverbarrule Umathoverbarvgap Umathoverdelimiterbgap Umathoverdelimitervariant \ +Umathoverdelimitervgap Umathoverlayaccentvariant Umathoverlinevariant Umathphantom Umathpresubshiftdistance \ +Umathpresupshiftdistance Umathprimeraise Umathprimeraisecomposed Umathprimeshiftdrop Umathprimeshiftup \ +Umathprimespaceafter Umathprimevariant Umathprimewidth Umathquad Umathradicaldegreeafter \ +Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern Umathradicalrule Umathradicalvariant \ +Umathradicalvgap Umathruledepth Umathruleheight Umathskeweddelimitertolerance Umathskewedfractionhgap \ +Umathskewedfractionvgap Umathsource Umathspaceafterscript Umathspacebeforescript Umathstackdenomdown \ +Umathstacknumup Umathstackvariant Umathstackvgap Umathsubscriptvariant Umathsubshiftdistance \ +Umathsubshiftdown Umathsubshiftdrop Umathsubsupshiftdown Umathsubsupvgap Umathsubtopmax \ +Umathsupbottommin Umathsuperscriptvariant Umathsupshiftdistance Umathsupshiftdrop Umathsupshiftup \ +Umathsupsubbottommax Umathtopaccentvariant Umathunderbarkern Umathunderbarrule Umathunderbarvgap \ +Umathunderdelimiterbgap Umathunderdelimitervariant Umathunderdelimitervgap Umathunderlinevariant Umathuseaxis \ +Umathvextensiblevariant Umathvoid Umathxscale Umathyscale Umiddle \ +Unosubprescript Unosubscript Unosuperprescript Unosuperscript Uoperator \ +Uover Uoverdelimiter Uoverwithdelims Uprimescript Uradical \ +Uright Uroot Urooted Ushiftedsubprescript Ushiftedsubscript \ +Ushiftedsuperprescript Ushiftedsuperscript Uskewed Uskewedwithdelims Ustack \ +Ustartdisplaymath Ustartmath Ustartmathmode Ustopdisplaymath Ustopmath \ +Ustopmathmode Ustretched Ustretchedwithdelims Ustyle Usubprescript \ +Usubscript Usuperprescript Usuperscript Uunderdelimiter Uvextensible \ +adjustspacing adjustspacingshrink adjustspacingstep adjustspacingstretch afterassigned \ +aftergrouped aliased aligncontent alignmark alignmentcellsource \ alignmentwrapsource aligntab allcrampedstyles alldisplaystyles allmathstyles \ allscriptscriptstyles allscriptstyles allsplitstyles alltextstyles alluncrampedstyles \ atendofgroup atendofgrouped attribute attributedef automaticdiscretionary \ @@ -71,67 +71,69 @@ etoksapp etokspre everybeforepar everymathatom everytab \ exceptionpenalty expand expandafterpars expandafterspaces expandcstoken \ expanded expandedafter expandedloop expandtoken explicitdiscretionary \ explicithyphenpenalty firstvalidlanguage flushmarks fontcharta fontid \ -fontmathcontrol fontspecdef fontspecid fontspecifiedsize fontspecscale \ -fontspecxscale fontspecyscale fonttextcontrol formatname frozen \ -futurecsname futuredef futureexpand futureexpandis futureexpandisap \ -gdefcsname gleaders glet gletcsname glettonothing \ -gluespecdef glyphdatafield glyphoptions glyphscale glyphscriptfield \ -glyphscriptscale glyphscriptscriptscale glyphstatefield glyphtextscale glyphxoffset \ -glyphxscale glyphxscaled glyphyoffset glyphyscale glyphyscaled \ -gtoksapp gtokspre hccode hjcode hmcode \ -hpack hyphenationmin hyphenationmode ifabsdim ifabsnum \ -ifarguments ifboolean ifchkdim ifchknum ifcmpdim \ -ifcmpnum ifcondition ifcstok ifdimexpression ifdimval \ -ifempty ifflags ifhaschar ifhastok ifhastoks \ -ifhasxtoks ifincsname ifinsert ifmathparameter ifmathstyle \ -ifnumexpression ifnumval ifparameter ifparameters ifrelax \ -iftok ignorearguments ignorepars immediate immutable \ -indexofcharacter indexofregister inherited initcatcodetable insertbox \ -insertcopy insertdepth insertdistance insertheight insertheights \ -insertlimit insertmaxdepth insertmode insertmultiplier insertpenalty \ -insertprogress insertstorage insertstoring insertunbox insertuncopy \ -insertwidth instance integerdef lastarguments lastatomclass \ -lastboundary lastchkdim lastchknum lastleftclass lastloopiterator \ -lastnamedcs lastnodesubtype lastpageextra lastparcontext lastrightclass \ -leftmarginkern letcharcode letcsname letfrozen letmathatomrule \ -letmathparent letmathspacing letprotected lettonothing linebreakcriterium \ -linedirection localbrokenpenalty localcontrol localcontrolled localcontrolledloop \ -localinterlinepenalty localleftbox localleftboxbox localmiddlebox localmiddleboxbox \ -localrightbox localrightboxbox lpcode luabytecode luabytecodecall \ -luacopyinputnodes luadef luaescapestring luafunction luafunctioncall \ -luatexbanner luatexrevision luatexversion mathaccent mathatom \ -mathatomglue mathatomskip mathbackwardpenalties mathbeginclass mathcheckfencesmode \ -mathdictgroup mathdictproperties mathdirection mathdisplaymode mathdisplayskipmode \ -mathdoublescriptmode mathendclass matheqnogapstep mathfenced mathfontcontrol \ -mathforwardpenalties mathfrac mathghost mathgluemode mathgroupingmode \ -mathleftclass mathlimitsmode mathmainstyle mathmiddle mathnolimitsmode \ -mathpenaltiesmode mathrad mathrightclass mathrulesfam mathrulesmode \ -mathscale mathscriptsmode mathslackmode mathspacingmode mathstackstyle \ -mathstyle mathstylefontid mathsurroundmode mathsurroundskip maththreshold \ -mugluespecdef mutable noaligned noatomruling noboundary \ -nohrule norelax normalizelinemode normalizeparmode nospaces \ -novrule numericscale numexpression orelse orphanpenalties \ -orphanpenalty orunless outputbox overloaded overloadmode \ -pageboundary pageextragoal pagevsize parametercount parametermark \ -parattribute pardirection permanent pettymuskip postexhyphenchar \ -posthyphenchar postinlinepenalty prebinoppenalty predisplaygapfactor preexhyphenchar \ -prehyphenchar preinlinepenalty prerelpenalty protrudechars protrusionboundary \ -pxdimen quitloop quitvmode resetmathspacing retokenized \ -rightmarginkern rpcode savecatcodetable scaledemwidth scaledexheight \ -scaledextraspace scaledinterwordshrink scaledinterwordspace scaledinterwordstretch scaledmathstyle \ -scaledslantperpoint scantextokens semiexpand semiexpanded semiprotected \ -setdefaultmathcodes setfontid setmathatomrule setmathdisplaypostpenalty setmathdisplayprepenalty \ -setmathignore setmathoptions setmathpostpenalty setmathprepenalty setmathspacing \ -shapingpenaltiesmode shapingpenalty snapshotpar supmarkmode swapcsvalues \ -tabsize textdirection thewithoutunit tinymuskip todimension \ -tohexadecimal tointeger tokenized toksapp tokspre \ -tolerant tomathstyle toscaled tosparsedimension tosparsescaled \ -tpack tracingadjusts tracingalignments tracingexpressions tracingfonts \ -tracingfullboxes tracinghyphenation tracinginserts tracinglevels tracingmarks \ -tracingmath tracingnodes tracingpenalties uleaders undent \ -unexpandedloop unletfrozen unletprotected untraced vpack \ -wordboundary wrapuppar xdefcsname xtoks xtoksapp \ -xtokspre +fontmathcontrol fontspecdef fontspecid fontspecifiedname fontspecifiedsize \ +fontspecscale fontspecxscale fontspecyscale fonttextcontrol formatname \ +frozen futurecsname futuredef futureexpand futureexpandis \ +futureexpandisap gdefcsname gleaders glet gletcsname \ +glettonothing gluespecdef glyph glyphdatafield glyphoptions \ +glyphscale glyphscriptfield glyphscriptscale glyphscriptscriptscale glyphstatefield \ +glyphtextscale glyphxoffset glyphxscale glyphxscaled glyphyoffset \ +glyphyscale glyphyscaled gtoksapp gtokspre hccode \ +hjcode hmcode holdingmigrations hpack hyphenationmin \ +hyphenationmode ifabsdim ifabsnum ifarguments ifboolean \ +ifchkdim ifchknum ifcmpdim ifcmpnum ifcondition \ +ifcstok ifdimexpression ifdimval ifempty ifflags \ +ifhaschar ifhastok ifhastoks ifhasxtoks ifincsname \ +ifinsert ifmathparameter ifmathstyle ifnumexpression ifnumval \ +ifparameter ifparameters ifrelax iftok ignorearguments \ +ignorepars immediate immutable indexofcharacter indexofregister \ +inherited initcatcodetable insertbox insertcopy insertdepth \ +insertdistance insertheight insertheights insertlimit insertmaxdepth \ +insertmode insertmultiplier insertpenalty insertprogress insertstorage \ +insertstoring insertunbox insertuncopy insertwidth instance \ +integerdef lastarguments lastatomclass lastboundary lastchkdim \ +lastchknum lastleftclass lastloopiterator lastnamedcs lastnodesubtype \ +lastpageextra lastparcontext lastrightclass leftmarginkern letcharcode \ +letcsname letfrozen letmathatomrule letmathparent letmathspacing \ +letprotected lettonothing linebreakcriterium linedirection localbrokenpenalty \ +localcontrol localcontrolled localcontrolledloop localinterlinepenalty localleftbox \ +localleftboxbox localmiddlebox localmiddleboxbox localrightbox localrightboxbox \ +lpcode luabytecode luabytecodecall luacopyinputnodes luadef \ +luaescapestring luafunction luafunctioncall luatexbanner luatexrevision \ +luatexversion mathaccent mathatom mathatomglue mathatomskip \ +mathbackwardpenalties mathbeginclass mathcheckfencesmode mathdictgroup mathdictproperties \ +mathdirection mathdisplaymode mathdisplayskipmode mathdoublescriptmode mathendclass \ +matheqnogapstep mathfenced mathfontcontrol mathforwardpenalties mathfrac \ +mathghost mathgluemode mathgroupingmode mathleftclass mathlimitsmode \ +mathmainstyle mathmiddle mathnolimitsmode mathpenaltiesmode mathrad \ +mathrightclass mathrulesfam mathrulesmode mathscale mathscriptsmode \ +mathslackmode mathspacingmode mathstackstyle mathstyle mathstylefontid \ +mathsurroundmode mathsurroundskip maththreshold meaningasis meaningfull \ +meaningless mugluespecdef mutable noaligned noatomruling \ +noboundary nohrule norelax normalizelinemode normalizeparmode \ +nospaces novrule numericscale numexpression orelse \ +orphanpenalties orphanpenalty orunless outputbox overloaded \ +overloadmode overshoot pageboundary pageextragoal pagevsize \ +parametercount parametermark parattribute pardirection permanent \ +pettymuskip postexhyphenchar posthyphenchar postinlinepenalty prebinoppenalty \ +predisplaygapfactor preexhyphenchar prehyphenchar preinlinepenalty prerelpenalty \ +protrudechars protrusionboundary pxdimen quitloop quitvmode \ +resetmathspacing retokenized rightmarginkern rpcode savecatcodetable \ +scaledemwidth scaledexheight scaledextraspace scaledfontdimen scaledinterwordshrink \ +scaledinterwordspace scaledinterwordstretch scaledmathstyle scaledslantperpoint scantextokens \ +semiexpand semiexpanded semiprotected setdefaultmathcodes setfontid \ +setmathatomrule setmathdisplaypostpenalty setmathdisplayprepenalty setmathignore setmathoptions \ +setmathpostpenalty setmathprepenalty setmathspacing shapingpenaltiesmode shapingpenalty \ +snapshotpar srule supmarkmode swapcsvalues tabsize \ +textdirection thewithoutunit tinymuskip todimension tohexadecimal \ +tointeger tokenized toksapp tokspre tolerant \ +tomathstyle toscaled tosparsedimension tosparsescaled tpack \ +tracingadjusts tracingalignments tracingexpressions tracingfonts tracingfullboxes \ +tracinghyphenation tracinginserts tracinglevels tracingmarks tracingmath \ +tracingnodes tracingpenalties uleaders undent unexpandedloop \ +unhpack unletfrozen unletprotected untraced unvpack \ +vpack wordboundary wrapuppar xdefcsname xtoks \ +xtoksapp xtokspre keywordclass.tex.omega=\ Omegaminorversion Omegarevision Omegaversion @@ -164,71 +166,68 @@ pdfxformmargin pdfxformname pdfxformresources pdfximage keywordclass.tex.tex=\ - / above \ abovedisplayshortskip abovedisplayskip abovewithdelims accent adjdemerits \ -advance afterassignment aftergroup aligncontent atop \ -atopwithdelims badness baselineskip batchmode begingroup \ -belowdisplayshortskip belowdisplayskip binoppenalty botmark box \ -boxmaxdepth brokenpenalty catcode char chardef \ -cleaders clubpenalty copy count countdef \ -cr crcr csname day deadcycles \ -def defaulthyphenchar defaultskewchar delcode delimiter \ -delimiterfactor delimitershortfall dimen dimendef discretionary \ -displayindent displaylimits displaystyle displaywidowpenalty displaywidth \ -divide doublehyphendemerits dp dump edef \ -else emergencystretch end endcsname endgroup \ -endinput endlinechar eqno errhelp errmessage \ -errorcontextlines errorstopmode escapechar everycr everydisplay \ -everyhbox everyjob everymath everypar everyvbox \ -exhyphenchar exhyphenpenalty expandafter fam fi \ -finalhyphendemerits firstmark floatingpenalty font fontdimen \ -fontname fontspecifiedname futurelet gdef global \ -globaldefs glyph halign hangafter hangindent \ -hbadness hbox hfil hfill hfilneg \ -hfuzz holdinginserts holdingmigrations hrule hsize \ -hskip hss ht hyphenation hyphenchar \ -hyphenpenalty if ifcase ifcat ifdim \ -iffalse ifhbox ifhmode ifinner ifmmode \ -ifnum ifodd iftrue ifvbox ifvmode \ -ifvoid ifx ignorespaces indent input \ -inputlineno insert insertpenalties interlinepenalty jobname \ -kern language lastbox lastkern lastpenalty \ -lastskip lccode leaders left lefthyphenmin \ -leftskip leqno let limits linepenalty \ -lineskip lineskiplimit long looseness lower \ -lowercase mark mathbin mathchar mathchardef \ -mathchoice mathclose mathcode mathinner mathop \ -mathopen mathord mathpunct mathrel mathsurround \ -maxdeadcycles maxdepth meaning meaningasis meaningfull \ -meaningless medmuskip message middle mkern \ -month moveleft moveright mskip multiply \ -muskip muskipdef newlinechar noalign noexpand \ -noindent nolimits nonscript nonstopmode nulldelimiterspace \ -nullfont number omit or outer \ -output outputpenalty over overfullrule overline \ -overshoot overwithdelims pagedepth pagefilllstretch pagefillstretch \ -pagefilstretch pagegoal pageshrink pagestretch pagetotal \ -par parfillleftskip parfillskip parindent parinitleftskip \ -parinitrightskip parshape parskip patterns pausing \ -penalty postdisplaypenalty predisplaypenalty predisplaysize pretolerance \ -prevdepth prevgraf radical raise relax \ -relpenalty right righthyphenmin rightskip romannumeral \ -scaledfontdimen scriptfont scriptscriptfont scriptscriptstyle scriptspace \ -scriptstyle scrollmode setbox setlanguage sfcode \ -shipout show showbox showboxbreadth showboxdepth \ -showlists shownodedetails showthe skewchar skip \ -skipdef spacefactor spaceskip span splitbotmark \ -splitfirstmark splitmaxdepth splittopskip srule string \ +advance afterassignment aftergroup atop atopwithdelims \ +badness baselineskip batchmode begingroup belowdisplayshortskip \ +belowdisplayskip binoppenalty botmark box boxmaxdepth \ +brokenpenalty catcode char chardef cleaders \ +clubpenalty copy count countdef cr \ +crcr csname day deadcycles def \ +defaulthyphenchar defaultskewchar delcode delimiter delimiterfactor \ +delimitershortfall dimen dimendef discretionary displayindent \ +displaylimits displaystyle displaywidowpenalty displaywidth divide \ +doublehyphendemerits dp dump edef else \ +emergencystretch end endcsname endgroup endinput \ +endlinechar eqno errhelp errmessage errorcontextlines \ +errorstopmode escapechar everycr everydisplay everyhbox \ +everyjob everymath everypar everyvbox exhyphenchar \ +exhyphenpenalty expandafter fam fi finalhyphendemerits \ +firstmark floatingpenalty font fontdimen fontname \ +futurelet gdef global globaldefs halign \ +hangafter hangindent hbadness hbox hfil \ +hfill hfilneg hfuzz holdinginserts hrule \ +hsize hskip hss ht hyphenation \ +hyphenchar hyphenpenalty if ifcase ifcat \ +ifdim iffalse ifhbox ifhmode ifinner \ +ifmmode ifnum ifodd iftrue ifvbox \ +ifvmode ifvoid ifx ignorespaces indent \ +input inputlineno insert insertpenalties interlinepenalty \ +jobname kern language lastbox lastkern \ +lastpenalty lastskip lccode leaders left \ +lefthyphenmin leftskip leqno let limits \ +linepenalty lineskip lineskiplimit long looseness \ +lower lowercase mark mathbin mathchar \ +mathchardef mathchoice mathclose mathcode mathinner \ +mathop mathopen mathord mathpunct mathrel \ +mathsurround maxdeadcycles maxdepth meaning medmuskip \ +message middle mkern month moveleft \ +moveright mskip multiply muskip muskipdef \ +newlinechar noalign noexpand noindent nolimits \ +nonscript nonstopmode nulldelimiterspace nullfont number \ +omit or outer output outputpenalty \ +over overfullrule overline overwithdelims pagedepth \ +pagefilllstretch pagefillstretch pagefilstretch pagegoal pageshrink \ +pagestretch pagetotal par parfillleftskip parfillskip \ +parindent parinitleftskip parinitrightskip parshape parskip \ +patterns pausing penalty postdisplaypenalty predisplaypenalty \ +predisplaysize pretolerance prevdepth prevgraf radical \ +raise relax relpenalty right righthyphenmin \ +rightskip romannumeral scriptfont scriptscriptfont scriptscriptstyle \ +scriptspace scriptstyle scrollmode setbox setlanguage \ +sfcode shipout show showbox showboxbreadth \ +showboxdepth showlists shownodedetails showthe skewchar \ +skip skipdef spacefactor spaceskip span \ +splitbotmark splitfirstmark splitmaxdepth splittopskip string \ tabskip textfont textstyle the thickmuskip \ thinmuskip time toks toksdef tolerance \ topmark topskip tracingcommands tracinglostchars tracingmacros \ tracingonline tracingoutput tracingpages tracingparagraphs tracingrestores \ tracingstats uccode uchyph unboundary underline \ -unhbox unhcopy unhpack unkern unpenalty \ -unskip unvbox unvcopy unvpack uppercase \ -vadjust valign vbadness vbox vcenter \ -vfil vfill vfilneg vfuzz vrule \ -vsize vskip vsplit vss vtop \ -wd widowpenalty xdef xleaders xspaceskip \ -year +unhbox unhcopy unkern unpenalty unskip \ +unvbox unvcopy uppercase vadjust valign \ +vbadness vbox vcenter vfil vfill \ +vfilneg vfuzz vrule vsize vskip \ +vsplit vss vtop wd widowpenalty \ +xdef xleaders xspaceskip year keywordclass.tex.xetex=\ XeTeXversion diff --git a/context/data/vscode/settings.json b/context/data/vscode/settings.json index 89f43520e..43a96e07a 100644 --- a/context/data/vscode/settings.json +++ b/context/data/vscode/settings.json @@ -24,6 +24,8 @@ // "[context.pdf]": { "files.encoding": "cp1252"}, "terminal.integrated.fontSize": 10, "terminal.integrated.rendererType": "canvas", + "editor.bracketPairColorization.enabled": false, + "editor.bracketPairColorization.independentColorPoolPerBracketType": false, "workbench.colorCustomizations": { "terminal.ansiBlack": "#000000", "terminal.ansiWhite": "#FFFFFF", @@ -40,6 +42,6 @@ "terminal.ansiBrightBlue": "#00007F", "terminal.ansiBrightMagenta": "#7F007F", "terminal.ansiBrightCyan": "#007F7F", - "terminal.ansiBrightYellow": "#7F7F00", + "terminal.ansiBrightYellow": "#7F7F00" } } diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex index 5e96bddb5..0469d0cc8 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-callbacks.tex @@ -227,7 +227,7 @@ state is with respect to the \quote {current page}. The possible values for the \topicindex{callbacks+inserts} -This callback is called when the pagebuilder adds an insert. There is not much +This callback is called when the page builder adds an insert. There is not much control over this mechanism but this callback permits some last minute manipulations of the spacing before an insert, something that might be handy when for instance multiple inserts (types) are appended in a row. @@ -897,7 +897,7 @@ loading completely but will nevertheless generate errors. \stopsubsection -\startsubsection[title={\cbk {missing_character}}] +\startsubsection[title={\cbk {missing_character} and \cbk {process_character}}] \topicindex{callbacks+fonts} \topicindex{callbacks+characters} @@ -911,6 +911,15 @@ function( glyph, font, character) end \stopfunctioncall +The \type {process_character} callback is experimental and gets called when a +glyph node is created and the callback field in a character is set. + +\startfunctioncall +function( font, character) + -- no return value +end +\stopfunctioncall + \stopsubsection \stopsection diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex index 1b26c1ad1..d7bd50eea 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex @@ -1035,6 +1035,7 @@ undefined will get presets, quite likely zero): \NC \prm {Umathaccentbottomovershoot} \NC \NC \NR \NC \prm {Umathaccentsuperscriptdrop} \NC \NC \NR \NC \prm {Umathaccentsuperscriptpercent} \NC \NC \NR +\NC \prm {Umathaccentextendmargin} \NC margins added to automatically extended accents \NC \NR \NC \prm {Umathflattenedaccenttopshiftup} \NC the amount that a wide top accent is shifted up \NC \NR \NC \prm {Umathflattenedaccentbottomshiftdown} \NC the amount that a wide bottom accent is shifted down \NC \NR \NC \prm {Umathdelimiterpercent} \NC \NC \NR @@ -1070,6 +1071,7 @@ defaults and tweak them in the goodie files: \NC AccentBottomOvershoot \NC \prm {Umathaccentbottomovershoot} \NC 0 \NC \NR \NC AccentSuperscriptDrop \NC \prm {Umathaccentsuperscriptdrop} \NC 0 \NC \NR \NC AccentSuperscriptPercent \NC \prm {Umathaccentsuperscriptpercent} \NC 0 \NC \NR +\NC AccentExtendMargin \NC \prm {Umathaccentextendmargin} \NC 0 \NC \NR \NC FlattenedAccentTopShiftUp \NC \prm {Umathflattenedaccenttopshiftup} \NC undefined \NC \NR \NC FlattenedAccentBottomShiftDown \NC \prm {Umathflattenedaccentbottomshiftdown} \NC undefined \NC \NR \NC DelimiterPercent \NC \prm {Umathdelimiterpercent} \NC 0 \NC \NR @@ -1795,16 +1797,27 @@ concerns the width. \stopsubsection -\startsubsection[title={Building radicals with \prm {Uradical} and \prm {Uroot}}] +\startsubsection[title={Building radicals with \prm {Uradical}, \prm {Uroot} and \prm {Urooted}}] \topicindex {math+radicals} +\topicindex {math+roots} The new primitive \prm {Uroot} allows the construction of a radical noad including a degree field. Its syntax is an extension of \prm {Uradical}: \starttyping -\Uradical -\Uroot +\Uradical + + +\Uroot + + + +\Urooted + + + + \stoptyping The placement of the degree is controlled by the math parameters \prm @@ -1812,6 +1825,35 @@ The placement of the degree is controlled by the math parameters \prm {Umathradicaldegreeraise}. The degree will be typeset in \prm {scriptscriptstyle}. +In \CONTEXT\ we use \prm {Urooted} to wrap something in an \quote {annuity} +umbrella where there is a symbol at the end that has to behave like the radical +does at the left end: adapt its size. In order to support variants this primitive +supports two delimiters. + +{\em todo: mention optional keywords} + +\stopsubsection + +\startsubsection[title={Tight delimiters with \prm {Udelimited}}] + +\topicindex {math+radicals} +\topicindex {math+delimiters} + +This new primitive is like \prm {Rooted} in that it takes two delimiters but it +takes no degree and no rule is drawn. + +\starttyping +\Udelimited + + + +\stoptyping + +In \CONTEXT\ we use it for fourier notations in which case there is only a right +symbol (like a hat). + +{\em todo: mention optional keywords} + \stopsubsection \startsubsection[title={Super- and subscripts}] @@ -2845,6 +2887,39 @@ You'll notice that we apply more severe penalties at the edges: \stopsection +\startsubsection[title={\prm {Umathdiscretionary} and \prm {hmcode}}] + +\topicindex {math+discretionaries} + +The usual \prm {discretionary} command is supported in math mode but it has the +disadvantage that one needs to make sure that the content triplet does the math +right (especially the style). This command takes an optional class specification. + +\starttyping +\Umathdiscretionary [class n] {+} {+} {+} +\stoptyping + +It uses the same logic as \prm {mathchoice} but in this case we handle three +snippets in the current style. + +A fully automatic mechanism kicks in when a character has a \prm {hmcode} set: + +\starttabulate[|c|l|p|] +\DB bit \BC meaning \BC explanation \NC \NR +\TB +\NC 1 \NC normal \NC a discretionary is created with the same components \NC \NR +\NC 2 \NC italic \NC following italic correction is kept with the component \NC \NR +\LL +\stoptabulate + +So we can say: + +\starttyping +\hmcode `+ 3 +\stoptyping + +When the \type {italic} bit is set italic correction is kept at a linebreak. + \stopchapter \stopcomponent diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex index 3fe330295..c3ac0a294 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex @@ -2207,6 +2207,7 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility. \supported {getattributelist} \nop \yes \relax \supported {getboth} \nop \yes \relax \supported {getbox} \nop \yes \relax +\supported {getclass} \nop \yes \relax \supported {getchar} \nop \yes \relax \supported {getdata} \nop \yes \relax \supported {getdepth} \nop \yes \relax diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex index fcedbc6e1..aead9b304 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex @@ -1,5 +1,7 @@ % language=us runpath=texruns:manuals/luametatex +% \enabledirectives[backend.pdf.inmemory] + % ------------------------ ------ ------------------ ------------------------ % 2019-12-17 32bit 64bit 2020-01-10 32bit 64bit 2020-11-30 32bit 64bit % ------------------------ ------------------------ ------------------------ @@ -105,7 +107,7 @@ % \enableexperiments [tabulateusesize] % \enableexperiments [tabulatesparseskips] -\linebuffering +\ifdefined\linebuffering \linebuffering \fi \enableexperiments[fonts.compact] % \enabledirectives[fonts.injections.method=advance] % tricky ... not all xoffsets are advance robust diff --git a/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex b/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex index 12852ba13..4cdb72950 100644 --- a/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex +++ b/doc/context/sources/general/manuals/ontarget/ontarget-anchoring.tex @@ -183,7 +183,8 @@ hooks into layers is shown: {\DemoAnchor{#1}{darkred} {#2}{left,top}% \DemoAnchor{#1}{darkblue} {#2}{left,bottom}% \DemoAnchor{#1}{darkgreen} {#2}{right,bottom}% - \DemoAnchor{#1}{darkyellow}{#2}{right,top}}% + \DemoAnchor{#1}{darkyellow}{#2}{right,top}% + }% \startsetups framed:demo \DemoAnchorX{framed:background}{left,top}% diff --git a/scripts/context/lua/mtx-vscode.lua b/scripts/context/lua/mtx-vscode.lua index eb1acf53d..0fd5fd428 100644 --- a/scripts/context/lua/mtx-vscode.lua +++ b/scripts/context/lua/mtx-vscode.lua @@ -285,6 +285,20 @@ function scripts.vscode.generate(targetpath) end + -- local function registersettings() + -- + -- local filename = "./settings.json" + -- + -- local data = { + -- ["editor.bracketPairColorization.enabled"] = false, + -- ["editor.bracketPairColorization.independentColorPoolPerBracketType"] = false, + -- } + -- + -- report("saving settings %a",filename) + -- + -- io.savedata(filename,data) + -- end + local function registertheme(theme) local category = theme.category @@ -301,6 +315,7 @@ function scripts.vscode.generate(targetpath) ["name"] = category, ["colors"] = theme.colors, ["tokenColors"] = theme.styles, + ["settings"] = theme.settings, } report("saving theme %a in %a",category,filename) @@ -360,11 +375,13 @@ function scripts.vscode.generate(targetpath) displayName = "ConTeXt", description = "ConTeXt Syntax Highlighting", publisher = "ConTeXt Development Team", + publisher = "cdt", version = "1.0.0", engines = { vscode = "*" }, categories = { + "Programming Languages", "Lexers", "Syntaxes" }, @@ -597,6 +614,8 @@ function scripts.vscode.generate(targetpath) styles = styles, } + -- registersettings() + end do @@ -3457,7 +3476,8 @@ function scripts.vscode.start() if path then local codecmd = environment.arguments.program or "code" -- can be codium -- local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --ignore-gpu-blacklist --extensions-dir "' .. path .. '" --install-extension context' - local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --install-extension context' + -- local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --install-extension context' + local command = 'start "vs code context" ' .. codecmd .. ' --reuse-window --extensions-dir "' .. path .. '" --verbose --force --install-extension cdt.context' report("running command: %s",command) os.execute(command) end diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 4df6d3f5b..e1f2df1bc 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 33507, stripped down to: 18420 +-- original size: 34149, stripped down to: 18420 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -26062,8 +26062,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1033876 --- stripped bytes : 406975 +-- original bytes : 1034518 +-- stripped bytes : 407617 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 4df6d3f5b..e1f2df1bc 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 33507, stripped down to: 18420 +-- original size: 34149, stripped down to: 18420 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -26062,8 +26062,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1033876 --- stripped bytes : 406975 +-- original bytes : 1034518 +-- stripped bytes : 407617 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 4df6d3f5b..e1f2df1bc 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 33507, stripped down to: 18420 +-- original size: 34149, stripped down to: 18420 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -26062,8 +26062,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1033876 --- stripped bytes : 406975 +-- original bytes : 1034518 +-- stripped bytes : 407617 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 4df6d3f5b..e1f2df1bc 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -7491,7 +7491,7 @@ do -- create closure to overcome 200 locals limit package.loaded["util-tab"] = package.loaded["util-tab"] or true --- original size: 33507, stripped down to: 18420 +-- original size: 34149, stripped down to: 18420 if not modules then modules={} end modules ['util-tab']={ version=1.001, @@ -26062,8 +26062,8 @@ end -- of closure -- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua -- skipped libraries : - --- original bytes : 1033876 --- stripped bytes : 406975 +-- original bytes : 1034518 +-- stripped bytes : 407617 -- end library merge diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 8b4de2c7c..82a268348 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2022.08.25 19:18} +\newcontextversion{2022.09.10 02:42} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 376318c3d..f2ca9aba1 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2022.08.25 19:18} +\edef\contextversion{2022.09.10 02:42} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-de.mkii b/tex/context/base/mkii/mult-de.mkii index 8537c66cd..cd526730e 100644 --- a/tex/context/base/mkii/mult-de.mkii +++ b/tex/context/base/mkii/mult-de.mkii @@ -93,7 +93,6 @@ \setinterfacevariable{author}{autor} \setinterfacevariable{auto}{auto} \setinterfacevariable{autointro}{autointro} -\setinterfacevariable{autopunctuation}{autopunctuation} \setinterfacevariable{back}{zurueck} \setinterfacevariable{background}{hintergrund} \setinterfacevariable{backmatter}{epiloge} @@ -680,6 +679,9 @@ \setinterfaceconstant{autofile}{autofile} \setinterfaceconstant{autofocus}{autofocus} \setinterfaceconstant{autohang}{autohang} +\setinterfaceconstant{autonumbers}{autonumbers} +\setinterfaceconstant{autopunctuation}{autopunctuation} +\setinterfaceconstant{autospacing}{autospacing} \setinterfaceconstant{autostrut}{autostrut} \setinterfaceconstant{autowidth}{autobreite} \setinterfaceconstant{availableheight}{availableheight} @@ -870,6 +872,7 @@ \setinterfaceconstant{frameradius}{rahmenradius} \setinterfaceconstant{frames}{umrahmen} \setinterfaceconstant{freeregion}{freeregion} +\setinterfaceconstant{freezespacing}{freezespacing} \setinterfaceconstant{from}{von} \setinterfaceconstant{functioncolor}{functioncolor} \setinterfaceconstant{functionstyle}{functionstyle} @@ -950,6 +953,7 @@ \setinterfaceconstant{lastpubsep}{lastpubsep} \setinterfaceconstant{layout}{layout} \setinterfaceconstant{left}{links} +\setinterfaceconstant{leftclass}{leftclass} \setinterfaceconstant{leftcolor}{linkerfarbe} \setinterfaceconstant{leftcompoundhyphen}{leftcompoundhyphen} \setinterfaceconstant{leftedge}{linkekante} @@ -1008,6 +1012,7 @@ \setinterfaceconstant{menu}{menue} \setinterfaceconstant{method}{methode} \setinterfaceconstant{middle}{mittig} +\setinterfaceconstant{middleclass}{middleclass} \setinterfaceconstant{middlecolor}{middlecolor} \setinterfaceconstant{middlecommand}{middlecommand} \setinterfaceconstant{middlesource}{middlesource} @@ -1054,6 +1059,8 @@ \setinterfaceconstant{numberconversionset}{numberconversionset} \setinterfaceconstant{numberdistance}{numberdistance} \setinterfaceconstant{numbering}{nummerierung} +\setinterfaceconstant{numberlocation}{numberlocation} +\setinterfaceconstant{numbermethod}{numbermethod} \setinterfaceconstant{numberorder}{numberorder} \setinterfaceconstant{numberprefix}{numberprefix} \setinterfaceconstant{numbersegments}{numbersegments} @@ -1064,6 +1071,7 @@ \setinterfaceconstant{numberstopper}{numberstopper} \setinterfaceconstant{numberstrut}{numberstrut} \setinterfaceconstant{numberstyle}{nummernstil} +\setinterfaceconstant{numberthreshold}{numberthreshold} \setinterfaceconstant{numberwidth}{numberwidth} \setinterfaceconstant{nx}{nx} \setinterfaceconstant{ny}{ny} @@ -1117,6 +1125,7 @@ \setinterfaceconstant{palet}{palette} \setinterfaceconstant{paper}{papier} \setinterfaceconstant{paragraph}{absatz} +\setinterfaceconstant{penalties}{penalties} \setinterfaceconstant{period}{period} \setinterfaceconstant{place}{platziere} \setinterfaceconstant{placehead}{setzekopf} @@ -1170,6 +1179,7 @@ \setinterfaceconstant{reverse}{reverse} \setinterfaceconstant{right}{rechts} \setinterfaceconstant{rightchars}{rightchars} +\setinterfaceconstant{rightclass}{rightclass} \setinterfaceconstant{rightcolor}{rechterfarbe} \setinterfaceconstant{rightcompoundhyphen}{rightcompoundhyphen} \setinterfaceconstant{rightedge}{rechtekante} diff --git a/tex/context/base/mkii/mult-it.mkii b/tex/context/base/mkii/mult-it.mkii index 6541e8db4..18840146a 100644 --- a/tex/context/base/mkii/mult-it.mkii +++ b/tex/context/base/mkii/mult-it.mkii @@ -93,7 +93,6 @@ \setinterfacevariable{author}{autore} \setinterfacevariable{auto}{auto} \setinterfacevariable{autointro}{autointro} -\setinterfacevariable{autopunctuation}{autopunctuation} \setinterfacevariable{back}{dietro} \setinterfacevariable{background}{sfondo} \setinterfacevariable{backmatter}{postambolo} @@ -680,6 +679,9 @@ \setinterfaceconstant{autofile}{autofile} \setinterfaceconstant{autofocus}{autofocus} \setinterfaceconstant{autohang}{autohang} +\setinterfaceconstant{autonumbers}{autonumbers} +\setinterfaceconstant{autopunctuation}{autopunctuation} +\setinterfaceconstant{autospacing}{autospacing} \setinterfaceconstant{autostrut}{autostrut} \setinterfaceconstant{autowidth}{autoampiezza} \setinterfaceconstant{availableheight}{availableheight} diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii index 79c0349ea..e35ebac50 100644 --- a/tex/context/base/mkii/mult-ro.mkii +++ b/tex/context/base/mkii/mult-ro.mkii @@ -93,7 +93,6 @@ \setinterfacevariable{author}{autor} \setinterfacevariable{auto}{auto} \setinterfacevariable{autointro}{autointro} -\setinterfacevariable{autopunctuation}{autopunctuation} \setinterfacevariable{back}{inapot} \setinterfacevariable{background}{fundal} \setinterfacevariable{backmatter}{epilogul} @@ -680,6 +679,9 @@ \setinterfaceconstant{autofile}{autofile} \setinterfaceconstant{autofocus}{autofocus} \setinterfaceconstant{autohang}{autohang} +\setinterfaceconstant{autonumbers}{autonumbers} +\setinterfaceconstant{autopunctuation}{autopunctuation} +\setinterfaceconstant{autospacing}{autospacing} \setinterfaceconstant{autostrut}{autostrut} \setinterfaceconstant{autowidth}{autolatime} \setinterfaceconstant{availableheight}{availableheight} diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua index 5325dc06e..1701aeb3b 100644 --- a/tex/context/base/mkiv/char-def.lua +++ b/tex/context/base/mkiv/char-def.lua @@ -655,6 +655,7 @@ characters.data={ direction="cs", linebreak="is", mathclass="relation", +--mathsymbol=0x2236, unicodeslot=0x3A, }, { diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 49e307f12..3ce44cab3 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2022.08.25 19:18} +\newcontextversion{2022.09.10 02:42} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index edc4989ad..12f23d73f 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -49,7 +49,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2022.08.25 19:18} +\edef\contextversion{2022.09.10 02:42} %D Kind of special: diff --git a/tex/context/base/mkiv/font-prv.lua b/tex/context/base/mkiv/font-prv.lua index 15057e255..e613eb7d3 100644 --- a/tex/context/base/mkiv/font-prv.lua +++ b/tex/context/base/mkiv/font-prv.lua @@ -39,6 +39,8 @@ local sharedprivates = setmetatableindex(function(t,k) return v end) +fonts.helpers.sharedprivates = sharedprivates + function helpers.addprivate(tfmdata,name,characterdata) local properties = tfmdata.properties local characters = tfmdata.characters diff --git a/tex/context/base/mkiv/math-ini.mkiv b/tex/context/base/mkiv/math-ini.mkiv index 80a9f1412..94b50c12a 100644 --- a/tex/context/base/mkiv/math-ini.mkiv +++ b/tex/context/base/mkiv/math-ini.mkiv @@ -1586,11 +1586,11 @@ % \unexpanded\def\disablemathpunctuation{\setfalse\automathpunctuation} % % \appendtoks -% \doifelse{\mathematicsparameter\v!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation +% \doifelse{\mathematicsparameter\c!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation % \to \everyswitchmathematics % % \setupmathematics -% [\v!autopunctuation=\v!no] +% [\c!autopunctuation=\v!no] % % \def\math_punctuation_next{\ifx\nexttoken\blankspace\signalcharacter\fi} % @@ -1676,9 +1676,9 @@ \let\math_punctuation_yes_period \math_punctuation_nop_period \let\math_punctuation_yes_semicolon\math_punctuation_all_semicolon -\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup} -\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup} -\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup} +\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup} +\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup} +\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathpunctcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup} \installcorenamespace {mathautopunctuation} @@ -1745,12 +1745,12 @@ \mathcode\c_math_comma \c_math_special \mathcode\c_math_period \c_math_special \mathcode\c_math_semicolon\c_math_special - \begincsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname + \begincsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \to \everymathematics \appendtoks - \ifcsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname \else - \letmathematicsparameter\v!autopunctuation\v!no + \ifcsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \else + \letmathematicsparameter\c!autopunctuation\v!no \fi \to \everysetupmathematics @@ -1758,7 +1758,7 @@ \def\disablemathpunctuation{\csname\??mathautopunctuation\v!yes\endcsname} \setupmathematics - [\v!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon + [\c!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon %D The consequences of setting this are as follows: %D diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua index 56c7944f4..ca465b8c8 100644 --- a/tex/context/base/mkiv/mult-def.lua +++ b/tex/context/base/mkiv/mult-def.lua @@ -7628,6 +7628,18 @@ return { ["pe"]="عرض‌خودکار", ["ro"]="autolatime", }, + ["autopunctuation"]={ + ["en"]="autopunctuation", + ["fr"]="autoponctuation", + }, + ["autospacing"]={ + ["en"]="autospacing", + ["fr"]="autospacing", + }, + ["autonumbers"]={ + ["en"]="autonumbers", + ["fr"]="autonumbers", + }, ["availableheight"]={ ["en"]="availableheight", ["fr"]="hauteurdisponible", @@ -14768,10 +14780,6 @@ return { ["pe"]="پیشگفتارخودکار", ["ro"]="autointro", }, - ["autopunctuation"]={ - ["en"]="autopunctuation", - ["fr"]="autoponctuation", - }, ["back"]={ ["cs"]="zpet", ["de"]="zurueck", diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua index 62af2940a..e8ce240f0 100644 --- a/tex/context/base/mkiv/mult-low.lua +++ b/tex/context/base/mkiv/mult-low.lua @@ -173,7 +173,7 @@ return { -- "mathtopaccentcode", "mathbottomaccentcode", "mathdelimitercode", "mathrootcode", "mathprintcode", -- "mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode", - "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", + "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode", "mathnumbergroupcode", -- "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", -- @@ -216,7 +216,7 @@ return { "checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode", "flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode", "carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode", - "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", + "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode", "removeitaliccorrectionclassoptioncode", -- "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index b0ba0dda7..546b93af3 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -69,7 +69,7 @@ return { "Uatopwithdelims", "Uchar", "Udelcode", - "Udelcodenum", + "Udelimited", "Udelimiter", "Udelimiterover", "Udelimiterunder", @@ -80,6 +80,7 @@ return { "Umathaccentbaseheight", "Umathaccentbottomovershoot", "Umathaccentbottomshiftdown", + "Umathaccentextendmargin", "Umathaccentsuperscriptdrop", "Umathaccentsuperscriptpercent", "Umathaccenttopovershoot", @@ -88,17 +89,14 @@ return { "Umathadapttoleft", "Umathadapttoright", "Umathaxis", - "Umathbotaccentvariant", + "Umathbottomaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", - "Umathcharnum", - "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathcode", - "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", @@ -221,6 +219,7 @@ return { "Uradical", "Uright", "Uroot", + "Urooted", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", @@ -250,6 +249,7 @@ return { "afterassigned", "aftergrouped", "aliased", + "aligncontent", "alignmark", "alignmentcellsource", "alignmentwrapsource", @@ -340,6 +340,7 @@ return { "fontmathcontrol", "fontspecdef", "fontspecid", + "fontspecifiedname", "fontspecifiedsize", "fontspecscale", "fontspecxscale", @@ -358,6 +359,7 @@ return { "gletcsname", "glettonothing", "gluespecdef", + "glyph", "glyphdatafield", "glyphoptions", "glyphscale", @@ -377,6 +379,7 @@ return { "hccode", "hjcode", "hmcode", + "holdingmigrations", "hpack", "hyphenationmin", "hyphenationmode", @@ -522,6 +525,9 @@ return { "mathsurroundmode", "mathsurroundskip", "maththreshold", + "meaningasis", + "meaningfull", + "meaningless", "mugluespecdef", "mutable", "noaligned", @@ -542,6 +548,7 @@ return { "outputbox", "overloaded", "overloadmode", + "overshoot", "pageboundary", "pageextragoal", "pagevsize", @@ -573,6 +580,7 @@ return { "scaledemwidth", "scaledexheight", "scaledextraspace", + "scaledfontdimen", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", @@ -595,6 +603,7 @@ return { "shapingpenaltiesmode", "shapingpenalty", "snapshotpar", + "srule", "supmarkmode", "swapcsvalues", "tabsize", @@ -628,9 +637,11 @@ return { "uleaders", "undent", "unexpandedloop", + "unhpack", "unletfrozen", "unletprotected", "untraced", + "unvpack", "vpack", "wordboundary", "wrapuppar", @@ -772,7 +783,6 @@ return { "advance", "afterassignment", "aftergroup", - "aligncontent", "atop", "atopwithdelims", "badness", @@ -850,12 +860,10 @@ return { "font", "fontdimen", "fontname", - "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", - "glyph", "halign", "hangafter", "hangindent", @@ -866,7 +874,6 @@ return { "hfilneg", "hfuzz", "holdinginserts", - "holdingmigrations", "hrule", "hsize", "hskip", @@ -937,9 +944,6 @@ return { "maxdeadcycles", "maxdepth", "meaning", - "meaningasis", - "meaningfull", - "meaningless", "medmuskip", "message", "middle", @@ -969,7 +973,6 @@ return { "over", "overfullrule", "overline", - "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", @@ -1004,7 +1007,6 @@ return { "righthyphenmin", "rightskip", "romannumeral", - "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", @@ -1032,7 +1034,6 @@ return { "splitfirstmark", "splitmaxdepth", "splittopskip", - "srule", "string", "tabskip", "textfont", @@ -1061,13 +1062,11 @@ return { "underline", "unhbox", "unhcopy", - "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", - "unvpack", "uppercase", "vadjust", "valign", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index dc2b82185..3e3adfbe6 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index b92cffbec..28adce871 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/util-tab.lua b/tex/context/base/mkiv/util-tab.lua index 7f372b6b5..64fa1af4f 100644 --- a/tex/context/base/mkiv/util-tab.lua +++ b/tex/context/base/mkiv/util-tab.lua @@ -996,3 +996,25 @@ function combine(target,source) end table.combine = combine + +-- If needed we can add something (some discussion on the list but I'm not sure if +-- it makes sense because merging such mixed tables is quite unusual. +-- +-- function table.himerged(...) +-- local result = { } +-- local r = 0 +-- for i=1,select("#",...) do +-- local s = select(i,...) +-- if s then +-- for k, v in next, s do +-- if type(k) == "number" then +-- r = r + 1 +-- result[r] = v +-- else +-- result[k] = v +-- end +-- end +-- end +-- end +-- return result +-- end diff --git a/tex/context/base/mkxl/catc-ini.mkxl b/tex/context/base/mkxl/catc-ini.mkxl index 5b33db981..4376acd83 100644 --- a/tex/context/base/mkxl/catc-ini.mkxl +++ b/tex/context/base/mkxl/catc-ini.mkxl @@ -165,17 +165,29 @@ %D This can be used when a direct definition has been done and the selector has been %D lost. A problem is that \type {\next} needs to be unique (as it gets bound) (still?). +% \def\syst_catcodes_reinstate_normal +% {\begingroup +% \edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% +% \global\letcharcode\c_syst_catcodes_b\temp +% \endgroup} +% +% \def\syst_catcodes_reinstate_unexpanded +% {\begingroup +% \protected\edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% +% \global\letcharcode\c_syst_catcodes_b\temp +% \endgroup} + +% I really need to get rid of this ... + +\let\m_syst_catcodes_temp\relax + \def\syst_catcodes_reinstate_normal - {\begingroup - \edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% - \global\letcharcode\c_syst_catcodes_b\temp - \endgroup} + {\edef\m_syst_catcodes_temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% + \letcharcode\c_syst_catcodes_b\m_syst_catcodes_temp} \def\syst_catcodes_reinstate_unexpanded - {\begingroup - \protected\edef\temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% - \global\letcharcode\c_syst_catcodes_b\temp - \endgroup} + {\protected\edef\m_syst_catcodes_temp{\noexpand\catcodecommand{\number\c_syst_catcodes_b}}% + \letcharcode\c_syst_catcodes_b\m_syst_catcodes_temp} \newconstant\defaultcatcodetable diff --git a/tex/context/base/mkxl/char-prv.lmt b/tex/context/base/mkxl/char-prv.lmt index bb0377a75..07a72d53e 100644 --- a/tex/context/base/mkxl/char-prv.lmt +++ b/tex/context/base/mkxl/char-prv.lmt @@ -208,40 +208,6 @@ characters.private={ unicodeslot=0xFE937, }, -- - [0xFE942]={ - description="COMBINING REVERSE ANNUITY SYMBOL BASE", - unicodeslot=0xFE942, - }, - [0xFE943]={ - description="COMBINING REVERSE ANNUITY SYMBOL FILL", - unicodeslot=0xFE942, - }, - -- - [0xFE944]={ - description="COMBINING FOURIER CIRCUMFLEX BASE", - unicodeslot=0xFE942, - }, - [0xFE945]={ - description="COMBINING FOURIER CIRCUMFLEX FILL", - unicodeslot=0xFE942, - }, - [0xFE946]={ - description="COMBINING FOURIER TILDE BASE", - unicodeslot=0xFE942, - }, - [0xFE947]={ - description="COMBINING FOURIER TILDE FILL", - unicodeslot=0xFE942, - }, - [0xFE948]={ - description="COMBINING FOURIER CARON BASE", - unicodeslot=0xFE942, - }, - [0xFE949]={ - description="COMBINING FOURIER CARON FILL", - unicodeslot=0xFE942, - }, - -- [0xFE957]={ -- vfu description="SMASHED PRIME 0x02057", unicodeslot=0xFE957, diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 44470eaf7..a9631b7bb 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2022.08.25 19:18} +\newcontextversion{2022.09.10 02:42} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index 8baf5a786..4ec59e791 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2022.08.25 19:18} +\immutable\edef\contextversion{2022.09.10 02:42} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/core-con.mkxl b/tex/context/base/mkxl/core-con.mkxl index 645eb2308..9e2b05778 100644 --- a/tex/context/base/mkxl/core-con.mkxl +++ b/tex/context/base/mkxl/core-con.mkxl @@ -552,7 +552,7 @@ \installcorenamespace {conversionwords} %D It might be better to move more to \LUA\ as we also need conversion there and -%D doublicating logic doesn't make things cleaner. It means that all conversions +%D duplicating logic doesn't make things cleaner. It means that all conversions %D will get a language argument too. However, we permit definitions at the \TEX\ end %D so we have to provide some hybrid method. diff --git a/tex/context/base/mkxl/driv-shp.lmt b/tex/context/base/mkxl/driv-shp.lmt index 9a72d834d..69adc09a9 100644 --- a/tex/context/base/mkxl/driv-shp.lmt +++ b/tex/context/base/mkxl/driv-shp.lmt @@ -990,6 +990,8 @@ local gluewidth = effectiveglue(current,this_box,true) local usedorientation = false if hasanchor then anchor, source, target = getanchors(current) +-- print(getanchors(current)) +-- if not anchor then anchor = 0 end end if hasorientation then local orientation, xoffset, yoffset, woffset, hoffset, doffset = getorientation(current) diff --git a/tex/context/base/mkxl/font-ots.lmt b/tex/context/base/mkxl/font-ots.lmt index 3b7e6dbc3..2ab52a35a 100644 --- a/tex/context/base/mkxl/font-ots.lmt +++ b/tex/context/base/mkxl/font-ots.lmt @@ -435,7 +435,7 @@ end -- However, for arabic we need to keep them around for the sake of mark placement -- and indices. -local function flattendisk(head,disc) +local function flattendisk(head,disc) -- happen seldom, otherwise can be a helper local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true) local prev, next = getboth(disc) local ishead = head == disc @@ -472,7 +472,7 @@ local function flattendisk(head,disc) end end -local function appenddisc(disc,list) +local function appenddisc(disc,list) -- happen seldom, otherwise can be a helper local pre, post, replace, pretail, posttail, replacetail = getdisc(disc,true) local posthead = list local replacehead = copynodelist(list) @@ -3955,19 +3955,11 @@ do local lookupcache = step.coverage while start do local nxt, char, id = isnextchar(start,font,dynamic,state) -- we can move the data/state checks here --- if forcetestrun and sequence.name == "s_s_7" then --- if nuts.getid(start) == nodecodes.glyph then --- print("C F D S",start,char,font,dynamic,state,nuts,getstate(start)) --- end --- end if char then if skiphash and skiphash[char] then -- we never needed it here but let's try start = nxt else local lookupmatch = lookupcache[char] --- if forcetestrun and sequence.name == "s_s_7" then --- print(lookupmatch) --- end if lookupmatch then currentscale, currentxscale, currentyscale = getscales(start) local ok, df diff --git a/tex/context/base/mkxl/lang-mis.mkxl b/tex/context/base/mkxl/lang-mis.mkxl index 5aa40537c..48c2fa1cd 100644 --- a/tex/context/base/mkxl/lang-mis.mkxl +++ b/tex/context/base/mkxl/lang-mis.mkxl @@ -220,7 +220,7 @@ \fi \endcsname} -\setvalue{\??discretionarymode n}#1% +\defcsname\??discretionarymode n\endcsname#1% {\detokenize{#1}} %D The macro \type{\lang_discretionaries_check_before} takes care of loners like @@ -257,9 +257,9 @@ \ifx :\nexttoken \settrue \punctafterdiscretionary \orelse \ifx ;\nexttoken \settrue \punctafterdiscretionary \fi} -\letvalue{\??discretionarymode m}\handlemathmodediscretionary +\letcsname\??discretionarymode m\endcsname\handlemathmodediscretionary -\setvalue{\??discretionarymode t}#1% +\defcsname\??discretionarymode t\endcsname#1% {\bgroup \let\nextnextnext\egroup \def\next##1#1% @@ -349,7 +349,7 @@ \fi \endcsname} -\setuvalue{\??discretionarymode d}#1% +\protected\defcsname\??discretionarymode d\endcsname#1% {\edef\lang_discretionaries_token{\detokenize{#1}}% \let\lang_discretionaries_action\compoundhyphen \ifcsname\??discretionaryaction\lang_discretionaries_token\endcsname @@ -358,7 +358,7 @@ \expandafter\indirectdiscretionary \fi{#1}} -\setuvalue{\??discretionarymode i}#1% +\protected\defcsname\??discretionarymode i\endcsname#1% %{\prewordbreak\discretionary{\hbox{#1}}{}{\hbox{#1}}\postwordbreak} {\wordboundary\discretionary{\hbox{#1}}{}{\hbox{#1}}\wordboundary} %{\discretionary options \plusthree{\hbox{#1}}{}{\hbox{#1}}} diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt index 76867974a..bf1142119 100644 --- a/tex/context/base/mkxl/lpdf-lmt.lmt +++ b/tex/context/base/mkxl/lpdf-lmt.lmt @@ -2905,6 +2905,8 @@ local openfile, closefile do local close = false local update = false + directives.enable("backend.pdf.inmemory", function(v) inmemory = true end) + -- local banner = "%\xCC\xD5\xC1\xD4\xC5\xD8\xD0\xC4\xC6\010" -- LUATEXPDF (+128) local banner = "%\xC3\xCF\xCE\xD4\xC5\xD8\xD4\xD0\xC4\xC6\010" -- CONTEXTPDF (+128) diff --git a/tex/context/base/mkxl/luat-log.lmt b/tex/context/base/mkxl/luat-log.lmt index dd6c1b990..0c2405b75 100644 --- a/tex/context/base/mkxl/luat-log.lmt +++ b/tex/context/base/mkxl/luat-log.lmt @@ -630,29 +630,35 @@ end -- logs.errors=characters -- logs.errors=missing -- logs.errors=* +-- logs.quitonerror=missing modules do local finalactions = { } local fatalerrors = { } local possiblefatal = { } + local quitonerror = { } local loggingerrors = false function logs.loggingerrors() return loggingerrors end - directives.register("logs.errors",function(v) + local function register(v) loggingerrors = v if type(v) == "string" then - fatalerrors = settings_to_hash(v) - for k, v in next, fatalerrors do - fatalerrors[k] = string.topattern(k) + local target = settings_to_hash(v) + for k, v in next, target do + target[k] = string.topattern(k) end + return target else - fatalerrors = { } + return { } end - end) + end + + directives.register("logs.errors", function(v) fatalerrors = register(v) end) + directives.register("logs.quitonerror",function(v) quitonerror = register(v) end) function logs.registerfinalactions(...) insert(finalactions,...) -- so we can force an order if needed @@ -662,6 +668,7 @@ do local report = nil local state = nil local target = nil + local fatal = false local function startlogging(t,r,w,s) target = t @@ -692,6 +699,10 @@ do end poptarget() state = oldstate + if fatal then + logs.report("error logging","error marked as fatal") + luatex.abort() + end end function logs.startfilelogging(...) @@ -713,6 +724,11 @@ do if fatalerrors[w] then possiblefatal[w] = true else + for k, v in next, quitonerror do + if find(w,v) then + fatal = true + end + end for k, v in next, fatalerrors do if find(w,v) then possiblefatal[w] = true diff --git a/tex/context/base/mkxl/math-act.lmt b/tex/context/base/mkxl/math-act.lmt index 14c0a94ce..4f12bf92e 100644 --- a/tex/context/base/mkxl/math-act.lmt +++ b/tex/context/base/mkxl/math-act.lmt @@ -1746,12 +1746,21 @@ do local method = entry[2] local fraction = entry[3] local width = 0 - if how == "c" then - width = characters[fraction].width -- char - elseif how == "s" then - width = fraction * parameters.space -- space + local height = 0 + -- local depth = 0 + if method == "c" then + local template = characters[fraction] + width = template.width + height = template.height + -- depth = template.depth + elseif method == "s" then + width = fraction * parameters.space -- space + height = 0 + -- depth = 0 else width = fraction * parameters.quad -- quad + height = 0 + -- depth = 0 end if trace_tweaking then report_tweak("setting width of %U to %p",target,original,unicode,width) @@ -1759,6 +1768,8 @@ do characters[unicode] = { width = width, -- advance = width, + height = height, + -- depth = depth, unicode = unicode, commands = { -- { "slot", 0, 32 }, @@ -1990,10 +2001,12 @@ do -- radicals and actuarians are never seen together. We could also have a smaller -- extender. + local nps = fonts.helpers.newprivateslot + local radical = 0x0221A - local actuarian = 0x020E7 - local nairautca = 0xFE942 - local placehold = 0xFE943 + local actuarian = nps("delimited right annuity") -- 0x020E7 + local nairautca = nps("delimited left annuity" ) + local placehold = nps("delimited ghost annuity") function mathtweaks.addactuarian(target,original,parameters) local characters = target.characters @@ -2004,6 +2017,21 @@ do local basedepth = basechar.depth local basetotal = baseheight + basedepth local used = baseheight + -- + characters[0x020E7] = { + width = 6*linewidth, + height = baseheight, + depth = basedepth, + unicode = actuarian, + callback = "devirtualize", + commands = { + upcommand[baseheight-4*linewidth], + { "rule", linewidth, 4*linewidth }, + downcommand[basetotal/2-linewidth], + { "rule", basetotal/2, linewidth }, + }, + } + -- characters[actuarian] = { width = 2*linewidth, height = baseheight, @@ -2086,12 +2114,12 @@ do -- todo: make callback because we can delay it but then we need to stack -- callbacks - -- todo: use named privates for snippets + local nps = fonts.helpers.newprivateslot local list = { - { 0x302, 0xFE944, 0xFE945 }, - { 0x303, 0xFE946, 0xFE947 }, - { 0x30C, 0xFE948, 0xFE949 }, + { 0x302, nps("delimited right hat" ), nps("delimited ghost hat" ) }, + { 0x303, nps("delimited right tilde"), nps("delimited ghost tilde") }, + { 0x30C, nps("delimited right check"), nps("delimited ghost check") }, } function mathtweaks.addfourier(target,original,parameters) diff --git a/tex/context/base/mkxl/math-ali.lmt b/tex/context/base/mkxl/math-ali.lmt index 718975a50..87ea67c72 100644 --- a/tex/context/base/mkxl/math-ali.lmt +++ b/tex/context/base/mkxl/math-ali.lmt @@ -8,94 +8,285 @@ if not modules then modules = { } end modules ['math-ali'] = { local unpack = unpack local gsub = string.gsub -local lpegmatch = lpeg.match +local sort, keys = table.sort, table.keys local settings_to_array = utilities.parsers.settings_to_array - -local rows = utilities.parsers.groupedsplitat(";") -local cols = utilities.parsers.groupedsplitat(",") +local P, R, S, C, Cc, Ct, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Ct, lpeg.Cs +local lpegmatch = lpeg.match local context = context -local actions = { - transpose = function(m) - local t = { } - for j=1,#m[1] do - local r = { } - for i=1,#m do - r[i] = m[i][j] - end - t[j] = r - end - return t - end, - negate = function(m) - for i=1,#m do - local mi = m[i] - for j=1,#mi do - mi[j] = - mi[j] +do + + local rows = utilities.parsers.groupedsplitat(";") + local cols = utilities.parsers.groupedsplitat(",") + + local actions = { + transpose = function(m) + local t = { } + for j=1,#m[1] do + local r = { } + for i=1,#m do + r[i] = m[i][j] + end + t[j] = r end - end - return m - end, - scale = function(m,s) - s = tonumber(s) - if s then + return t + end, + negate = function(m) for i=1,#m do local mi = m[i] for j=1,#mi do - mi[j] = s*mi[j] + mi[j] = - mi[j] end end - end - return m - end, -} + return m + end, + scale = function(m,s) + s = tonumber(s) + if s then + for i=1,#m do + local mi = m[i] + for j=1,#mi do + mi[j] = s*mi[j] + end + end + end + return m + end, + } -local useractions = { -} + local useractions = { + } -interfaces.implement { - name = "simplematrix", - arguments = "2 strings", - actions = function(method,data) - local m = lpegmatch(rows,(gsub(data,"%s+"," "))) - for i=1,#m do - m[i] = lpegmatch(cols,m[i]) - end - local methods = settings_to_array(method) - for i=1,#methods do - local detail = settings_to_array(methods[i]) - local method = detail[1] - local action = actions[method] or useractions[method] - if action then - m = action(m,unpack(detail,2)) or m + interfaces.implement { + name = "simplematrix", + arguments = "2 strings", + actions = function(method,data) + local m = lpegmatch(rows,(gsub(data,"%s+"," "))) + for i=1,#m do + m[i] = lpegmatch(cols,m[i]) + end + local methods = settings_to_array(method) + for i=1,#methods do + local detail = settings_to_array(methods[i]) + local method = detail[1] + local action = actions[method] or useractions[method] + if action then + m = action(m,unpack(detail,2)) or m + end + end + for i=1,#m do + context("\\NC %{ \\NC }t \\NR",m[i]) end end - for i=1,#m do - context("\\NC %{ \\NC }t \\NR",m[i]) + } + + function mathematics.registersimplematrix(name,action) + if type(action) == "function" then + useractions[name] = action end end -} -function mathematics.registersimplematrix(name,action) - if type(action) == "function" then - useractions[name] = action - end + -- \cases{1, x>0 ; -1, x<0 } + + interfaces.implement { + name = "simplecases", + arguments = "2 strings", + actions = function(method,data) + -- no methods yet + local m = lpegmatch(rows,(gsub(data,"%s+"," "))) + for i=1,#m do + m[i] = lpegmatch(cols,m[i]) + end + for i=1,#m do + context("\\NC %{ \\NC }t \\NR",m[i]) + end + end + } + end --- \cases{1, x>0 ; -1, x<0 } +do + + local relations = { + ["<"] = "<", [">"] = ">", + ["!<"] = "≮", ["!>"] = "≯", + ["<<"] = "≪", [">>"] = "≫", + ["="] = "=", ["=="] = "=", + ["<>"] = "≠", ["!="] = "≠", + ["<="] = "≤", [">="] = "≥", + ["=<"] = "≦", ["=>"] = "≧", + ["!=<"] = "≰", ["!=>"] = "≱", + ["~"] = "≈", ["~~"] = "≈", + } + + for k, v in next, table.copy(relations) do relations[v] = v end + + -- local binaries = { + -- ["+"] = "+", + -- ["-"] = "-", + -- ["/"] = "/", + -- ["*"] = "", + -- } + + local separators = { + [","] = true, + [";"] = true, + } + + local alternatives = { + -- not that many + } + + local p_sign = S("-+") + local p_script = S("^")^1 + local p_number = R("09","..")^1 + lpeg.patterns.nestedbraces + local p_alpha = R("az","AZ")^1 + local p_variable = p_alpha * (P("_") * (p_number + p_alpha))^-1 + + local spacing = P(" ")^0 + local script = Cs(p_script * Cc("{") * p_sign^0 * (p_number + p_variable) * Cc("}")) + local sign = C(p_sign) + Cc("+") + local number = C(p_number) + local variable = C(p_variable) + -- local binary = lpeg.utfchartabletopattern(binaries) / binaries + local relation = lpeg.utfchartabletopattern(relations) / relations + local separator = lpeg.utfchartabletopattern(separators) + + local snippet = Ct ( + ( + spacing * sign * spacing * number * spacing * variable + + spacing * sign * spacing * number * spacing * Cc(false) + + spacing * sign * spacing * Cc(false) * spacing * variable + ) * (script + Cc(false)) + ) + + local parser = Ct ( Ct ( + ( Ct ( snippet^1 ) * spacing * relation )^1 + * ( Ct ( snippet^1 ) * spacing * separator^0 ) + )^1 ) + + local num = "!" + + local ctx_NC, ctx_NR = context.NC, context.NR + local ctx_typ = context.typ + local ctx_ord, ctx_rel = context.mathord, context.mathrel + + local clean = table.setmetatableindex(function(t,k) + local v = gsub(k,"[{}]","") + t[k] = v + return v + end) -interfaces.implement { - name = "simplecases", - arguments = "2 strings", - actions = function(method,data) - -- no methods yet - local m = lpegmatch(rows,(gsub(data,"%s+"," "))) - for i=1,#m do - m[i] = lpegmatch(cols,m[i]) + alternatives.equationsystem = function(action,str) + local rows = lpegmatch(parser,str) + if not rows then + ctx_typ("bad system, case 1: %s",1,str) + return end - for i=1,#m do - context("\\NC %{ \\NC }t \\NR",m[i]) + local nrow = #rows + local all = table.setmetatableindex("table") + for r=1,nrow do + local row = rows[r] + for s=1,#row,2 do + local set = row[s] + for v=1,#set do + local vvv = set[v] + local var = vvv[3] + if not var then + var = num + end + if set[var] then + print("bad system, two constants") + end + set[var] = set[v] + all[s][var] = true + set[v] = nil + end + end + end + -- + local cnt = #rows[1] + for r=1,nrow do + if #rows[r] ~= cnt then + ctx_typ("bad system, case %i: %s",2,str) + return + end + end + for r=1,#rows[1] do + local a = keys(all[r]) + sort(a,function(a,b) + return clean[a] < clean[b] + end) + all[r] = a + end + -- + for r=1,nrow do + local row = rows[r] + for r=1,#row do + local set = row[r] + local how = all[r] + if #how > 0 then + -- local done = false + for i=1,#how do + local k = how[i] + local e = set[k] + if e then + ctx_NC() + -- if not done and e[1] == "+" then + if i == 1 and e[1] == "+" then + -- ctx_ord("") + -- ctx_hphantom(e[1]) + -- ctx_ord("") + else + ctx_ord("") + context(e[1]) + ctx_ord("") + -- done = true + end + ctx_NC() + if e[2] then + context(e[2]) + -- done = true + end + if e[3] then + context(e[3]) + -- done = true + end + if e[4] then + context(e[4]) + -- done = true + end + else + ctx_NC() + -- ctx_mathord("") + ctx_NC() + end + end + else + ctx_NC() + ctx_ord("") + context(set) + ctx_ord("") + end + end + ctx_NR() end end -} + + interfaces.implement { + name = "simplealign", + -- public = true, + protected = true, + arguments = "3 strings", + actions = function(alternative,action,str) + local a = alternatives[alternative] + if a then + a(action,str) + else + context(str) + end + end + } + +end diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl index aaf76c9b1..b6b037117 100644 --- a/tex/context/base/mkxl/math-ali.mkxl +++ b/tex/context/base/mkxl/math-ali.mkxl @@ -2760,6 +2760,61 @@ \expandafter\startsubstack\the\scratchtoks\strut\stopsubstack \endgroup} +%D Similar to simplecases: +%D +%D \starttyping +%D \startformula +%D \equationsystem { +%D {(1-a)}x^{2x} - 3y_2 + 14z = 2 + x, +%D {(1-a)}x^2 - 3y_2 + 4z <= 62, +%D {(1-a)}x^a - 3y_2 + 4z >= 12, +%D {(1-a)}x^{2a} - 3y_2 + 24z != 4, +%D x^^2 - 3y_2 + 4z ~ 1, +%D x^^2 - 3y_2 + 4z ≠ 1, +%D -2x - 4z <> 10, +%D } +%D \stopformula +%D \stoptyping + +\permanent\tolerant\protected\def\math_align_simple[#1]#*[#2]#:#3% + {\begingroup + \edef\currentmathsimplealign{#1}% + \setupcurrentmathsimplealign[#2]% + \math_simplealign_start[\currentmathsimplealign]% + \clf_simplealign{\mathsimplealignparameter\c!alternative}{\mathsimplealignparameter\c!action}{#3}% + \math_simplealign_stop + \endgroup} + +\appendtoks + \edef\p_simplecommand{\mathsimplealignparameter\c!simplecommand}% + \ifempty\p_simplecommand\else + \frozen\protected\instance\edefcsname\p_simplecommand\endcsname{\math_align_simple[\currentmathsimplealign]}% + \fi +\to \everydefinemathsimplealign + +\definemathsimplealign % new ! + [equationsystem] + [\c!simplecommand=equationsystem, + \c!alternative=equationsystem, % for the moment we use this key + \c!align={all:right}, + \c!distance=\v!math, + \c!left=, + \c!right=] + +\definemathsimplealign + [lequationsystem] + [equationsystem] + [\c!simplecommand=lequationsystem, + \c!left={\startmathfenced[cases]}, + \c!right=\stopmathfenced] + +\definemathsimplealign + [requationsystem] + [equationsystem] + [\c!simplecommand=requationsystem, + \c!left={\startmathfenced[sesac]}, + \c!right=\stopmathfenced] + \protect \endinput % \placeformula \startformula[-] \startmatrix diff --git a/tex/context/base/mkxl/math-def.mkxl b/tex/context/base/mkxl/math-def.mkxl index d46506add..16c65cf55 100644 --- a/tex/context/base/mkxl/math-def.mkxl +++ b/tex/context/base/mkxl/math-def.mkxl @@ -49,9 +49,9 @@ \definemathfunction [exp] \definemathfunction [gcd] [\c!mathlimits=\v!yes] \definemathfunction [hom] -\definemathfunction [inf] [\c!mathlimits=\v!yes] -\definemathfunction [inv] [\c!mathlimits=\v!yes] -\definemathfunction [injlim] [\c!mathlimits=\v!yes] +\definemathfunction [inf] [\c!mathlimits=\v!auto] +\definemathfunction [inv] [\c!mathlimits=\v!auto] +\definemathfunction [injlim] [\c!mathlimits=\v!auto] \definemathfunction [ker] \definemathfunction [lg] \definemathfunction [liminf] [\c!mathlimits=\v!auto] @@ -64,12 +64,12 @@ \definemathfunction [min] [\c!mathlimits=\v!auto] \definemathfunction [mod] [\c!mathlimits=\v!yes] %definemathfunction [div] [\c!mathlimits=\v!yes] -\definemathfunction [projlim] [\c!mathlimits=\v!yes] +\definemathfunction [projlim] [\c!mathlimits=\v!auto] \definemathfunction [Pr] [\c!mathlimits=\v!yes] \definemathfunction [sec] \definemathfunction [sinh] \definemathfunction [sin] -\definemathfunction [sup] [\c!mathlimits=\v!yes] +\definemathfunction [sup] [\c!mathlimits=\v!auto] \definemathfunction [tanh] \definemathfunction [tan] \definemathfunction [diff] diff --git a/tex/context/base/mkxl/math-del.mklx b/tex/context/base/mkxl/math-del.mklx index d046a0912..edfd77de2 100644 --- a/tex/context/base/mkxl/math-del.mklx +++ b/tex/context/base/mkxl/math-del.mklx @@ -84,17 +84,27 @@ {\popcolor#body}% \fi} -% todo: -% -% \setupmathdelimited -% [topoffset=.2\exheight] -% -% \definemathdelimited -% [fourier] -% [rule=no, -% left=\zerocount, -% right="FE944] % 46 48 -% +\integerdef\delimitedrighthatuc \privatecharactercode{delimited right hat} +\integerdef\delimitedrighttildeuc \privatecharactercode{delimited right tilde} +\integerdef\delimitedrightcheckuc \privatecharactercode{delimited right check} + +% todo: some more .. are the offsets okay? + +\definemathdelimited + [fourier] + [\c!topoffset=.2\exheight, + \c!right=\delimitedrighthatuc] + +\definemathdelimited + [inversefourier] + [fourier] + [\c!right=\delimitedrightcheckuc] + +\definemathdelimited + [fuzzyfourier] + [fourier] + [\c!right=\delimitedrighttildeuc] + % $ \autofences \fourier{(z+\frac12)} + \courier{(z+\frac12)} + \xourier{(z+\frac12)} $ \protect \endinput diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl index aeed32fcf..5dd7ee118 100644 --- a/tex/context/base/mkxl/math-fen.mkxl +++ b/tex/context/base/mkxl/math-fen.mkxl @@ -270,11 +270,32 @@ \aliased\let\fence \relax \aliased\let\fenced\relax +\protected\def\math_fenced_middle_bar {\mfence |\relax} +\protected\def\math_fenced_middle_colon{\mfence :\relax} +\protected\def\math_fenced_middle_comma{\mathatom \s!leftclass \mathpunctuationcode \s!rightclass \mathmiddlecode {,}} + +\startsetups math:fence:set:bar + \aliased\let\suchthat\math_fenced_middle_bar + \aliased\let\where \math_fenced_middle_comma + \aliased\let\and \math_fenced_middle_comma +\stopsetups + +\startsetups math:fence:set:colon + \aliased\let\suchthat\math_fenced_middle_colon + \aliased\let\where \math_fenced_middle_comma + \aliased\let\and \math_fenced_middle_comma +\stopsetups + +\startsetups math:fence:set + \directsetup{math:fence:set:bar} +\stopsetups + \protected\def\math_fenced_middle_common {\math_fenced_middle} % redefined inside atom \protected\def\math_fenced_fenced_common {\startusemathstyleparameter\mathfenceparameter\c!mathstyle + \usesetupsparameter\mathfenceparameter \enforced\let\fence\math_fenced_middle_common} \protected\def\math_fenced_fenced_start#1% @@ -604,7 +625,7 @@ \math_fenced_common\Uright\c!rightclass\math_fenced_x_p_right\c!rightsource \advance\c_math_fence_nesting\minusone} -\def\math_fenced_x_middle_normal +\def\math_fenced_x_middle {\math_fenced_common\Umiddle\c!middleclass\math_fenced_x_p_middle\c!middlesource} % the expandafter permits \left\Uchar... diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt index 81ac23f43..81138b2e2 100644 --- a/tex/context/base/mkxl/math-ini.lmt +++ b/tex/context/base/mkxl/math-ini.lmt @@ -368,6 +368,7 @@ registerengineclass("textpunctuation", "tpu") registerengineclass("unspaced") registerengineclass("experimental") registerengineclass("fake") +registerengineclass("numbergroup", "ngr") registerengineclass("maybeordinary") registerengineclass("mayberelation") diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl index 5b5610ff5..a1e5c29a6 100644 --- a/tex/context/base/mkxl/math-ini.mkxl +++ b/tex/context/base/mkxl/math-ini.mkxl @@ -176,6 +176,7 @@ \setnewconstant\mathunspacedcode \mathclassvalue unspaced % for cases where we don't want spacing at all \setnewconstant\mathexperimentalcode \mathclassvalue experimental % for MS and HH testing purposed only \setnewconstant\mathunarycode \mathclassvalue unary % dedicated to Alan +\setnewconstant\mathnumbergroupcode \mathclassvalue numbergroup \setnewconstant\mathbegincode \mathclassvalue begin \setnewconstant\mathendcode \mathclassvalue end @@ -231,6 +232,9 @@ \copymathspacing \mathmayberelationcode \mathrelationcode \copymathspacing \mathmaybebinarycode \mathbinarycode +%copymathspacing \mathnumbergroupcode \mathpunctuationcode +\copymathspacing \mathnumbergroupcode \mathrelationcode % for now + \setnewconstant\mathlimopcode \plusone \setnewconstant\mathnolopcode \plusone @@ -552,6 +556,7 @@ % +\checkligatureclassoptioncode +\flattenclassoptioncode +\checkkernpairclassoptioncode + +\removeitaliccorrectionclassoptioncode \relax \setmathoptions\mathvariablecode\numexpr @@ -730,6 +735,8 @@ \definesystemattribute[mathcollapsing] [public] \definesystemattribute[mathunstack] [public] \definesystemattribute[mathvariant] [public] +\definesystemattribute[mathnumbers] [public] +\definesystemattribute[mathspacing] [public] \definesystemattribute[displaymath] [public] @@ -1206,29 +1213,29 @@ \inherited\setmathspacing \mathclosecode \mathfractioncode \allscriptstyles \pettymuskip % \inherited\setmathspacing \mathclosecode \mathradicalcode \allmathstyles \zeromuskip % - \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allscriptstyles \pettymuskip + \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathordinarycode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathoperatorcode \allscriptstyles \thinmuskip % \inherited\setmathspacing \mathpunctuationcode \mathbinarycode \allmathstyles \zeromuskip - \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathopencode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathopencode \allscriptstyles \pettymuskip + \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathopencode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathopencode \allscriptstyles \thinmuskip \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allsplitstyles \thickmuskip - \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allscriptstyles \pettymuskip - \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allsplitstyles \thinmuskip - \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allscriptstyles \pettymuskip + \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathclosecode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathpunctuationcode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathconstructcode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathellipsiscode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathfractioncode \allscriptstyles \thinmuskip + \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allsplitstyles \medmuskip + \inherited\setmathspacing \mathpunctuationcode \mathradicalcode \allscriptstyles \thinmuskip % \inherited\setmathspacing \mathconstructcode \mathordinarycode \allsplitstyles \thinmuskip \inherited\setmathspacing \mathconstructcode \mathordinarycode \allscriptstyles \pettymuskip @@ -2452,16 +2459,39 @@ %D we can stick to numbers. At some point this will change because we can now %D control in in the engine and goodies per font. -\installcorenamespace{mathitalics} +% \installcorenamespace{mathitalics} +% +% \setnewconstant\c_math_italics_attribute\attributeunsetvalue +% +% \letcsname\??mathitalics 1\endcsname\plusone % fontitalics +% \letcsname\??mathitalics 2\endcsname\plustwo % fontdata +% \letcsname\??mathitalics 3\endcsname\plusthree % quad based +% \letcsname\??mathitalics 4\endcsname\plusfour % combination of 1 and 3 +% \letcsname\??mathitalics \v!none\endcsname\attributeunsetvalue +% \letcsname\??mathitalics\v!reset\endcsname\attributeunsetvalue +% +% \def\math_italics_initialize +% {\ifnum\c_math_italics_attribute=\attributeunsetvalue \else +% \clf_initializemathitalics % one time +% \glet\math_italics_initialize\relax +% \fi} +% +% \appendtoks +% \edef\p_italics{\mathematicsparameter\s!italics}% +% \c_math_italics_attribute +% \ifcsname\??mathitalics\p_italics\endcsname\lastnamedcs\else\attributeunsetvalue\fi +% \relax +% % \math_italics_initialize +% \to \everyswitchmathematics % only in mathematics +% +% \appendtoks +% \math_italics_initialize +% \c_attr_mathitalics\c_math_italics_attribute +% \to \everymathematics \setnewconstant\c_math_italics_attribute\attributeunsetvalue -\letcsname\??mathitalics 1\endcsname\plusone % fontitalics -\letcsname\??mathitalics 2\endcsname\plustwo % fontdata -\letcsname\??mathitalics 3\endcsname\plusthree % quad based -\letcsname\??mathitalics 4\endcsname\plusfour % combination of 1 and 3 -\letcsname\??mathitalics \v!none\endcsname\attributeunsetvalue -\letcsname\??mathitalics\v!reset\endcsname\attributeunsetvalue +% merge these: \def\math_italics_initialize {\ifnum\c_math_italics_attribute=\attributeunsetvalue \else @@ -2472,9 +2502,14 @@ \appendtoks \edef\p_italics{\mathematicsparameter\s!italics}% \c_math_italics_attribute - \ifcsname\??mathitalics\p_italics\endcsname\lastnamedcs\else\attributeunsetvalue\fi + \ifx\p_italics\v!none + \attributeunsetvalue + \orelse\ifx\p_italics\v!reset + \attributeunsetvalue + \else + \plusone + \fi \relax - % \math_italics_initialize \to \everyswitchmathematics % only in mathematics \appendtoks @@ -2482,9 +2517,6 @@ \c_attr_mathitalics\c_math_italics_attribute \to \everymathematics -% \setupmathematics % done later -% [\s!italics=3] % 4 is probably better - % looks nicer but can generate bogus csnames % % \setvalue{\??mathitalics1}{\math_italics_initialize\c_math_italics_attribute\plusone } % fontitalics @@ -2539,11 +2571,11 @@ % \protected\def\disablemathpunctuation{\setfalse\automathpunctuation} % % \appendtoks -% \doifelse{\mathematicsparameter\v!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation +% \doifelse{\mathematicsparameter\c!autopunctuation}\v!yes\settrue\setfalse\automathpunctuation % \to \everyswitchmathematics % % \setupmathematics -% [\v!autopunctuation=\v!no] +% [\c!autopunctuation=\v!no] % % \def\math_punctuation_next{\ifx\nexttoken\blankspace\signalcharacter\fi} % @@ -2609,12 +2641,12 @@ % todo: use \Umathclass\c_math_comma\mathpunctcode etc for temporary switching -\def\math_set_o_comma {\Umathcode\c_math_comma \mathordcode \zerocount\c_math_comma} -\def\math_set_p_comma {\Umathcode\c_math_comma \mathpunctcode\zerocount\c_math_comma} -\def\math_set_o_period {\Umathcode\c_math_period \mathordcode \zerocount\c_math_period} -\def\math_set_p_period {\Umathcode\c_math_period \mathpunctcode\zerocount\c_math_period} -\def\math_set_o_semicolon{\Umathcode\c_math_semicolon\mathordcode \zerocount\c_math_semicolon} -\def\math_set_p_semicolon{\Umathcode\c_math_semicolon\mathpunctcode\zerocount\c_math_semicolon} +\def\math_set_o_comma {\Umathcode\c_math_comma \mathordinarycode \zerocount\c_math_comma} +\def\math_set_p_comma {\Umathcode\c_math_comma \mathpunctuationcode\zerocount\c_math_comma} +\def\math_set_o_period {\Umathcode\c_math_period \mathordinarycode \zerocount\c_math_period} +\def\math_set_p_period {\Umathcode\c_math_period \mathpunctuationcode\zerocount\c_math_period} +\def\math_set_o_semicolon{\Umathcode\c_math_semicolon\mathordinarycode \zerocount\c_math_semicolon} +\def\math_set_p_semicolon{\Umathcode\c_math_semicolon\mathpunctuationcode\zerocount\c_math_semicolon} \edef\math_set_o_both {\math_set_o_period\math_set_o_comma} \edef\math_set_p_both {\math_set_p_period\math_set_p_comma} @@ -2633,9 +2665,9 @@ \let\math_punctuation_yes_period \math_punctuation_nop_period \let\math_punctuation_yes_semicolon\math_punctuation_all_semicolon -\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_comma ,\endgroup} -\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_period .\endgroup} -\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathordcode\else\mathordcode\fi\zerocount\c_math_semicolon;\endgroup} +\def\math_punctuation_comma_next {\begingroup\Umathcode\c_math_comma \ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_comma ,\endgroup} +\def\math_punctuation_period_next {\begingroup\Umathcode\c_math_period \ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_period .\endgroup} +\def\math_punctuation_semicolon_next{\begingroup\Umathcode\c_math_semicolon\ifx\nexttoken\blankspace\mathpunctuationcode\else\mathordinarycode\fi\zerocount\c_math_semicolon;\endgroup} \installcorenamespace {mathautopunctuation} @@ -2704,12 +2736,12 @@ \mathcode\c_math_comma \c_math_special \mathcode\c_math_period \c_math_special \mathcode\c_math_semicolon\c_math_special - \begincsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname + \begincsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \to \everymathematics \appendtoks - \ifcsname\??mathautopunctuation\mathematicsparameter\v!autopunctuation\endcsname \else - \letmathematicsparameter\v!autopunctuation\v!no + \ifcsname\??mathautopunctuation\mathematicsparameter\c!autopunctuation\endcsname \else + \letmathematicsparameter\c!autopunctuation\v!no \fi \to \everysetupmathematics @@ -2717,7 +2749,73 @@ \permanent\protected\def\disablemathpunctuation{\csname\??mathautopunctuation\v!yes\endcsname} \setupmathematics - [\v!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon + [\c!autopunctuation=\v!no] % no | yes | all | comma | yes,semicolon | all,semicolon + +%D The next replaces the above: + +% \startbuffer +% \im{x + 1,222,333.44 + x}\par +% \im{x + 1.222.333,44 + x}\par +% \im{x + 1, 222, 333. 44 + x}\par +% \im{(1.5, 1.5) + (1,5;1,5)}\par +% \im{111 2222}\par +% \im{f: \reals\to\reals}\par +% \im{f : \reals\to\reals}\par +% \im{f\colon\reals\to\reals}\par +% \im{f \colon\reals\to\reals}\par +% \stopbuffer +% +% \startTEXpage[offset=1dk] +% \setupmathematics[autospacing=yes] \getbuffer \blank +% \setupmathematics[autonumbers=1] \getbuffer \blank +% \setupmathematics[autonumbers=2] \getbuffer \blank +% \setupmathematics[autonumbers=3] \getbuffer \blank +% \setupmathematics[autonumbers=4] \getbuffer \blank +% \setupmathematics[autonumbers=5] \getbuffer \blank +% \setupmathematics[autonumbers=6] \getbuffer \blank +% \stopTEXpage + +\installcorenamespace{autospacing} + +\permanent\protected\def\enablemathautospacing + {\attribute\mathspacingattribute\plusone + \clf_initializemathspacing} + +\permanent\protected\def\disablemathautospacing + {\attribute\mathspacingattribute\attributeunsetvalue} + +\appendtoks + \ifcstok{\mathematicsparameter\c!autospacing}\v!yes + \enablemathautospacing + \else + \disablemathautospacing + \fi +\to \everysetupmathematics + +\setupmathematics + [\c!autospacing=\v!no] + +\permanent\protected\def\enablemathautonumbers + {\attribute\mathnumbersattribute\plusone + \clf_initializemathnumbers} + +\permanent\protected\def\disablemathautonumbers + {\attribute\mathnumbersattribute\attributeunsetvalue} + +\appendtoks + \edef\p_autonumbers{\mathematicsparameter\c!autonumbers}% + \ifchknum\p_autonumbers\or + \enablemathautonumbers % default + \attribute\mathnumbersattribute\p_autonumbers\relax + \orelse\ifx\p_autonumbers\v!no + \disablemathautonumbers + \else + \enablemathautonumbers % default + \fi +\to \everysetupmathematics + +\setupmathematics + [\c!autonumbers=\v!no] %D The consequences of setting this are as follows: %D @@ -3418,54 +3516,143 @@ %D %D \typebuffer \getbuffer -\def\math_text_choice_font#1#2#% - {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}% - \hbox#2\bgroup - \bgroup - \aftergroup\hss - \aftergroup\egroup - \hss - \font_basics_switchtobodyfont\m_math_text_choice_face - #1% - \let\next} +% %mathscriptboxmode \plusthree % lists and boxes with \boundary=1 (also for testing and demo) +% %mathscriptboxmode \plusone % collapsed and then removed, now control option +% %mathscriptcharmode \plusone % idem +% +% %mathrulethicknessmode\plusone % adaptive -\def\math_text_choice_word#1#2#% - {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}% - \hbox#2\bgroup - \bgroup - \aftergroup\hss - \aftergroup\egroup - \hss - \font_basics_switchtobodyfont\m_math_text_choice_face - #1% - \nospacing % \normalnospaces\plusone - \let\next} +% We keep this as reference: +% +% \def\math_text_choice_font#1#2#% +% {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}% +% \hbox#2\bgroup +% \bgroup +% \aftergroup\hss +% \aftergroup\egroup +% \hss +% \font_basics_switchtobodyfont\m_math_text_choice_face +% #1% +% \let\next} +% +% \def\math_text_choice_word#1#2#% +% {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}% +% \hbox#2\bgroup +% \bgroup +% \aftergroup\hss +% \aftergroup\egroup +% \hss +% \font_basics_switchtobodyfont\m_math_text_choice_face +% #1% +% \nospacing % \normalnospaces\plusone +% \let\next} +% +% % \ruledhbox{$\mathtext{abc ffi}$} +% % \ruledhbox{$\mathword{abc ffi}$} +% +% \permanent\protected\def\mathtext {\mathortext{\math_text_choice_font\relax}\hbox} +% \permanent\protected\def\mathword {\mathortext{\math_text_choice_word\relax}\hbox} +% +% \permanent\protected\def\mathtexttf{\mathortext{\math_text_choice_font\tf}\hbox} +% \permanent\protected\def\mathtextit{\mathortext{\math_text_choice_font\it}\hbox} +% \permanent\protected\def\mathtextsl{\mathortext{\math_text_choice_font\sl}\hbox} +% \permanent\protected\def\mathtextbf{\mathortext{\math_text_choice_font\bf}\hbox} +% \permanent\protected\def\mathtextbi{\mathortext{\math_text_choice_font\bi}\hbox} +% \permanent\protected\def\mathtextbs{\mathortext{\math_text_choice_font\bs}\hbox} +% +% \permanent\protected\def\mathwordtf{\mathortext{\math_text_choice_word\tf}\hbox} +% \permanent\protected\def\mathwordit{\mathortext{\math_text_choice_word\it}\hbox} +% \permanent\protected\def\mathwordsl{\mathortext{\math_text_choice_word\sl}\hbox} +% \permanent\protected\def\mathwordbf{\mathortext{\math_text_choice_word\bf}\hbox} +% \permanent\protected\def\mathwordbi{\mathortext{\math_text_choice_word\bi}\hbox} +% \permanent\protected\def\mathwordbs{\mathortext{\math_text_choice_word\bs}\hbox} + +%D The split option is sort or a gimmick but one never knows how it might come in +%D handy. It was also an interesting test for how easy we can get this done (an extra +%D option as well as cheating in the line break function). And it was a good excuse +%D to add options to glue (which was pending). Actually, the main reason for this +%D trickery was that unrolling lists into the main math list could have strange side +%D effects, due to glue being ignored in math in the libereak routine, so better get +%D it working than explaining why if could have side effects. -% \ruledhbox{$\mathtext{abc ffi}$} -% \ruledhbox{$\mathword{abc ffi}$} +%D The fact that one can pass e.g \type {to 4cm} before the content is an old and +%D probably never used feature that we keep in order to remain compatible. -%mathscriptboxmode \plusthree % lists and boxes with \boundary=1 (also for testing and demo) -%mathscriptboxmode \plusone % collapsed and then removed, now control option -%mathscriptcharmode \plusone % idem +\installcorenamespace{mathtext} -%mathrulethicknessmode\plusone % adaptive +\installcommandhandler \??mathtext {mathtext} \??mathtext -\permanent\protected\def\mathtext {\mathortext{\math_text_choice_font\relax}\hbox} -\permanent\protected\def\mathword {\mathortext{\math_text_choice_word\relax}\hbox} +\setupmathtext + [\s!leftclass=\mathtextparameter\s!class, + \s!rightclass=\mathtextparameter\s!class, + \s!class=\mathordinarycode] -\permanent\protected\def\mathtexttf{\mathortext{\math_text_choice_font\tf}\hbox} -\permanent\protected\def\mathtextit{\mathortext{\math_text_choice_font\it}\hbox} -\permanent\protected\def\mathtextsl{\mathortext{\math_text_choice_font\sl}\hbox} -\permanent\protected\def\mathtextbf{\mathortext{\math_text_choice_font\bf}\hbox} -\permanent\protected\def\mathtextbi{\mathortext{\math_text_choice_font\bi}\hbox} -\permanent\protected\def\mathtextbs{\mathortext{\math_text_choice_font\bs}\hbox} +\appendtoks + \frozen\protected\edefcsname\currentmathtext\endcsname{\math_text_handle{\currentmathtext}} +\to \everydefinemathtext + +\newtoks\everymathtext -\permanent\protected\def\mathwordtf{\mathortext{\math_text_choice_word\tf}\hbox} -\permanent\protected\def\mathwordit{\mathortext{\math_text_choice_word\it}\hbox} -\permanent\protected\def\mathwordsl{\mathortext{\math_text_choice_word\sl}\hbox} -\permanent\protected\def\mathwordbf{\mathortext{\math_text_choice_word\bf}\hbox} -\permanent\protected\def\mathwordbi{\mathortext{\math_text_choice_word\bi}\hbox} -\permanent\protected\def\mathwordbs{\mathortext{\math_text_choice_word\bs}\hbox} +\tolerant\protected\def\math_text_handle_indeed#1#*[#2]#:#3#% + {\begingroup + \edef\currentmathtext{#1}% + \setupcurrentmathtext[#2]% + \normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}% + \ifcstok{\mathtextparameter\c!alternative}\v!split + \mathatom + unroll + class \mathtextparameter\s!class + leftclass \mathtextparameter\s!leftclass + rightclass \mathtextparameter\s!rightclass + \bgroup + \hbox#3\bgroup + \aftergroup\egroup + \aftergroup\endgroup + \else + \hbox#3\bgroup + \atendofgroup\hss + \aftergroup\endgroup + \ifcstok{\mathtextparameter\c!alternative}\v!word + \nospacing % \normalnospaces\plusone + \fi + \hss + \fi + \font_basics_switchtobodyfont\m_math_text_choice_face + \usemathtextstyleandcolor\c!style\c!color + \the\everymathtext\relax + \let\next} + +\protected\def\math_text_handle#1% + {\mathortext{\math_text_handle_indeed{#1}}\hbox} + +\definemathtext[mathtext] +\definemathtext[mathtexttf][mathtext][\c!style=\tf] +\definemathtext[mathtextit][mathtext][\c!style=\it] +\definemathtext[mathtextsl][mathtext][\c!style=\sl] +\definemathtext[mathtextbf][mathtext][\c!style=\bf] +\definemathtext[mathtextbi][mathtext][\c!style=\bi] +\definemathtext[mathtextbs][mathtext][\c!style=\bs] + +\definemathtext[mathword] [mathtext][\c!alternative=\v!word] +\definemathtext[mathwordtf][mathword][\c!style=\tf] +\definemathtext[mathwordit][mathword][\c!style=\it] +\definemathtext[mathwordsl][mathword][\c!style=\sl] +\definemathtext[mathwordbf][mathword][\c!style=\bf] +\definemathtext[mathwordbi][mathword][\c!style=\bi] +\definemathtext[mathwordbs][mathword][\c!style=\bs] + +\definemathtext[mathsplit] [mathtext] [\c!alternative=\v!split] +\definemathtext[mathsplittf][mathsplit][\c!style=\tf] +\definemathtext[mathsplitit][mathsplit][\c!style=\it] +\definemathtext[mathsplitsl][mathsplit][\c!style=\sl] +\definemathtext[mathsplitbf][mathsplit][\c!style=\bf] +\definemathtext[mathsplitbi][mathsplit][\c!style=\bi] +\definemathtext[mathsplitbs][mathsplit][\c!style=\bs] + +\appendtoks + \reinstatecatcodecommand\barasciicode + \obeydiscretionaries +\to \everymathtext %D Safeguard against redefinitions: @@ -3773,7 +3960,7 @@ \permanent\protected\def\math_scripts_unstack {\clf_enablescriptunstacking - \c_attr_mathunstack\plusone} + \c_attr_mathunstack\plustwo} % \plusone for the other way around \ifdefined\stackscripts \else \aliased\let\stackscripts \relax \fi \ifdefined\unstackscripts \else \aliased\let\unstackscripts\relax \fi diff --git a/tex/context/base/mkxl/math-noa.lmt b/tex/context/base/mkxl/math-noa.lmt index 3f77c2225..dfdfa6766 100644 --- a/tex/context/base/mkxl/math-noa.lmt +++ b/tex/context/base/mkxl/math-noa.lmt @@ -64,13 +64,7 @@ local trace_processing = false registertracker("math.processing", function local trace_analyzing = false registertracker("math.analyzing", function(v) trace_analyzing = v end) local trace_normalizing = false registertracker("math.normalizing", function(v) trace_normalizing = v end) local trace_collapsing = false registertracker("math.collapsing", function(v) trace_collapsing = v end) -local trace_fixing = false registertracker("math.fixing", function(v) trace_fixing = v end) -local trace_patching = false registertracker("math.patching", function(v) trace_patching = v end) local trace_goodies = false registertracker("math.goodies", function(v) trace_goodies = v end) -local trace_variants = false registertracker("math.variants", function(v) trace_variants = v end) -local trace_alternates = false registertracker("math.alternates", function(v) trace_alternates = v end) -local trace_italics = false registertracker("math.italics", function(v) trace_italics = v end) -local trace_kernpairs = false registertracker("math.kernpairs", function(v) trace_kernpairs = v end) local check_coverage = true registerdirective("math.checkcoverage", function(v) check_coverage = v end) local use_math_goodies = true registerdirective("math.nogoodies", function(v) use_math_goodies = not v end) @@ -79,13 +73,7 @@ local report_processing = logreporter("mathematics","processing") local report_remapping = logreporter("mathematics","remapping") local report_normalizing = logreporter("mathematics","normalizing") local report_collapsing = logreporter("mathematics","collapsing") -local report_fixing = logreporter("mathematics","fixing") -local report_patching = logreporter("mathematics","patching") local report_goodies = logreporter("mathematics","goodies") -local report_variants = logreporter("mathematics","variants") -local report_alternates = logreporter("mathematics","alternates") -local report_italics = logreporter("mathematics","italics") -local report_kernpairs = logreporter("mathematics","kernpairs") local a_mathrendering = privateattribute("mathrendering") local a_exportstatus = privateattribute("exportstatus") @@ -113,6 +101,9 @@ local getfield = nuts.getfield local getnext = nuts.getnext local getprev = nuts.getprev local getboth = nuts.getboth +local isnext = nuts.isnext +local isprev = nuts.isprev +local isboth = nuts.isboth local getid = nuts.getid local getsubtype = nuts.getsubtype local getchar = nuts.getchar @@ -154,6 +145,9 @@ local setprime = nuts.setprime local getoffsets = nuts.getoffsets local setoffsets = nuts.setoffsets +local getoptions = nuts.getoptions +local setoptions = nuts.setoptions + local flushnode = nuts.flush local copy_node = nuts.copy local slide_nodes = nuts.slide @@ -202,25 +196,24 @@ local enableaction = tasks.enableaction local setaction = tasks.setaction local nodecodes = nodes.nodecodes -local noadcodes = nodes.noadcodes +----- noadcodes = nodes.noadcodes local fencecodes = nodes.fencecodes - -local ordinarynoad_code = noadcodes.ordinary -local operatornoad_code = noadcodes.operator -local binarynoad_code = noadcodes.binary -local relationnoad_code = noadcodes.relation -local opennoad_code = noadcodes.open -local closenoad_code = noadcodes.close -local middlenoad_code = noadcodes.middle -local punctuationnoad_code = noadcodes.punctuation -local innernoad_code = noadcodes.inner -local fencednoad_code = noadcodes.fenced -local undernoad_code = noadcodes.under -local overnoad_code = noadcodes.over -local vcenternoad_code = noadcodes.vcenter -local fractionnoad_code = noadcodes.fraction -local radicalnoad_code = noadcodes.radical -local accentnoad_code = noadcodes.accent +local classes = mathematics.classes -- or nodes.noadcodes + +local ordinary_class = classes.ordinary +local operator_class = classes.operator +local binary_class = classes.binary +local relation_class = classes.relation +local open_class = classes.open +local close_class = classes.close +local middle_class = classes.middle +local punctuation_class = classes.punctuation +local fenced_class = classes.fenced +local fraction_class = classes.fraction +local radical_class = classes.radical +local accent_class = classes.accent +local numbergroup_class = classes.numbergroup +local digit_class = classes.digit local noad_code = nodecodes.noad local accent_code = nodecodes.accent @@ -264,7 +257,7 @@ local function process(start,what,n,parent) local id = getid(start) if trace_processing then if id == noad_code then - report_processing("%w%S, class %a",n*2,nutstring(start),noadcodes[getsubtype(start)]) + report_processing("%w%S, class %a",n*2,nutstring(start),classes[getsubtype(start)]) elseif id == mathchar_code then local char, font, fam = getcharspec(start) report_processing("%w%S, family %a, font %a, char %a, shape %c",n*2,nutstring(start),fam,font,char,char) @@ -680,7 +673,6 @@ do function handlers.families(head,style,penalties) processnoads(head,families,"families") - return true -- not needed end end @@ -822,7 +814,6 @@ do function handlers.relocate(head,style,penalties) processnoads(head,relocate,"relocate") - return true -- not needed end end @@ -855,7 +846,6 @@ do function handlers.render(head,style,penalties) processnoads(head,render,"render") - return true -- not needed end end @@ -917,7 +907,6 @@ do function handlers.resize(head,style,penalties) processnoads(head,resize,"resize") - return true -- not needed end end @@ -930,7 +919,7 @@ do local autofences = { } local dummyfencechar = 0x2E - local function makefence(what,char) + local function makefence(what,char,template) local d = new_delimiter() -- todo: attr local f = new_fence() -- todo: attr if char then @@ -943,8 +932,8 @@ do setfam(d,fam) flushnode(sym) end - setattrlist(d,char) - setattrlist(f,char) + setattrlist(d,template) + setattrlist(f,template) setsubtype(f,what) setfield(f,"delimiter",d) setfield(f,"class",-1) -- tex itself does this, so not fenceclasses[what] @@ -972,8 +961,9 @@ do -- f_c or "?" -- ) local list = new_submlist() - setsubtype(noad,fencednoad_code) + setsubtype(noad,fenced_class) setnucleus(noad,list) + setattrlist(list,noad) setlist(list,f_o) setlink(f_o,o_next) -- prev of list is nil setlink(c_prev,f_c) -- next of list is nil @@ -985,7 +975,7 @@ do local midl = middle[current] local next = getnext(current) if midl then - local fence = makefence(middlefence_code,current) + local fence = makefence(middlefence_code,current,current) setnucleus(current) flushnode(current) middle[current] = nil @@ -1009,8 +999,8 @@ do return close else local c_prev, c_next = getboth(close) - local f_o = makefence(leftfence_code,open) - local f_c = makefence(rightfence_code,close) + local f_o = makefence(leftfence_code,open,open) + local f_c = makefence(rightfence_code,close,close) makelist(middle,open,f_o,o_next,c_prev,f_c) setnucleus(close) flushnode(close) @@ -1021,8 +1011,8 @@ do end local function convert_open(open,last,middle) -- last is really last (final case) - local f_o = makefence(leftfence_code,open) - local f_c = makefence(rightfence_code) + local f_o = makefence(leftfence_code,open,open) + local f_c = makefence(rightfence_code,nil,open) local o_next = getnext(open) makelist(middle,open,f_o,o_next,last,nil) -- open is now a list @@ -1031,7 +1021,7 @@ do end local function convert_close(first,close,middle) - local f_o = makefence(leftfence_code) + local f_o = makefence(leftfence_code,nil,close) local f_c = makefence(rightfence_code,close) local c_prev = getprev(close) local f_next = getnext(first) @@ -1240,7 +1230,8 @@ do if start_super == stop_super then setsup(pointer,getnucleus(start_super)) else - local list = new_submlist() -- todo attr + local list = new_submlist() + setattrlist(list,pointer) setlist(list,start_super) setsup(pointer,list) end @@ -1250,22 +1241,11 @@ do setnext(stop_super) end if start_sub then - --- if mode == "sub" then --- local sup = getsup(pointer) --- if sup and not getsub(pointer) then --- local nxt = getnext(pointer) --- local new = new_noad(pointer) --- setnucleus(new,new_submlist()) --- setlink(pointer,new,nxt) --- pointer = new --- end --- end - if start_sub == stop_sub then setsub(pointer,getnucleus(start_sub)) else - local list = new_submlist() -- todo attr + local list = new_submlist() + setattrlist(list,pointer) setlist(list,start_sub) setsub(pointer,list) end @@ -1281,7 +1261,6 @@ do function handlers.unscript(head,style,penalties) processnoads(head,unscript,"unscript") - return true -- not needed end end @@ -1296,19 +1275,22 @@ do local report_unstacking = logreporter("mathematics","unstack") unstack[noad_code] = function(pointer) - if getattr(pointer,a_unstack) then + local a = getattr(pointer,a_unstack) + if a then local sup = getsup(pointer) local sub = getsub(pointer) if sup and sub then -- if trace_unstacking then -- report_unstacking() -- todo ... what to show ... -- end - local nxt = getnext(pointer) - local new = new_noad(pointer) - setnucleus(new,new_submlist()) - setsub(pointer) - setsub(new,sub) - setlink(pointer,new,nxt) + if a == 1 then + a = tex.noadoptioncodes.shiftedsubscript + elseif a == 2 then + a = tex.noadoptioncodes.shiftedsuperscript + else + a = 0 + end + setoptions(pointer,getoptions(pointer) | a) end end end @@ -1316,7 +1298,7 @@ do function handlers.unstack(head,style,penalties) if enabled then processnoads(head,unstack,"unstack") - return true -- not needed + end end @@ -1363,6 +1345,9 @@ end do + local trace_alternates = false registertracker("math.alternates", function(v) trace_alternates = v end) + local report_alternates = logreporter("mathematics","alternates") + local last = 0 local known = setmetatableindex(function(t,k) @@ -1575,7 +1560,6 @@ do function handlers.alternates(head,style,penalties) processnoads(head,alternate,"alternate") - return true -- not needed end end @@ -1595,129 +1579,160 @@ end -- some juggling that we want to avoid but we need to do something here (in fact, we could -- better fix the width of the character) -do - - local a_mathitalics = privateattribute("mathitalics") - - local italics = { } - local default_factor = 1/20 - - local setcolor = colortracers.set - local resetcolor = colortracers.reset - local italic_kern = new_kern - - local c_positive_d = "trace:dg" - local c_negative_d = "trace:dr" - - local function insert_kern(current,kern) - local sub = new_submlist() -- todo: attr - local noad = new_noad() -- todo: attr - setlist(sub,kern) - setnext(kern,noad) - setnucleus(noad,current) - return sub - end - - registertracker("math.italics.visualize", function(v) - if v then - italic_kern = function(k) - local n = new_kern(k) -- todo: attr - set_visual(n,"italic") - return n - end - else - italic_kern = new_kern - end - end) - - local function getcorrection(method,font,char) -- -- or character.italic -- (this one is for tex) - - local visual = chardata[char].visual - - if method == 1 then - -- check on state - local italics = fontitalics[font] - if italics then - local character = fontcharacters[font][char] - if character then - local correction = character.italic - if correction and correction ~= 0 then - return correction, visual - end - end - end - elseif method == 2 then - -- no check - local character = fontcharacters[font][char] - if character then - local correction = character.italic - if correction and correction ~= 0 then - return correction, visual - end - end - elseif method == 3 then - -- check on visual - if visual == "it" or visual == "bi" then - local character = fontcharacters[font][char] - if character then - local correction = character.italic - if correction and correction ~= 0 then - return correction, visual - end - end - end - elseif method == 4 then - -- combination of 1 and 3 - local italics = fontitalics[font] - if italics and (visual == "it" or visual == "bi") then - local character = fontcharacters[font][char] - if character then - local correction = character.italic - if correction and correction ~= 0 then - return correction, visual - end - end - end - end - - end - - italics[mathchar_code] = function(pointer,what,n,parent) - local method = getattr(pointer,a_mathitalics) - if method and method > 0 and method < 100 then - local char, font = getcharspec(pointer) - local correction, visual = getcorrection(method,font,char) - if correction and correction ~= 0 then - local next_noad = getnext(parent) - if not next_noad then - if n == 1 then - -- only at the outer level .. will become an option (always,endonly,none) - if trace_italics then - report_italics("method %a, flagging italic correction %p between %C and end math",method,correction,char) - end - if correction > 0 then - correction = correction + 100 - else - correction = correction - 100 - end - correction = round(correction) - setattr(pointer,a_mathitalics,correction) - setattr(parent,a_mathitalics,correction) - return -- so no reset later on - end - end - end - end - setattr(pointer,a_mathitalics,unsetvalue) - end +-- do +-- +-- local a_mathitalics = privateattribute("mathitalics") +-- +-- local trace_italics = false registertracker("math.italics", function(v) trace_italics = v end) +-- local report_italics = logreporter("mathematics","italics") +-- +-- local italics = { } +-- +-- local function getcorrection(method,font,char) -- -- or character.italic -- (this one is for tex) +-- +-- local visual = chardata[char].visual +-- +-- if method == 1 then +-- -- check on state +-- local italics = fontitalics[font] +-- if italics then +-- local character = fontcharacters[font][char] +-- if character then +-- local correction = character.italic +-- if correction and correction ~= 0 then +-- return correction, visual +-- end +-- end +-- end +-- elseif method == 2 then +-- -- no check +-- local character = fontcharacters[font][char] +-- if character then +-- local correction = character.italic +-- if correction and correction ~= 0 then +-- return correction, visual +-- end +-- end +-- elseif method == 3 then +-- -- check on visual +-- if visual == "it" or visual == "bi" then +-- local character = fontcharacters[font][char] +-- if character then +-- local correction = character.italic +-- if correction and correction ~= 0 then +-- return correction, visual +-- end +-- end +-- end +-- elseif method == 4 then +-- -- combination of 1 and 3 +-- local italics = fontitalics[font] +-- if italics and (visual == "it" or visual == "bi") then +-- local character = fontcharacters[font][char] +-- if character then +-- local correction = character.italic +-- if correction and correction ~= 0 then +-- return correction, visual +-- end +-- end +-- end +-- end +-- +-- end +-- +-- -- basically the engine should set it +-- +-- italics[mathchar_code] = function(pointer,what,n,parent) +-- local method = getattr(pointer,a_mathitalics) +-- if method and method > 0 and method < 100 then +-- local char, font = getcharspec(pointer) +-- local correction, visual = getcorrection(method,font,char) +-- if correction and correction ~= 0 then +-- local next_noad = getnext(parent) +-- if not next_noad then +-- if n == 1 then +-- -- only at the outer level .. will become an option (always,endonly,none) +-- if trace_italics then +-- report_italics("method %a, flagging italic correction %p between %C and end math",method,correction,char) +-- end +-- if correction > 0 then +-- correction = correction + 100 +-- else +-- correction = correction - 100 +-- end +-- correction = round(correction) +-- setattr(pointer,a_mathitalics,correction) +-- setattr(parent,a_mathitalics,correction) +-- return -- so no reset later on +-- end +-- end +-- end +-- end +-- setattr(pointer,a_mathitalics,unsetvalue) +-- end +-- +-- function handlers.italics(head,style,penalties) +-- processnoads(head,italics,"italics") +-- end +-- +-- local enable = function() +-- enableaction("math", "noads.handlers.italics") +-- if trace_italics then +-- report_italics("enabling math italics") +-- end +-- -- we enable math (unless already enabled elsewhere) +-- typesetters.italics.enablemath() +-- enable = false +-- end +-- +-- -- best do this only on math mode (less overhead) +-- +-- function mathematics.setitalics(name) +-- if enable then +-- enable() +-- end +-- texsetattribute(a_mathitalics,name and name ~= v_reset and tonumber(name) or unsetvalue) -- maybe also v_none +-- end +-- +-- function mathematics.getitalics(name) +-- if enable then +-- enable() +-- end +-- context(name and name ~= v_reset and tonumber(name) or unsetvalue) +-- end +-- +-- function mathematics.resetitalics() +-- texsetattribute(a_mathitalics,unsetvalue) +-- end +-- +-- implement { +-- name = "initializemathitalics", +-- actions = enable, +-- onlyonce = true, +-- } +-- +-- implement { +-- name = "setmathitalics", +-- actions = mathematics.setitalics, +-- arguments = "string", +-- } +-- +-- implement { +-- name = "getmathitalics", +-- actions = mathematics.getitalics, +-- arguments = "string", +-- } +-- +-- implement { +-- name = "resetmathitalics", +-- actions = mathematics.resetitalics +-- } +-- +-- end - function handlers.italics(head,style,penalties) - processnoads(head,italics,"italics") - return true -- not needed - end +do local enable = function() - enableaction("math", "noads.handlers.italics") if trace_italics then report_italics("enabling math italics") end @@ -1726,49 +1741,12 @@ do enable = false end - -- best do this only on math mode (less overhead) - - function mathematics.setitalics(name) - if enable then - enable() - end - texsetattribute(a_mathitalics,name and name ~= v_reset and tonumber(name) or unsetvalue) -- maybe also v_none - end - - function mathematics.getitalics(name) - if enable then - enable() - end - context(name and name ~= v_reset and tonumber(name) or unsetvalue) - end - - function mathematics.resetitalics() - texsetattribute(a_mathitalics,unsetvalue) - end - implement { name = "initializemathitalics", actions = enable, onlyonce = true, } - implement { - name = "setmathitalics", - actions = mathematics.setitalics, - arguments = "string", - } - - implement { - name = "getmathitalics", - actions = mathematics.getitalics, - arguments = "string", - } - - implement { - name = "resetmathitalics", - actions = mathematics.resetitalics - } - end do @@ -1786,6 +1764,9 @@ do local a_kernpairs = privateattribute("mathkernpairs") local kernpairs = { } + local trace_kernpairs = false registertracker("math.kernpairs", function(v) trace_kernpairs = v end) + local report_kernpairs = logreporter("mathematics","kernpairs") + local function enable() enableaction("math", "noads.handlers.kernpairs") if trace_kernpairs then @@ -1817,10 +1798,10 @@ do if list then local found = list[first] if found then - local next = getnext(parent) - if next and getid(next) == noad_code then - pointer = getnucleus(next) - if pointer then + local next = isnext(parent,noad_code) + if next then +-- pointer = getnucleus(next) +-- if pointer then local second, secondfont = getcharspec(pointer) if secondfont == firstfont then local kern = found[second] @@ -1829,10 +1810,12 @@ do if trace_kernpairs then report_kernpairs("adding %p kerning between %C and %C",kern,first,second) end - setlink(parent,new_kern(kern),getnext(parent)) -- todo: attr + kern = new_kern(kern) + setlink(parent,kern,getnext(parent)) + setattrlist(kern,pointer) end end - end +-- end end end end @@ -1843,11 +1826,164 @@ do if use_math_goodies then processnoads(head,kernpairs,"kernpairs") end - return true -- not needed end end +do + + local a_numbers = privateattribute("mathnumbers") + local a_spacing = privateattribute("mathspacing") + + local numbers = { } + local spacing = { } + + local separators = { + [0x2E] = { 0x2E, 0x2C, 0x002E, 0x002C, 0x2008, 0x2008 }, -- . -- punctuationspace + [0x2C] = { 0x2C, 0x2E, 0x2008, 0x2008, 0x002E, 0x002C }, -- , + } + + local digits = { + [0x30] = true, [0x31] = true, + [0x32] = true, [0x33] = true, + [0x34] = true, [0x35] = true, + [0x36] = true, [0x37] = true, + [0x38] = true, [0x39] = true, + } + + local snoloc = { + [punctuation_class] = 0x003A, + [relation_class] = 0x2236, + } + + local colons = { + [0x003A] = snoloc, + [0x2236] = snoloc, + } + + local followedbyspace_code = tex.noadoptioncodes.followedbyspace + + local function followedbyspace(n) + return getoptions(n) & followedbyspace_code == followedbyspace_code + end + + numbers[mathchar_code] = function(pointer,what,n,parent) + local alternative = getattr(pointer,a_numbers) + if alternative then + local oldchar = getcharspec(pointer) + local found = separators[oldchar] + if found then + local prev, next = isboth(parent,noad_code) + if prev and next then + -- local lc = getcharspec(getnucleus(prev)) + local lc = getcharspec(prev) + if digits[lc] then + -- local rc = getcharspec(getnucleus(next)) + local rc = getcharspec(next) + if digits[rc] then + local newchar = found[alternative] + local class = followedbyspace(parent) and punctuation_class or ordinary_class + setsubtype(parent,class) + if newchar ~= oldchar then + setchar(pointer,newchar) + end + -- if trace_numbers then + -- report_numbers("digit separator digit") + -- end + end + end + end + return + end + found = digits[oldchar] + if found then + if followedbyspace(parent) then + local next = isnext(parent,noad_code) + if next then + -- local rc = getcharspec(getnucleus(next)) + local rc = getcharspec(next) + if rc and digits[rc] then + local n = new_noad(numbergroup_class) + local s = new_submlist() + setnucleus(n,s) + setattrlist(n,pointer) + setattrlist(s,pointer) + setlink(parent,n,next) + -- if trace_numbers then + -- report_numbers("digit spacer digit") + -- end + end + end + end + return + end + end + end + + spacing[mathchar_code] = function(pointer,what,n,parent) + if getattr(pointer,a_spacing) then + local oldchar = getcharspec(pointer) + local found = colons[oldchar] + if found then + local prev = isprev(parent,noad_code) + if prev then + local class = followedbyspace(prev) and relation_class or punctuation_class + local newchar = found[class] + setsubtype(parent,class) + if newchar ~= oldchar then + setchar(pointer,newchar) + end + -- if trace_spacing then + -- report_spacinf("spacer colon") + -- end + end + return + end + end + end + + -- numbers + + function handlers.numbers(head,style,penalties) + processnoads(head,numbers,"numbers") + end + + local enable = function() + enableaction("math", "noads.handlers.numbers") + -- if trace_numbers then + -- report_numbers("enabling math numbers") + -- end + enable = false + end + + implement { + name = "initializemathnumbers", + actions = enable, + onlyonce = true, + } + + -- spacing + + function handlers.spacing(head,style,penalties) + processnoads(head,spacing,"spacing") + end + + local enable = function() + enableaction("math", "noads.handlers.spacing") + -- if trace_numbers then + -- report_spacing("enabling math spacinf") + -- end + enable = false + end + + implement { + name = "initializemathspacing", + actions = enable, + onlyonce = true, + } + +end + -- primes and such do @@ -1858,28 +1994,21 @@ do local collapse = { } local mathlists = characters.mathlists local validpair = { - [ordinarynoad_code] = true, - [operatornoad_code] = true, - [binarynoad_code] = true, -- new - [relationnoad_code] = true, - [opennoad_code] = true, -- new - [middlenoad_code] = true, -- new - [closenoad_code] = true, -- new - [punctuationnoad_code] = true, -- new - [innernoad_code] = false, - [fencednoad_code] = false, - [undernoad_code] = false, - [overnoad_code] = false, - [vcenternoad_code] = false, - [fractionnoad_code] = true, - [radicalnoad_code] = false, - [accentnoad_code] = true, + [ordinary_class] = true, + [operator_class] = true, + [binary_class] = true, -- new + [relation_class] = true, + [open_class] = true, -- new + [middle_class] = true, -- new + [close_class] = true, -- new + [punctuation_class] = true, -- new + [fraction_class] = true, + [accent_class] = true, } local reported = setmetatableindex("table") collapse[mathchar_code] = function(pointer,what,n,parent) - if parent and mathlists[getchar(pointer)] then local found, last, lucleus, lsup, lsub, category local tree = mathlists @@ -1963,7 +2092,6 @@ do function noads.handlers.collapse(head,style,penalties) processnoads(head,collapse,"collapse") - return true -- not needed end local enable = function() @@ -1975,9 +2103,9 @@ do end implement { - name = "initializemathcollapsing", - actions = enable, - onlyonce = true, + name = "initializemathcollapsing", + actions = enable, + onlyonce = true, } end @@ -2049,7 +2177,6 @@ do function noads.handlers.fixscripts(head,style,penalties) processnoads(head,fixscripts,"fixscripts") - return true -- not needed end end @@ -2062,6 +2189,9 @@ do local chardata = characters.data local a_variant = privateattribute("mathvariant") + local trace_variants = false registertracker("math.variants", function(v) trace_variants = v end) + local report_variants = logreporter("mathematics","variants") + local function setvariant(pointer,selector,char) local tfmdata = fontdata[getfont(pointer)] local mathvariants = tfmdata.resources.variants -- and variantdata / can be a hash @@ -2090,8 +2220,8 @@ do if data then local variants = data.variants if variants then - local next = getnext(parent) - if next and getid(next) == noad_code then + local next = isnext(parent,noad_code) + if next then local nucleus = getnucleus(next) if nucleus and getid(nucleus) == mathchar_code then local selector = getchar(nucleus) @@ -2138,7 +2268,6 @@ do function handlers.variants(head,style,penalties) processnoads(head,variants,"unicode variant") - return true -- not needed end local valid = { @@ -2171,21 +2300,13 @@ do local classes = { } local colors = { - [relationnoad_code] = "trace:dr", - [ordinarynoad_code] = "trace:db", - [binarynoad_code] = "trace:dg", - [opennoad_code] = "trace:dm", - [middlenoad_code] = "trace:dm", - [closenoad_code] = "trace:dm", - [punctuationnoad_code] = "trace:dc", - -- [operatornoad_code] = "", - -- [innernoad_code = "", - -- [fencednoad_code = "", - -- [undernoad_code] = "", - -- [overnoad_code] = "", - -- [vcenternoad_code] = "", - -- [fractionnoad_code] = "", - -- [radicalnoad_code] = "", + [relation_class] = "trace:dr", + [ordinary_class] = "trace:db", + [binary_class] = "trace:dg", + [open_class] = "trace:dm", + [middle_class] = "trace:dm", + [close_class] = "trace:dm", + [punctuation_class] = "trace:dc", } local setcolor = colortracers.set @@ -2202,7 +2323,6 @@ do function handlers.classes(head,style,penalties) processnoads(head,classes,"classes") - return true -- not needed end registertracker("math.classes",function(v) @@ -2414,14 +2534,14 @@ end -- local a_mathdomain = privateattribute("mathdomain") -- mathematics.domains = categories -- local permitted = { --- ordinary = ordinarynoad_code, --- binary = binarynoad_code, --- relation = relationnoad_code, --- punctuation = punctuationnoad_code, +-- ordinary = ordinary_class, +-- binary = binary_class, +-- relation = relation_class, +-- punctuation = punctuation_class, -- inner = innernoad_code, --- fenced = fencednoad_code, --- -- fraction = fractionnoad_code, --- -- radical = radicalnoad_code, +-- fenced = fenced_class, +-- -- fraction = fraction_class, +-- -- radical = radical_class, -- } -- -- function mathematics.registerdomain(data) @@ -2551,7 +2671,6 @@ end -- -- function handlers.domains(head,style,penalties) -- processnoads(head,domains,"domains") --- return true -- not needed -- end -- -- end @@ -2672,9 +2791,9 @@ do local suspicious = { } noads.processors.suspicious = suspicious local candidates = { - [mathematics.classes.maybeordinary] = "maybeordinary", - [mathematics.classes.mayberelation] = "mayberelation", - [mathematics.classes.maybebinary ] = "maybebinary", + [classes.maybeordinary] = "maybeordinary", + [classes.mayberelation] = "mayberelation", + [classes.maybebinary ] = "maybebinary", } local registered = setmetatableindex("table") diff --git a/tex/context/base/mkxl/math-rad.mklx b/tex/context/base/mkxl/math-rad.mklx index caa58b9d0..04d6bfbba 100644 --- a/tex/context/base/mkxl/math-rad.mklx +++ b/tex/context/base/mkxl/math-rad.mklx @@ -337,23 +337,28 @@ % % \dorecurse{8}{$\mathhat{\blackrule[width=#1ex,color=gray]}$ } +% \annuity {(x+1)} \Uchar"20E7 + +\integerdef\delimitedleftanutityuc \privatecharactercode{delimited left annuity} +\integerdef\delimitedrightanutityuc \privatecharactercode{delimited right annuity} + \definemathradical [rannuity] [\c!left=\zerocount, - \c!right="20E7, + \c!right=\delimitedrightanutityuc, \c!rightmargin=.05\emwidth] \definemathradical [lannuity] - [\c!left="FE942, + [\c!left=\delimitedleftanutityuc, \c!right=\zerocount, \c!leftmargin=.05\emwidth, \c!rightmargin=.05\emwidth] \definemathradical [lrannuity] - [\c!left="FE942, - \c!right="20E7, + [\c!left=\delimitedleftanutityuc, + \c!right=\delimitedrightanutityuc, \c!leftmargin=.05\emwidth, \c!rightmargin=.05\emwidth] diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt index a2a0043ac..62b733125 100644 --- a/tex/context/base/mkxl/node-nut.lmt +++ b/tex/context/base/mkxl/node-nut.lmt @@ -89,6 +89,7 @@ local nuts = { getchardict = direct.getchardict, getcharspec = direct.getcharspec, getchoice = direct.getchoice, + getclass = direct.getclass, getdata = direct.getdata, getdegree = direct.getdegree, getdelimiter = direct.getdelimiter, @@ -180,6 +181,9 @@ local nuts = { isprevchar = direct.isprevchar, isprevglyph = direct.isprevglyph, iszeroglue = direct.iszeroglue, + isnext = direct.isnext, + isprev = direct.isprev, + isboth = direct.isboth, kerning = direct.kerning, lastnode = direct.lastnode, length = direct.length, @@ -215,6 +219,7 @@ local nuts = { setchar = direct.setchar, setchardict = direct.setchardict, setchoice = direct.setchoice, + setclass = direct.setclass, setdata = direct.setdata, setdegree = direct.setdegree, setdelimiter = direct.setdelimiter, diff --git a/tex/context/base/mkxl/node-res.lmt b/tex/context/base/mkxl/node-res.lmt index 672f3c5a5..5b7ac3fb5 100644 --- a/tex/context/base/mkxl/node-res.lmt +++ b/tex/context/base/mkxl/node-res.lmt @@ -73,6 +73,7 @@ local setshift = nuts.setshift local setwidth = nuts.setwidth local setsubtype = nuts.setsubtype local setleader = nuts.setleader +local setclass = nuts.setclass local setdata = nuts.setdata local setruledata = nuts.setruledata @@ -452,11 +453,18 @@ function nutpool.temp() return copy_nut(temp) end -function nutpool.noad() return copy_nut(noad) end +function nutpool.noad(class) + local n = copy_nut(noad) + if class then + setsubtype(n,class) + setclass(n,class,class,class) + end + return n +end + function nutpool.delimiter() return copy_nut(delimiter) end nutpool.delim = nutpool.delimiter function nutpool.fence() return copy_nut(fence) end function nutpool.submlist() return copy_nut(submlist) end -function nutpool.noad() return copy_nut(noad) end function nutpool.fence() return copy_nut(fence) end function nutpool.accent() return copy_nut(accent) end function nutpool.radical() return copy_nut(radical) end diff --git a/tex/context/base/mkxl/node-rul.mkxl b/tex/context/base/mkxl/node-rul.mkxl index ac66d11b3..ec9003f58 100644 --- a/tex/context/base/mkxl/node-rul.mkxl +++ b/tex/context/base/mkxl/node-rul.mkxl @@ -96,10 +96,10 @@ \protected\def\node_rules_direct#1% {\groupedcommand {\dontleavehmode % this should not be needed but it is in \bTD - \node_rules_set{#1} + \node_rules_set{#1}% \barparameter\c!left - } %\ignorespaces}% - {%\removeunwantesspaces + }%\ignorespaces}% + {%\removeunwantedspaces \barparameter\c!right}} \permanent\protected\def\inlinebar[#1]% diff --git a/tex/context/base/mkxl/node-shp.lmt b/tex/context/base/mkxl/node-shp.lmt index 7848c623e..7d73d9390 100644 --- a/tex/context/base/mkxl/node-shp.lmt +++ b/tex/context/base/mkxl/node-shp.lmt @@ -49,17 +49,17 @@ do local report = logs.reporter("shipout") - local trace = false trackers.register("backend", "cleanup", function(v) trace = v end) + local trace = false trackers.register("backend.cleanup", function(v) trace = v end) - local flatten = true -- always true + local flatten = true -- also done as line option local soften = true -- true by default nodes.handlers.cleanuppage = function(head) - local count = 0 + -- local count = 0 local found = 0 local replaced = 0 if flatten then - head, count = flattendiscretionaries(head) + head, count = flattendiscretionaries(head,true) -- nested end if soften then head, found, replaced = softenhyphens(head) -- could have been a lua loop diff --git a/tex/context/base/mkxl/pack-box.mkxl b/tex/context/base/mkxl/pack-box.mkxl index 43f6bfbc7..28c1a42f0 100644 --- a/tex/context/base/mkxl/pack-box.mkxl +++ b/tex/context/base/mkxl/pack-box.mkxl @@ -1150,30 +1150,14 @@ \defineoverlay[#1:\v!background][\overlayanchorbox{#1:\v!background}]% \defineoverlay[#1:\v!foreground][\overlayanchorbox{#1:\v!foreground}]} -\permanent\def\namedboxanchor#1% - {\csname\??boxanchorid#1\endcsname} % no checking - -% \permanent\protected\def\overlayanchorbox#1% -% {\begingroup -% \scratchcounter\csname\??boxanchorbox#1\endcsname -% \ifvoid\scratchcounter\else -% \setbox\scratchbox\hpack \s!source \namedboxanchor{#1}\bgroup -% % \setbox\scratchbox\hpack\bgroup -% \box\scratchcounter -% \egroup -% % \boxsource\scratchbox\namedboxanchor{#1}% -% \wd\scratchbox\overlaywidth -% \ht\scratchbox\overlayheight -% \dp\scratchbox\overlaydepth -% \box\scratchbox -% \fi -% \endgroup} +\permanent\def\namedanchorbox#1% + {\begincsname\??boxanchorid#1\endcsname} % no checking \permanent\protected\def\overlayanchorbox#1% {\begingroup \scratchcounter\csname\??boxanchorbox#1\endcsname \ifvoid\scratchcounter\else - \boxsource\scratchcounter\namedboxanchor{#1}% + \boxsource\scratchcounter\namedanchorbox{#1}% \wd\scratchcounter\d_overlay_width \ht\scratchcounter\d_overlay_height \dp\scratchcounter\d_overlay_depth @@ -1189,20 +1173,24 @@ \scratchcounterone\csname\??boxanchorbox#1\endcsname\relax \scratchxoffset\boxanchorparameter\c!xoffset\relax \scratchyoffset\boxanchorparameter\c!yoffset\relax - \boxtarget\nextbox \namedboxanchor {#1}\relax + \boxtarget\nextbox \namedanchorbox {#1}\relax \boxanchors\nextbox % target - \ifcsname\??boxpreset\boxanchorparameter\c!target\endcsname - \lastnamedcs - \else - \halfwaytotallistanchorcode - \fi + \numexpr + \ifcsname\??boxpreset\boxanchorparameter\c!target\endcsname + \lastnamedcs + \else + \halfwaytotallistanchorcode + \fi + \relax % source - \ifcsname\??boxpreset\boxanchorparameter\c!source\endcsname - \lastnamedcs - \else - \halfwaytotallistanchorcode - \fi + \numexpr + \ifcsname\??boxpreset\boxanchorparameter\c!source\endcsname + \lastnamedcs + \else + \halfwaytotallistanchorcode + \fi + \relax \ifdim\scratchxoffset=\zeropoint\else \boxxoffset\nextbox\scratchxoffset \fi diff --git a/tex/context/base/mkxl/task-ini.lmt b/tex/context/base/mkxl/task-ini.lmt index 0cb473651..862192c83 100644 --- a/tex/context/base/mkxl/task-ini.lmt +++ b/tex/context/base/mkxl/task-ini.lmt @@ -98,6 +98,8 @@ appendaction("shipouts", "wrapup", "nodes.handlers.export", appendaction("shipouts", "wrapup", "luatex.synctex.collect", nil, "nut", "disabled" ) appendaction("math", "normalizers", "noads.handlers.showtree", nil, "nonut", "disabled" ) +appendaction("math", "normalizers", "noads.handlers.numbers", nil, "nonut", "disabled" ) +appendaction("math", "normalizers", "noads.handlers.spacing", nil, "nonut", "disabled" ) appendaction("math", "normalizers", "noads.handlers.unscript", nil, "nonut", "enabled" ) appendaction("math", "normalizers", "noads.handlers.unstack", nil, "nonut", "disabled" ) appendaction("math", "normalizers", "noads.handlers.relocate", nil, "nonut", "enabled" ) @@ -112,7 +114,7 @@ appendaction("math", "normalizers", "noads.handlers.resize", ------------("math", "normalizers", "noads.handlers.respace", nil, "nonut", "enabled" ) appendaction("math", "normalizers", "noads.handlers.alternates", nil, "nonut", "enabled" ) appendaction("math", "normalizers", "noads.handlers.tags", nil, "nonut", "disabled" ) -appendaction("math", "normalizers", "noads.handlers.italics", nil, "nonut", "disabled" ) +------------("math", "normalizers", "noads.handlers.italics", nil, "nonut", "disabled" ) -- replaced appendaction("math", "normalizers", "noads.handlers.kernpairs", nil, "nonut", "disabled" ) appendaction("math", "normalizers", "noads.handlers.classes", nil, "nonut", "disabled" ) appendaction("math", "normalizers", "noads.handlers.dictionaries", nil, "nonut", "enabled" ) diff --git a/tex/context/base/mkxl/typo-cap.lmt b/tex/context/base/mkxl/typo-cap.lmt index 4a55c410f..5d7dfdedb 100644 --- a/tex/context/base/mkxl/typo-cap.lmt +++ b/tex/context/base/mkxl/typo-cap.lmt @@ -38,7 +38,7 @@ local copy_node = nuts.copy local endofmath = nuts.endofmath local insertafter = nuts.insertafter local findattribute = nuts.findattribute -local unsetattributes = nuts.unsetattributes +----- unsetattributes = nuts.unsetattributes local nextglyph = nuts.traversers.glyph diff --git a/tex/context/base/mkxl/typo-itc.lmt b/tex/context/base/mkxl/typo-itc.lmt index dd7945eab..f2f6c428e 100644 --- a/tex/context/base/mkxl/typo-itc.lmt +++ b/tex/context/base/mkxl/typo-itc.lmt @@ -6,17 +6,22 @@ if not modules then modules = { } end modules ['typo-itc'] = { license = "see context related readme files" } +-- very old code ... + local tonumber = tonumber local trace_italics = false trackers.register("typesetters.italics", function(v) trace_italics = v end) local report_italics = logs.reporter("nodes","italics") -local threshold = 0.5 trackers.register("typesetters.threshold", function(v) threshold = v == true and 0.5 or tonumber(v) end) +local threshold = 0.5 directives.register("typesetters.italics.threshold", function(v) threshold = v == true and 0.5 or tonumber(v) end) typesetters.italics = typesetters.italics or { } local italics = typesetters.italics +local variables = interfaces.variables +local settings_to_hash = utilities.parsers.settings_to_hash + local nodecodes = nodes.nodecodes local glyph_code = nodecodes.glyph local kern_code = nodecodes.kern @@ -120,11 +125,11 @@ end -- todo: clear attribute local function correction_okay(n) - return not (getoptions(n) & no_correction_code) + return not (getoptions(n) & no_correction_code == no_correction_code) end local function okay(data,current,font,prevchar,previtalic,char,what) - if getoptions(current) & no_correction_code then + if getoptions(current) & no_correction_code == no_correction_code then if trace_italics then report_italics("ignoring %p between %s italic %C and italic %C, %s",previtalic,what,prevchar,char,"disabled") end @@ -203,7 +208,8 @@ local function domath(head,current) local char, id = isglyph(next) if char and correction_okay(next) then -- we can have an old font where italic correction has been applied - -- or a new one where it hasn't been done + -- or a new one where it hasn't been done ... actually, we now always + -- have one under detailed engine control local kern = getprev(current) if kern and getid(kern) == kern_code then local glyph = getprev(kern) @@ -212,12 +218,7 @@ local function domath(head,current) -- punctuation if is_punctuation[char] then local a = getattr(glyph,a_mathitalics) - if a and (a < 100 or a > 100) then - if a > 100 then - a = a - 100 - else - a = a + 100 - end + if a then local i = getkern(kern) local c, f = isglyph(glyph) if getheight(next) < 1.25*exheights[f] then @@ -231,45 +232,45 @@ local function domath(head,current) end setkern(kern,0) -- or maybe a small value or half the ic end - elseif i == 0 then - local d = chardata[f][c] - local i = d.italic - if i == 0 then - if trace_italics then - report_italics("%s italic %p between math %C and punctuation %C","ignoring",i,c,char) - end - else - setkern(kern,i) - if trace_italics then - report_italics("%s italic %p between math %C and punctuation %C","setting",i,c,char) - end - end + -- elseif i == 0 then + -- local d = chardata[f][c] + -- local i = d.italic + -- if i == 0 then + -- if trace_italics then + -- report_italics("%s italic %p between math %C and punctuation %C","ignoring",i,c,char) + -- end + -- else + -- setkern(kern,i) + -- if trace_italics then + -- report_italics("%s italic %p between math %C and punctuation %C","setting",i,c,char) + -- end + -- end elseif trace_italics then report_italics("%s italic %p between math %C and punctuation %C","keeping",k,c,char) end end end end - else - local glyph = kern - if glyph and getid(glyph) == glyph_code then - -- [math: ] : we add the correction when we have - -- no punctuation - if not is_punctuation[char] then - local a = getattr(glyph,a_mathitalics) - if a and (a < 100 or a > 100) then - if a > 100 then - a = a - 100 - else - a = a + 100 - end - if trace_italics then - report_italics("%s italic %p between math %C and non punctuation %C","adding",a,getchar(glyph),char) - end - insertnodeafter(head,glyph,correction_kern(a,glyph)) - end - end - end + -- else + -- local glyph = kern + -- if glyph and getid(glyph) == glyph_code then + -- -- [math: ] : we add the correction when we have + -- -- no punctuation + -- if not is_punctuation[char] then + -- local a = getattr(glyph,a_mathitalics) + -- if a and (a < 100 or a > 100) then + -- if a > 100 then + -- a = a - 100 + -- else + -- a = a + 100 + -- end + -- if trace_italics then + -- report_italics("%s italic %p between math %C and non punctuation %C","adding",a,getchar(glyph),char) + -- end + -- insertnodeafter(head,glyph,correction_kern(a,glyph)) + -- end + -- end + -- end end end end @@ -668,9 +669,6 @@ implement { actions = italics.reset, } -local variables = interfaces.variables -local settings_to_hash = utilities.parsers.settings_to_hash - local function setupitaliccorrection(option) -- no grouping ! if enabletext then enabletext() diff --git a/tex/context/base/mkxl/typo-rub.lmt b/tex/context/base/mkxl/typo-rub.lmt index f5bba7f7f..0de0221ef 100644 --- a/tex/context/base/mkxl/typo-rub.lmt +++ b/tex/context/base/mkxl/typo-rub.lmt @@ -73,6 +73,8 @@ local new_kern = nodepool.kern local setprop = nuts.setprop local getprop = nuts.getprop +local findattribute = nuts.findattribute + local enableaction = nodes.tasks.enableaction local nofrubies = 0 @@ -86,6 +88,12 @@ typesetters.rubies = rubies local trace_rubies = false trackers.register("typesetters.rubies",function(v) trace_rubies = v end) local report_rubies = logs.reporter("rubies") +-- todo: use the more modern lmtx storage model + +local registervalue = attributes.registervalue +local getvalue = attributes.getvalue +local texsetattribute = tex.setattribute + do local shared = nil @@ -177,8 +185,9 @@ do start = false, stop = false, } - rubylist[nofrubies] = setmetatableindex(t, shared) - texsetattribute(a_ruby,nofrubies) + -- rubylist[nofrubies] = setmetatableindex(t,shared) + -- texsetattribute(a_ruby,nofrubies) + texsetattribute(a_ruby,registervalue(a_ruby,setmetatableindex(t,shared))) end implement { @@ -189,51 +198,156 @@ do end +-- function rubies.check(head) +-- local current = head +-- local start = nil +-- local stop = nil +-- local found = nil +-- +-- local function flush(where) +-- local r = rubylist[found] +-- if r then +-- local prev = getprev(start) +-- local next = getnext(stop) +-- setprev(start) +-- setnext(stop) +-- local h = hpack(start) +-- if start == head then +-- head = h +-- else +-- setlink(prev,h) +-- end +-- setlink(h,next) +-- local bwidth = getwidth(h) +-- local rwidth = r.width +-- r.basewidth = bwidth +-- r.start = start +-- r.stop = stop +-- setprop(h,"ruby",found) +-- if rwidth > bwidth then +-- -- ruby is wider +-- setwidth(h,rwidth) +-- end +-- end +-- end +-- +-- while current do +-- local nx = getnext(current) +-- local id = getid(current) +-- if id == glyph_code then +-- local a = getattr(current,a_ruby) +-- if not a then +-- if found then +-- flush("flush 1") +-- found = nil +-- end +-- elseif a == found then +-- stop = current +-- else +-- if found then +-- flush("flush 2") +-- end +-- found = a +-- start = current +-- stop = current +-- end +-- -- go on +-- elseif id == kern_code and getsubtype(current,fontkern_code) then +-- -- go on +-- elseif found and id == disc_code then +-- -- go on (todo: look into disc) +-- elseif found then +-- flush("flush 3") +-- found = nil +-- end +-- current = nx +-- end +-- +-- if found then +-- flush("flush 4") +-- end +-- return head, true -- no need for true +-- end + function rubies.check(head) - local current = head - local start = nil - local stop = nil - local found = nil - - local function flush(where) - local r = rubylist[found] - if r then - local prev = getprev(start) - local next = getnext(stop) - setprev(start) - setnext(stop) - local h = hpack(start) - if start == head then - head = h - else - setlink(prev,h) - end - setlink(h,next) - local bwidth = getwidth(h) - local rwidth = r.width - r.basewidth = bwidth - r.start = start - r.stop = stop - setprop(h,"ruby",found) - if rwidth > bwidth then - -- ruby is wider - setwidth(h,rwidth) + local _, current = findattribute(head,a_ruby) + if current then + + local start = nil + local stop = nil + local found = nil + + local function flush(where) +-- local r = rubylist[found] +local r = getvalue(a_ruby,found) + if r then + -- can be an option + while start ~= stop and getid(start) == glue_code do + start = getnext(start) + end + while stop ~= start and getid(stop) == glue_code do + stop = getprev(stop) + end + -- + local prev = getprev(start) + local next = getnext(stop) + setprev(start) + setnext(stop) + local h = hpack(start) + if start == head then + head = h + else + setlink(prev,h) + end + setlink(h,next) + local bwidth = getwidth(h) + local rwidth = r.width + r.basewidth = bwidth + r.start = start + r.stop = stop + setprop(h,"ruby",found) + if rwidth > bwidth then + -- ruby is wider + setwidth(h,rwidth) + end end end - end - while current do - local nx = getnext(current) - local id = getid(current) - if id == glyph_code then +-- while current do +-- local nx = getnext(current) +-- local a = getattr(current,a_ruby) +-- if not a then +-- if found then +-- flush("flush 1") +-- found = nil +-- end +-- elseif a == found then +-- stop = current +-- else +-- if found then +-- flush("flush 2") +-- end +-- found = a +-- start = current +-- stop = current +-- end +-- current = nx +-- end + + -- todo: we can avoid a lookup + + while current do + local nx = getnext(current) local a = getattr(current,a_ruby) if not a then if found then flush("flush 1") found = nil end +_, current = findattribute(nx,a_ruby) elseif a == found then stop = current +current = nx else if found then flush("flush 2") @@ -241,30 +355,26 @@ function rubies.check(head) found = a start = current stop = current +current = nx end - -- go on - elseif id == kern_code and getsubtype(current,fontkern_code) then - -- go on - elseif found and id == disc_code then - -- go on (todo: look into disc) - elseif found then - flush("flush 3") - found = nil end - current = nx + end + if found then flush("flush 4") end return head, true -- no need for true end + local attach local function whatever(current,list) local a = getprop(current,"ruby") if a then - local ruby = rubylist[a] +-- local ruby = rubylist[a] +local ruby = getvalue(a_ruby,a) local align = ruby.align or v_middle local stretch = ruby.stretch or v_no local hoffset = ruby.hoffset or 0 @@ -358,7 +468,7 @@ local function whatever(current,list) setlist(current,text) end setprop(current,"ruby",false) - rubylist[a] = nil +-- rubylist[a] = nil elseif list then attach(list) end diff --git a/tex/context/fonts/mkiv/pagella-math.lfg b/tex/context/fonts/mkiv/pagella-math.lfg index 9be98adcf..021bd2b7f 100644 --- a/tex/context/fonts/mkiv/pagella-math.lfg +++ b/tex/context/fonts/mkiv/pagella-math.lfg @@ -261,6 +261,18 @@ return { tweak = "addfourier", variant = 1, }, + +{ + tweak = "kernpairs", + list = { + -- beware: we kept the italic correction in spite of punctuation class + [0x1D453] = { -- f + [0x3A] = -.1, + [0x3B] = -.1, + }, + }, +}, + }, }, bigslots = { diff --git a/tex/context/interface/mkii/keys-de.xml b/tex/context/interface/mkii/keys-de.xml index 2ff113ecd..51785d147 100644 --- a/tex/context/interface/mkii/keys-de.xml +++ b/tex/context/interface/mkii/keys-de.xml @@ -96,7 +96,6 @@ - @@ -686,6 +685,9 @@ + + + @@ -876,6 +878,7 @@ + @@ -956,6 +959,7 @@ + @@ -1014,6 +1018,7 @@ + @@ -1060,6 +1065,8 @@ + + @@ -1070,6 +1077,7 @@ + @@ -1123,6 +1131,7 @@ + @@ -1176,6 +1185,7 @@ + diff --git a/tex/context/interface/mkii/keys-it.xml b/tex/context/interface/mkii/keys-it.xml index eedcdaa82..08686da99 100644 --- a/tex/context/interface/mkii/keys-it.xml +++ b/tex/context/interface/mkii/keys-it.xml @@ -96,7 +96,6 @@ - @@ -686,6 +685,9 @@ + + + diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml index 78255c1cc..360ec0f64 100644 --- a/tex/context/interface/mkii/keys-ro.xml +++ b/tex/context/interface/mkii/keys-ro.xml @@ -96,7 +96,6 @@ - @@ -686,6 +685,9 @@ + + + diff --git a/tex/context/modules/mkiv/s-abbreviations-logos.tex b/tex/context/modules/mkiv/s-abbreviations-logos.tex index dfac57f0a..ab2b98a56 100644 --- a/tex/context/modules/mkiv/s-abbreviations-logos.tex +++ b/tex/context/modules/mkiv/s-abbreviations-logos.tex @@ -42,6 +42,7 @@ \logo [ANSI] {ansi} \logo [APA] {apa} \logo [API] {api} +\logo [APL] {apl} \logo [ARABTEX] {Arab\TeXsuffix} \logo [ARM] {arm} \logo [ASCII] {ascii} diff --git a/tex/context/modules/mkxl/m-gimmicks.mkxl b/tex/context/modules/mkxl/m-gimmicks.mkxl index e2659ae99..bdf044488 100644 --- a/tex/context/modules/mkxl/m-gimmicks.mkxl +++ b/tex/context/modules/mkxl/m-gimmicks.mkxl @@ -1,6 +1,6 @@ %D \module %D [ file=m-gimmicks, -%D version=2022.07.25 +%D version=2022.08.25 %D title=\CONTEXT\ Extra Modules, %D subtitle=Whatever comes up, %D author=Hans Hagen, @@ -41,13 +41,13 @@ % Question on mailing list: -\chardef\MacAnulty = \getprivateglyphslot{MacAnulty} +\chardef\MacAnulty = \privatecharactercode{MacAnulty} -\startsetups [box:demo:\number\MacAnulty] +\startsetups [box:mcanulty:\number\MacAnulty] \Mac Anulty \stopsetups -\registerboxglyph category {demo} unicode \MacAnulty \relax +\registerboxglyph category {mcanulty} unicode \MacAnulty \relax \startluacode fonts.handlers.otf.addfeature { @@ -55,13 +55,17 @@ type = "ligature", nocheck = true, data = { - -- [\number\MacAnulty] = { "M", "c", "A", "n", "u", "l", "t", "y", }, - [fonts.constructors.privateslots.MacAnulty] = { "M", "c", "A", "n", "u", "l", "t", "y", }, + -- [\number\MacAnulty] = { + -- [fonts.constructors.privateslots.MacAnulty] = { + [fonts.helpers.privateslot("MacAnulty")] = { + "M", "c", "A", "n", "u", "l", "t", "y", + }, } } \stopluacode -\definefontfeature[whatever][default][box=demo,mcanulty=yes] +\definefontfeature[whatever][default][box=mcanulty,mcanulty=yes] +\definefontfeature[default][default][box=mcanulty,mcanulty=yes] \startTEXpage [offset=10dk] % \def\Test#1{% @@ -83,7 +87,10 @@ % \def\MacKern {-.1} % \Mac Anulty -\definedfont[Serif*whatever] McAnulty\quad \MacAnulty\par -\definedfont[SerifBold*whatever] McAnulty\quad \MacAnulty\par +{\definedfont[Serif*whatever] McAnulty\quad \MacAnulty\par} +{\definedfont[SerifBold*whatever] McAnulty\quad \MacAnulty\par} + +{\tf McAnulty\quad \MacAnulty\par} +{\bf McAnulty\quad \MacAnulty\par} \stopTEXpage diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 0c0f32e66..1b464f549 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2022-08-25 19:18 +-- merge date : 2022-09-10 02:42 do -- begin closure to overcome local limits and interference -- cgit v1.2.3