summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2022-08-25 17:57:42 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2022-08-25 17:57:42 +0200
commita389a16197fed7803672a8e16fd31d634725d49a (patch)
treeff79e88e68f213d0a226f57caa23809e720d3c5c
parent178de9556e3cb519672f9b54db7b5b29eec43c69 (diff)
downloadcontext-a389a16197fed7803672a8e16fd31d634725d49a.tar.gz
2022-08-25 17:40:00
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua4
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-interfaces.lua2
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua4
-rw-r--r--context/data/scite/context/scite-context-data-context.properties124
-rw-r--r--context/data/scite/context/scite-context-data-interfaces.properties1282
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties233
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex8
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-math.tex48
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex204
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex40
-rw-r--r--doc/context/sources/general/manuals/luametatex/luametatex.tex4
-rw-r--r--doc/context/sources/general/manuals/luatex/luatex-modifications.tex2
-rw-r--r--doc/context/sources/general/manuals/math/math-fun.tex6
-rw-r--r--metapost/context/base/mpxl/mp-tool.mpxl8
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/lang-grk.mkii7
-rw-r--r--tex/context/base/mkii/mult-nl.mkii8
-rw-r--r--tex/context/base/mkiv/char-def.lua225
-rw-r--r--tex/context/base/mkiv/char-ini.lua1
-rw-r--r--tex/context/base/mkiv/cldf-ver.lua4
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/data-tex.lua5
-rw-r--r--tex/context/base/mkiv/font-cff.lua122
-rw-r--r--tex/context/base/mkiv/meta-imp-mat.mkiv16
-rw-r--r--tex/context/base/mkiv/mult-low.lua5
-rw-r--r--tex/context/base/mkiv/mult-prm.lua9
-rw-r--r--tex/context/base/mkiv/mult-prm.mkiv2
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24626 -> 24620 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin259165 -> 259919 bytes
-rw-r--r--tex/context/base/mkiv/util-rnd.lua116
-rw-r--r--tex/context/base/mkxl/char-prv.lmt251
-rw-r--r--tex/context/base/mkxl/char-tex.lmt36
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl8
-rw-r--r--tex/context/base/mkxl/file-mod.mklx9
-rw-r--r--tex/context/base/mkxl/font-col.lmt108
-rw-r--r--tex/context/base/mkxl/font-con.lmt4
-rw-r--r--tex/context/base/mkxl/font-imp-checks.lmt40
-rw-r--r--tex/context/base/mkxl/font-imp-scripts.lmt10
-rw-r--r--tex/context/base/mkxl/font-lib.mklx1
-rw-r--r--tex/context/base/mkxl/font-mps.lmt3
-rw-r--r--tex/context/base/mkxl/font-ots.lmt18
-rw-r--r--tex/context/base/mkxl/font-pre.mkxl10
-rw-r--r--tex/context/base/mkxl/font-tex.lmt58
-rw-r--r--tex/context/base/mkxl/font-tpk.lmt16
-rw-r--r--tex/context/base/mkxl/lang-ini.mkxl16
-rw-r--r--tex/context/base/mkxl/lpdf-lmt.lmt2
-rw-r--r--tex/context/base/mkxl/luat-cod.lmt5
-rw-r--r--tex/context/base/mkxl/math-acc.mklx101
-rw-r--r--tex/context/base/mkxl/math-act.lmt734
-rw-r--r--tex/context/base/mkxl/math-def.mkxl10
-rw-r--r--tex/context/base/mkxl/math-del.mklx87
-rw-r--r--tex/context/base/mkxl/math-fbk.lmt410
-rw-r--r--tex/context/base/mkxl/math-fen.mkxl389
-rw-r--r--tex/context/base/mkxl/math-fnt.lmt11
-rw-r--r--tex/context/base/mkxl/math-frc.mkxl141
-rw-r--r--tex/context/base/mkxl/math-ini.lmt142
-rw-r--r--tex/context/base/mkxl/math-ini.mkxl151
-rw-r--r--tex/context/base/mkxl/math-int.mkxl2
-rw-r--r--tex/context/base/mkxl/math-lop.mkxl7
-rw-r--r--tex/context/base/mkxl/math-noa.lmt818
-rw-r--r--tex/context/base/mkxl/math-rad.mklx49
-rw-r--r--tex/context/base/mkxl/math-spa.lmt4
-rw-r--r--tex/context/base/mkxl/math-stc.mklx97
-rw-r--r--tex/context/base/mkxl/math-tag.lmt76
-rw-r--r--tex/context/base/mkxl/mult-prm.mkxl2
-rw-r--r--tex/context/base/mkxl/node-ini.lmt4
-rw-r--r--tex/context/base/mkxl/node-nut.lmt80
-rw-r--r--tex/context/base/mkxl/node-ser.lmt8
-rw-r--r--tex/context/base/mkxl/phys-dim.mkxl17
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl10
-rw-r--r--tex/context/base/mkxl/syst-ini.mkxl21
-rw-r--r--tex/context/base/mkxl/tabl-ntb.mkxl309
-rw-r--r--tex/context/base/mkxl/task-ini.lmt3
-rw-r--r--tex/context/base/mkxl/typo-lin.lmt8
-rw-r--r--tex/context/fonts/mkiv/asana-math.lfg4
-rw-r--r--tex/context/fonts/mkiv/bonum-math.lfg102
-rw-r--r--tex/context/fonts/mkiv/cambria-math.lfg80
-rw-r--r--tex/context/fonts/mkiv/concrete-math.lfg33
-rw-r--r--tex/context/fonts/mkiv/dejavu-math.lfg66
-rw-r--r--tex/context/fonts/mkiv/erewhon-math.lfg6
-rw-r--r--tex/context/fonts/mkiv/garamond-math.lfg111
-rw-r--r--tex/context/fonts/mkiv/generic-math.lfg128
-rw-r--r--tex/context/fonts/mkiv/kpfonts-math.lfg14
-rw-r--r--tex/context/fonts/mkiv/libertinus-math.lfg112
-rw-r--r--tex/context/fonts/mkiv/lm.lfg123
-rw-r--r--tex/context/fonts/mkiv/lucida-opentype-math.lfg85
-rw-r--r--tex/context/fonts/mkiv/pagella-math.lfg126
-rw-r--r--tex/context/fonts/mkiv/schola-math.lfg69
-rw-r--r--tex/context/fonts/mkiv/stix-two-math.lfg97
-rw-r--r--tex/context/fonts/mkiv/termes-math.lfg64
-rw-r--r--tex/context/interface/mkii/keys-nl.xml8
-rw-r--r--tex/context/modules/mkxl/m-gimmicks.mkxl89
-rw-r--r--tex/context/modules/mkxl/m-oldmath.mkxl3
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua119
-rw-r--r--tex/generic/context/luatex/luatex-pdf.tex2
98 files changed, 5614 insertions, 2612 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 9d03c9fff..1b9b127c0 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-context.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua
@@ -1,4 +1,4 @@
return {
- ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "pluseleven", "plustwelve", "plussixteen", "plusfifty", "plushundred", "plusonehundred", "plustwohundred", "plusfivehundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxcount", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "centeringskip", "stretchingskip", "shrinkingskip", "centeringfillskip", "stretchingfillskip", "shrinkingfillskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "binaryshiftedten", "binaryshiftedtwenty", "binaryshiftedthirty", "thickermuskip", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "prerollrun", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "texenginefunctionality", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "contextformat", "contextversion", "contextlmtxmode", "contextmark", "mksuffix", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "statuswrite", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "rlncatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "commaasciicode", "spaceasciicode", "periodasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "leftparentasciicode", "rightparentasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "percentasciicode", "leftbracketasciicode", "rightbracketasciicode", "hsizefrozenparcode", "skipfrozenparcode", "hangfrozenparcode", "indentfrozenparcode", "parfillfrozenparcode", "adjustfrozenparcode", "protrudefrozenparcode", "tolerancefrozenparcode", "stretchfrozenparcode", "loosenessfrozenparcode", "lastlinefrozenparcode", "linepenaltyfrozenparcode", "clubpenaltyfrozenparcode", "widowpenaltyfrozenparcode", "displaypenaltyfrozenparcode", "brokenpenaltyfrozenparcode", "demeritsfrozenparcode", "shapefrozenparcode", "linefrozenparcode", "hyphenationfrozenparcode", "shapingpenaltyfrozenparcode", "orphanpenaltyfrozenparcode", "allfrozenparcode", "mathpenaltyfrozenparcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "alsosimplegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "markautomigrationcode", "insertautomigrationcode", "adjustautomigrationcode", "preautomigrationcode", "postautomigrationcode", "charnodecode", "hlistnodecode", "vlistnodecode", "rulenodecode", "insertnodecode", "marknodecode", "adjustnodecode", "ligaturenodecode", "discretionarynodecode", "whatsitnodecode", "mathnodecode", "gluenodecode", "kernnodecode", "penaltynodecode", "unsetnodecode", "mathsnodecode", "charifcode", "catifcode", "numifcode", "dimifcode", "oddifcode", "vmodeifcode", "hmodeifcode", "mmodeifcode", "innerifcode", "voidifcode", "hboxifcode", "vboxifcode", "xifcode", "eofifcode", "trueifcode", "falseifcode", "caseifcode", "definedifcode", "csnameifcode", "fontcharifcode", "overrulemathcontrolcode", "underrulemathcontrolcode", "radicalrulemathcontrolcode", "fractionrulemathcontrolcode", "accentskewhalfmathcontrolcode", "accentskewapplymathcontrolcode", "applyordinarykernpairmathcontrolcode", "applyverticalitalickernmathcontrolcode", "applyordinaryitalickernmathcontrolcode", "applycharitalickernmathcontrolcode", "reboxcharitalickernmathcontrolcode", "applyboxeditalickernmathcontrolcode", "staircasekernmathcontrolcode", "applytextitalickernmathcontrolcode", "applyscriptitalickernmathcontrolcode", "checkspaceitalickernmathcontrolcode", "checktextitalickernmathcontrolcode", "analyzescriptnucleuscharmathcontrolcode", "analyzescriptnucleuslistmathcontrolcode", "analyzescriptnucleusboxmathcontrolcode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noleftkerningglyphoptioncode", "noleftligaturingglyphoptioncode", "norightkerningglyphoptioncode", "norightligaturingglyphoptioncode", "noitaliccorrectionglyphoptioncode", "normalparcontextcode", "vmodeparcontextcode", "vboxparcontextcode", "vtopparcontextcode", "vcenterparcontextcode", "vadjustparcontextcode", "insertparcontextcode", "outputparcontextcode", "alignparcontextcode", "noalignparcontextcode", "spanparcontextcode", "resetparcontextcode", "leftoriginlistanchorcode", "leftheightlistanchorcode", "leftdepthlistanchorcode", "rightoriginlistanchorcode", "rightheightlistanchorcode", "rightdepthlistanchorcode", "centeroriginlistanchorcode", "centerheightlistanchorcode", "centerdepthlistanchorcode", "halfwaytotallistanchorcode", "halfwayheightlistanchorcode", "halfwaydepthlistanchorcode", "halfwayleftlistanchorcode", "halfwayrightlistanchorcode", "negatexlistsigncode", "negateylistsigncode", "negatelistsigncode", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "mathexheight", "mathemwidth", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathaxisheight", "muquad", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifelsemode", "doifmodeelse", "doifnotmode", "startmodeset", "stopmodeset", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifelseallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "unexpandeddocumentvariable", "setupdocument", "presetdocument", "doifelsedocumentvariable", "doifdocumentvariableelse", "doifdocumentvariable", "doifnotdocumentvariable", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "setupmodule", "currentmoduleparameter", "moduleparameter", "everystarttext", "everystoptext", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "definemode", "globalenablemode", "globaldisablemode", "globalpreventmode", "pushmode", "popmode", "typescriptone", "typescripttwo", "typescriptthree", "mathsizesuffix", "mathordinarycode", "mathordcode", "mathoperatorcode", "mathopcode", "mathbinarycode", "mathbincode", "mathrelationcode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctuationcode", "mathpunctcode", "mathovercode", "mathundercode", "mathinnercode", "mathradicalcode", "mathfractioncode", "mathmiddlecode", "mathaccentcode", "mathfencedcode", "mathghostcode", "mathvariablecode", "mathactivecode", "mathvcentercode", "mathconstructcode", "mathwrappedcode", "mathbegincode", "mathendcode", "mathexplicitcode", "mathdivisioncode", "mathfactorialcode", "mathdimensioncode", "mathexperimentalcode", "mathtextpunctuationcode", "mathimaginarycode", "mathdifferentialcode", "mathexponentialcode", "mathellipsiscode", "mathfunctioncode", "mathdigitcode", "mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "luastringsep", "!!bs", "!!es", "lefttorightmark", "righttoleftmark", "lrm", "rlm", "bidilre", "bidirle", "bidipop", "bidilro", "bidirlo", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "enquad", "emquad", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar", "softhyphen", "Ux", "eUx", "Umathaccents", "parfillleftskip", "parfillrightskip", "startlmtxmode", "stoplmtxmode", "startmkivmode", "stopmkivmode", "wildcardsymbol", "normalhyphenationcode", "automatichyphenationcode", "explicithyphenationcode", "syllablehyphenationcode", "uppercasehyphenationcode", "collapsehyphenationcode", "compoundhyphenationcode", "strictstarthyphenationcode", "strictendhyphenationcode", "automaticpenaltyhyphenationcode", "explicitpenaltyhyphenationcode", "permitgluehyphenationcode", "permitallhyphenationcode", "permitmathreplacehyphenationcode", "forcecheckhyphenationcode", "lazyligatureshyphenationcode", "forcehandlerhyphenationcode", "feedbackcompoundhyphenationcode", "ignoreboundshyphenationcode", "partialhyphenationcode", "completehyphenationcode", "normalizelinenormalizecode", "parindentskipnormalizecode", "swaphangindentnormalizecode", "swapparsshapenormalizecode", "breakafterdirnormalizecode", "removemarginkernsnormalizecode", "clipwidthnormalizecode", "flattendiscretionariesnormalizecode", "discardzerotabskipsnormalizecode", "flattenhleadersnormalizecode", "normalizeparnormalizeparcode", "flattenvleadersnormalizeparcode", "nopreslackclassoptioncode", "nopostslackclassoptioncode", "lefttopkernclassoptioncode", "righttopkernclassoptioncode", "leftbottomkernclassoptioncode", "rightbottomkernclassoptioncode", "lookaheadforendclassoptioncode", "noitaliccorrectionclassoptioncode", "defaultmathclassoptions", "checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode", "flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode", "carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode", "preferdelimiterdimensionsclassoptioncode", "noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode", "noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode", "noexpansionglyphoptioncode", "noprotrusionglyphoptioncode", "noitaliccorrectionglyphoptioncode", "nokerningcode", "noligaturingcode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "ordmathflattencode", "binmathflattencode", "relmathflattencode", "punctmathflattencode", "innermathflattencode", "normalworddiscoptioncode", "preworddiscoptioncode", "postworddiscoptioncode", "continueifinputfile", "continuewhenlmtxmode", "continuewhenmkivmode" },
- ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "startcontextdefinitioncode", "stopcontextdefinitioncode", "texdefinition", "doifelsesetups", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "fastsetup", "copysetups", "resetsetups", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "globalsetmode", "globalresetmode", "globalsetsystemmode", "globalresetsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "autorule", "strippedcsname", "checkedstrippedcsname", "nofarguments", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthargumenttrue", "sixthargumentfalse", "sixthargumenttrue", "seventhargumentfalse", "seventhargumenttrue", "vkern", "hkern", "vpenalty", "hpenalty", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "untraceddonothing", "dontcomplain", "moreboxtracing", "lessboxtracing", "noboxtracing", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "forceinlinemath", "mathortext", "thebox", "htdp", "unvoidbox", "hfilll", "vfilll", "mathbox", "mathlimop", "mathnolop", "mathnothing", "mathalpha", "currentcatcodetable", "defaultcatcodetable", "catcodetablename", "newcatcodetable", "startcatcodetable", "stopcatcodetable", "startextendcatcodetable", "stopextendcatcodetable", "pushcatcodetable", "popcatcodetable", "restorecatcodes", "setcatcodetable", "letcatcodecommand", "defcatcodecommand", "uedcatcodecommand", "hglue", "vglue", "hfillneg", "vfillneg", "hfilllneg", "vfilllneg", "ruledhss", "ruledhfil", "ruledhfill", "ruledhfilll", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "normalhfilllneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilll", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "normalvfilllneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhpack", "ruledvpack", "ruledtpack", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchstring", "scratchstringone", "scratchstringtwo", "tempstring", "scratchcounter", "globalscratchcounter", "privatescratchcounter", "scratchdimen", "globalscratchdimen", "privatescratchdimen", "scratchskip", "globalscratchskip", "privatescratchskip", "scratchmuskip", "globalscratchmuskip", "privatescratchmuskip", "scratchtoks", "globalscratchtoks", "privatescratchtoks", "scratchbox", "globalscratchbox", "privatescratchbox", "scratchmacro", "scratchmacroone", "scratchmacrotwo", "scratchconditiontrue", "scratchconditionfalse", "ifscratchcondition", "scratchconditiononetrue", "scratchconditiononefalse", "ifscratchconditionone", "scratchconditiontwotrue", "scratchconditiontwofalse", "ifscratchconditiontwo", "globalscratchcounterone", "globalscratchcountertwo", "globalscratchcounterthree", "groupedcommand", "groupedcommandcs", "triggergroupedcommand", "triggergroupedcommandcs", "simplegroupedcommand", "simplegroupedcommandcs", "pickupgroupedcommand", "pickupgroupedcommandcs", "mathgroupedcommandcs", "usedbaselineskip", "usedlineskip", "usedlineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "next", "nexttoken", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "flushnextbox", "boxisempty", "boxtostring", "contentostring", "prerolltostring", "givenwidth", "givenheight", "givendepth", "scangivendimensions", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchtotal", "scratchitalic", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchcounterfour", "scratchcounterfive", "scratchcountersix", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchdimenfour", "scratchdimenfive", "scratchdimensix", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchskipfour", "scratchskipfive", "scratchskipsix", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchmuskipfour", "scratchmuskipfive", "scratchmuskipsix", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchtoksfour", "scratchtoksfive", "scratchtokssix", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchboxfour", "scratchboxfive", "scratchboxsix", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchmin", "scratchmax", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "firstinset", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextcharcs", "doifnextcharcselse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "doifelsefastoptionalcheckcs", "doiffastoptionalcheckcselse", "doifelsenextbgroup", "doifnextbgroupelse", "doifelsenextbgroupcs", "doifnextbgroupcselse", "doifelsenextparenthesis", "doifnextparenthesiselse", "doifelseundefined", "doifundefinedelse", "doifelsedefined", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifnothingelse", "doifelsesomething", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifvaluenothingelse", "doifelsedimension", "doifdimensionelse", "doifelsenumber", "doifnumberelse", "doifnumber", "doifnotnumber", "doifelsecommon", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifelseinstring", "doifinstringelse", "doifelseassignment", "doifassignmentelse", "docheckassignment", "doifelseassignmentcs", "doifassignmentelsecs", "validassignment", "novalidassignment", "doiftext", "doifelsetext", "doiftextelse", "doifnottext", "quitcondition", "truecondition", "falsecondition", "tracingall", "tracingnone", "loggingall", "tracingcatcodes", "showluatokens", "aliasmacro", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "emspace", "charspace", "nbsp", "crlf", "obeyspaces", "obeylines", "obeytabs", "obeypages", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "naturalspace", "controlspace", "normalspaces", "ignoretabs", "ignorelines", "ignorepages", "ignoreeofs", "setcontrolspaces", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "removepunctuation", "ignoreparskip", "forcestrutdepth", "onlynonbreakablespace", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "directmeasure", "setquantity", "setequantity", "setgquantity", "setxquantity", "definequantity", "freezequantity", "quantity", "quantitied", "directquantity", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "setexpandeddummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "firstoftwounexpanded", "secondoftwounexpanded", "firstofthreeunexpanded", "secondofthreeunexpanded", "thirdofthreeunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "fastloopindex", "fastloopfinal", "dowith", "doloopovermatch", "doloopovermatched", "doloopoverlist", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "setconditional", "newmacro", "setnewmacro", "newfraction", "newsignal", "newboundary", "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", "dosingleargument", "dodoubleargument", "dotripleargument", "doquadrupleargument", "doquintupleargument", "dosixtupleargument", "doseventupleargument", "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", "permitspacesbetweengroups", "dontpermitspacesbetweengroups", "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", "onlypdfobjectcompression", "nopdfobjectcompression", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "mathclassvalue", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "halflinestrut", "noheightstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "strutgap", "begstrut", "endstrut", "lineheight", "leftboundary", "rightboundary", "signalcharacter", "aligncontentleft", "aligncontentmiddle", "aligncontentright", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "ordfracspacing", "ordradspacing", "ordmiddlespacing", "ordaccentspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "opfracspacing", "opradspacing", "opmiddlespacing", "opaccentspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "binfracspacing", "binradspacing", "binmiddlespacing", "binaccentspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "relfracspacing", "relradspacing", "relmiddlespacing", "relaccentspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "openfracspacing", "openradspacing", "openmiddlespacing", "openaccentspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "closefracspacing", "closeradspacing", "closemiddlespacing", "closeaccentspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "punctfracspacing", "punctradspacing", "punctmiddlespacing", "punctaccentspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "innerfracspacing", "innerradspacing", "innermiddlespacing", "inneraccentspacing", "fracordspacing", "fracopspacing", "fracbinspacing", "fracrelspacing", "fracopenspacing", "fracclosespacing", "fracpunctspacing", "fracinnerspacing", "fracfracspacing", "fracradspacing", "fracmiddlespacing", "fracaccentspacing", "radordspacing", "radopspacing", "radbinspacing", "radrelspacing", "radopenspacing", "radclosespacing", "radpunctspacing", "radinnerspacing", "radfracspacing", "radradspacing", "radmiddlespacing", "radaccentspacing", "middleordspacing", "middleopspacing", "middlebinspacing", "middlerelspacing", "middleopenspacing", "middleclosespacing", "middlepunctspacing", "middleinnerspacing", "middlefracspacing", "middleradspacing", "middlemiddlespacing", "middleaccentspacing", "accentordspacing", "accentopspacing", "accentbinspacing", "accentrelspacing", "accentopenspacing", "accentclosespacing", "accentpunctspacing", "accentinnerspacing", "accentfracspacing", "accentradspacing", "accentmiddlespacing", "accentaccentspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "normalprimescript", "superscript", "subscript", "nosuperscript", "nosubscript", "primescript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "triggeredmathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "pushmathstyle", "popmathstyle", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expelsedoif", "expdoif", "expdoifnot", "expdoifelsecommon", "expdoifcommonelse", "expdoifelseinset", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "ctxluamatch", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "installprotectedctxfunction", "installprotectedctxscanner", "installctxscanner", "resetctxscanner", "cldprocessfile", "cldloadfile", "cldloadviafile", "cldcontext", "cldcommand", "carryoverpar", "freezeparagraphproperties", "defrostparagraphproperties", "setparagraphfreezing", "forgetparagraphfreezing", "updateparagraphproperties", "updateparagraphpenalties", "updateparagraphdemerits", "updateparagraphshapes", "updateparagraphlines", "lastlinewidth", "assumelongusagecs", "Umathbotaccent", "Umathtopaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "lefttoright", "righttoleft", "checkedlefttoright", "checkedrighttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "dirlre", "dirrle", "dirlro", "dirrlo", "rtltext", "ltrtext", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "dohyphencollapsing", "nohyphencollapsing", "compounddiscretionary", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "break", "nobreak", "allowbreak", "goodbreak", "nospace", "nospacing", "dospacing", "naturalhbox", "naturalvbox", "naturalvtop", "naturalhpack", "naturalvpack", "naturaltpack", "reversehbox", "reversevbox", "reversevtop", "reversehpack", "reversevpack", "reversetpack", "hcontainer", "vcontainer", "tcontainer", "frule", "compoundhyphenpenalty", "start", "stop", "unsupportedcs", "openout", "closeout", "write", "openin", "closein", "read", "readline", "readfromterminal", "boxlines", "boxline", "setboxline", "copyboxline", "boxlinewd", "boxlineht", "boxlinedp", "boxlinenw", "boxlinenh", "boxlinend", "boxlinels", "boxliners", "boxlinelh", "boxlinerh", "boxlinelp", "boxlinerp", "boxlinein", "boxrangewd", "boxrangeht", "boxrangedp", "bitwiseset", "bitwiseand", "bitwiseor", "bitwisexor", "bitwisenot", "bitwisenil", "ifbitwiseand", "bitwise", "bitwiseshift", "bitwiseflip", "textdir", "linedir", "pardir", "boxdir", "prelistbox", "postlistbox", "prelistcopy", "postlistcopy", "setprelistbox", "setpostlistbox", "noligaturing", "nokerning", "noexpansion", "noprotrusion", "noleftkerning", "noleftligaturing", "norightkerning", "norightligaturing", "noitaliccorrection", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "showboxhere", "discoptioncodestring", "flagcodestring", "frozenparcodestring", "glyphoptioncodestring", "groupcodestring", "hyphenationcodestring", "mathcontrolcodestring", "mathflattencodestring", "normalizecodestring", "parcontextcodestring", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox", "ifexpression" },
+ ["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" },
+ ["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-interfaces.lua b/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua
index f4ee3c8df..4f483b492 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua
@@ -1,4 +1,4 @@
return {
- ["common"]={ "AEacute", "AEligature", "AEmacron", "AMSTEX", "Aacute", "Abreve", "Abreveacute", "Abrevedotbelow", "Abrevegrave", "Abrevehook", "Abrevetilde", "Acaron", "Acircumflex", "Acircumflexacute", "Acircumflexdotbelow", "Acircumflexgrave", "Acircumflexhook", "Acircumflextilde", "Adiaeresis", "Adiaeresismacron", "Adotaccent", "Adotaccentmacron", "Adotbelow", "Adoublegrave", "AfterPar", "Agrave", "Ahook", "Ainvertedbreve", "Alpha", "Alphabeticnumerals", "AmSTeX", "Amacron", "And", "Angstrom", "Aogonek", "Aring", "Aringacute", "Arrowvert", "Astroke", "Atilde", "BeforePar", "Beta", "Bhook", "Big", "Bigg", "Biggl", "Biggm", "Biggr", "Bigl", "Bigm", "Bigr", "Box", "Bumpeq", "CONTEXT", "Cacute", "Cap", "Caps", "Ccaron", "Ccedilla", "Ccircumflex", "Cdotaccent", "Character", "Characters", "Chi", "Chook", "ConTeXt", "Context", "ConvertConstantAfter", "ConvertToConstant", "Cstroke", "Cup", "DAYLONG", "DAYSHORT", "DZcaronligature", "DZligature", "Dafrican", "Dcaron", "Dd", "Ddownarrow", "Delta", "Dhook", "Doteq", "Downarrow", "Dstroke", "Dzcaronligature", "Dzligature", "ETEX", "Eacute", "Ebreve", "Ecaron", "Ecedilla", "Ecircumflex", "Ecircumflexacute", "Ecircumflexdotbelow", "Ecircumflexgrave", "Ecircumflexhook", "Ecircumflextilde", "Ediaeresis", "Edotaccent", "Edotbelow", "Edoublegrave", "Egrave", "Ehook", "Einvertedbreve", "Emacron", "Eogonek", "Epsilon", "Eta", "Eth", "Etilde", "Eulerconst", "EveryLine", "EveryPar", "Fhook", "Finv", "Gacute", "Game", "Gamma", "Gbreve", "Gcaron", "Gcircumflex", "Gcommaaccent", "Gdotaccent", "GetPar", "Ghook", "GotoPar", "Greeknumerals", "Gstroke", "Hat", "Hcaron", "Hcircumflex", "Hstroke", "IJligature", "INRSTEX", "Iacute", "Ibreve", "Icaron", "Icircumflex", "Idiaeresis", "Idotaccent", "Idotbelow", "Idoublegrave", "Igrave", "Ihook", "Iinvertedbreve", "Im", "Imacron", "Iogonek", "Iota", "Istroke", "Itilde", "Jcircumflex", "Join", "Kappa", "Kcaron", "Kcommaaccent", "Khook", "LAMSTEX", "LATEX", "LJligature", "LUAJITTEX", "LUAMETATEX", "LUATEX", "LaTeX", "Lacute", "LamSTeX", "Lambda", "Lbar", "Lcaron", "Lcommaaccent", "Ldotmiddle", "Ldsh", "Leftarrow", "Leftrightarrow", "Ljligature", "Lleftarrow", "Longleftarrow", "Longleftrightarrow", "Longmapsfrom", "Longmapsto", "Longrightarrow", "Lsh", "Lstroke", "Lua", "LuaMetaTeX", "LuaTeX", "LuajitTeX", "METAFONT", "METAFUN", "METAPOST", "MKII", "MKIV", "MKIX", "MKLX", "MKVI", "MKXI", "MKXL", "MONTH", "MONTHLONG", "MONTHSHORT", "MPII", "MPIV", "MPLX", "MPVI", "MPXL", "MPanchor", "MPbetex", "MPc", "MPcode", "MPcolor", "MPcoloronly", "MPcolumn", "MPd", "MPdrawing", "MPfontsizehskip", "MPgetmultipars", "MPgetmultishape", "MPgetposboxes", "MPh", "MPinclusions", "MPleftskip", "MPll", "MPlr", "MPls", "MPmenubuttons", "MPn", "MPoptions", "MPoverlayanchor", "MPp", "MPpage", "MPpardata", "MPplus", "MPpos", "MPpositiongraphic", "MPposset", "MPr", "MPrawvar", "MPregion", "MPrest", "MPrightskip", "MPrs", "MPstring", "MPtext", "MPtransparency", "MPul", "MPur", "MPv", "MPvar", "MPvariable", "MPvv", "MPw", "MPwhd", "MPx", "MPxy", "MPxywhd", "MPy", "Mapsfrom", "Mapsto", "MetaFont", "MetaFun", "MetaPost", "Mu", "NJligature", "Nacute", "Ncaron", "Ncommaaccent", "Nearrow", "Neng", "Ngrave", "Njligature", "NormalizeFontHeight", "NormalizeFontWidth", "NormalizeTextHeight", "NormalizeTextWidth", "Ntilde", "Nu", "Numbers", "Nwarrow", "OEligature", "Oacute", "Obreve", "Ocaron", "Ocircumflex", "Ocircumflexacute", "Ocircumflexdotbelow", "Ocircumflexgrave", "Ocircumflexhook", "Ocircumflextilde", "Odiaeresis", "Odiaeresismacron", "Odotaccent", "Odotaccentmacron", "Odotbelow", "Odoublegrave", "Ograve", "Ohook", "Ohorn", "Ohornacute", "Ohorndotbelow", "Ohorngrave", "Ohornhook", "Ohorntilde", "Ohungarumlaut", "Oinvertedbreve", "Omacron", "Omega", "Omicron", "Oogonek", "Oogonekmacron", "Ostroke", "Ostrokeacute", "Otilde", "Otildemacron", "P", "PDFETEX", "PDFTEX", "PDFcolor", "PICTEX", "PPCHTEX", "PPCHTeX", "PRAGMA", "Phi", "Phook", "Pi", "PiCTeX", "Plankconst", "PointsToBigPoints", "PointsToReal", "PointsToWholeBigPoints", "PropertyLine", "Psi", "PtToCm", "Racute", "Rcaron", "Rcommaaccent", "Rdoublegrave", "Rdsh", "Re", "ReadFile", "Relbar", "Rho", "Rightarrow", "Rinvertedbreve", "Romannumerals", "Rrightarrow", "Rsh", "S", "Sacute", "ScaledPointsToBigPoints", "ScaledPointsToWholeBigPoints", "Scaron", "Scedilla", "Schwa", "Scircumflex", "Scommaaccent", "Searrow", "Sigma", "Smallcapped", "Subset", "Supset", "Swarrow", "TABLE", "TEX", "TaBlE", "Tau", "Tcaron", "Tcedilla", "Tcommaaccent", "TeX", "TheNormalizedFontSize", "Theta", "Thook", "Thorn", "TransparencyHack", "Tstroke", "Uacute", "Ubreve", "Ucaron", "Ucircumflex", "Udiaeresis", "Udiaeresisacute", "Udiaeresiscaron", "Udiaeresisgrave", "Udiaeresismacron", "Udotbelow", "Udoublegrave", "Ugrave", "Uhook", "Uhorn", "Uhornacute", "Uhorndotbelow", "Uhorngrave", "Uhornhook", "Uhorntilde", "Uhungarumlaut", "Uinvertedbreve", "Umacron", "Uogonek", "Uparrow", "Updownarrow", "Upsilon", "Uring", "Utilde", "Uuparrow", "VDash", "Vdash", "VerboseNumber", "Vert", "Vhook", "Vvdash", "WEEKDAY", "WORD", "WORDS", "Wcircumflex", "WidthSpanningText", "Word", "Words", "XETEX", "XeTeX", "Xi", "Yacute", "Ycircumflex", "Ydiaeresis", "Ydotbelow", "Ygrave", "Yhook", "Ymacron", "Ytilde", "Zacute", "Zcaron", "Zdotaccent", "Zeta", "Zhook", "Zstroke", "aacute", "abbreviation", "abjadnaivenumerals", "abjadnodotnumerals", "abjadnumerals", "about", "abreve", "abreveacute", "abrevedotbelow", "abrevegrave", "abrevehook", "abrevetilde", "acaron", "acircumflex", "acircumflexacute", "acircumflexdotbelow", "acircumflexgrave", "acircumflexhook", "acircumflextilde", "activatespacehandler", "actualday", "actualmonth", "actualyear", "actuarial", "acute", "acwopencirclearrow", "adaptcollector", "adaptfontfeature", "adaptlayout", "adaptpapersize", "addfeature", "addtoJSpreamble", "addtocommalist", "addvalue", "adiaeresis", "adiaeresismacron", "adotaccent", "adotaccentmacron", "adotbelow", "adoublegrave", "aeacute", "aeligature", "aemacron", "afghanicurrency", "aftersplitstring", "aftertestandsplitstring", "agrave", "ahook", "ainvertedbreve", "aleph", "alignbottom", "aligned", "alignedbox", "alignedline", "alignhere", "alignmentcharacter", "allinputpaths", "alpha", "alphabeticnumerals", "alwayscitation", "alwayscite", "amacron", "amalg", "ampersand", "anchor", "angle", "aogonek", "appendetoks", "appendgvalue", "appendtocommalist", "appendtoks", "appendtoksonce", "appendvalue", "apply", "applyalternativestyle", "applyfunction", "applyprocessor", "applytocharacters", "applytofirstcharacter", "applytosplitstringchar", "applytosplitstringcharspaced", "applytosplitstringline", "applytosplitstringlinespaced", "applytosplitstringword", "applytosplitstringwordspaced", "applytowords", "approx", "approxEq", "approxeq", "approxnEq", "arabicakbar", "arabicalayhe", "arabicallah", "arabicallallahou", "arabicasterisk", "arabicbasmalah", "arabiccomma", "arabiccuberoot", "arabicdateseparator", "arabicdecimals", "arabicdisputedendofayah", "arabicendofayah", "arabicexnumerals", "arabicfootnotemarker", "arabicfourthroot", "arabichighain", "arabichighalayheassallam", "arabichigheqala", "arabichighesala", "arabichighfootnotemarker", "arabichighjeem", "arabichighlamalef", "arabichighmadda", "arabichighmeemlong", "arabichighmeemshort", "arabichighnisf", "arabichighnoon", "arabichighnoonkasra", "arabichighqaf", "arabichighqif", "arabichighradiallahouanhu", "arabichighrahmatullahalayhe", "arabichighrubc", "arabichighsad", "arabichighsajda", "arabichighsakta", "arabichighsallallahou", "arabichighseen", "arabichighsmallsafha", "arabichightah", "arabichightakhallus", "arabichighthalatha", "arabichighwaqf", "arabichighyeh", "arabichighzain", "arabicjallajalalouhou", "arabiclettermark", "arabiclowmeemlong", "arabiclownoonkasra", "arabiclowseen", "arabicmisra", "arabicmuhammad", "arabicnumber", "arabicnumberabove", "arabicnumerals", "arabicparenleft", "arabicparenright", "arabicpercent", "arabicperiod", "arabicpermille", "arabicpertenthousand", "arabicpoeticverse", "arabicqala", "arabicquestion", "arabicrasoul", "arabicray", "arabicrialsign", "arabicsafha", "arabicsajdah", "arabicsalla", "arabicsamvat", "arabicsanah", "arabicsemicolon", "arabicshighthreedots", "arabicslcm", "arabicstartofrubc", "arabictripledot", "arabicvowelwaw", "arabicvowelyeh", "arabicwasallam", "arg", "aring", "aringacute", "arrowvert", "asciimode", "asciistr", "aside", "assignalfadimension", "assigndimen", "assigndimension", "assignifempty", "assigntranslation", "assignvalue", "assignwidth", "assumelongusagecs", "ast", "astype", "asymp", "at", "atilde", "atleftmargin", "atpage", "atrightmargin", "attachment", "autocap", "autodirhbox", "autodirvbox", "autodirvtop", "autoinsertnextspace", "autointegral", "automathematics", "autoorientation", "autopagestaterealpage", "autopagestaterealpageorder", "autorule", "autosetups", "availablehsize", "averagecharwidth", "backepsilon", "background", "backgroundimage", "backgroundimagefill", "backgroundline", "backprime", "backsim", "backslash", "bar", "barleftarrow", "barleftarrowrightarrowbar", "barovernorthwestarrow", "barwedge", "basegrid", "baselinebottom", "baselineleftbox", "baselinemiddlebox", "baselinerightbox", "bbordermatrix", "bbox", "because", "beforesplitstring", "beforetestandsplitstring", "beta", "beth", "between", "bhook", "big", "bigbodyfont", "bigcap", "bigcirc", "bigcircle", "bigcup", "bigdiamond", "bigg", "bigger", "biggl", "biggm", "biggr", "bigl", "bigm", "bigodot", "bigoplus", "bigotimes", "bigr", "bigskip", "bigsqcap", "bigsqcup", "bigsquare", "bigstar", "bigtimes", "bigtriangledown", "bigtriangleup", "bigudot", "biguplus", "bigvee", "bigwedge", "binom", "bitmapimage", "blacklozenge", "blackrule", "blackrules", "blacksquare", "blacktriangle", "blacktriangledown", "blacktriangleleft", "blacktriangleright", "blank", "blap", "bleed", "bleedheight", "bleedwidth", "blockligatures", "blockquote", "blocksynctexfile", "blockuservariable", "bodyfontenvironmentlist", "bodyfontsize", "bold", "boldface", "bolditalic", "boldslanted", "bookmark", "booleanmodevalue", "bordermatrix", "bot", "bottombox", "bottomleftbox", "bottomrightbox", "bowtie", "boxcursor", "boxdot", "boxmarker", "boxminus", "boxofsize", "boxplus", "boxreference", "boxtimes", "bpos", "breakablethinspace", "breakhere", "breve", "bstroke", "btxabbreviatedjournal", "btxaddjournal", "btxalwayscitation", "btxauthorfield", "btxdetail", "btxdirect", "btxdoif", "btxdoifcombiinlistelse", "btxdoifelse", "btxdoifelsecombiinlist", "btxdoifelsesameasprevious", "btxdoifelsesameaspreviouschecked", "btxdoifelseuservariable", "btxdoifnot", "btxdoifsameaspreviouscheckedelse", "btxdoifsameaspreviouselse", "btxdoifuservariableelse", "btxexpandedjournal", "btxfield", "btxfieldname", "btxfieldtype", "btxfirstofrange", "btxflush", "btxflushauthor", "btxflushauthorinverted", "btxflushauthorinvertedshort", "btxflushauthorname", "btxflushauthornormal", "btxflushauthornormalshort", "btxflushsuffix", "btxfoundname", "btxfoundtype", "btxhiddencitation", "btxhybridcite", "btxlabellanguage", "btxlabeltext", "btxlistcitation", "btxloadjournalist", "btxoneorrange", "btxremapauthor", "btxsavejournalist", "btxsetup", "btxsingularorplural", "btxsingularplural", "btxtextcitation", "buildmathaccent", "buildtextaccent", "buildtextbottomcomma", "buildtextbottomdot", "buildtextcedilla", "buildtextgrave", "buildtextmacron", "buildtextognek", "bullet", "button", "cacute", "calligraphic", "camel", "cap", "capital", "carriagereturn", "catcodetablename", "cbox", "ccaron", "ccedilla", "ccircumflex", "ccurl", "cdot", "cdotaccent", "cdotp", "cdots", "centeraligned", "centerbox", "centerdot", "centeredbox", "centeredlastline", "centerednextbox", "centerline", "cfrac", "chapter", "character", "characters", "chardescription", "charwidthlanguage", "check", "checkcharacteralign", "checkedblank", "checkedchar", "checkedfiller", "checkedstrippedcsname", "checkinjector", "checkmark", "checknextindentation", "checknextinjector", "checkpage", "checkparameters", "checkpreviousinjector", "checksoundtrack", "checktwopassdata", "checkvariables", "chem", "chemical", "chemicalbottext", "chemicalmidtext", "chemicalsymbol", "chemicaltext", "chemicaltoptext", "chi", "chineseallnumerals", "chinesecapnumerals", "chinesenumerals", "chook", "circ", "circeq", "circlearrowleft", "circlearrowright", "circledR", "circledS", "circledast", "circledcirc", "circleddash", "circledequals", "circleonrightarrow", "citation", "cite", "clap", "classfont", "cldcommand", "cldcontext", "cldloadfile", "cldprocessfile", "cleftarrow", "clip", "clippedoverlayimage", "clonefield", "clubsuit", "collect", "collectedtext", "collectexpanded", "colon", "coloncolonequals", "colonequals", "color", "colorbar", "colorcomponents", "colored", "coloronly", "colorvalue", "column", "columnbreak", "columnsetspanwidth", "combinepages", "commalistelement", "commalistsentence", "commalistsize", "comment", "comparecolorgroup", "comparedimension", "comparedimensioneps", "comparepalet", "complement", "completebtxrendering", "completecontent", "completeindex", "completelist", "completelistofabbreviations", "completelistofchemicals", "completelistoffigures", "completelistofgraphics", "completelistofintermezzi", "completelistoflogos", "completelistofpublications", "completelistofsorts", "completelistofsynonyms", "completelistoftables", "completepagenumber", "completeregister", "complexes", "complexorsimple", "complexorsimpleempty", "component", "composedcollector", "composedlayer", "compounddiscretionary", "compresult", "cong", "constantdimen", "constantdimenargument", "constantemptyargument", "constantnumber", "constantnumberargument", "contentreference", "continuednumber", "continueifinputfile", "convertargument", "convertcommand", "convertedcounter", "converteddimen", "convertedsubcounter", "convertmonth", "convertnumber", "convertvalue", "convertvboxtohbox", "coprod", "copyboxfromcache", "copybtxlabeltext", "copyfield", "copyheadtext", "copylabeltext", "copymathlabeltext", "copyoperatortext", "copypages", "copyparameters", "copyposition", "copyprefixtext", "copyright", "copysetups", "copysuffixtext", "copytaglabeltext", "copyunittext", "correctwhitespace", "countersubs", "counttoken", "counttokens", "cramped", "crampedclap", "crampedllap", "crampedrlap", "crightarrow", "crightoverleftarrow", "crlf", "crlfplaceholder", "cstroke", "ctop", "ctxcommand", "ctxdirectcommand", "ctxdirectlua", "ctxfunction", "ctxlatecommand", "ctxlatelua", "ctxloadluafile", "ctxlua", "ctxluabuffer", "ctxluacode", "ctxreport", "ctxsprint", "cup", "curlyeqprec", "curlyeqsucc", "curlyvee", "curlywedge", "currentassignmentlistkey", "currentassignmentlistvalue", "currentbtxuservariable", "currentcommalistitem", "currentcomponent", "currentdate", "currentenvironment", "currentfeaturetest", "currentheadnumber", "currentinterface", "currentlanguage", "currentlistentrydestinationattribute", "currentlistentrylimitedtext", "currentlistentrynumber", "currentlistentrypagenumber", "currentlistentryreferenceattribute", "currentlistentrytitle", "currentlistentrytitlerendered", "currentlistsymbol", "currentmainlanguage", "currentmessagetext", "currentmoduleparameter", "currentoutputstream", "currentproduct", "currentproject", "currentregime", "currentregisterpageuserdata", "currentresponses", "currenttime", "currentvalue", "currentxtablecolumn", "currentxtablerow", "curvearrowleft", "curvearrowright", "cwopencirclearrow", "cyrillicA", "cyrillicAE", "cyrillicAbreve", "cyrillicAdiaeresis", "cyrillicB", "cyrillicBIGYUS", "cyrillicBIGYUSiotified", "cyrillicC", "cyrillicCH", "cyrillicCHEDC", "cyrillicCHEDCabkhasian", "cyrillicCHEabkhasian", "cyrillicCHEdiaeresis", "cyrillicCHEkhakassian", "cyrillicCHEvertstroke", "cyrillicD", "cyrillicDASIAPNEUMATA", "cyrillicDJE", "cyrillicDZE", "cyrillicDZEabkhasian", "cyrillicDZHE", "cyrillicE", "cyrillicELtail", "cyrillicEMtail", "cyrillicENDC", "cyrillicENGHE", "cyrillicENhook", "cyrillicENtail", "cyrillicEREV", "cyrillicERY", "cyrillicERtick", "cyrillicEbreve", "cyrillicEdiaeresis", "cyrillicEgrave", "cyrillicEiotified", "cyrillicF", "cyrillicFITA", "cyrillicG", "cyrillicGHEmidhook", "cyrillicGHEstroke", "cyrillicGHEupturn", "cyrillicGJE", "cyrillicH", "cyrillicHA", "cyrillicHADC", "cyrillicHRDSN", "cyrillicI", "cyrillicIE", "cyrillicII", "cyrillicISHRT", "cyrillicISHRTtail", "cyrillicIZHITSA", "cyrillicIZHITSAdoublegrave", "cyrillicIdiaeresis", "cyrillicIgrave", "cyrillicImacron", "cyrillicJE", "cyrillicK", "cyrillicKADC", "cyrillicKAbashkir", "cyrillicKAhook", "cyrillicKAstroke", "cyrillicKAvertstroke", "cyrillicKJE", "cyrillicKOPPA", "cyrillicKSI", "cyrillicL", "cyrillicLITTLEYUS", "cyrillicLITTLEYUSiotified", "cyrillicLJE", "cyrillicM", "cyrillicN", "cyrillicNJE", "cyrillicO", "cyrillicOMEGA", "cyrillicOMEGAround", "cyrillicOMEGAtitlo", "cyrillicOT", "cyrillicObarred", "cyrillicObarreddiaeresis", "cyrillicOdiaeresis", "cyrillicP", "cyrillicPALATALIZATION", "cyrillicPALOCHKA", "cyrillicPEmidhook", "cyrillicPSI", "cyrillicPSILIPNEUMATA", "cyrillicR", "cyrillicS", "cyrillicSCHWA", "cyrillicSCHWAdiaeresis", "cyrillicSDSC", "cyrillicSEMISOFT", "cyrillicSFTSN", "cyrillicSH", "cyrillicSHCH", "cyrillicSHHA", "cyrillicT", "cyrillicTEDC", "cyrillicTETSE", "cyrillicTITLO", "cyrillicTSHE", "cyrillicU", "cyrillicUK", "cyrillicUSHRT", "cyrillicUdiaeresis", "cyrillicUdoubleacute", "cyrillicUmacron", "cyrillicV", "cyrillicYA", "cyrillicYAT", "cyrillicYERUdiaeresis", "cyrillicYI", "cyrillicYO", "cyrillicYU", "cyrillicYstr", "cyrillicYstrstroke", "cyrillicZ", "cyrillicZDSC", "cyrillicZEdiaeresis", "cyrillicZH", "cyrillicZHEbreve", "cyrillicZHEdescender", "cyrillicZHEdiaeresis", "cyrillica", "cyrillicabreve", "cyrillicadiaeresis", "cyrillicae", "cyrillicb", "cyrillicbigyus", "cyrillicbigyusiotified", "cyrillicc", "cyrillicch", "cyrilliccheabkhasian", "cyrillicchedc", "cyrillicchedcabkhasian", "cyrillicchediaeresis", "cyrillicchekhakassian", "cyrillicchevertstroke", "cyrillicd", "cyrillicdje", "cyrillicdze", "cyrillicdzeabkhasian", "cyrillicdzhe", "cyrillice", "cyrillicebreve", "cyrillicediaeresis", "cyrillicegrave", "cyrilliceiotified", "cyrilliceltail", "cyrillicemtail", "cyrillicendc", "cyrillicenghe", "cyrillicenhook", "cyrillicentail", "cyrillicerev", "cyrillicertick", "cyrillicery", "cyrillicf", "cyrillicfita", "cyrillicg", "cyrillicghemidhook", "cyrillicghestroke", "cyrillicgheupturn", "cyrillicgje", "cyrillich", "cyrillicha", "cyrillichadc", "cyrillichrdsn", "cyrillici", "cyrillicidiaeresis", "cyrillicie", "cyrillicigrave", "cyrillicii", "cyrillicimacron", "cyrillicishrt", "cyrillicishrttail", "cyrillicizhitsa", "cyrillicizhitsadoublegrave", "cyrillicje", "cyrillick", "cyrillickabashkir", "cyrillickadc", "cyrillickahook", "cyrillickastroke", "cyrillickavertstroke", "cyrillickje", "cyrillickoppa", "cyrillicksi", "cyrillicl", "cyrilliclittleyus", "cyrilliclittleyusiotified", "cyrilliclje", "cyrillicm", "cyrillicn", "cyrillicnje", "cyrillico", "cyrillicobarred", "cyrillicobarreddiaeresis", "cyrillicodiaeresis", "cyrillicomega", "cyrillicomegaround", "cyrillicomegatitlo", "cyrillicot", "cyrillicp", "cyrillicpemidhook", "cyrillicpsi", "cyrillicr", "cyrillics", "cyrillicschwa", "cyrillicschwadiaeresis", "cyrillicsdsc", "cyrillicsemisoft", "cyrillicsftsn", "cyrillicsh", "cyrillicshch", "cyrillicshha", "cyrillict", "cyrillictedc", "cyrillictetse", "cyrillictshe", "cyrillicu", "cyrillicudiaeresis", "cyrillicudoubleacute", "cyrillicuk", "cyrillicumacron", "cyrillicushrt", "cyrillicv", "cyrillicya", "cyrillicyat", "cyrillicyerudiaeresis", "cyrillicyi", "cyrillicyo", "cyrillicystr", "cyrillicystrstroke", "cyrillicyu", "cyrillicz", "cyrilliczdsc", "cyrilliczediaeresis", "cyrilliczh", "cyrilliczhebreve", "cyrilliczhedescender", "cyrilliczhediaeresis", "d", "dag", "dagger", "daleth", "dasharrow", "dashedleftarrow", "dashedrightarrow", "dashv", "datasetvariable", "date", "daylong", "dayoftheweek", "dayshort", "dayspermonth", "dbinom", "dcaron", "dcurl", "dd", "ddag", "ddagger", "dddot", "ddot", "ddots", "decrement", "decrementcounter", "decrementedcounter", "decrementpagenumber", "decrementsubpagenumber", "decrementvalue", "defaultinterface", "defaultobjectpage", "defaultobjectreference", "defcatcodecommand", "defconvertedargument", "defconvertedcommand", "defconvertedvalue", "define", "defineMPinstance", "defineTABLEsetup", "defineaccent", "defineactivecharacter", "definealternativestyle", "defineanchor", "defineattachment", "defineattribute", "definebackground", "definebar", "defineblock", "definebodyfont", "definebodyfontenvironment", "definebodyfontswitch", "definebreakpoint", "definebreakpoints", "definebtx", "definebtxdataset", "definebtxregister", "definebtxrendering", "definebuffer", "definebutton", "definecapitals", "definecharacter", "definecharacterkerning", "definecharacterspacing", "definechemical", "definechemicals", "definechemicalsymbol", "definecollector", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecolumnsetarea", "definecolumnsetspan", "definecombination", "definecombinedlist", "definecommand", "definecomment", "definecomplexorsimple", "definecomplexorsimpleempty", "defineconversion", "defineconversionset", "definecounter", "definedataset", "definedate", "definedelimitedtext", "definedeq", "definedescription", "definedfont", "definedocument", "defineeffect", "defineenumeration", "defineexpandable", "defineexpansion", "defineexternalfigure", "definefacingfloat", "definefallbackfamily", "definefield", "definefieldbody", "definefieldbodyset", "definefieldcategory", "definefieldstack", "definefiguresymbol", "definefileconstant", "definefilefallback", "definefilesynonym", "definefiller", "definefirstline", "definefittingpage", "definefloat", "definefont", "definefontalternative", "definefontfallback", "definefontfamily", "definefontfamilypreset", "definefontfeature", "definefontfile", "definefontsize", "definefontsolution", "definefontstyle", "definefontsynonym", "defineformula", "defineformulaalternative", "defineformulaframed", "defineframed", "defineframedcontent", "defineframedtable", "defineframedtext", "definefrozenfont", "defineglobalcolor", "definegraphictypesynonym", "definegridsnapping", "definehbox", "definehead", "defineheadalternative", "definehelp", "definehigh", "definehighlight", "definehspace", "definehyphenationfeatures", "defineindentedtext", "defineindenting", "defineinitial", "defineinsertion", "defineinteraction", "defineinteractionbar", "defineinteractionmenu", "defineinterfaceconstant", "defineinterfaceelement", "defineinterfacevariable", "defineinterlinespace", "defineintermediatecolor", "defineitemgroup", "defineitems", "definelabel", "definelabelclass", "definelayer", "definelayerpreset", "definelayout", "definelinefiller", "definelinenote", "definelinenumbering", "definelines", "definelist", "definelistalternative", "definelistextra", "definelow", "definelowhigh", "definelowmidhigh", "definemakeup", "definemarginblock", "definemargindata", "definemarker", "definemarking", "definemathaccent", "definemathalignment", "definemathcases", "definemathcommand", "definemathdouble", "definemathdoubleextensible", "definemathematics", "definemathextensible", "definemathfence", "definemathfraction", "definemathframed", "definemathmatrix", "definemathornament", "definemathover", "definemathoverextensible", "definemathovertextextensible", "definemathradical", "definemathstackers", "definemathstyle", "definemathtriplet", "definemathunder", "definemathunderextensible", "definemathundertextextensible", "definemathunstacked", "definemeasure", "definemessageconstant", "definemixedcolumns", "definemode", "definemulticolumns", "definemultitonecolor", "definenamedcolor", "definenamespace", "definenarrower", "definenote", "defineorientation", "defineornament", "defineoutputroutine", "defineoutputroutinecommand", "defineoverlay", "definepage", "definepagebreak", "definepagechecker", "definepagecolumns", "definepageinjection", "definepageinjectionalternative", "definepageshift", "definepagestate", "definepairedbox", "definepalet", "definepapersize", "defineparagraph", "defineparagraphs", "defineparallel", "defineparbuilder", "defineperiodkerning", "defineplaceholder", "defineplacement", "definepositioning", "defineprefixset", "defineprocesscolor", "defineprocessor", "defineprofile", "defineprogram", "definepushbutton", "definepushsymbol", "definereference", "definereferenceformat", "defineregister", "definerenderingwindow", "defineresetset", "defineruby", "definescale", "definescript", "definesection", "definesectionblock", "definesectionlevels", "defineselector", "defineseparatorset", "defineshift", "definesidebar", "definesort", "definesorting", "definespotcolor", "definestartstop", "definestyle", "definestyleinstance", "definesubfield", "definesubformula", "definesymbol", "definesynonym", "definesynonyms", "definesystemattribute", "definesystemconstant", "definesystemvariable", "definetabletemplate", "definetabulate", "definetext", "definetextbackground", "definetextflow", "definetextnote", "definetokenlist", "definetooltip", "definetransparency", "definetwopasslist", "definetype", "definetypeface", "definetypescriptprefix", "definetypescriptsynonym", "definetypesetting", "definetyping", "defineunit", "defineuserdata", "defineuserdataalternative", "defineviewerlayer", "definevspace", "definevspacing", "definevspacingamount", "definextable", "defrostparagraphproperties", "delimited", "delimitedtext", "delta", "depthofstring", "depthonlybox", "depthspanningtext", "depthstrut", "determineheadnumber", "determinelistcharacteristics", "determinenoflines", "determineregistercharacteristics", "devanagarinumerals", "dfrac", "dhook", "diameter", "diamond", "diamondsuit", "differentialD", "differentiald", "digamma", "digits", "dimensiontocount", "directboxfromcache", "directcolor", "directcolored", "directconvertedcounter", "directcopyboxfromcache", "directdummyparameter", "directgetboxllx", "directgetboxlly", "directhighlight", "directlocalframed", "directluacode", "directparwrapper", "directselect", "directsetbar", "directsetup", "directsymbol", "directvspacing", "dis", "disabledirectives", "disableexperiments", "disablemode", "disableoutputstream", "disableparpositions", "disableregime", "disabletrackers", "displaymath", "displaymathematics", "displaymessage", "disposeluatable", "distributedhsize", "div", "dividedsize", "divideontimes", "divides", "doadaptleftskip", "doadaptrightskip", "doaddfeature", "doassign", "doassignempty", "doboundtext", "docheckassignment", "docheckedpair", "documentvariable", "dodoubleargument", "dodoubleargumentwithset", "dodoubleempty", "dodoubleemptywithset", "dodoublegroupempty", "doeassign", "doexpandedrecurse", "dofastloopcs", "dogetattribute", "dogetattributeid", "dogetcommacommandelement", "dogobbledoubleempty", "dogobblesingleempty", "dohyphens", "doif", "doifMPgraphicelse", "doifallcommon", "doifallcommonelse", "doifalldefinedelse", "doifallmodes", "doifallmodeselse", "doifassignmentelse", "doifassignmentelsecs", "doifblackelse", "doifbothsides", "doifbothsidesoverruled", "doifboxelse", "doifbufferelse", "doifcheckedpagestate", "doifcolor", "doifcolorelse", "doifcommandhandler", "doifcommandhandlerelse", "doifcommon", "doifcommonelse", "doifcontent", "doifconversiondefinedelse", "doifconversionnumberelse", "doifcounter", "doifcounterelse", "doifcurrentfonthasfeatureelse", "doifdefined", "doifdefinedcounter", "doifdefinedcounterelse", "doifdefinedelse", "doifdimensionelse", "doifdimenstringelse", "doifdocumentargument", "doifdocumentargumentelse", "doifdocumentfilename", "doifdocumentfilenameelse", "doifdocumentvariable", "doifdocumentvariableelse", "doifdrawingblackelse", "doifelse", "doifelseMPgraphic", "doifelseallcommon", "doifelsealldefined", "doifelseallmodes", "doifelseassignment", "doifelseassignmentcs", "doifelseblack", "doifelsebox", "doifelseboxincache", "doifelsebuffer", "doifelsecolor", "doifelsecommandhandler", "doifelsecommon", "doifelseconversiondefined", "doifelseconversionnumber", "doifelsecounter", "doifelsecurrentfonthasfeature", "doifelsecurrentsortingused", "doifelsecurrentsynonymshown", "doifelsecurrentsynonymused", "doifelsedefined", "doifelsedefinedcounter", "doifelsedimension", "doifelsedimenstring", "doifelsedocumentargument", "doifelsedocumentfilename", "doifelsedocumentvariable", "doifelsedrawingblack", "doifelseempty", "doifelseemptyvalue", "doifelseemptyvariable", "doifelseenv", "doifelsefastoptionalcheck", "doifelsefastoptionalcheckcs", "doifelsefieldbody", "doifelsefieldcategory", "doifelsefigure", "doifelsefile", "doifelsefiledefined", "doifelsefileexists", "doifelsefirstchar", "doifelseflagged", "doifelsefontchar", "doifelsefontfeature", "doifelsefontpresent", "doifelsefontsynonym", "doifelseframed", "doifelsehasspace", "doifelsehelp", "doifelseincsname", "doifelseindented", "doifelseinelement", "doifelseinputfile", "doifelseinsertion", "doifelseinset", "doifelseinstring", "doifelseinsymbolset", "doifelseintoks", "doifelseintwopassdata", "doifelseitalic", "doifelselanguage", "doifelselayerdata", "doifelselayoutdefined", "doifelselayoutsomeline", "doifelselayouttextline", "doifelseleapyear", "doifelselist", "doifelselocation", "doifelselocfile", "doifelsemainfloatbody", "doifelsemarkedcontent", "doifelsemarkedpage", "doifelsemarking", "doifelsemeaning", "doifelsemessage", "doifelsemode", "doifelsenextbgroup", "doifelsenextbgroupcs", "doifelsenextchar", "doifelsenextoptional", "doifelsenextoptionalcs", "doifelsenextparenthesis", "doifelsenonzeropositive", "doifelsenoteonsamepage", "doifelsenothing", "doifelsenumber", "doifelseobjectfound", "doifelseobjectreferencefound", "doifelseoddpage", "doifelseoddpagefloat", "doifelseoldercontext", "doifelseolderversion", "doifelseorientation", "doifelseoverlapping", "doifelseoverlay", "doifelseparallel", "doifelseparentfile", "doifelseparwrapper", "doifelsepath", "doifelsepathexists", "doifelsepatterns", "doifelseposition", "doifelsepositionaction", "doifelsepositiononpage", "doifelsepositionsonsamepage", "doifelsepositionsonthispage", "doifelsepositionsused", "doifelsereferencefound", "doifelserightpage", "doifelserightpagefloat", "doifelserighttoleftinbox", "doifelsesamelinereference", "doifelsesamestring", "doifelsesetups", "doifelsesomebackground", "doifelsesomespace", "doifelsesomething", "doifelsesometoks", "doifelsestringinstring", "doifelsestructurelisthasnumber", "doifelsestructurelisthaspage", "doifelsesymboldefined", "doifelsesymbolset", "doifelsetext", "doifelsetextflow", "doifelsetextflowcollector", "doifelsetopofpage", "doifelsetypingfile", "doifelseundefined", "doifelseurldefined", "doifelsevalue", "doifelsevaluenothing", "doifelsevariable", "doifempty", "doifemptyelse", "doifemptytoks", "doifemptyvalue", "doifemptyvalueelse", "doifemptyvariable", "doifemptyvariableelse", "doifenv", "doifenvelse", "doiffastoptionalcheckcselse", "doiffastoptionalcheckelse", "doiffieldbodyelse", "doiffieldcategoryelse", "doiffigureelse", "doiffile", "doiffiledefinedelse", "doiffileelse", "doiffileexistselse", "doiffirstcharelse", "doifflaggedelse", "doiffontcharelse", "doiffontfeatureelse", "doiffontpresentelse", "doiffontsynonymelse", "doifhasspaceelse", "doifhelpelse", "doifincsnameelse", "doifinelementelse", "doifinputfileelse", "doifinsertionelse", "doifinset", "doifinsetelse", "doifinstring", "doifinstringelse", "doifinsymbolset", "doifinsymbolsetelse", "doifintokselse", "doifintwopassdataelse", "doifitalicelse", "doiflanguageelse", "doiflayerdataelse", "doiflayoutdefinedelse", "doiflayoutsomelineelse", "doiflayouttextlineelse", "doifleapyearelse", "doiflistelse", "doiflocationelse", "doiflocfileelse", "doifmainfloatbodyelse", "doifmarkingelse", "doifmeaningelse", "doifmessageelse", "doifmode", "doifmodeelse", "doifnextbgroupcselse", "doifnextbgroupelse", "doifnextcharelse", "doifnextoptionalcselse", "doifnextoptionalelse", "doifnextparenthesiselse", "doifnonzeropositiveelse", "doifnot", "doifnotallcommon", "doifnotallmodes", "doifnotcommandhandler", "doifnotcommon", "doifnotcounter", "doifnotdocumentargument", "doifnotdocumentfilename", "doifnotdocumentvariable", "doifnotempty", "doifnotemptyvalue", "doifnotemptyvariable", "doifnotenv", "doifnoteonsamepageelse", "doifnotescollected", "doifnotfile", "doifnotflagged", "doifnothing", "doifnothingelse", "doifnotinset", "doifnotinsidesplitfloat", "doifnotinstring", "doifnotmode", "doifnotnumber", "doifnotsamestring", "doifnotsetups", "doifnotvalue", "doifnotvariable", "doifnumber", "doifnumberelse", "doifobjectfoundelse", "doifobjectreferencefoundelse", "doifoddpageelse", "doifoddpagefloatelse", "doifoldercontextelse", "doifolderversionelse", "doifoutervmode", "doifoverlappingelse", "doifoverlayelse", "doifparallelelse", "doifparentfileelse", "doifpathelse", "doifpathexistselse", "doifpatternselse", "doifposition", "doifpositionaction", "doifpositionactionelse", "doifpositionelse", "doifpositiononpageelse", "doifpositionsonsamepageelse", "doifpositionsonthispageelse", "doifpositionsusedelse", "doifreferencefoundelse", "doifrightpageelse", "doifrightpagefloatelse", "doifrighttoleftinboxelse", "doifsamelinereferenceelse", "doifsamestring", "doifsamestringelse", "doifsetups", "doifsetupselse", "doifsomebackground", "doifsomebackgroundelse", "doifsomespaceelse", "doifsomething", "doifsomethingelse", "doifsometoks", "doifsometokselse", "doifstringinstringelse", "doifstructurelisthasnumberelse", "doifstructurelisthaspageelse", "doifsymboldefinedelse", "doifsymbolsetelse", "doiftext", "doiftextelse", "doiftextflowcollectorelse", "doiftextflowelse", "doiftopofpageelse", "doiftypingfileelse", "doifundefined", "doifundefinedcounter", "doifundefinedelse", "doifunknownfontfeature", "doifurldefinedelse", "doifvalue", "doifvalueelse", "doifvaluenothing", "doifvaluenothingelse", "doifvaluesomething", "doifvariable", "doifvariableelse", "doindentation", "dollar", "doloop", "doloopoverlist", "donothing", "dontconvertfont", "dontleavehmode", "dontpermitspacesbetweengroups", "dopositionaction", "doprocesslocalsetups", "doquadrupleargument", "doquadrupleempty", "doquadruplegroupempty", "doquintupleargument", "doquintupleempty", "doquintuplegroupempty", "dorechecknextindentation", "dorecurse", "dorepeatwithcommand", "doreplacefeature", "doresetandafffeature", "doresetattribute", "dorotatebox", "dosetattribute", "dosetleftskipadaption", "dosetrightskipadaption", "dosetupcheckedinterlinespace", "doseventupleargument", "doseventupleempty", "dosingleargument", "dosingleempty", "dosinglegroupempty", "dosixtupleargument", "dosixtupleempty", "dosomebreak", "dostepwiserecurse", "dosubtractfeature", "dot", "doteq", "doteqdot", "dotfill", "dotfskip", "dotlessI", "dotlessJ", "dotlessi", "dotlessj", "dotlessjstroke", "dotminus", "dotoks", "dotplus", "dotripleargument", "dotripleargumentwithset", "dotripleempty", "dotripleemptywithset", "dotriplegroupempty", "dots", "dottedcircle", "dottedrightarrow", "doublebar", "doublebond", "doublebrace", "doublebracket", "doublecap", "doublecup", "doubleparent", "doubleprime", "doubleverticalbar", "dowith", "dowithnextbox", "dowithnextboxcontent", "dowithnextboxcontentcs", "dowithnextboxcs", "dowithpargument", "dowithrange", "dowithwargument", "downarrow", "downdasharrow", "downdownarrows", "downharpoonleft", "downharpoonright", "downuparrows", "downwhitearrow", "downzigzagarrow", "dpofstring", "dstroke", "dtail", "dummydigit", "dummyparameter", "dzcaronligature", "dzligature", "eTeX", "eacute", "ebreve", "ecaron", "ecedilla", "ecircumflex", "ecircumflexacute", "ecircumflexdotbelow", "ecircumflexgrave", "ecircumflexhook", "ecircumflextilde", "edefconvertedargument", "ediaeresis", "edotaccent", "edotbelow", "edoublegrave", "ee", "efcmaxheight", "efcmaxwidth", "efcminheight", "efcminwidth", "efcparameter", "effect", "egrave", "ehook", "einvertedbreve", "elapsedseconds", "elapsedsteptime", "elapsedtime", "eleftarrowfill", "eleftharpoondownfill", "eleftharpoonupfill", "eleftrightarrowfill", "ell", "em", "emacron", "emdash", "emphasisboldface", "emphasistypeface", "emptylines", "emptyset", "emquad", "emspace", "enableasciimode", "enabledirectives", "enableexperiments", "enablemode", "enableoutputstream", "enableparpositions", "enableregime", "enabletrackers", "endash", "endnote", "enquad", "enskip", "enspace", "env", "environment", "envvar", "eogonek", "eoverbarfill", "eoverbracefill", "eoverbracketfill", "eoverparentfill", "epos", "epsilon", "eq", "eqcirc", "eqeq", "eqeqeq", "eqgtr", "eqless", "eqsim", "eqslantgtr", "eqslantless", "equaldigits", "equalscolon", "equiv", "erightarrowfill", "erightharpoondownfill", "erightharpoonupfill", "eta", "eth", "ethiopic", "etilde", "etwoheadrightarrowfill", "eunderbarfill", "eunderbracefill", "eunderbracketfill", "eunderparentfill", "exclamdown", "executeifdefined", "exists", "exitloop", "exitloopnow", "expandcheckedcsname", "expanded", "expandeddoif", "expandeddoifelse", "expandeddoifnot", "expandfontsynonym", "expdoif", "expdoifcommonelse", "expdoifelse", "expdoifelsecommon", "expdoifelseinset", "expdoifinsetelse", "expdoifnot", "exponentiale", "externalfigure", "externalfigurecollectionmaxheight", "externalfigurecollectionmaxwidth", "externalfigurecollectionminheight", "externalfigurecollectionminwidth", "externalfigurecollectionparameter", "fakebox", "fallingdotseq", "fastdecrement", "fastincrement", "fastlocalframed", "fastloopfinal", "fastloopindex", "fastscale", "fastsetup", "fastsetupwithargument", "fastsetupwithargumentswapped", "fastswitchtobodyfont", "fastsxsy", "feature", "fence", "fenced", "fetchallmarkings", "fetchallmarks", "fetchmark", "fetchmarking", "fetchonemark", "fetchonemarking", "fetchruntinecommand", "fetchtwomarkings", "fetchtwomarks", "ffiligature", "ffligature", "fflligature", "fhook", "field", "fieldbody", "fieldstack", "fifthoffivearguments", "fifthofsixarguments", "figurefilename", "figurefilepath", "figurefiletype", "figurefullname", "figureheight", "figurenaturalheight", "figurenaturalwidth", "figurespace", "figuresymbol", "figurewidth", "filename", "filigature", "filledhboxb", "filledhboxc", "filledhboxg", "filledhboxk", "filledhboxm", "filledhboxr", "filledhboxy", "filler", "fillinline", "fillinrules", "fillintext", "fillupto", "filterfromnext", "filterfromvalue", "filterpages", "filterreference", "findtwopassdata", "finishregisterentry", "firstcharacter", "firstcounter", "firstcountervalue", "firstinlist", "firstoffivearguments", "firstoffourarguments", "firstofoneargument", "firstofoneunexpanded", "firstofsixarguments", "firstofthreearguments", "firstofthreeunexpanded", "firstoftwoarguments", "firstoftwounexpanded", "firstrealpage", "firstrealpagenumber", "firstsubcountervalue", "firstsubpage", "firstsubpagenumber", "firstuserpage", "firstuserpagenumber", "fitfield", "fitfieldframed", "fittopbaselinegrid", "fiveeighths", "fivesixths", "fixedspace", "fixedspaces", "flag", "flat", "flligature", "floatuserdataparameter", "flushbox", "flushboxregister", "flushcollector", "flushedrightlastline", "flushlayer", "flushlocalfloats", "flushnextbox", "flushnotes", "flushoutputstream", "flushshapebox", "flushtextflow", "flushtokens", "flushtoks", "fontalternative", "fontbody", "fontchar", "fontcharbyindex", "fontclass", "fontclassname", "fontface", "fontfeaturelist", "fontsize", "fontstyle", "footnote", "footnotetext", "forall", "forcecharacterstripping", "forcelocalfloats", "forgeteverypar", "forgetparagraphfreezing", "forgetparameters", "forgetparskip", "forgetparwrapper", "forgetragged", "formula", "formulanumber", "foundbox", "fourfifths", "fourperemspace", "fourthoffivearguments", "fourthoffourarguments", "fourthofsixarguments", "frac", "framed", "frameddimension", "framedparameter", "framedtext", "freezedimenmacro", "freezemeasure", "freezeparagraphproperties", "frenchspacing", "from", "fromlinenote", "frown", "frozenhbox", "frule", "gacute", "gamma", "gbreve", "gcaron", "gcircumflex", "gcommaaccent", "gdefconvertedargument", "gdefconvertedcommand", "gdotaccent", "ge", "geq", "geqq", "geqslant", "getMPdrawing", "getMPlayer", "getboxfromcache", "getboxllx", "getboxlly", "getbuffer", "getbufferdata", "getcommacommandsize", "getcommalistsize", "getdatavalue", "getdayoftheweek", "getdayspermonth", "getdefinedbuffer", "getdocumentargument", "getdocumentargumentdefault", "getdocumentfilename", "getdummyparameters", "getemptyparameters", "geteparameters", "getexpandedparameters", "getfiguredimensions", "getfirstcharacter", "getfirsttwopassdata", "getfromcommacommand", "getfromcommalist", "getfromluatable", "getfromtwopassdata", "getglyphdirect", "getglyphstyled", "getgparameters", "getinlineuserdata", "getlasttwopassdata", "getlocalfloat", "getlocalfloats", "getmarking", "getmessage", "getnamedglyphdirect", "getnamedglyphstyled", "getnamedtwopassdatalist", "getnaturaldimensions", "getnoflines", "getobject", "getobjectdimensions", "getpaletsize", "getparameters", "getparwrapper", "getprivatechar", "getprivateslot", "getrandomcount", "getrandomdimen", "getrandomfloat", "getrandomnumber", "getrandomseed", "getraweparameters", "getrawgparameters", "getrawnoflines", "getrawparameters", "getrawxparameters", "getreference", "getreferenceentry", "getroundednoflines", "gets", "getsubstring", "gettokenlist", "gettwopassdata", "gettwopassdatalist", "getuserdata", "getuvalue", "getvalue", "getvariable", "getvariabledefault", "getxparameters", "gg", "ggg", "gggtr", "gimel", "globaldisablemode", "globalenablemode", "globalletempty", "globalpopbox", "globalpopmacro", "globalpreventmode", "globalprocesscommalist", "globalpushbox", "globalpushmacro", "globalswapcounts", "globalswapdimens", "globalswapmacros", "globalundefine", "glyphfontfile", "gnapprox", "gneqq", "gnsim", "gobbledoubleempty", "gobbleeightarguments", "gobblefivearguments", "gobblefiveoptionals", "gobblefourarguments", "gobblefouroptionals", "gobbleninearguments", "gobbleoneargument", "gobbleoneoptional", "gobblesevenarguments", "gobblesingleempty", "gobblesixarguments", "gobblespacetokens", "gobbletenarguments", "gobblethreearguments", "gobblethreeoptionals", "gobbletwoarguments", "gobbletwooptionals", "gobbleuntil", "gobbleuntilrelax", "godown", "goto", "gotobox", "gotopage", "grabbufferdata", "grabbufferdatadirect", "grabuntil", "grave", "graycolor", "grayvalue", "greedysplitstring", "greekAlpha", "greekAlphadasia", "greekAlphadasiaperispomeni", "greekAlphadasiatonos", "greekAlphadasiavaria", "greekAlphaiotasub", "greekAlphaiotasubdasia", "greekAlphaiotasubdasiaperispomeni", "greekAlphaiotasubdasiatonos", "greekAlphaiotasubdasiavaria", "greekAlphaiotasubpsili", "greekAlphaiotasubpsiliperispomeni", "greekAlphaiotasubpsilitonos", "greekAlphaiotasubpsilivaria", "greekAlphamacron", "greekAlphapsili", "greekAlphapsiliperispomeni", "greekAlphapsilitonos", "greekAlphapsilivaria", "greekAlphatonos", "greekAlphavaria", "greekAlphavrachy", "greekBeta", "greekChi", "greekCoronis", "greekDelta", "greekEpsilon", "greekEpsilondasia", "greekEpsilondasiatonos", "greekEpsilondasiavaria", "greekEpsilonpsili", "greekEpsilonpsilitonos", "greekEpsilonpsilivaria", "greekEpsilontonos", "greekEpsilonvaria", "greekEta", "greekEtadasia", "greekEtadasiaperispomeni", "greekEtadasiatonos", "greekEtadasiavaria", "greekEtaiotasub", "greekEtaiotasubdasia", "greekEtaiotasubdasiaperispomeni", "greekEtaiotasubdasiatonos", "greekEtaiotasubdasiavaria", "greekEtaiotasubpsili", "greekEtaiotasubpsiliperispomeni", "greekEtaiotasubpsilitonos", "greekEtaiotasubpsilivaria", "greekEtapsili", "greekEtapsiliperispomeni", "greekEtapsilitonos", "greekEtapsilivaria", "greekEtatonos", "greekEtavaria", "greekGamma", "greekIota", "greekIotadasia", "greekIotadasiaperispomeni", "greekIotadasiatonos", "greekIotadasiavaria", "greekIotadialytika", "greekIotamacron", "greekIotapsili", "greekIotapsiliperispomeni", "greekIotapsilitonos", "greekIotapsilivaria", "greekIotatonos", "greekIotavaria", "greekIotavrachy", "greekKappa", "greekLambda", "greekMu", "greekNu", "greekOmega", "greekOmegadasia", "greekOmegadasiaperispomeni", "greekOmegadasiatonos", "greekOmegadasiavaria", "greekOmegaiotasub", "greekOmegaiotasubdasia", "greekOmegaiotasubdasiaperispomeni", "greekOmegaiotasubdasiatonos", "greekOmegaiotasubdasiavaria", "greekOmegaiotasubpsili", "greekOmegaiotasubpsiliperispomeni", "greekOmegaiotasubpsilitonos", "greekOmegaiotasubpsilivaria", "greekOmegapsili", "greekOmegapsiliperispomeni", "greekOmegapsilitonos", "greekOmegapsilivaria", "greekOmegatonos", "greekOmegavaria", "greekOmicron", "greekOmicrondasia", "greekOmicrondasiatonos", "greekOmicrondasiavaria", "greekOmicronpsili", "greekOmicronpsilitonos", "greekOmicronpsilivaria", "greekOmicrontonos", "greekOmicronvaria", "greekPhi", "greekPi", "greekPsi", "greekRho", "greekRhodasia", "greekSigma", "greekSigmalunate", "greekTau", "greekTheta", "greekUpsilon", "greekUpsilondasia", "greekUpsilondasiaperispomeni", "greekUpsilondasiatonos", "greekUpsilondasiavaria", "greekUpsilondialytika", "greekUpsilonmacron", "greekUpsilontonos", "greekUpsilonvaria", "greekUpsilonvrachy", "greekXi", "greekZeta", "greekalpha", "greekalphadasia", "greekalphadasiaperispomeni", "greekalphadasiatonos", "greekalphadasiavaria", "greekalphaiotasub", "greekalphaiotasubdasia", "greekalphaiotasubdasiaperispomeni", "greekalphaiotasubdasiatonos", "greekalphaiotasubdasiavaria", "greekalphaiotasubperispomeni", "greekalphaiotasubpsili", "greekalphaiotasubpsiliperispomeni", "greekalphaiotasubpsilitonos", "greekalphaiotasubpsilivaria", "greekalphaiotasubtonos", "greekalphaiotasubvaria", "greekalphamacron", "greekalphaoxia", "greekalphaperispomeni", "greekalphapsili", "greekalphapsiliperispomeni", "greekalphapsilitonos", "greekalphapsilivaria", "greekalphatonos", "greekalphavaria", "greekalphavrachy", "greekbeta", "greekbetaalt", "greekchi", "greekdasia", "greekdasiaperispomeni", "greekdasiavaria", "greekdelta", "greekdialytikaperispomeni", "greekdialytikatonos", "greekdialytikavaria", "greekdigamma", "greekepsilon", "greekepsilonalt", "greekepsilondasia", "greekepsilondasiatonos", "greekepsilondasiavaria", "greekepsilonoxia", "greekepsilonpsili", "greekepsilonpsilitonos", "greekepsilonpsilivaria", "greekepsilontonos", "greekepsilonvaria", "greeketa", "greeketadasia", "greeketadasiaperispomeni", "greeketadasiatonos", "greeketadasiavaria", "greeketaiotasub", "greeketaiotasubdasia", "greeketaiotasubdasiaperispomeni", "greeketaiotasubdasiatonos", "greeketaiotasubdasiavaria", "greeketaiotasubperispomeni", "greeketaiotasubpsili", "greeketaiotasubpsiliperispomeni", "greeketaiotasubpsilitonos", "greeketaiotasubpsilivaria", "greeketaiotasubtonos", "greeketaiotasubvaria", "greeketaoxia", "greeketaperispomeni", "greeketapsili", "greeketapsiliperispomeni", "greeketapsilitonos", "greeketapsilivaria", "greeketatonos", "greeketavaria", "greekfinalsigma", "greekgamma", "greekiota", "greekiotadasia", "greekiotadasiaperispomeni", "greekiotadasiatonos", "greekiotadasiavaria", "greekiotadialytika", "greekiotadialytikaperispomeni", "greekiotadialytikatonos", "greekiotadialytikavaria", "greekiotamacron", "greekiotaoxia", "greekiotaperispomeni", "greekiotapsili", "greekiotapsiliperispomeni", "greekiotapsilitonos", "greekiotapsilivaria", "greekiotatonos", "greekiotavaria", "greekiotavrachy", "greekkappa", "greekkoppa", "greeklambda", "greekmu", "greeknu", "greeknumerals", "greeknumkoppa", "greekomega", "greekomegadasia", "greekomegadasiaperispomeni", "greekomegadasiatonos", "greekomegadasiavaria", "greekomegaiotasub", "greekomegaiotasubdasia", "greekomegaiotasubdasiaperispomeni", "greekomegaiotasubdasiatonos", "greekomegaiotasubdasiavaria", "greekomegaiotasubperispomeni", "greekomegaiotasubpsili", "greekomegaiotasubpsiliperispomeni", "greekomegaiotasubpsilitonos", "greekomegaiotasubpsilivaria", "greekomegaiotasubtonos", "greekomegaiotasubvaria", "greekomegaoxia", "greekomegaperispomeni", "greekomegapsili", "greekomegapsiliperispomeni", "greekomegapsilitonos", "greekomegapsilivaria", "greekomegatonos", "greekomegavaria", "greekomicron", "greekomicrondasia", "greekomicrondasiatonos", "greekomicrondasiavaria", "greekomicronoxia", "greekomicronpsili", "greekomicronpsilitonos", "greekomicronpsilivaria", "greekomicrontonos", "greekomicronvaria", "greekoxia", "greekperispomeni", "greekphi", "greekphialt", "greekpi", "greekpialt", "greekprosgegrammeni", "greekpsi", "greekpsili", "greekpsiliperispomeni", "greekpsilivaria", "greekrho", "greekrhoalt", "greekrhodasia", "greekrhopsili", "greeksampi", "greeksigma", "greeksigmalunate", "greekstigma", "greektau", "greektheta", "greekthetaalt", "greektonos", "greekupsilon", "greekupsilondasia", "greekupsilondasiaperispomeni", "greekupsilondasiatonos", "greekupsilondasiavaria", "greekupsilondiaeresis", "greekupsilondialytikaperispomeni", "greekupsilondialytikatonos", "greekupsilondialytikavaria", "greekupsilonmacron", "greekupsilonoxia", "greekupsilonperispomeni", "greekupsilonpsili", "greekupsilonpsiliperispomeni", "greekupsilonpsilitonos", "greekupsilonpsilivaria", "greekupsilontonos", "greekupsilonvaria", "greekupsilonvrachy", "greekvaria", "greekxi", "greekzeta", "grid", "groupedcommand", "gsetboxllx", "gsetboxlly", "gstroke", "gt", "gtrapprox", "gtrdot", "gtreqless", "gtreqqless", "gtrless", "gtrsim", "guilsingleleft", "guilsingleright", "gujaratinumerals", "gurmurkhinumerals", "hairline", "hairspace", "halflinestrut", "halfstrut", "halfwaybox", "handletokens", "handwritten", "hangul", "hanzi", "hash", "hat", "hbar", "hboxofvbox", "hboxreference", "hcaron", "hcircumflex", "hdofstring", "headhbox", "headlanguage", "headnumber", "headnumbercontent", "headnumberdistance", "headnumberwidth", "headreferenceattributes", "headsetupspacing", "headtext", "headtextcontent", "headtextdistance", "headtexts", "headtextwidth", "headvbox", "headwidth", "heartsuit", "hebrewAlef", "hebrewAyin", "hebrewBet", "hebrewDalet", "hebrewGimel", "hebrewHe", "hebrewHet", "hebrewKaf", "hebrewKaffinal", "hebrewLamed", "hebrewMem", "hebrewMemfinal", "hebrewNun", "hebrewNunfinal", "hebrewPe", "hebrewPefinal", "hebrewQof", "hebrewResh", "hebrewSamekh", "hebrewShin", "hebrewTav", "hebrewTet", "hebrewTsadi", "hebrewTsadifinal", "hebrewVav", "hebrewYod", "hebrewZayin", "hebrewnumerals", "heightanddepthofstring", "heightofstring", "heightspanningtext", "helptext", "hexnumber", "hexstringtonumber", "hglue", "hiddenbar", "hiddencitation", "hiddencite", "hideblocks", "high", "highlight", "highordinalstr", "hilo", "himilo", "hl", "hookleftarrow", "hookrightarrow", "horizontalgrowingbar", "horizontalpositionbar", "hpackbox", "hpackedbox", "hphantom", "hpos", "hsizefraction", "hslash", "hsmash", "hsmashbox", "hsmashed", "hspace", "hstroke", "htdpofstring", "htofstring", "hyphen", "hyphenatedcoloredword", "hyphenatedfile", "hyphenatedfilename", "hyphenatedhbox", "hyphenatedpar", "hyphenatedurl", "hyphenatedword", "iacute", "ibox", "ibreve", "icaron", "icircumflex", "ideographichalffillspace", "ideographicspace", "idiaeresis", "idotaccent", "idotbelow", "idoublegrave", "idxfromluatable", "ifassignment", "iff", "ifinobject", "ifinoutputstream", "ifparameters", "iftrialtypesetting", "ignoreimplicitspaces", "ignoretagsinexport", "ignorevalue", "igrave", "ihook", "ii", "iiiint", "iiiintop", "iiint", "iiintop", "iint", "iintop", "iinvertedbreve", "ijligature", "imacron", "imaginaryi", "imaginaryj", "imath", "immediatesavetwopassdata", "impliedby", "implies", "imply", "in", "includemenu", "includesvgbuffer", "includesvgfile", "includeversioninfo", "increment", "incrementcounter", "incrementedcounter", "incrementpagenumber", "incrementsubpagenumber", "incrementvalue", "indentation", "index", "infofont", "infofontbold", "inframed", "infty", "infull", "inheritparameter", "inhibitblank", "ininner", "ininneredge", "ininnermargin", "initializeboxstack", "inleft", "inleftedge", "inleftmargin", "inline", "inlinebuffer", "inlinedbox", "inlinemath", "inlinemathematics", "inlinemessage", "inlineordisplaymath", "inlineprettyprintbuffer", "inlinerange", "inmargin", "inmframed", "innerflushshapebox", "inother", "inouter", "inouteredge", "inoutermargin", "input", "inputfilebarename", "inputfilename", "inputfilerealsuffix", "inputfilesuffix", "inputgivenfile", "inright", "inrightedge", "inrightmargin", "insertpages", "inspectluatable", "installactionhandler", "installactivecharacter", "installanddefineactivecharacter", "installattributestack", "installautocommandhandler", "installautosetuphandler", "installbasicautosetuphandler", "installbasicparameterhandler", "installbottomframerenderer", "installcommandhandler", "installcorenamespace", "installctxfunction", "installctxscanner", "installdefinehandler", "installdefinitionset", "installdefinitionsetmember", "installdirectcommandhandler", "installdirectparameterhandler", "installdirectparametersethandler", "installdirectsetuphandler", "installdirectstyleandcolorhandler", "installframedautocommandhandler", "installframedcommandhandler", "installglobalmacrostack", "installlanguage", "installleftframerenderer", "installmacrostack", "installnamespace", "installoutputroutine", "installpagearrangement", "installparameterhandler", "installparameterhashhandler", "installparametersethandler", "installparentinjector", "installprotectedctxfunction", "installprotectedctxscanner", "installrightframerenderer", "installrootparameterhandler", "installsetuphandler", "installsetuponlycommandhandler", "installshipoutmethod", "installsimplecommandhandler", "installsimpleframedcommandhandler", "installstyleandcolorhandler", "installswitchcommandhandler", "installswitchsetuphandler", "installtexdirective", "installtextracker", "installtopframerenderer", "installunitsseparator", "installunitsspace", "installversioninfo", "int", "intclockwise", "integerrounding", "integers", "interactionbar", "interactionbuttons", "interactionmenu", "intercal", "intertext", "interwordspaceafter", "interwordspacebefore", "interwordspaces", "interwordspacesafter", "interwordspacesbefore", "intop", "invisiblecomma", "invisibleplus", "invisibletimes", "invokepagehandler", "iogonek", "iota", "italic", "italicbold", "italiccorrection", "italicface", "item", "items", "itemtag", "itilde", "jcaron", "jcircumflex", "ji", "jmath", "jobfilename", "jobfilesuffix", "kap", "kappa", "kcaron", "kcommaaccent", "keepblocks", "keeplinestogether", "keepunwantedspaces", "kerncharacters", "khook", "kkra", "koreancirclenumerals", "koreannumerals", "koreannumeralsc", "koreannumeralsp", "koreanparentnumerals", "lVert", "labellanguage", "labeltext", "labeltexts", "lacute", "lambda", "lambdabar", "land", "langle", "language", "languageCharacters", "languagecharacters", "languagecharwidth", "laplace", "lastcounter", "lastcountervalue", "lastdigit", "lastlinewidth", "lastnaturalboxdp", "lastnaturalboxht", "lastnaturalboxwd", "lastparwrapper", "lastpredefinedsymbol", "lastrealpage", "lastrealpagenumber", "lastsubcountervalue", "lastsubpage", "lastsubpagenumber", "lasttwodigits", "lastuserpage", "lastuserpagenumber", "lateluacode", "latin", "layeredtext", "layerheight", "layerwidth", "lazysavetaggedtwopassdata", "lazysavetwopassdata", "lbar", "lbox", "lbrace", "lbracket", "lcaron", "lceil", "lchexnumber", "lchexnumbers", "lcommaaccent", "lcurl", "ldotmiddle", "ldotp", "ldots", "le", "leadsto", "left", "leftaligned", "leftarrow", "leftarrowtail", "leftarrowtriangle", "leftbottombox", "leftbox", "leftdasharrow", "leftguillemot", "leftharpoondown", "leftharpoonup", "lefthbox", "leftheadtext", "leftlabeltext", "leftleftarrows", "leftline", "leftmathlabeltext", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "leftrightarrow", "leftrightarrows", "leftrightarrowtriangle", "leftrightharpoons", "leftrightsquigarrow", "leftskipadaption", "leftsquigarrow", "leftsubguillemot", "leftthreetimes", "lefttopbox", "lefttoright", "lefttorighthbox", "lefttorightvbox", "lefttorightvtop", "leftwavearrow", "leftwhitearrow", "leq", "leqq", "leqslant", "lessapprox", "lessdot", "lesseqgtr", "lesseqqgtr", "lessgtr", "lesssim", "letbeundefined", "letcatcodecommand", "letcscsname", "letcsnamecs", "letcsnamecsname", "letdummyparameter", "letempty", "letgvalue", "letgvalueempty", "letgvalurelax", "letterampersand", "letterat", "letterbackslash", "letterbar", "letterbgroup", "letterclosebrace", "lettercolon", "letterdollar", "letterdoublequote", "letteregroup", "letterescape", "letterexclamationmark", "letterhash", "letterhat", "letterleftbrace", "letterleftbracket", "letterleftparenthesis", "letterless", "lettermore", "letteropenbrace", "letterpercent", "letterquestionmark", "letterrightbrace", "letterrightbracket", "letterrightparenthesis", "lettersinglequote", "letterslash", "letterspacing", "lettertilde", "letterunderscore", "letvalue", "letvalueempty", "letvaluerelax", "lfence", "lfloor", "lgroup", "lhbox", "lhooknwarrow", "lhooksearrow", "limitatefirstline", "limitatelines", "limitatetext", "line", "linebox", "linefeed", "linefillerhbox", "linefillervbox", "linefillervtop", "linenote", "linespanningtext", "linethickness", "linterval", "listcitation", "listcite", "listlength", "listnamespaces", "literalmode", "ljligature", "ll", "llangle", "llap", "llbracket", "llcorner", "lll", "llless", "llointerval", "lmoustache", "lnapprox", "lneq", "lneqq", "lnot", "lnsim", "loadanyfile", "loadanyfileonce", "loadbtxdefinitionfile", "loadbtxreplacementfile", "loadcldfile", "loadcldfileonce", "loadfontgoodies", "loadluafile", "loadluafileonce", "loadspellchecklist", "loadtexfile", "loadtexfileonce", "loadtypescriptfile", "localframed", "localframedwithsettings", "localhsize", "localpopbox", "localpopmacro", "localpushbox", "localpushmacro", "localundefine", "locatedfilepath", "locatefilepath", "locfilename", "logo", "lohi", "lointerval", "lomihi", "longleftarrow", "longleftrightarrow", "longmapsfrom", "longmapsto", "longrightarrow", "longrightsquigarrow", "looparrowleft", "looparrowright", "lor", "low", "lowerbox", "lowercased", "lowercasestring", "lowercasing", "lowerleftdoubleninequote", "lowerleftsingleninequote", "lowerrightdoubleninequote", "lowerrightsingleninequote", "lozenge", "lparent", "lrcorner", "lrointerval", "lrtbbox", "lstroke", "lt", "ltimes", "ltop", "ltrhbox", "ltrvbox", "ltrvtop", "luaTeX", "luacode", "luaconditional", "luaenvironment", "luaexpanded", "luaexpr", "luafunction", "luajitTeX", "luamajorversion", "luametaTeX", "luaminorversion", "luaparameterset", "luasetup", "luaversion", "lvert", "m", "mLeftarrow", "mLeftrightarrow", "mRightarrow", "mainlanguage", "makecharacteractive", "makerawcommalist", "makestrutofbox", "maltese", "mapfontsize", "mapsdown", "mapsfrom", "mapsto", "mapsup", "margindata", "margintext", "markcontent", "markedpages", "marking", "markinjector", "markpage", "markreferencepage", "mat", "math", "mathampersand", "mathbf", "mathbi", "mathblackboard", "mathbs", "mathdefault", "mathdollar", "mathdouble", "mathematics", "mathfraktur", "mathfunction", "mathhash", "mathhyphen", "mathit", "mathitalic", "mathlabellanguage", "mathlabeltext", "mathlabeltexts", "mathop", "mathover", "mathpercent", "mathrm", "mathscript", "mathsl", "mathss", "mathtext", "mathtextbf", "mathtextbi", "mathtextbs", "mathtextit", "mathtextsl", "mathtexttf", "mathtf", "mathtriplet", "mathtt", "mathunder", "mathupright", "mathword", "mathwordbf", "mathwordbi", "mathwordbs", "mathwordit", "mathwordsl", "mathwordtf", "maxaligned", "mbox", "mcframed", "measure", "measured", "measuredangle", "measuredeq", "medskip", "medspace", "menubutton", "mequal", "message", "mfence", "mframed", "mfunction", "mfunctionlabeltext", "mhbox", "mho", "mhookleftarrow", "mhookrightarrow", "mid", "midaligned", "middle", "middlealigned", "middlebox", "midhbox", "midsubsentence", "minimalhbox", "minus", "minuscolon", "mirror", "mixedcaps", "mkvibuffer", "mleftarrow", "mleftharpoondown", "mleftharpoonup", "mleftrightarrow", "mleftrightharpoons", "mmapsto", "models", "moduleparameter", "molecule", "mono", "monobold", "mononormal", "month", "monthlong", "monthshort", "mp", "mprandomnumber", "mrel", "mrightarrow", "mrightharpoondown", "mrightharpoonup", "mrightleftharpoons", "mrightoverleftarrow", "mtext", "mtriplerel", "mtwoheadleftarrow", "mtwoheadrightarrow", "mu", "multimap", "nHdownarrow", "nHuparrow", "nLeftarrow", "nLeftrightarrow", "nRightarrow", "nVDash", "nVdash", "nVleftarrow", "nVleftrightarrow", "nVrightarrow", "nabla", "nacute", "namedheadnumber", "namedstructureheadlocation", "namedstructureuservariable", "namedstructurevariable", "namedtaggedlabeltexts", "napostrophe", "napprox", "napproxEq", "narrownobreakspace", "nasymp", "natural", "naturalhbox", "naturalhpack", "naturalnumbers", "naturaltpack", "naturalvbox", "naturalvcenter", "naturalvpack", "naturalvtop", "naturalwd", "ncaron", "ncommaaccent", "ncong", "ncurl", "ndivides", "ne", "nearrow", "neg", "negatecolorbox", "negated", "negativesign", "negemspace", "negenspace", "negthinspace", "neng", "neq", "nequiv", "neswarrow", "newattribute", "newcatcodetable", "newcounter", "newevery", "newfrenchspacing", "newluatable", "newmode", "newsignal", "newsystemmode", "nexists", "nextbox", "nextboxdp", "nextboxht", "nextboxhtdp", "nextboxwd", "nextcounter", "nextcountervalue", "nextdepth", "nextparagraphs", "nextrealpage", "nextrealpagenumber", "nextsubcountervalue", "nextsubpage", "nextsubpagenumber", "nextuserpage", "nextuserpagenumber", "ngeq", "ngrave", "ngtr", "ngtrless", "ngtrsim", "ni", "nihongo", "nin", "njligature", "nleftarrow", "nleftrightarrow", "nleq", "nless", "nlessgtr", "nlesssim", "nmid", "nni", "nobar", "nobreakspace", "nocap", "nocharacteralign", "nocitation", "nocite", "nodetostring", "noffigurepages", "noflines", "noflinesinbox", "noflocalfloats", "noheaderandfooterlines", "noheightstrut", "nohyphens", "noindentation", "noitem", "nonfrenchspacing", "nonmathematics", "nonvalidassignment", "normal", "normalboldface", "normalframedwithsettings", "normalitalicface", "normalizebodyfontsize", "normalizedfontsize", "normalizefontdepth", "normalizefontheight", "normalizefontline", "normalizefontwidth", "normalizetextdepth", "normalizetextheight", "normalizetextline", "normalizetextwidth", "normalslantedface", "normaltypeface", "nospace", "not", "note", "notesymbol", "notin", "notopandbottomlines", "notragged", "nowns", "nparallel", "nprec", "npreccurlyeq", "nrightarrow", "nsim", "nsimeq", "nsqsubseteq", "nsqsupseteq", "nsubset", "nsubseteq", "nsucc", "nsucccurlyeq", "nsupset", "nsupseteq", "ntilde", "ntimes", "ntriangleleft", "ntrianglelefteq", "ntriangleright", "ntrianglerighteq", "nu", "numberofpoints", "numbers", "nvDash", "nvdash", "nvleftarrow", "nvleftrightarrow", "nvrightarrow", "nwarrow", "nwsearrow", "oacute", "obeydepth", "objectdepth", "objectheight", "objectmargin", "objectwidth", "obox", "obreve", "ocaron", "ocircumflex", "ocircumflexacute", "ocircumflexdotbelow", "ocircumflexgrave", "ocircumflexhook", "ocircumflextilde", "octnumber", "octstringtonumber", "odiaeresis", "odiaeresismacron", "odot", "odotaccent", "odotaccentmacron", "odotbelow", "odoublegrave", "oeligature", "offset", "offsetbox", "ograve", "ohm", "ohook", "ohorn", "ohornacute", "ohorndotbelow", "ohorngrave", "ohornhook", "ohorntilde", "ohungarumlaut", "oiiint", "oiint", "oint", "ointclockwise", "ointctrclockwise", "oinvertedbreve", "omacron", "omega", "omicron", "ominus", "onedigitrounding", "oneeighth", "onefifth", "onehalf", "onequarter", "onesixth", "onesuperior", "onethird", "oogonek", "oogonekmacron", "operatorlanguage", "operatortext", "oplus", "ordfeminine", "ordinaldaynumber", "ordinalstr", "ordmasculine", "ornamenttext", "oslash", "ostroke", "ostrokeacute", "otilde", "otildemacron", "otimes", "outputfilename", "outputstreambox", "outputstreamcopy", "outputstreamunvbox", "outputstreamunvcopy", "over", "overbar", "overbars", "overbartext", "overbarunderbar", "overbrace", "overbracetext", "overbraceunderbrace", "overbracket", "overbrackettext", "overbracketunderbracket", "overlaybutton", "overlaycolor", "overlaydepth", "overlayfigure", "overlayheight", "overlayimage", "overlaylinecolor", "overlaylinewidth", "overlayoffset", "overlayrollbutton", "overlaywidth", "overleftarrow", "overleftharpoondown", "overleftharpoonup", "overleftrightarrow", "overloaderror", "overparent", "overparenttext", "overparentunderparent", "overrightarrow", "overrightharpoondown", "overrightharpoonup", "overset", "overstrike", "overstrikes", "overtwoheadleftarrow", "overtwoheadrightarrow", "owns", "page", "pagearea", "pagebreak", "pagefigure", "pageinjection", "pagenumber", "pagereference", "pagestaterealpage", "pagestaterealpageorder", "paletsize", "paragraphmark", "parallel", "part", "partial", "pdfTeX", "pdfactualtext", "pdfbackendactualtext", "pdfbackendcurrentresources", "pdfbackendsetcatalog", "pdfbackendsetcolorspace", "pdfbackendsetextgstate", "pdfbackendsetinfo", "pdfbackendsetname", "pdfbackendsetpageattribute", "pdfbackendsetpageresource", "pdfbackendsetpagesattribute", "pdfbackendsetpattern", "pdfbackendsetshade", "pdfcolor", "pdfeTeX", "percent", "percentdimen", "periodcentered", "periods", "permitcaretescape", "permitcircumflexescape", "permitspacesbetweengroups", "perp", "persiandecimals", "persiandecimalseparator", "persiannumerals", "persianthousandsseparator", "perthousand", "phantom", "phantombox", "phi", "phook", "pi", "pickupgroupedcommand", "pitchfork", "placeattachments", "placebookmarks", "placebtxrendering", "placechemical", "placecitation", "placecombinedlist", "placecomments", "placecontent", "placecurrentformulanumber", "placedbox", "placefigure", "placefloat", "placefloatcaption", "placefloatwithsetups", "placefootnotes", "placeformula", "placeframed", "placegraphic", "placeheadnumber", "placeheadtext", "placehelp", "placeholder", "placeindex", "placeinitial", "placeintermezzo", "placelayer", "placelayeredtext", "placelegend", "placelist", "placelistofabbreviations", "placelistofchemicals", "placelistoffigures", "placelistofgraphics", "placelistofintermezzi", "placelistoflogos", "placelistofpublications", "placelistofsorts", "placelistofsynonyms", "placelistoftables", "placelocalfootnotes", "placelocalnotes", "placement", "placenamedfloat", "placenamedformula", "placenotes", "placeongrid", "placeontopofeachother", "placepagenumber", "placepairedbox", "placeparallel", "placerawheaddata", "placerawheadnumber", "placerawheadtext", "placerawlist", "placeregister", "placerenderingwindow", "placesidebyside", "placesubformula", "placetable", "pm", "popattribute", "popmacro", "popmode", "popsystemmode", "position", "positionoverlay", "positionregionoverlay", "positivesign", "postponenotes", "prec", "precapprox", "preccurlyeq", "preceq", "preceqq", "precnapprox", "precneq", "precneqq", "precnsim", "precsim", "predefinedfont", "predefinefont", "predefinesymbol", "prefixedpagenumber", "prefixlanguage", "prefixtext", "prependetoks", "prependgvalue", "prependtocommalist", "prependtoks", "prependtoksonce", "prependvalue", "prerollblank", "presetbtxlabeltext", "presetdocument", "presetfieldsymbols", "presetheadtext", "presetlabeltext", "presetmathlabeltext", "presetoperatortext", "presetprefixtext", "presetsuffixtext", "presettaglabeltext", "presetunittext", "pretocommalist", "prettyprintbuffer", "prevcounter", "prevcountervalue", "preventmode", "prevrealpage", "prevrealpagenumber", "prevsubcountervalue", "prevsubpage", "prevsubpagenumber", "prevuserpage", "prevuserpagenumber", "prime", "primes", "procent", "processMPbuffer", "processMPfigurefile", "processaction", "processallactionsinset", "processassignlist", "processassignmentcommand", "processassignmentlist", "processbetween", "processblocks", "processbodyfontenvironmentlist", "processcolorcomponents", "processcommacommand", "processcommalist", "processcommalistwithparameters", "processcontent", "processfile", "processfilemany", "processfilenone", "processfileonce", "processfirstactioninset", "processisolatedchars", "processisolatedwords", "processlinetablebuffer", "processlinetablefile", "processlist", "processmonth", "processranges", "processseparatedlist", "processtexbuffer", "processtokens", "processuntil", "processxtablebuffer", "processyear", "prod", "product", "profiledbox", "profilegivenbox", "program", "project", "propto", "pseudoMixedCapped", "pseudoSmallCapped", "pseudoSmallcapped", "pseudosmallcapped", "psi", "punctuationspace", "purenumber", "pushattribute", "pushbutton", "pushmacro", "pushmode", "pushoutputstream", "pushsystemmode", "putboxincache", "putnextboxincache", "qquad", "quad", "quadrupleprime", "quads", "quarterstrut", "questiondown", "questionedeq", "quitcommalist", "quitprevcommalist", "quittypescriptscanning", "quotation", "quote", "quotedbl", "quotedblbase", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "quotesingle", "quotesinglebase", "rVert", "racute", "raggedbottom", "raggedcenter", "raggedleft", "raggedright", "raggedwidecenter", "raisebox", "randomizetext", "randomnumber", "rangle", "rationals", "rawcounter", "rawcountervalue", "rawdate", "rawdoifelseinset", "rawdoifinset", "rawdoifinsetelse", "rawgetparameters", "rawprocessaction", "rawprocesscommacommand", "rawprocesscommalist", "rawstructurelistuservariable", "rawsubcountervalue", "rbox", "rbrace", "rbracket", "rcaron", "rceil", "rcommaaccent", "rdoublegrave", "readfile", "readfixfile", "readjobfile", "readlocfile", "readsetfile", "readsysfile", "readtexfile", "readxmlfile", "realSmallCapped", "realSmallcapped", "realpagenumber", "reals", "realsmallcapped", "recursedepth", "recurselevel", "recursestring", "redoconvertfont", "ref", "reference", "referencecolumnnumber", "referencepagedetail", "referencepagestate", "referenceprefix", "referencerealpage", "referencesymbol", "referring", "registerattachment", "registerctxluafile", "registered", "registerexternalfigure", "registerfontclass", "registerhyphenationexception", "registerhyphenationpattern", "registermenubuttons", "registerparwrapper", "registerparwrapperreverse", "registersort", "registersynonym", "registerunit", "regular", "relatemarking", "relateparameterhandlers", "relaxvalueifundefined", "relbar", "remainingcharacters", "remark", "removebottomthings", "removedepth", "removefromcommalist", "removelastskip", "removelastspace", "removemarkedcontent", "removepunctuation", "removesubstring", "removetoks", "removeunwantedspaces", "repeathead", "replacefeature", "replaceincommalist", "replaceword", "rescan", "rescanwithsetup", "resetMPdrawing", "resetMPenvironment", "resetMPinstance", "resetallattributes", "resetandaddfeature", "resetbar", "resetboxesincache", "resetbreakpoints", "resetbuffer", "resetcharacteralign", "resetcharacterkerning", "resetcharacterspacing", "resetcharacterstripping", "resetcollector", "resetcounter", "resetctxscanner", "resetdigitsmanipulation", "resetdirection", "resetfeature", "resetflag", "resetfontcolorsheme", "resetfontfallback", "resetfontsolution", "resethyphenationfeatures", "resetinjector", "resetinteractionmenu", "resetitaliccorrection", "resetlayer", "resetlocalfloats", "resetmarker", "resetmarking", "resetmode", "resetpagenumber", "resetparallel", "resetpath", "resetpenalties", "resetperiodkerning", "resetprofile", "resetrecurselevel", "resetreference", "resetreplacements", "resetscript", "resetsetups", "resetshownsynonyms", "resetsubpagenumber", "resetsymbolset", "resetsystemmode", "resettimer", "resettokenlist", "resettrackers", "resettrialtypesetting", "resetusedsortings", "resetusedsynonyms", "resetuserpagenumber", "resetvalue", "resetvisualizers", "reshapebox", "resolvedglyphdirect", "resolvedglyphstyled", "restartcounter", "restorebox", "restorecatcodes", "restorecounter", "restorecurrentattributes", "restoreendofline", "restoreglobalbodyfont", "restriction", "retestfeature", "reusableMPgraphic", "reuseMPgraphic", "reuserandomseed", "reverseddoubleprime", "reversedprime", "reversedtripleprime", "reversehbox", "reversehpack", "reversetpack", "reversevbox", "reversevboxcontent", "reversevpack", "reversevtop", "revivefeature", "rfence", "rfloor", "rgroup", "rhbox", "rho", "rhooknearrow", "rhookswarrow", "right", "rightaligned", "rightangle", "rightarrow", "rightarrowbar", "rightarrowtail", "rightarrowtriangle", "rightbottombox", "rightbox", "rightdasharrow", "rightguillemot", "rightharpoondown", "rightharpoonup", "righthbox", "rightheadtext", "rightlabeltext", "rightleftarrows", "rightleftharpoons", "rightline", "rightmathlabeltext", "rightorleftpageaction", "rightpageorder", "rightrightarrows", "rightskipadaption", "rightsquigarrow", "rightsubguillemot", "rightthreearrows", "rightthreetimes", "righttoleft", "righttolefthbox", "righttoleftvbox", "righttoleftvtop", "righttopbox", "rightwavearrow", "rightwhitearrow", "ring", "rinterval", "rinvertedbreve", "risingdotseq", "rlap", "rlointerval", "rmoustache", "rneq", "robustaddtocommalist", "robustdoifelseinset", "robustdoifinsetelse", "robustpretocommalist", "rointerval", "rollbutton", "roman", "romanC", "romanD", "romanI", "romanII", "romanIII", "romanIV", "romanIX", "romanL", "romanM", "romanV", "romanVI", "romanVII", "romanVIII", "romanX", "romanXI", "romanXII", "romanc", "romand", "romani", "romanii", "romaniii", "romaniv", "romanix", "romanl", "romanm", "romannumerals", "romanv", "romanvi", "romanvii", "romanviii", "romanx", "romanxi", "romanxii", "rootradical", "rotate", "rparent", "rrangle", "rrbracket", "rrointerval", "rtimes", "rtlhbox", "rtlvbox", "rtlvtop", "rtop", "ruby", "ruledhbox", "ruledhpack", "ruledmbox", "ruledtopv", "ruledtpack", "ruledvbox", "ruledvpack", "ruledvtop", "runMPbuffer", "runninghbox", "russianNumerals", "russiannumerals", "rvert", "sacute", "safechar", "samplefile", "sans", "sansbold", "sansnormal", "sansserif", "savebox", "savebtxdataset", "savebuffer", "savecounter", "savecurrentattributes", "savenormalmeaning", "savetaggedtwopassdata", "savetwopassdata", "sbox", "scale", "scaron", "scedilla", "schwa", "schwahook", "scircumflex", "scommaaccent", "screen", "searrow", "secondoffivearguments", "secondoffourarguments", "secondofsixarguments", "secondofthreearguments", "secondofthreeunexpanded", "secondoftwoarguments", "secondoftwounexpanded", "section", "sectionmark", "seeindex", "select", "selectblocks", "serializecommalist", "serializedcommalist", "serif", "serifbold", "serifnormal", "setJSpreamble", "setMPlayer", "setMPpositiongraphic", "setMPpositiongraphicrange", "setMPtext", "setMPvariable", "setMPvariables", "setautopagestaterealpageno", "setbar", "setbigbodyfont", "setboxllx", "setboxlly", "setbreakpoints", "setcapstrut", "setcatcodetable", "setcharacteralign", "setcharacteraligndetail", "setcharactercasing", "setcharactercleaning", "setcharacterkerning", "setcharacterspacing", "setcharacterstripping", "setcharstrut", "setcollector", "setcolormodell", "setcounter", "setcounterown", "setctxluafunction", "setcurrentfontclass", "setdataset", "setdatavalue", "setdefaultpenalties", "setdigitsmanipulation", "setdirection", "setdocumentargument", "setdocumentargumentdefault", "setdocumentfilename", "setdummyparameter", "setelementexporttag", "setemeasure", "setevalue", "setevariable", "setevariables", "setexpansion", "setfirstline", "setfirstpasscharacteralign", "setflag", "setfont", "setfontcolorsheme", "setfontfeature", "setfontsolution", "setfontstrut", "setfractions", "setglobalscript", "setgmeasure", "setgvalue", "setgvariable", "setgvariables", "sethboxregister", "sethyphenatedurlafter", "sethyphenatedurlbefore", "sethyphenatedurlnormal", "sethyphenationfeatures", "setinitial", "setinjector", "setinteraction", "setinterfacecommand", "setinterfaceconstant", "setinterfaceelement", "setinterfacemessage", "setinterfacevariable", "setinternalrendering", "setitaliccorrection", "setlayer", "setlayerframed", "setlayertext", "setlinefiller", "setlocalhsize", "setlocalscript", "setluatable", "setmainbodyfont", "setmainparbuilder", "setmarker", "setmarking", "setmathstyle", "setmeasure", "setmessagetext", "setminus", "setmode", "setnostrut", "setnote", "setnotetext", "setobject", "setoldstyle", "setpagereference", "setpagestate", "setpagestaterealpageno", "setparagraphfreezing", "setpenalties", "setpercentdimen", "setperiodkerning", "setposition", "setpositionbox", "setpositiondata", "setpositiondataplus", "setpositiononly", "setpositionplus", "setpositionstrut", "setprofile", "setrandomseed", "setreference", "setreferencedobject", "setregisterentry", "setreplacements", "setrigidcolumnbalance", "setrigidcolumnhsize", "setscript", "setsecondpasscharacteralign", "setsectionblock", "setsimplecolumnshsize", "setsmallbodyfont", "setsmallcaps", "setstackbox", "setstructurepageregister", "setstrut", "setsuperiors", "setsystemmode", "settabular", "settaggedmetadata", "settestcrlf", "settextcontent", "settightobject", "settightreferencedobject", "settightstrut", "settightunreferencedobject", "settokenlist", "settrialtypesetting", "setuevalue", "setugvalue", "setunreferencedobject", "setup", "setupMPgraphics", "setupMPinstance", "setupMPpage", "setupMPvariables", "setupTABLE", "setupTEXpage", "setupalign", "setupalternativestyles", "setuparranging", "setupattachment", "setupattachments", "setupbackend", "setupbackground", "setupbackgrounds", "setupbar", "setupbars", "setupblackrules", "setupblank", "setupbleeding", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbookmark", "setupbottom", "setupbottomtexts", "setupbtx", "setupbtxdataset", "setupbtxlabeltext", "setupbtxlist", "setupbtxregister", "setupbtxrendering", "setupbuffer", "setupbutton", "setupcapitals", "setupcaption", "setupcaptions", "setupcharacteralign", "setupcharacterkerning", "setupcharacterspacing", "setupchemical", "setupchemicalframed", "setupclipping", "setupcollector", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetarea", "setupcolumnsetareatext", "setupcolumnsetlines", "setupcolumnsetspan", "setupcolumnsetstart", "setupcombination", "setupcombinedlist", "setupcomment", "setupcontent", "setupcounter", "setupdataset", "setupdelimitedtext", "setupdescription", "setupdescriptions", "setupdirections", "setupdocument", "setupeffect", "setupenumeration", "setupenumerations", "setupenv", "setupexpansion", "setupexport", "setupexternalfigure", "setupexternalfigures", "setupexternalsoundtracks", "setupfacingfloat", "setupfield", "setupfieldbody", "setupfieldcategory", "setupfieldcontentframed", "setupfieldlabelframed", "setupfields", "setupfieldtotalframed", "setupfiller", "setupfillinlines", "setupfillinrules", "setupfirstline", "setupfittingpage", "setupfloat", "setupfloatframed", "setupfloats", "setupfloatsplitting", "setupfontexpansion", "setupfontprotrusion", "setupfonts", "setupfontsolution", "setupfooter", "setupfootertexts", "setupfootnotes", "setupforms", "setupformula", "setupformulae", "setupformulaframed", "setupframed", "setupframedcontent", "setupframedtable", "setupframedtablecolumn", "setupframedtablerow", "setupframedtext", "setupframedtexts", "setupglobalreferenceprefix", "setuphead", "setupheadalternative", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphelp", "setuphigh", "setuphighlight", "setuphyphenation", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupindex", "setupinitial", "setupinsertion", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupitaliccorrection", "setupitemgroup", "setupitemizations", "setupitemize", "setupitems", "setuplabel", "setuplabeltext", "setuplanguage", "setuplayer", "setuplayeredtext", "setuplayout", "setuplayouttext", "setuplegend", "setuplinefiller", "setuplinefillers", "setuplinenote", "setuplinenumbering", "setuplines", "setuplinetable", "setuplinewidth", "setuplist", "setuplistalternative", "setuplistextra", "setuplocalfloats", "setuplocalinterlinespace", "setuplow", "setuplowhigh", "setuplowmidhigh", "setupmakeup", "setupmarginblock", "setupmargindata", "setupmarginframed", "setupmarginrule", "setupmarginrules", "setupmarking", "setupmathalignment", "setupmathcases", "setupmathematics", "setupmathfence", "setupmathfraction", "setupmathfractions", "setupmathframed", "setupmathlabeltext", "setupmathmatrix", "setupmathornament", "setupmathradical", "setupmathstackers", "setupmathstyle", "setupmixedcolumns", "setupmodule", "setupmulticolumns", "setupnarrower", "setupnotation", "setupnotations", "setupnote", "setupnotes", "setupoffset", "setupoffsetbox", "setupoperatortext", "setupoppositeplacing", "setuporientation", "setupoutput", "setupoutputroutine", "setuppagechecker", "setuppagecolumns", "setuppagecomment", "setuppageinjection", "setuppageinjectionalternative", "setuppagenumber", "setuppagenumbering", "setuppageshift", "setuppagestate", "setuppagetransitions", "setuppairedbox", "setuppalet", "setuppaper", "setuppapersize", "setupparagraph", "setupparagraphintro", "setupparagraphnumbering", "setupparagraphs", "setupparallel", "setupperiodkerning", "setupperiods", "setupplaceholder", "setupplacement", "setuppositionbar", "setuppositioning", "setupprefixtext", "setupprocessor", "setupprofile", "setupprograms", "setupquotation", "setupquote", "setuprealpagenumber", "setupreferenceformat", "setupreferenceprefix", "setupreferencestructureprefix", "setupreferencing", "setupregister", "setupregisters", "setuprenderingwindow", "setuprotate", "setupruby", "setups", "setupscale", "setupscript", "setupscripts", "setupsectionblock", "setupselector", "setupshift", "setupsidebar", "setupsorting", "setupspacing", "setupspellchecking", "setupstartstop", "setupstretched", "setupstrut", "setupstyle", "setupsubformula", "setupsubformulas", "setupsubpagenumber", "setupsuffixtext", "setupsymbols", "setupsymbolset", "setupsynctex", "setupsynonyms", "setupsystem", "setuptables", "setuptabulate", "setuptagging", "setuptaglabeltext", "setuptext", "setuptextbackground", "setuptextflow", "setuptextnote", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptooltip", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunit", "setupunittext", "setupurl", "setupuserdata", "setupuserdataalternative", "setupuserpagenumber", "setupversion", "setupviewerlayer", "setupvspacing", "setupwhitespace", "setupwithargument", "setupwithargumentswapped", "setupxml", "setupxtable", "setuvalue", "setuxvalue", "setvalue", "setvariable", "setvariables", "setvboxregister", "setvisualizerfont", "setvtopregister", "setwidthof", "setxmeasure", "setxvalue", "setxvariable", "setxvariables", "seveneighths", "sfrac", "shapedhbox", "sharp", "shiftbox", "shiftdown", "shiftup", "showallmakeup", "showattributes", "showbodyfont", "showbodyfontenvironment", "showboxes", "showbtxdatasetauthors", "showbtxdatasetcompleteness", "showbtxdatasetfields", "showbtxfields", "showbtxhashedauthors", "showbtxtables", "showchardata", "showcharratio", "showcolor", "showcolorbar", "showcolorcomponents", "showcolorgroup", "showcolorset", "showcolorstruts", "showcounter", "showdirectives", "showdirsinmargin", "showedebuginfo", "showexperiments", "showfont", "showfontdata", "showfontexpansion", "showfontitalics", "showfontkerns", "showfontparameters", "showfontstrip", "showfontstyle", "showframe", "showglyphdata", "showglyphs", "showgrid", "showgridsnapping", "showhelp", "showhyphenationtrace", "showhyphens", "showinjector", "showjustification", "showkerning", "showlayout", "showlayoutcomponents", "showligature", "showligatures", "showlogcategories", "showluatables", "showmakeup", "showmargins", "showmessage", "showminimalbaseline", "shownextbox", "showotfcomposition", "showpalet", "showparentchain", "showparwrapperstate", "showprint", "showsetups", "showsetupsdefinition", "showstruts", "showsymbolset", "showtimer", "showtokens", "showtrackers", "showvalue", "showvariable", "showwarning", "sigma", "signalrightpage", "sim", "simeq", "simplealignedbox", "simplealignedboxplus", "simplealignedspreadbox", "simplegroupedcommand", "simplereversealignedbox", "simplereversealignedboxplus", "singalcharacteralign", "singlebond", "singleverticalbar", "sixperemspace", "sixthofsixarguments", "slanted", "slantedbold", "slantedface", "slash", "slicepages", "slong", "slovenianNumerals", "sloveniannumerals", "small", "smallbodyfont", "smallbold", "smallbolditalic", "smallboldslanted", "smallcappedcharacters", "smallcappedromannumerals", "smallcaps", "smaller", "smallitalicbold", "smallnormal", "smallskip", "smallslanted", "smallslantedbold", "smalltype", "smash", "smashbox", "smashboxed", "smashedhbox", "smashedvbox", "smile", "snaptogrid", "softhyphen", "solidus", "someheadnumber", "somekindoftab", "someline", "somelocalfloat", "somenamedheadnumber", "someplace", "somewhere", "space", "spaceddigits", "spaceddigitsmethod", "spaceddigitsseparator", "spaceddigitssymbol", "spadesuit", "spanishNumerals", "spanishnumerals", "speech", "sphericalangle", "splitatasterisk", "splitatcolon", "splitatcolons", "splitatcomma", "splitatperiod", "splitdfrac", "splitfilename", "splitfloat", "splitfrac", "splitoffbase", "splitofffull", "splitoffkind", "splitoffname", "splitoffpath", "splitoffroot", "splitofftokens", "splitofftype", "splitstring", "spreadhbox", "sqcap", "sqcup", "sqrt", "sqsubset", "sqsubseteq", "sqsubsetneq", "sqsupset", "sqsupseteq", "sqsupsetneq", "square", "squaredots", "ssharp", "stackrel", "stackscripts", "star", "stareq", "startJScode", "startJSpreamble", "startLUA", "startMP", "startMPclip", "startMPcode", "startMPdefinitions", "startMPdrawing", "startMPenvironment", "startMPextensions", "startMPinclusions", "startMPinitializations", "startMPpage", "startMPpositiongraphic", "startMPpositionmethod", "startMPrun", "startPARSEDXML", "startTABLE", "startTABLEbody", "startTABLEfoot", "startTABLEhead", "startTABLEnested", "startTABLEnext", "startTC", "startTD", "startTDs", "startTEX", "startTEXpage", "startTH", "startTN", "startTR", "startTRs", "startTX", "startTY", "startXML", "startalign", "startalignment", "startallmodes", "startappendices", "startarrangedpages", "startasciimode", "startaside", "startattachment", "startbackground", "startbackmatter", "startbar", "startbbordermatrix", "startbitmapimage", "startblockquote", "startbodymatter", "startbordermatrix", "startboxedcolumns", "startbtxlabeltext", "startbtxrenderingdefinitions", "startbuffer", "startcases", "startcatcodetable", "startcenteraligned", "startchapter", "startcharacteralign", "startcheckedfences", "startchemical", "startchemicaltext", "startcollect", "startcollecting", "startcolor", "startcolorintent", "startcoloronly", "startcolorset", "startcolumns", "startcolumnset", "startcolumnsetspan", "startcombination", "startcomment", "startcomponent", "startcontextcode", "startcontextdefinitioncode", "startctxfunction", "startctxfunctiondefinition", "startcurrentcolor", "startcurrentlistentrywrapper", "startdelimited", "startdelimitedtext", "startdisplaymath", "startdmath", "startdocument", "starteffect", "startelement", "startembeddedxtable", "startendnote", "startendofline", "startenvironment", "startexceptions", "startexpanded", "startexpandedcollect", "startextendedcatcodetable", "startexternalfigurecollection", "startfacingfloat", "startfact", "startfigure", "startfiguretext", "startfittingpage", "startfixed", "startfloatcombination", "startfont", "startfontclass", "startfontsolution", "startfootnote", "startformula", "startformulas", "startframed", "startframedcell", "startframedcontent", "startframedrow", "startframedtable", "startframedtext", "startfrontmatter", "startgoto", "startgraphictext", "startgridsnapping", "starthanging", "starthbox", "starthboxestohbox", "starthboxregister", "starthead", "startheadtext", "starthelptext", "starthiding", "starthighlight", "starthyphenation", "startimath", "startindentation", "startindentedtext", "startinteraction", "startinteractionmenu", "startinterface", "startintermezzotext", "startintertext", "startitem", "startitemgroup", "startitemgroupcolumns", "startitemize", "startknockout", "startlabeltext", "startlanguage", "startlayout", "startleftaligned", "startlegend", "startline", "startlinealignment", "startlinecorrection", "startlinefiller", "startlinenote", "startlinenumbering", "startlines", "startlinetable", "startlinetablebody", "startlinetablecell", "startlinetablehead", "startlocalfootnotes", "startlocalheadsetup", "startlocallinecorrection", "startlocalnotes", "startlocalsetups", "startlua", "startluacode", "startluaparameterset", "startluasetups", "startmakeup", "startmarginblock", "startmarginrule", "startmarkedcontent", "startmarkpages", "startmathalignment", "startmathcases", "startmathlabeltext", "startmathmatrix", "startmathmode", "startmathstyle", "startmatrices", "startmatrix", "startmaxaligned", "startmdformula", "startmidaligned", "startmiddlealigned", "startmiddlemakeup", "startmixedcolumns", "startmode", "startmodeset", "startmodule", "startmoduletestsection", "startmpformula", "startmulticolumns", "startnamedsection", "startnamedsubformulas", "startnarrow", "startnarrower", "startnegative", "startnicelyfilledbox", "startnointerference", "startnotallmodes", "startnotext", "startnotmode", "startoperatortext", "startopposite", "startoutputstream", "startoverlay", "startoverprint", "startpacked", "startpagecolumns", "startpagecomment", "startpagefigure", "startpagelayout", "startpagemakeup", "startpar", "startparagraph", "startparagraphs", "startparagraphscell", "startparbuilder", "startpart", "startpath", "startplacechemical", "startplacefigure", "startplacefloat", "startplaceformula", "startplacegraphic", "startplaceintermezzo", "startplacelegend", "startplacepairedbox", "startplacetable", "startpositioning", "startpositionoverlay", "startpositive", "startpostponing", "startpostponingnotes", "startprefixtext", "startprocessassignmentcommand", "startprocessassignmentlist", "startprocesscommacommand", "startprocesscommalist", "startproduct", "startproject", "startprotect", "startprotectedcolors", "startpublication", "startpunctuation", "startquotation", "startquote", "startrandomized", "startrandomseed", "startrawsetups", "startreadingfile", "startreferenceprefix", "startregime", "startregister", "startreusableMPgraphic", "startrightaligned", "startruby", "startscript", "startsdformula", "startsection", "startsectionblock", "startsectionblockenvironment", "startsectionlevel", "startsetups", "startshapebox", "startshift", "startsidebar", "startsimplecolumns", "startspecialitem", "startspeech", "startspformula", "startsplitformula", "startsplittext", "startspread", "startstandardmakeup", "startstaticMPfigure", "startstaticMPgraphic", "startstrictinspectnextcharacter", "startstructurepageregister", "startstrut", "startstyle", "startsubformulas", "startsubject", "startsubjectlevel", "startsubsection", "startsubsentence", "startsubstack", "startsubsubject", "startsubsubsection", "startsubsubsubject", "startsubsubsubsection", "startsubsubsubsubject", "startsubsubsubsubsection", "startsubsubsubsubsubject", "startsuffixtext", "startsymbolset", "starttable", "starttablehead", "starttables", "starttabletail", "starttabletext", "starttabulate", "starttabulatehead", "starttabulatetail", "starttagged", "starttaglabeltext", "starttexcode", "starttexdefinition", "starttext", "starttextbackground", "starttextbackgroundmanual", "starttextcolor", "starttextcolorintent", "starttextflow", "starttextmakeup", "starttextrule", "startthematrix", "starttitle", "starttokenlist", "starttokens", "starttransparent", "starttypescript", "starttypescriptcollection", "starttyping", "startuniqueMPgraphic", "startuniqueMPpagegraphic", "startunittext", "startunpacked", "startusableMPgraphic", "startuseMPgraphic", "startusemathstyleparameter", "startuserdata", "startusingbtxspecification", "startvbox", "startvboxregister", "startvboxtohbox", "startvboxtohboxseparator", "startviewerlayer", "startvtop", "startvtopregister", "startxcell", "startxcellgroup", "startxcolumn", "startxgroup", "startxmldisplayverbatim", "startxmlinlineverbatim", "startxmlraw", "startxmlsetups", "startxrow", "startxrowgroup", "startxtable", "startxtablebody", "startxtablefoot", "startxtablehead", "startxtablenext", "stligature", "stopJScode", "stopJSpreamble", "stopLUA", "stopMP", "stopMPclip", "stopMPcode", "stopMPdefinitions", "stopMPdrawing", "stopMPenvironment", "stopMPextensions", "stopMPinclusions", "stopMPinitializations", "stopMPpage", "stopMPpositiongraphic", "stopMPpositionmethod", "stopMPrun", "stopPARSEDXML", "stopTABLE", "stopTABLEbody", "stopTABLEfoot", "stopTABLEhead", "stopTABLEnested", "stopTABLEnext", "stopTC", "stopTD", "stopTDs", "stopTEX", "stopTEXpage", "stopTH", "stopTN", "stopTR", "stopTRs", "stopTX", "stopTY", "stopXML", "stopalign", "stopalignment", "stopallmodes", "stopappendices", "stoparrangedpages", "stopasciimode", "stopaside", "stopattachment", "stopbackground", "stopbackmatter", "stopbar", "stopbbordermatrix", "stopbitmapimage", "stopblockquote", "stopbodymatter", "stopbordermatrix", "stopboxedcolumns", "stopbtxlabeltext", "stopbtxrenderingdefinitions", "stopbuffer", "stopcases", "stopcatcodetable", "stopcenteraligned", "stopchapter", "stopcharacteralign", "stopcheckedfences", "stopchemical", "stopchemicaltext", "stopcollect", "stopcollecting", "stopcolor", "stopcolorintent", "stopcoloronly", "stopcolorset", "stopcolumns", "stopcolumnset", "stopcolumnsetspan", "stopcombination", "stopcomment", "stopcomponent", "stopcontextcode", "stopcontextdefinitioncode", "stopctxfunction", "stopctxfunctiondefinition", "stopcurrentcolor", "stopcurrentlistentrywrapper", "stopdelimited", "stopdelimitedtext", "stopdisplaymath", "stopdmath", "stopdocument", "stopeffect", "stopelement", "stopembeddedxtable", "stopendnote", "stopendofline", "stopenvironment", "stopexceptions", "stopexpanded", "stopexpandedcollect", "stopextendedcatcodetable", "stopexternalfigurecollection", "stopfacingfloat", "stopfact", "stopfigure", "stopfiguretext", "stopfittingpage", "stopfixed", "stopfloatcombination", "stopfont", "stopfontclass", "stopfontsolution", "stopfootnote", "stopformula", "stopformulas", "stopframed", "stopframedcell", "stopframedcontent", "stopframedrow", "stopframedtable", "stopframedtext", "stopfrontmatter", "stopgoto", "stopgraphictext", "stopgridsnapping", "stophanging", "stophbox", "stophboxestohbox", "stophboxregister", "stophead", "stopheadtext", "stophelptext", "stophiding", "stophighlight", "stophyphenation", "stopimath", "stopindentation", "stopindentedtext", "stopinteraction", "stopinteractionmenu", "stopinterface", "stopintermezzotext", "stopintertext", "stopitem", "stopitemgroup", "stopitemgroupcolumns", "stopitemize", "stopknockout", "stoplabeltext", "stoplanguage", "stoplayout", "stopleftaligned", "stoplegend", "stopline", "stoplinealignment", "stoplinecorrection", "stoplinefiller", "stoplinenote", "stoplinenumbering", "stoplines", "stoplinetable", "stoplinetablebody", "stoplinetablecell", "stoplinetablehead", "stoplocalfootnotes", "stoplocalheadsetup", "stoplocallinecorrection", "stoplocalnotes", "stoplocalsetups", "stoplua", "stopluacode", "stopluaparameterset", "stopluasetups", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopmarkedcontent", "stopmarkpages", "stopmathalignment", "stopmathcases", "stopmathlabeltext", "stopmathmatrix", "stopmathmode", "stopmathstyle", "stopmatrices", "stopmatrix", "stopmaxaligned", "stopmdformula", "stopmidaligned", "stopmiddlealigned", "stopmiddlemakeup", "stopmixedcolumns", "stopmode", "stopmodeset", "stopmodule", "stopmoduletestsection", "stopmpformula", "stopmulticolumns", "stopnamedsection", "stopnamedsubformulas", "stopnarrow", "stopnarrower", "stopnegative", "stopnicelyfilledbox", "stopnointerference", "stopnotallmodes", "stopnotext", "stopnotmode", "stopoperatortext", "stopopposite", "stopoutputstream", "stopoverlay", "stopoverprint", "stoppacked", "stoppagecolumns", "stoppagecomment", "stoppagefigure", "stoppagelayout", "stoppagemakeup", "stoppar", "stopparagraph", "stopparagraphs", "stopparagraphscell", "stopparbuilder", "stoppart", "stoppath", "stopplacechemical", "stopplacefigure", "stopplacefloat", "stopplaceformula", "stopplacegraphic", "stopplaceintermezzo", "stopplacelegend", "stopplacepairedbox", "stopplacetable", "stoppositioning", "stoppositionoverlay", "stoppositive", "stoppostponing", "stoppostponingnotes", "stopprefixtext", "stopprocessassignmentcommand", "stopprocessassignmentlist", "stopprocesscommacommand", "stopprocesscommalist", "stopproduct", "stopproject", "stopprotect", "stopprotectedcolors", "stoppublication", "stoppunctuation", "stopquotation", "stopquote", "stoprandomized", "stoprandomseed", "stoprawsetups", "stopreadingfile", "stopreferenceprefix", "stopregime", "stopreusableMPgraphic", "stoprightaligned", "stopruby", "stopscript", "stopsdformula", "stopsection", "stopsectionblock", "stopsectionblockenvironment", "stopsectionlevel", "stopsetups", "stopshapebox", "stopshift", "stopsidebar", "stopsimplecolumns", "stopspecialitem", "stopspeech", "stopspformula", "stopsplitformula", "stopsplittext", "stopspread", "stopstandardmakeup", "stopstaticMPfigure", "stopstaticMPgraphic", "stopstrictinspectnextcharacter", "stopstrut", "stopstyle", "stopsubformulas", "stopsubject", "stopsubjectlevel", "stopsubsection", "stopsubsentence", "stopsubstack", "stopsubsubject", "stopsubsubsection", "stopsubsubsubject", "stopsubsubsubsection", "stopsubsubsubsubject", "stopsubsubsubsubsection", "stopsubsubsubsubsubject", "stopsuffixtext", "stopsymbolset", "stoptable", "stoptablehead", "stoptables", "stoptabletail", "stoptabletext", "stoptabulate", "stoptabulatehead", "stoptabulatetail", "stoptagged", "stoptaglabeltext", "stoptexcode", "stoptexdefinition", "stoptext", "stoptextbackground", "stoptextbackgroundmanual", "stoptextcolor", "stoptextcolorintent", "stoptextflow", "stoptextmakeup", "stoptextrule", "stopthematrix", "stoptitle", "stoptokenlist", "stoptokens", "stoptransparent", "stoptypescript", "stoptypescriptcollection", "stoptyping", "stopuniqueMPgraphic", "stopuniqueMPpagegraphic", "stopunittext", "stopunpacked", "stopusableMPgraphic", "stopuseMPgraphic", "stopusemathstyleparameter", "stopuserdata", "stopusingbtxspecification", "stopvbox", "stopvboxregister", "stopvboxtohbox", "stopvboxtohboxseparator", "stopviewerlayer", "stopvtop", "stopvtopregister", "stopxcell", "stopxcellgroup", "stopxcolumn", "stopxgroup", "stopxmldisplayverbatim", "stopxmlinlineverbatim", "stopxmlraw", "stopxmlsetups", "stopxrow", "stopxrowgroup", "stopxtable", "stopxtablebody", "stopxtablefoot", "stopxtablehead", "stopxtablenext", "stretched", "strictdoifelsenextoptional", "strictdoifnextoptionalelse", "stripcharacter", "strippedcsname", "stripspaces", "structurelistuservariable", "structurenumber", "structuretitle", "structureuservariable", "structurevariable", "strut", "strutdp", "strutgap", "strutht", "struthtdp", "struttedbox", "strutwd", "style", "styleinstance", "subject", "subpagenumber", "subsection", "subsentence", "subset", "subseteq", "subseteqq", "subsetneq", "subsetneqq", "substituteincommalist", "subsubject", "subsubsection", "subsubsubject", "subsubsubsection", "subsubsubsubject", "subsubsubsubsection", "subsubsubsubsubject", "subtractfeature", "succ", "succapprox", "succcurlyeq", "succeq", "succeqq", "succnapprox", "succneq", "succneqq", "succnsim", "succsim", "suffixlanguage", "suffixtext", "sum", "supset", "supseteq", "supseteqq", "supsetneq", "supsetneqq", "surd", "surdradical", "swapcounts", "swapdimens", "swapface", "swapmacros", "swaptypeface", "swarrow", "switchstyleonly", "switchtobodyfont", "switchtocolor", "switchtointerlinespace", "symbol", "symbolreference", "synchronizeblank", "synchronizeindenting", "synchronizemarking", "synchronizeoutputstreams", "synchronizestrut", "synchronizewhitespace", "synctexblockfilename", "synctexresetfilename", "synctexsetfilename", "systemlog", "systemlogfirst", "systemloglast", "systemsetups", "tLeftarrow", "tLeftrightarrow", "tRightarrow", "tabulateautoline", "tabulateautorule", "tabulateline", "tabulaterule", "taggedctxcommand", "taggedlabeltexts", "taglabellanguage", "taglabeltext", "tau", "tbinom", "tbox", "tcaron", "tcedilla", "tcommaaccent", "tcurl", "tequal", "test", "testandsplitstring", "testcolumn", "testfeature", "testfeatureonce", "testpage", "testpageonly", "testpagesync", "testtokens", "tex", "texdefinition", "texsetup", "textAngstrom", "textacute", "textampersand", "textasciicircum", "textasciitilde", "textat", "textbackslash", "textbar", "textbottomcomma", "textbottomdot", "textbraceleft", "textbraceright", "textbreve", "textbrokenbar", "textbullet", "textcaron", "textcedilla", "textcelsius", "textcent", "textcircledP", "textcircumflex", "textcitation", "textcite", "textcomma", "textcontrolspace", "textcurrency", "textdag", "textddag", "textdegree", "textdiaeresis", "textdiv", "textdollar", "textdong", "textdotaccent", "textellipsis", "texteuro", "textflowcollector", "textfraction", "textgrave", "texthash", "texthorizontalbar", "texthungarumlaut", "texthyphen", "textkelvin", "textlognot", "textmacron", "textmath", "textmho", "textminus", "textmp", "textmu", "textmultiply", "textnumero", "textogonek", "textohm", "textormathchar", "textormathchars", "textounce", "textpercent", "textperiod", "textplus", "textpm", "textreference", "textring", "textrule", "textslash", "textsterling", "texttilde", "textunderscore", "textvisiblespace", "textyen", "thai", "thainumerals", "thedatavalue", "thefirstcharacter", "thematrix", "thenormalizedbodyfontsize", "theorientation", "therefore", "theremainingcharacters", "theta", "thickspace", "thinrule", "thinrules", "thinspace", "thirdoffivearguments", "thirdoffourarguments", "thirdofsixarguments", "thirdofthreearguments", "thirdofthreeunexpanded", "thook", "thookleftarrow", "thookrightarrow", "thorn", "threedigitrounding", "threeeighths", "threefifths", "threeperemspace", "threequarter", "threesuperior", "tibetannumerals", "tightlayer", "tilde", "times", "tinyfont", "title", "tlap", "tleftarrow", "tleftharpoondown", "tleftharpoonup", "tleftrightarrow", "tleftrightharpoons", "tmapsto", "to", "tochar", "tolinenote", "tooltip", "top", "topbox", "topleftbox", "toplinebox", "toprightbox", "topskippedbox", "tracecatcodetables", "tracedfontname", "tracedpagestate", "traceoutputroutines", "tracepositions", "trademark", "translate", "transparencycomponents", "transparent", "trel", "triangle", "triangledown", "triangleleft", "triangleq", "triangleright", "trightarrow", "trightharpoondown", "trightharpoonup", "trightleftharpoons", "trightoverleftarrow", "triplebond", "tripleprime", "tripleverticalbar", "truefilename", "truefontname", "tstroke", "ttraggedright", "ttriplerel", "ttwoheadleftarrow", "ttwoheadrightarrow", "turnediota", "twodigitrounding", "twofifths", "twoheaddownarrow", "twoheadleftarrow", "twoheadrightarrow", "twoheadrightarrowtail", "twoheaduparrow", "twosuperior", "twothirds", "tx", "txx", "typ", "type", "typebuffer", "typedefinedbuffer", "typeface", "typefile", "typeinlinebuffer", "typescriptone", "typescriptprefix", "typescriptthree", "typescripttwo", "typesetbuffer", "typesetbufferonly", "typesetfile", "uacute", "ubreve", "ucaron", "uchexnumber", "uchexnumbers", "ucircumflex", "uconvertnumber", "udiaeresis", "udiaeresisacute", "udiaeresiscaron", "udiaeresisgrave", "udiaeresismacron", "udotbelow", "udots", "udoublegrave", "uedcatcodecommand", "ugrave", "uhook", "uhorn", "uhornacute", "uhorndotbelow", "uhorngrave", "uhornhook", "uhorntilde", "uhungarumlaut", "uinvertedbreve", "ulcorner", "umacron", "undefinevalue", "undepthed", "underbar", "underbars", "underbartext", "underbrace", "underbracetext", "underbracket", "underbrackettext", "underdash", "underdashes", "underdot", "underdots", "underleftarrow", "underleftharpoondown", "underleftharpoonup", "underleftrightarrow", "underparent", "underparenttext", "underrandom", "underrandoms", "underrightarrow", "underrightharpoondown", "underrightharpoonup", "underset", "understrike", "understrikes", "undertwoheadleftarrow", "undertwoheadrightarrow", "undoassign", "unexpandeddocumentvariable", "unframed", "unhhbox", "unihex", "uniqueMPgraphic", "uniqueMPpagegraphic", "unit", "unitlanguage", "unitshigh", "unitslow", "unittext", "unknown", "unprotected", "unregisterhyphenationpattern", "unregisterparwrapper", "unspaceafter", "unspaceargument", "unspaced", "unspacestring", "unstackscripts", "untexargument", "untexcommand", "uogonek", "upand", "uparrow", "updasharrow", "updateparagraphdemerits", "updateparagraphpenalties", "updateparagraphproperties", "updateparagraphshapes", "updownarrow", "updownarrowbar", "updownarrows", "upharpoonleft", "upharpoonright", "uplus", "uppercased", "uppercasestring", "uppercasing", "upperleftdoubleninequote", "upperleftdoublesixquote", "upperleftsingleninequote", "upperleftsinglesixquote", "upperrightdoubleninequote", "upperrightdoublesixquote", "upperrightsingleninequote", "upperrightsinglesixquote", "upsilon", "upuparrows", "upwhitearrow", "urcorner", "uring", "url", "useJSscripts", "useMPenvironmentbuffer", "useMPgraphic", "useMPlibrary", "useMPrun", "useMPvariables", "useURL", "usealignparameter", "useblankparameter", "useblocks", "usebodyfont", "usebodyfontparameter", "usebtxdataset", "usebtxdefinitions", "usecitation", "usecolors", "usecomponent", "usedirectory", "usedummycolorparameter", "usedummystyleandcolor", "usedummystyleparameter", "useenvironment", "useexternaldocument", "useexternalfigure", "useexternalrendering", "useexternalsoundtrack", "usefigurebase", "usefile", "usefontpath", "usegridparameter", "usehyphensparameter", "useindentingparameter", "useindentnextparameter", "useinterlinespaceparameter", "uselanguageparameter", "useluamodule", "useluatable", "usemathstyleparameter", "usemodule", "useproduct", "useprofileparameter", "useproject", "usereferenceparameter", "userpagenumber", "usesetupsparameter", "usestaticMPfigure", "usesubpath", "usesymbols", "usetexmodule", "usetypescript", "usetypescriptfile", "useurl", "usezipfile", "utfchar", "utflower", "utfupper", "utilde", "utilityregisterlength", "vDash", "validassignment", "varTheta", "varepsilon", "varkappa", "varnothing", "varphi", "varpi", "varrho", "varsigma", "vartheta", "vboxreference", "vdash", "vdots", "vec", "vee", "veebar", "veeeq", "verbatim", "verbatimstring", "verbosenumber", "version", "vert", "verticalgrowingbar", "verticalpositionbar", "veryraggedcenter", "veryraggedleft", "veryraggedright", "vglue", "viewerlayer", "vl", "vpackbox", "vpackedbox", "vphantom", "vpos", "vsmash", "vsmashbox", "vsmashed", "vspace", "vspacing", "wcircumflex", "wdofstring", "wedge", "wedgeeq", "weekday", "whitearrowupfrombar", "widegrave", "widehat", "widetilde", "widthofstring", "widthspanningtext", "withoutpt", "word", "wordright", "words", "wordtonumber", "wp", "wr", "writebetweenlist", "writedatatolist", "writestatus", "writetolist", "xLeftarrow", "xLeftrightarrow", "xRightarrow", "xdefconvertedargument", "xequal", "xfrac", "xhookleftarrow", "xhookrightarrow", "xi", "xleftarrow", "xleftharpoondown", "xleftharpoonup", "xleftrightarrow", "xleftrightharpoons", "xmapsto", "xmladdindex", "xmlafterdocumentsetup", "xmlaftersetup", "xmlall", "xmlappenddocumentsetup", "xmlappendsetup", "xmlapplyselectors", "xmlatt", "xmlattdef", "xmlattribute", "xmlattributedef", "xmlbadinclusions", "xmlbeforedocumentsetup", "xmlbeforesetup", "xmlchainatt", "xmlchainattdef", "xmlchecknamespace", "xmlcommand", "xmlconcat", "xmlconcatrange", "xmlcontext", "xmlcount", "xmldefaulttotext", "xmldepth", "xmldirectives", "xmldirectivesafter", "xmldirectivesbefore", "xmldisplayverbatim", "xmldoif", "xmldoifatt", "xmldoifelse", "xmldoifelseatt", "xmldoifelseempty", "xmldoifelseselfempty", "xmldoifelsetext", "xmldoifelsevalue", "xmldoifnot", "xmldoifnotatt", "xmldoifnotselfempty", "xmldoifnottext", "xmldoifselfempty", "xmldoiftext", "xmlelement", "xmlfilter", "xmlfirst", "xmlflush", "xmlflushcontext", "xmlflushdocumentsetups", "xmlflushlinewise", "xmlflushpure", "xmlflushspacewise", "xmlflushtext", "xmlinclude", "xmlinclusion", "xmlinclusions", "xmlinfo", "xmlinjector", "xmlinlineprettyprint", "xmlinlineprettyprinttext", "xmlinlineverbatim", "xmlinstalldirective", "xmllast", "xmllastatt", "xmllastmatch", "xmllastpar", "xmlloadbuffer", "xmlloaddata", "xmlloaddirectives", "xmlloadfile", "xmlloadonly", "xmlmain", "xmlmapvalue", "xmlname", "xmlnamespace", "xmlnonspace", "xmlpar", "xmlparam", "xmlpath", "xmlpos", "xmlposition", "xmlprependdocumentsetup", "xmlprependsetup", "xmlprettyprint", "xmlprettyprinttext", "xmlprocessbuffer", "xmlprocessdata", "xmlprocessfile", "xmlpure", "xmlraw", "xmlrefatt", "xmlregistereddocumentsetups", "xmlregisteredsetups", "xmlregisterns", "xmlremapname", "xmlremapnamespace", "xmlremovedocumentsetup", "xmlremovesetup", "xmlresetdocumentsetups", "xmlresetinjectors", "xmlresetsetups", "xmlsave", "xmlsetatt", "xmlsetattribute", "xmlsetentity", "xmlsetfunction", "xmlsetinjectors", "xmlsetpar", "xmlsetparam", "xmlsetsetup", "xmlsetup", "xmlshow", "xmlsnippet", "xmlstrip", "xmlstripnolines", "xmlstripped", "xmlstrippednolines", "xmltag", "xmltexentity", "xmltext", "xmltobuffer", "xmltobufferverbose", "xmltofile", "xmlvalue", "xmlverbatim", "xrel", "xrightarrow", "xrightharpoondown", "xrightharpoonup", "xrightleftharpoons", "xrightoverleftarrow", "xsplitstring", "xtriplerel", "xtwoheadleftarrow", "xtwoheadrightarrow", "xxfrac", "xypos", "yacute", "ycircumflex", "ydiaeresis", "ydotbelow", "yen", "ygrave", "yhook", "yiddishnumerals", "ymacron", "ytilde", "zacute", "zcaron", "zdotaccent", "zeronumberconversion", "zerowidthnobreakspace", "zerowidthspace", "zeta", "zhook", "zstroke", "zwj", "zwnj" },
+ ["common"]={ "AEacute", "AEligature", "AEmacron", "AMSTEX", "Aacute", "Abreve", "Abreveacute", "Abrevedotbelow", "Abrevegrave", "Abrevehook", "Abrevetilde", "Acaron", "Acircumflex", "Acircumflexacute", "Acircumflexdotbelow", "Acircumflexgrave", "Acircumflexhook", "Acircumflextilde", "Adiaeresis", "Adiaeresismacron", "Adotaccent", "Adotaccentmacron", "Adotbelow", "Adoublegrave", "AfterPar", "Agrave", "Ahook", "Ainvertedbreve", "Alpha", "Alphabeticnumerals", "AmSTeX", "Amacron", "And", "Angstrom", "Aogonek", "Aring", "Aringacute", "Arrowvert", "Astroke", "Atilde", "BeforePar", "Beta", "Bhook", "Big", "Bigg", "Biggl", "Biggm", "Biggr", "Bigl", "Bigm", "Bigr", "Box", "Bumpeq", "CONTEXT", "Cacute", "Cap", "Caps", "Ccaron", "Ccedilla", "Ccircumflex", "Cdotaccent", "Character", "Characters", "Chi", "Chook", "ConTeXt", "Context", "ConvertConstantAfter", "ConvertToConstant", "Cstroke", "Cup", "DAYLONG", "DAYSHORT", "DZcaronligature", "DZligature", "Dafrican", "Dcaron", "Dd", "Ddownarrow", "Delta", "Dhook", "Doteq", "Downarrow", "Dstroke", "Dzcaronligature", "Dzligature", "ETEX", "Eacute", "Ebreve", "Ecaron", "Ecedilla", "Ecircumflex", "Ecircumflexacute", "Ecircumflexdotbelow", "Ecircumflexgrave", "Ecircumflexhook", "Ecircumflextilde", "Ediaeresis", "Edotaccent", "Edotbelow", "Edoublegrave", "Egrave", "Ehook", "Einvertedbreve", "Emacron", "Eogonek", "Epsilon", "Eta", "Eth", "Etilde", "Eulerconst", "EveryLine", "EveryPar", "Fhook", "Finv", "Gacute", "Game", "Gamma", "Gbreve", "Gcaron", "Gcircumflex", "Gcommaaccent", "Gdotaccent", "GetPar", "Ghook", "GotoPar", "Greeknumerals", "Gstroke", "Hcaron", "Hcircumflex", "Hstroke", "IJligature", "INRSTEX", "Iacute", "Ibreve", "Icaron", "Icircumflex", "Idiaeresis", "Idotaccent", "Idotbelow", "Idoublegrave", "Igrave", "Ihook", "Iinvertedbreve", "Im", "Imacron", "Iogonek", "Iota", "Istroke", "Itilde", "Jcircumflex", "Join", "Kappa", "Kcaron", "Kcommaaccent", "Khook", "LAMSTEX", "LATEX", "LJligature", "LUAJITTEX", "LUAMETATEX", "LUATEX", "LaTeX", "Lacute", "LamSTeX", "Lambda", "Lbar", "Lcaron", "Lcommaaccent", "Ldotmiddle", "Ldsh", "Leftarrow", "Leftrightarrow", "Ljligature", "Lleftarrow", "Longleftarrow", "Longleftrightarrow", "Longmapsfrom", "Longmapsto", "Longrightarrow", "Lsh", "Lstroke", "Lua", "LuaMetaTeX", "LuaTeX", "LuajitTeX", "METAFONT", "METAFUN", "METAPOST", "MKII", "MKIV", "MKIX", "MKLX", "MKVI", "MKXI", "MKXL", "MONTH", "MONTHLONG", "MONTHSHORT", "MPII", "MPIV", "MPLX", "MPVI", "MPXL", "MPanchor", "MPbetex", "MPc", "MPcode", "MPcolor", "MPcoloronly", "MPcolumn", "MPd", "MPdrawing", "MPfontsizehskip", "MPgetmultipars", "MPgetmultishape", "MPgetposboxes", "MPh", "MPinclusions", "MPleftskip", "MPll", "MPlr", "MPls", "MPmenubuttons", "MPn", "MPoptions", "MPoverlayanchor", "MPp", "MPpage", "MPpardata", "MPplus", "MPpos", "MPpositiongraphic", "MPposset", "MPr", "MPrawvar", "MPregion", "MPrest", "MPrightskip", "MPrs", "MPstring", "MPtext", "MPtransparency", "MPul", "MPur", "MPv", "MPvar", "MPvariable", "MPvv", "MPw", "MPwhd", "MPx", "MPxy", "MPxywhd", "MPy", "Mapsfrom", "Mapsto", "MetaFont", "MetaFun", "MetaPost", "Mu", "NJligature", "Nacute", "Ncaron", "Ncommaaccent", "Nearrow", "Neng", "Ngrave", "Njligature", "NormalizeFontHeight", "NormalizeFontWidth", "NormalizeTextHeight", "NormalizeTextWidth", "Ntilde", "Nu", "Numbers", "Nwarrow", "OEligature", "Oacute", "Obreve", "Ocaron", "Ocircumflex", "Ocircumflexacute", "Ocircumflexdotbelow", "Ocircumflexgrave", "Ocircumflexhook", "Ocircumflextilde", "Odiaeresis", "Odiaeresismacron", "Odotaccent", "Odotaccentmacron", "Odotbelow", "Odoublegrave", "Ograve", "Ohook", "Ohorn", "Ohornacute", "Ohorndotbelow", "Ohorngrave", "Ohornhook", "Ohorntilde", "Ohungarumlaut", "Oinvertedbreve", "Omacron", "Omega", "Omicron", "Oogonek", "Oogonekmacron", "Ostroke", "Ostrokeacute", "Otilde", "Otildemacron", "P", "PDFETEX", "PDFTEX", "PDFcolor", "PICTEX", "PPCHTEX", "PPCHTeX", "PRAGMA", "Phi", "Phook", "Pi", "PiCTeX", "Plankconst", "PointsToBigPoints", "PointsToReal", "PointsToWholeBigPoints", "PropertyLine", "Psi", "PtToCm", "Racute", "Rcaron", "Rcommaaccent", "Rdoublegrave", "Rdsh", "Re", "ReadFile", "Relbar", "Rho", "Rightarrow", "Rinvertedbreve", "Romannumerals", "Rrightarrow", "Rsh", "S", "Sacute", "ScaledPointsToBigPoints", "ScaledPointsToWholeBigPoints", "Scaron", "Scedilla", "Schwa", "Scircumflex", "Scommaaccent", "Searrow", "Sigma", "Smallcapped", "Subset", "Supset", "Swarrow", "TABLE", "TEX", "TaBlE", "Tau", "Tcaron", "Tcedilla", "Tcommaaccent", "TeX", "TheNormalizedFontSize", "Theta", "Thook", "Thorn", "TransparencyHack", "Tstroke", "Uacute", "Ubreve", "Ucaron", "Ucircumflex", "Udiaeresis", "Udiaeresisacute", "Udiaeresiscaron", "Udiaeresisgrave", "Udiaeresismacron", "Udotbelow", "Udoublegrave", "Ugrave", "Uhook", "Uhorn", "Uhornacute", "Uhorndotbelow", "Uhorngrave", "Uhornhook", "Uhorntilde", "Uhungarumlaut", "Uinvertedbreve", "Umacron", "Uogonek", "Uparrow", "Updownarrow", "Upsilon", "Uring", "Utilde", "Uuparrow", "VDash", "Vdash", "VerboseNumber", "Vert", "Vhook", "Vvdash", "WEEKDAY", "WORD", "WORDS", "Wcircumflex", "WidthSpanningText", "Word", "Words", "XETEX", "XeTeX", "Xi", "Yacute", "Ycircumflex", "Ydiaeresis", "Ydotbelow", "Ygrave", "Yhook", "Ymacron", "Ytilde", "Zacute", "Zcaron", "Zdotaccent", "Zeta", "Zhook", "Zstroke", "aacute", "abbreviation", "abjadnaivenumerals", "abjadnodotnumerals", "abjadnumerals", "about", "abreve", "abreveacute", "abrevedotbelow", "abrevegrave", "abrevehook", "abrevetilde", "acaron", "acircumflex", "acircumflexacute", "acircumflexdotbelow", "acircumflexgrave", "acircumflexhook", "acircumflextilde", "activatespacehandler", "actualday", "actualmonth", "actualyear", "actuarial", "acute", "acwopencirclearrow", "adaptcollector", "adaptfontfeature", "adaptlayout", "adaptpapersize", "addfeature", "addtoJSpreamble", "addtocommalist", "addvalue", "adiaeresis", "adiaeresismacron", "adotaccent", "adotaccentmacron", "adotbelow", "adoublegrave", "aeacute", "aeligature", "aemacron", "afghanicurrency", "aftersplitstring", "aftertestandsplitstring", "agrave", "ahook", "ainvertedbreve", "aleph", "alignbottom", "aligned", "alignedbox", "alignedline", "alignhere", "alignmentcharacter", "allinputpaths", "alpha", "alphabeticnumerals", "alwayscitation", "alwayscite", "amacron", "amalg", "ampersand", "anchor", "angle", "aogonek", "appendetoks", "appendgvalue", "appendtocommalist", "appendtoks", "appendtoksonce", "appendvalue", "apply", "applyalternativestyle", "applyfunction", "applyprocessor", "applytocharacters", "applytofirstcharacter", "applytosplitstringchar", "applytosplitstringcharspaced", "applytosplitstringline", "applytosplitstringlinespaced", "applytosplitstringword", "applytosplitstringwordspaced", "applytowords", "approx", "approxEq", "approxeq", "approxnEq", "arabicakbar", "arabicalayhe", "arabicallah", "arabicallallahou", "arabicasterisk", "arabicbasmalah", "arabiccomma", "arabiccuberoot", "arabicdateseparator", "arabicdecimals", "arabicdisputedendofayah", "arabicendofayah", "arabicexnumerals", "arabicfootnotemarker", "arabicfourthroot", "arabichighain", "arabichighalayheassallam", "arabichigheqala", "arabichighesala", "arabichighfootnotemarker", "arabichighjeem", "arabichighlamalef", "arabichighmadda", "arabichighmeemlong", "arabichighmeemshort", "arabichighnisf", "arabichighnoon", "arabichighnoonkasra", "arabichighqaf", "arabichighqif", "arabichighradiallahouanhu", "arabichighrahmatullahalayhe", "arabichighrubc", "arabichighsad", "arabichighsajda", "arabichighsakta", "arabichighsallallahou", "arabichighseen", "arabichighsmallsafha", "arabichightah", "arabichightakhallus", "arabichighthalatha", "arabichighwaqf", "arabichighyeh", "arabichighzain", "arabicjallajalalouhou", "arabiclettermark", "arabiclowmeemlong", "arabiclownoonkasra", "arabiclowseen", "arabicmisra", "arabicmuhammad", "arabicnumber", "arabicnumberabove", "arabicnumerals", "arabicparenleft", "arabicparenright", "arabicpercent", "arabicperiod", "arabicpermille", "arabicpertenthousand", "arabicpoeticverse", "arabicqala", "arabicquestion", "arabicrasoul", "arabicray", "arabicrialsign", "arabicsafha", "arabicsajdah", "arabicsalla", "arabicsamvat", "arabicsanah", "arabicsemicolon", "arabicshighthreedots", "arabicslcm", "arabicstartofrubc", "arabictripledot", "arabicvowelwaw", "arabicvowelyeh", "arabicwasallam", "arg", "aring", "aringacute", "asciimode", "asciistr", "aside", "assignalfadimension", "assigndimen", "assigndimension", "assignifempty", "assigntranslation", "assignvalue", "assignwidth", "assumelongusagecs", "ast", "astype", "asymp", "at", "atilde", "atleftmargin", "atpage", "atrightmargin", "attachment", "autocap", "autodirhbox", "autodirvbox", "autodirvtop", "autoinsertnextspace", "autointegral", "automathematics", "autoorientation", "autopagestaterealpage", "autopagestaterealpageorder", "autorule", "autosetups", "availablehsize", "averagecharwidth", "backepsilon", "background", "backgroundimage", "backgroundimagefill", "backgroundline", "backprime", "backsim", "backslash", "bar", "barleftarrow", "barleftarrowrightarrowbar", "barovernorthwestarrow", "barwedge", "basegrid", "baselinebottom", "baselineleftbox", "baselinemiddlebox", "baselinerightbox", "bbordermatrix", "bbox", "because", "beforesplitstring", "beforetestandsplitstring", "beta", "beth", "between", "bhook", "big", "bigbodyfont", "bigcap", "bigcirc", "bigcircle", "bigcup", "bigdiamond", "bigg", "bigger", "biggl", "biggm", "biggr", "bigl", "bigm", "bigodot", "bigoplus", "bigotimes", "bigr", "bigskip", "bigsqcap", "bigsqcup", "bigsquare", "bigstar", "bigtimes", "bigtriangledown", "bigtriangleup", "bigudot", "biguplus", "bigvee", "bigwedge", "binom", "bitmapimage", "blacklozenge", "blackrule", "blackrules", "blacksquare", "blacktriangle", "blacktriangledown", "blacktriangleleft", "blacktriangleright", "blank", "blap", "bleed", "bleedheight", "bleedwidth", "blockligatures", "blockquote", "blocksynctexfile", "blockuservariable", "bodyfontenvironmentlist", "bodyfontsize", "bold", "boldface", "bolditalic", "boldslanted", "bookmark", "booleanmodevalue", "bordermatrix", "bot", "bottombox", "bottomleftbox", "bottomrightbox", "bowtie", "boxcursor", "boxdot", "boxmarker", "boxminus", "boxofsize", "boxplus", "boxreference", "boxtimes", "bpos", "breakablethinspace", "breakhere", "breve", "bstroke", "btxabbreviatedjournal", "btxaddjournal", "btxalwayscitation", "btxauthorfield", "btxdetail", "btxdirect", "btxdoif", "btxdoifcombiinlistelse", "btxdoifelse", "btxdoifelsecombiinlist", "btxdoifelsesameasprevious", "btxdoifelsesameaspreviouschecked", "btxdoifelseuservariable", "btxdoifnot", "btxdoifsameaspreviouscheckedelse", "btxdoifsameaspreviouselse", "btxdoifuservariableelse", "btxexpandedjournal", "btxfield", "btxfieldname", "btxfieldtype", "btxfirstofrange", "btxflush", "btxflushauthor", "btxflushauthorinverted", "btxflushauthorinvertedshort", "btxflushauthorname", "btxflushauthornormal", "btxflushauthornormalshort", "btxflushsuffix", "btxfoundname", "btxfoundtype", "btxhiddencitation", "btxhybridcite", "btxlabellanguage", "btxlabeltext", "btxlistcitation", "btxloadjournalist", "btxoneorrange", "btxremapauthor", "btxsavejournalist", "btxsetup", "btxsingularorplural", "btxsingularplural", "btxtextcitation", "buildmathaccent", "buildtextaccent", "buildtextbottomcomma", "buildtextbottomdot", "buildtextcedilla", "buildtextgrave", "buildtextmacron", "buildtextognek", "bullet", "button", "cacute", "calligraphic", "camel", "cap", "capital", "carriagereturn", "catcodetablename", "cbox", "ccaron", "ccedilla", "ccircumflex", "ccurl", "cdot", "cdotaccent", "cdotp", "cdots", "centeraligned", "centerbox", "centerdot", "centeredbox", "centeredlastline", "centerednextbox", "centerline", "cfrac", "chapter", "character", "characters", "chardescription", "charwidthlanguage", "check", "checkcharacteralign", "checkedblank", "checkedchar", "checkedfiller", "checkedstrippedcsname", "checkinjector", "checkmark", "checknextindentation", "checknextinjector", "checkpage", "checkparameters", "checkpreviousinjector", "checksoundtrack", "checktwopassdata", "checkvariables", "chem", "chemical", "chemicalbottext", "chemicalmidtext", "chemicalsymbol", "chemicaltext", "chemicaltoptext", "chi", "chineseallnumerals", "chinesecapnumerals", "chinesenumerals", "chook", "circ", "circeq", "circlearrowleft", "circlearrowright", "circledR", "circledS", "circledast", "circledcirc", "circleddash", "circledequals", "circleonrightarrow", "citation", "cite", "clap", "classfont", "cldcommand", "cldcontext", "cldloadfile", "cldprocessfile", "cleftarrow", "clip", "clippedoverlayimage", "clonefield", "clubsuit", "collect", "collectedtext", "collectexpanded", "colon", "coloncolonequals", "colonequals", "color", "colorbar", "colorcomponents", "colored", "coloronly", "colorvalue", "column", "columnbreak", "columnsetspanwidth", "combinepages", "commalistelement", "commalistsentence", "commalistsize", "comment", "comparecolorgroup", "comparedimension", "comparedimensioneps", "comparepalet", "complement", "completebtxrendering", "completecontent", "completeindex", "completelist", "completelistofabbreviations", "completelistofchemicals", "completelistoffigures", "completelistofgraphics", "completelistofintermezzi", "completelistoflogos", "completelistofpublications", "completelistofsorts", "completelistofsynonyms", "completelistoftables", "completepagenumber", "completeregister", "complexes", "complexorsimple", "complexorsimpleempty", "component", "composedcollector", "composedlayer", "compounddiscretionary", "compresult", "cong", "constantdimen", "constantdimenargument", "constantemptyargument", "constantnumber", "constantnumberargument", "contentreference", "continuednumber", "continueifinputfile", "convertargument", "convertcommand", "convertedcounter", "converteddimen", "convertedsubcounter", "convertmonth", "convertnumber", "convertvalue", "convertvboxtohbox", "coprod", "copyboxfromcache", "copybtxlabeltext", "copyfield", "copyheadtext", "copylabeltext", "copymathlabeltext", "copyoperatortext", "copypages", "copyparameters", "copyposition", "copyprefixtext", "copyright", "copysetups", "copysuffixtext", "copytaglabeltext", "copyunittext", "correctwhitespace", "countersubs", "counttoken", "counttokens", "cramped", "crampedclap", "crampedllap", "crampedrlap", "crightarrow", "crightoverleftarrow", "crlf", "crlfplaceholder", "cstroke", "ctop", "ctxcommand", "ctxdirectcommand", "ctxdirectlua", "ctxfunction", "ctxlatecommand", "ctxlatelua", "ctxloadluafile", "ctxlua", "ctxluabuffer", "ctxluacode", "ctxreport", "ctxsprint", "cup", "curlyeqprec", "curlyeqsucc", "curlyvee", "curlywedge", "currentassignmentlistkey", "currentassignmentlistvalue", "currentbtxuservariable", "currentcommalistitem", "currentcomponent", "currentdate", "currentenvironment", "currentfeaturetest", "currentheadnumber", "currentinterface", "currentlanguage", "currentlistentrydestinationattribute", "currentlistentrylimitedtext", "currentlistentrynumber", "currentlistentrypagenumber", "currentlistentryreferenceattribute", "currentlistentrytitle", "currentlistentrytitlerendered", "currentlistsymbol", "currentmainlanguage", "currentmessagetext", "currentmoduleparameter", "currentoutputstream", "currentproduct", "currentproject", "currentregime", "currentregisterpageuserdata", "currentresponses", "currenttime", "currentvalue", "currentxtablecolumn", "currentxtablerow", "curvearrowleft", "curvearrowright", "cwopencirclearrow", "cyrillicA", "cyrillicAE", "cyrillicAbreve", "cyrillicAdiaeresis", "cyrillicB", "cyrillicBIGYUS", "cyrillicBIGYUSiotified", "cyrillicC", "cyrillicCH", "cyrillicCHEDC", "cyrillicCHEDCabkhasian", "cyrillicCHEabkhasian", "cyrillicCHEdiaeresis", "cyrillicCHEkhakassian", "cyrillicCHEvertstroke", "cyrillicD", "cyrillicDASIAPNEUMATA", "cyrillicDJE", "cyrillicDZE", "cyrillicDZEabkhasian", "cyrillicDZHE", "cyrillicE", "cyrillicELtail", "cyrillicEMtail", "cyrillicENDC", "cyrillicENGHE", "cyrillicENhook", "cyrillicENtail", "cyrillicEREV", "cyrillicERY", "cyrillicERtick", "cyrillicEbreve", "cyrillicEdiaeresis", "cyrillicEgrave", "cyrillicEiotified", "cyrillicF", "cyrillicFITA", "cyrillicG", "cyrillicGHEmidhook", "cyrillicGHEstroke", "cyrillicGHEupturn", "cyrillicGJE", "cyrillicH", "cyrillicHA", "cyrillicHADC", "cyrillicHRDSN", "cyrillicI", "cyrillicIE", "cyrillicII", "cyrillicISHRT", "cyrillicISHRTtail", "cyrillicIZHITSA", "cyrillicIZHITSAdoublegrave", "cyrillicIdiaeresis", "cyrillicIgrave", "cyrillicImacron", "cyrillicJE", "cyrillicK", "cyrillicKADC", "cyrillicKAbashkir", "cyrillicKAhook", "cyrillicKAstroke", "cyrillicKAvertstroke", "cyrillicKJE", "cyrillicKOPPA", "cyrillicKSI", "cyrillicL", "cyrillicLITTLEYUS", "cyrillicLITTLEYUSiotified", "cyrillicLJE", "cyrillicM", "cyrillicN", "cyrillicNJE", "cyrillicO", "cyrillicOMEGA", "cyrillicOMEGAround", "cyrillicOMEGAtitlo", "cyrillicOT", "cyrillicObarred", "cyrillicObarreddiaeresis", "cyrillicOdiaeresis", "cyrillicP", "cyrillicPALATALIZATION", "cyrillicPALOCHKA", "cyrillicPEmidhook", "cyrillicPSI", "cyrillicPSILIPNEUMATA", "cyrillicR", "cyrillicS", "cyrillicSCHWA", "cyrillicSCHWAdiaeresis", "cyrillicSDSC", "cyrillicSEMISOFT", "cyrillicSFTSN", "cyrillicSH", "cyrillicSHCH", "cyrillicSHHA", "cyrillicT", "cyrillicTEDC", "cyrillicTETSE", "cyrillicTITLO", "cyrillicTSHE", "cyrillicU", "cyrillicUK", "cyrillicUSHRT", "cyrillicUdiaeresis", "cyrillicUdoubleacute", "cyrillicUmacron", "cyrillicV", "cyrillicYA", "cyrillicYAT", "cyrillicYERUdiaeresis", "cyrillicYI", "cyrillicYO", "cyrillicYU", "cyrillicYstr", "cyrillicYstrstroke", "cyrillicZ", "cyrillicZDSC", "cyrillicZEdiaeresis", "cyrillicZH", "cyrillicZHEbreve", "cyrillicZHEdescender", "cyrillicZHEdiaeresis", "cyrillica", "cyrillicabreve", "cyrillicadiaeresis", "cyrillicae", "cyrillicb", "cyrillicbigyus", "cyrillicbigyusiotified", "cyrillicc", "cyrillicch", "cyrilliccheabkhasian", "cyrillicchedc", "cyrillicchedcabkhasian", "cyrillicchediaeresis", "cyrillicchekhakassian", "cyrillicchevertstroke", "cyrillicd", "cyrillicdje", "cyrillicdze", "cyrillicdzeabkhasian", "cyrillicdzhe", "cyrillice", "cyrillicebreve", "cyrillicediaeresis", "cyrillicegrave", "cyrilliceiotified", "cyrilliceltail", "cyrillicemtail", "cyrillicendc", "cyrillicenghe", "cyrillicenhook", "cyrillicentail", "cyrillicerev", "cyrillicertick", "cyrillicery", "cyrillicf", "cyrillicfita", "cyrillicg", "cyrillicghemidhook", "cyrillicghestroke", "cyrillicgheupturn", "cyrillicgje", "cyrillich", "cyrillicha", "cyrillichadc", "cyrillichrdsn", "cyrillici", "cyrillicidiaeresis", "cyrillicie", "cyrillicigrave", "cyrillicii", "cyrillicimacron", "cyrillicishrt", "cyrillicishrttail", "cyrillicizhitsa", "cyrillicizhitsadoublegrave", "cyrillicje", "cyrillick", "cyrillickabashkir", "cyrillickadc", "cyrillickahook", "cyrillickastroke", "cyrillickavertstroke", "cyrillickje", "cyrillickoppa", "cyrillicksi", "cyrillicl", "cyrilliclittleyus", "cyrilliclittleyusiotified", "cyrilliclje", "cyrillicm", "cyrillicn", "cyrillicnje", "cyrillico", "cyrillicobarred", "cyrillicobarreddiaeresis", "cyrillicodiaeresis", "cyrillicomega", "cyrillicomegaround", "cyrillicomegatitlo", "cyrillicot", "cyrillicp", "cyrillicpemidhook", "cyrillicpsi", "cyrillicr", "cyrillics", "cyrillicschwa", "cyrillicschwadiaeresis", "cyrillicsdsc", "cyrillicsemisoft", "cyrillicsftsn", "cyrillicsh", "cyrillicshch", "cyrillicshha", "cyrillict", "cyrillictedc", "cyrillictetse", "cyrillictshe", "cyrillicu", "cyrillicudiaeresis", "cyrillicudoubleacute", "cyrillicuk", "cyrillicumacron", "cyrillicushrt", "cyrillicv", "cyrillicya", "cyrillicyat", "cyrillicyerudiaeresis", "cyrillicyi", "cyrillicyo", "cyrillicystr", "cyrillicystrstroke", "cyrillicyu", "cyrillicz", "cyrilliczdsc", "cyrilliczediaeresis", "cyrilliczh", "cyrilliczhebreve", "cyrilliczhedescender", "cyrilliczhediaeresis", "d", "dag", "dagger", "daleth", "dasharrow", "dashedleftarrow", "dashedrightarrow", "dashv", "datasetvariable", "date", "daylong", "dayoftheweek", "dayshort", "dayspermonth", "dbinom", "dcaron", "dcurl", "dd", "ddag", "ddagger", "dddot", "ddot", "ddots", "decrement", "decrementcounter", "decrementedcounter", "decrementpagenumber", "decrementsubpagenumber", "decrementvalue", "defaultinterface", "defaultobjectpage", "defaultobjectreference", "defcatcodecommand", "defconvertedargument", "defconvertedcommand", "defconvertedvalue", "define", "defineMPinstance", "defineTABLEsetup", "defineaccent", "defineactivecharacter", "definealternativestyle", "defineanchor", "defineattachment", "defineattribute", "definebackground", "definebar", "defineblock", "definebodyfont", "definebodyfontenvironment", "definebodyfontswitch", "definebreakpoint", "definebreakpoints", "definebtx", "definebtxdataset", "definebtxregister", "definebtxrendering", "definebuffer", "definebutton", "definecapitals", "definecharacter", "definecharacterkerning", "definecharacterspacing", "definechemical", "definechemicals", "definechemicalsymbol", "definecollector", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecolumnsetarea", "definecolumnsetspan", "definecombination", "definecombinedlist", "definecommand", "definecomment", "definecomplexorsimple", "definecomplexorsimpleempty", "defineconversion", "defineconversionset", "definecounter", "definedataset", "definedate", "definedelimitedtext", "definedeq", "definedescription", "definedfont", "definedocument", "defineeffect", "defineenumeration", "defineexpandable", "defineexpansion", "defineexternalfigure", "definefacingfloat", "definefallbackfamily", "definefield", "definefieldbody", "definefieldbodyset", "definefieldcategory", "definefieldstack", "definefiguresymbol", "definefileconstant", "definefilefallback", "definefilesynonym", "definefiller", "definefirstline", "definefittingpage", "definefloat", "definefont", "definefontalternative", "definefontfallback", "definefontfamily", "definefontfamilypreset", "definefontfeature", "definefontfile", "definefontsize", "definefontsolution", "definefontstyle", "definefontsynonym", "defineformula", "defineformulaalternative", "defineformulaframed", "defineframed", "defineframedcontent", "defineframedtable", "defineframedtext", "definefrozenfont", "defineglobalcolor", "definegraphictypesynonym", "definegridsnapping", "definehbox", "definehead", "defineheadalternative", "definehelp", "definehigh", "definehighlight", "definehspace", "definehyphenationfeatures", "defineindentedtext", "defineindenting", "defineinitial", "defineinsertion", "defineinteraction", "defineinteractionbar", "defineinteractionmenu", "defineinterfaceconstant", "defineinterfaceelement", "defineinterfacevariable", "defineinterlinespace", "defineintermediatecolor", "defineitemgroup", "defineitems", "definelabel", "definelabelclass", "definelayer", "definelayerpreset", "definelayout", "definelinefiller", "definelinenote", "definelinenumbering", "definelines", "definelist", "definelistalternative", "definelistextra", "definelow", "definelowhigh", "definelowmidhigh", "definemakeup", "definemarginblock", "definemargindata", "definemarker", "definemarking", "definemathaccent", "definemathalignment", "definemathcases", "definemathcommand", "definemathdouble", "definemathdoubleextensible", "definemathematics", "definemathextensible", "definemathfence", "definemathfraction", "definemathframed", "definemathmatrix", "definemathornament", "definemathover", "definemathoverextensible", "definemathovertextextensible", "definemathradical", "definemathstackers", "definemathstyle", "definemathtriplet", "definemathunder", "definemathunderextensible", "definemathundertextextensible", "definemathunstacked", "definemeasure", "definemessageconstant", "definemixedcolumns", "definemode", "definemulticolumns", "definemultitonecolor", "definenamedcolor", "definenamespace", "definenarrower", "definenote", "defineorientation", "defineornament", "defineoutputroutine", "defineoutputroutinecommand", "defineoverlay", "definepage", "definepagebreak", "definepagechecker", "definepagecolumns", "definepageinjection", "definepageinjectionalternative", "definepageshift", "definepagestate", "definepairedbox", "definepalet", "definepapersize", "defineparagraph", "defineparagraphs", "defineparallel", "defineparbuilder", "defineperiodkerning", "defineplaceholder", "defineplacement", "definepositioning", "defineprefixset", "defineprocesscolor", "defineprocessor", "defineprofile", "defineprogram", "definepushbutton", "definepushsymbol", "definereference", "definereferenceformat", "defineregister", "definerenderingwindow", "defineresetset", "defineruby", "definescale", "definescript", "definesection", "definesectionblock", "definesectionlevels", "defineselector", "defineseparatorset", "defineshift", "definesidebar", "definesort", "definesorting", "definespotcolor", "definestartstop", "definestyle", "definestyleinstance", "definesubfield", "definesubformula", "definesymbol", "definesynonym", "definesynonyms", "definesystemattribute", "definesystemconstant", "definesystemvariable", "definetabletemplate", "definetabulate", "definetext", "definetextbackground", "definetextflow", "definetextnote", "definetokenlist", "definetooltip", "definetransparency", "definetwopasslist", "definetype", "definetypeface", "definetypescriptprefix", "definetypescriptsynonym", "definetypesetting", "definetyping", "defineunit", "defineuserdata", "defineuserdataalternative", "defineviewerlayer", "definevspace", "definevspacing", "definevspacingamount", "definextable", "defrostparagraphproperties", "delimited", "delimitedtext", "delta", "depthofstring", "depthonlybox", "depthspanningtext", "depthstrut", "determineheadnumber", "determinelistcharacteristics", "determinenoflines", "determineregistercharacteristics", "devanagarinumerals", "dfrac", "dhook", "diameter", "diamond", "diamondsuit", "differentialD", "differentiald", "digamma", "digits", "dimensiontocount", "directboxfromcache", "directcolor", "directcolored", "directconvertedcounter", "directcopyboxfromcache", "directdummyparameter", "directgetboxllx", "directgetboxlly", "directhighlight", "directlocalframed", "directluacode", "directparwrapper", "directselect", "directsetbar", "directsetup", "directsymbol", "directvspacing", "dis", "disabledirectives", "disableexperiments", "disablemode", "disableoutputstream", "disableparpositions", "disableregime", "disabletrackers", "displaymath", "displaymathematics", "displaymessage", "disposeluatable", "distributedhsize", "div", "dividedsize", "divideontimes", "divides", "doadaptleftskip", "doadaptrightskip", "doaddfeature", "doassign", "doassignempty", "doboundtext", "docheckassignment", "docheckedpair", "documentvariable", "dodoubleargument", "dodoubleargumentwithset", "dodoubleempty", "dodoubleemptywithset", "dodoublegroupempty", "doeassign", "doexpandedrecurse", "dofastloopcs", "dogetattribute", "dogetattributeid", "dogetcommacommandelement", "dogobbledoubleempty", "dogobblesingleempty", "dohyphens", "doif", "doifMPgraphicelse", "doifallcommon", "doifallcommonelse", "doifalldefinedelse", "doifallmodes", "doifallmodeselse", "doifassignmentelse", "doifassignmentelsecs", "doifblackelse", "doifbothsides", "doifbothsidesoverruled", "doifboxelse", "doifbufferelse", "doifcheckedpagestate", "doifcolor", "doifcolorelse", "doifcommandhandler", "doifcommandhandlerelse", "doifcommon", "doifcommonelse", "doifcontent", "doifconversiondefinedelse", "doifconversionnumberelse", "doifcounter", "doifcounterelse", "doifcurrentfonthasfeatureelse", "doifdefined", "doifdefinedcounter", "doifdefinedcounterelse", "doifdefinedelse", "doifdimensionelse", "doifdimenstringelse", "doifdocumentargument", "doifdocumentargumentelse", "doifdocumentfilename", "doifdocumentfilenameelse", "doifdocumentvariable", "doifdocumentvariableelse", "doifdrawingblackelse", "doifelse", "doifelseMPgraphic", "doifelseallcommon", "doifelsealldefined", "doifelseallmodes", "doifelseassignment", "doifelseassignmentcs", "doifelseblack", "doifelsebox", "doifelseboxincache", "doifelsebuffer", "doifelsecolor", "doifelsecommandhandler", "doifelsecommon", "doifelseconversiondefined", "doifelseconversionnumber", "doifelsecounter", "doifelsecurrentfonthasfeature", "doifelsecurrentsortingused", "doifelsecurrentsynonymshown", "doifelsecurrentsynonymused", "doifelsedefined", "doifelsedefinedcounter", "doifelsedimension", "doifelsedimenstring", "doifelsedocumentargument", "doifelsedocumentfilename", "doifelsedocumentvariable", "doifelsedrawingblack", "doifelseempty", "doifelseemptyvalue", "doifelseemptyvariable", "doifelseenv", "doifelsefastoptionalcheck", "doifelsefastoptionalcheckcs", "doifelsefieldbody", "doifelsefieldcategory", "doifelsefigure", "doifelsefile", "doifelsefiledefined", "doifelsefileexists", "doifelsefirstchar", "doifelseflagged", "doifelsefontchar", "doifelsefontfeature", "doifelsefontpresent", "doifelsefontsynonym", "doifelseframed", "doifelsehasspace", "doifelsehelp", "doifelseincsname", "doifelseindented", "doifelseinelement", "doifelseinputfile", "doifelseinsertion", "doifelseinset", "doifelseinstring", "doifelseinsymbolset", "doifelseintoks", "doifelseintwopassdata", "doifelseitalic", "doifelselanguage", "doifelselayerdata", "doifelselayoutdefined", "doifelselayoutsomeline", "doifelselayouttextline", "doifelseleapyear", "doifelselist", "doifelselocation", "doifelselocfile", "doifelsemainfloatbody", "doifelsemarkedcontent", "doifelsemarkedpage", "doifelsemarking", "doifelsemeaning", "doifelsemessage", "doifelsemode", "doifelsenextbgroup", "doifelsenextbgroupcs", "doifelsenextchar", "doifelsenextoptional", "doifelsenextoptionalcs", "doifelsenextparenthesis", "doifelsenonzeropositive", "doifelsenoteonsamepage", "doifelsenothing", "doifelsenumber", "doifelseobjectfound", "doifelseobjectreferencefound", "doifelseoddpage", "doifelseoddpagefloat", "doifelseoldercontext", "doifelseolderversion", "doifelseorientation", "doifelseoverlapping", "doifelseoverlay", "doifelseparallel", "doifelseparentfile", "doifelseparwrapper", "doifelsepath", "doifelsepathexists", "doifelsepatterns", "doifelseposition", "doifelsepositionaction", "doifelsepositiononpage", "doifelsepositionsonsamepage", "doifelsepositionsonthispage", "doifelsepositionsused", "doifelsereferencefound", "doifelserightpage", "doifelserightpagefloat", "doifelserighttoleftinbox", "doifelsesamelinereference", "doifelsesamestring", "doifelsesetups", "doifelsesomebackground", "doifelsesomespace", "doifelsesomething", "doifelsesometoks", "doifelsestringinstring", "doifelsestructurelisthasnumber", "doifelsestructurelisthaspage", "doifelsesymboldefined", "doifelsesymbolset", "doifelsetext", "doifelsetextflow", "doifelsetextflowcollector", "doifelsetopofpage", "doifelsetypingfile", "doifelseundefined", "doifelseurldefined", "doifelsevalue", "doifelsevaluenothing", "doifelsevariable", "doifempty", "doifemptyelse", "doifemptytoks", "doifemptyvalue", "doifemptyvalueelse", "doifemptyvariable", "doifemptyvariableelse", "doifenv", "doifenvelse", "doiffastoptionalcheckcselse", "doiffastoptionalcheckelse", "doiffieldbodyelse", "doiffieldcategoryelse", "doiffigureelse", "doiffile", "doiffiledefinedelse", "doiffileelse", "doiffileexistselse", "doiffirstcharelse", "doifflaggedelse", "doiffontcharelse", "doiffontfeatureelse", "doiffontpresentelse", "doiffontsynonymelse", "doifhasspaceelse", "doifhelpelse", "doifincsnameelse", "doifinelementelse", "doifinputfileelse", "doifinsertionelse", "doifinset", "doifinsetelse", "doifinstring", "doifinstringelse", "doifinsymbolset", "doifinsymbolsetelse", "doifintokselse", "doifintwopassdataelse", "doifitalicelse", "doiflanguageelse", "doiflayerdataelse", "doiflayoutdefinedelse", "doiflayoutsomelineelse", "doiflayouttextlineelse", "doifleapyearelse", "doiflistelse", "doiflocationelse", "doiflocfileelse", "doifmainfloatbodyelse", "doifmarkingelse", "doifmeaningelse", "doifmessageelse", "doifmode", "doifmodeelse", "doifnextbgroupcselse", "doifnextbgroupelse", "doifnextcharelse", "doifnextoptionalcselse", "doifnextoptionalelse", "doifnextparenthesiselse", "doifnonzeropositiveelse", "doifnot", "doifnotallcommon", "doifnotallmodes", "doifnotcommandhandler", "doifnotcommon", "doifnotcounter", "doifnotdocumentargument", "doifnotdocumentfilename", "doifnotdocumentvariable", "doifnotempty", "doifnotemptyvalue", "doifnotemptyvariable", "doifnotenv", "doifnoteonsamepageelse", "doifnotescollected", "doifnotfile", "doifnotflagged", "doifnothing", "doifnothingelse", "doifnotinset", "doifnotinsidesplitfloat", "doifnotinstring", "doifnotmode", "doifnotnumber", "doifnotsamestring", "doifnotsetups", "doifnotvalue", "doifnotvariable", "doifnumber", "doifnumberelse", "doifobjectfoundelse", "doifobjectreferencefoundelse", "doifoddpageelse", "doifoddpagefloatelse", "doifoldercontextelse", "doifolderversionelse", "doifoutervmode", "doifoverlappingelse", "doifoverlayelse", "doifparallelelse", "doifparentfileelse", "doifpathelse", "doifpathexistselse", "doifpatternselse", "doifposition", "doifpositionaction", "doifpositionactionelse", "doifpositionelse", "doifpositiononpageelse", "doifpositionsonsamepageelse", "doifpositionsonthispageelse", "doifpositionsusedelse", "doifreferencefoundelse", "doifrightpageelse", "doifrightpagefloatelse", "doifrighttoleftinboxelse", "doifsamelinereferenceelse", "doifsamestring", "doifsamestringelse", "doifsetups", "doifsetupselse", "doifsomebackground", "doifsomebackgroundelse", "doifsomespaceelse", "doifsomething", "doifsomethingelse", "doifsometoks", "doifsometokselse", "doifstringinstringelse", "doifstructurelisthasnumberelse", "doifstructurelisthaspageelse", "doifsymboldefinedelse", "doifsymbolsetelse", "doiftext", "doiftextelse", "doiftextflowcollectorelse", "doiftextflowelse", "doiftopofpageelse", "doiftypingfileelse", "doifundefined", "doifundefinedcounter", "doifundefinedelse", "doifunknownfontfeature", "doifurldefinedelse", "doifvalue", "doifvalueelse", "doifvaluenothing", "doifvaluenothingelse", "doifvaluesomething", "doifvariable", "doifvariableelse", "doindentation", "dollar", "doloop", "doloopoverlist", "donothing", "dontconvertfont", "dontleavehmode", "dontpermitspacesbetweengroups", "dopositionaction", "doprocesslocalsetups", "doquadrupleargument", "doquadrupleempty", "doquadruplegroupempty", "doquintupleargument", "doquintupleempty", "doquintuplegroupempty", "dorechecknextindentation", "dorecurse", "dorepeatwithcommand", "doreplacefeature", "doresetandafffeature", "doresetattribute", "dorotatebox", "dosetattribute", "dosetleftskipadaption", "dosetrightskipadaption", "dosetupcheckedinterlinespace", "doseventupleargument", "doseventupleempty", "dosingleargument", "dosingleempty", "dosinglegroupempty", "dosixtupleargument", "dosixtupleempty", "dosomebreak", "dostepwiserecurse", "dosubtractfeature", "dot", "doteq", "doteqdot", "dotfill", "dotfskip", "dotlessI", "dotlessJ", "dotlessi", "dotlessj", "dotlessjstroke", "dotminus", "dotoks", "dotplus", "dotripleargument", "dotripleargumentwithset", "dotripleempty", "dotripleemptywithset", "dotriplegroupempty", "dots", "dottedcircle", "dottedrightarrow", "doublebar", "doublebond", "doublebrace", "doublebracket", "doublecap", "doublecup", "doubleparent", "doubleprime", "doubleverticalbar", "dowith", "dowithnextbox", "dowithnextboxcontent", "dowithnextboxcontentcs", "dowithnextboxcs", "dowithpargument", "dowithrange", "dowithwargument", "downarrow", "downdasharrow", "downdownarrows", "downharpoonleft", "downharpoonright", "downuparrows", "downwhitearrow", "downzigzagarrow", "dpofstring", "dstroke", "dtail", "dummydigit", "dummyparameter", "dzcaronligature", "dzligature", "eTeX", "eacute", "ebreve", "ecaron", "ecedilla", "ecircumflex", "ecircumflexacute", "ecircumflexdotbelow", "ecircumflexgrave", "ecircumflexhook", "ecircumflextilde", "edefconvertedargument", "ediaeresis", "edotaccent", "edotbelow", "edoublegrave", "ee", "efcmaxheight", "efcmaxwidth", "efcminheight", "efcminwidth", "efcparameter", "effect", "egrave", "ehook", "einvertedbreve", "elapsedseconds", "elapsedsteptime", "elapsedtime", "eleftarrowfill", "eleftharpoondownfill", "eleftharpoonupfill", "eleftrightarrowfill", "ell", "em", "emacron", "emdash", "emphasisboldface", "emphasistypeface", "emptylines", "emptyset", "emquad", "emspace", "enableasciimode", "enabledirectives", "enableexperiments", "enablemode", "enableoutputstream", "enableparpositions", "enableregime", "enabletrackers", "endash", "endnote", "enquad", "enskip", "enspace", "env", "environment", "envvar", "eogonek", "eoverbarfill", "eoverbracefill", "eoverbracketfill", "eoverparentfill", "epos", "epsilon", "eq", "eqcirc", "eqeq", "eqeqeq", "eqgtr", "eqless", "eqsim", "eqslantgtr", "eqslantless", "equaldigits", "equalscolon", "equiv", "erightarrowfill", "erightharpoondownfill", "erightharpoonupfill", "eta", "eth", "ethiopic", "etilde", "etwoheadrightarrowfill", "eunderbarfill", "eunderbracefill", "eunderbracketfill", "eunderparentfill", "exclamdown", "executeifdefined", "exists", "exitloop", "exitloopnow", "expandcheckedcsname", "expanded", "expandeddoif", "expandeddoifelse", "expandeddoifnot", "expandfontsynonym", "expdoif", "expdoifcommonelse", "expdoifelse", "expdoifelsecommon", "expdoifelseinset", "expdoifinsetelse", "expdoifnot", "exponentiale", "externalfigure", "externalfigurecollectionmaxheight", "externalfigurecollectionmaxwidth", "externalfigurecollectionminheight", "externalfigurecollectionminwidth", "externalfigurecollectionparameter", "fakebox", "fallingdotseq", "fastdecrement", "fastincrement", "fastlocalframed", "fastloopfinal", "fastloopindex", "fastscale", "fastsetup", "fastsetupwithargument", "fastsetupwithargumentswapped", "fastswitchtobodyfont", "fastsxsy", "feature", "fence", "fenced", "fetchallmarkings", "fetchallmarks", "fetchmark", "fetchmarking", "fetchonemark", "fetchonemarking", "fetchruntinecommand", "fetchtwomarkings", "fetchtwomarks", "ffiligature", "ffligature", "fflligature", "fhook", "field", "fieldbody", "fieldstack", "fifthoffivearguments", "fifthofsixarguments", "figuredash", "figurefilename", "figurefilepath", "figurefiletype", "figurefullname", "figureheight", "figurenaturalheight", "figurenaturalwidth", "figurespace", "figuresymbol", "figurewidth", "filename", "filigature", "filledhboxb", "filledhboxc", "filledhboxg", "filledhboxk", "filledhboxm", "filledhboxr", "filledhboxy", "filler", "fillinline", "fillinrules", "fillintext", "fillupto", "filterfromnext", "filterfromvalue", "filterpages", "filterreference", "findtwopassdata", "finishregisterentry", "firstcharacter", "firstcounter", "firstcountervalue", "firstinlist", "firstoffivearguments", "firstoffourarguments", "firstofoneargument", "firstofoneunexpanded", "firstofsixarguments", "firstofthreearguments", "firstofthreeunexpanded", "firstoftwoarguments", "firstoftwounexpanded", "firstrealpage", "firstrealpagenumber", "firstsubcountervalue", "firstsubpage", "firstsubpagenumber", "firstuserpage", "firstuserpagenumber", "fitfield", "fitfieldframed", "fittopbaselinegrid", "fiveeighths", "fivesixths", "fixedspace", "fixedspaces", "flag", "flat", "flligature", "floatuserdataparameter", "flushbox", "flushboxregister", "flushcollector", "flushedrightlastline", "flushlayer", "flushlocalfloats", "flushnextbox", "flushnotes", "flushoutputstream", "flushshapebox", "flushtextflow", "flushtokens", "flushtoks", "fontalternative", "fontbody", "fontchar", "fontcharbyindex", "fontclass", "fontclassname", "fontface", "fontfeaturelist", "fontsize", "fontstyle", "footnote", "footnotetext", "forall", "forcecharacterstripping", "forcelocalfloats", "forgeteverypar", "forgetparagraphfreezing", "forgetparameters", "forgetparskip", "forgetparwrapper", "forgetragged", "formula", "formulanumber", "foundbox", "fourfifths", "fourperemspace", "fourthoffivearguments", "fourthoffourarguments", "fourthofsixarguments", "frac", "framed", "frameddimension", "framedparameter", "framedtext", "freezedimenmacro", "freezemeasure", "freezeparagraphproperties", "frenchspacing", "from", "fromlinenote", "frown", "frozenhbox", "frule", "gacute", "gamma", "gbreve", "gcaron", "gcircumflex", "gcommaaccent", "gdefconvertedargument", "gdefconvertedcommand", "gdotaccent", "ge", "geq", "geqq", "geqslant", "getMPdrawing", "getMPlayer", "getboxfromcache", "getboxllx", "getboxlly", "getbuffer", "getbufferdata", "getcommacommandsize", "getcommalistsize", "getdatavalue", "getdayoftheweek", "getdayspermonth", "getdefinedbuffer", "getdocumentargument", "getdocumentargumentdefault", "getdocumentfilename", "getdummyparameters", "getemptyparameters", "geteparameters", "getexpandedparameters", "getfiguredimensions", "getfirstcharacter", "getfirsttwopassdata", "getfromcommacommand", "getfromcommalist", "getfromluatable", "getfromtwopassdata", "getglyphdirect", "getglyphstyled", "getgparameters", "getinlineuserdata", "getlasttwopassdata", "getlocalfloat", "getlocalfloats", "getmarking", "getmessage", "getnamedglyphdirect", "getnamedglyphstyled", "getnamedtwopassdatalist", "getnaturaldimensions", "getnoflines", "getobject", "getobjectdimensions", "getpaletsize", "getparameters", "getparwrapper", "getprivatechar", "getprivateslot", "getrandomcount", "getrandomdimen", "getrandomfloat", "getrandomnumber", "getrandomseed", "getraweparameters", "getrawgparameters", "getrawnoflines", "getrawparameters", "getrawxparameters", "getreference", "getreferenceentry", "getroundednoflines", "gets", "getsubstring", "gettokenlist", "gettwopassdata", "gettwopassdatalist", "getuserdata", "getuvalue", "getvalue", "getvariable", "getvariabledefault", "getxparameters", "gg", "ggg", "gggtr", "gimel", "globaldisablemode", "globalenablemode", "globalletempty", "globalpopbox", "globalpopmacro", "globalpreventmode", "globalprocesscommalist", "globalpushbox", "globalpushmacro", "globalswapcounts", "globalswapdimens", "globalswapmacros", "globalundefine", "glyphfontfile", "gnapprox", "gneqq", "gnsim", "gobbledoubleempty", "gobbleeightarguments", "gobblefivearguments", "gobblefiveoptionals", "gobblefourarguments", "gobblefouroptionals", "gobbleninearguments", "gobbleoneargument", "gobbleoneoptional", "gobblesevenarguments", "gobblesingleempty", "gobblesixarguments", "gobblespacetokens", "gobbletenarguments", "gobblethreearguments", "gobblethreeoptionals", "gobbletwoarguments", "gobbletwooptionals", "gobbleuntil", "gobbleuntilrelax", "godown", "goto", "gotobox", "gotopage", "grabbufferdata", "grabbufferdatadirect", "grabuntil", "grave", "graycolor", "grayvalue", "greedysplitstring", "greekAlpha", "greekAlphadasia", "greekAlphadasiaperispomeni", "greekAlphadasiatonos", "greekAlphadasiavaria", "greekAlphaiotasub", "greekAlphaiotasubdasia", "greekAlphaiotasubdasiaperispomeni", "greekAlphaiotasubdasiatonos", "greekAlphaiotasubdasiavaria", "greekAlphaiotasubpsili", "greekAlphaiotasubpsiliperispomeni", "greekAlphaiotasubpsilitonos", "greekAlphaiotasubpsilivaria", "greekAlphamacron", "greekAlphapsili", "greekAlphapsiliperispomeni", "greekAlphapsilitonos", "greekAlphapsilivaria", "greekAlphatonos", "greekAlphavaria", "greekAlphavrachy", "greekBeta", "greekChi", "greekCoronis", "greekDelta", "greekEpsilon", "greekEpsilondasia", "greekEpsilondasiatonos", "greekEpsilondasiavaria", "greekEpsilonpsili", "greekEpsilonpsilitonos", "greekEpsilonpsilivaria", "greekEpsilontonos", "greekEpsilonvaria", "greekEta", "greekEtadasia", "greekEtadasiaperispomeni", "greekEtadasiatonos", "greekEtadasiavaria", "greekEtaiotasub", "greekEtaiotasubdasia", "greekEtaiotasubdasiaperispomeni", "greekEtaiotasubdasiatonos", "greekEtaiotasubdasiavaria", "greekEtaiotasubpsili", "greekEtaiotasubpsiliperispomeni", "greekEtaiotasubpsilitonos", "greekEtaiotasubpsilivaria", "greekEtapsili", "greekEtapsiliperispomeni", "greekEtapsilitonos", "greekEtapsilivaria", "greekEtatonos", "greekEtavaria", "greekGamma", "greekIota", "greekIotadasia", "greekIotadasiaperispomeni", "greekIotadasiatonos", "greekIotadasiavaria", "greekIotadialytika", "greekIotamacron", "greekIotapsili", "greekIotapsiliperispomeni", "greekIotapsilitonos", "greekIotapsilivaria", "greekIotatonos", "greekIotavaria", "greekIotavrachy", "greekKappa", "greekLambda", "greekMu", "greekNu", "greekOmega", "greekOmegadasia", "greekOmegadasiaperispomeni", "greekOmegadasiatonos", "greekOmegadasiavaria", "greekOmegaiotasub", "greekOmegaiotasubdasia", "greekOmegaiotasubdasiaperispomeni", "greekOmegaiotasubdasiatonos", "greekOmegaiotasubdasiavaria", "greekOmegaiotasubpsili", "greekOmegaiotasubpsiliperispomeni", "greekOmegaiotasubpsilitonos", "greekOmegaiotasubpsilivaria", "greekOmegapsili", "greekOmegapsiliperispomeni", "greekOmegapsilitonos", "greekOmegapsilivaria", "greekOmegatonos", "greekOmegavaria", "greekOmicron", "greekOmicrondasia", "greekOmicrondasiatonos", "greekOmicrondasiavaria", "greekOmicronpsili", "greekOmicronpsilitonos", "greekOmicronpsilivaria", "greekOmicrontonos", "greekOmicronvaria", "greekPhi", "greekPi", "greekPsi", "greekRho", "greekRhodasia", "greekSigma", "greekSigmalunate", "greekTau", "greekTheta", "greekUpsilon", "greekUpsilondasia", "greekUpsilondasiaperispomeni", "greekUpsilondasiatonos", "greekUpsilondasiavaria", "greekUpsilondialytika", "greekUpsilonmacron", "greekUpsilontonos", "greekUpsilonvaria", "greekUpsilonvrachy", "greekXi", "greekZeta", "greekalpha", "greekalphadasia", "greekalphadasiaperispomeni", "greekalphadasiatonos", "greekalphadasiavaria", "greekalphaiotasub", "greekalphaiotasubdasia", "greekalphaiotasubdasiaperispomeni", "greekalphaiotasubdasiatonos", "greekalphaiotasubdasiavaria", "greekalphaiotasubperispomeni", "greekalphaiotasubpsili", "greekalphaiotasubpsiliperispomeni", "greekalphaiotasubpsilitonos", "greekalphaiotasubpsilivaria", "greekalphaiotasubtonos", "greekalphaiotasubvaria", "greekalphamacron", "greekalphaoxia", "greekalphaperispomeni", "greekalphapsili", "greekalphapsiliperispomeni", "greekalphapsilitonos", "greekalphapsilivaria", "greekalphatonos", "greekalphavaria", "greekalphavrachy", "greekbeta", "greekbetaalt", "greekchi", "greekdasia", "greekdasiaperispomeni", "greekdasiavaria", "greekdelta", "greekdialytikaperispomeni", "greekdialytikatonos", "greekdialytikavaria", "greekdigamma", "greekepsilon", "greekepsilonalt", "greekepsilondasia", "greekepsilondasiatonos", "greekepsilondasiavaria", "greekepsilonoxia", "greekepsilonpsili", "greekepsilonpsilitonos", "greekepsilonpsilivaria", "greekepsilontonos", "greekepsilonvaria", "greeketa", "greeketadasia", "greeketadasiaperispomeni", "greeketadasiatonos", "greeketadasiavaria", "greeketaiotasub", "greeketaiotasubdasia", "greeketaiotasubdasiaperispomeni", "greeketaiotasubdasiatonos", "greeketaiotasubdasiavaria", "greeketaiotasubperispomeni", "greeketaiotasubpsili", "greeketaiotasubpsiliperispomeni", "greeketaiotasubpsilitonos", "greeketaiotasubpsilivaria", "greeketaiotasubtonos", "greeketaiotasubvaria", "greeketaoxia", "greeketaperispomeni", "greeketapsili", "greeketapsiliperispomeni", "greeketapsilitonos", "greeketapsilivaria", "greeketatonos", "greeketavaria", "greekfinalsigma", "greekgamma", "greekiota", "greekiotadasia", "greekiotadasiaperispomeni", "greekiotadasiatonos", "greekiotadasiavaria", "greekiotadialytika", "greekiotadialytikaperispomeni", "greekiotadialytikatonos", "greekiotadialytikavaria", "greekiotamacron", "greekiotaoxia", "greekiotaperispomeni", "greekiotapsili", "greekiotapsiliperispomeni", "greekiotapsilitonos", "greekiotapsilivaria", "greekiotatonos", "greekiotavaria", "greekiotavrachy", "greekkappa", "greekkoppa", "greeklambda", "greekmu", "greeknu", "greeknumerals", "greeknumkoppa", "greekomega", "greekomegadasia", "greekomegadasiaperispomeni", "greekomegadasiatonos", "greekomegadasiavaria", "greekomegaiotasub", "greekomegaiotasubdasia", "greekomegaiotasubdasiaperispomeni", "greekomegaiotasubdasiatonos", "greekomegaiotasubdasiavaria", "greekomegaiotasubperispomeni", "greekomegaiotasubpsili", "greekomegaiotasubpsiliperispomeni", "greekomegaiotasubpsilitonos", "greekomegaiotasubpsilivaria", "greekomegaiotasubtonos", "greekomegaiotasubvaria", "greekomegaoxia", "greekomegaperispomeni", "greekomegapsili", "greekomegapsiliperispomeni", "greekomegapsilitonos", "greekomegapsilivaria", "greekomegatonos", "greekomegavaria", "greekomicron", "greekomicrondasia", "greekomicrondasiatonos", "greekomicrondasiavaria", "greekomicronoxia", "greekomicronpsili", "greekomicronpsilitonos", "greekomicronpsilivaria", "greekomicrontonos", "greekomicronvaria", "greekoxia", "greekperispomeni", "greekphi", "greekphialt", "greekpi", "greekpialt", "greekprosgegrammeni", "greekpsi", "greekpsili", "greekpsiliperispomeni", "greekpsilivaria", "greekrho", "greekrhoalt", "greekrhodasia", "greekrhopsili", "greeksampi", "greeksigma", "greeksigmalunate", "greekstigma", "greektau", "greektheta", "greekthetaalt", "greektonos", "greekupsilon", "greekupsilondasia", "greekupsilondasiaperispomeni", "greekupsilondasiatonos", "greekupsilondasiavaria", "greekupsilondiaeresis", "greekupsilondialytikaperispomeni", "greekupsilondialytikatonos", "greekupsilondialytikavaria", "greekupsilonmacron", "greekupsilonoxia", "greekupsilonperispomeni", "greekupsilonpsili", "greekupsilonpsiliperispomeni", "greekupsilonpsilitonos", "greekupsilonpsilivaria", "greekupsilontonos", "greekupsilonvaria", "greekupsilonvrachy", "greekvaria", "greekxi", "greekzeta", "grid", "groupedcommand", "gsetboxllx", "gsetboxlly", "gstroke", "gt", "gtrapprox", "gtrdot", "gtreqless", "gtreqqless", "gtrless", "gtrsim", "guilsingleleft", "guilsingleright", "gujaratinumerals", "gurmurkhinumerals", "hairline", "hairspace", "halflinestrut", "halfstrut", "halfwaybox", "handletokens", "handwritten", "hangul", "hanzi", "hash", "hat", "hbar", "hboxofvbox", "hboxreference", "hcaron", "hcircumflex", "hdofstring", "headhbox", "headlanguage", "headnumber", "headnumbercontent", "headnumberdistance", "headnumberwidth", "headreferenceattributes", "headsetupspacing", "headtext", "headtextcontent", "headtextdistance", "headtexts", "headtextwidth", "headvbox", "headwidth", "heartsuit", "hebrewAlef", "hebrewAyin", "hebrewBet", "hebrewDalet", "hebrewGimel", "hebrewHe", "hebrewHet", "hebrewKaf", "hebrewKaffinal", "hebrewLamed", "hebrewMem", "hebrewMemfinal", "hebrewNun", "hebrewNunfinal", "hebrewPe", "hebrewPefinal", "hebrewQof", "hebrewResh", "hebrewSamekh", "hebrewShin", "hebrewTav", "hebrewTet", "hebrewTsadi", "hebrewTsadifinal", "hebrewVav", "hebrewYod", "hebrewZayin", "hebrewnumerals", "heightanddepthofstring", "heightofstring", "heightspanningtext", "helptext", "hexnumber", "hexstringtonumber", "hglue", "hiddenbar", "hiddencitation", "hiddencite", "hideblocks", "high", "highlight", "highordinalstr", "hilo", "himilo", "hl", "hookleftarrow", "hookrightarrow", "horizontalgrowingbar", "horizontalpositionbar", "hpackbox", "hpackedbox", "hphantom", "hpos", "hsizefraction", "hslash", "hsmash", "hsmashbox", "hsmashed", "hspace", "hstroke", "htdpofstring", "htofstring", "hyphen", "hyphenatedcoloredword", "hyphenatedfile", "hyphenatedfilename", "hyphenatedhbox", "hyphenatedpar", "hyphenatedurl", "hyphenatedword", "iacute", "ibox", "ibreve", "icaron", "icircumflex", "ideographichalffillspace", "ideographicspace", "idiaeresis", "idotaccent", "idotbelow", "idoublegrave", "idxfromluatable", "ifassignment", "iff", "ifinobject", "ifinoutputstream", "ifparameters", "iftrialtypesetting", "ignoreimplicitspaces", "ignoretagsinexport", "ignorevalue", "igrave", "ihook", "ii", "iiiint", "iiiintop", "iiint", "iiintop", "iint", "iintop", "iinvertedbreve", "ijligature", "imacron", "imaginaryi", "imaginaryj", "imath", "immediatesavetwopassdata", "impliedby", "implies", "imply", "in", "includemenu", "includesvgbuffer", "includesvgfile", "includeversioninfo", "increment", "incrementcounter", "incrementedcounter", "incrementpagenumber", "incrementsubpagenumber", "incrementvalue", "indentation", "index", "infofont", "infofontbold", "inframed", "infty", "infull", "inheritparameter", "inhibitblank", "ininner", "ininneredge", "ininnermargin", "initializeboxstack", "inleft", "inleftedge", "inleftmargin", "inline", "inlinebuffer", "inlinedbox", "inlinemath", "inlinemathematics", "inlinemessage", "inlineordisplaymath", "inlineprettyprintbuffer", "inlinerange", "inmargin", "inmframed", "innerflushshapebox", "inother", "inouter", "inouteredge", "inoutermargin", "input", "inputfilebarename", "inputfilename", "inputfilerealsuffix", "inputfilesuffix", "inputgivenfile", "inright", "inrightedge", "inrightmargin", "insertpages", "inspectluatable", "installactionhandler", "installactivecharacter", "installanddefineactivecharacter", "installattributestack", "installautocommandhandler", "installautosetuphandler", "installbasicautosetuphandler", "installbasicparameterhandler", "installbottomframerenderer", "installcommandhandler", "installcorenamespace", "installctxfunction", "installctxscanner", "installdefinehandler", "installdefinitionset", "installdefinitionsetmember", "installdirectcommandhandler", "installdirectparameterhandler", "installdirectparametersethandler", "installdirectsetuphandler", "installdirectstyleandcolorhandler", "installframedautocommandhandler", "installframedcommandhandler", "installglobalmacrostack", "installlanguage", "installleftframerenderer", "installmacrostack", "installnamespace", "installoutputroutine", "installpagearrangement", "installparameterhandler", "installparameterhashhandler", "installparametersethandler", "installparentinjector", "installprotectedctxfunction", "installprotectedctxscanner", "installrightframerenderer", "installrootparameterhandler", "installsetuphandler", "installsetuponlycommandhandler", "installshipoutmethod", "installsimplecommandhandler", "installsimpleframedcommandhandler", "installstyleandcolorhandler", "installswitchcommandhandler", "installswitchsetuphandler", "installtexdirective", "installtextracker", "installtopframerenderer", "installunitsseparator", "installunitsspace", "installversioninfo", "int", "intclockwise", "integerrounding", "integers", "interactionbar", "interactionbuttons", "interactionmenu", "intercal", "intertext", "interwordspaceafter", "interwordspacebefore", "interwordspaces", "interwordspacesafter", "interwordspacesbefore", "intop", "invisiblecomma", "invisibleplus", "invisibletimes", "invokepagehandler", "iogonek", "iota", "italic", "italicbold", "italiccorrection", "italicface", "item", "items", "itemtag", "itilde", "jcaron", "jcircumflex", "ji", "jmath", "jobfilename", "jobfilesuffix", "kap", "kappa", "kcaron", "kcommaaccent", "keepblocks", "keeplinestogether", "keepunwantedspaces", "kerncharacters", "khook", "kkra", "koreancirclenumerals", "koreannumerals", "koreannumeralsc", "koreannumeralsp", "koreanparentnumerals", "lVert", "labellanguage", "labeltext", "labeltexts", "lacute", "lambda", "lambdabar", "land", "langle", "language", "languageCharacters", "languagecharacters", "languagecharwidth", "laplace", "lastcounter", "lastcountervalue", "lastdigit", "lastlinewidth", "lastnaturalboxdp", "lastnaturalboxht", "lastnaturalboxwd", "lastparwrapper", "lastpredefinedsymbol", "lastrealpage", "lastrealpagenumber", "lastsubcountervalue", "lastsubpage", "lastsubpagenumber", "lasttwodigits", "lastuserpage", "lastuserpagenumber", "lateluacode", "latin", "layeredtext", "layerheight", "layerwidth", "lazysavetaggedtwopassdata", "lazysavetwopassdata", "lbar", "lbox", "lbrace", "lbracket", "lcaron", "lceil", "lchexnumber", "lchexnumbers", "lcommaaccent", "lcurl", "ldot", "ldotmiddle", "ldotp", "ldots", "le", "leadsto", "left", "leftaligned", "leftarrow", "leftarrowtail", "leftarrowtriangle", "leftbottombox", "leftbox", "leftdasharrow", "leftguillemot", "leftharpoondown", "leftharpoonup", "lefthbox", "leftheadtext", "leftlabeltext", "leftleftarrows", "leftline", "leftmathlabeltext", "leftorrighthbox", "leftorrightvbox", "leftorrightvtop", "leftrightarrow", "leftrightarrows", "leftrightarrowtriangle", "leftrightharpoons", "leftrightsquigarrow", "leftskipadaption", "leftsquigarrow", "leftsubguillemot", "leftthreetimes", "lefttopbox", "lefttoright", "lefttorighthbox", "lefttorightvbox", "lefttorightvtop", "leftwavearrow", "leftwhitearrow", "leq", "leqq", "leqslant", "lessapprox", "lessdot", "lesseqgtr", "lesseqqgtr", "lessgtr", "lesssim", "letbeundefined", "letcatcodecommand", "letcscsname", "letcsnamecs", "letcsnamecsname", "letdummyparameter", "letempty", "letgvalue", "letgvalueempty", "letgvalurelax", "letterampersand", "letterat", "letterbackslash", "letterbar", "letterbgroup", "letterclosebrace", "lettercolon", "letterdollar", "letterdoublequote", "letteregroup", "letterescape", "letterexclamationmark", "letterhash", "letterhat", "letterleftbrace", "letterleftbracket", "letterleftparenthesis", "letterless", "lettermore", "letteropenbrace", "letterpercent", "letterquestionmark", "letterrightbrace", "letterrightbracket", "letterrightparenthesis", "lettersinglequote", "letterslash", "letterspacing", "lettertilde", "letterunderscore", "letvalue", "letvalueempty", "letvaluerelax", "lfence", "lfloor", "lgroup", "lhbox", "lhooknwarrow", "lhooksearrow", "limitatefirstline", "limitatelines", "limitatetext", "line", "linebox", "linefeed", "linefillerhbox", "linefillervbox", "linefillervtop", "linenote", "linespanningtext", "linethickness", "linterval", "listcitation", "listcite", "listlength", "listnamespaces", "literalmode", "ljligature", "ll", "llangle", "llap", "llbracket", "llcorner", "lll", "llless", "llointerval", "lmoustache", "lnapprox", "lneq", "lneqq", "lnot", "lnsim", "loadanyfile", "loadanyfileonce", "loadbtxdefinitionfile", "loadbtxreplacementfile", "loadcldfile", "loadcldfileonce", "loadfontgoodies", "loadluafile", "loadluafileonce", "loadspellchecklist", "loadtexfile", "loadtexfileonce", "loadtypescriptfile", "localframed", "localframedwithsettings", "localhsize", "localpopbox", "localpopmacro", "localpushbox", "localpushmacro", "localundefine", "locatedfilepath", "locatefilepath", "locfilename", "logo", "lohi", "lointerval", "lomihi", "longleftarrow", "longleftrightarrow", "longmapsfrom", "longmapsto", "longrightarrow", "longrightsquigarrow", "looparrowleft", "looparrowright", "lor", "low", "lowerbox", "lowercased", "lowercasestring", "lowercasing", "lowerleftdoubleninequote", "lowerleftsingleninequote", "lowerrightdoubleninequote", "lowerrightsingleninequote", "lozenge", "lparent", "lrcorner", "lrointerval", "lrtbbox", "lstroke", "lt", "ltimes", "ltop", "ltrhbox", "ltrvbox", "ltrvtop", "luaTeX", "luacode", "luaconditional", "luaenvironment", "luaexpanded", "luaexpr", "luafunction", "luajitTeX", "luamajorversion", "luametaTeX", "luaminorversion", "luaparameterset", "luasetup", "luaversion", "lvert", "m", "mLeftarrow", "mLeftrightarrow", "mRightarrow", "mainlanguage", "makecharacteractive", "makerawcommalist", "makestrutofbox", "maltese", "mapfontsize", "mapsdown", "mapsfrom", "mapsto", "mapsup", "margindata", "margintext", "markcontent", "markedpages", "marking", "markinjector", "markpage", "markreferencepage", "mat", "math", "mathampersand", "mathbf", "mathbi", "mathblackboard", "mathbs", "mathdefault", "mathdollar", "mathdouble", "mathematics", "mathfraktur", "mathfunction", "mathhash", "mathhyphen", "mathit", "mathitalic", "mathlabellanguage", "mathlabeltext", "mathlabeltexts", "mathop", "mathover", "mathpercent", "mathrm", "mathscript", "mathsl", "mathss", "mathtext", "mathtextbf", "mathtextbi", "mathtextbs", "mathtextit", "mathtextsl", "mathtexttf", "mathtf", "mathtriplet", "mathtt", "mathunder", "mathupright", "mathword", "mathwordbf", "mathwordbi", "mathwordbs", "mathwordit", "mathwordsl", "mathwordtf", "maxaligned", "mbox", "mcframed", "measure", "measured", "measuredangle", "measuredeq", "medskip", "medspace", "menubutton", "mequal", "message", "mfence", "mframed", "mfunction", "mfunctionlabeltext", "mhbox", "mho", "mhookleftarrow", "mhookrightarrow", "mid", "midaligned", "middle", "middlealigned", "middlebox", "midhbox", "midsubsentence", "minimalhbox", "minus", "minuscolon", "mirror", "mixedcaps", "mkvibuffer", "mleftarrow", "mleftharpoondown", "mleftharpoonup", "mleftrightarrow", "mleftrightharpoons", "mmapsto", "models", "moduleparameter", "molecule", "mono", "monobold", "mononormal", "month", "monthlong", "monthshort", "mp", "mprandomnumber", "mrel", "mrightarrow", "mrightharpoondown", "mrightharpoonup", "mrightleftharpoons", "mrightoverleftarrow", "mtext", "mtriplerel", "mtwoheadleftarrow", "mtwoheadrightarrow", "mu", "multimap", "nHdownarrow", "nHuparrow", "nLeftarrow", "nLeftrightarrow", "nRightarrow", "nVDash", "nVdash", "nVleftarrow", "nVleftrightarrow", "nVrightarrow", "nabla", "nacute", "namedheadnumber", "namedstructureheadlocation", "namedstructureuservariable", "namedstructurevariable", "namedtaggedlabeltexts", "napostrophe", "napprox", "napproxEq", "narrownobreakspace", "nasymp", "natural", "naturalhbox", "naturalhpack", "naturalnumbers", "naturaltpack", "naturalvbox", "naturalvcenter", "naturalvpack", "naturalvtop", "naturalwd", "ncaron", "ncommaaccent", "ncong", "ncurl", "ndivides", "ne", "nearrow", "neg", "negatecolorbox", "negated", "negativesign", "negemspace", "negenspace", "negthinspace", "neng", "neq", "nequiv", "neswarrow", "newattribute", "newcatcodetable", "newcounter", "newevery", "newfrenchspacing", "newluatable", "newmode", "newsignal", "newsystemmode", "nexists", "nextbox", "nextboxdp", "nextboxht", "nextboxhtdp", "nextboxwd", "nextcounter", "nextcountervalue", "nextdepth", "nextparagraphs", "nextrealpage", "nextrealpagenumber", "nextsubcountervalue", "nextsubpage", "nextsubpagenumber", "nextuserpage", "nextuserpagenumber", "ngeq", "ngrave", "ngtr", "ngtrless", "ngtrsim", "ni", "nihongo", "nin", "njligature", "nleftarrow", "nleftrightarrow", "nleq", "nless", "nlessgtr", "nlesssim", "nmid", "nni", "nobar", "nobreakspace", "nocap", "nocharacteralign", "nocitation", "nocite", "nodetostring", "noffigurepages", "noflines", "noflinesinbox", "noflocalfloats", "noheaderandfooterlines", "noheightstrut", "nohyphens", "noindentation", "noitem", "nonfrenchspacing", "nonmathematics", "nonvalidassignment", "normal", "normalboldface", "normalframedwithsettings", "normalitalicface", "normalizebodyfontsize", "normalizedfontsize", "normalizefontdepth", "normalizefontheight", "normalizefontline", "normalizefontwidth", "normalizetextdepth", "normalizetextheight", "normalizetextline", "normalizetextwidth", "normalslantedface", "normaltypeface", "nospace", "not", "note", "notesymbol", "notin", "notopandbottomlines", "notragged", "nowns", "nparallel", "nprec", "npreccurlyeq", "nrightarrow", "nsim", "nsimeq", "nsqsubseteq", "nsqsupseteq", "nsubset", "nsubseteq", "nsucc", "nsucccurlyeq", "nsupset", "nsupseteq", "ntilde", "ntimes", "ntriangleleft", "ntrianglelefteq", "ntriangleright", "ntrianglerighteq", "nu", "numberofpoints", "numbers", "nvDash", "nvdash", "nvleftarrow", "nvleftrightarrow", "nvrightarrow", "nwarrow", "nwsearrow", "oacute", "obeydepth", "objectdepth", "objectheight", "objectmargin", "objectwidth", "obox", "obreve", "ocaron", "ocircumflex", "ocircumflexacute", "ocircumflexdotbelow", "ocircumflexgrave", "ocircumflexhook", "ocircumflextilde", "octnumber", "octstringtonumber", "odiaeresis", "odiaeresismacron", "odot", "odotaccent", "odotaccentmacron", "odotbelow", "odoublegrave", "oeligature", "offset", "offsetbox", "ograve", "ohm", "ohook", "ohorn", "ohornacute", "ohorndotbelow", "ohorngrave", "ohornhook", "ohorntilde", "ohungarumlaut", "oiiint", "oiint", "oint", "ointclockwise", "ointctrclockwise", "oinvertedbreve", "omacron", "omega", "omicron", "ominus", "onedigitrounding", "oneeighth", "onefifth", "onehalf", "onequarter", "onesixth", "onesuperior", "onethird", "oogonek", "oogonekmacron", "operatorlanguage", "operatortext", "oplus", "ordfeminine", "ordinaldaynumber", "ordinalstr", "ordmasculine", "ornamenttext", "oslash", "ostroke", "ostrokeacute", "otilde", "otildemacron", "otimes", "outputfilename", "outputstreambox", "outputstreamcopy", "outputstreamunvbox", "outputstreamunvcopy", "over", "overbar", "overbars", "overbartext", "overbarunderbar", "overbrace", "overbracetext", "overbraceunderbrace", "overbracket", "overbrackettext", "overbracketunderbracket", "overlaybutton", "overlaycolor", "overlaydepth", "overlayfigure", "overlayheight", "overlayimage", "overlaylinecolor", "overlaylinewidth", "overlayoffset", "overlayrollbutton", "overlaywidth", "overleftarrow", "overleftharpoondown", "overleftharpoonup", "overleftrightarrow", "overloaderror", "overparent", "overparenttext", "overparentunderparent", "overrightarrow", "overrightharpoondown", "overrightharpoonup", "overset", "overstrike", "overstrikes", "overtwoheadleftarrow", "overtwoheadrightarrow", "owns", "page", "pagearea", "pagebreak", "pagefigure", "pageinjection", "pagenumber", "pagereference", "pagestaterealpage", "pagestaterealpageorder", "paletsize", "paragraphmark", "parallel", "part", "partial", "pdfTeX", "pdfactualtext", "pdfbackendactualtext", "pdfbackendcurrentresources", "pdfbackendsetcatalog", "pdfbackendsetcolorspace", "pdfbackendsetextgstate", "pdfbackendsetinfo", "pdfbackendsetname", "pdfbackendsetpageattribute", "pdfbackendsetpageresource", "pdfbackendsetpagesattribute", "pdfbackendsetpattern", "pdfbackendsetshade", "pdfcolor", "pdfeTeX", "percent", "percentdimen", "periodcentered", "periods", "permitcaretescape", "permitcircumflexescape", "permitspacesbetweengroups", "perp", "persiandecimals", "persiandecimalseparator", "persiannumerals", "persianthousandsseparator", "perthousand", "phantom", "phantombox", "phi", "phook", "pi", "pickupgroupedcommand", "pitchfork", "placeattachments", "placebookmarks", "placebtxrendering", "placechemical", "placecitation", "placecombinedlist", "placecomments", "placecontent", "placecurrentformulanumber", "placedbox", "placefigure", "placefloat", "placefloatcaption", "placefloatwithsetups", "placefootnotes", "placeformula", "placeframed", "placegraphic", "placeheadnumber", "placeheadtext", "placehelp", "placeholder", "placeindex", "placeinitial", "placeintermezzo", "placelayer", "placelayeredtext", "placelegend", "placelist", "placelistofabbreviations", "placelistofchemicals", "placelistoffigures", "placelistofgraphics", "placelistofintermezzi", "placelistoflogos", "placelistofpublications", "placelistofsorts", "placelistofsynonyms", "placelistoftables", "placelocalfootnotes", "placelocalnotes", "placement", "placenamedfloat", "placenamedformula", "placenotes", "placeongrid", "placeontopofeachother", "placepagenumber", "placepairedbox", "placeparallel", "placerawheaddata", "placerawheadnumber", "placerawheadtext", "placerawlist", "placeregister", "placerenderingwindow", "placesidebyside", "placesubformula", "placetable", "pm", "popattribute", "popmacro", "popmode", "popsystemmode", "position", "positionoverlay", "positionregionoverlay", "positivesign", "postponenotes", "prec", "precapprox", "preccurlyeq", "preceq", "preceqq", "precnapprox", "precneq", "precneqq", "precnsim", "precsim", "predefinedfont", "predefinefont", "predefinesymbol", "prefixedpagenumber", "prefixlanguage", "prefixtext", "prependetoks", "prependgvalue", "prependtocommalist", "prependtoks", "prependtoksonce", "prependvalue", "prerollblank", "presetbtxlabeltext", "presetdocument", "presetfieldsymbols", "presetheadtext", "presetlabeltext", "presetmathlabeltext", "presetoperatortext", "presetprefixtext", "presetsuffixtext", "presettaglabeltext", "presetunittext", "pretocommalist", "prettyprintbuffer", "prevcounter", "prevcountervalue", "preventmode", "prevrealpage", "prevrealpagenumber", "prevsubcountervalue", "prevsubpage", "prevsubpagenumber", "prevuserpage", "prevuserpagenumber", "prime", "primes", "procent", "processMPbuffer", "processMPfigurefile", "processaction", "processallactionsinset", "processassignlist", "processassignmentcommand", "processassignmentlist", "processbetween", "processblocks", "processbodyfontenvironmentlist", "processcolorcomponents", "processcommacommand", "processcommalist", "processcommalistwithparameters", "processcontent", "processfile", "processfilemany", "processfilenone", "processfileonce", "processfirstactioninset", "processisolatedchars", "processisolatedwords", "processlinetablebuffer", "processlinetablefile", "processlist", "processmonth", "processranges", "processseparatedlist", "processtexbuffer", "processtokens", "processuntil", "processxtablebuffer", "processyear", "prod", "product", "profiledbox", "profilegivenbox", "program", "project", "propto", "pseudoMixedCapped", "pseudoSmallCapped", "pseudoSmallcapped", "pseudosmallcapped", "psi", "punctuationspace", "purenumber", "pushattribute", "pushbutton", "pushmacro", "pushmode", "pushoutputstream", "pushsystemmode", "putboxincache", "putnextboxincache", "qquad", "quad", "quadrupleprime", "quads", "quarterstrut", "questiondown", "questionedeq", "quitcommalist", "quitprevcommalist", "quittypescriptscanning", "quotation", "quote", "quotedbl", "quotedblbase", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "quotesingle", "quotesinglebase", "rVert", "racute", "raggedbottom", "raggedcenter", "raggedleft", "raggedright", "raggedwidecenter", "raisebox", "randomizetext", "randomnumber", "rangle", "rationals", "rawcounter", "rawcountervalue", "rawdate", "rawdoifelseinset", "rawdoifinset", "rawdoifinsetelse", "rawgetparameters", "rawprocessaction", "rawprocesscommacommand", "rawprocesscommalist", "rawstructurelistuservariable", "rawsubcountervalue", "rbox", "rbrace", "rbracket", "rcaron", "rceil", "rcommaaccent", "rdoublegrave", "readfile", "readfixfile", "readjobfile", "readlocfile", "readsetfile", "readsysfile", "readtexfile", "readxmlfile", "realSmallCapped", "realSmallcapped", "realpagenumber", "reals", "realsmallcapped", "recursedepth", "recurselevel", "recursestring", "redoconvertfont", "ref", "reference", "referencecolumnnumber", "referencepagedetail", "referencepagestate", "referenceprefix", "referencerealpage", "referencesymbol", "referring", "registerattachment", "registerctxluafile", "registered", "registerexternalfigure", "registerfontclass", "registerhyphenationexception", "registerhyphenationpattern", "registermenubuttons", "registerparwrapper", "registerparwrapperreverse", "registersort", "registersynonym", "registerunit", "regular", "relatemarking", "relateparameterhandlers", "relaxvalueifundefined", "relbar", "remainingcharacters", "remark", "removebottomthings", "removedepth", "removefromcommalist", "removelastskip", "removelastspace", "removemarkedcontent", "removepunctuation", "removesubstring", "removetoks", "removeunwantedspaces", "repeathead", "replacefeature", "replaceincommalist", "replaceword", "rescan", "rescanwithsetup", "resetMPdrawing", "resetMPenvironment", "resetMPinstance", "resetallattributes", "resetandaddfeature", "resetbar", "resetboxesincache", "resetbreakpoints", "resetbuffer", "resetcharacteralign", "resetcharacterkerning", "resetcharacterspacing", "resetcharacterstripping", "resetcollector", "resetcounter", "resetctxscanner", "resetdigitsmanipulation", "resetdirection", "resetfeature", "resetflag", "resetfontcolorsheme", "resetfontfallback", "resetfontsolution", "resethyphenationfeatures", "resetinjector", "resetinteractionmenu", "resetitaliccorrection", "resetlayer", "resetlocalfloats", "resetmarker", "resetmarking", "resetmode", "resetpagenumber", "resetparallel", "resetpath", "resetpenalties", "resetperiodkerning", "resetprofile", "resetrecurselevel", "resetreference", "resetreplacements", "resetscript", "resetsetups", "resetshownsynonyms", "resetsubpagenumber", "resetsymbolset", "resetsystemmode", "resettimer", "resettokenlist", "resettrackers", "resettrialtypesetting", "resetusedsortings", "resetusedsynonyms", "resetuserpagenumber", "resetvalue", "resetvisualizers", "reshapebox", "resolvedglyphdirect", "resolvedglyphstyled", "restartcounter", "restorebox", "restorecatcodes", "restorecounter", "restorecurrentattributes", "restoreendofline", "restoreglobalbodyfont", "restriction", "retestfeature", "reusableMPgraphic", "reuseMPgraphic", "reuserandomseed", "reverseddoubleprime", "reversedprime", "reversedtripleprime", "reversehbox", "reversehpack", "reversetpack", "reversevbox", "reversevboxcontent", "reversevpack", "reversevtop", "revivefeature", "rfence", "rfloor", "rgroup", "rhbox", "rho", "rhooknearrow", "rhookswarrow", "right", "rightaligned", "rightangle", "rightarrow", "rightarrowbar", "rightarrowtail", "rightarrowtriangle", "rightbottombox", "rightbox", "rightdasharrow", "rightguillemot", "rightharpoondown", "rightharpoonup", "righthbox", "rightheadtext", "rightlabeltext", "rightleftarrows", "rightleftharpoons", "rightline", "rightmathlabeltext", "rightorleftpageaction", "rightpageorder", "rightrightarrows", "rightskipadaption", "rightsquigarrow", "rightsubguillemot", "rightthreearrows", "rightthreetimes", "righttoleft", "righttolefthbox", "righttoleftvbox", "righttoleftvtop", "righttopbox", "rightwavearrow", "rightwhitearrow", "ring", "rinterval", "rinvertedbreve", "risingdotseq", "rlap", "rlointerval", "rmoustache", "rneq", "robustaddtocommalist", "robustdoifelseinset", "robustdoifinsetelse", "robustpretocommalist", "rointerval", "rollbutton", "roman", "romanC", "romanD", "romanI", "romanII", "romanIII", "romanIV", "romanIX", "romanL", "romanM", "romanV", "romanVI", "romanVII", "romanVIII", "romanX", "romanXI", "romanXII", "romanc", "romand", "romani", "romanii", "romaniii", "romaniv", "romanix", "romanl", "romanm", "romannumerals", "romanv", "romanvi", "romanvii", "romanviii", "romanx", "romanxi", "romanxii", "rootradical", "rotate", "rparent", "rrangle", "rrbracket", "rrointerval", "rtimes", "rtlhbox", "rtlvbox", "rtlvtop", "rtop", "ruby", "ruledhbox", "ruledhpack", "ruledmbox", "ruledtopv", "ruledtpack", "ruledvbox", "ruledvpack", "ruledvtop", "runMPbuffer", "runninghbox", "russianNumerals", "russiannumerals", "rvert", "sacute", "safechar", "samplefile", "sans", "sansbold", "sansnormal", "sansserif", "savebox", "savebtxdataset", "savebuffer", "savecounter", "savecurrentattributes", "savenormalmeaning", "savetaggedtwopassdata", "savetwopassdata", "sbox", "scale", "scaron", "scedilla", "schwa", "schwahook", "scircumflex", "scommaaccent", "screen", "searrow", "secondoffivearguments", "secondoffourarguments", "secondofsixarguments", "secondofthreearguments", "secondofthreeunexpanded", "secondoftwoarguments", "secondoftwounexpanded", "section", "sectionmark", "seeindex", "select", "selectblocks", "serializecommalist", "serializedcommalist", "serif", "serifbold", "serifnormal", "setJSpreamble", "setMPlayer", "setMPpositiongraphic", "setMPpositiongraphicrange", "setMPtext", "setMPvariable", "setMPvariables", "setautopagestaterealpageno", "setbar", "setbigbodyfont", "setboxllx", "setboxlly", "setbreakpoints", "setcapstrut", "setcatcodetable", "setcharacteralign", "setcharacteraligndetail", "setcharactercasing", "setcharactercleaning", "setcharacterkerning", "setcharacterspacing", "setcharacterstripping", "setcharstrut", "setcollector", "setcolormodell", "setcounter", "setcounterown", "setctxluafunction", "setcurrentfontclass", "setdataset", "setdatavalue", "setdefaultpenalties", "setdigitsmanipulation", "setdirection", "setdocumentargument", "setdocumentargumentdefault", "setdocumentfilename", "setdummyparameter", "setelementexporttag", "setemeasure", "setevalue", "setevariable", "setevariables", "setexpansion", "setfirstline", "setfirstpasscharacteralign", "setflag", "setfont", "setfontcolorsheme", "setfontfeature", "setfontsolution", "setfontstrut", "setfractions", "setglobalscript", "setgmeasure", "setgvalue", "setgvariable", "setgvariables", "sethboxregister", "sethyphenatedurlafter", "sethyphenatedurlbefore", "sethyphenatedurlnormal", "sethyphenationfeatures", "setinitial", "setinjector", "setinteraction", "setinterfacecommand", "setinterfaceconstant", "setinterfaceelement", "setinterfacemessage", "setinterfacevariable", "setinternalrendering", "setitaliccorrection", "setlayer", "setlayerframed", "setlayertext", "setlinefiller", "setlocalhsize", "setlocalscript", "setluatable", "setmainbodyfont", "setmainparbuilder", "setmarker", "setmarking", "setmathstyle", "setmeasure", "setmessagetext", "setminus", "setmode", "setnostrut", "setnote", "setnotetext", "setobject", "setoldstyle", "setpagereference", "setpagestate", "setpagestaterealpageno", "setparagraphfreezing", "setpenalties", "setpercentdimen", "setperiodkerning", "setposition", "setpositionbox", "setpositiondata", "setpositiondataplus", "setpositiononly", "setpositionplus", "setpositionstrut", "setprofile", "setrandomseed", "setreference", "setreferencedobject", "setregisterentry", "setreplacements", "setrigidcolumnbalance", "setrigidcolumnhsize", "setscript", "setsecondpasscharacteralign", "setsectionblock", "setsimplecolumnshsize", "setsmallbodyfont", "setsmallcaps", "setstackbox", "setstructurepageregister", "setstrut", "setsuperiors", "setsystemmode", "settabular", "settaggedmetadata", "settestcrlf", "settextcontent", "settightobject", "settightreferencedobject", "settightstrut", "settightunreferencedobject", "settokenlist", "settrialtypesetting", "setuevalue", "setugvalue", "setunreferencedobject", "setup", "setupMPgraphics", "setupMPinstance", "setupMPpage", "setupMPvariables", "setupTABLE", "setupTEXpage", "setupalign", "setupalternativestyles", "setuparranging", "setupattachment", "setupattachments", "setupbackend", "setupbackground", "setupbackgrounds", "setupbar", "setupbars", "setupblackrules", "setupblank", "setupbleeding", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbookmark", "setupbottom", "setupbottomtexts", "setupbtx", "setupbtxdataset", "setupbtxlabeltext", "setupbtxlist", "setupbtxregister", "setupbtxrendering", "setupbuffer", "setupbutton", "setupcapitals", "setupcaption", "setupcaptions", "setupcharacteralign", "setupcharacterkerning", "setupcharacterspacing", "setupchemical", "setupchemicalframed", "setupclipping", "setupcollector", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetarea", "setupcolumnsetareatext", "setupcolumnsetlines", "setupcolumnsetspan", "setupcolumnsetstart", "setupcombination", "setupcombinedlist", "setupcomment", "setupcontent", "setupcounter", "setupdataset", "setupdelimitedtext", "setupdescription", "setupdescriptions", "setupdirections", "setupdocument", "setupeffect", "setupenumeration", "setupenumerations", "setupenv", "setupexpansion", "setupexport", "setupexternalfigure", "setupexternalfigures", "setupexternalsoundtracks", "setupfacingfloat", "setupfield", "setupfieldbody", "setupfieldcategory", "setupfieldcontentframed", "setupfieldlabelframed", "setupfields", "setupfieldtotalframed", "setupfiller", "setupfillinlines", "setupfillinrules", "setupfirstline", "setupfittingpage", "setupfloat", "setupfloatframed", "setupfloats", "setupfloatsplitting", "setupfontexpansion", "setupfontprotrusion", "setupfonts", "setupfontsolution", "setupfooter", "setupfootertexts", "setupfootnotes", "setupforms", "setupformula", "setupformulae", "setupformulaframed", "setupframed", "setupframedcontent", "setupframedtable", "setupframedtablecolumn", "setupframedtablerow", "setupframedtext", "setupframedtexts", "setupglobalreferenceprefix", "setuphead", "setupheadalternative", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphelp", "setuphigh", "setuphighlight", "setuphyphenation", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupindex", "setupinitial", "setupinsertion", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupitaliccorrection", "setupitemgroup", "setupitemizations", "setupitemize", "setupitems", "setuplabel", "setuplabeltext", "setuplanguage", "setuplayer", "setuplayeredtext", "setuplayout", "setuplayouttext", "setuplegend", "setuplinefiller", "setuplinefillers", "setuplinenote", "setuplinenumbering", "setuplines", "setuplinetable", "setuplinewidth", "setuplist", "setuplistalternative", "setuplistextra", "setuplocalfloats", "setuplocalinterlinespace", "setuplow", "setuplowhigh", "setuplowmidhigh", "setupmakeup", "setupmarginblock", "setupmargindata", "setupmarginframed", "setupmarginrule", "setupmarginrules", "setupmarking", "setupmathalignment", "setupmathcases", "setupmathematics", "setupmathfence", "setupmathfraction", "setupmathfractions", "setupmathframed", "setupmathlabeltext", "setupmathmatrix", "setupmathornament", "setupmathradical", "setupmathstackers", "setupmathstyle", "setupmixedcolumns", "setupmodule", "setupmulticolumns", "setupnarrower", "setupnotation", "setupnotations", "setupnote", "setupnotes", "setupoffset", "setupoffsetbox", "setupoperatortext", "setupoppositeplacing", "setuporientation", "setupoutput", "setupoutputroutine", "setuppagechecker", "setuppagecolumns", "setuppagecomment", "setuppageinjection", "setuppageinjectionalternative", "setuppagenumber", "setuppagenumbering", "setuppageshift", "setuppagestate", "setuppagetransitions", "setuppairedbox", "setuppalet", "setuppaper", "setuppapersize", "setupparagraph", "setupparagraphintro", "setupparagraphnumbering", "setupparagraphs", "setupparallel", "setupperiodkerning", "setupperiods", "setupplaceholder", "setupplacement", "setuppositionbar", "setuppositioning", "setupprefixtext", "setupprocessor", "setupprofile", "setupprograms", "setupquotation", "setupquote", "setuprealpagenumber", "setupreferenceformat", "setupreferenceprefix", "setupreferencestructureprefix", "setupreferencing", "setupregister", "setupregisters", "setuprenderingwindow", "setuprotate", "setupruby", "setups", "setupscale", "setupscript", "setupscripts", "setupsectionblock", "setupselector", "setupshift", "setupsidebar", "setupsorting", "setupspacing", "setupspellchecking", "setupstartstop", "setupstretched", "setupstrut", "setupstyle", "setupsubformula", "setupsubformulas", "setupsubpagenumber", "setupsuffixtext", "setupsymbols", "setupsymbolset", "setupsynctex", "setupsynonyms", "setupsystem", "setuptables", "setuptabulate", "setuptagging", "setuptaglabeltext", "setuptext", "setuptextbackground", "setuptextflow", "setuptextnote", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptooltip", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunit", "setupunittext", "setupurl", "setupuserdata", "setupuserdataalternative", "setupuserpagenumber", "setupversion", "setupviewerlayer", "setupvspacing", "setupwhitespace", "setupwithargument", "setupwithargumentswapped", "setupxml", "setupxtable", "setuvalue", "setuxvalue", "setvalue", "setvariable", "setvariables", "setvboxregister", "setvisualizerfont", "setvtopregister", "setwidthof", "setxmeasure", "setxvalue", "setxvariable", "setxvariables", "seveneighths", "sfrac", "shapedhbox", "sharp", "shiftbox", "shiftdown", "shiftup", "showallmakeup", "showattributes", "showbodyfont", "showbodyfontenvironment", "showboxes", "showbtxdatasetauthors", "showbtxdatasetcompleteness", "showbtxdatasetfields", "showbtxfields", "showbtxhashedauthors", "showbtxtables", "showchardata", "showcharratio", "showcolor", "showcolorbar", "showcolorcomponents", "showcolorgroup", "showcolorset", "showcolorstruts", "showcounter", "showdirectives", "showdirsinmargin", "showedebuginfo", "showexperiments", "showfont", "showfontdata", "showfontexpansion", "showfontitalics", "showfontkerns", "showfontparameters", "showfontstrip", "showfontstyle", "showframe", "showglyphdata", "showglyphs", "showgrid", "showgridsnapping", "showhelp", "showhyphenationtrace", "showhyphens", "showinjector", "showjustification", "showkerning", "showlayout", "showlayoutcomponents", "showligature", "showligatures", "showlogcategories", "showluatables", "showmakeup", "showmargins", "showmessage", "showminimalbaseline", "shownextbox", "showotfcomposition", "showpalet", "showparentchain", "showparwrapperstate", "showprint", "showsetups", "showsetupsdefinition", "showstruts", "showsymbolset", "showtimer", "showtokens", "showtrackers", "showvalue", "showvariable", "showwarning", "sigma", "signalrightpage", "sim", "simeq", "simplealignedbox", "simplealignedboxplus", "simplealignedspreadbox", "simplegroupedcommand", "simplereversealignedbox", "simplereversealignedboxplus", "singalcharacteralign", "singlebond", "singleverticalbar", "sixperemspace", "sixthofsixarguments", "slanted", "slantedbold", "slantedface", "slash", "slicepages", "slong", "slovenianNumerals", "sloveniannumerals", "small", "smallbodyfont", "smallbold", "smallbolditalic", "smallboldslanted", "smallcappedcharacters", "smallcappedromannumerals", "smallcaps", "smaller", "smallitalicbold", "smallnormal", "smallskip", "smallslanted", "smallslantedbold", "smalltype", "smash", "smashbox", "smashboxed", "smashedhbox", "smashedvbox", "smile", "snaptogrid", "softhyphen", "solidus", "someheadnumber", "somekindoftab", "someline", "somelocalfloat", "somenamedheadnumber", "someplace", "somewhere", "space", "spaceddigits", "spaceddigitsmethod", "spaceddigitsseparator", "spaceddigitssymbol", "spadesuit", "spanishNumerals", "spanishnumerals", "speech", "sphericalangle", "splitatasterisk", "splitatcolon", "splitatcolons", "splitatcomma", "splitatperiod", "splitdfrac", "splitfilename", "splitfloat", "splitfrac", "splitoffbase", "splitofffull", "splitoffkind", "splitoffname", "splitoffpath", "splitoffroot", "splitofftokens", "splitofftype", "splitstring", "spreadhbox", "sqcap", "sqcup", "sqrt", "sqsubset", "sqsubseteq", "sqsubsetneq", "sqsupset", "sqsupseteq", "sqsupsetneq", "square", "squaredots", "ssharp", "stackrel", "stackscripts", "star", "stareq", "startJScode", "startJSpreamble", "startLUA", "startMP", "startMPclip", "startMPcode", "startMPdefinitions", "startMPdrawing", "startMPenvironment", "startMPextensions", "startMPinclusions", "startMPinitializations", "startMPpage", "startMPpositiongraphic", "startMPpositionmethod", "startMPrun", "startPARSEDXML", "startTABLE", "startTABLEbody", "startTABLEfoot", "startTABLEhead", "startTABLEnested", "startTABLEnext", "startTC", "startTD", "startTDs", "startTEX", "startTEXpage", "startTH", "startTN", "startTR", "startTRs", "startTX", "startTY", "startXML", "startalign", "startalignment", "startallmodes", "startappendices", "startarrangedpages", "startasciimode", "startaside", "startattachment", "startbackground", "startbackmatter", "startbar", "startbbordermatrix", "startbitmapimage", "startblockquote", "startbodymatter", "startbordermatrix", "startboxedcolumns", "startbtxlabeltext", "startbtxrenderingdefinitions", "startbuffer", "startcases", "startcatcodetable", "startcenteraligned", "startchapter", "startcharacteralign", "startcheckedfences", "startchemical", "startchemicaltext", "startcollect", "startcollecting", "startcolor", "startcolorintent", "startcoloronly", "startcolorset", "startcolumns", "startcolumnset", "startcolumnsetspan", "startcombination", "startcomment", "startcomponent", "startcontextcode", "startcontextdefinitioncode", "startctxfunction", "startctxfunctiondefinition", "startcurrentcolor", "startcurrentlistentrywrapper", "startdelimited", "startdelimitedtext", "startdisplaymath", "startdmath", "startdocument", "starteffect", "startelement", "startembeddedxtable", "startendnote", "startendofline", "startenvironment", "startexceptions", "startexpanded", "startexpandedcollect", "startextendedcatcodetable", "startexternalfigurecollection", "startfacingfloat", "startfact", "startfigure", "startfiguretext", "startfittingpage", "startfixed", "startfloatcombination", "startfont", "startfontclass", "startfontsolution", "startfootnote", "startformula", "startformulas", "startframed", "startframedcell", "startframedcontent", "startframedrow", "startframedtable", "startframedtext", "startfrontmatter", "startgoto", "startgraphictext", "startgridsnapping", "starthanging", "starthbox", "starthboxestohbox", "starthboxregister", "starthead", "startheadtext", "starthelptext", "starthiding", "starthighlight", "starthyphenation", "startimath", "startindentation", "startindentedtext", "startinteraction", "startinteractionmenu", "startinterface", "startintermezzotext", "startintertext", "startitem", "startitemgroup", "startitemgroupcolumns", "startitemize", "startknockout", "startlabeltext", "startlanguage", "startlayout", "startleftaligned", "startlegend", "startline", "startlinealignment", "startlinecorrection", "startlinefiller", "startlinenote", "startlinenumbering", "startlines", "startlinetable", "startlinetablebody", "startlinetablecell", "startlinetablehead", "startlocalfootnotes", "startlocalheadsetup", "startlocallinecorrection", "startlocalnotes", "startlocalsetups", "startlua", "startluacode", "startluaparameterset", "startluasetups", "startmakeup", "startmarginblock", "startmarginrule", "startmarkedcontent", "startmarkpages", "startmathalignment", "startmathcases", "startmathlabeltext", "startmathmatrix", "startmathmode", "startmathstyle", "startmatrices", "startmatrix", "startmaxaligned", "startmdformula", "startmidaligned", "startmiddlealigned", "startmiddlemakeup", "startmixedcolumns", "startmode", "startmodeset", "startmodule", "startmoduletestsection", "startmpformula", "startmulticolumns", "startnamedsection", "startnamedsubformulas", "startnarrow", "startnarrower", "startnegative", "startnicelyfilledbox", "startnointerference", "startnotallmodes", "startnotext", "startnotmode", "startoperatortext", "startopposite", "startoutputstream", "startoverlay", "startoverprint", "startpacked", "startpagecolumns", "startpagecomment", "startpagefigure", "startpagelayout", "startpagemakeup", "startpar", "startparagraph", "startparagraphs", "startparagraphscell", "startparbuilder", "startpart", "startpath", "startplacechemical", "startplacefigure", "startplacefloat", "startplaceformula", "startplacegraphic", "startplaceintermezzo", "startplacelegend", "startplacepairedbox", "startplacetable", "startpositioning", "startpositionoverlay", "startpositive", "startpostponing", "startpostponingnotes", "startprefixtext", "startprocessassignmentcommand", "startprocessassignmentlist", "startprocesscommacommand", "startprocesscommalist", "startproduct", "startproject", "startprotect", "startprotectedcolors", "startpublication", "startpunctuation", "startquotation", "startquote", "startrandomized", "startrandomseed", "startrawsetups", "startreadingfile", "startreferenceprefix", "startregime", "startregister", "startreusableMPgraphic", "startrightaligned", "startruby", "startscript", "startsdformula", "startsection", "startsectionblock", "startsectionblockenvironment", "startsectionlevel", "startsetups", "startshapebox", "startshift", "startsidebar", "startsimplecolumns", "startspecialitem", "startspeech", "startspformula", "startsplitformula", "startsplittext", "startspread", "startstandardmakeup", "startstaticMPfigure", "startstaticMPgraphic", "startstrictinspectnextcharacter", "startstructurepageregister", "startstrut", "startstyle", "startsubformulas", "startsubject", "startsubjectlevel", "startsubsection", "startsubsentence", "startsubstack", "startsubsubject", "startsubsubsection", "startsubsubsubject", "startsubsubsubsection", "startsubsubsubsubject", "startsubsubsubsubsection", "startsubsubsubsubsubject", "startsuffixtext", "startsymbolset", "starttable", "starttablehead", "starttables", "starttabletail", "starttabletext", "starttabulate", "starttabulatehead", "starttabulatetail", "starttagged", "starttaglabeltext", "starttexcode", "starttexdefinition", "starttext", "starttextbackground", "starttextbackgroundmanual", "starttextcolor", "starttextcolorintent", "starttextflow", "starttextmakeup", "starttextrule", "startthematrix", "starttitle", "starttokenlist", "starttokens", "starttransparent", "starttypescript", "starttypescriptcollection", "starttyping", "startuniqueMPgraphic", "startuniqueMPpagegraphic", "startunittext", "startunpacked", "startusableMPgraphic", "startuseMPgraphic", "startusemathstyleparameter", "startuserdata", "startusingbtxspecification", "startvbox", "startvboxregister", "startvboxtohbox", "startvboxtohboxseparator", "startviewerlayer", "startvtop", "startvtopregister", "startxcell", "startxcellgroup", "startxcolumn", "startxgroup", "startxmldisplayverbatim", "startxmlinlineverbatim", "startxmlraw", "startxmlsetups", "startxrow", "startxrowgroup", "startxtable", "startxtablebody", "startxtablefoot", "startxtablehead", "startxtablenext", "stligature", "stopJScode", "stopJSpreamble", "stopLUA", "stopMP", "stopMPclip", "stopMPcode", "stopMPdefinitions", "stopMPdrawing", "stopMPenvironment", "stopMPextensions", "stopMPinclusions", "stopMPinitializations", "stopMPpage", "stopMPpositiongraphic", "stopMPpositionmethod", "stopMPrun", "stopPARSEDXML", "stopTABLE", "stopTABLEbody", "stopTABLEfoot", "stopTABLEhead", "stopTABLEnested", "stopTABLEnext", "stopTC", "stopTD", "stopTDs", "stopTEX", "stopTEXpage", "stopTH", "stopTN", "stopTR", "stopTRs", "stopTX", "stopTY", "stopXML", "stopalign", "stopalignment", "stopallmodes", "stopappendices", "stoparrangedpages", "stopasciimode", "stopaside", "stopattachment", "stopbackground", "stopbackmatter", "stopbar", "stopbbordermatrix", "stopbitmapimage", "stopblockquote", "stopbodymatter", "stopbordermatrix", "stopboxedcolumns", "stopbtxlabeltext", "stopbtxrenderingdefinitions", "stopbuffer", "stopcases", "stopcatcodetable", "stopcenteraligned", "stopchapter", "stopcharacteralign", "stopcheckedfences", "stopchemical", "stopchemicaltext", "stopcollect", "stopcollecting", "stopcolor", "stopcolorintent", "stopcoloronly", "stopcolorset", "stopcolumns", "stopcolumnset", "stopcolumnsetspan", "stopcombination", "stopcomment", "stopcomponent", "stopcontextcode", "stopcontextdefinitioncode", "stopctxfunction", "stopctxfunctiondefinition", "stopcurrentcolor", "stopcurrentlistentrywrapper", "stopdelimited", "stopdelimitedtext", "stopdisplaymath", "stopdmath", "stopdocument", "stopeffect", "stopelement", "stopembeddedxtable", "stopendnote", "stopendofline", "stopenvironment", "stopexceptions", "stopexpanded", "stopexpandedcollect", "stopextendedcatcodetable", "stopexternalfigurecollection", "stopfacingfloat", "stopfact", "stopfigure", "stopfiguretext", "stopfittingpage", "stopfixed", "stopfloatcombination", "stopfont", "stopfontclass", "stopfontsolution", "stopfootnote", "stopformula", "stopformulas", "stopframed", "stopframedcell", "stopframedcontent", "stopframedrow", "stopframedtable", "stopframedtext", "stopfrontmatter", "stopgoto", "stopgraphictext", "stopgridsnapping", "stophanging", "stophbox", "stophboxestohbox", "stophboxregister", "stophead", "stopheadtext", "stophelptext", "stophiding", "stophighlight", "stophyphenation", "stopimath", "stopindentation", "stopindentedtext", "stopinteraction", "stopinteractionmenu", "stopinterface", "stopintermezzotext", "stopintertext", "stopitem", "stopitemgroup", "stopitemgroupcolumns", "stopitemize", "stopknockout", "stoplabeltext", "stoplanguage", "stoplayout", "stopleftaligned", "stoplegend", "stopline", "stoplinealignment", "stoplinecorrection", "stoplinefiller", "stoplinenote", "stoplinenumbering", "stoplines", "stoplinetable", "stoplinetablebody", "stoplinetablecell", "stoplinetablehead", "stoplocalfootnotes", "stoplocalheadsetup", "stoplocallinecorrection", "stoplocalnotes", "stoplocalsetups", "stoplua", "stopluacode", "stopluaparameterset", "stopluasetups", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopmarkedcontent", "stopmarkpages", "stopmathalignment", "stopmathcases", "stopmathlabeltext", "stopmathmatrix", "stopmathmode", "stopmathstyle", "stopmatrices", "stopmatrix", "stopmaxaligned", "stopmdformula", "stopmidaligned", "stopmiddlealigned", "stopmiddlemakeup", "stopmixedcolumns", "stopmode", "stopmodeset", "stopmodule", "stopmoduletestsection", "stopmpformula", "stopmulticolumns", "stopnamedsection", "stopnamedsubformulas", "stopnarrow", "stopnarrower", "stopnegative", "stopnicelyfilledbox", "stopnointerference", "stopnotallmodes", "stopnotext", "stopnotmode", "stopoperatortext", "stopopposite", "stopoutputstream", "stopoverlay", "stopoverprint", "stoppacked", "stoppagecolumns", "stoppagecomment", "stoppagefigure", "stoppagelayout", "stoppagemakeup", "stoppar", "stopparagraph", "stopparagraphs", "stopparagraphscell", "stopparbuilder", "stoppart", "stoppath", "stopplacechemical", "stopplacefigure", "stopplacefloat", "stopplaceformula", "stopplacegraphic", "stopplaceintermezzo", "stopplacelegend", "stopplacepairedbox", "stopplacetable", "stoppositioning", "stoppositionoverlay", "stoppositive", "stoppostponing", "stoppostponingnotes", "stopprefixtext", "stopprocessassignmentcommand", "stopprocessassignmentlist", "stopprocesscommacommand", "stopprocesscommalist", "stopproduct", "stopproject", "stopprotect", "stopprotectedcolors", "stoppublication", "stoppunctuation", "stopquotation", "stopquote", "stoprandomized", "stoprandomseed", "stoprawsetups", "stopreadingfile", "stopreferenceprefix", "stopregime", "stopreusableMPgraphic", "stoprightaligned", "stopruby", "stopscript", "stopsdformula", "stopsection", "stopsectionblock", "stopsectionblockenvironment", "stopsectionlevel", "stopsetups", "stopshapebox", "stopshift", "stopsidebar", "stopsimplecolumns", "stopspecialitem", "stopspeech", "stopspformula", "stopsplitformula", "stopsplittext", "stopspread", "stopstandardmakeup", "stopstaticMPfigure", "stopstaticMPgraphic", "stopstrictinspectnextcharacter", "stopstrut", "stopstyle", "stopsubformulas", "stopsubject", "stopsubjectlevel", "stopsubsection", "stopsubsentence", "stopsubstack", "stopsubsubject", "stopsubsubsection", "stopsubsubsubject", "stopsubsubsubsection", "stopsubsubsubsubject", "stopsubsubsubsubsection", "stopsubsubsubsubsubject", "stopsuffixtext", "stopsymbolset", "stoptable", "stoptablehead", "stoptables", "stoptabletail", "stoptabletext", "stoptabulate", "stoptabulatehead", "stoptabulatetail", "stoptagged", "stoptaglabeltext", "stoptexcode", "stoptexdefinition", "stoptext", "stoptextbackground", "stoptextbackgroundmanual", "stoptextcolor", "stoptextcolorintent", "stoptextflow", "stoptextmakeup", "stoptextrule", "stopthematrix", "stoptitle", "stoptokenlist", "stoptokens", "stoptransparent", "stoptypescript", "stoptypescriptcollection", "stoptyping", "stopuniqueMPgraphic", "stopuniqueMPpagegraphic", "stopunittext", "stopunpacked", "stopusableMPgraphic", "stopuseMPgraphic", "stopusemathstyleparameter", "stopuserdata", "stopusingbtxspecification", "stopvbox", "stopvboxregister", "stopvboxtohbox", "stopvboxtohboxseparator", "stopviewerlayer", "stopvtop", "stopvtopregister", "stopxcell", "stopxcellgroup", "stopxcolumn", "stopxgroup", "stopxmldisplayverbatim", "stopxmlinlineverbatim", "stopxmlraw", "stopxmlsetups", "stopxrow", "stopxrowgroup", "stopxtable", "stopxtablebody", "stopxtablefoot", "stopxtablehead", "stopxtablenext", "stretched", "strictdoifelsenextoptional", "strictdoifnextoptionalelse", "stripcharacter", "strippedcsname", "stripspaces", "structurelistuservariable", "structurenumber", "structuretitle", "structureuservariable", "structurevariable", "strut", "strutdp", "strutgap", "strutht", "struthtdp", "struttedbox", "strutwd", "style", "styleinstance", "subject", "subpagenumber", "subsection", "subsentence", "subset", "subseteq", "subseteqq", "subsetneq", "subsetneqq", "substituteincommalist", "subsubject", "subsubsection", "subsubsubject", "subsubsubsection", "subsubsubsubject", "subsubsubsubsection", "subsubsubsubsubject", "subtractfeature", "succ", "succapprox", "succcurlyeq", "succeq", "succeqq", "succnapprox", "succneq", "succneqq", "succnsim", "succsim", "suffixlanguage", "suffixtext", "sum", "supset", "supseteq", "supseteqq", "supsetneq", "supsetneqq", "surd", "surdradical", "swapcounts", "swapdimens", "swapface", "swapmacros", "swaptypeface", "swarrow", "switchstyleonly", "switchtobodyfont", "switchtocolor", "switchtointerlinespace", "symbol", "symbolreference", "synchronizeblank", "synchronizeindenting", "synchronizemarking", "synchronizeoutputstreams", "synchronizestrut", "synchronizewhitespace", "synctexblockfilename", "synctexresetfilename", "synctexsetfilename", "systemlog", "systemlogfirst", "systemloglast", "systemsetups", "tLeftarrow", "tLeftrightarrow", "tRightarrow", "tabulateautoline", "tabulateautorule", "tabulateline", "tabulaterule", "taggedctxcommand", "taggedlabeltexts", "taglabellanguage", "taglabeltext", "tau", "tbinom", "tbox", "tcaron", "tcedilla", "tcommaaccent", "tcurl", "tequal", "test", "testandsplitstring", "testcolumn", "testfeature", "testfeatureonce", "testpage", "testpageonly", "testpagesync", "testtokens", "tex", "texdefinition", "texsetup", "textAngstrom", "textacute", "textampersand", "textasciicircum", "textasciitilde", "textat", "textbackslash", "textbar", "textbottomcomma", "textbottomdot", "textbraceleft", "textbraceright", "textbreve", "textbrokenbar", "textbullet", "textcaron", "textcedilla", "textcelsius", "textcent", "textcircledP", "textcircumflex", "textcitation", "textcite", "textcomma", "textcontrolspace", "textcurrency", "textdag", "textddag", "textdegree", "textdiaeresis", "textdiv", "textdollar", "textdong", "textdotaccent", "textellipsis", "texteuro", "textflowcollector", "textfraction", "textgrave", "texthash", "texthorizontalbar", "texthungarumlaut", "texthyphen", "textkelvin", "textlognot", "textmacron", "textmath", "textmho", "textminus", "textmp", "textmu", "textmultiply", "textnumero", "textogonek", "textohm", "textormathchar", "textormathchars", "textounce", "textpercent", "textperiod", "textplus", "textpm", "textreference", "textring", "textrule", "textslash", "textsterling", "texttilde", "textunderscore", "textvisiblespace", "textyen", "thai", "thainumerals", "thedatavalue", "thefirstcharacter", "thematrix", "thenormalizedbodyfontsize", "theorientation", "therefore", "theremainingcharacters", "theta", "thickspace", "thinrule", "thinrules", "thinspace", "thirdoffivearguments", "thirdoffourarguments", "thirdofsixarguments", "thirdofthreearguments", "thirdofthreeunexpanded", "thook", "thookleftarrow", "thookrightarrow", "thorn", "threedigitrounding", "threeeighths", "threefifths", "threeperemspace", "threequarter", "threesuperior", "tibetannumerals", "tightlayer", "tilde", "times", "tinyfont", "title", "tlap", "tleftarrow", "tleftharpoondown", "tleftharpoonup", "tleftrightarrow", "tleftrightharpoons", "tmapsto", "to", "tochar", "tolinenote", "tooltip", "top", "topbox", "topleftbox", "toplinebox", "toprightbox", "topskippedbox", "tracecatcodetables", "tracedfontname", "tracedpagestate", "traceoutputroutines", "tracepositions", "trademark", "translate", "transparencycomponents", "transparent", "trel", "triangle", "triangledown", "triangleleft", "triangleq", "triangleright", "trightarrow", "trightharpoondown", "trightharpoonup", "trightleftharpoons", "trightoverleftarrow", "triplebond", "tripleprime", "tripleverticalbar", "truefilename", "truefontname", "tstroke", "ttraggedright", "ttriplerel", "ttwoheadleftarrow", "ttwoheadrightarrow", "turnediota", "twodigitrounding", "twofifths", "twoheaddownarrow", "twoheadleftarrow", "twoheadrightarrow", "twoheadrightarrowtail", "twoheaduparrow", "twosuperior", "twothirds", "tx", "txx", "typ", "type", "typebuffer", "typedefinedbuffer", "typeface", "typefile", "typeinlinebuffer", "typescriptone", "typescriptprefix", "typescriptthree", "typescripttwo", "typesetbuffer", "typesetbufferonly", "typesetfile", "uacute", "ubreve", "ucaron", "uchexnumber", "uchexnumbers", "ucircumflex", "uconvertnumber", "udiaeresis", "udiaeresisacute", "udiaeresiscaron", "udiaeresisgrave", "udiaeresismacron", "udotbelow", "udots", "udoublegrave", "uedcatcodecommand", "ugrave", "uhook", "uhorn", "uhornacute", "uhorndotbelow", "uhorngrave", "uhornhook", "uhorntilde", "uhungarumlaut", "uinvertedbreve", "ulcorner", "umacron", "undefinevalue", "undepthed", "underbar", "underbars", "underbartext", "underbrace", "underbracetext", "underbracket", "underbrackettext", "underdash", "underdashes", "underdot", "underdots", "underleftarrow", "underleftharpoondown", "underleftharpoonup", "underleftrightarrow", "underparent", "underparenttext", "underrandom", "underrandoms", "underrightarrow", "underrightharpoondown", "underrightharpoonup", "underset", "understrike", "understrikes", "undertwoheadleftarrow", "undertwoheadrightarrow", "undoassign", "unexpandeddocumentvariable", "unframed", "unhhbox", "unihex", "uniqueMPgraphic", "uniqueMPpagegraphic", "unit", "unitlanguage", "unitshigh", "unitslow", "unittext", "unknown", "unprotected", "unregisterhyphenationpattern", "unregisterparwrapper", "unspaceafter", "unspaceargument", "unspaced", "unspacestring", "unstackscripts", "untexargument", "untexcommand", "uogonek", "upand", "uparrow", "updasharrow", "updateparagraphdemerits", "updateparagraphpenalties", "updateparagraphproperties", "updateparagraphshapes", "updownarrow", "updownarrowbar", "updownarrows", "upharpoonleft", "upharpoonright", "uplus", "uppercased", "uppercasestring", "uppercasing", "upperleftdoubleninequote", "upperleftdoublesixquote", "upperleftsingleninequote", "upperleftsinglesixquote", "upperrightdoubleninequote", "upperrightdoublesixquote", "upperrightsingleninequote", "upperrightsinglesixquote", "upsilon", "upuparrows", "upwhitearrow", "urcorner", "uring", "url", "useJSscripts", "useMPenvironmentbuffer", "useMPgraphic", "useMPlibrary", "useMPrun", "useMPvariables", "useURL", "usealignparameter", "useblankparameter", "useblocks", "usebodyfont", "usebodyfontparameter", "usebtxdataset", "usebtxdefinitions", "usecitation", "usecolors", "usecomponent", "usedirectory", "usedummycolorparameter", "usedummystyleandcolor", "usedummystyleparameter", "useenvironment", "useexternaldocument", "useexternalfigure", "useexternalrendering", "useexternalsoundtrack", "usefigurebase", "usefile", "usefontpath", "usegridparameter", "usehyphensparameter", "useindentingparameter", "useindentnextparameter", "useinterlinespaceparameter", "uselanguageparameter", "useluamodule", "useluatable", "usemathstyleparameter", "usemodule", "useproduct", "useprofileparameter", "useproject", "usereferenceparameter", "userpagenumber", "usesetupsparameter", "usestaticMPfigure", "usesubpath", "usesymbols", "usetexmodule", "usetypescript", "usetypescriptfile", "useurl", "usezipfile", "utfchar", "utflower", "utfupper", "utilde", "utilityregisterlength", "vDash", "validassignment", "varTheta", "varepsilon", "varkappa", "varnothing", "varphi", "varpi", "varrho", "varsigma", "vartheta", "vboxreference", "vdash", "vdots", "vec", "vee", "veebar", "veeeq", "verbatim", "verbatimstring", "verbosenumber", "version", "vert", "verticalgrowingbar", "verticalpositionbar", "veryraggedcenter", "veryraggedleft", "veryraggedright", "vglue", "viewerlayer", "vl", "vpackbox", "vpackedbox", "vphantom", "vpos", "vsmash", "vsmashbox", "vsmashed", "vspace", "vspacing", "wcircumflex", "wdofstring", "wedge", "wedgeeq", "weekday", "whitearrowupfrombar", "wideacute", "widebar", "widebreve", "widecheck", "wideddot", "widedot", "widegrave", "widehat", "widering", "widetilde", "widthofstring", "widthspanningtext", "withoutpt", "word", "wordright", "words", "wordtonumber", "wp", "wr", "writebetweenlist", "writedatatolist", "writestatus", "writetolist", "xLeftarrow", "xLeftrightarrow", "xRightarrow", "xdefconvertedargument", "xequal", "xfrac", "xhookleftarrow", "xhookrightarrow", "xi", "xleftarrow", "xleftharpoondown", "xleftharpoonup", "xleftrightarrow", "xleftrightharpoons", "xmapsto", "xmladdindex", "xmlafterdocumentsetup", "xmlaftersetup", "xmlall", "xmlappenddocumentsetup", "xmlappendsetup", "xmlapplyselectors", "xmlatt", "xmlattdef", "xmlattribute", "xmlattributedef", "xmlbadinclusions", "xmlbeforedocumentsetup", "xmlbeforesetup", "xmlchainatt", "xmlchainattdef", "xmlchecknamespace", "xmlcommand", "xmlconcat", "xmlconcatrange", "xmlcontext", "xmlcount", "xmldefaulttotext", "xmldepth", "xmldirectives", "xmldirectivesafter", "xmldirectivesbefore", "xmldisplayverbatim", "xmldoif", "xmldoifatt", "xmldoifelse", "xmldoifelseatt", "xmldoifelseempty", "xmldoifelseselfempty", "xmldoifelsetext", "xmldoifelsevalue", "xmldoifnot", "xmldoifnotatt", "xmldoifnotselfempty", "xmldoifnottext", "xmldoifselfempty", "xmldoiftext", "xmlelement", "xmlfilter", "xmlfirst", "xmlflush", "xmlflushcontext", "xmlflushdocumentsetups", "xmlflushlinewise", "xmlflushpure", "xmlflushspacewise", "xmlflushtext", "xmlinclude", "xmlinclusion", "xmlinclusions", "xmlinfo", "xmlinjector", "xmlinlineprettyprint", "xmlinlineprettyprinttext", "xmlinlineverbatim", "xmlinstalldirective", "xmllast", "xmllastatt", "xmllastmatch", "xmllastpar", "xmlloadbuffer", "xmlloaddata", "xmlloaddirectives", "xmlloadfile", "xmlloadonly", "xmlmain", "xmlmapvalue", "xmlname", "xmlnamespace", "xmlnonspace", "xmlpar", "xmlparam", "xmlpath", "xmlpos", "xmlposition", "xmlprependdocumentsetup", "xmlprependsetup", "xmlprettyprint", "xmlprettyprinttext", "xmlprocessbuffer", "xmlprocessdata", "xmlprocessfile", "xmlpure", "xmlraw", "xmlrefatt", "xmlregistereddocumentsetups", "xmlregisteredsetups", "xmlregisterns", "xmlremapname", "xmlremapnamespace", "xmlremovedocumentsetup", "xmlremovesetup", "xmlresetdocumentsetups", "xmlresetinjectors", "xmlresetsetups", "xmlsave", "xmlsetatt", "xmlsetattribute", "xmlsetentity", "xmlsetfunction", "xmlsetinjectors", "xmlsetpar", "xmlsetparam", "xmlsetsetup", "xmlsetup", "xmlshow", "xmlsnippet", "xmlstrip", "xmlstripnolines", "xmlstripped", "xmlstrippednolines", "xmltag", "xmltexentity", "xmltext", "xmltobuffer", "xmltobufferverbose", "xmltofile", "xmlvalue", "xmlverbatim", "xrel", "xrightarrow", "xrightharpoondown", "xrightharpoonup", "xrightleftharpoons", "xrightoverleftarrow", "xsplitstring", "xtriplerel", "xtwoheadleftarrow", "xtwoheadrightarrow", "xxfrac", "xypos", "yacute", "ycircumflex", "ydiaeresis", "ydotbelow", "yen", "ygrave", "yhook", "yiddishnumerals", "ymacron", "ytilde", "zacute", "zcaron", "zdotaccent", "zeronumberconversion", "zerowidthnobreakspace", "zerowidthspace", "zeta", "zhook", "zstroke", "zwj", "zwnj" },
["en"]={},
} \ 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 9e2bf9f2a..0673639aa 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", "Umathextrasubpreshift", "Umathextrasubprespace", "Umathextrasubshift", "Umathextrasubspace", "Umathextrasuppreshift", "Umathextrasupprespace", "Umathextrasupshift", "Umathextrasupspace", "Umathflattenedaccentbasedepth", "Umathflattenedaccentbaseheight", "Umathflattenedaccentbottomshiftdown", "Umathflattenedaccenttopshiftup", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpresubshiftdistance", "Umathpresupshiftdistance", "Umathprimeraise", "Umathprimeraisecomposed", "Umathprimeshiftdrop", "Umathprimeshiftup", "Umathprimespaceafter", "Umathprimevariant", "Umathprimewidth", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathruledepth", "Umathruleheight", "Umathskeweddelimitertolerance", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathsource", "Umathspaceafterscript", "Umathspacebeforescript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdistance", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdistance", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathuseaxis", "Umathvextensiblevariant", "Umathvoid", "Umathxscale", "Umathyscale", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uoperator", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uprimescript", "Uradical", "Uright", "Uroot", "Ushiftedsubprescript", "Ushiftedsubscript", "Ushiftedsuperprescript", "Ushiftedsuperscript", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustartmathmode", "Ustopdisplaymath", "Ustopmath", "Ustopmathmode", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "aliased", "alignmark", "alignmentcellsource", "alignmentwrapsource", "aligntab", "allcrampedstyles", "alldisplaystyles", "allmathstyles", "allscriptscriptstyles", "allscriptstyles", "allsplitstyles", "alltextstyles", "alluncrampedstyles", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "beginmathgroup", "beginsimplegroup", "boundary", "boxadapt", "boxanchor", "boxanchors", "boxattribute", "boxdirection", "boxfreeze", "boxgeometry", "boxorientation", "boxrepack", "boxshift", "boxsource", "boxtarget", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "copymathatomrule", "copymathparent", "copymathspacing", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentloopiterator", "currentloopnesting", "currentmarks", "defcsname", "detokenized", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "endmathgroup", "endsimplegroup", "enforced", "etoks", "etoksapp", "etokspre", "everybeforepar", "everymathatom", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandedafter", "expandedloop", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontcharta", "fontid", "fontmathcontrol", "fontspecdef", "fontspecid", "fontspecifiedsize", "fontspecscale", "fontspecxscale", "fontspecyscale", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphxscaled", "glyphyoffset", "glyphyscale", "glyphyscaled", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "indexofcharacter", "indexofregister", "inherited", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmaxdepth", "insertmode", "insertmultiplier", "insertpenalty", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastatomclass", "lastboundary", "lastchkdim", "lastchknum", "lastleftclass", "lastloopiterator", "lastnamedcs", "lastnodesubtype", "lastpageextra", "lastparcontext", "lastrightclass", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letmathatomrule", "letmathparent", "letmathspacing", "letprotected", "lettonothing", "linebreakcriterium", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localcontrolledloop", "localinterlinepenalty", "localleftbox", "localleftboxbox", "localmiddlebox", "localmiddleboxbox", "localrightbox", "localrightboxbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathaccent", "mathatom", "mathatomglue", "mathatomskip", "mathbackwardpenalties", "mathbeginclass", "mathcheckfencesmode", "mathdictgroup", "mathdictproperties", "mathdirection", "mathdisplaymode", "mathdisplayskipmode", "mathdoublescriptmode", "mathendclass", "matheqnogapstep", "mathfenced", "mathfontcontrol", "mathforwardpenalties", "mathfrac", "mathghost", "mathgluemode", "mathgroupingmode", "mathinlinemainstyle", "mathleftclass", "mathlimitsmode", "mathmiddle", "mathnolimitsmode", "mathpenaltiesmode", "mathrad", "mathrightclass", "mathrulesfam", "mathrulesmode", "mathscale", "mathscriptsmode", "mathslackmode", "mathspacingmode", "mathstackstyle", "mathstyle", "mathstylefontid", "mathsurroundmode", "mathsurroundskip", "maththreshold", "mugluespecdef", "mutable", "noaligned", "noatomruling", "noboundary", "nohrule", "norelax", "normalizelinemode", "normalizeparmode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orphanpenalties", "orphanpenalty", "orunless", "outputbox", "overloaded", "overloadmode", "pageboundary", "pageextragoal", "pagevsize", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "pettymuskip", "postexhyphenchar", "posthyphenchar", "postinlinepenalty", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "preinlinepenalty", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitloop", "quitvmode", "resetmathspacing", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scaledemwidth", "scaledexheight", "scaledextraspace", "scaledinterwordshrink", "scaledinterwordspace", "scaledinterwordstretch", "scaledmathstyle", "scaledslantperpoint", "scantextokens", "semiexpand", "semiexpanded", "semiprotected", "setdefaultmathcodes", "setfontid", "setmathatomrule", "setmathdisplaypostpenalty", "setmathdisplayprepenalty", "setmathignore", "setmathoptions", "setmathpostpenalty", "setmathprepenalty", "setmathspacing", "shapingpenaltiesmode", "shapingpenalty", "skewed", "skewedwithdelims", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tinymuskip", "todimension", "tohexadecimal", "tointeger", "tokenized", "toksapp", "tokspre", "tolerant", "tomathstyle", "toscaled", "tosparsedimension", "tosparsescaled", "tpack", "tracingadjusts", "tracingalignments", "tracingexpressions", "tracingfonts", "tracingfullboxes", "tracinghyphenation", "tracinginserts", "tracinglevels", "tracingmarks", "tracingmath", "tracingnodes", "tracingpenalties", "uleaders", "undent", "unexpandedloop", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoks", "xtoksapp", "xtokspre" },
+ ["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" },
["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" },
- ["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" },
+ ["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" },
["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 a482dc98b..2dcdb7966 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -91,35 +91,36 @@ mathexplicitcode mathdivisioncode mathfactorialcode mathdimensioncode mathexperi
mathtextpunctuationcode mathimaginarycode mathdifferentialcode mathexponentialcode mathellipsiscode \
mathfunctioncode mathdigitcode mathalphacode mathboxcode mathchoicecode \
mathnothingcode mathlimopcode mathnolopcode mathunsetcode mathunspacedcode \
-mathallcode mathfakecode mathunarycode constantnumber constantnumberargument \
-constantdimen constantdimenargument constantemptyargument luastringsep !!bs \
-!!es lefttorightmark righttoleftmark lrm rlm \
-bidilre bidirle bidipop bidilro bidirlo \
-breakablethinspace nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace \
-ideographicspace ideographichalffillspace twoperemspace threeperemspace fourperemspace \
-fiveperemspace sixperemspace figurespace punctuationspace hairspace \
-enquad emquad zerowidthspace zerowidthnonjoiner zerowidthjoiner \
-zwnj zwj optionalspace asciispacechar softhyphen \
-Ux eUx Umathaccents parfillleftskip parfillrightskip \
-startlmtxmode stoplmtxmode startmkivmode stopmkivmode wildcardsymbol \
-normalhyphenationcode automatichyphenationcode explicithyphenationcode syllablehyphenationcode uppercasehyphenationcode \
-collapsehyphenationcode compoundhyphenationcode strictstarthyphenationcode strictendhyphenationcode automaticpenaltyhyphenationcode \
-explicitpenaltyhyphenationcode permitgluehyphenationcode permitallhyphenationcode permitmathreplacehyphenationcode forcecheckhyphenationcode \
-lazyligatureshyphenationcode forcehandlerhyphenationcode feedbackcompoundhyphenationcode ignoreboundshyphenationcode partialhyphenationcode \
-completehyphenationcode normalizelinenormalizecode parindentskipnormalizecode swaphangindentnormalizecode swapparsshapenormalizecode \
-breakafterdirnormalizecode removemarginkernsnormalizecode clipwidthnormalizecode flattendiscretionariesnormalizecode discardzerotabskipsnormalizecode \
-flattenhleadersnormalizecode normalizeparnormalizeparcode flattenvleadersnormalizeparcode nopreslackclassoptioncode nopostslackclassoptioncode \
-lefttopkernclassoptioncode righttopkernclassoptioncode leftbottomkernclassoptioncode rightbottomkernclassoptioncode lookaheadforendclassoptioncode \
-noitaliccorrectionclassoptioncode defaultmathclassoptions checkligatureclassoptioncode checkitaliccorrectionclassoptioncode checkkernpairclassoptioncode \
-flattenclassoptioncode omitpenaltyclassoptioncode unpackclassoptioncode raiseprimeclassoptioncode carryoverlefttopkernclassoptioncode \
-carryoverleftbottomkernclassoptioncode carryoverrighttopkernclassoptioncode carryoverrightbottomkernclassoptioncode preferdelimiterdimensionsclassoptioncode noligaturingglyphoptioncode \
-nokerningglyphoptioncode noleftligatureglyphoptioncode noleftkernglyphoptioncode norightligatureglyphoptioncode norightkernglyphoptioncode \
-noexpansionglyphoptioncode noprotrusionglyphoptioncode noitaliccorrectionglyphoptioncode nokerningcode noligaturingcode \
-frozenflagcode tolerantflagcode protectedflagcode primitiveflagcode permanentflagcode \
-noalignedflagcode immutableflagcode mutableflagcode globalflagcode overloadedflagcode \
-immediateflagcode conditionalflagcode valueflagcode instanceflagcode ordmathflattencode \
-binmathflattencode relmathflattencode punctmathflattencode innermathflattencode normalworddiscoptioncode \
-preworddiscoptioncode postworddiscoptioncode continueifinputfile continuewhenlmtxmode continuewhenmkivmode
+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
keywordclass.context.helpers=\
startsetups stopsetups startxmlsetups stopxmlsetups \
@@ -308,36 +309,37 @@ installprotectedctxscanner installctxscanner resetctxscanner cldprocessfile cldl
cldloadviafile cldcontext cldcommand carryoverpar freezeparagraphproperties \
defrostparagraphproperties setparagraphfreezing forgetparagraphfreezing updateparagraphproperties updateparagraphpenalties \
updateparagraphdemerits updateparagraphshapes updateparagraphlines lastlinewidth assumelongusagecs \
-Umathbotaccent Umathtopaccent righttolefthbox lefttorighthbox righttoleftvbox \
-lefttorightvbox righttoleftvtop lefttorightvtop rtlhbox ltrhbox \
-rtlvbox ltrvbox rtlvtop ltrvtop autodirhbox \
-autodirvbox autodirvtop leftorrighthbox leftorrightvbox leftorrightvtop \
-lefttoright righttoleft checkedlefttoright checkedrighttoleft synchronizelayoutdirection \
-synchronizedisplaydirection synchronizeinlinedirection dirlre dirrle dirlro \
-dirrlo rtltext ltrtext lesshyphens morehyphens \
-nohyphens dohyphens dohyphencollapsing nohyphencollapsing compounddiscretionary \
-Ucheckedstartdisplaymath Ucheckedstopdisplaymath break nobreak allowbreak \
-goodbreak nospace nospacing dospacing naturalhbox \
-naturalvbox naturalvtop naturalhpack naturalvpack naturaltpack \
-reversehbox reversevbox reversevtop reversehpack reversevpack \
-reversetpack hcontainer vcontainer tcontainer frule \
-compoundhyphenpenalty start stop unsupportedcs openout \
-closeout write openin closein read \
-readline readfromterminal boxlines boxline setboxline \
-copyboxline boxlinewd boxlineht boxlinedp boxlinenw \
-boxlinenh boxlinend boxlinels boxliners boxlinelh \
-boxlinerh boxlinelp boxlinerp boxlinein boxrangewd \
-boxrangeht boxrangedp bitwiseset bitwiseand bitwiseor \
-bitwisexor bitwisenot bitwisenil ifbitwiseand bitwise \
-bitwiseshift bitwiseflip textdir linedir pardir \
-boxdir prelistbox postlistbox prelistcopy postlistcopy \
-setprelistbox setpostlistbox noligaturing nokerning noexpansion \
-noprotrusion noleftkerning noleftligaturing norightkerning norightligaturing \
-noitaliccorrection futureletnexttoken defbackslashbreak letbackslashbreak pushoverloadmode \
-popoverloadmode pushrunstate poprunstate suggestedalias showboxhere \
-discoptioncodestring flagcodestring frozenparcodestring glyphoptioncodestring groupcodestring \
-hyphenationcodestring mathcontrolcodestring mathflattencodestring normalizecodestring parcontextcodestring \
-newlocalcount newlocaldimen newlocalskip newlocalmuskip newlocaltoks \
-newlocalbox newlocalwrite newlocalread setnewlocalcount setnewlocaldimen \
-setnewlocalskip setnewlocalmuskip setnewlocaltoks setnewlocalbox ifexpression
+Umathbottomaccent Umathtopaccent Umathbotaccent righttolefthbox lefttorighthbox \
+righttoleftvbox lefttorightvbox righttoleftvtop lefttorightvtop rtlhbox \
+ltrhbox rtlvbox ltrvbox rtlvtop ltrvtop \
+autodirhbox autodirvbox autodirvtop leftorrighthbox leftorrightvbox \
+leftorrightvtop lefttoright righttoleft checkedlefttoright checkedrighttoleft \
+synchronizelayoutdirection synchronizedisplaydirection synchronizeinlinedirection dirlre dirrle \
+dirlro dirrlo rtltext ltrtext lesshyphens \
+morehyphens nohyphens dohyphens dohyphencollapsing nohyphencollapsing \
+compounddiscretionary Ucheckedstartdisplaymath Ucheckedstopdisplaymath break nobreak \
+allowbreak goodbreak nospace nospacing dospacing \
+naturalhbox naturalvbox naturalvtop naturalhpack naturalvpack \
+naturaltpack reversehbox reversevbox reversevtop reversehpack \
+reversevpack reversetpack hcontainer vcontainer tcontainer \
+frule compoundhyphenpenalty start stop unsupportedcs \
+openout closeout write openin closein \
+read readline readfromterminal boxlines boxline \
+setboxline copyboxline boxlinewd boxlineht boxlinedp \
+boxlinenw boxlinenh boxlinend boxlinels boxliners \
+boxlinelh boxlinerh boxlinelp boxlinerp boxlinein \
+boxrangewd boxrangeht boxrangedp bitwiseset bitwiseand \
+bitwiseor bitwisexor bitwisenot bitwisenil ifbitwiseand \
+bitwise bitwiseshift bitwiseflip textdir linedir \
+pardir boxdir prelistbox postlistbox prelistcopy \
+postlistcopy setprelistbox setpostlistbox noligaturing nokerning \
+noexpansion noprotrusion noleftkerning noleftligaturing norightkerning \
+norightligaturing noitaliccorrection futureletnexttoken defbackslashbreak letbackslashbreak \
+pushoverloadmode popoverloadmode pushrunstate poprunstate suggestedalias \
+showboxhere discoptioncodestring flagcodestring frozenparcodestring glyphoptioncodestring \
+groupcodestring hyphenationcodestring mathcontrolcodestring mathflattencodestring normalizecodestring \
+parcontextcodestring newlocalcount newlocaldimen newlocalskip newlocalmuskip \
+newlocaltoks newlocalbox newlocalwrite newlocalread setnewlocalcount \
+setnewlocaldimen setnewlocalskip setnewlocalmuskip setnewlocaltoks setnewlocalbox \
+ifexpression
diff --git a/context/data/scite/context/scite-context-data-interfaces.properties b/context/data/scite/context/scite-context-data-interfaces.properties
index 9b39f9ca8..4af3c5150 100644
--- a/context/data/scite/context/scite-context-data-interfaces.properties
+++ b/context/data/scite/context/scite-context-data-interfaces.properties
@@ -24,608 +24,608 @@ Emacron Eogonek Epsilon Eta Eth \
Etilde Eulerconst EveryLine EveryPar Fhook \
Finv Gacute Game Gamma Gbreve \
Gcaron Gcircumflex Gcommaaccent Gdotaccent GetPar \
-Ghook GotoPar Greeknumerals Gstroke Hat \
-Hcaron Hcircumflex Hstroke IJligature INRSTEX \
-Iacute Ibreve Icaron Icircumflex Idiaeresis \
-Idotaccent Idotbelow Idoublegrave Igrave Ihook \
-Iinvertedbreve Im Imacron Iogonek Iota \
-Istroke Itilde Jcircumflex Join Kappa \
-Kcaron Kcommaaccent Khook LAMSTEX LATEX \
-LJligature LUAJITTEX LUAMETATEX LUATEX LaTeX \
-Lacute LamSTeX Lambda Lbar Lcaron \
-Lcommaaccent Ldotmiddle Ldsh Leftarrow Leftrightarrow \
-Ljligature Lleftarrow Longleftarrow Longleftrightarrow Longmapsfrom \
-Longmapsto Longrightarrow Lsh Lstroke Lua \
-LuaMetaTeX LuaTeX LuajitTeX METAFONT METAFUN \
-METAPOST MKII MKIV MKIX MKLX \
-MKVI MKXI MKXL MONTH MONTHLONG \
-MONTHSHORT MPII MPIV MPLX MPVI \
-MPXL MPanchor MPbetex MPc MPcode \
-MPcolor MPcoloronly MPcolumn MPd MPdrawing \
-MPfontsizehskip MPgetmultipars MPgetmultishape MPgetposboxes MPh \
-MPinclusions MPleftskip MPll MPlr MPls \
-MPmenubuttons MPn MPoptions MPoverlayanchor MPp \
-MPpage MPpardata MPplus MPpos MPpositiongraphic \
-MPposset MPr MPrawvar MPregion MPrest \
-MPrightskip MPrs MPstring MPtext MPtransparency \
-MPul MPur MPv MPvar MPvariable \
-MPvv MPw MPwhd MPx MPxy \
-MPxywhd MPy Mapsfrom Mapsto MetaFont \
-MetaFun MetaPost Mu NJligature Nacute \
-Ncaron Ncommaaccent Nearrow Neng Ngrave \
-Njligature NormalizeFontHeight NormalizeFontWidth NormalizeTextHeight NormalizeTextWidth \
-Ntilde Nu Numbers Nwarrow OEligature \
-Oacute Obreve Ocaron Ocircumflex Ocircumflexacute \
-Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhook Ocircumflextilde Odiaeresis \
-Odiaeresismacron Odotaccent Odotaccentmacron Odotbelow Odoublegrave \
-Ograve Ohook Ohorn Ohornacute Ohorndotbelow \
-Ohorngrave Ohornhook Ohorntilde Ohungarumlaut Oinvertedbreve \
-Omacron Omega Omicron Oogonek Oogonekmacron \
-Ostroke Ostrokeacute Otilde Otildemacron P \
-PDFETEX PDFTEX PDFcolor PICTEX PPCHTEX \
-PPCHTeX PRAGMA Phi Phook Pi \
-PiCTeX Plankconst PointsToBigPoints PointsToReal PointsToWholeBigPoints \
-PropertyLine Psi PtToCm Racute Rcaron \
-Rcommaaccent Rdoublegrave Rdsh Re ReadFile \
-Relbar Rho Rightarrow Rinvertedbreve Romannumerals \
-Rrightarrow Rsh S Sacute ScaledPointsToBigPoints \
-ScaledPointsToWholeBigPoints Scaron Scedilla Schwa Scircumflex \
-Scommaaccent Searrow Sigma Smallcapped Subset \
-Supset Swarrow TABLE TEX TaBlE \
-Tau Tcaron Tcedilla Tcommaaccent TeX \
-TheNormalizedFontSize Theta Thook Thorn TransparencyHack \
-Tstroke Uacute Ubreve Ucaron Ucircumflex \
-Udiaeresis Udiaeresisacute Udiaeresiscaron Udiaeresisgrave Udiaeresismacron \
-Udotbelow Udoublegrave Ugrave Uhook Uhorn \
-Uhornacute Uhorndotbelow Uhorngrave Uhornhook Uhorntilde \
-Uhungarumlaut Uinvertedbreve Umacron Uogonek Uparrow \
-Updownarrow Upsilon Uring Utilde Uuparrow \
-VDash Vdash VerboseNumber Vert Vhook \
-Vvdash WEEKDAY WORD WORDS Wcircumflex \
-WidthSpanningText Word Words XETEX XeTeX \
-Xi Yacute Ycircumflex Ydiaeresis Ydotbelow \
-Ygrave Yhook Ymacron Ytilde Zacute \
-Zcaron Zdotaccent Zeta Zhook Zstroke \
-aacute abbreviation abjadnaivenumerals abjadnodotnumerals abjadnumerals \
-about abreve abreveacute abrevedotbelow abrevegrave \
-abrevehook abrevetilde acaron acircumflex acircumflexacute \
-acircumflexdotbelow acircumflexgrave acircumflexhook acircumflextilde activatespacehandler \
-actualday actualmonth actualyear actuarial acute \
-acwopencirclearrow adaptcollector adaptfontfeature adaptlayout adaptpapersize \
-addfeature addtoJSpreamble addtocommalist addvalue adiaeresis \
-adiaeresismacron adotaccent adotaccentmacron adotbelow adoublegrave \
-aeacute aeligature aemacron afghanicurrency aftersplitstring \
-aftertestandsplitstring agrave ahook ainvertedbreve aleph \
-alignbottom aligned alignedbox alignedline alignhere \
-alignmentcharacter allinputpaths alpha alphabeticnumerals alwayscitation \
-alwayscite amacron amalg ampersand anchor \
-angle aogonek appendetoks appendgvalue appendtocommalist \
-appendtoks appendtoksonce appendvalue apply applyalternativestyle \
-applyfunction applyprocessor applytocharacters applytofirstcharacter applytosplitstringchar \
-applytosplitstringcharspaced applytosplitstringline applytosplitstringlinespaced applytosplitstringword applytosplitstringwordspaced \
-applytowords approx approxEq approxeq approxnEq \
-arabicakbar arabicalayhe arabicallah arabicallallahou arabicasterisk \
-arabicbasmalah arabiccomma arabiccuberoot arabicdateseparator arabicdecimals \
-arabicdisputedendofayah arabicendofayah arabicexnumerals arabicfootnotemarker arabicfourthroot \
-arabichighain arabichighalayheassallam arabichigheqala arabichighesala arabichighfootnotemarker \
-arabichighjeem arabichighlamalef arabichighmadda arabichighmeemlong arabichighmeemshort \
-arabichighnisf arabichighnoon arabichighnoonkasra arabichighqaf arabichighqif \
-arabichighradiallahouanhu arabichighrahmatullahalayhe arabichighrubc arabichighsad arabichighsajda \
-arabichighsakta arabichighsallallahou arabichighseen arabichighsmallsafha arabichightah \
-arabichightakhallus arabichighthalatha arabichighwaqf arabichighyeh arabichighzain \
-arabicjallajalalouhou arabiclettermark arabiclowmeemlong arabiclownoonkasra arabiclowseen \
-arabicmisra arabicmuhammad arabicnumber arabicnumberabove arabicnumerals \
-arabicparenleft arabicparenright arabicpercent arabicperiod arabicpermille \
-arabicpertenthousand arabicpoeticverse arabicqala arabicquestion arabicrasoul \
-arabicray arabicrialsign arabicsafha arabicsajdah arabicsalla \
-arabicsamvat arabicsanah arabicsemicolon arabicshighthreedots arabicslcm \
-arabicstartofrubc arabictripledot arabicvowelwaw arabicvowelyeh arabicwasallam \
-arg aring aringacute arrowvert asciimode \
-asciistr aside assignalfadimension assigndimen assigndimension \
-assignifempty assigntranslation assignvalue assignwidth assumelongusagecs \
-ast astype asymp at atilde \
-atleftmargin atpage atrightmargin attachment autocap \
-autodirhbox autodirvbox autodirvtop autoinsertnextspace autointegral \
-automathematics autoorientation autopagestaterealpage autopagestaterealpageorder autorule \
-autosetups availablehsize averagecharwidth backepsilon background \
-backgroundimage backgroundimagefill backgroundline backprime backsim \
-backslash bar barleftarrow barleftarrowrightarrowbar barovernorthwestarrow \
-barwedge basegrid baselinebottom baselineleftbox baselinemiddlebox \
-baselinerightbox bbordermatrix bbox because beforesplitstring \
-beforetestandsplitstring beta beth between bhook \
-big bigbodyfont bigcap bigcirc bigcircle \
-bigcup bigdiamond bigg bigger biggl \
-biggm biggr bigl bigm bigodot \
-bigoplus bigotimes bigr bigskip bigsqcap \
-bigsqcup bigsquare bigstar bigtimes bigtriangledown \
-bigtriangleup bigudot biguplus bigvee bigwedge \
-binom bitmapimage blacklozenge blackrule blackrules \
-blacksquare blacktriangle blacktriangledown blacktriangleleft blacktriangleright \
-blank blap bleed bleedheight bleedwidth \
-blockligatures blockquote blocksynctexfile blockuservariable bodyfontenvironmentlist \
-bodyfontsize bold boldface bolditalic boldslanted \
-bookmark booleanmodevalue bordermatrix bot bottombox \
-bottomleftbox bottomrightbox bowtie boxcursor boxdot \
-boxmarker boxminus boxofsize boxplus boxreference \
-boxtimes bpos breakablethinspace breakhere breve \
-bstroke btxabbreviatedjournal btxaddjournal btxalwayscitation btxauthorfield \
-btxdetail btxdirect btxdoif btxdoifcombiinlistelse btxdoifelse \
-btxdoifelsecombiinlist btxdoifelsesameasprevious btxdoifelsesameaspreviouschecked btxdoifelseuservariable btxdoifnot \
-btxdoifsameaspreviouscheckedelse btxdoifsameaspreviouselse btxdoifuservariableelse btxexpandedjournal btxfield \
-btxfieldname btxfieldtype btxfirstofrange btxflush btxflushauthor \
-btxflushauthorinverted btxflushauthorinvertedshort btxflushauthorname btxflushauthornormal btxflushauthornormalshort \
-btxflushsuffix btxfoundname btxfoundtype btxhiddencitation btxhybridcite \
-btxlabellanguage btxlabeltext btxlistcitation btxloadjournalist btxoneorrange \
-btxremapauthor btxsavejournalist btxsetup btxsingularorplural btxsingularplural \
-btxtextcitation buildmathaccent buildtextaccent buildtextbottomcomma buildtextbottomdot \
-buildtextcedilla buildtextgrave buildtextmacron buildtextognek bullet \
-button cacute calligraphic camel cap \
-capital carriagereturn catcodetablename cbox ccaron \
-ccedilla ccircumflex ccurl cdot cdotaccent \
-cdotp cdots centeraligned centerbox centerdot \
-centeredbox centeredlastline centerednextbox centerline cfrac \
-chapter character characters chardescription charwidthlanguage \
-check checkcharacteralign checkedblank checkedchar checkedfiller \
-checkedstrippedcsname checkinjector checkmark checknextindentation checknextinjector \
-checkpage checkparameters checkpreviousinjector checksoundtrack checktwopassdata \
-checkvariables chem chemical chemicalbottext chemicalmidtext \
-chemicalsymbol chemicaltext chemicaltoptext chi chineseallnumerals \
-chinesecapnumerals chinesenumerals chook circ circeq \
-circlearrowleft circlearrowright circledR circledS circledast \
-circledcirc circleddash circledequals circleonrightarrow citation \
-cite clap classfont cldcommand cldcontext \
-cldloadfile cldprocessfile cleftarrow clip clippedoverlayimage \
-clonefield clubsuit collect collectedtext collectexpanded \
-colon coloncolonequals colonequals color colorbar \
-colorcomponents colored coloronly colorvalue column \
-columnbreak columnsetspanwidth combinepages commalistelement commalistsentence \
-commalistsize comment comparecolorgroup comparedimension comparedimensioneps \
-comparepalet complement completebtxrendering completecontent completeindex \
-completelist completelistofabbreviations completelistofchemicals completelistoffigures completelistofgraphics \
-completelistofintermezzi completelistoflogos completelistofpublications completelistofsorts completelistofsynonyms \
-completelistoftables completepagenumber completeregister complexes complexorsimple \
-complexorsimpleempty component composedcollector composedlayer compounddiscretionary \
-compresult cong constantdimen constantdimenargument constantemptyargument \
-constantnumber constantnumberargument contentreference continuednumber continueifinputfile \
-convertargument convertcommand convertedcounter converteddimen convertedsubcounter \
-convertmonth convertnumber convertvalue convertvboxtohbox coprod \
-copyboxfromcache copybtxlabeltext copyfield copyheadtext copylabeltext \
-copymathlabeltext copyoperatortext copypages copyparameters copyposition \
-copyprefixtext copyright copysetups copysuffixtext copytaglabeltext \
-copyunittext correctwhitespace countersubs counttoken counttokens \
-cramped crampedclap crampedllap crampedrlap crightarrow \
-crightoverleftarrow crlf crlfplaceholder cstroke ctop \
-ctxcommand ctxdirectcommand ctxdirectlua ctxfunction ctxlatecommand \
-ctxlatelua ctxloadluafile ctxlua ctxluabuffer ctxluacode \
-ctxreport ctxsprint cup curlyeqprec curlyeqsucc \
-curlyvee curlywedge currentassignmentlistkey currentassignmentlistvalue currentbtxuservariable \
-currentcommalistitem currentcomponent currentdate currentenvironment currentfeaturetest \
-currentheadnumber currentinterface currentlanguage currentlistentrydestinationattribute currentlistentrylimitedtext \
-currentlistentrynumber currentlistentrypagenumber currentlistentryreferenceattribute currentlistentrytitle currentlistentrytitlerendered \
-currentlistsymbol currentmainlanguage currentmessagetext currentmoduleparameter currentoutputstream \
-currentproduct currentproject currentregime currentregisterpageuserdata currentresponses \
-currenttime currentvalue currentxtablecolumn currentxtablerow curvearrowleft \
-curvearrowright cwopencirclearrow cyrillicA cyrillicAE cyrillicAbreve \
-cyrillicAdiaeresis cyrillicB cyrillicBIGYUS cyrillicBIGYUSiotified cyrillicC \
-cyrillicCH cyrillicCHEDC cyrillicCHEDCabkhasian cyrillicCHEabkhasian cyrillicCHEdiaeresis \
-cyrillicCHEkhakassian cyrillicCHEvertstroke cyrillicD cyrillicDASIAPNEUMATA cyrillicDJE \
-cyrillicDZE cyrillicDZEabkhasian cyrillicDZHE cyrillicE cyrillicELtail \
-cyrillicEMtail cyrillicENDC cyrillicENGHE cyrillicENhook cyrillicENtail \
-cyrillicEREV cyrillicERY cyrillicERtick cyrillicEbreve cyrillicEdiaeresis \
-cyrillicEgrave cyrillicEiotified cyrillicF cyrillicFITA cyrillicG \
-cyrillicGHEmidhook cyrillicGHEstroke cyrillicGHEupturn cyrillicGJE cyrillicH \
-cyrillicHA cyrillicHADC cyrillicHRDSN cyrillicI cyrillicIE \
-cyrillicII cyrillicISHRT cyrillicISHRTtail cyrillicIZHITSA cyrillicIZHITSAdoublegrave \
-cyrillicIdiaeresis cyrillicIgrave cyrillicImacron cyrillicJE cyrillicK \
-cyrillicKADC cyrillicKAbashkir cyrillicKAhook cyrillicKAstroke cyrillicKAvertstroke \
-cyrillicKJE cyrillicKOPPA cyrillicKSI cyrillicL cyrillicLITTLEYUS \
-cyrillicLITTLEYUSiotified cyrillicLJE cyrillicM cyrillicN cyrillicNJE \
-cyrillicO cyrillicOMEGA cyrillicOMEGAround cyrillicOMEGAtitlo cyrillicOT \
-cyrillicObarred cyrillicObarreddiaeresis cyrillicOdiaeresis cyrillicP cyrillicPALATALIZATION \
-cyrillicPALOCHKA cyrillicPEmidhook cyrillicPSI cyrillicPSILIPNEUMATA cyrillicR \
-cyrillicS cyrillicSCHWA cyrillicSCHWAdiaeresis cyrillicSDSC cyrillicSEMISOFT \
-cyrillicSFTSN cyrillicSH cyrillicSHCH cyrillicSHHA cyrillicT \
-cyrillicTEDC cyrillicTETSE cyrillicTITLO cyrillicTSHE cyrillicU \
-cyrillicUK cyrillicUSHRT cyrillicUdiaeresis cyrillicUdoubleacute cyrillicUmacron \
-cyrillicV cyrillicYA cyrillicYAT cyrillicYERUdiaeresis cyrillicYI \
-cyrillicYO cyrillicYU cyrillicYstr cyrillicYstrstroke cyrillicZ \
-cyrillicZDSC cyrillicZEdiaeresis cyrillicZH cyrillicZHEbreve cyrillicZHEdescender \
-cyrillicZHEdiaeresis cyrillica cyrillicabreve cyrillicadiaeresis cyrillicae \
-cyrillicb cyrillicbigyus cyrillicbigyusiotified cyrillicc cyrillicch \
-cyrilliccheabkhasian cyrillicchedc cyrillicchedcabkhasian cyrillicchediaeresis cyrillicchekhakassian \
-cyrillicchevertstroke cyrillicd cyrillicdje cyrillicdze cyrillicdzeabkhasian \
-cyrillicdzhe cyrillice cyrillicebreve cyrillicediaeresis cyrillicegrave \
-cyrilliceiotified cyrilliceltail cyrillicemtail cyrillicendc cyrillicenghe \
-cyrillicenhook cyrillicentail cyrillicerev cyrillicertick cyrillicery \
-cyrillicf cyrillicfita cyrillicg cyrillicghemidhook cyrillicghestroke \
-cyrillicgheupturn cyrillicgje cyrillich cyrillicha cyrillichadc \
-cyrillichrdsn cyrillici cyrillicidiaeresis cyrillicie cyrillicigrave \
-cyrillicii cyrillicimacron cyrillicishrt cyrillicishrttail cyrillicizhitsa \
-cyrillicizhitsadoublegrave cyrillicje cyrillick cyrillickabashkir cyrillickadc \
-cyrillickahook cyrillickastroke cyrillickavertstroke cyrillickje cyrillickoppa \
-cyrillicksi cyrillicl cyrilliclittleyus cyrilliclittleyusiotified cyrilliclje \
-cyrillicm cyrillicn cyrillicnje cyrillico cyrillicobarred \
-cyrillicobarreddiaeresis cyrillicodiaeresis cyrillicomega cyrillicomegaround cyrillicomegatitlo \
-cyrillicot cyrillicp cyrillicpemidhook cyrillicpsi cyrillicr \
-cyrillics cyrillicschwa cyrillicschwadiaeresis cyrillicsdsc cyrillicsemisoft \
-cyrillicsftsn cyrillicsh cyrillicshch cyrillicshha cyrillict \
-cyrillictedc cyrillictetse cyrillictshe cyrillicu cyrillicudiaeresis \
-cyrillicudoubleacute cyrillicuk cyrillicumacron cyrillicushrt cyrillicv \
-cyrillicya cyrillicyat cyrillicyerudiaeresis cyrillicyi cyrillicyo \
-cyrillicystr cyrillicystrstroke cyrillicyu cyrillicz cyrilliczdsc \
-cyrilliczediaeresis cyrilliczh cyrilliczhebreve cyrilliczhedescender cyrilliczhediaeresis \
-d dag dagger daleth dasharrow \
-dashedleftarrow dashedrightarrow dashv datasetvariable date \
-daylong dayoftheweek dayshort dayspermonth dbinom \
-dcaron dcurl dd ddag ddagger \
-dddot ddot ddots decrement decrementcounter \
-decrementedcounter decrementpagenumber decrementsubpagenumber decrementvalue defaultinterface \
-defaultobjectpage defaultobjectreference defcatcodecommand defconvertedargument defconvertedcommand \
-defconvertedvalue define defineMPinstance defineTABLEsetup defineaccent \
-defineactivecharacter definealternativestyle defineanchor defineattachment defineattribute \
-definebackground definebar defineblock definebodyfont definebodyfontenvironment \
-definebodyfontswitch definebreakpoint definebreakpoints definebtx definebtxdataset \
-definebtxregister definebtxrendering definebuffer definebutton definecapitals \
-definecharacter definecharacterkerning definecharacterspacing definechemical definechemicals \
-definechemicalsymbol definecollector definecolor definecolorgroup definecolumnbreak \
-definecolumnset definecolumnsetarea definecolumnsetspan definecombination definecombinedlist \
-definecommand definecomment definecomplexorsimple definecomplexorsimpleempty defineconversion \
-defineconversionset definecounter definedataset definedate definedelimitedtext \
-definedeq definedescription definedfont definedocument defineeffect \
-defineenumeration defineexpandable defineexpansion defineexternalfigure definefacingfloat \
-definefallbackfamily definefield definefieldbody definefieldbodyset definefieldcategory \
-definefieldstack definefiguresymbol definefileconstant definefilefallback definefilesynonym \
-definefiller definefirstline definefittingpage definefloat definefont \
-definefontalternative definefontfallback definefontfamily definefontfamilypreset definefontfeature \
-definefontfile definefontsize definefontsolution definefontstyle definefontsynonym \
-defineformula defineformulaalternative defineformulaframed defineframed defineframedcontent \
-defineframedtable defineframedtext definefrozenfont defineglobalcolor definegraphictypesynonym \
-definegridsnapping definehbox definehead defineheadalternative definehelp \
-definehigh definehighlight definehspace definehyphenationfeatures defineindentedtext \
-defineindenting defineinitial defineinsertion defineinteraction defineinteractionbar \
-defineinteractionmenu defineinterfaceconstant defineinterfaceelement defineinterfacevariable defineinterlinespace \
-defineintermediatecolor defineitemgroup defineitems definelabel definelabelclass \
-definelayer definelayerpreset definelayout definelinefiller definelinenote \
-definelinenumbering definelines definelist definelistalternative definelistextra \
-definelow definelowhigh definelowmidhigh definemakeup definemarginblock \
-definemargindata definemarker definemarking definemathaccent definemathalignment \
-definemathcases definemathcommand definemathdouble definemathdoubleextensible definemathematics \
-definemathextensible definemathfence definemathfraction definemathframed definemathmatrix \
-definemathornament definemathover definemathoverextensible definemathovertextextensible definemathradical \
-definemathstackers definemathstyle definemathtriplet definemathunder definemathunderextensible \
-definemathundertextextensible definemathunstacked definemeasure definemessageconstant definemixedcolumns \
-definemode definemulticolumns definemultitonecolor definenamedcolor definenamespace \
-definenarrower definenote defineorientation defineornament defineoutputroutine \
-defineoutputroutinecommand defineoverlay definepage definepagebreak definepagechecker \
-definepagecolumns definepageinjection definepageinjectionalternative definepageshift definepagestate \
-definepairedbox definepalet definepapersize defineparagraph defineparagraphs \
-defineparallel defineparbuilder defineperiodkerning defineplaceholder defineplacement \
-definepositioning defineprefixset defineprocesscolor defineprocessor defineprofile \
-defineprogram definepushbutton definepushsymbol definereference definereferenceformat \
-defineregister definerenderingwindow defineresetset defineruby definescale \
-definescript definesection definesectionblock definesectionlevels defineselector \
-defineseparatorset defineshift definesidebar definesort definesorting \
-definespotcolor definestartstop definestyle definestyleinstance definesubfield \
-definesubformula definesymbol definesynonym definesynonyms definesystemattribute \
-definesystemconstant definesystemvariable definetabletemplate definetabulate definetext \
-definetextbackground definetextflow definetextnote definetokenlist definetooltip \
-definetransparency definetwopasslist definetype definetypeface definetypescriptprefix \
-definetypescriptsynonym definetypesetting definetyping defineunit defineuserdata \
-defineuserdataalternative defineviewerlayer definevspace definevspacing definevspacingamount \
-definextable defrostparagraphproperties delimited delimitedtext delta \
-depthofstring depthonlybox depthspanningtext depthstrut determineheadnumber \
-determinelistcharacteristics determinenoflines determineregistercharacteristics devanagarinumerals dfrac \
-dhook diameter diamond diamondsuit differentialD \
-differentiald digamma digits dimensiontocount directboxfromcache \
-directcolor directcolored directconvertedcounter directcopyboxfromcache directdummyparameter \
-directgetboxllx directgetboxlly directhighlight directlocalframed directluacode \
-directparwrapper directselect directsetbar directsetup directsymbol \
-directvspacing dis disabledirectives disableexperiments disablemode \
-disableoutputstream disableparpositions disableregime disabletrackers displaymath \
-displaymathematics displaymessage disposeluatable distributedhsize div \
-dividedsize divideontimes divides doadaptleftskip doadaptrightskip \
-doaddfeature doassign doassignempty doboundtext docheckassignment \
-docheckedpair documentvariable dodoubleargument dodoubleargumentwithset dodoubleempty \
-dodoubleemptywithset dodoublegroupempty doeassign doexpandedrecurse dofastloopcs \
-dogetattribute dogetattributeid dogetcommacommandelement dogobbledoubleempty dogobblesingleempty \
-dohyphens doif doifMPgraphicelse doifallcommon doifallcommonelse \
-doifalldefinedelse doifallmodes doifallmodeselse doifassignmentelse doifassignmentelsecs \
-doifblackelse doifbothsides doifbothsidesoverruled doifboxelse doifbufferelse \
-doifcheckedpagestate doifcolor doifcolorelse doifcommandhandler doifcommandhandlerelse \
-doifcommon doifcommonelse doifcontent doifconversiondefinedelse doifconversionnumberelse \
-doifcounter doifcounterelse doifcurrentfonthasfeatureelse doifdefined doifdefinedcounter \
-doifdefinedcounterelse doifdefinedelse doifdimensionelse doifdimenstringelse doifdocumentargument \
-doifdocumentargumentelse doifdocumentfilename doifdocumentfilenameelse doifdocumentvariable doifdocumentvariableelse \
-doifdrawingblackelse doifelse doifelseMPgraphic doifelseallcommon doifelsealldefined \
-doifelseallmodes doifelseassignment doifelseassignmentcs doifelseblack doifelsebox \
-doifelseboxincache doifelsebuffer doifelsecolor doifelsecommandhandler doifelsecommon \
-doifelseconversiondefined doifelseconversionnumber doifelsecounter doifelsecurrentfonthasfeature doifelsecurrentsortingused \
-doifelsecurrentsynonymshown doifelsecurrentsynonymused doifelsedefined doifelsedefinedcounter doifelsedimension \
-doifelsedimenstring doifelsedocumentargument doifelsedocumentfilename doifelsedocumentvariable doifelsedrawingblack \
-doifelseempty doifelseemptyvalue doifelseemptyvariable doifelseenv doifelsefastoptionalcheck \
-doifelsefastoptionalcheckcs doifelsefieldbody doifelsefieldcategory doifelsefigure doifelsefile \
-doifelsefiledefined doifelsefileexists doifelsefirstchar doifelseflagged doifelsefontchar \
-doifelsefontfeature doifelsefontpresent doifelsefontsynonym doifelseframed doifelsehasspace \
-doifelsehelp doifelseincsname doifelseindented doifelseinelement doifelseinputfile \
-doifelseinsertion doifelseinset doifelseinstring doifelseinsymbolset doifelseintoks \
-doifelseintwopassdata doifelseitalic doifelselanguage doifelselayerdata doifelselayoutdefined \
-doifelselayoutsomeline doifelselayouttextline doifelseleapyear doifelselist doifelselocation \
-doifelselocfile doifelsemainfloatbody doifelsemarkedcontent doifelsemarkedpage doifelsemarking \
-doifelsemeaning doifelsemessage doifelsemode doifelsenextbgroup doifelsenextbgroupcs \
-doifelsenextchar doifelsenextoptional doifelsenextoptionalcs doifelsenextparenthesis doifelsenonzeropositive \
-doifelsenoteonsamepage doifelsenothing doifelsenumber doifelseobjectfound doifelseobjectreferencefound \
-doifelseoddpage doifelseoddpagefloat doifelseoldercontext doifelseolderversion doifelseorientation \
-doifelseoverlapping doifelseoverlay doifelseparallel doifelseparentfile doifelseparwrapper \
-doifelsepath doifelsepathexists doifelsepatterns doifelseposition doifelsepositionaction \
-doifelsepositiononpage doifelsepositionsonsamepage doifelsepositionsonthispage doifelsepositionsused doifelsereferencefound \
-doifelserightpage doifelserightpagefloat doifelserighttoleftinbox doifelsesamelinereference doifelsesamestring \
-doifelsesetups doifelsesomebackground doifelsesomespace doifelsesomething doifelsesometoks \
-doifelsestringinstring doifelsestructurelisthasnumber doifelsestructurelisthaspage doifelsesymboldefined doifelsesymbolset \
-doifelsetext doifelsetextflow doifelsetextflowcollector doifelsetopofpage doifelsetypingfile \
-doifelseundefined doifelseurldefined doifelsevalue doifelsevaluenothing doifelsevariable \
-doifempty doifemptyelse doifemptytoks doifemptyvalue doifemptyvalueelse \
-doifemptyvariable doifemptyvariableelse doifenv doifenvelse doiffastoptionalcheckcselse \
-doiffastoptionalcheckelse doiffieldbodyelse doiffieldcategoryelse doiffigureelse doiffile \
-doiffiledefinedelse doiffileelse doiffileexistselse doiffirstcharelse doifflaggedelse \
-doiffontcharelse doiffontfeatureelse doiffontpresentelse doiffontsynonymelse doifhasspaceelse \
-doifhelpelse doifincsnameelse doifinelementelse doifinputfileelse doifinsertionelse \
-doifinset doifinsetelse doifinstring doifinstringelse doifinsymbolset \
-doifinsymbolsetelse doifintokselse doifintwopassdataelse doifitalicelse doiflanguageelse \
-doiflayerdataelse doiflayoutdefinedelse doiflayoutsomelineelse doiflayouttextlineelse doifleapyearelse \
-doiflistelse doiflocationelse doiflocfileelse doifmainfloatbodyelse doifmarkingelse \
-doifmeaningelse doifmessageelse doifmode doifmodeelse doifnextbgroupcselse \
-doifnextbgroupelse doifnextcharelse doifnextoptionalcselse doifnextoptionalelse doifnextparenthesiselse \
-doifnonzeropositiveelse doifnot doifnotallcommon doifnotallmodes doifnotcommandhandler \
-doifnotcommon doifnotcounter doifnotdocumentargument doifnotdocumentfilename doifnotdocumentvariable \
-doifnotempty doifnotemptyvalue doifnotemptyvariable doifnotenv doifnoteonsamepageelse \
-doifnotescollected doifnotfile doifnotflagged doifnothing doifnothingelse \
-doifnotinset doifnotinsidesplitfloat doifnotinstring doifnotmode doifnotnumber \
-doifnotsamestring doifnotsetups doifnotvalue doifnotvariable doifnumber \
-doifnumberelse doifobjectfoundelse doifobjectreferencefoundelse doifoddpageelse doifoddpagefloatelse \
-doifoldercontextelse doifolderversionelse doifoutervmode doifoverlappingelse doifoverlayelse \
-doifparallelelse doifparentfileelse doifpathelse doifpathexistselse doifpatternselse \
-doifposition doifpositionaction doifpositionactionelse doifpositionelse doifpositiononpageelse \
-doifpositionsonsamepageelse doifpositionsonthispageelse doifpositionsusedelse doifreferencefoundelse doifrightpageelse \
-doifrightpagefloatelse doifrighttoleftinboxelse doifsamelinereferenceelse doifsamestring doifsamestringelse \
-doifsetups doifsetupselse doifsomebackground doifsomebackgroundelse doifsomespaceelse \
-doifsomething doifsomethingelse doifsometoks doifsometokselse doifstringinstringelse \
-doifstructurelisthasnumberelse doifstructurelisthaspageelse doifsymboldefinedelse doifsymbolsetelse doiftext \
-doiftextelse doiftextflowcollectorelse doiftextflowelse doiftopofpageelse doiftypingfileelse \
-doifundefined doifundefinedcounter doifundefinedelse doifunknownfontfeature doifurldefinedelse \
-doifvalue doifvalueelse doifvaluenothing doifvaluenothingelse doifvaluesomething \
-doifvariable doifvariableelse doindentation dollar doloop \
-doloopoverlist donothing dontconvertfont dontleavehmode dontpermitspacesbetweengroups \
-dopositionaction doprocesslocalsetups doquadrupleargument doquadrupleempty doquadruplegroupempty \
-doquintupleargument doquintupleempty doquintuplegroupempty dorechecknextindentation dorecurse \
-dorepeatwithcommand doreplacefeature doresetandafffeature doresetattribute dorotatebox \
-dosetattribute dosetleftskipadaption dosetrightskipadaption dosetupcheckedinterlinespace doseventupleargument \
-doseventupleempty dosingleargument dosingleempty dosinglegroupempty dosixtupleargument \
-dosixtupleempty dosomebreak dostepwiserecurse dosubtractfeature dot \
-doteq doteqdot dotfill dotfskip dotlessI \
-dotlessJ dotlessi dotlessj dotlessjstroke dotminus \
-dotoks dotplus dotripleargument dotripleargumentwithset dotripleempty \
-dotripleemptywithset dotriplegroupempty dots dottedcircle dottedrightarrow \
-doublebar doublebond doublebrace doublebracket doublecap \
-doublecup doubleparent doubleprime doubleverticalbar dowith \
-dowithnextbox dowithnextboxcontent dowithnextboxcontentcs dowithnextboxcs dowithpargument \
-dowithrange dowithwargument downarrow downdasharrow downdownarrows \
-downharpoonleft downharpoonright downuparrows downwhitearrow downzigzagarrow \
-dpofstring dstroke dtail dummydigit dummyparameter \
-dzcaronligature dzligature eTeX eacute ebreve \
-ecaron ecedilla ecircumflex ecircumflexacute ecircumflexdotbelow \
-ecircumflexgrave ecircumflexhook ecircumflextilde edefconvertedargument ediaeresis \
-edotaccent edotbelow edoublegrave ee efcmaxheight \
-efcmaxwidth efcminheight efcminwidth efcparameter effect \
-egrave ehook einvertedbreve elapsedseconds elapsedsteptime \
-elapsedtime eleftarrowfill eleftharpoondownfill eleftharpoonupfill eleftrightarrowfill \
-ell em emacron emdash emphasisboldface \
-emphasistypeface emptylines emptyset emquad emspace \
-enableasciimode enabledirectives enableexperiments enablemode enableoutputstream \
-enableparpositions enableregime enabletrackers endash endnote \
-enquad enskip enspace env environment \
-envvar eogonek eoverbarfill eoverbracefill eoverbracketfill \
-eoverparentfill epos epsilon eq eqcirc \
-eqeq eqeqeq eqgtr eqless eqsim \
-eqslantgtr eqslantless equaldigits equalscolon equiv \
-erightarrowfill erightharpoondownfill erightharpoonupfill eta eth \
-ethiopic etilde etwoheadrightarrowfill eunderbarfill eunderbracefill \
-eunderbracketfill eunderparentfill exclamdown executeifdefined exists \
-exitloop exitloopnow expandcheckedcsname expanded expandeddoif \
-expandeddoifelse expandeddoifnot expandfontsynonym expdoif expdoifcommonelse \
-expdoifelse expdoifelsecommon expdoifelseinset expdoifinsetelse expdoifnot \
-exponentiale externalfigure externalfigurecollectionmaxheight externalfigurecollectionmaxwidth externalfigurecollectionminheight \
-externalfigurecollectionminwidth externalfigurecollectionparameter fakebox fallingdotseq fastdecrement \
-fastincrement fastlocalframed fastloopfinal fastloopindex fastscale \
-fastsetup fastsetupwithargument fastsetupwithargumentswapped fastswitchtobodyfont fastsxsy \
-feature fence fenced fetchallmarkings fetchallmarks \
-fetchmark fetchmarking fetchonemark fetchonemarking fetchruntinecommand \
-fetchtwomarkings fetchtwomarks ffiligature ffligature fflligature \
-fhook field fieldbody fieldstack fifthoffivearguments \
-fifthofsixarguments figurefilename figurefilepath figurefiletype figurefullname \
-figureheight figurenaturalheight figurenaturalwidth figurespace figuresymbol \
-figurewidth filename filigature filledhboxb filledhboxc \
-filledhboxg filledhboxk filledhboxm filledhboxr filledhboxy \
-filler fillinline fillinrules fillintext fillupto \
-filterfromnext filterfromvalue filterpages filterreference findtwopassdata \
-finishregisterentry firstcharacter firstcounter firstcountervalue firstinlist \
-firstoffivearguments firstoffourarguments firstofoneargument firstofoneunexpanded firstofsixarguments \
-firstofthreearguments firstofthreeunexpanded firstoftwoarguments firstoftwounexpanded firstrealpage \
-firstrealpagenumber firstsubcountervalue firstsubpage firstsubpagenumber firstuserpage \
-firstuserpagenumber fitfield fitfieldframed fittopbaselinegrid fiveeighths \
-fivesixths fixedspace fixedspaces flag flat \
-flligature floatuserdataparameter flushbox flushboxregister flushcollector \
-flushedrightlastline flushlayer flushlocalfloats flushnextbox flushnotes \
-flushoutputstream flushshapebox flushtextflow flushtokens flushtoks \
-fontalternative fontbody fontchar fontcharbyindex fontclass \
-fontclassname fontface fontfeaturelist fontsize fontstyle \
-footnote footnotetext forall forcecharacterstripping forcelocalfloats \
-forgeteverypar forgetparagraphfreezing forgetparameters forgetparskip forgetparwrapper \
-forgetragged formula formulanumber foundbox fourfifths \
-fourperemspace fourthoffivearguments fourthoffourarguments fourthofsixarguments frac \
-framed frameddimension framedparameter framedtext freezedimenmacro \
-freezemeasure freezeparagraphproperties frenchspacing from fromlinenote \
-frown frozenhbox frule gacute gamma \
-gbreve gcaron gcircumflex gcommaaccent gdefconvertedargument \
-gdefconvertedcommand gdotaccent ge geq geqq \
-geqslant getMPdrawing getMPlayer getboxfromcache getboxllx \
-getboxlly getbuffer getbufferdata getcommacommandsize getcommalistsize \
-getdatavalue getdayoftheweek getdayspermonth getdefinedbuffer getdocumentargument \
-getdocumentargumentdefault getdocumentfilename getdummyparameters getemptyparameters geteparameters \
-getexpandedparameters getfiguredimensions getfirstcharacter getfirsttwopassdata getfromcommacommand \
-getfromcommalist getfromluatable getfromtwopassdata getglyphdirect getglyphstyled \
-getgparameters getinlineuserdata getlasttwopassdata getlocalfloat getlocalfloats \
-getmarking getmessage getnamedglyphdirect getnamedglyphstyled getnamedtwopassdatalist \
-getnaturaldimensions getnoflines getobject getobjectdimensions getpaletsize \
-getparameters getparwrapper getprivatechar getprivateslot getrandomcount \
-getrandomdimen getrandomfloat getrandomnumber getrandomseed getraweparameters \
-getrawgparameters getrawnoflines getrawparameters getrawxparameters getreference \
-getreferenceentry getroundednoflines gets getsubstring gettokenlist \
-gettwopassdata gettwopassdatalist getuserdata getuvalue getvalue \
-getvariable getvariabledefault getxparameters gg ggg \
-gggtr gimel globaldisablemode globalenablemode globalletempty \
-globalpopbox globalpopmacro globalpreventmode globalprocesscommalist globalpushbox \
-globalpushmacro globalswapcounts globalswapdimens globalswapmacros globalundefine \
-glyphfontfile gnapprox gneqq gnsim gobbledoubleempty \
-gobbleeightarguments gobblefivearguments gobblefiveoptionals gobblefourarguments gobblefouroptionals \
-gobbleninearguments gobbleoneargument gobbleoneoptional gobblesevenarguments gobblesingleempty \
-gobblesixarguments gobblespacetokens gobbletenarguments gobblethreearguments gobblethreeoptionals \
-gobbletwoarguments gobbletwooptionals gobbleuntil gobbleuntilrelax godown \
-goto gotobox gotopage grabbufferdata grabbufferdatadirect \
-grabuntil grave graycolor grayvalue greedysplitstring \
-greekAlpha greekAlphadasia greekAlphadasiaperispomeni greekAlphadasiatonos greekAlphadasiavaria \
-greekAlphaiotasub greekAlphaiotasubdasia greekAlphaiotasubdasiaperispomeni greekAlphaiotasubdasiatonos greekAlphaiotasubdasiavaria \
-greekAlphaiotasubpsili greekAlphaiotasubpsiliperispomeni greekAlphaiotasubpsilitonos greekAlphaiotasubpsilivaria greekAlphamacron \
-greekAlphapsili greekAlphapsiliperispomeni greekAlphapsilitonos greekAlphapsilivaria greekAlphatonos \
-greekAlphavaria greekAlphavrachy greekBeta greekChi greekCoronis \
-greekDelta greekEpsilon greekEpsilondasia greekEpsilondasiatonos greekEpsilondasiavaria \
-greekEpsilonpsili greekEpsilonpsilitonos greekEpsilonpsilivaria greekEpsilontonos greekEpsilonvaria \
-greekEta greekEtadasia greekEtadasiaperispomeni greekEtadasiatonos greekEtadasiavaria \
-greekEtaiotasub greekEtaiotasubdasia greekEtaiotasubdasiaperispomeni greekEtaiotasubdasiatonos greekEtaiotasubdasiavaria \
-greekEtaiotasubpsili greekEtaiotasubpsiliperispomeni greekEtaiotasubpsilitonos greekEtaiotasubpsilivaria greekEtapsili \
-greekEtapsiliperispomeni greekEtapsilitonos greekEtapsilivaria greekEtatonos greekEtavaria \
-greekGamma greekIota greekIotadasia greekIotadasiaperispomeni greekIotadasiatonos \
-greekIotadasiavaria greekIotadialytika greekIotamacron greekIotapsili greekIotapsiliperispomeni \
-greekIotapsilitonos greekIotapsilivaria greekIotatonos greekIotavaria greekIotavrachy \
-greekKappa greekLambda greekMu greekNu greekOmega \
-greekOmegadasia greekOmegadasiaperispomeni greekOmegadasiatonos greekOmegadasiavaria greekOmegaiotasub \
-greekOmegaiotasubdasia greekOmegaiotasubdasiaperispomeni greekOmegaiotasubdasiatonos greekOmegaiotasubdasiavaria greekOmegaiotasubpsili \
-greekOmegaiotasubpsiliperispomeni greekOmegaiotasubpsilitonos greekOmegaiotasubpsilivaria greekOmegapsili greekOmegapsiliperispomeni \
-greekOmegapsilitonos greekOmegapsilivaria greekOmegatonos greekOmegavaria greekOmicron \
-greekOmicrondasia greekOmicrondasiatonos greekOmicrondasiavaria greekOmicronpsili greekOmicronpsilitonos \
-greekOmicronpsilivaria greekOmicrontonos greekOmicronvaria greekPhi greekPi \
-greekPsi greekRho greekRhodasia greekSigma greekSigmalunate \
-greekTau greekTheta greekUpsilon greekUpsilondasia greekUpsilondasiaperispomeni \
-greekUpsilondasiatonos greekUpsilondasiavaria greekUpsilondialytika greekUpsilonmacron greekUpsilontonos \
-greekUpsilonvaria greekUpsilonvrachy greekXi greekZeta greekalpha \
-greekalphadasia greekalphadasiaperispomeni greekalphadasiatonos greekalphadasiavaria greekalphaiotasub \
-greekalphaiotasubdasia greekalphaiotasubdasiaperispomeni greekalphaiotasubdasiatonos greekalphaiotasubdasiavaria greekalphaiotasubperispomeni \
-greekalphaiotasubpsili greekalphaiotasubpsiliperispomeni greekalphaiotasubpsilitonos greekalphaiotasubpsilivaria greekalphaiotasubtonos \
-greekalphaiotasubvaria greekalphamacron greekalphaoxia greekalphaperispomeni greekalphapsili \
-greekalphapsiliperispomeni greekalphapsilitonos greekalphapsilivaria greekalphatonos greekalphavaria \
-greekalphavrachy greekbeta greekbetaalt greekchi greekdasia \
-greekdasiaperispomeni greekdasiavaria greekdelta greekdialytikaperispomeni greekdialytikatonos \
-greekdialytikavaria greekdigamma greekepsilon greekepsilonalt greekepsilondasia \
-greekepsilondasiatonos greekepsilondasiavaria greekepsilonoxia greekepsilonpsili greekepsilonpsilitonos \
-greekepsilonpsilivaria greekepsilontonos greekepsilonvaria greeketa greeketadasia \
-greeketadasiaperispomeni greeketadasiatonos greeketadasiavaria greeketaiotasub greeketaiotasubdasia \
-greeketaiotasubdasiaperispomeni greeketaiotasubdasiatonos greeketaiotasubdasiavaria greeketaiotasubperispomeni greeketaiotasubpsili \
-greeketaiotasubpsiliperispomeni greeketaiotasubpsilitonos greeketaiotasubpsilivaria greeketaiotasubtonos greeketaiotasubvaria \
-greeketaoxia greeketaperispomeni greeketapsili greeketapsiliperispomeni greeketapsilitonos \
-greeketapsilivaria greeketatonos greeketavaria greekfinalsigma greekgamma \
-greekiota greekiotadasia greekiotadasiaperispomeni greekiotadasiatonos greekiotadasiavaria \
-greekiotadialytika greekiotadialytikaperispomeni greekiotadialytikatonos greekiotadialytikavaria greekiotamacron \
-greekiotaoxia greekiotaperispomeni greekiotapsili greekiotapsiliperispomeni greekiotapsilitonos \
-greekiotapsilivaria greekiotatonos greekiotavaria greekiotavrachy greekkappa \
-greekkoppa greeklambda greekmu greeknu greeknumerals \
-greeknumkoppa greekomega greekomegadasia greekomegadasiaperispomeni greekomegadasiatonos \
-greekomegadasiavaria greekomegaiotasub greekomegaiotasubdasia greekomegaiotasubdasiaperispomeni greekomegaiotasubdasiatonos \
-greekomegaiotasubdasiavaria greekomegaiotasubperispomeni greekomegaiotasubpsili greekomegaiotasubpsiliperispomeni greekomegaiotasubpsilitonos \
-greekomegaiotasubpsilivaria greekomegaiotasubtonos greekomegaiotasubvaria greekomegaoxia greekomegaperispomeni \
-greekomegapsili greekomegapsiliperispomeni greekomegapsilitonos greekomegapsilivaria greekomegatonos \
-greekomegavaria greekomicron greekomicrondasia greekomicrondasiatonos greekomicrondasiavaria \
-greekomicronoxia greekomicronpsili greekomicronpsilitonos greekomicronpsilivaria greekomicrontonos \
-greekomicronvaria greekoxia greekperispomeni greekphi greekphialt \
-greekpi greekpialt greekprosgegrammeni greekpsi greekpsili \
-greekpsiliperispomeni greekpsilivaria greekrho greekrhoalt greekrhodasia \
-greekrhopsili greeksampi greeksigma greeksigmalunate greekstigma \
-greektau greektheta greekthetaalt greektonos greekupsilon \
-greekupsilondasia greekupsilondasiaperispomeni greekupsilondasiatonos greekupsilondasiavaria greekupsilondiaeresis \
-greekupsilondialytikaperispomeni greekupsilondialytikatonos greekupsilondialytikavaria greekupsilonmacron greekupsilonoxia \
-greekupsilonperispomeni greekupsilonpsili greekupsilonpsiliperispomeni greekupsilonpsilitonos greekupsilonpsilivaria \
-greekupsilontonos greekupsilonvaria greekupsilonvrachy greekvaria greekxi \
-greekzeta grid groupedcommand gsetboxllx gsetboxlly \
-gstroke gt gtrapprox gtrdot gtreqless \
-gtreqqless gtrless gtrsim guilsingleleft guilsingleright \
-gujaratinumerals gurmurkhinumerals hairline hairspace halflinestrut \
-halfstrut halfwaybox handletokens handwritten hangul \
-hanzi hash hat hbar hboxofvbox \
-hboxreference hcaron hcircumflex hdofstring headhbox \
-headlanguage headnumber headnumbercontent headnumberdistance headnumberwidth \
-headreferenceattributes headsetupspacing headtext headtextcontent headtextdistance \
-headtexts headtextwidth headvbox headwidth heartsuit \
-hebrewAlef hebrewAyin hebrewBet hebrewDalet hebrewGimel \
-hebrewHe hebrewHet hebrewKaf hebrewKaffinal hebrewLamed \
-hebrewMem hebrewMemfinal hebrewNun hebrewNunfinal hebrewPe \
-hebrewPefinal hebrewQof hebrewResh hebrewSamekh hebrewShin \
-hebrewTav hebrewTet hebrewTsadi hebrewTsadifinal hebrewVav \
-hebrewYod hebrewZayin hebrewnumerals heightanddepthofstring heightofstring \
-heightspanningtext helptext hexnumber hexstringtonumber hglue \
-hiddenbar hiddencitation hiddencite hideblocks high \
-highlight highordinalstr hilo himilo hl \
-hookleftarrow hookrightarrow horizontalgrowingbar horizontalpositionbar hpackbox \
-hpackedbox hphantom hpos hsizefraction hslash \
-hsmash hsmashbox hsmashed hspace hstroke \
-htdpofstring htofstring hyphen hyphenatedcoloredword hyphenatedfile \
-hyphenatedfilename hyphenatedhbox hyphenatedpar hyphenatedurl hyphenatedword \
-iacute ibox ibreve icaron icircumflex \
-ideographichalffillspace ideographicspace idiaeresis idotaccent idotbelow \
-idoublegrave idxfromluatable ifassignment iff ifinobject \
-ifinoutputstream ifparameters iftrialtypesetting ignoreimplicitspaces ignoretagsinexport \
-ignorevalue igrave ihook ii iiiint \
-iiiintop iiint iiintop iint iintop \
-iinvertedbreve ijligature imacron imaginaryi imaginaryj \
-imath immediatesavetwopassdata impliedby implies imply \
-in includemenu includesvgbuffer includesvgfile includeversioninfo \
-increment incrementcounter incrementedcounter incrementpagenumber incrementsubpagenumber \
-incrementvalue indentation index infofont infofontbold \
-inframed infty infull inheritparameter inhibitblank \
-ininner ininneredge ininnermargin initializeboxstack inleft \
-inleftedge inleftmargin inline inlinebuffer inlinedbox \
-inlinemath inlinemathematics inlinemessage inlineordisplaymath inlineprettyprintbuffer \
-inlinerange inmargin inmframed innerflushshapebox inother \
-inouter inouteredge inoutermargin input inputfilebarename \
-inputfilename inputfilerealsuffix inputfilesuffix inputgivenfile inright \
-inrightedge inrightmargin insertpages inspectluatable installactionhandler \
-installactivecharacter installanddefineactivecharacter installattributestack installautocommandhandler installautosetuphandler \
-installbasicautosetuphandler installbasicparameterhandler installbottomframerenderer installcommandhandler installcorenamespace \
-installctxfunction installctxscanner installdefinehandler installdefinitionset installdefinitionsetmember \
-installdirectcommandhandler installdirectparameterhandler installdirectparametersethandler installdirectsetuphandler installdirectstyleandcolorhandler \
-installframedautocommandhandler installframedcommandhandler installglobalmacrostack installlanguage installleftframerenderer \
-installmacrostack installnamespace installoutputroutine installpagearrangement installparameterhandler \
-installparameterhashhandler installparametersethandler installparentinjector installprotectedctxfunction installprotectedctxscanner \
-installrightframerenderer installrootparameterhandler installsetuphandler installsetuponlycommandhandler installshipoutmethod \
-installsimplecommandhandler installsimpleframedcommandhandler installstyleandcolorhandler installswitchcommandhandler installswitchsetuphandler \
-installtexdirective installtextracker installtopframerenderer installunitsseparator installunitsspace \
-installversioninfo int intclockwise integerrounding integers \
-interactionbar interactionbuttons interactionmenu intercal intertext \
-interwordspaceafter interwordspacebefore interwordspaces interwordspacesafter interwordspacesbefore \
-intop invisiblecomma invisibleplus invisibletimes invokepagehandler \
-iogonek iota italic italicbold italiccorrection \
-italicface item items itemtag itilde \
-jcaron jcircumflex ji jmath jobfilename \
-jobfilesuffix kap kappa kcaron kcommaaccent \
-keepblocks keeplinestogether keepunwantedspaces kerncharacters khook \
-kkra koreancirclenumerals koreannumerals koreannumeralsc koreannumeralsp \
-koreanparentnumerals lVert labellanguage labeltext labeltexts \
-lacute lambda lambdabar land langle \
-language languageCharacters languagecharacters languagecharwidth laplace \
-lastcounter lastcountervalue lastdigit lastlinewidth lastnaturalboxdp \
-lastnaturalboxht lastnaturalboxwd lastparwrapper lastpredefinedsymbol lastrealpage \
-lastrealpagenumber lastsubcountervalue lastsubpage lastsubpagenumber lasttwodigits \
-lastuserpage lastuserpagenumber lateluacode latin layeredtext \
-layerheight layerwidth lazysavetaggedtwopassdata lazysavetwopassdata lbar \
-lbox lbrace lbracket lcaron lceil \
-lchexnumber lchexnumbers lcommaaccent lcurl ldotmiddle \
+Ghook GotoPar Greeknumerals Gstroke Hcaron \
+Hcircumflex Hstroke IJligature INRSTEX Iacute \
+Ibreve Icaron Icircumflex Idiaeresis Idotaccent \
+Idotbelow Idoublegrave Igrave Ihook Iinvertedbreve \
+Im Imacron Iogonek Iota Istroke \
+Itilde Jcircumflex Join Kappa Kcaron \
+Kcommaaccent Khook LAMSTEX LATEX LJligature \
+LUAJITTEX LUAMETATEX LUATEX LaTeX Lacute \
+LamSTeX Lambda Lbar Lcaron Lcommaaccent \
+Ldotmiddle Ldsh Leftarrow Leftrightarrow Ljligature \
+Lleftarrow Longleftarrow Longleftrightarrow Longmapsfrom Longmapsto \
+Longrightarrow Lsh Lstroke Lua LuaMetaTeX \
+LuaTeX LuajitTeX METAFONT METAFUN METAPOST \
+MKII MKIV MKIX MKLX MKVI \
+MKXI MKXL MONTH MONTHLONG MONTHSHORT \
+MPII MPIV MPLX MPVI MPXL \
+MPanchor MPbetex MPc MPcode MPcolor \
+MPcoloronly MPcolumn MPd MPdrawing MPfontsizehskip \
+MPgetmultipars MPgetmultishape MPgetposboxes MPh MPinclusions \
+MPleftskip MPll MPlr MPls MPmenubuttons \
+MPn MPoptions MPoverlayanchor MPp MPpage \
+MPpardata MPplus MPpos MPpositiongraphic MPposset \
+MPr MPrawvar MPregion MPrest MPrightskip \
+MPrs MPstring MPtext MPtransparency MPul \
+MPur MPv MPvar MPvariable MPvv \
+MPw MPwhd MPx MPxy MPxywhd \
+MPy Mapsfrom Mapsto MetaFont MetaFun \
+MetaPost Mu NJligature Nacute Ncaron \
+Ncommaaccent Nearrow Neng Ngrave Njligature \
+NormalizeFontHeight NormalizeFontWidth NormalizeTextHeight NormalizeTextWidth Ntilde \
+Nu Numbers Nwarrow OEligature Oacute \
+Obreve Ocaron Ocircumflex Ocircumflexacute Ocircumflexdotbelow \
+Ocircumflexgrave Ocircumflexhook Ocircumflextilde Odiaeresis Odiaeresismacron \
+Odotaccent Odotaccentmacron Odotbelow Odoublegrave Ograve \
+Ohook Ohorn Ohornacute Ohorndotbelow Ohorngrave \
+Ohornhook Ohorntilde Ohungarumlaut Oinvertedbreve Omacron \
+Omega Omicron Oogonek Oogonekmacron Ostroke \
+Ostrokeacute Otilde Otildemacron P PDFETEX \
+PDFTEX PDFcolor PICTEX PPCHTEX PPCHTeX \
+PRAGMA Phi Phook Pi PiCTeX \
+Plankconst PointsToBigPoints PointsToReal PointsToWholeBigPoints PropertyLine \
+Psi PtToCm Racute Rcaron Rcommaaccent \
+Rdoublegrave Rdsh Re ReadFile Relbar \
+Rho Rightarrow Rinvertedbreve Romannumerals Rrightarrow \
+Rsh S Sacute ScaledPointsToBigPoints ScaledPointsToWholeBigPoints \
+Scaron Scedilla Schwa Scircumflex Scommaaccent \
+Searrow Sigma Smallcapped Subset Supset \
+Swarrow TABLE TEX TaBlE Tau \
+Tcaron Tcedilla Tcommaaccent TeX TheNormalizedFontSize \
+Theta Thook Thorn TransparencyHack Tstroke \
+Uacute Ubreve Ucaron Ucircumflex Udiaeresis \
+Udiaeresisacute Udiaeresiscaron Udiaeresisgrave Udiaeresismacron Udotbelow \
+Udoublegrave Ugrave Uhook Uhorn Uhornacute \
+Uhorndotbelow Uhorngrave Uhornhook Uhorntilde Uhungarumlaut \
+Uinvertedbreve Umacron Uogonek Uparrow Updownarrow \
+Upsilon Uring Utilde Uuparrow VDash \
+Vdash VerboseNumber Vert Vhook Vvdash \
+WEEKDAY WORD WORDS Wcircumflex WidthSpanningText \
+Word Words XETEX XeTeX Xi \
+Yacute Ycircumflex Ydiaeresis Ydotbelow Ygrave \
+Yhook Ymacron Ytilde Zacute Zcaron \
+Zdotaccent Zeta Zhook Zstroke aacute \
+abbreviation abjadnaivenumerals abjadnodotnumerals abjadnumerals about \
+abreve abreveacute abrevedotbelow abrevegrave abrevehook \
+abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow \
+acircumflexgrave acircumflexhook acircumflextilde activatespacehandler actualday \
+actualmonth actualyear actuarial acute acwopencirclearrow \
+adaptcollector adaptfontfeature adaptlayout adaptpapersize addfeature \
+addtoJSpreamble addtocommalist addvalue adiaeresis adiaeresismacron \
+adotaccent adotaccentmacron adotbelow adoublegrave aeacute \
+aeligature aemacron afghanicurrency aftersplitstring aftertestandsplitstring \
+agrave ahook ainvertedbreve aleph alignbottom \
+aligned alignedbox alignedline alignhere alignmentcharacter \
+allinputpaths alpha alphabeticnumerals alwayscitation alwayscite \
+amacron amalg ampersand anchor angle \
+aogonek appendetoks appendgvalue appendtocommalist appendtoks \
+appendtoksonce appendvalue apply applyalternativestyle applyfunction \
+applyprocessor applytocharacters applytofirstcharacter applytosplitstringchar applytosplitstringcharspaced \
+applytosplitstringline applytosplitstringlinespaced applytosplitstringword applytosplitstringwordspaced applytowords \
+approx approxEq approxeq approxnEq arabicakbar \
+arabicalayhe arabicallah arabicallallahou arabicasterisk arabicbasmalah \
+arabiccomma arabiccuberoot arabicdateseparator arabicdecimals arabicdisputedendofayah \
+arabicendofayah arabicexnumerals arabicfootnotemarker arabicfourthroot arabichighain \
+arabichighalayheassallam arabichigheqala arabichighesala arabichighfootnotemarker arabichighjeem \
+arabichighlamalef arabichighmadda arabichighmeemlong arabichighmeemshort arabichighnisf \
+arabichighnoon arabichighnoonkasra arabichighqaf arabichighqif arabichighradiallahouanhu \
+arabichighrahmatullahalayhe arabichighrubc arabichighsad arabichighsajda arabichighsakta \
+arabichighsallallahou arabichighseen arabichighsmallsafha arabichightah arabichightakhallus \
+arabichighthalatha arabichighwaqf arabichighyeh arabichighzain arabicjallajalalouhou \
+arabiclettermark arabiclowmeemlong arabiclownoonkasra arabiclowseen arabicmisra \
+arabicmuhammad arabicnumber arabicnumberabove arabicnumerals arabicparenleft \
+arabicparenright arabicpercent arabicperiod arabicpermille arabicpertenthousand \
+arabicpoeticverse arabicqala arabicquestion arabicrasoul arabicray \
+arabicrialsign arabicsafha arabicsajdah arabicsalla arabicsamvat \
+arabicsanah arabicsemicolon arabicshighthreedots arabicslcm arabicstartofrubc \
+arabictripledot arabicvowelwaw arabicvowelyeh arabicwasallam arg \
+aring aringacute asciimode asciistr aside \
+assignalfadimension assigndimen assigndimension assignifempty assigntranslation \
+assignvalue assignwidth assumelongusagecs ast astype \
+asymp at atilde atleftmargin atpage \
+atrightmargin attachment autocap autodirhbox autodirvbox \
+autodirvtop autoinsertnextspace autointegral automathematics autoorientation \
+autopagestaterealpage autopagestaterealpageorder autorule autosetups availablehsize \
+averagecharwidth backepsilon background backgroundimage backgroundimagefill \
+backgroundline backprime backsim backslash bar \
+barleftarrow barleftarrowrightarrowbar barovernorthwestarrow barwedge basegrid \
+baselinebottom baselineleftbox baselinemiddlebox baselinerightbox bbordermatrix \
+bbox because beforesplitstring beforetestandsplitstring beta \
+beth between bhook big bigbodyfont \
+bigcap bigcirc bigcircle bigcup bigdiamond \
+bigg bigger biggl biggm biggr \
+bigl bigm bigodot bigoplus bigotimes \
+bigr bigskip bigsqcap bigsqcup bigsquare \
+bigstar bigtimes bigtriangledown bigtriangleup bigudot \
+biguplus bigvee bigwedge binom bitmapimage \
+blacklozenge blackrule blackrules blacksquare blacktriangle \
+blacktriangledown blacktriangleleft blacktriangleright blank blap \
+bleed bleedheight bleedwidth blockligatures blockquote \
+blocksynctexfile blockuservariable bodyfontenvironmentlist bodyfontsize bold \
+boldface bolditalic boldslanted bookmark booleanmodevalue \
+bordermatrix bot bottombox bottomleftbox bottomrightbox \
+bowtie boxcursor boxdot boxmarker boxminus \
+boxofsize boxplus boxreference boxtimes bpos \
+breakablethinspace breakhere breve bstroke btxabbreviatedjournal \
+btxaddjournal btxalwayscitation btxauthorfield btxdetail btxdirect \
+btxdoif btxdoifcombiinlistelse btxdoifelse btxdoifelsecombiinlist btxdoifelsesameasprevious \
+btxdoifelsesameaspreviouschecked btxdoifelseuservariable btxdoifnot btxdoifsameaspreviouscheckedelse btxdoifsameaspreviouselse \
+btxdoifuservariableelse btxexpandedjournal btxfield btxfieldname btxfieldtype \
+btxfirstofrange btxflush btxflushauthor btxflushauthorinverted btxflushauthorinvertedshort \
+btxflushauthorname btxflushauthornormal btxflushauthornormalshort btxflushsuffix btxfoundname \
+btxfoundtype btxhiddencitation btxhybridcite btxlabellanguage btxlabeltext \
+btxlistcitation btxloadjournalist btxoneorrange btxremapauthor btxsavejournalist \
+btxsetup btxsingularorplural btxsingularplural btxtextcitation buildmathaccent \
+buildtextaccent buildtextbottomcomma buildtextbottomdot buildtextcedilla buildtextgrave \
+buildtextmacron buildtextognek bullet button cacute \
+calligraphic camel cap capital carriagereturn \
+catcodetablename cbox ccaron ccedilla ccircumflex \
+ccurl cdot cdotaccent cdotp cdots \
+centeraligned centerbox centerdot centeredbox centeredlastline \
+centerednextbox centerline cfrac chapter character \
+characters chardescription charwidthlanguage check checkcharacteralign \
+checkedblank checkedchar checkedfiller checkedstrippedcsname checkinjector \
+checkmark checknextindentation checknextinjector checkpage checkparameters \
+checkpreviousinjector checksoundtrack checktwopassdata checkvariables chem \
+chemical chemicalbottext chemicalmidtext chemicalsymbol chemicaltext \
+chemicaltoptext chi chineseallnumerals chinesecapnumerals chinesenumerals \
+chook circ circeq circlearrowleft circlearrowright \
+circledR circledS circledast circledcirc circleddash \
+circledequals circleonrightarrow citation cite clap \
+classfont cldcommand cldcontext cldloadfile cldprocessfile \
+cleftarrow clip clippedoverlayimage clonefield clubsuit \
+collect collectedtext collectexpanded colon coloncolonequals \
+colonequals color colorbar colorcomponents colored \
+coloronly colorvalue column columnbreak columnsetspanwidth \
+combinepages commalistelement commalistsentence commalistsize comment \
+comparecolorgroup comparedimension comparedimensioneps comparepalet complement \
+completebtxrendering completecontent completeindex completelist completelistofabbreviations \
+completelistofchemicals completelistoffigures completelistofgraphics completelistofintermezzi completelistoflogos \
+completelistofpublications completelistofsorts completelistofsynonyms completelistoftables completepagenumber \
+completeregister complexes complexorsimple complexorsimpleempty component \
+composedcollector composedlayer compounddiscretionary compresult cong \
+constantdimen constantdimenargument constantemptyargument constantnumber constantnumberargument \
+contentreference continuednumber continueifinputfile convertargument convertcommand \
+convertedcounter converteddimen convertedsubcounter convertmonth convertnumber \
+convertvalue convertvboxtohbox coprod copyboxfromcache copybtxlabeltext \
+copyfield copyheadtext copylabeltext copymathlabeltext copyoperatortext \
+copypages copyparameters copyposition copyprefixtext copyright \
+copysetups copysuffixtext copytaglabeltext copyunittext correctwhitespace \
+countersubs counttoken counttokens cramped crampedclap \
+crampedllap crampedrlap crightarrow crightoverleftarrow crlf \
+crlfplaceholder cstroke ctop ctxcommand ctxdirectcommand \
+ctxdirectlua ctxfunction ctxlatecommand ctxlatelua ctxloadluafile \
+ctxlua ctxluabuffer ctxluacode ctxreport ctxsprint \
+cup curlyeqprec curlyeqsucc curlyvee curlywedge \
+currentassignmentlistkey currentassignmentlistvalue currentbtxuservariable currentcommalistitem currentcomponent \
+currentdate currentenvironment currentfeaturetest currentheadnumber currentinterface \
+currentlanguage currentlistentrydestinationattribute currentlistentrylimitedtext currentlistentrynumber currentlistentrypagenumber \
+currentlistentryreferenceattribute currentlistentrytitle currentlistentrytitlerendered currentlistsymbol currentmainlanguage \
+currentmessagetext currentmoduleparameter currentoutputstream currentproduct currentproject \
+currentregime currentregisterpageuserdata currentresponses currenttime currentvalue \
+currentxtablecolumn currentxtablerow curvearrowleft curvearrowright cwopencirclearrow \
+cyrillicA cyrillicAE cyrillicAbreve cyrillicAdiaeresis cyrillicB \
+cyrillicBIGYUS cyrillicBIGYUSiotified cyrillicC cyrillicCH cyrillicCHEDC \
+cyrillicCHEDCabkhasian cyrillicCHEabkhasian cyrillicCHEdiaeresis cyrillicCHEkhakassian cyrillicCHEvertstroke \
+cyrillicD cyrillicDASIAPNEUMATA cyrillicDJE cyrillicDZE cyrillicDZEabkhasian \
+cyrillicDZHE cyrillicE cyrillicELtail cyrillicEMtail cyrillicENDC \
+cyrillicENGHE cyrillicENhook cyrillicENtail cyrillicEREV cyrillicERY \
+cyrillicERtick cyrillicEbreve cyrillicEdiaeresis cyrillicEgrave cyrillicEiotified \
+cyrillicF cyrillicFITA cyrillicG cyrillicGHEmidhook cyrillicGHEstroke \
+cyrillicGHEupturn cyrillicGJE cyrillicH cyrillicHA cyrillicHADC \
+cyrillicHRDSN cyrillicI cyrillicIE cyrillicII cyrillicISHRT \
+cyrillicISHRTtail cyrillicIZHITSA cyrillicIZHITSAdoublegrave cyrillicIdiaeresis cyrillicIgrave \
+cyrillicImacron cyrillicJE cyrillicK cyrillicKADC cyrillicKAbashkir \
+cyrillicKAhook cyrillicKAstroke cyrillicKAvertstroke cyrillicKJE cyrillicKOPPA \
+cyrillicKSI cyrillicL cyrillicLITTLEYUS cyrillicLITTLEYUSiotified cyrillicLJE \
+cyrillicM cyrillicN cyrillicNJE cyrillicO cyrillicOMEGA \
+cyrillicOMEGAround cyrillicOMEGAtitlo cyrillicOT cyrillicObarred cyrillicObarreddiaeresis \
+cyrillicOdiaeresis cyrillicP cyrillicPALATALIZATION cyrillicPALOCHKA cyrillicPEmidhook \
+cyrillicPSI cyrillicPSILIPNEUMATA cyrillicR cyrillicS cyrillicSCHWA \
+cyrillicSCHWAdiaeresis cyrillicSDSC cyrillicSEMISOFT cyrillicSFTSN cyrillicSH \
+cyrillicSHCH cyrillicSHHA cyrillicT cyrillicTEDC cyrillicTETSE \
+cyrillicTITLO cyrillicTSHE cyrillicU cyrillicUK cyrillicUSHRT \
+cyrillicUdiaeresis cyrillicUdoubleacute cyrillicUmacron cyrillicV cyrillicYA \
+cyrillicYAT cyrillicYERUdiaeresis cyrillicYI cyrillicYO cyrillicYU \
+cyrillicYstr cyrillicYstrstroke cyrillicZ cyrillicZDSC cyrillicZEdiaeresis \
+cyrillicZH cyrillicZHEbreve cyrillicZHEdescender cyrillicZHEdiaeresis cyrillica \
+cyrillicabreve cyrillicadiaeresis cyrillicae cyrillicb cyrillicbigyus \
+cyrillicbigyusiotified cyrillicc cyrillicch cyrilliccheabkhasian cyrillicchedc \
+cyrillicchedcabkhasian cyrillicchediaeresis cyrillicchekhakassian cyrillicchevertstroke cyrillicd \
+cyrillicdje cyrillicdze cyrillicdzeabkhasian cyrillicdzhe cyrillice \
+cyrillicebreve cyrillicediaeresis cyrillicegrave cyrilliceiotified cyrilliceltail \
+cyrillicemtail cyrillicendc cyrillicenghe cyrillicenhook cyrillicentail \
+cyrillicerev cyrillicertick cyrillicery cyrillicf cyrillicfita \
+cyrillicg cyrillicghemidhook cyrillicghestroke cyrillicgheupturn cyrillicgje \
+cyrillich cyrillicha cyrillichadc cyrillichrdsn cyrillici \
+cyrillicidiaeresis cyrillicie cyrillicigrave cyrillicii cyrillicimacron \
+cyrillicishrt cyrillicishrttail cyrillicizhitsa cyrillicizhitsadoublegrave cyrillicje \
+cyrillick cyrillickabashkir cyrillickadc cyrillickahook cyrillickastroke \
+cyrillickavertstroke cyrillickje cyrillickoppa cyrillicksi cyrillicl \
+cyrilliclittleyus cyrilliclittleyusiotified cyrilliclje cyrillicm cyrillicn \
+cyrillicnje cyrillico cyrillicobarred cyrillicobarreddiaeresis cyrillicodiaeresis \
+cyrillicomega cyrillicomegaround cyrillicomegatitlo cyrillicot cyrillicp \
+cyrillicpemidhook cyrillicpsi cyrillicr cyrillics cyrillicschwa \
+cyrillicschwadiaeresis cyrillicsdsc cyrillicsemisoft cyrillicsftsn cyrillicsh \
+cyrillicshch cyrillicshha cyrillict cyrillictedc cyrillictetse \
+cyrillictshe cyrillicu cyrillicudiaeresis cyrillicudoubleacute cyrillicuk \
+cyrillicumacron cyrillicushrt cyrillicv cyrillicya cyrillicyat \
+cyrillicyerudiaeresis cyrillicyi cyrillicyo cyrillicystr cyrillicystrstroke \
+cyrillicyu cyrillicz cyrilliczdsc cyrilliczediaeresis cyrilliczh \
+cyrilliczhebreve cyrilliczhedescender cyrilliczhediaeresis d dag \
+dagger daleth dasharrow dashedleftarrow dashedrightarrow \
+dashv datasetvariable date daylong dayoftheweek \
+dayshort dayspermonth dbinom dcaron dcurl \
+dd ddag ddagger dddot ddot \
+ddots decrement decrementcounter decrementedcounter decrementpagenumber \
+decrementsubpagenumber decrementvalue defaultinterface defaultobjectpage defaultobjectreference \
+defcatcodecommand defconvertedargument defconvertedcommand defconvertedvalue define \
+defineMPinstance defineTABLEsetup defineaccent defineactivecharacter definealternativestyle \
+defineanchor defineattachment defineattribute definebackground definebar \
+defineblock definebodyfont definebodyfontenvironment definebodyfontswitch definebreakpoint \
+definebreakpoints definebtx definebtxdataset definebtxregister definebtxrendering \
+definebuffer definebutton definecapitals definecharacter definecharacterkerning \
+definecharacterspacing definechemical definechemicals definechemicalsymbol definecollector \
+definecolor definecolorgroup definecolumnbreak definecolumnset definecolumnsetarea \
+definecolumnsetspan definecombination definecombinedlist definecommand definecomment \
+definecomplexorsimple definecomplexorsimpleempty defineconversion defineconversionset definecounter \
+definedataset definedate definedelimitedtext definedeq definedescription \
+definedfont definedocument defineeffect defineenumeration defineexpandable \
+defineexpansion defineexternalfigure definefacingfloat definefallbackfamily definefield \
+definefieldbody definefieldbodyset definefieldcategory definefieldstack definefiguresymbol \
+definefileconstant definefilefallback definefilesynonym definefiller definefirstline \
+definefittingpage definefloat definefont definefontalternative definefontfallback \
+definefontfamily definefontfamilypreset definefontfeature definefontfile definefontsize \
+definefontsolution definefontstyle definefontsynonym defineformula defineformulaalternative \
+defineformulaframed defineframed defineframedcontent defineframedtable defineframedtext \
+definefrozenfont defineglobalcolor definegraphictypesynonym definegridsnapping definehbox \
+definehead defineheadalternative definehelp definehigh definehighlight \
+definehspace definehyphenationfeatures defineindentedtext defineindenting defineinitial \
+defineinsertion defineinteraction defineinteractionbar defineinteractionmenu defineinterfaceconstant \
+defineinterfaceelement defineinterfacevariable defineinterlinespace defineintermediatecolor defineitemgroup \
+defineitems definelabel definelabelclass definelayer definelayerpreset \
+definelayout definelinefiller definelinenote definelinenumbering definelines \
+definelist definelistalternative definelistextra definelow definelowhigh \
+definelowmidhigh definemakeup definemarginblock definemargindata definemarker \
+definemarking definemathaccent definemathalignment definemathcases definemathcommand \
+definemathdouble definemathdoubleextensible definemathematics definemathextensible definemathfence \
+definemathfraction definemathframed definemathmatrix definemathornament definemathover \
+definemathoverextensible definemathovertextextensible definemathradical definemathstackers definemathstyle \
+definemathtriplet definemathunder definemathunderextensible definemathundertextextensible definemathunstacked \
+definemeasure definemessageconstant definemixedcolumns definemode definemulticolumns \
+definemultitonecolor definenamedcolor definenamespace definenarrower definenote \
+defineorientation defineornament defineoutputroutine defineoutputroutinecommand defineoverlay \
+definepage definepagebreak definepagechecker definepagecolumns definepageinjection \
+definepageinjectionalternative definepageshift definepagestate definepairedbox definepalet \
+definepapersize defineparagraph defineparagraphs defineparallel defineparbuilder \
+defineperiodkerning defineplaceholder defineplacement definepositioning defineprefixset \
+defineprocesscolor defineprocessor defineprofile defineprogram definepushbutton \
+definepushsymbol definereference definereferenceformat defineregister definerenderingwindow \
+defineresetset defineruby definescale definescript definesection \
+definesectionblock definesectionlevels defineselector defineseparatorset defineshift \
+definesidebar definesort definesorting definespotcolor definestartstop \
+definestyle definestyleinstance definesubfield definesubformula definesymbol \
+definesynonym definesynonyms definesystemattribute definesystemconstant definesystemvariable \
+definetabletemplate definetabulate definetext definetextbackground definetextflow \
+definetextnote definetokenlist definetooltip definetransparency definetwopasslist \
+definetype definetypeface definetypescriptprefix definetypescriptsynonym definetypesetting \
+definetyping defineunit defineuserdata defineuserdataalternative defineviewerlayer \
+definevspace definevspacing definevspacingamount definextable defrostparagraphproperties \
+delimited delimitedtext delta depthofstring depthonlybox \
+depthspanningtext depthstrut determineheadnumber determinelistcharacteristics determinenoflines \
+determineregistercharacteristics devanagarinumerals dfrac dhook diameter \
+diamond diamondsuit differentialD differentiald digamma \
+digits dimensiontocount directboxfromcache directcolor directcolored \
+directconvertedcounter directcopyboxfromcache directdummyparameter directgetboxllx directgetboxlly \
+directhighlight directlocalframed directluacode directparwrapper directselect \
+directsetbar directsetup directsymbol directvspacing dis \
+disabledirectives disableexperiments disablemode disableoutputstream disableparpositions \
+disableregime disabletrackers displaymath displaymathematics displaymessage \
+disposeluatable distributedhsize div dividedsize divideontimes \
+divides doadaptleftskip doadaptrightskip doaddfeature doassign \
+doassignempty doboundtext docheckassignment docheckedpair documentvariable \
+dodoubleargument dodoubleargumentwithset dodoubleempty dodoubleemptywithset dodoublegroupempty \
+doeassign doexpandedrecurse dofastloopcs dogetattribute dogetattributeid \
+dogetcommacommandelement dogobbledoubleempty dogobblesingleempty dohyphens doif \
+doifMPgraphicelse doifallcommon doifallcommonelse doifalldefinedelse doifallmodes \
+doifallmodeselse doifassignmentelse doifassignmentelsecs doifblackelse doifbothsides \
+doifbothsidesoverruled doifboxelse doifbufferelse doifcheckedpagestate doifcolor \
+doifcolorelse doifcommandhandler doifcommandhandlerelse doifcommon doifcommonelse \
+doifcontent doifconversiondefinedelse doifconversionnumberelse doifcounter doifcounterelse \
+doifcurrentfonthasfeatureelse doifdefined doifdefinedcounter doifdefinedcounterelse doifdefinedelse \
+doifdimensionelse doifdimenstringelse doifdocumentargument doifdocumentargumentelse doifdocumentfilename \
+doifdocumentfilenameelse doifdocumentvariable doifdocumentvariableelse doifdrawingblackelse doifelse \
+doifelseMPgraphic doifelseallcommon doifelsealldefined doifelseallmodes doifelseassignment \
+doifelseassignmentcs doifelseblack doifelsebox doifelseboxincache doifelsebuffer \
+doifelsecolor doifelsecommandhandler doifelsecommon doifelseconversiondefined doifelseconversionnumber \
+doifelsecounter doifelsecurrentfonthasfeature doifelsecurrentsortingused doifelsecurrentsynonymshown doifelsecurrentsynonymused \
+doifelsedefined doifelsedefinedcounter doifelsedimension doifelsedimenstring doifelsedocumentargument \
+doifelsedocumentfilename doifelsedocumentvariable doifelsedrawingblack doifelseempty doifelseemptyvalue \
+doifelseemptyvariable doifelseenv doifelsefastoptionalcheck doifelsefastoptionalcheckcs doifelsefieldbody \
+doifelsefieldcategory doifelsefigure doifelsefile doifelsefiledefined doifelsefileexists \
+doifelsefirstchar doifelseflagged doifelsefontchar doifelsefontfeature doifelsefontpresent \
+doifelsefontsynonym doifelseframed doifelsehasspace doifelsehelp doifelseincsname \
+doifelseindented doifelseinelement doifelseinputfile doifelseinsertion doifelseinset \
+doifelseinstring doifelseinsymbolset doifelseintoks doifelseintwopassdata doifelseitalic \
+doifelselanguage doifelselayerdata doifelselayoutdefined doifelselayoutsomeline doifelselayouttextline \
+doifelseleapyear doifelselist doifelselocation doifelselocfile doifelsemainfloatbody \
+doifelsemarkedcontent doifelsemarkedpage doifelsemarking doifelsemeaning doifelsemessage \
+doifelsemode doifelsenextbgroup doifelsenextbgroupcs doifelsenextchar doifelsenextoptional \
+doifelsenextoptionalcs doifelsenextparenthesis doifelsenonzeropositive doifelsenoteonsamepage doifelsenothing \
+doifelsenumber doifelseobjectfound doifelseobjectreferencefound doifelseoddpage doifelseoddpagefloat \
+doifelseoldercontext doifelseolderversion doifelseorientation doifelseoverlapping doifelseoverlay \
+doifelseparallel doifelseparentfile doifelseparwrapper doifelsepath doifelsepathexists \
+doifelsepatterns doifelseposition doifelsepositionaction doifelsepositiononpage doifelsepositionsonsamepage \
+doifelsepositionsonthispage doifelsepositionsused doifelsereferencefound doifelserightpage doifelserightpagefloat \
+doifelserighttoleftinbox doifelsesamelinereference doifelsesamestring doifelsesetups doifelsesomebackground \
+doifelsesomespace doifelsesomething doifelsesometoks doifelsestringinstring doifelsestructurelisthasnumber \
+doifelsestructurelisthaspage doifelsesymboldefined doifelsesymbolset doifelsetext doifelsetextflow \
+doifelsetextflowcollector doifelsetopofpage doifelsetypingfile doifelseundefined doifelseurldefined \
+doifelsevalue doifelsevaluenothing doifelsevariable doifempty doifemptyelse \
+doifemptytoks doifemptyvalue doifemptyvalueelse doifemptyvariable doifemptyvariableelse \
+doifenv doifenvelse doiffastoptionalcheckcselse doiffastoptionalcheckelse doiffieldbodyelse \
+doiffieldcategoryelse doiffigureelse doiffile doiffiledefinedelse doiffileelse \
+doiffileexistselse doiffirstcharelse doifflaggedelse doiffontcharelse doiffontfeatureelse \
+doiffontpresentelse doiffontsynonymelse doifhasspaceelse doifhelpelse doifincsnameelse \
+doifinelementelse doifinputfileelse doifinsertionelse doifinset doifinsetelse \
+doifinstring doifinstringelse doifinsymbolset doifinsymbolsetelse doifintokselse \
+doifintwopassdataelse doifitalicelse doiflanguageelse doiflayerdataelse doiflayoutdefinedelse \
+doiflayoutsomelineelse doiflayouttextlineelse doifleapyearelse doiflistelse doiflocationelse \
+doiflocfileelse doifmainfloatbodyelse doifmarkingelse doifmeaningelse doifmessageelse \
+doifmode doifmodeelse doifnextbgroupcselse doifnextbgroupelse doifnextcharelse \
+doifnextoptionalcselse doifnextoptionalelse doifnextparenthesiselse doifnonzeropositiveelse doifnot \
+doifnotallcommon doifnotallmodes doifnotcommandhandler doifnotcommon doifnotcounter \
+doifnotdocumentargument doifnotdocumentfilename doifnotdocumentvariable doifnotempty doifnotemptyvalue \
+doifnotemptyvariable doifnotenv doifnoteonsamepageelse doifnotescollected doifnotfile \
+doifnotflagged doifnothing doifnothingelse doifnotinset doifnotinsidesplitfloat \
+doifnotinstring doifnotmode doifnotnumber doifnotsamestring doifnotsetups \
+doifnotvalue doifnotvariable doifnumber doifnumberelse doifobjectfoundelse \
+doifobjectreferencefoundelse doifoddpageelse doifoddpagefloatelse doifoldercontextelse doifolderversionelse \
+doifoutervmode doifoverlappingelse doifoverlayelse doifparallelelse doifparentfileelse \
+doifpathelse doifpathexistselse doifpatternselse doifposition doifpositionaction \
+doifpositionactionelse doifpositionelse doifpositiononpageelse doifpositionsonsamepageelse doifpositionsonthispageelse \
+doifpositionsusedelse doifreferencefoundelse doifrightpageelse doifrightpagefloatelse doifrighttoleftinboxelse \
+doifsamelinereferenceelse doifsamestring doifsamestringelse doifsetups doifsetupselse \
+doifsomebackground doifsomebackgroundelse doifsomespaceelse doifsomething doifsomethingelse \
+doifsometoks doifsometokselse doifstringinstringelse doifstructurelisthasnumberelse doifstructurelisthaspageelse \
+doifsymboldefinedelse doifsymbolsetelse doiftext doiftextelse doiftextflowcollectorelse \
+doiftextflowelse doiftopofpageelse doiftypingfileelse doifundefined doifundefinedcounter \
+doifundefinedelse doifunknownfontfeature doifurldefinedelse doifvalue doifvalueelse \
+doifvaluenothing doifvaluenothingelse doifvaluesomething doifvariable doifvariableelse \
+doindentation dollar doloop doloopoverlist donothing \
+dontconvertfont dontleavehmode dontpermitspacesbetweengroups dopositionaction doprocesslocalsetups \
+doquadrupleargument doquadrupleempty doquadruplegroupempty doquintupleargument doquintupleempty \
+doquintuplegroupempty dorechecknextindentation dorecurse dorepeatwithcommand doreplacefeature \
+doresetandafffeature doresetattribute dorotatebox dosetattribute dosetleftskipadaption \
+dosetrightskipadaption dosetupcheckedinterlinespace doseventupleargument doseventupleempty dosingleargument \
+dosingleempty dosinglegroupempty dosixtupleargument dosixtupleempty dosomebreak \
+dostepwiserecurse dosubtractfeature dot doteq doteqdot \
+dotfill dotfskip dotlessI dotlessJ dotlessi \
+dotlessj dotlessjstroke dotminus dotoks dotplus \
+dotripleargument dotripleargumentwithset dotripleempty dotripleemptywithset dotriplegroupempty \
+dots dottedcircle dottedrightarrow doublebar doublebond \
+doublebrace doublebracket doublecap doublecup doubleparent \
+doubleprime doubleverticalbar dowith dowithnextbox dowithnextboxcontent \
+dowithnextboxcontentcs dowithnextboxcs dowithpargument dowithrange dowithwargument \
+downarrow downdasharrow downdownarrows downharpoonleft downharpoonright \
+downuparrows downwhitearrow downzigzagarrow dpofstring dstroke \
+dtail dummydigit dummyparameter dzcaronligature dzligature \
+eTeX eacute ebreve ecaron ecedilla \
+ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhook \
+ecircumflextilde edefconvertedargument ediaeresis edotaccent edotbelow \
+edoublegrave ee efcmaxheight efcmaxwidth efcminheight \
+efcminwidth efcparameter effect egrave ehook \
+einvertedbreve elapsedseconds elapsedsteptime elapsedtime eleftarrowfill \
+eleftharpoondownfill eleftharpoonupfill eleftrightarrowfill ell em \
+emacron emdash emphasisboldface emphasistypeface emptylines \
+emptyset emquad emspace enableasciimode enabledirectives \
+enableexperiments enablemode enableoutputstream enableparpositions enableregime \
+enabletrackers endash endnote enquad enskip \
+enspace env environment envvar eogonek \
+eoverbarfill eoverbracefill eoverbracketfill eoverparentfill epos \
+epsilon eq eqcirc eqeq eqeqeq \
+eqgtr eqless eqsim eqslantgtr eqslantless \
+equaldigits equalscolon equiv erightarrowfill erightharpoondownfill \
+erightharpoonupfill eta eth ethiopic etilde \
+etwoheadrightarrowfill eunderbarfill eunderbracefill eunderbracketfill eunderparentfill \
+exclamdown executeifdefined exists exitloop exitloopnow \
+expandcheckedcsname expanded expandeddoif expandeddoifelse expandeddoifnot \
+expandfontsynonym expdoif expdoifcommonelse expdoifelse expdoifelsecommon \
+expdoifelseinset expdoifinsetelse expdoifnot exponentiale externalfigure \
+externalfigurecollectionmaxheight externalfigurecollectionmaxwidth externalfigurecollectionminheight externalfigurecollectionminwidth externalfigurecollectionparameter \
+fakebox fallingdotseq fastdecrement fastincrement fastlocalframed \
+fastloopfinal fastloopindex fastscale fastsetup fastsetupwithargument \
+fastsetupwithargumentswapped fastswitchtobodyfont fastsxsy feature fence \
+fenced fetchallmarkings fetchallmarks fetchmark fetchmarking \
+fetchonemark fetchonemarking fetchruntinecommand fetchtwomarkings fetchtwomarks \
+ffiligature ffligature fflligature fhook field \
+fieldbody fieldstack fifthoffivearguments fifthofsixarguments figuredash \
+figurefilename figurefilepath figurefiletype figurefullname figureheight \
+figurenaturalheight figurenaturalwidth figurespace figuresymbol figurewidth \
+filename filigature filledhboxb filledhboxc filledhboxg \
+filledhboxk filledhboxm filledhboxr filledhboxy filler \
+fillinline fillinrules fillintext fillupto filterfromnext \
+filterfromvalue filterpages filterreference findtwopassdata finishregisterentry \
+firstcharacter firstcounter firstcountervalue firstinlist firstoffivearguments \
+firstoffourarguments firstofoneargument firstofoneunexpanded firstofsixarguments firstofthreearguments \
+firstofthreeunexpanded firstoftwoarguments firstoftwounexpanded firstrealpage firstrealpagenumber \
+firstsubcountervalue firstsubpage firstsubpagenumber firstuserpage firstuserpagenumber \
+fitfield fitfieldframed fittopbaselinegrid fiveeighths fivesixths \
+fixedspace fixedspaces flag flat flligature \
+floatuserdataparameter flushbox flushboxregister flushcollector flushedrightlastline \
+flushlayer flushlocalfloats flushnextbox flushnotes flushoutputstream \
+flushshapebox flushtextflow flushtokens flushtoks fontalternative \
+fontbody fontchar fontcharbyindex fontclass fontclassname \
+fontface fontfeaturelist fontsize fontstyle footnote \
+footnotetext forall forcecharacterstripping forcelocalfloats forgeteverypar \
+forgetparagraphfreezing forgetparameters forgetparskip forgetparwrapper forgetragged \
+formula formulanumber foundbox fourfifths fourperemspace \
+fourthoffivearguments fourthoffourarguments fourthofsixarguments frac framed \
+frameddimension framedparameter framedtext freezedimenmacro freezemeasure \
+freezeparagraphproperties frenchspacing from fromlinenote frown \
+frozenhbox frule gacute gamma gbreve \
+gcaron gcircumflex gcommaaccent gdefconvertedargument gdefconvertedcommand \
+gdotaccent ge geq geqq geqslant \
+getMPdrawing getMPlayer getboxfromcache getboxllx getboxlly \
+getbuffer getbufferdata getcommacommandsize getcommalistsize getdatavalue \
+getdayoftheweek getdayspermonth getdefinedbuffer getdocumentargument getdocumentargumentdefault \
+getdocumentfilename getdummyparameters getemptyparameters geteparameters getexpandedparameters \
+getfiguredimensions getfirstcharacter getfirsttwopassdata getfromcommacommand getfromcommalist \
+getfromluatable getfromtwopassdata getglyphdirect getglyphstyled getgparameters \
+getinlineuserdata getlasttwopassdata getlocalfloat getlocalfloats getmarking \
+getmessage getnamedglyphdirect getnamedglyphstyled getnamedtwopassdatalist getnaturaldimensions \
+getnoflines getobject getobjectdimensions getpaletsize getparameters \
+getparwrapper getprivatechar getprivateslot getrandomcount getrandomdimen \
+getrandomfloat getrandomnumber getrandomseed getraweparameters getrawgparameters \
+getrawnoflines getrawparameters getrawxparameters getreference getreferenceentry \
+getroundednoflines gets getsubstring gettokenlist gettwopassdata \
+gettwopassdatalist getuserdata getuvalue getvalue getvariable \
+getvariabledefault getxparameters gg ggg gggtr \
+gimel globaldisablemode globalenablemode globalletempty globalpopbox \
+globalpopmacro globalpreventmode globalprocesscommalist globalpushbox globalpushmacro \
+globalswapcounts globalswapdimens globalswapmacros globalundefine glyphfontfile \
+gnapprox gneqq gnsim gobbledoubleempty gobbleeightarguments \
+gobblefivearguments gobblefiveoptionals gobblefourarguments gobblefouroptionals gobbleninearguments \
+gobbleoneargument gobbleoneoptional gobblesevenarguments gobblesingleempty gobblesixarguments \
+gobblespacetokens gobbletenarguments gobblethreearguments gobblethreeoptionals gobbletwoarguments \
+gobbletwooptionals gobbleuntil gobbleuntilrelax godown goto \
+gotobox gotopage grabbufferdata grabbufferdatadirect grabuntil \
+grave graycolor grayvalue greedysplitstring greekAlpha \
+greekAlphadasia greekAlphadasiaperispomeni greekAlphadasiatonos greekAlphadasiavaria greekAlphaiotasub \
+greekAlphaiotasubdasia greekAlphaiotasubdasiaperispomeni greekAlphaiotasubdasiatonos greekAlphaiotasubdasiavaria greekAlphaiotasubpsili \
+greekAlphaiotasubpsiliperispomeni greekAlphaiotasubpsilitonos greekAlphaiotasubpsilivaria greekAlphamacron greekAlphapsili \
+greekAlphapsiliperispomeni greekAlphapsilitonos greekAlphapsilivaria greekAlphatonos greekAlphavaria \
+greekAlphavrachy greekBeta greekChi greekCoronis greekDelta \
+greekEpsilon greekEpsilondasia greekEpsilondasiatonos greekEpsilondasiavaria greekEpsilonpsili \
+greekEpsilonpsilitonos greekEpsilonpsilivaria greekEpsilontonos greekEpsilonvaria greekEta \
+greekEtadasia greekEtadasiaperispomeni greekEtadasiatonos greekEtadasiavaria greekEtaiotasub \
+greekEtaiotasubdasia greekEtaiotasubdasiaperispomeni greekEtaiotasubdasiatonos greekEtaiotasubdasiavaria greekEtaiotasubpsili \
+greekEtaiotasubpsiliperispomeni greekEtaiotasubpsilitonos greekEtaiotasubpsilivaria greekEtapsili greekEtapsiliperispomeni \
+greekEtapsilitonos greekEtapsilivaria greekEtatonos greekEtavaria greekGamma \
+greekIota greekIotadasia greekIotadasiaperispomeni greekIotadasiatonos greekIotadasiavaria \
+greekIotadialytika greekIotamacron greekIotapsili greekIotapsiliperispomeni greekIotapsilitonos \
+greekIotapsilivaria greekIotatonos greekIotavaria greekIotavrachy greekKappa \
+greekLambda greekMu greekNu greekOmega greekOmegadasia \
+greekOmegadasiaperispomeni greekOmegadasiatonos greekOmegadasiavaria greekOmegaiotasub greekOmegaiotasubdasia \
+greekOmegaiotasubdasiaperispomeni greekOmegaiotasubdasiatonos greekOmegaiotasubdasiavaria greekOmegaiotasubpsili greekOmegaiotasubpsiliperispomeni \
+greekOmegaiotasubpsilitonos greekOmegaiotasubpsilivaria greekOmegapsili greekOmegapsiliperispomeni greekOmegapsilitonos \
+greekOmegapsilivaria greekOmegatonos greekOmegavaria greekOmicron greekOmicrondasia \
+greekOmicrondasiatonos greekOmicrondasiavaria greekOmicronpsili greekOmicronpsilitonos greekOmicronpsilivaria \
+greekOmicrontonos greekOmicronvaria greekPhi greekPi greekPsi \
+greekRho greekRhodasia greekSigma greekSigmalunate greekTau \
+greekTheta greekUpsilon greekUpsilondasia greekUpsilondasiaperispomeni greekUpsilondasiatonos \
+greekUpsilondasiavaria greekUpsilondialytika greekUpsilonmacron greekUpsilontonos greekUpsilonvaria \
+greekUpsilonvrachy greekXi greekZeta greekalpha greekalphadasia \
+greekalphadasiaperispomeni greekalphadasiatonos greekalphadasiavaria greekalphaiotasub greekalphaiotasubdasia \
+greekalphaiotasubdasiaperispomeni greekalphaiotasubdasiatonos greekalphaiotasubdasiavaria greekalphaiotasubperispomeni greekalphaiotasubpsili \
+greekalphaiotasubpsiliperispomeni greekalphaiotasubpsilitonos greekalphaiotasubpsilivaria greekalphaiotasubtonos greekalphaiotasubvaria \
+greekalphamacron greekalphaoxia greekalphaperispomeni greekalphapsili greekalphapsiliperispomeni \
+greekalphapsilitonos greekalphapsilivaria greekalphatonos greekalphavaria greekalphavrachy \
+greekbeta greekbetaalt greekchi greekdasia greekdasiaperispomeni \
+greekdasiavaria greekdelta greekdialytikaperispomeni greekdialytikatonos greekdialytikavaria \
+greekdigamma greekepsilon greekepsilonalt greekepsilondasia greekepsilondasiatonos \
+greekepsilondasiavaria greekepsilonoxia greekepsilonpsili greekepsilonpsilitonos greekepsilonpsilivaria \
+greekepsilontonos greekepsilonvaria greeketa greeketadasia greeketadasiaperispomeni \
+greeketadasiatonos greeketadasiavaria greeketaiotasub greeketaiotasubdasia greeketaiotasubdasiaperispomeni \
+greeketaiotasubdasiatonos greeketaiotasubdasiavaria greeketaiotasubperispomeni greeketaiotasubpsili greeketaiotasubpsiliperispomeni \
+greeketaiotasubpsilitonos greeketaiotasubpsilivaria greeketaiotasubtonos greeketaiotasubvaria greeketaoxia \
+greeketaperispomeni greeketapsili greeketapsiliperispomeni greeketapsilitonos greeketapsilivaria \
+greeketatonos greeketavaria greekfinalsigma greekgamma greekiota \
+greekiotadasia greekiotadasiaperispomeni greekiotadasiatonos greekiotadasiavaria greekiotadialytika \
+greekiotadialytikaperispomeni greekiotadialytikatonos greekiotadialytikavaria greekiotamacron greekiotaoxia \
+greekiotaperispomeni greekiotapsili greekiotapsiliperispomeni greekiotapsilitonos greekiotapsilivaria \
+greekiotatonos greekiotavaria greekiotavrachy greekkappa greekkoppa \
+greeklambda greekmu greeknu greeknumerals greeknumkoppa \
+greekomega greekomegadasia greekomegadasiaperispomeni greekomegadasiatonos greekomegadasiavaria \
+greekomegaiotasub greekomegaiotasubdasia greekomegaiotasubdasiaperispomeni greekomegaiotasubdasiatonos greekomegaiotasubdasiavaria \
+greekomegaiotasubperispomeni greekomegaiotasubpsili greekomegaiotasubpsiliperispomeni greekomegaiotasubpsilitonos greekomegaiotasubpsilivaria \
+greekomegaiotasubtonos greekomegaiotasubvaria greekomegaoxia greekomegaperispomeni greekomegapsili \
+greekomegapsiliperispomeni greekomegapsilitonos greekomegapsilivaria greekomegatonos greekomegavaria \
+greekomicron greekomicrondasia greekomicrondasiatonos greekomicrondasiavaria greekomicronoxia \
+greekomicronpsili greekomicronpsilitonos greekomicronpsilivaria greekomicrontonos greekomicronvaria \
+greekoxia greekperispomeni greekphi greekphialt greekpi \
+greekpialt greekprosgegrammeni greekpsi greekpsili greekpsiliperispomeni \
+greekpsilivaria greekrho greekrhoalt greekrhodasia greekrhopsili \
+greeksampi greeksigma greeksigmalunate greekstigma greektau \
+greektheta greekthetaalt greektonos greekupsilon greekupsilondasia \
+greekupsilondasiaperispomeni greekupsilondasiatonos greekupsilondasiavaria greekupsilondiaeresis greekupsilondialytikaperispomeni \
+greekupsilondialytikatonos greekupsilondialytikavaria greekupsilonmacron greekupsilonoxia greekupsilonperispomeni \
+greekupsilonpsili greekupsilonpsiliperispomeni greekupsilonpsilitonos greekupsilonpsilivaria greekupsilontonos \
+greekupsilonvaria greekupsilonvrachy greekvaria greekxi greekzeta \
+grid groupedcommand gsetboxllx gsetboxlly gstroke \
+gt gtrapprox gtrdot gtreqless gtreqqless \
+gtrless gtrsim guilsingleleft guilsingleright gujaratinumerals \
+gurmurkhinumerals hairline hairspace halflinestrut halfstrut \
+halfwaybox handletokens handwritten hangul hanzi \
+hash hat hbar hboxofvbox hboxreference \
+hcaron hcircumflex hdofstring headhbox headlanguage \
+headnumber headnumbercontent headnumberdistance headnumberwidth headreferenceattributes \
+headsetupspacing headtext headtextcontent headtextdistance headtexts \
+headtextwidth headvbox headwidth heartsuit hebrewAlef \
+hebrewAyin hebrewBet hebrewDalet hebrewGimel hebrewHe \
+hebrewHet hebrewKaf hebrewKaffinal hebrewLamed hebrewMem \
+hebrewMemfinal hebrewNun hebrewNunfinal hebrewPe hebrewPefinal \
+hebrewQof hebrewResh hebrewSamekh hebrewShin hebrewTav \
+hebrewTet hebrewTsadi hebrewTsadifinal hebrewVav hebrewYod \
+hebrewZayin hebrewnumerals heightanddepthofstring heightofstring heightspanningtext \
+helptext hexnumber hexstringtonumber hglue hiddenbar \
+hiddencitation hiddencite hideblocks high highlight \
+highordinalstr hilo himilo hl hookleftarrow \
+hookrightarrow horizontalgrowingbar horizontalpositionbar hpackbox hpackedbox \
+hphantom hpos hsizefraction hslash hsmash \
+hsmashbox hsmashed hspace hstroke htdpofstring \
+htofstring hyphen hyphenatedcoloredword hyphenatedfile hyphenatedfilename \
+hyphenatedhbox hyphenatedpar hyphenatedurl hyphenatedword iacute \
+ibox ibreve icaron icircumflex ideographichalffillspace \
+ideographicspace idiaeresis idotaccent idotbelow idoublegrave \
+idxfromluatable ifassignment iff ifinobject ifinoutputstream \
+ifparameters iftrialtypesetting ignoreimplicitspaces ignoretagsinexport ignorevalue \
+igrave ihook ii iiiint iiiintop \
+iiint iiintop iint iintop iinvertedbreve \
+ijligature imacron imaginaryi imaginaryj imath \
+immediatesavetwopassdata impliedby implies imply in \
+includemenu includesvgbuffer includesvgfile includeversioninfo increment \
+incrementcounter incrementedcounter incrementpagenumber incrementsubpagenumber incrementvalue \
+indentation index infofont infofontbold inframed \
+infty infull inheritparameter inhibitblank ininner \
+ininneredge ininnermargin initializeboxstack inleft inleftedge \
+inleftmargin inline inlinebuffer inlinedbox inlinemath \
+inlinemathematics inlinemessage inlineordisplaymath inlineprettyprintbuffer inlinerange \
+inmargin inmframed innerflushshapebox inother inouter \
+inouteredge inoutermargin input inputfilebarename inputfilename \
+inputfilerealsuffix inputfilesuffix inputgivenfile inright inrightedge \
+inrightmargin insertpages inspectluatable installactionhandler installactivecharacter \
+installanddefineactivecharacter installattributestack installautocommandhandler installautosetuphandler installbasicautosetuphandler \
+installbasicparameterhandler installbottomframerenderer installcommandhandler installcorenamespace installctxfunction \
+installctxscanner installdefinehandler installdefinitionset installdefinitionsetmember installdirectcommandhandler \
+installdirectparameterhandler installdirectparametersethandler installdirectsetuphandler installdirectstyleandcolorhandler installframedautocommandhandler \
+installframedcommandhandler installglobalmacrostack installlanguage installleftframerenderer installmacrostack \
+installnamespace installoutputroutine installpagearrangement installparameterhandler installparameterhashhandler \
+installparametersethandler installparentinjector installprotectedctxfunction installprotectedctxscanner installrightframerenderer \
+installrootparameterhandler installsetuphandler installsetuponlycommandhandler installshipoutmethod installsimplecommandhandler \
+installsimpleframedcommandhandler installstyleandcolorhandler installswitchcommandhandler installswitchsetuphandler installtexdirective \
+installtextracker installtopframerenderer installunitsseparator installunitsspace installversioninfo \
+int intclockwise integerrounding integers interactionbar \
+interactionbuttons interactionmenu intercal intertext interwordspaceafter \
+interwordspacebefore interwordspaces interwordspacesafter interwordspacesbefore intop \
+invisiblecomma invisibleplus invisibletimes invokepagehandler iogonek \
+iota italic italicbold italiccorrection italicface \
+item items itemtag itilde jcaron \
+jcircumflex ji jmath jobfilename jobfilesuffix \
+kap kappa kcaron kcommaaccent keepblocks \
+keeplinestogether keepunwantedspaces kerncharacters khook kkra \
+koreancirclenumerals koreannumerals koreannumeralsc koreannumeralsp koreanparentnumerals \
+lVert labellanguage labeltext labeltexts lacute \
+lambda lambdabar land langle language \
+languageCharacters languagecharacters languagecharwidth laplace lastcounter \
+lastcountervalue lastdigit lastlinewidth lastnaturalboxdp lastnaturalboxht \
+lastnaturalboxwd lastparwrapper lastpredefinedsymbol lastrealpage lastrealpagenumber \
+lastsubcountervalue lastsubpage lastsubpagenumber lasttwodigits lastuserpage \
+lastuserpagenumber lateluacode latin layeredtext layerheight \
+layerwidth lazysavetaggedtwopassdata lazysavetwopassdata lbar lbox \
+lbrace lbracket lcaron lceil lchexnumber \
+lchexnumbers lcommaaccent lcurl ldot ldotmiddle \
ldotp ldots le leadsto left \
leftaligned leftarrow leftarrowtail leftarrowtriangle leftbottombox \
leftbox leftdasharrow leftguillemot leftharpoondown leftharpoonup \
@@ -1231,44 +1231,46 @@ verticalpositionbar veryraggedcenter veryraggedleft veryraggedright vglue \
viewerlayer vl vpackbox vpackedbox vphantom \
vpos vsmash vsmashbox vsmashed vspace \
vspacing wcircumflex wdofstring wedge wedgeeq \
-weekday whitearrowupfrombar widegrave widehat widetilde \
-widthofstring widthspanningtext withoutpt word wordright \
-words wordtonumber wp wr writebetweenlist \
-writedatatolist writestatus writetolist xLeftarrow xLeftrightarrow \
-xRightarrow xdefconvertedargument xequal xfrac xhookleftarrow \
-xhookrightarrow xi xleftarrow xleftharpoondown xleftharpoonup \
-xleftrightarrow xleftrightharpoons xmapsto xmladdindex xmlafterdocumentsetup \
-xmlaftersetup xmlall xmlappenddocumentsetup xmlappendsetup xmlapplyselectors \
-xmlatt xmlattdef xmlattribute xmlattributedef xmlbadinclusions \
-xmlbeforedocumentsetup xmlbeforesetup xmlchainatt xmlchainattdef xmlchecknamespace \
-xmlcommand xmlconcat xmlconcatrange xmlcontext xmlcount \
-xmldefaulttotext xmldepth xmldirectives xmldirectivesafter xmldirectivesbefore \
-xmldisplayverbatim xmldoif xmldoifatt xmldoifelse xmldoifelseatt \
-xmldoifelseempty xmldoifelseselfempty xmldoifelsetext xmldoifelsevalue xmldoifnot \
-xmldoifnotatt xmldoifnotselfempty xmldoifnottext xmldoifselfempty xmldoiftext \
-xmlelement xmlfilter xmlfirst xmlflush xmlflushcontext \
-xmlflushdocumentsetups xmlflushlinewise xmlflushpure xmlflushspacewise xmlflushtext \
-xmlinclude xmlinclusion xmlinclusions xmlinfo xmlinjector \
-xmlinlineprettyprint xmlinlineprettyprinttext xmlinlineverbatim xmlinstalldirective xmllast \
-xmllastatt xmllastmatch xmllastpar xmlloadbuffer xmlloaddata \
-xmlloaddirectives xmlloadfile xmlloadonly xmlmain xmlmapvalue \
-xmlname xmlnamespace xmlnonspace xmlpar xmlparam \
-xmlpath xmlpos xmlposition xmlprependdocumentsetup xmlprependsetup \
-xmlprettyprint xmlprettyprinttext xmlprocessbuffer xmlprocessdata xmlprocessfile \
-xmlpure xmlraw xmlrefatt xmlregistereddocumentsetups xmlregisteredsetups \
-xmlregisterns xmlremapname xmlremapnamespace xmlremovedocumentsetup xmlremovesetup \
-xmlresetdocumentsetups xmlresetinjectors xmlresetsetups xmlsave xmlsetatt \
-xmlsetattribute xmlsetentity xmlsetfunction xmlsetinjectors xmlsetpar \
-xmlsetparam xmlsetsetup xmlsetup xmlshow xmlsnippet \
-xmlstrip xmlstripnolines xmlstripped xmlstrippednolines xmltag \
-xmltexentity xmltext xmltobuffer xmltobufferverbose xmltofile \
-xmlvalue xmlverbatim xrel xrightarrow xrightharpoondown \
-xrightharpoonup xrightleftharpoons xrightoverleftarrow xsplitstring xtriplerel \
-xtwoheadleftarrow xtwoheadrightarrow xxfrac xypos yacute \
-ycircumflex ydiaeresis ydotbelow yen ygrave \
-yhook yiddishnumerals ymacron ytilde zacute \
-zcaron zdotaccent zeronumberconversion zerowidthnobreakspace zerowidthspace \
-zeta zhook zstroke zwj zwnj
+weekday whitearrowupfrombar wideacute widebar widebreve \
+widecheck wideddot widedot widegrave widehat \
+widering widetilde widthofstring widthspanningtext withoutpt \
+word wordright words wordtonumber wp \
+wr writebetweenlist writedatatolist writestatus writetolist \
+xLeftarrow xLeftrightarrow xRightarrow xdefconvertedargument xequal \
+xfrac xhookleftarrow xhookrightarrow xi xleftarrow \
+xleftharpoondown xleftharpoonup xleftrightarrow xleftrightharpoons xmapsto \
+xmladdindex xmlafterdocumentsetup xmlaftersetup xmlall xmlappenddocumentsetup \
+xmlappendsetup xmlapplyselectors xmlatt xmlattdef xmlattribute \
+xmlattributedef xmlbadinclusions xmlbeforedocumentsetup xmlbeforesetup xmlchainatt \
+xmlchainattdef xmlchecknamespace xmlcommand xmlconcat xmlconcatrange \
+xmlcontext xmlcount xmldefaulttotext xmldepth xmldirectives \
+xmldirectivesafter xmldirectivesbefore xmldisplayverbatim xmldoif xmldoifatt \
+xmldoifelse xmldoifelseatt xmldoifelseempty xmldoifelseselfempty xmldoifelsetext \
+xmldoifelsevalue xmldoifnot xmldoifnotatt xmldoifnotselfempty xmldoifnottext \
+xmldoifselfempty xmldoiftext xmlelement xmlfilter xmlfirst \
+xmlflush xmlflushcontext xmlflushdocumentsetups xmlflushlinewise xmlflushpure \
+xmlflushspacewise xmlflushtext xmlinclude xmlinclusion xmlinclusions \
+xmlinfo xmlinjector xmlinlineprettyprint xmlinlineprettyprinttext xmlinlineverbatim \
+xmlinstalldirective xmllast xmllastatt xmllastmatch xmllastpar \
+xmlloadbuffer xmlloaddata xmlloaddirectives xmlloadfile xmlloadonly \
+xmlmain xmlmapvalue xmlname xmlnamespace xmlnonspace \
+xmlpar xmlparam xmlpath xmlpos xmlposition \
+xmlprependdocumentsetup xmlprependsetup xmlprettyprint xmlprettyprinttext xmlprocessbuffer \
+xmlprocessdata xmlprocessfile xmlpure xmlraw xmlrefatt \
+xmlregistereddocumentsetups xmlregisteredsetups xmlregisterns xmlremapname xmlremapnamespace \
+xmlremovedocumentsetup xmlremovesetup xmlresetdocumentsetups xmlresetinjectors xmlresetsetups \
+xmlsave xmlsetatt xmlsetattribute xmlsetentity xmlsetfunction \
+xmlsetinjectors xmlsetpar xmlsetparam xmlsetsetup xmlsetup \
+xmlshow xmlsnippet xmlstrip xmlstripnolines xmlstripped \
+xmlstrippednolines xmltag xmltexentity xmltext xmltobuffer \
+xmltobufferverbose xmltofile xmlvalue xmlverbatim xrel \
+xrightarrow xrightharpoondown xrightharpoonup xrightleftharpoons xrightoverleftarrow \
+xsplitstring xtriplerel xtwoheadleftarrow xtwoheadrightarrow xxfrac \
+xypos yacute ycircumflex ydiaeresis ydotbelow \
+yen ygrave yhook yiddishnumerals ymacron \
+ytilde zacute zcaron zdotaccent zeronumberconversion \
+zerowidthnobreakspace zerowidthspace zeta zhook zstroke \
+zwj zwnj
keywordclass.context.en=\
diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties
index c753551b9..ca8ab34ff 100644
--- a/context/data/scite/context/scite-context-data-tex.properties
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -25,112 +25,113 @@ Umathaxis Umathbotaccentvariant Umathchar Umathcharclass Umathchardef \
Umathcharfam Umathcharnum Umathcharnumdef Umathcharslot Umathclass \
Umathcode Umathcodenum Umathconnectoroverlapmin Umathdegreevariant Umathdelimiterovervariant \
Umathdelimiterpercent Umathdelimitershortfall Umathdelimiterundervariant Umathdenominatorvariant Umathdict \
-Umathdictdef Umathextrasubpreshift Umathextrasubprespace Umathextrasubshift Umathextrasubspace \
-Umathextrasuppreshift Umathextrasupprespace Umathextrasupshift Umathextrasupspace Umathflattenedaccentbasedepth \
-Umathflattenedaccentbaseheight Umathflattenedaccentbottomshiftdown Umathflattenedaccenttopshiftup Umathfractiondelsize Umathfractiondenomdown \
-Umathfractiondenomvgap Umathfractionnumup Umathfractionnumvgap Umathfractionrule Umathfractionvariant \
-Umathhextensiblevariant Umathlimitabovebgap Umathlimitabovekern Umathlimitabovevgap Umathlimitbelowbgap \
-Umathlimitbelowkern Umathlimitbelowvgap Umathlimits Umathnoaxis Umathnolimits \
-Umathnolimitsubfactor Umathnolimitsupfactor Umathnumeratorvariant Umathopenupdepth Umathopenupheight \
-Umathoperatorsize Umathoverbarkern Umathoverbarrule Umathoverbarvgap Umathoverdelimiterbgap \
-Umathoverdelimitervariant Umathoverdelimitervgap Umathoverlayaccentvariant Umathoverlinevariant Umathphantom \
-Umathpresubshiftdistance Umathpresupshiftdistance Umathprimeraise Umathprimeraisecomposed Umathprimeshiftdrop \
-Umathprimeshiftup Umathprimespaceafter Umathprimevariant Umathprimewidth Umathquad \
-Umathradicaldegreeafter Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern Umathradicalrule \
-Umathradicalvariant Umathradicalvgap Umathruledepth Umathruleheight Umathskeweddelimitertolerance \
-Umathskewedfractionhgap Umathskewedfractionvgap Umathsource Umathspaceafterscript Umathspacebeforescript \
-Umathstackdenomdown Umathstacknumup Umathstackvariant Umathstackvgap Umathsubscriptvariant \
-Umathsubshiftdistance Umathsubshiftdown Umathsubshiftdrop Umathsubsupshiftdown Umathsubsupvgap \
-Umathsubtopmax Umathsupbottommin Umathsuperscriptvariant Umathsupshiftdistance Umathsupshiftdrop \
-Umathsupshiftup Umathsupsubbottommax Umathtopaccentvariant Umathunderbarkern Umathunderbarrule \
-Umathunderbarvgap Umathunderdelimiterbgap Umathunderdelimitervariant Umathunderdelimitervgap Umathunderlinevariant \
-Umathuseaxis Umathvextensiblevariant Umathvoid Umathxscale Umathyscale \
-Umiddle Unosubprescript Unosubscript Unosuperprescript Unosuperscript \
-Uoperator Uover Uoverdelimiter Uoverwithdelims Uprimescript \
-Uradical Uright Uroot Ushiftedsubprescript Ushiftedsubscript \
-Ushiftedsuperprescript Ushiftedsuperscript Uskewed Uskewedwithdelims Ustack \
-Ustartdisplaymath Ustartmath Ustartmathmode Ustopdisplaymath Ustopmath \
-Ustopmathmode Ustyle Usubprescript Usubscript Usuperprescript \
-Usuperscript Uunderdelimiter Uvextensible adjustspacing adjustspacingshrink \
-adjustspacingstep adjustspacingstretch afterassigned aftergrouped aliased \
-alignmark alignmentcellsource alignmentwrapsource aligntab allcrampedstyles \
-alldisplaystyles allmathstyles allscriptscriptstyles allscriptstyles allsplitstyles \
-alltextstyles alluncrampedstyles atendofgroup atendofgrouped attribute \
-attributedef automaticdiscretionary automatichyphenpenalty automigrationmode autoparagraphmode \
-begincsname beginlocalcontrol beginmathgroup beginsimplegroup boundary \
-boxadapt boxanchor boxanchors boxattribute boxdirection \
-boxfreeze boxgeometry boxorientation boxrepack boxshift \
-boxsource boxtarget boxtotal boxxmove boxxoffset \
-boxymove boxyoffset catcodetable clearmarks copymathatomrule \
-copymathparent copymathspacing crampeddisplaystyle crampedscriptscriptstyle crampedscriptstyle \
-crampedtextstyle csstring currentloopiterator currentloopnesting currentmarks \
-defcsname detokenized dimensiondef dimexpression directlua \
-edefcsname efcode endlocalcontrol endmathgroup endsimplegroup \
-enforced etoks etoksapp etokspre everybeforepar \
-everymathatom everytab exceptionpenalty expand expandafterpars \
-expandafterspaces expandcstoken expanded expandedafter expandedloop \
-expandtoken explicitdiscretionary explicithyphenpenalty firstvalidlanguage flushmarks \
-fontcharta fontid fontmathcontrol fontspecdef fontspecid \
-fontspecifiedsize fontspecscale fontspecxscale fontspecyscale fonttextcontrol \
-formatname frozen futurecsname futuredef futureexpand \
-futureexpandis futureexpandisap gdefcsname gleaders glet \
-gletcsname glettonothing gluespecdef glyphdatafield glyphoptions \
-glyphscale glyphscriptfield glyphscriptscale glyphscriptscriptscale glyphstatefield \
-glyphtextscale glyphxoffset glyphxscale glyphxscaled glyphyoffset \
-glyphyscale glyphyscaled gtoksapp gtokspre hccode \
-hjcode hpack hyphenationmin hyphenationmode ifabsdim \
-ifabsnum ifarguments ifboolean ifchkdim ifchknum \
-ifcmpdim ifcmpnum ifcondition ifcstok ifdimexpression \
-ifdimval ifempty ifflags ifhaschar ifhastok \
-ifhastoks ifhasxtoks ifincsname ifinsert ifmathparameter \
-ifmathstyle ifnumexpression ifnumval ifparameter ifparameters \
-ifrelax iftok ignorearguments ignorepars immediate \
-immutable indexofcharacter indexofregister inherited initcatcodetable \
-insertbox insertcopy insertdepth insertdistance insertheight \
-insertheights insertlimit insertmaxdepth insertmode insertmultiplier \
-insertpenalty insertprogress insertstorage insertstoring insertunbox \
-insertuncopy insertwidth instance integerdef lastarguments \
-lastatomclass lastboundary lastchkdim lastchknum lastleftclass \
-lastloopiterator lastnamedcs lastnodesubtype lastpageextra lastparcontext \
-lastrightclass leftmarginkern letcharcode letcsname letfrozen \
-letmathatomrule letmathparent letmathspacing letprotected lettonothing \
-linebreakcriterium linedirection localbrokenpenalty localcontrol localcontrolled \
-localcontrolledloop localinterlinepenalty localleftbox localleftboxbox localmiddlebox \
-localmiddleboxbox localrightbox localrightboxbox lpcode luabytecode \
-luabytecodecall luacopyinputnodes luadef luaescapestring luafunction \
-luafunctioncall luatexbanner luatexrevision luatexversion mathaccent \
-mathatom mathatomglue mathatomskip mathbackwardpenalties mathbeginclass \
-mathcheckfencesmode mathdictgroup mathdictproperties mathdirection mathdisplaymode \
-mathdisplayskipmode mathdoublescriptmode mathendclass matheqnogapstep mathfenced \
-mathfontcontrol mathforwardpenalties mathfrac mathghost mathgluemode \
-mathgroupingmode mathinlinemainstyle mathleftclass mathlimitsmode mathmiddle \
-mathnolimitsmode mathpenaltiesmode mathrad mathrightclass mathrulesfam \
-mathrulesmode mathscale mathscriptsmode mathslackmode mathspacingmode \
-mathstackstyle mathstyle mathstylefontid mathsurroundmode mathsurroundskip \
-maththreshold mugluespecdef mutable noaligned noatomruling \
-noboundary nohrule norelax normalizelinemode normalizeparmode \
-nospaces novrule numericscale numexpression orelse \
-orphanpenalties orphanpenalty orunless outputbox overloaded \
-overloadmode pageboundary pageextragoal pagevsize parametercount \
-parametermark parattribute pardirection permanent pettymuskip \
-postexhyphenchar posthyphenchar postinlinepenalty prebinoppenalty predisplaygapfactor \
-preexhyphenchar prehyphenchar preinlinepenalty prerelpenalty protrudechars \
-protrusionboundary pxdimen quitloop quitvmode resetmathspacing \
-retokenized rightmarginkern rpcode savecatcodetable scaledemwidth \
-scaledexheight scaledextraspace scaledinterwordshrink scaledinterwordspace scaledinterwordstretch \
-scaledmathstyle scaledslantperpoint scantextokens semiexpand semiexpanded \
-semiprotected setdefaultmathcodes setfontid setmathatomrule setmathdisplaypostpenalty \
-setmathdisplayprepenalty setmathignore setmathoptions setmathpostpenalty setmathprepenalty \
-setmathspacing shapingpenaltiesmode shapingpenalty skewed skewedwithdelims \
-snapshotpar supmarkmode swapcsvalues tabsize textdirection \
-thewithoutunit tinymuskip todimension tohexadecimal tointeger \
-tokenized toksapp tokspre tolerant tomathstyle \
-toscaled tosparsedimension tosparsescaled tpack tracingadjusts \
-tracingalignments tracingexpressions tracingfonts tracingfullboxes tracinghyphenation \
-tracinginserts tracinglevels tracingmarks tracingmath tracingnodes \
-tracingpenalties uleaders undent unexpandedloop unletfrozen \
-unletprotected untraced vpack wordboundary wrapuppar \
-xdefcsname xtoks xtoksapp xtokspre
+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
keywordclass.tex.omega=\
Omegaminorversion Omegarevision Omegaversion
@@ -149,16 +150,16 @@ pdflastlink pdflastobj pdflastxform pdflastximage pdflastximagepages \
pdflastxpos pdflastypos pdflinkmargin pdfliteral pdfmajorversion \
pdfmapfile pdfmapline pdfminorversion pdfnames pdfnoligatures \
pdfnormaldeviate pdfobj pdfobjcompresslevel pdfomitcharset pdfomitcidset \
-pdfoutline pdfoutput pdfpageattr pdfpagebox pdfpageheight \
-pdfpageref pdfpageresources pdfpagesattr pdfpagewidth pdfpkfixeddpi \
-pdfpkmode pdfpkresolution pdfprimitive pdfprotrudechars pdfpxdimen \
-pdfrandomseed pdfrecompress pdfrefobj pdfrefxform pdfrefximage \
-pdfreplacefont pdfrestore pdfretval pdfsave pdfsavepos \
-pdfsetmatrix pdfsetrandomseed pdfstartlink pdfstartthread pdfsuppressoptionalinfo \
-pdfsuppressptexinfo pdftexbanner pdftexrevision pdftexversion pdfthread \
-pdfthreadmargin pdftracingfonts pdftrailer pdftrailerid pdfuniformdeviate \
-pdfuniqueresname pdfvorigin pdfxform pdfxformattr pdfxformmargin \
-pdfxformname pdfxformresources pdfximage
+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
keywordclass.tex.tex=\
- / above \
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex b/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
index 686d1728f..1bbdebb09 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-fonts.tex
@@ -115,7 +115,7 @@ has no ligatures and kerns and is normally not processed at all.
\NC \type {depth} \NC number \NC depth in sp (default 0) \NC\NR
\NC \type {italic} \NC number \NC italic correction in sp (default 0) \NC\NR
\NC \type {topaccent} \NC number \NC top accent alignment place in sp (default zero) \NC\NR
-\NC \type {botaccent} \NC number \NC bottom accent alignment place, in sp (default zero) \NC\NR
+\NC \type {bottomaccent} \NC number \NC bottom accent alignment place, in sp (default zero) \NC\NR
\NC \type {leftprotruding} \NC number \NC left protruding factor (\prm {lpcode}) \NC\NR
\NC \type {rightprotruding} \NC number \NC right protruding factor (\prm {rpcode}) \NC\NR
\NC \type {expansion} \NC number \NC expansion factor (\prm {efcode}) \NC\NR
@@ -159,9 +159,9 @@ virtual character whose ligatures and kerns are used to handle word boundary
processing. \type {rightboundary} is similar but not actually used for anything
(yet).
-The values of \type {topaccent}, \type {botaccent} and \type {mathkern} are used
-only for math accent and superscript placement, see \at {page} [math] in this
-manual for details. The values of \type {leftprotrusion} and \type
+The values of \type {topaccent}, \type {bottomaccent} and \type {mathkern} are
+used only for math accent and superscript placement, see \at {page} [math] in
+this manual for details. The values of \type {leftprotrusion} and \type
{rightprotrusion} are used only when \prm {protrudechars} is non-zero. Whether or
not \type {expansion} is used depends on the font's global expansion settings, as
well as on the value of \prm {adjustspacing}.
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
index 2bfffb64c..1b26c1ad1 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-math.tex
@@ -321,11 +321,16 @@ The unaltered ones are:
\LL
\stoptabulate
+% In \LUATEX\ we support the single number primitives *with \type {num} in their
+% name) conforming the \XETEX\ method. For the moment that still works but you need
+% to figure out the number yourself. The split number variants are more future safe
+% with respect to classes and families. We don't document \prm {Umathcharnumdef},
+% \prm {Umathcharnum}, \prm {Umathcodenum} and \prm {Udelcodenum} here any longer.
+
In \LUATEX\ we support the single number primitives *with \type {num} in their
-name) conforming the \XETEX\ method. For the moment that still works but you need
-to figure out the number yourself. The split number variants are more future safe
-with respect to classes and families. We don't document \prm {Umathcharnumdef},
-\prm {Umathcharnum}, \prm {Umathcodenum} and \prm {Udelcodenum} here any longer.
+name) conforming the \XETEX\ method. These primitives have been dropped in
+\LUAMETATEX\ because we use different ranges and properties, so these numbers
+have no (stable) meaning.
\starttabulate[|l|l|c|c|c|]
\DB primitive \BC \BC class \BC family \BC character \NC \NR
@@ -777,7 +782,7 @@ with are no longer hard coded but can be set at runtime:
\NC \prm {Umathdegreevariant} \NC doublesuperscript \NC \NR
\NC \prm {Umathaccentvariant} \NC cramped \NC \NR
\NC \prm {Umathtopaccentvariant} \NC cramped \NC \NR
-\NC \prm {Umathbotaccentvariant} \NC cramped \NC \NR
+\NC \prm {Umathbottomaccentvariant} \NC cramped \NC \NR
\NC \prm {Umathoverlayaccentvariant} \NC cramped \NC \NR
\NC \prm {Umathnumeratorvariant} \NC numerator \NC \NR
\NC \prm {Umathdenominatorvariant} \NC denominator \NC \NR
@@ -1935,6 +1940,25 @@ font metrics are involved we have a different code path for traditional fonts en
\stopsubsection
+\startsubsection[title={Fractions and the new \prm {Ustretched} and \prm {Ustretchedwithdelims}}]
+
+\topicindex {math+fractions}
+
+These commands are similar the regular rule separated fractions but expect a delimiter
+that then will be used instead. This permits for instance the use of horizontal
+extensible arrows. When no extensible is possible (this is a font property) the given
+glyph is centered.
+
+Normally one will pass a specific delimiter and not a character, if only because
+these come from the non \ASCII\ ranges:
+
+\starttyping
+{ \Ustretched <delimiter> <options> {1} {2} }
+{ \Ustretchedwithdelims <delimiter> () <options> {1} {2} }
+\stoptyping
+
+\stopsubsection
+
\startsubsection[title={Fractions and the new \prm {Uskewed} and \prm {Uskewedwithdelims}}]
\topicindex {math+fractions}
@@ -1958,8 +1982,8 @@ rendering. Of course a user can also mess around a bit with the parameters
The syntax used here is:
\starttyping
-{ {1} \Uskewed / <options> {2} }
-{ {1} \Uskewedwithdelims / () <options> {2} }
+{ \Uskewed / <options> {1} {2} }
+{ \Uskewedwithdelims / () <options> {1} {2} }
\stoptyping
where the options can be \type {noaxis} and \type {exact}. By default we add half
@@ -1999,10 +2023,6 @@ For Latin Modern the result looks as follows:
\stoptabulate
\stop
-For good old times we also have \prm {skewed} and \prm {skewedwithdelims}
-although it is unlikely that one will notice as it only makes sense in the
-updated approach.
-
The \type {\over} and related primitives have the form:
\starttyping
@@ -2025,10 +2045,8 @@ The optional arguments are also supported but we have one extra option: \type
The complete list of these commands is: \prm {Uabove}, \prm {Uatop}, \prm
{Uover}, \prm {Uabovewithdelims}, \prm {Uatopwithdelims}, \prm {Uoverwithdelims},
-\prm {UUskewed}, \prm {UUskewedwithdelims}. As with other extensions we use a
-leading \type {U} and because we already had extra skew related primitives we end
-up with a \type {UU} there. This obscurity is not that big an issue because
-normally such primitives are wrapped in a macro. Here are a few examples:
+\prm {Uskewed}, \prm {Uskewedwithdelims}. As with other extensions we use a
+leading \type {U}. Here are a few examples:
\startbuffer
$\Uover { 1234} { 5678} $\quad
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex b/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
index 8908df6ba..c18a2bc48 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-modifications.tex
@@ -58,12 +58,13 @@ because we carry around more information.
\stopsubsection
-\startsubsection[title=Changes from \TEX\ 3.1415926...]
+\startsubsection[title={Original \TEX}]
\topicindex {\TEX}
-Of course it all starts with traditional \TEX. Even if we started with \PDFTEX,
-most still comes from original Knuthian \TEX. But we divert a bit.
+Of course it all starts with traditional \TEX. Even if we started with the
+\PDFTEX\ code base, most still comes from original Knuthian \TEX. But we divert a
+bit.
\startitemize
@@ -86,29 +87,40 @@ most still comes from original Knuthian \TEX. But we divert a bit.
\stopitem
\startitem
- See \in {chapter} [languages] for many small changes related to paragraph
- building, language handling and hyphenation. The most important change is
- that adding a brace group in the middle of a word (like in \type {of{}fice})
- does not prevent ligature creation. Also, the hyphenation, ligature building
- and kerning has been split so that we can hook in alternative or extra code
- wherever we like. There are various options to control discretionary
- injection and related penalties are now integrated in these nodes. Language
- information is now bound to glyphs. The number of languages in \LUAMETATEX\
- is smaller than in \LUATEX. Control over discretionaries is more granular and
- now managed by less variables.
+ See \in {chapter} [languages] for quite some changes related to paragraph
+ building, language handling and hyphenation. Because we have independent runs
+ over the node list for hyphenation, kerning, ligature building, plus
+ callbacks that also can tweak the list, adding a brace group in the middle of
+ a word (like in \type {of{}fice}) does not prevent ligature creation. In
+ fact, preventing kerns and ligatures can now be done with glyph options so
+ that we don't depend on side effects of the engine. Because hyphenation,
+ ligature building and kerning has been split so that we can hook in
+ alternative or extra code wherever we like. There are various options to
+ control discretionary injection and related penalties are now integrated in
+ these nodes. Language information is now bound to glyphs. The number of
+ languages in \LUAMETATEX\ is smaller than in \LUATEX. Control over
+ discretionaries is more granular and now managed by less variables. Although
+ \LUAMETATEX\ behaves pretty much like you expect from \TEX, due to the many
+ possibilities it is unlikely that you get identical output.
\stopitem
\startitem
There is no pool file, all strings are embedded during compilation. This also
removed some memory constraints. We kept token and node memory management
because it is convenient and efficient but parts were reimplemented in order
- to remove some constraints. Token memory management is largely the same. All
- the other large memory structures, like those related to nesting, the save
- stack, input levels, the hash table and table of equivalents, etc. now all
- start out small and are enlarged when needed, where maxima are controlled in
- the usual way. In principle the initial memory footprint is smaller while at
- the same time we can go real large. Because we have wide memory words some
- data (arrays) used for housekeeping could be reorganized a bit.
+ to remove some constraints. Token and node memory management is a bit more
+ efficient which was needed because we carry around more information. All the
+ other large memory structures, like those related to nesting, the save stack,
+ input levels, the hash table and table of equivalents, etc. now all start out
+ small and are enlarged when needed, where maxima are controlled in the usual
+ way. In principle the initial memory footprint is smaller while at the same
+ time we can go real large. Because we have wide memory words some data
+ (arrays) used for housekeeping could be reorganized a bit.
+\stopitem
+
+\startitem
+ The macro (definition and expansion) parsers are extended and we can have more
+ detailed argument parsing. This has been done in a way that keeps compatibility.
\stopitem
\startitem
@@ -138,12 +150,25 @@ most still comes from original Knuthian \TEX. But we divert a bit.
There is more control over some (formerly hard|-|coded) math properties. In
fact, there is a whole extra bit of math related code because we need to deal
with \OPENTYPE\ fonts. The math processing has been adapted to the new
- (dynamic) font and glyph scaling features.
+ (dynamic) font and glyph scaling features. Because there is more granular
+ control, for instance because there are more classes, the engine has to be
+ set up differently. This is also true for features that control how for
+ instance math fonts are processed. An intermediate, improved, variant of the
+ \LUATEX\ dual code path approach has been sacrificed in the process.
+\stopitem
+
+\startitem
+ Math atoms and constructs like fractions, fences, radicals and accents have
+ all been extended. The new variants accept all kind of keywords that control
+ the rendering. As direct consequence noads (and nodes in general) are much
+ bigger in terms of memory usage. For now we keep the old commands available
+ but that might change when we see no eight bit fonts being used.
\stopitem
\startitem
- The \type {\outer} and \type {\long} prefixed are silently ignored. It is
- permitted to use \type {\par} in math.
+ The \prm {outer} and \prm {long} prefixed are silently ignored but other
+ prefixes have been added. It is permitted to use \prm {par} in math and
+ there are more such convenience options.
\stopitem
\startitem
@@ -161,14 +186,19 @@ most still comes from original Knuthian \TEX. But we divert a bit.
\stopitemize
+There is much more to say here but at least this gives an idea of what you end up
+with if you move from traditional \TEX\ to \LUAMETATEX: a more complex but also
+more flexible system.
+
\stopsubsection
-\startsubsection[title=Changes from \ETEX\ 2.2]
+\startsubsection[title={Goodies from \ETEX}]
\topicindex {\ETEX}
-Being the de|-|facto standard extension of course we provide the \ETEX\
-features, but with a few small adaptations.
+Being the de|-|facto standard extension of course we provide the \ETEX\ features,
+but only those that make sense. We used version 2.2 which is basically the only
+version that was ever released.
\startitemize
@@ -181,14 +211,19 @@ features, but with a few small adaptations.
The \TEXXET\ extension is not present, so the primitives \type
{\TeXXeTstate}, \type {\beginR}, \type {\beginL}, \type {\endR} and \type
{\endL} are missing. Instead we used the \OMEGA|/|\ALEPH\ approach to
- directionality as starting point, albeit it has been changed quite a bit,
- so that we're probably not that far from \TEXXET.
+ directionality as starting point, albeit it has been changed quite a bit, so
+ that we're probably not that far from \TEXXET. In the end right to left
+ typesetting mostly boils down to marking regions in the node list and reverse
+ flushing these in the backend. The main addition that \OMEGA\ brought was the
+ initial paragraph node that stores the direction.
\stopitem
\startitem
Some of the tracing information that is output by \ETEX's \prm
- {tracingassigns} and \prm {tracingrestores} is not there. Also keep in mind
- that tracing doesn't involve what \LUA\ does.
+ {tracingassigns} and \prm {tracingrestores} is not there. Where \ETEX\ added
+ some tracing, \LUAMETATEX\ adds much more and also permits to set details.
+ Tracing is not compatible, if only because we have more complex nodes and do
+ more in all kind of mechanism.
\stopitem
\startitem
@@ -201,17 +236,22 @@ features, but with a few small adaptations.
Because we have more nodes, conditionals, etc.\ the \ETEX\ status related
variables are adapted to \LUAMETATEX: we use different \quote {constants},
but that should be no problem because any sane macro package uses
- abstraction.
+ abstraction. All these properties can be queried via \LUA.
\stopitem
\startitem
- The \type {\scantokens} primitive is now using the same mechanism as \LUA\
+ The \prm {scantokens} primitive is now using the same mechanism as \LUA\
print|-|to|-|\TEX\ uses, which simplifies the code. There is a little
performance hit but it will not be noticed in \CONTEXT, because we never use
this primitive.
\stopitem
\startitem
+ The \ETEX\ engine provides \prm {protected} and although we have that too,
+ the implementation is different. Users should not notice that.
+\stopitem
+
+\startitem
Because we don't use change files on top of original \TEX, the integration of
\ETEX\ functionality is bit more natural, code wise.
\stopitem
@@ -230,28 +270,29 @@ features, but with a few small adaptations.
\stopsubsection
-\startsubsection[title=Changes from \PDFTEX\ 1.40]
+\startsubsection[title={Bits of \PDFTEX}]
\topicindex {\PDFTEX}
Because we want to produce \PDF\ the most natural starting point was the popular
-\PDFTEX\ program. We inherit the stable features, dropped most of the
-experimental code and promoted some functionality to core \LUATEX\ functionality
-which in turn triggered renaming primitives. However, as the backend was dropped,
-not that much from \PDFTEX\ is present any more. Basically all we now inherit
-from \PDFTEX\ is expansion and protrusion but even that has been adapted. So
-don't expect \LUAMETATEX\ to be compatible.
+\PDFTEX\ program, so we took version 1.40. We inherit the stable features,
+dropped most of the experimental code and promoted some functionality to core
+\LUATEX\ functionality which in turn triggered renaming primitives. However, as
+the backend was dropped, not that much from \PDFTEX\ is present any more.
+Basically all we now inherit from \PDFTEX\ is expansion and protrusion but even
+that has been adapted. So don't expect \LUAMETATEX\ to be compatible.
\startitemize
\startitem
The experimental primitives \prm {ifabsnum} and \prm {ifabsdim} have been
- promoted to core primitives.
+ promoted to core primitives and became part of the much larger repertoire
+ of \LUAMETATEX\ conditionals. The primitives \prm {ifincsname} is also
+ inherited but has a different implementation.
\stopitem
\startitem
- The primitives \prm {ifincsname}, \prm {expanded} and \prm {quitvmode}
- have become core primitives.
+ Of course \prm {quitvmode} has become a core primitive too.
\stopitem
\startitem
@@ -270,12 +311,14 @@ don't expect \LUAMETATEX\ to be compatible.
\stopitem
\startitem
- The hz optimization code has been partially redone so that we no longer need
- to create extra font instances. The front- and backend have been decoupled
- and the glyph and kern nodes carry the used values. In \LUATEX\ that made a
- more efficient generation of \PDF\ code possible. It also resulted in much
- cleaner code. The backend code is gone, but of course the information is
- still carried around.
+ The hz optimization code has been redone so that we no longer need to create
+ extra font instances. The front- and backend have been decoupled and the
+ glyph and kern nodes carry the used values. In \LUATEX\ that made a more
+ efficient generation of \PDF\ code possible. It also resulted in much cleaner
+ code. The backend code is gone, but of course the information is still
+ carried around. Performance in \LUAMETATEX\ should be a bit better than in
+ \PDFTEX\ although of course its 32 bit machinery is in general slower than
+ the eight bit \PDFTEX.
\stopitem
\startitem
@@ -301,19 +344,33 @@ don't expect \LUAMETATEX\ to be compatible.
to the backend.
\stopitem
+\startitem
+ The image inclusion code was already different in \LUATEX\ and is gone in
+ \LUAMETATEX\ which has no backend. One can implement the same abstraction
+ layer (aka resouces) using \LUA.
+\stopitem
+
\stopitemize
+Even if not that much is present from \PDFTEX\ in \LUAMETATEX\ we still see it as
+its ancestor. After all, without \PDFTEX\ the \TEX\ community would not be where
+it is now. We still use it as reference when we check something (that we
+changed).
+
\stopsubsection
-\startsubsection[title=Changes from \ALEPH\ RC4]
+\startsubsection[title=Direcionality from \ALEPH]
\topicindex {\ALEPH}
-In \LUATEX\ we took the 32 bit aspects and much of the directional mechanisms and
-merged it into the \PDFTEX\ code base as starting point for further development.
-Then we simplified directionality, fixed it and opened it up. In \LUAMETATEX\ not
-that much of the later is left. We only have two horizontal directions. Instead
-of vertical directions we introduce an orientation model bound to boxes.
+In \LUATEX\ we took the 32 bit aspects of \ALEPH\ RC4, the stable version of
+\OMEGA\ that also integrated \ETEX. In \LUATEX\ we also took much of the
+directional mechanisms and merged it into the \PDFTEX\ code base as starting
+point for further development. Then we simplified directionality, fixed it and
+opened it up. In \LUAMETATEX\ not that much of this is left. We only have two
+horizontal directions. Instead of vertical directions we introduce an orientation
+model bound to boxes. We kept the initial par node, local boxes (that also use
+par nodes) and directional nodes.
The already reduced|-|to|-|four set of directions now only has two members:
left|-|to|-|right and right|-|to|-|left. They don't do much as it is the backend
@@ -333,7 +390,8 @@ Here is a summary of inherited functionality:
for the \type {^^} case but the four and six variants do no backtracking,
i.e.\ when they are not followed by the right number of hexadecimal digits
they issue an error message. Because \type {^^^} is a normal \TEX\ case, we
- don't support the odd number of \type {^^^^^} either.
+ don't support the odd number of \type {^^^^^} either. This kind of parsing
+ can be disabled in \LUAMETATEX.
\stopitem
\startitem
@@ -353,11 +411,22 @@ Here is a summary of inherited functionality:
take a number. The three letter codes are dropped.
\stopitem
+\startitem
+ The local box mechamism has been extended and redone which permits a more
+ generalized and robust usage.
+\stopitem
+
\stopitemize
+Most of the directional work is actually up to the backend. As \OMEGA\ never had
+a \PDF\ backend, the \LUATEX\ took care of the many directions. We now only have
+two directions so the backend code that has to be provided can be relatively
+simple. The biggest complication is in handling fonts and synchronizing the glyph
+streams. Much is also macro package (and usage) dependent.
+
\stopsubsection
-\startsubsection[title=Changes from standard \WEBC]
+\startsubsection[title={No longer \WEBC}]
\topicindex {\WEBC}
@@ -367,18 +436,29 @@ traces but eventually the code base should be lean and mean. The \METAPOST\
library is coded in \CWEB\ and in order to be independent from related tools,
conversion to \CCODE\ is done with a \LUA\ script ran by, surprise, \LUAMETATEX.
+The biggest consequence of this is that there are no dependencies, also not on
+ever changing libraries that we occasionally see break compilation of \LUATEX.
+Even on older machines (say 2013\endash2020) compilation should be sub minute.
+The amount of platform specific code is minimal.
+
\stopsubsection
-\startsubsection[title=Changes from \LUATEX\ 1.10]
+\startsubsection[title={The follow up on \LUATEX}]
\topicindex {\LUATEX}
This engine is a follow up on \LUATEX, that became more or less frozen after
-version 1.10. Apart from reorganizing the code base, simplifying the build,
-limiting dependencies etc.\ this project also adds new functionality and removes
-some as well. The main differences are discussed in a separate section. The basic
-ideas remain the same but the engine is not downward compatible. This is why we
-have \CONTEXT\ \MKIV\ for \LUATEX\ and \CONTEXT\ \LMTX\ for \LUAMETATEX .
+version 1.10, so that is the version we started from. Apart from reorganizing the
+code base, simplifying the build, limiting dependencies etc.\ this project also
+adds new functionality and removes some as well. The main differences are
+discussed in a separate section. The basic ideas remain the same but the engine
+is not downward compatible. This is why we have \CONTEXT\ \MKIV\ for \LUATEX\ and
+\CONTEXT\ \LMTX\ for \LUAMETATEX .
+
+There is no \LUAJIT\ version of \LUAMETATEX, simply because there is not that
+much gain in the average run (at least not in \CONTEXT. Depending on the kind of
+documents, complexity of macro code and usage of \LUA, the \LUAMETATEX\ engine
+can be upto 30\percent\ faster than \LUATEX\ anyway.
\stopsubsection
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
index f575700de..3fe330295 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex-nodes.tex
@@ -729,13 +729,13 @@ Accent nodes deal with stuff on top or below a math constructs. They support:
\starttabulate[|l|l|p|]
\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{subtype} \NC number \NC \showsubtypes{accent} \NC \NR
-\NC \type{nucleus} \NC kernel node \NC base \NC \NR
-\NC \type{sub} \NC kernel node \NC subscript \NC \NR
-\NC \type{sup} \NC kernel node \NC superscript \NC \NR
-\NC \type{topaccent} \NC kernel node \NC top accent \NC \NR
-\NC \type{botaccent} \NC kernel node \NC bottom accent \NC \NR
-\NC \type{fraction} \NC number \NC larger step criterium (divided by 1000) \NC \NR
+\NC \type{subtype} \NC number \NC \showsubtypes{accent} \NC \NR
+\NC \type{nucleus} \NC kernel node \NC base \NC \NR
+\NC \type{sub} \NC kernel node \NC subscript \NC \NR
+\NC \type{sup} \NC kernel node \NC superscript \NC \NR
+\NC \type{topaccent} \NC kernel node \NC top accent \NC \NR
+\NC \type{bottomaccent} \NC kernel node \NC bottom accent \NC \NR
+\NC \type{fraction} \NC number \NC larger step criterium (divided by 1000) \NC \NR
\LL
\stoptabulate
@@ -824,22 +824,22 @@ Fraction nodes are also used for delimited cases, hence the \type {left} and
\type {right} fields among: \showfields {fraction}.
\starttabulate[|l|l|p|]
-\DB field \BC type \BC explanation \NC \NR
+\DB field \BC type \BC explanation \NC \NR
\TB
-\NC \type{attr} \NC node \NC list of attributes \NC \NR
-\NC \type{width} \NC number \NC (optional) width of the fraction \NC \NR
-\NC \type{num} \NC kernel node \NC numerator \NC \NR
-\NC \type{denom} \NC kernel node \NC denominator \NC \NR
-\NC \type{left} \NC delimiter node \NC left side symbol \NC \NR
-\NC \type{right} \NC delimiter node \NC right side symbol \NC \NR
-\NC \type{middle} \NC delimiter node \NC middle symbol \NC \NR
-\NC \type{options} \NC number \NC bitset of rendering options \NC \NR
+\NC \type{attr} \NC node \NC list of attributes \NC \NR
+\NC \type{width} \NC number \NC (optional) width of the fraction \NC \NR
+\NC \type{numerator} \NC kernel node \NC numerator \NC \NR
+\NC \type{denominator} \NC kernel node \NC denominator \NC \NR
+\NC \type{left} \NC delimiter node \NC left side symbol \NC \NR
+\NC \type{right} \NC delimiter node \NC right side symbol \NC \NR
+\NC \type{middle} \NC delimiter node \NC middle symbol \NC \NR
+\NC \type{options} \NC number \NC bitset of rendering options \NC \NR
\LL
\stoptabulate
-Warning: never assign a node list to the \type {num}, or \type {denom} field
-unless you are sure its internal link structure is correct, otherwise an error
-can result.
+Warning: never assign a node list to the \type {numerator}, or \type
+{denominator} field unless you are sure its internal link structure is correct,
+otherwise an error can result.
\stopsubsubsection
@@ -2251,6 +2251,7 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility.
\supported {getsub} \nop \yes \relax
\supported {getsuppre} \nop \yes \relax
\supported {getsup} \nop \yes \relax
+\supported {getprime} \nop \yes \relax
\supported {gettotal} \yes \yes \relax
%supported {getwhatever} \nop \yes \relax % experiment for myself
\supported {getwhd} \nop \yes \relax
@@ -2339,6 +2340,7 @@ emulated in \LUA\ and not in the engine, so we retain downward compatibility.
\supported {setsub} \nop \yes \relax
\supported {setsuppre} \nop \yes \relax
\supported {setsup} \nop \yes \relax
+\supported {setprime} \nop \yes \relax
\supported {setwhd} \nop \yes \relax
\supported {setwidth} \nop \yes \relax
\supported {slide} \nop \yes \yes
diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex
index 1cd368d0a..fcedbc6e1 100644
--- a/doc/context/sources/general/manuals/luametatex/luametatex.tex
+++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex
@@ -105,6 +105,8 @@
% \enableexperiments [tabulateusesize]
% \enableexperiments [tabulatesparseskips]
+\linebuffering
+
\enableexperiments[fonts.compact]
% \enabledirectives[fonts.injections.method=advance] % tricky ... not all xoffsets are advance robust
@@ -113,7 +115,7 @@
% \startluacode
% lpdf.setencryption {
% ownerpassword = "password",
-% userpassword = "",
+% userpassword = " ",
% permissions = "print,quality"
% }
% \stopluacode
diff --git a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
index 98f441c41..72b32908d 100644
--- a/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
+++ b/doc/context/sources/general/manuals/luatex/luatex-modifications.tex
@@ -666,6 +666,7 @@ The configuration related registers have become:
\edef\pdfgentounicode {\pdfvariable gentounicode}
\edef\pdfomitcidset {\pdfvariable omitcidset}
\edef\pdfomitcharset {\pdfvariable omitcharset}
+\edef\pdfomitinfodict {\pdfvariable omitinfodict}
\edef\pdfpagebox {\pdfvariable pagebox}
\edef\pdfminorversion {\pdfvariable minorversion}
\edef\pdfuniqueresname {\pdfvariable uniqueresname}
@@ -915,6 +916,7 @@ The engine sets the following defaults.
\pdfgentounicode 0
\pdfomitcidset 0
\pdfomitcharset 0
+\pdfomitinfodict 0
\pdfpagebox 0
\pdfminorversion 4
\pdfuniqueresname 0
diff --git a/doc/context/sources/general/manuals/math/math-fun.tex b/doc/context/sources/general/manuals/math/math-fun.tex
index baf74a261..e42911549 100644
--- a/doc/context/sources/general/manuals/math/math-fun.tex
+++ b/doc/context/sources/general/manuals/math/math-fun.tex
@@ -106,9 +106,9 @@ This gives:
\getbuffer
\stoplines
-The question is: do we need this and if so, what more do we need? Feel free to bing it up on
-the \CONTEXT\ mailing list. It anyway is a nice dmonstration of what can be done with the
-mix of languages.
+The question is: do we need this and if so, what more do we need? Feel free to
+bing it up on the \CONTEXT\ mailing list. It anyway is a nice demonstration of
+what can be done with the mix of languages.
% \stopsection
diff --git a/metapost/context/base/mpxl/mp-tool.mpxl b/metapost/context/base/mpxl/mp-tool.mpxl
index e77314439..7462b0ace 100644
--- a/metapost/context/base/mpxl/mp-tool.mpxl
+++ b/metapost/context/base/mpxl/mp-tool.mpxl
@@ -1799,8 +1799,8 @@ def mfun_draw_controlpoints text t =
% normaldraw postcontrol i of temp_c mfun_opt_ctr t ;
% endfor ;
for i within temp_c :
- normaldraw pathprecontrol t mfun_opt_pnt t ;
- normaldraw pathpostcontrol t mfun_opt_pnt t ;
+ normaldraw pathprecontrol t mfun_opt_ctr t ;
+ normaldraw pathpostcontrol t mfun_opt_ctr t ;
endfor ;
enddef;
@@ -1810,8 +1810,8 @@ def mfun_draw_controllines text t =
% normaldraw point i of temp_c -- postcontrol i of temp_c mfun_opt_lin t ;
% endfor ;
for i within temp_c :
- normaldraw pathpoint -- pathprecontrol t mfun_opt_pnt t ;
- normaldraw pathpoint -- pathpostcontrol t mfun_opt_pnt t ;
+ normaldraw pathpoint -- pathprecontrol t mfun_opt_lin t ;
+ normaldraw pathpoint -- pathpostcontrol t mfun_opt_lin t ;
endfor ;
enddef;
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 40172106d..8efea8d7d 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.05 17:16}
+\newcontextversion{2022.08.25 17:38}
%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 e7b236699..b3afcdf1a 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.05 17:16}
+\edef\contextversion{2022.08.25 17:38}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/lang-grk.mkii b/tex/context/base/mkii/lang-grk.mkii
index 9fd59382a..9ea252cfe 100644
--- a/tex/context/base/mkii/lang-grk.mkii
+++ b/tex/context/base/mkii/lang-grk.mkii
@@ -11,6 +11,8 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+% \endinput % something changed with greek but what
+
\writestatus{loading}{ConTeXt Language Macros / Greek}
%D The framework of this module is set up by Hans Hagen while
@@ -29,6 +31,11 @@
\c!rightquote=\greekrightquot,
\c!leftquotation=\greekleftquot,
\c!rightquotation=\greekrightquot,
+ % we're missing an encoding for greek
+ \s!patterns=\s!agr,
+ \s!mapping=\s!agr,
+ \s!encoding=\s!agr,
+ % but one can use mkiv / lmtx anyway
\c!date={\v!day\ \v!month\ \v!year}]
\installlanguage [greek] [\s!gr]
diff --git a/tex/context/base/mkii/mult-nl.mkii b/tex/context/base/mkii/mult-nl.mkii
index 235db7a1e..81d3f32f0 100644
--- a/tex/context/base/mkii/mult-nl.mkii
+++ b/tex/context/base/mkii/mult-nl.mkii
@@ -870,6 +870,7 @@
\setinterfaceconstant{frameradius}{kaderstraal}
\setinterfaceconstant{frames}{hokjes}
\setinterfaceconstant{freeregion}{vrijgebied}
+\setinterfaceconstant{freezespacing}{freezespacing}
\setinterfaceconstant{from}{van}
\setinterfaceconstant{functioncolor}{functioncolor}
\setinterfaceconstant{functionstyle}{functionstyle}
@@ -950,6 +951,7 @@
\setinterfaceconstant{lastpubsep}{lastpubsep}
\setinterfaceconstant{layout}{layout}
\setinterfaceconstant{left}{links}
+\setinterfaceconstant{leftclass}{leftclass}
\setinterfaceconstant{leftcolor}{linkerkleur}
\setinterfaceconstant{leftcompoundhyphen}{linkerkoppelteken}
\setinterfaceconstant{leftedge}{linkerrand}
@@ -1008,6 +1010,7 @@
\setinterfaceconstant{menu}{menu}
\setinterfaceconstant{method}{methode}
\setinterfaceconstant{middle}{midden}
+\setinterfaceconstant{middleclass}{middleclass}
\setinterfaceconstant{middlecolor}{middenkleur}
\setinterfaceconstant{middlecommand}{middencommando}
\setinterfaceconstant{middlesource}{middlesource}
@@ -1054,6 +1057,8 @@
\setinterfaceconstant{numberconversionset}{numberconversionset}
\setinterfaceconstant{numberdistance}{nummerafstand}
\setinterfaceconstant{numbering}{nummeren}
+\setinterfaceconstant{numberlocation}{numberlocation}
+\setinterfaceconstant{numbermethod}{nummermethode}
\setinterfaceconstant{numberorder}{numberorder}
\setinterfaceconstant{numberprefix}{numberprefix}
\setinterfaceconstant{numbersegments}{numbersegments}
@@ -1064,6 +1069,7 @@
\setinterfaceconstant{numberstopper}{numberstopper}
\setinterfaceconstant{numberstrut}{nummerstrut}
\setinterfaceconstant{numberstyle}{nummerletter}
+\setinterfaceconstant{numberthreshold}{numberthreshold}
\setinterfaceconstant{numberwidth}{nummerbreedte}
\setinterfaceconstant{nx}{nx}
\setinterfaceconstant{ny}{ny}
@@ -1117,6 +1123,7 @@
\setinterfaceconstant{palet}{palet}
\setinterfaceconstant{paper}{papier}
\setinterfaceconstant{paragraph}{alinea}
+\setinterfaceconstant{penalties}{penalties}
\setinterfaceconstant{period}{period}
\setinterfaceconstant{place}{plaatsen}
\setinterfaceconstant{placehead}{plaatskop}
@@ -1170,6 +1177,7 @@
\setinterfaceconstant{reverse}{omgekeerd}
\setinterfaceconstant{right}{rechts}
\setinterfaceconstant{rightchars}{rightchars}
+\setinterfaceconstant{rightclass}{rightclass}
\setinterfaceconstant{rightcolor}{rechterkleur}
\setinterfaceconstant{rightcompoundhyphen}{rechterkoppelteken}
\setinterfaceconstant{rightedge}{rechterrand}
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index 6449e085e..5325dc06e 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -456,7 +456,7 @@ characters.data={
direction="es",
linebreak="pr",
mathclass="binary",
- mathgroup="nary arithmic",
+ mathgroup="nary arithmetic",
unicodeslot=0x2B,
},
{
@@ -480,7 +480,7 @@ characters.data={
direction="es",
linebreak="hy",
mathclass="ordinary",
- mathgroup="binary arithmic",
+ mathgroup="binary arithmetic",
mathextensible="h",
mathfiller="relfill",
mathname="mathhyphen",
@@ -497,8 +497,16 @@ characters.data={
description="FULL STOP",
direction="cs",
linebreak="is",
- mathclass="punctuation",
- mathname="ldotp",
+ mathspec={
+ {
+ class="binary",
+ name="ldot",
+ },
+ {
+ class="punctuation",
+ name="ldotp",
+ },
+ },
synonyms={ "decimal point", "dot", "period" },
unicodeslot=0x2E,
},
@@ -511,6 +519,16 @@ characters.data={
direction="cs",
linebreak="sy",
mathclass="division",
+ mathspec={
+ {
+ class="division",
+ name="slash",
+ },
+ {
+ class="division",
+ name="solidus",
+ },
+ },
synonyms={ "slash", "virgule" },
unicodeslot=0x2F,
},
@@ -683,6 +701,7 @@ characters.data={
{
class="relation",
name="Relbar",
+ comment="useless",
},
},
unicodeslot=0x3D,
@@ -1028,13 +1047,14 @@ characters.data={
{
adobename="asciicircum",
category="sk",
+ comment="the Hat looks rediculous in most fonts",
cjkwd="na",
contextname="textasciicircum",
description="CIRCUMFLEX ACCENT",
direction="on",
linebreak="al",
- mathclass="topaccent",
- mathname="Hat",
+--mathclass="topaccent",
+--mathname="Hat",
synonyms={ "spacing circumflex accent" },
unicodeslot=0x5E,
},
@@ -1057,8 +1077,17 @@ characters.data={
description="GRAVE ACCENT",
direction="on",
linebreak="al",
- mathclass="topaccent",
- mathname="grave",
+ mathspec={
+ {
+ class="topaccent",
+ name="grave",
+ },
+ {
+ class="topaccent",
+ name="widegrave",
+ stretch="h",
+ },
+ },
synonyms={ "spacing grave accent" },
unicodeslot=0x60,
},
@@ -1347,11 +1376,12 @@ characters.data={
description="VERTICAL LINE",
direction="on",
linebreak="ba",
+ mathclass="ordinary",
mathspec={
- {
- class="ordinary",
- name="arrowvert",
- },
+-- {
+-- class="ordinary",
+-- name="arrowvert",
+-- },
{
class="delimiter",
name="vert",
@@ -1365,10 +1395,6 @@ characters.data={
name="rvert",
},
{
- class="relation",
- name="mid",
- },
- {
class="delimiter",
name="singleverticalbar",
},
@@ -1733,8 +1759,17 @@ characters.data={
description="DIAERESIS",
direction="on",
linebreak="ai",
- mathclass="topaccent",
- mathname="ddot",
+ mathspec={
+ {
+ class="topaccent",
+ name="ddot",
+ },
+ {
+ class="topaccent",
+ name="wideddot",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x308 },
synonyms={ "spacing diaeresis" },
unicodeslot=0xA8,
@@ -1824,10 +1859,20 @@ characters.data={
description="MACRON",
direction="on",
linebreak="al",
- mathclass="topaccent",
- mathfiller="barfill",
- mathmleq=0x203E,
- mathname="bar",
+--mathclass="topaccent",
+--mathfiller="barfill",
+--mathmleq=0x203E,
+ mathspec={
+ {
+ class="topaccent",
+ name="bar",
+ },
+ {
+ class="topaccent",
+ name="widebar",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x304 },
synonyms={ "apl overbar", "overline", "spacing macron" },
unicodeslot=0xAF,
@@ -1886,8 +1931,17 @@ characters.data={
description="ACUTE ACCENT",
direction="on",
linebreak="bb",
- mathclass="topaccent",
- mathname="acute",
+ mathspec={
+ {
+ class="topaccent",
+ name="acute",
+ },
+ {
+ class="topaccent",
+ name="wideacute",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x301 },
synonyms={ "spacing acute accent" },
unicodeslot=0xB4,
@@ -2304,7 +2358,7 @@ characters.data={
direction="on",
linebreak="ai",
mathclass="binary",
- mathgroup="nary arithmic",
+ mathgroup="nary arithmetic",
mathname="times",
synonyms={ "cartesian product" },
unicodeslot=0xD7,
@@ -2704,7 +2758,7 @@ characters.data={
direction="on",
linebreak="ai",
mathclass="binary",
- mathgroup="binary arithmic",
+ mathgroup="binary arithmetic",
mathname="div",
synonyms={ "obelus" },
unicodeslot=0xF7,
@@ -7650,8 +7704,17 @@ characters.data={
description="MODIFIER LETTER CIRCUMFLEX ACCENT",
direction="on",
linebreak="al",
- mathclass="topaccent",
- mathname="hat",
+ mathspec={
+ {
+ class="topaccent",
+ name="hat",
+ },
+ {
+ class="topaccent",
+ name="widehat",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x302 },
unicodeslot=0x2C6,
},
@@ -7664,8 +7727,17 @@ characters.data={
description="CARON",
direction="on",
linebreak="ai",
- mathclass="topaccent",
- mathname="check",
+ mathspec={
+ {
+ class="topaccent",
+ name="check",
+ },
+ {
+ class="topaccent",
+ name="widecheck",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x30C },
synonyms={ "mandarin chinese third tone", "modifier letter hacek" },
unicodeslot=0x2C7,
@@ -7814,8 +7886,17 @@ characters.data={
description="BREVE",
direction="on",
linebreak="ai",
- mathclass="topaccent",
- mathname="breve",
+ mathspec={
+ {
+ class="topaccent",
+ name="breve",
+ },
+ {
+ class="topaccent",
+ name="widebreve",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x306 },
unicodeslot=0x2D8,
},
@@ -7827,8 +7908,17 @@ characters.data={
description="DOT ABOVE",
direction="on",
linebreak="ai",
- mathclass="topaccent",
- mathname="dot",
+ mathspec={
+ {
+ class="topaccent",
+ name="dot",
+ },
+ {
+ class="topaccent",
+ name="widedot",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x307 },
synonyms={ "mandarin chinese fifth or neutral tone" },
unicodeslot=0x2D9,
@@ -7841,8 +7931,17 @@ characters.data={
description="RING ABOVE",
direction="on",
linebreak="ai",
- mathclass="topaccent",
- mathname="ring",
+ mathspec={
+ {
+ class="topaccent",
+ name="ring",
+ },
+ {
+ class="topaccent",
+ name="widering",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x30A },
unicodeslot=0x2DA,
},
@@ -7864,8 +7963,17 @@ characters.data={
description="SMALL TILDE",
direction="on",
linebreak="al",
- mathclass="topaccent",
- mathname="tilde",
+ mathspec={
+ {
+ class="topaccent",
+ name="tilde",
+ },
+ {
+ class="topaccent",
+ name="widetilde",
+ stretch="h",
+ },
+ },
specials={ "compat", 0x20, 0x303 },
unicodeslot=0x2DC,
},
@@ -8142,9 +8250,6 @@ characters.data={
description="COMBINING GRAVE ACCENT",
direction="nsm",
linebreak="cm",
- mathclass="topaccent",
- mathname="widegrave",
- mathstretch="h",
synonyms={ "greek varia" },
unicodeslot=0x300,
},
@@ -8167,9 +8272,6 @@ characters.data={
description="COMBINING CIRCUMFLEX ACCENT",
direction="nsm",
linebreak="cm",
- mathclass="topaccent",
- mathname="widehat",
- mathstretch="h",
unicodeslot=0x302,
},
{
@@ -8180,9 +8282,6 @@ characters.data={
description="COMBINING TILDE",
direction="nsm",
linebreak="cm",
- mathclass="topaccent",
- mathname="widetilde",
- mathstretch="h",
unicodeslot=0x303,
},
{
@@ -62286,7 +62385,8 @@ characters.data={
[0x2012]={
adobename="figuredash",
category="pd",
- contextname="textminus",
+ contextname="figuredash",
+ contextspec={ "textminus" },
description="FIGURE DASH",
direction="on",
linebreak="ba",
@@ -62842,16 +62942,6 @@ characters.data={
description="FRACTION SLASH",
direction="cs",
linebreak="is",
- mathspec={
- {
- class="ordinary",
- name="slash",
- },
- {
- class="close",
- name="solidus",
- },
- },
synonyms={ "solidus" },
unicodeslot=0x2044,
},
@@ -66995,7 +67085,7 @@ characters.data={
description="MINUS SIGN",
direction="es",
linebreak="pr",
- mathgroup="binary arithmic",
+ mathgroup="binary arithmetic",
mathspec={
{
class="binary",
@@ -67004,6 +67094,7 @@ characters.data={
{
class="relation",
name="relbar",
+ comment="useless",
},
},
unicodeslot=0x2212,
@@ -67194,8 +67285,17 @@ characters.data={
description="DIVIDES",
direction="on",
linebreak="ai",
- mathclass="binary",
- mathname="divides",
+ mathspec={
+ {
+ -- class="binary",
+ class="ordinary",
+ name="divides",
+ },
+ {
+ class="relation",
+ name="mid",
+ },
+ },
synonyms={ "apl stile", "such that" },
unicodeslot=0x2223,
},
@@ -67206,7 +67306,8 @@ characters.data={
linebreak="al",
mathspec={
{
- class="binary",
+ -- class="binary",
+ class="ordinary",
name="ndivides",
},
{
diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua
index 09c7994a9..9dcac8033 100644
--- a/tex/context/base/mkiv/char-ini.lua
+++ b/tex/context/base/mkiv/char-ini.lua
@@ -823,6 +823,7 @@ setmetatableindex(characters.is_command, mti)
setmetatableindex(characters.is_spacing, mti)
setmetatableindex(characters.is_punctuation,mti)
setmetatableindex(characters.is_hyphenator, mti)
+setmetatableindex(characters.is_symbol, mti)
-- todo: also define callers for the above
diff --git a/tex/context/base/mkiv/cldf-ver.lua b/tex/context/base/mkiv/cldf-ver.lua
index 7a1c81301..479606f83 100644
--- a/tex/context/base/mkiv/cldf-ver.lua
+++ b/tex/context/base/mkiv/cldf-ver.lua
@@ -68,8 +68,8 @@ local function flush(s,inline)
context.resetbuffer(t_buffer)
end
-local function t_tocontext(t)
- local s = table.serialize(t)
+local function t_tocontext(t,s)
+ local s = table.serialize(t,s)
context(function() flush(s,false) end)
end
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index e4a711f11..0fc2fe1d6 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.05 17:16}
+\newcontextversion{2022.08.25 17:38}
%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 664316e97..4125a151b 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.05 17:16}
+\edef\contextversion{2022.08.25 17:38}
%D Kind of special:
diff --git a/tex/context/base/mkiv/data-tex.lua b/tex/context/base/mkiv/data-tex.lua
index 2c1a7dbd5..42547b00b 100644
--- a/tex/context/base/mkiv/data-tex.lua
+++ b/tex/context/base/mkiv/data-tex.lua
@@ -175,9 +175,10 @@ local function textopener(tag,filename,filehandle,coding)
currentline = currentline + 1
-- self.currentline = currentline
local content = lines[currentline]
--- lines[currentline] = nil
+ -- lines[currentline] = false
if content == "" then
- return ""
+ -- return ""
+ return content
-- elseif content == ctrl_d or ctrl_z then
-- return nil -- we need this as \endinput does not work in prints
elseif content then
diff --git a/tex/context/base/mkiv/font-cff.lua b/tex/context/base/mkiv/font-cff.lua
index 4258991c6..114d7dd07 100644
--- a/tex/context/base/mkiv/font-cff.lua
+++ b/tex/context/base/mkiv/font-cff.lua
@@ -735,8 +735,13 @@ local result = { }
local seacs = { }
local procidx = nil
- local function showstate(where)
- report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ local function showstate(where,i,n)
+ if i then
+ local j = i + n - 1
+ report("%w%-10s : [%s] step",depth*2+2,where,concat(stack," ",i,j <= top and j or top))
+ else
+ report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ end
end
local function showvalue(where,value,showstack)
@@ -873,9 +878,9 @@ local result = { }
end
end
- local function xycurveto(x1,y1,x2,y2,x3,y3) -- called local so no blend here
+ local function xycurveto(x1,y1,x2,y2,x3,y3,i,n) -- called local so no blend here
if trace_charstrings then
- showstate("curveto")
+ showstate("curveto",i,n)
end
if keepcurve then
r = r + 1
@@ -1019,6 +1024,16 @@ local result = { }
if trace_charstrings then
showstate("rrcurveto")
end
+if top == 6 then
+ local ax = x + stack[1] -- dxa
+ local ay = y + stack[2] -- dya
+ local bx = ax + stack[3] -- dxb
+ local by = ay + stack[4] -- dyb
+ x = bx + stack[5] -- dxc
+ y = by + stack[6] -- dyc
+ xycurveto(ax,ay,bx,by,x,y,1,6)
+else
+-- print("rr",top==6,top)
for i=1,top,6 do
local ax = x + stack[i] -- dxa
local ay = y + stack[i+1] -- dya
@@ -1026,8 +1041,9 @@ local result = { }
local by = ay + stack[i+3] -- dyb
x = bx + stack[i+4] -- dxc
y = by + stack[i+5] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
+end
top = 0
end
@@ -1040,6 +1056,15 @@ local result = { }
y = y + stack[1] -- dy1
s = 2
end
+if top == 4 then
+ local ax = x + stack[1] -- dxa
+ local ay = y
+ local bx = ax + stack[2] -- dxb
+ local by = ay + stack[3] -- dyb
+ x = bx + stack[4] -- dxc
+ y = by
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=s,top,4 do
local ax = x + stack[i] -- dxa
local ay = y
@@ -1047,8 +1072,9 @@ local result = { }
local by = ay + stack[i+2] -- dyb
x = bx + stack[i+3] -- dxc
y = by
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top = 0
end
@@ -1062,6 +1088,16 @@ local result = { }
d = stack[1] -- dx1
s = 2
end
+if top == 4 then
+ local ax = x + d
+ local ay = y + stack[1] -- dya
+ local bx = ax + stack[2] -- dxb
+ local by = ay + stack[3] -- dyb
+ x = bx
+ y = by + stack[4] -- dyc
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+ d = 0
+else
for i=s,top,4 do
local ax = x + d
local ay = y + stack[i] -- dya
@@ -1069,9 +1105,10 @@ local result = { }
local by = ay + stack[i+2] -- dyb
x = bx
y = by + stack[i+3] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
d = 0
end
+end
top = 0
end
@@ -1080,6 +1117,33 @@ local result = { }
if last then
top = top - 1
end
+if top == 4 then
+ local ax, ay, bx, by
+ if swap then
+ ax = x + stack[1]
+ ay = y
+ bx = ax + stack[2]
+ by = ay + stack[3]
+ y = by + stack[4]
+ if last then
+ x = bx + last
+ else
+ x = bx
+ end
+ else
+ ax = x
+ ay = y + stack[1]
+ bx = ax + stack[2]
+ by = ay + stack[3]
+ x = bx + stack[4]
+ if last then
+ y = by + last
+ else
+ y = by
+ end
+ end
+ xycurveto(ax,ay,bx,by,x,y,1 ,4)
+else
for i=1,top,4 do
local ax, ay, bx, by
if swap then
@@ -1107,8 +1171,9 @@ local result = { }
end
swap = true
end
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top = 0
end
@@ -1137,7 +1202,7 @@ local result = { }
local by = ay + stack[i+3] -- dyb
x = bx + stack[i+4] -- dxc
y = by + stack[i+5] -- dyc
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
x = x + stack[top-1] -- dxc
y = y + stack[top] -- dyc
@@ -2531,7 +2596,7 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
end
end
else
- -- unsupported format
+ report("unsupported fd index format %i",format)
end
-- hm, always
if maxindex >= 0 then
@@ -2539,21 +2604,30 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
if cidarray then
setposition(f,header.offset+cidarray)
local dictionaries = readlengths(f,version == "cff2")
- for i=1,#dictionaries do
- dictionaries[i] = readstring(f,dictionaries[i])
- end
- parsedictionaries(data,dictionaries)
- cid.dictionaries = dictionaries
- readcidprivates(f,data)
- for i=1,#dictionaries do
- readlocals(f,data,dictionaries[i],version)
- end
- startparsing(fontdata,data,streams)
- for i=1,#charstrings do
- parsecharstring(fontdata,data,dictionaries[fdindex[i]+1],charstrings[i],glyphs,i,doshapes,version,streams)
--- charstrings[i] = nil
+ if #dictionaries > 0 then
+ for i=1,#dictionaries do
+ dictionaries[i] = readstring(f,dictionaries[i])
+ end
+ parsedictionaries(data,dictionaries)
+ cid.dictionaries = dictionaries
+ readcidprivates(f,data)
+ for i=1,#dictionaries do
+ readlocals(f,data,dictionaries[i],version)
+ end
+ startparsing(fontdata,data,streams)
+ for i=1,#charstrings do
+ local dictionary = dictionaries[fdindex[i]+1]
+ if dictionary then
+ parsecharstring(fontdata,data,dictionary,charstrings[i],glyphs,i,doshapes,version,streams)
+ else
+ -- report("no dictionary for %a : %a => %a",version,i,fdindex[i]+1)
+ end
+ -- charstrings[i] = false
+ end
+ stopparsing(fontdata,data)
+ else
+ report("no cid dictionaries")
end
- stopparsing(fontdata,data)
else
report("no cid array")
end
diff --git a/tex/context/base/mkiv/meta-imp-mat.mkiv b/tex/context/base/mkiv/meta-imp-mat.mkiv
index 79757b6a9..66ac33063 100644
--- a/tex/context/base/mkiv/meta-imp-mat.mkiv
+++ b/tex/context/base/mkiv/meta-imp-mat.mkiv
@@ -139,35 +139,35 @@
enddef ;
\stopMPextensions
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3B4}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3B4\else23B4\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_bracket_shape(OverlayHeight,false)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3B5}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3B5\else23B5\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_bracket_shape(OverlayDepth,true)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3DC}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3DC\else23DC\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_parent_shape(OverlayHeight,false)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3DD}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3DD\else23DD\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_parent_shape(OverlayDepth,true)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3DE}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3DE\else23DE\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_brace_shape(OverlayHeight,false)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE3DF}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE3DF\else23DF\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_brace_shape(OverlayDepth,true)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE33E}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE33E\else203E\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_bar_shape(false)) ;
\stopuniqueMPgraphic
-\startuniqueMPgraphic{minifun::math:stacker:\number"FE33F}{axis,ex,em}
+\startuniqueMPgraphic{minifun::math:stacker:\number"\ifcase\contextlmtxmode FE33F\else203F\fi}{axis,ex,em}
math_stacker_draw_accent(math_stacker_bar_shape(true)) ;
\stopuniqueMPgraphic
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index d2097e7b6..62af2940a 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -173,6 +173,7 @@ return {
-- "mathtopaccentcode", "mathbottomaccentcode", "mathdelimitercode", "mathrootcode", "mathprintcode", --
"mathalphacode", "mathboxcode", "mathchoicecode", "mathnothingcode", "mathlimopcode", "mathnolopcode",
"mathunsetcode", "mathunspacedcode", "mathallcode", "mathfakecode", "mathunarycode",
+ "mathmaybeordinarycode", "mathmayberelationcode", "mathmaybebinarycode",
--
"constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument",
--
@@ -215,7 +216,7 @@ return {
"checkligatureclassoptioncode", "checkitaliccorrectionclassoptioncode", "checkkernpairclassoptioncode",
"flattenclassoptioncode", "omitpenaltyclassoptioncode", "unpackclassoptioncode", "raiseprimeclassoptioncode",
"carryoverlefttopkernclassoptioncode", "carryoverleftbottomkernclassoptioncode", "carryoverrighttopkernclassoptioncode", "carryoverrightbottomkernclassoptioncode",
- "preferdelimiterdimensionsclassoptioncode",
+ "preferdelimiterdimensionsclassoptioncode", "autoinjectclassoptioncode",
--
"noligaturingglyphoptioncode", "nokerningglyphoptioncode", "noleftligatureglyphoptioncode",
"noleftkernglyphoptioncode", "norightligatureglyphoptioncode", "norightkernglyphoptioncode",
@@ -586,7 +587,7 @@ return {
--
"assumelongusagecs",
--
- "Umathbotaccent", "Umathtopaccent",
+ "Umathbottomaccent", "Umathtopaccent", "Umathbotaccent",
--
"righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop",
"rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop",
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index ceaa8d5e7..b0ba0dda7 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -108,6 +108,7 @@ return {
"Umathdenominatorvariant",
"Umathdict",
"Umathdictdef",
+ "Umathdiscretionary",
"Umathextrasubpreshift",
"Umathextrasubprespace",
"Umathextrasubshift",
@@ -233,6 +234,8 @@ return {
"Ustopdisplaymath",
"Ustopmath",
"Ustopmathmode",
+ "Ustretched",
+ "Ustretchedwithdelims",
"Ustyle",
"Usubprescript",
"Usubscript",
@@ -373,6 +376,7 @@ return {
"gtokspre",
"hccode",
"hjcode",
+ "hmcode",
"hpack",
"hyphenationmin",
"hyphenationmode",
@@ -498,9 +502,9 @@ return {
"mathghost",
"mathgluemode",
"mathgroupingmode",
- "mathinlinemainstyle",
"mathleftclass",
"mathlimitsmode",
+ "mathmainstyle",
"mathmiddle",
"mathnolimitsmode",
"mathpenaltiesmode",
@@ -590,8 +594,6 @@ return {
"setmathspacing",
"shapingpenaltiesmode",
"shapingpenalty",
- "skewed",
- "skewedwithdelims",
"snapshotpar",
"supmarkmode",
"swapcsvalues",
@@ -707,6 +709,7 @@ return {
"pdfobjcompresslevel",
"pdfomitcharset",
"pdfomitcidset",
+ "pdfomitinfodict",
"pdfoutline",
"pdfoutput",
"pdfpageattr",
diff --git a/tex/context/base/mkiv/mult-prm.mkiv b/tex/context/base/mkiv/mult-prm.mkiv
index 5ffb84d38..75114c330 100644
--- a/tex/context/base/mkiv/mult-prm.mkiv
+++ b/tex/context/base/mkiv/mult-prm.mkiv
@@ -68,7 +68,7 @@
"pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate",
"pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr",
"pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage",
- "pdfomitcidset", "pdfomitcharset",
+ "pdfomitcidset", "pdfomitcharset", "pdfomitinfodict",
},
aleph = { -- we don't bother
"Alephminorversion", "Alephrevision", "Alephversion",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 3c36ed7cf..36fa8c14e 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index c57cfee7c..8dbbc4774 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/util-rnd.lua b/tex/context/base/mkiv/util-rnd.lua
new file mode 100644
index 000000000..7504965b2
--- /dev/null
+++ b/tex/context/base/mkiv/util-rnd.lua
@@ -0,0 +1,116 @@
+if not modules then modules = { } end modules ['util-rnd'] = {
+ version = 1.001,
+ comment = "companion to luat-lib.mkiv",
+ author = "Tamara, Adriana, Tomáš Hála & Hans Hagen",
+ copyright = "ConTeXt Development Team", -- umbrella
+ license = "see context related readme files"
+}
+
+-- The rounding code is a variant on Tomáš Hála <tomas.hala@mendelu.cz; mendelu@thala.cz>
+-- code that is used in the statistical module. We use local variables and a tolerant name
+-- resolver that also permits efficient local aliases. With code like this one
+-- really have to make sure that locals are used because changing the rounding
+-- can influence other code.
+
+local floor, ceil, pow = math.floor, math.ceil, math.pow
+local rawget, type = rawget, type
+local gsub, lower = string.gsub, string.lower
+
+local rounding = { }
+
+local methods = {
+ no = function(num)
+ -- no rounding
+ return num
+ end,
+ up = function(num,coef)
+ -- ceiling rounding
+ coef = coef and pow(10,coef) or 1
+ return ceil(num * coef) / coef
+ end,
+ down = function(num,coef)
+ -- floor rounding
+ coef = coef and pow(10,coef) or 1
+ return floor(num * coef) / coef
+ end,
+ halfup = function(num,coef)
+ -- rounds decimal numbers as usual, numbers with 0.5 up, too (e.g. number -0.5 will be rounded to 0)
+ coef = coef and pow(10,coef) or 1
+ return floor(num * coef + 0.5) / coef
+ end,
+ halfdown = function(num,coef)
+ -- rounds decimal numbers as usual, numbers with 0.5 down, too (e.g. number 0.5 will be rounded to 0)
+ coef = coef and pow(10,coef) or 1
+ return ceil(num * coef -0.5) / coef
+ end,
+ halfabsup = function(num,coef)
+ -- rounds deciaml numbers as usual, numbers with 0.5 away from zero, e.g. numbers -0.5 and 0.5 will be rounded to -1 and 1
+ coef = coef and pow(10,coef) or 1
+ return (num >= 0 and floor(num * coef + 0.5) or ceil(num * coef - 0.5)) / coef
+ end,
+ halfabsdown = function(num,coef)
+ -- rounds deciaml numbers as usual, numbers with 0.5 towards zero, e.g. numbers -0.5 and 0.5 will be rounded both to 0
+ coef = coef and pow(10,coef) or 1
+ return (num < 0 and floor(num * coef + 0.5) or ceil(num * coef - 0.5)) / coef
+ end,
+ halfeven = function(num,coef)
+ -- rounds deciaml numbers as usual, numbers with 0.5 to the nearest even, e.g. numbers 1.5 and 2.5 will be rounded both to 2
+ coef = coef and pow(10,coef) or 1
+ num = num*coef
+ return floor(num + (((num - floor(num)) ~= 0.5 and 0.5) or ((floor(num) % 2 == 1) and 1) or 0)) / coef
+ end,
+ halfodd = function(num,coef)
+ -- rounds deciaml numbers as usual, numbers with 0.5 to the nearest odd (e.g. numbers 1.5 and 2.5 will be rounded to 1 and 3
+ coef = coef and pow(10,coef) or 1
+ num = num * coef
+ return floor(num + (((num - floor(num)) ~= 0.5 and 0.5) or ((floor(num) % 2 == 1) and 0) or 1)) / coef
+ end,
+}
+
+methods.default = methods.halfup
+
+rounding.methods = table.setmetatableindex(methods,function(t,k)
+ local s = gsub(lower(k),"[^a-z]","")
+ local v = rawget(t,s)
+ if not v then
+ v = t.halfup
+ end
+ t[k] = v
+ return v
+end)
+
+-- If needed I can make a high performance one.
+
+local defaultmethod = methods.halfup
+
+rounding.round = function(num,dec,mode)
+ if type(dec) == "string" then
+ mode = dec
+ dec = 1
+ end
+ return (mode and methods[mode] or defaultmethods)(num,dec)
+end
+
+number.rounding = rounding
+
+-- -- Tomáš' test numbers:
+
+-- local list = { 5.49, 5.5, 5.51, 6.49, 6.5, 6.51, 0.5, 12.45 }
+--
+-- for method, round in table.sortedhash(number.rounding.methods) do
+-- for i=1,#list do
+-- local n = list[i]
+-- print(n,method,round(n,k),round(n,k,3))
+-- end
+-- end
+--
+-- local myround = number.rounding.methods["HALF ABS DOWN"]
+--
+-- for i=1,#list do
+-- local n = list[i]
+-- print(n,"Half Abs Down",number.rounding.round(n,1,"Half Abs Down"))
+-- print(n,"HALF_ABS_DOWN",number.rounding.round(n,1,"HALF_ABS_DOWN"))
+-- print(n,"HALF_ABS_DOWN",myround(n,1))
+-- end
+
+return rounding
diff --git a/tex/context/base/mkxl/char-prv.lmt b/tex/context/base/mkxl/char-prv.lmt
new file mode 100644
index 000000000..bb0377a75
--- /dev/null
+++ b/tex/context/base/mkxl/char-prv.lmt
@@ -0,0 +1,251 @@
+if not modules then modules = { } end modules ['char-prv'] = {
+ version = 1.001,
+ comment = "companion to char-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files",
+ dataonly = true,
+}
+
+characters = characters or { }
+
+-- 0xFE302 -- 0xFE320 for accents (gone with new lm/gyre)
+-- 0xFE321 -- 0xFE340 for missing characters
+
+-- [0xFE302] = {
+-- category = "mn",
+-- description = "WIDE MATHEMATICAL HAT",
+-- direction = "nsm",
+-- linebreak = "cm",
+-- mathclass = "topaccent",
+-- mathname = "widehat",
+-- mathstretch = "h",
+-- unicodeslot = 0xFE302,
+-- nextinsize = { 0x00302, 0x0005E },
+-- },
+-- [0xFE303] = {
+-- category = "mn",
+-- cjkwd = "a",
+-- description = "WIDE MATHEMATICAL TILDE",
+-- direction = "nsm",
+-- linebreak = "cm",
+-- mathclass = "topaccent",
+-- mathname = "widetilde",
+-- mathstretch = "h",
+-- unicodeslot = 0xFE303,
+-- nextinsize = { 0x00303, 0x0007E },
+-- },
+-- [0xFE304] = {
+-- category = "sm",
+-- description = "TOP AND BOTTOM PARENTHESES",
+-- direction = "on",
+-- linebreak = "al",
+-- mathclass = "doubleaccent",
+-- mathname = "doubleparent",
+-- unicodeslot = 0xFE304,
+-- accents = { 0x023DC, 0x023DD },
+-- },
+-- [0xFE305] = {
+-- category = "sm",
+-- description = "TOP AND BOTTOM BRACES",
+-- direction = "on",
+-- linebreak = "al",
+-- mathclass = "doubleaccent",
+-- mathname = "doublebrace",
+-- unicodeslot = 0xFE305,
+-- accents = { 0x023DE, 0x023DF },
+-- },
+-- [0xFE941]={
+-- category = "sm",
+-- description = "EXTREMELY IDENTICAL TO",
+-- mathclass = "relation",
+-- mathextensible = "h",
+-- mathname = "eqequiv",
+-- mathpair = { 0x2261, 0x3D },
+-- unicodeslot = 0xFE941,
+-- },
+
+characters.private={
+--[0xFE302]={ --fbk
+-- description="EXTENSIBLE OF 0x0302",
+-- mathclass="topaccent",
+-- mathstretch="h",
+-- unicodeslot=0xFE302,
+--},
+--[0xFE303]={ --fbk
+-- description="EXTENSIBLE OF 0x0303",
+-- mathclass="topaccent",
+-- mathstretch="h",
+-- unicodeslot=0xFE303,
+--},
+ [0xFE321]={ -- vfu
+ category="sm",
+ description="MATHEMATICAL SHORT BAR",
+ mathclass="relation",
+ mathname="mapstochar",
+ unicodeslot=0xFE321,
+ },
+ [0xFE322]={ -- vfu
+ category="sm",
+ description="MATHEMATICAL LEFT HOOK",
+ mathclass="relation",
+ mathname="lhook",
+ unicodeslot=0xFE322,
+ },
+ [0xFE323]={ -- vfu
+ category="sm",
+ description="MATHEMATICAL RIGHT HOOK",
+ mathclass="relation",
+ mathname="rhook",
+ unicodeslot=0xFE323,
+ },
+ [0xFE324]={ -- vfu
+ category="sm",
+ description="MATHEMATICAL SHORT BAR MIRRORED",
+ mathclass="relation",
+ mathname="mapsfromchar",
+ unicodeslot=0xFE324,
+ },
+ [0xFE33E]={ -- stc
+ description="TOP OF 0x023E",
+ mathclass="topaccent",
+ mathextensible="r",
+ mathstretch="h",
+ unicodeslot=0xFE33E,
+ },
+ [0xFE33F]={ -- stc
+ description="BOTTOM OF 0x023E",
+ mathclass="botaccent",
+ mathextensible="r",
+ mathstretch="h",
+ unicodeslot=0xFE33E,
+ },
+--[0xFE350]={ --fbk
+-- category="sm",
+-- description="MATHEMATICAL DOUBLE ARROW LEFT END",
+-- mathclass="relation",
+-- mathname="ctxdoublearrowfillleftend",
+-- unicodeslot=0xFE350,
+--},
+--[0xFE351]={ --fbk
+-- category="sm",
+-- description="MATHEMATICAL DOUBLE ARROW MIDDLE PART",
+-- mathclass="relation",
+-- mathname="ctxdoublearrowfillmiddlepart",
+-- unicodeslot=0xFE351,
+--},
+--[0xFE352]={ --fbk
+-- category="sm",
+-- description="MATHEMATICAL DOUBLE ARROW RIGHT END",
+-- mathclass="relation",
+-- mathname="ctxdoublearrowfillrightend",
+-- unicodeslot=0xFE352,
+--},
+--[0xFE3B4]={ -- stc
+-- description="EXTENSIBLE OF 0x03B4",
+-- mathclass="topaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3B4,
+--},
+--[0xFE3B5]={ -- stc
+-- description="EXTENSIBLE OF 0x03B5",
+-- mathclass="botaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3B5,
+--},
+--[0xFE3DC]={ -- stc
+-- description="EXTENSIBLE OF 0x03DC",
+-- mathclass="topaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3DC,
+--},
+--[0xFE3DD]={ -- stc
+-- description="EXTENSIBLE OF 0x03DD",
+-- mathclass="botaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3DD,
+--},
+--[0xFE3DE]={ -- stc
+-- description="EXTENSIBLE OF 0x03DE",
+-- mathclass="topaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3DE,
+--},
+--[0xFE3DF]={ -- stc
+-- description="EXTENSIBLE OF 0x03DF",
+-- mathclass="botaccent",
+-- mathextensible="r",
+-- mathstretch="h",
+-- unicodeslot=0xFE3DF,
+--},
+ [0xFE932]={ -- vfu
+ description="SMASHED PRIME 0x02032",
+ unicodeslot=0xFE932,
+ },
+ [0xFE933]={ -- vfu
+ description="SMASHED PRIME 0x02033",
+ unicodeslot=0xFE933,
+ },
+ [0xFE934]={ -- vfu
+ description="SMASHED PRIME 0x02034",
+ unicodeslot=0xFE934,
+ },
+ [0xFE935]={ -- vfu
+ description="SMASHED BACKWARD PRIME 0x02035",
+ unicodeslot=0xFE935,
+ },
+ [0xFE936]={ -- vfu
+ description="SMASHED BACKWARD PRIME 0x02036",
+ unicodeslot=0xFE936,
+ },
+ [0xFE937]={ -- vfu
+ description="SMASHED BACKWARD PRIME 0x02037",
+ 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,
+ },
+}
+
+-- print(table.serialize(characters.private,"characters.private", { hexify = true, noquotes = true }))
diff --git a/tex/context/base/mkxl/char-tex.lmt b/tex/context/base/mkxl/char-tex.lmt
index 3d8f6a259..e5ce1c4ab 100644
--- a/tex/context/base/mkxl/char-tex.lmt
+++ b/tex/context/base/mkxl/char-tex.lmt
@@ -770,24 +770,36 @@ if not csletters then
storage.register("characters/csletters", csletters, "characters.csletters")
end
+ local function setname(category,chr,u,contextname)
+ if is_character[category] then
+ if chr.unicodeslot < 128 then
+ if is_letter[category] then
+ texsetmacro(contextname,utfchar(u),"immutable")
+ else
+ texsetchar(contextname,u,"immutable")
+ end
+ else
+ texsetmacro(contextname,utfchar(u),"immutable")
+ end
+ elseif is_command[category] and not forbidden[u] then
+ texsetmacro(contextname,utfchar(u),"immutable")
+ end
+ end
+
function characters.setcharacternames(ctt)
for u, chr in next, data do -- will move up
local contextname = chr.contextname
+ local contextspec = chr.contextspec
local category = chr.category
- local isletter = is_letter[category]
if contextname then
- if is_character[category] then
- if chr.unicodeslot < 128 then
- if isletter then
- texsetmacro(contextname,utfchar(u),"immutable")
- else
- texsetchar(contextname,u,"immutable")
- end
- else
- texsetmacro(contextname,utfchar(u),"immutable")
+ setname(category,chr,u,contextname)
+ end
+ if contextspec then
+ for i=1,#contextspec do
+ local extraname = contextspec[i]
+ if extraname ~= contextname then
+ setname(category,chr,u,extraname)
end
- elseif is_command[category] and not forbidden[u] then
- texsetmacro(contextname,utfchar(u),"immutable")
end
end
end
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 8b974f841..006494969 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.05 17:16}
+\newcontextversion{2022.08.25 17:38}
%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 6d8c81284..c873ff912 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.05 17:16}
+\immutable\edef\contextversion{2022.08.25 17:38}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
@@ -40,6 +40,8 @@
\immutable\chardef\contextlmtxmode\directlua{tex.print(CONTEXTLMTXMODE or 0)}\relax
+\directlua{io.output():setvbuf("line")}
+
%D For those who want to use this:
\aliased\let\fmtname \contextformat
@@ -401,8 +403,7 @@
\loadmkxlfile{tabl-tab} % thrd-tab stripped and merged
\loadmkxlfile{tabl-tbl}
-%loadmkxlfile{tabl-ntb}
-\doiffileelse{tabl-ntb-new.mkxl}{\loadmkxlfile{tabl-ntb-new}}{\loadmkxlfile{tabl-ntb}}
+\loadmkxlfile{tabl-ntb}
\loadmkxlfile{tabl-nte}
\loadmkxlfile{tabl-ltb}
\loadmkxlfile{tabl-frm}
@@ -494,6 +495,7 @@
\loadmkxlfile{math-lop}
\loadmklxfile{math-acc}
\loadmklxfile{math-rad}
+\loadmklxfile{math-del}
\loadmkxlfile{math-inl}
\loadmkxlfile{math-dis}
%loadmkxlfile{math-lan}
diff --git a/tex/context/base/mkxl/file-mod.mklx b/tex/context/base/mkxl/file-mod.mklx
index 3a966894f..56e12f72a 100644
--- a/tex/context/base/mkxl/file-mod.mklx
+++ b/tex/context/base/mkxl/file-mod.mklx
@@ -29,6 +29,15 @@
%D More information on the specific modules can be found in their dedicated manuals.
%D We use \type {\next} so that we can \type {\end} in modules.
+% \enabledirectives[logs.errors=*]
+% \enabledirectives[logs.errors=missing modules]
+%
+% \usemodule[letsquit]
+%
+% \starttext
+% test
+% \stoptext
+
\installcorenamespace{module}
\mutable\let\currentmodule \s!unknown
diff --git a/tex/context/base/mkxl/font-col.lmt b/tex/context/base/mkxl/font-col.lmt
index 12603a0dd..1bce9b3a9 100644
--- a/tex/context/base/mkxl/font-col.lmt
+++ b/tex/context/base/mkxl/font-col.lmt
@@ -26,6 +26,7 @@ local nextchar = nuts.traversers.char
local getscales = nuts.getscales
local setscales = nuts.setscales
local setprop = nuts.setprop
+local getcharspec = nuts.getcharspec
local settings_to_hash = utilities.parsers.settings_to_hash
@@ -411,63 +412,80 @@ end
-- todo: also general one for missing
+local function apply(n,char,font,vector,vect)
+ local kind = type(vect)
+ local newfont, newchar
+ if kind == "table" then
+ newfont = vect[1]
+ newchar = vect[2]
+ if trace_collecting then
+ report_fonts("remapping character %C in font %a to character %C in font %a%s",
+ char,font,newchar,newfont,not chardata[newfont][newchar] and " (missing)" or ""
+ )
+ end
+ elseif kind == "function" then
+ newfont, newchar = vect(font,char,vector)
+ if not newfont then
+ newfont = font
+ end
+ if not newchar then
+ newchar = char
+ end
+ if trace_collecting then
+ report_fonts("remapping character %C in font %a to character %C in font %a%s",
+ char,font,newchar,newfont,not chardata[newfont][newchar] and " (missing)" or ""
+ )
+ end
+ vector[char] = { newfont, newchar }
+ else
+ local fakemono = vector.factor
+ if trace_collecting then
+ report_fonts("remapping font %a to %a for character %C%s",
+ font,vect,char,not chardata[vect][char] and " (missing)" or ""
+ )
+ end
+ newfont = vect
+ if fakemono then
+ newchar = monoslot(vect,char,font,fakemono)
+ else
+ newchar = char
+ end
+ end
+ local rscale = vector.rscale
+ if rscale and rscale ~= 1 then
+ local s, x, y = getscales(n)
+ setscales(n,s*rscale,x*rscale,y*rscale)
+ end
+ setfont(n,newfont,newchar)
+ setprop(n, "original", { font = font, char = char })
+end
+
function collections.process(head) -- this way we keep feature processing
for n, char, font in nextchar, head do
local vector = validvectors[font]
if vector then
local vect = vector[char]
if vect then
- local kind = type(vect)
- local newfont, newchar
- if kind == "table" then
- newfont = vect[1]
- newchar = vect[2]
- if trace_collecting then
- report_fonts("remapping character %C in font %a to character %C in font %a%s",
- char,font,newchar,newfont,not chardata[newfont][newchar] and " (missing)" or ""
- )
- end
- elseif kind == "function" then
- newfont, newchar = vect(font,char,vector)
- if not newfont then
- newfont = font
- end
- if not newchar then
- newchar = char
- end
- if trace_collecting then
- report_fonts("remapping character %C in font %a to character %C in font %a%s",
- char,font,newchar,newfont,not chardata[newfont][newchar] and " (missing)" or ""
- )
- end
- vector[char] = { newfont, newchar }
- else
- local fakemono = vector.factor
- if trace_collecting then
- report_fonts("remapping font %a to %a for character %C%s",
- font,vect,char,not chardata[vect][char] and " (missing)" or ""
- )
- end
- newfont = vect
- if fakemono then
- newchar = monoslot(vect,char,font,fakemono)
- else
- newchar = char
- end
- end
- local rscale = vector.rscale
- if rscale and rscale ~= 1 then
- local s, x, y = getscales(n)
- setscales(n,s*rscale,x*rscale,y*rscale)
- end
- setfont(n,newfont,newchar)
- setprop(n, "original", { font = font, char = char })
+ apply(n,char,font,vector,vect)
end
end
end
return head
end
+function collections.direct(n)
+ local char, font = getcharspec(n)
+ if font and char then
+ local vector = validvectors[font]
+ if vector then
+ local vect = vector[char]
+ if vect then
+ apply(n,char,font,vector,vect)
+ end
+ end
+ end
+end
+
function collections.found(font,char) -- this way we keep feature processing
if not char then
font, char = currentfont(), font
diff --git a/tex/context/base/mkxl/font-con.lmt b/tex/context/base/mkxl/font-con.lmt
index 5763d1039..ddaf8afb1 100644
--- a/tex/context/base/mkxl/font-con.lmt
+++ b/tex/context/base/mkxl/font-con.lmt
@@ -815,6 +815,10 @@ function constructors.scale(tfmdata,specification)
if vc then
chr.commands = scalecommands(vc,hdelta,vdelta)
end
+ local cb = character.callback
+ if cb then
+ chr.callback = cb
+ end
-- we assume that these are done in a manipulator afterwards
-- as it makes no sense otherwise
-- local vx = character.xoffset
diff --git a/tex/context/base/mkxl/font-imp-checks.lmt b/tex/context/base/mkxl/font-imp-checks.lmt
new file mode 100644
index 000000000..120f89c49
--- /dev/null
+++ b/tex/context/base/mkxl/font-imp-checks.lmt
@@ -0,0 +1,40 @@
+if not modules then modules = { } end modules ['font-imp-checks'] = {
+ version = 1.001,
+ comment = "companion to font-ini.mkiv",
+ author = "Hans Hagen, PRAGMA ADE",
+ copyright = "ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+if not context then return end
+
+local function initialize(tfmdata,value)
+ if value then
+ local characters = tfmdata.characters
+ if not characters[0x2012] then
+ local data = characters[0x2013]
+ local zero = characters[0x0030]
+ if data and zero then
+ local copy = table.copy(data)
+ local width = zero.width or 0
+ if width > 0 then
+ characters[0x2012] = copy
+ copy.effect = {
+ extend = width/copy.width
+ }
+ copy.width = width
+ end
+ end
+ end
+ end
+end
+
+fonts.handlers.otf.features.register {
+ name = "checkmissing",
+ description = "checkmissing",
+ manipulators = {
+ base = initialize,
+ node = initialize,
+ }
+}
+
diff --git a/tex/context/base/mkxl/font-imp-scripts.lmt b/tex/context/base/mkxl/font-imp-scripts.lmt
index 3e5eaa596..8cfbb9ac2 100644
--- a/tex/context/base/mkxl/font-imp-scripts.lmt
+++ b/tex/context/base/mkxl/font-imp-scripts.lmt
@@ -121,7 +121,7 @@ local function initialize(tfmdata,key,value)
local detail = type(value) == "string" and settings_to_hash(value) or { }
local orientation = tonumber(detail.orientation) or 0
if orientation == 1 or orientation == 3 then
- local characters = tfmdata.characters
+ local characters = tfmdata.characters
local parameters = tfmdata.parameters
local emwidth = parameters.quad
local exheight = parameters.xheight
@@ -146,12 +146,12 @@ local function initialize(tfmdata,key,value)
local width = character.width or 0
local height = character.height or 0
local depth = character.depth or 0
- character.width = height + depth + rightshift + rightshift
+-- character.width = height + depth + rightshift + rightshift
character.height = width - downshift
character.depth = shift
- character.xoffset = height + rightshift
- character.yoffset = - downshift
- character.orientation = orientation
+-- character.xoffset = height + rightshift
+-- character.yoffset = - downshift
+-- character.orientation = orientation
end
end
if ranges then
diff --git a/tex/context/base/mkxl/font-lib.mklx b/tex/context/base/mkxl/font-lib.mklx
index b9a79c0d9..f7342c7d4 100644
--- a/tex/context/base/mkxl/font-lib.mklx
+++ b/tex/context/base/mkxl/font-lib.mklx
@@ -101,6 +101,7 @@
% extensions, order matters
+\registerctxluafile{font-imp-checks}{autosuffix}
\registerctxluafile{font-imp-ligatures}{autosuffix}
\registerctxluafile{font-imp-tex}{}
\registerctxluafile{font-imp-reorder}{}
diff --git a/tex/context/base/mkxl/font-mps.lmt b/tex/context/base/mkxl/font-mps.lmt
index 8cab9cf5c..9a123a25e 100644
--- a/tex/context/base/mkxl/font-mps.lmt
+++ b/tex/context/base/mkxl/font-mps.lmt
@@ -118,6 +118,7 @@ function metapost.paths(d,xfactor,yfactor)
end
end
elseif segments then
+-- inspect(segments)
for i=1,#segments do
local segment = segments[i]
local operator = segment[#segment]
@@ -137,7 +138,7 @@ function metapost.paths(d,xfactor,yfactor)
elseif operator == "c" then -- "curveto"
size = size + 1
path[size] = f_curveto(xfactor*segment[1],yfactor*segment[2],xfactor*segment[3],yfactor*segment[4],xfactor*segment[5],yfactor*segment[6])
- elseif operator =="q" then -- "quadraticto"
+ elseif operator == "q" then -- "quadraticto"
size = size + 1
-- first is always a moveto
local prev = segments[i-1]
diff --git a/tex/context/base/mkxl/font-ots.lmt b/tex/context/base/mkxl/font-ots.lmt
index e5c5db2fa..3b7e6dbc3 100644
--- a/tex/context/base/mkxl/font-ots.lmt
+++ b/tex/context/base/mkxl/font-ots.lmt
@@ -325,6 +325,22 @@ local checkstep = (tracers and tracers.steppers.check) or function()
local registerstep = (tracers and tracers.steppers.register) or function() end
local registermessage = (tracers and tracers.steppers.message) or function() end
+do
+
+ local setchr = setchar
+ local direct = nil
+
+ setchar = function(n,c)
+ direct = fonts.collections.direct
+ setchar = function(n,c)
+ setchr(n,c)
+ direct(n)
+ end
+ setchar(n,c)
+ end
+
+end
+
local function logprocess(...)
if trace_steps then
registermessage(...)
@@ -542,6 +558,7 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
if start == stop and getchar(start) == char and not hasmarks then
resetinjection(start)
setchar(start,char)
+-- fonts.collections.direct(start)
return head, start
end
if inhibited(start,stop) then
@@ -558,6 +575,7 @@ local function toligature(head,start,stop,char,dataset,sequence,skiphash,discfou
end
resetinjection(base)
setchar(base,char)
+-- fonts.collections.direct(base)
setoptions(base,getoptions(start) | getoptions(stop)) -- maybe only lig options
-- setsubtype(base,ligatureglyph_code)
setcomponents(base,comp)
diff --git a/tex/context/base/mkxl/font-pre.mkxl b/tex/context/base/mkxl/font-pre.mkxl
index d77869e27..3c7a01857 100644
--- a/tex/context/base/mkxl/font-pre.mkxl
+++ b/tex/context/base/mkxl/font-pre.mkxl
@@ -47,6 +47,13 @@
%
% dtls flac :math
+%D The missing feature:
+%D
+%D \starttyping
+%D \ruledhbox{\char"2012}\par % figuredash
+%D \ruledhbox{0}\par
+%D \stoptyping
+
\definefontfeature
[always]
[mode=node, % we had 'auto', but let's try 'node' for a while and see what the impact is
@@ -54,6 +61,7 @@
autoscript=position,
autolanguage=position,
textcontrol=collapsehyphens,
+ checkmissing=yes,
kern=yes, % consider skipping the base passes when no base mode is used
mark=yes,
mkmk=yes,
@@ -404,7 +412,7 @@
[mode=base,
% mode=none, % better, maybe do this last
kern=yes,
-% flac=yes,
+% flac=yes, % handled differently
% liga=yes, % makes no sense
% mode=node,
% mathnolimitsmode={0,800}, % now in lfg files
diff --git a/tex/context/base/mkxl/font-tex.lmt b/tex/context/base/mkxl/font-tex.lmt
index 1c3c17a79..2d21687df 100644
--- a/tex/context/base/mkxl/font-tex.lmt
+++ b/tex/context/base/mkxl/font-tex.lmt
@@ -6,22 +6,23 @@ if not modules then modules = { } end modules ['font-mpf'] = {
license = "see context related readme files"
}
-local formatters = string.formatters
-local sortedhash = table.sortedhash
+local formatters = string.formatters
+local sortedhash = table.sortedhash
-local addcharacters = fonts.constructors.addcharacters
-local fontdata = fonts.hashes.identifiers
+local addcharacters = fonts.constructors.addcharacters
+local fontdata = fonts.hashes.identifiers
+local fontchars = fonts.hashes.characters
-local otf = fonts.handlers.otf
-local otfregister = otf.features.register
+local otf = fonts.handlers.otf
+local otfregister = otf.features.register
------ getshapes = fonts.dropins.getshapes
+----- getshapes = fonts.dropins.getshapes
-local register = fonts.collections.register
-local checkenabled = fonts.collections.checkenabled
-local newprivateslot = fonts.helpers.newprivateslot
+local register = fonts.collections.register
+local checkenabled = fonts.collections.checkenabled
+local newprivateslot = fonts.helpers.newprivateslot
-local currentfont = font.current
+local currentfont = font.current
-- hm, seems to gobble the first \char
@@ -84,7 +85,7 @@ local function setboxglyph(specification)
end
end
-function fonts.helpers.setboxdirectly(font,unicode,box) -- hash based on wd/ht/dp
+local function setboxdirectly(font,unicode,box) -- hash based on wd/ht/dp
if box then
local tfmdata = fontdata[font]
local glyphboxes = (tfmdata.glyphboxes or 0) + 1
@@ -108,6 +109,8 @@ function fonts.helpers.setboxdirectly(font,unicode,box) -- hash based on wd/ht/d
end
end
+fonts.helpers.setboxdirectly = setboxdirectly
+
local boxes = table.setmetatableindex("table")
function fonts.helpers.registerglyphbox(specification)
@@ -182,3 +185,34 @@ fonts.handlers.otf.features.register {
-- fonts.helpers.registerboxglyph { category = "demo", unicode = 104 }
-- fonts.helpers.registerboxglyph { category = "demo", unicode = 105 }
-- fonts.helpers.registerboxglyph { category = "demo", unicode = 106 }
+
+local callbacks = fonts.callbacks or { }
+fonts.callbacks = callbacks
+
+function callbacks.devirtualize(chardata,f,c)
+ if chardata.commands then
+ local h = node.hpack(nodes.pool.glyph(f,c))
+ local p = setboxdirectly(f,c,h)
+ chardata.oldcommands = chardata.commands
+ chardata.commands = { { "char", p } }
+ chardata.callback = false
+ end
+end
+
+local function processcallback(f,c)
+ local characters = fontchars[f]
+ local chardata = characters[c]
+ if chardata then
+ local callback = chardata.callback
+ if callback then
+ local action = type(callback) == "function" and callback or callbacks[callback]
+ if action then
+ action(chardata,f,c)
+ end
+ end
+ end
+end
+
+callback.register("process_character",processcallback)
+
+callbacks.callback = processcallback
diff --git a/tex/context/base/mkxl/font-tpk.lmt b/tex/context/base/mkxl/font-tpk.lmt
index d216bc257..bf74dedd9 100644
--- a/tex/context/base/mkxl/font-tpk.lmt
+++ b/tex/context/base/mkxl/font-tpk.lmt
@@ -622,15 +622,15 @@ do
local extensibles = { }
for i=0,ne-1 do
extensibles[i] = wide and {
- top = readcardinal2(s),
- bot = readcardinal2(s),
- mid = readcardinal2(s),
- rep = readcardinal2(s),
+ top = readcardinal2(s),
+ bottom = readcardinal2(s),
+ middle = readcardinal2(s),
+ extender = readcardinal2(s),
} or {
- top = readcardinal1(s),
- bot = readcardinal1(s),
- mid = readcardinal1(s),
- rep = readcardinal1(s),
+ top = readcardinal1(s),
+ bottom = readcardinal1(s),
+ middle = readcardinal1(s),
+ extender = readcardinal1(s),
}
end
for i=1,np do
diff --git a/tex/context/base/mkxl/lang-ini.mkxl b/tex/context/base/mkxl/lang-ini.mkxl
index f964a5083..ff9f5cfda 100644
--- a/tex/context/base/mkxl/lang-ini.mkxl
+++ b/tex/context/base/mkxl/lang-ini.mkxl
@@ -891,4 +891,20 @@
\clf_setlanguageoptions{\askedlanguage}{#2}%
\endgroup}
+% \startluacode
+% table.save("oeps-fixes.llg", {
+% name = "demo",
+% options = {
+% { patterns = { fio = "f|io" }, words = [[ fioot fiots ]] },
+% { patterns = { fio = "t|h" }, words = [[ this that ]] },
+% },
+% })
+% \stopluacode
+%
+% \setuplanguage[en][goodies={oeps-fixes.llg}] \setupbodyfont[ebgaramond]
+%
+% \starttext
+% fiets fiots fiats fioot this that
+% \stoptext
+
\protect \endinput
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index 7dbbe0cb7..76867974a 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -2133,7 +2133,7 @@ local finalize do
pdf_goto_pagemode() -- for now
local objnum = details.objnum
- local specification = details.specification
+ local specification = details.specification or { }
local content = concat(buffer,"\n",1,b)
diff --git a/tex/context/base/mkxl/luat-cod.lmt b/tex/context/base/mkxl/luat-cod.lmt
index 6a7ebdd0b..f96f5c577 100644
--- a/tex/context/base/mkxl/luat-cod.lmt
+++ b/tex/context/base/mkxl/luat-cod.lmt
@@ -290,7 +290,10 @@ local function open_data_file(name)
return {
reader = function()
return f:read("*line")
- end
+ end,
+ -- close = function()
+ -- f:close()
+ -- end
}
else
return false
diff --git a/tex/context/base/mkxl/math-acc.mklx b/tex/context/base/mkxl/math-acc.mklx
index baa24fcea..9d51ba697 100644
--- a/tex/context/base/mkxl/math-acc.mklx
+++ b/tex/context/base/mkxl/math-acc.mklx
@@ -18,29 +18,17 @@
\unprotect
-% This module permits overloading of accents so that we can do fancy things. The
-% implementation is similar to stackers. By default accenst are defined in a simple
-% way. Contrary to extensibles accents cannot grow indefinitely. Alas the
-% implementation of accents is different too, in the sense that they are
-% prepositioned i.e. are already raised. (In my opinion for no real reason as they
-% need to adapt anyway).
-%
-% $ \ruledhbox{$H$} \hat{H} \ruledhbox{$\widehat{H}$} \widehat{H} $
-%
-% One alternative is:
-%
-% \definemathoverextensible [top] [hoed] ["FE302]
-% \definemathoverextensible [top] [slang] ["FE303]
-%
-% $ \hoed{H} \ruledhbox{$\hoed{H}$} \ruledhbox{$\hoed{\tf H}$} \slang{H} $
-%
-% But that nills the italic correction (and I'm in nood to mess with that again).
-%
-% \definemathaccents [myaccents] [color=darkred]
-% \definemathtopaccent [myaccents] [mywidehat] ["0302]
-%
-% $ \hat{H} \widehat{H} \mywidehat{H} $
-
+%D This module permits overloading of accents so that we can do fancy things. The
+%D implementation is similar to stackers. By default accenst are defined in a simple
+%D way. Contrary to extensibles accents cannot grow indefinitely. Alas the
+%D implementation of accents is different too, in the sense that they are
+%D prepositioned i.e. are already raised. (In my opinion for no real reason as they
+%D need to adapt anyway).
+%D
+%D In \MKIV\ we used virtual characters in the "FE* range but in \LMTX\ we do it a bit
+%D different as we have a more powerful virtual subsystem. For details on the older
+%D but neat approach see the lua and mkiv files.
+%D
%D Older implementations are kept in the \MKII\ and \MKIV\ modules for educational
%D purposes.
@@ -120,32 +108,33 @@
\newconditional\c_math_accent_auto_dotless \settrue\c_math_accent_auto_dotless % cf opentype math
-\aliased\let\normalgrave\grave
-\aliased\let\normalddot \ddot
-\aliased\let\normalbar \bar
-\aliased\let\normalacute\acute
-\aliased\let\normalhat \hat
-\aliased\let\normalcheck\check
-\aliased\let\normalbreve\breve
-\aliased\let\normaldot \dot
-\aliased\let\normalring \ring
-\aliased\let\normaltilde\tilde
-\aliased\let\normaldddot\dddot
+% \aliased\let\normalgrave\grave
+% \aliased\let\normalddot \ddot
+% \aliased\let\normalbar \bar
+% \aliased\let\normalacute\acute
+% \aliased\let\normalhat \hat \aliased\let\normalwidehat \widehat
+% \aliased\let\normalcheck\check
+% \aliased\let\normalbreve\breve
+% \aliased\let\normaldot \dot
+% \aliased\let\normalring \ring
+% \aliased\let\normaltilde\tilde
+% \aliased\let\normaldddot\dddot
\pushoverloadmode
-% these are not stretched ... we should adapt char-def.lua to use these:
-
-\definemathtopaccent[\v!top][grave]["60]
-\definemathtopaccent[\v!top][ddot] ["A8]
-\definemathtopaccent[\v!top][bar] ["AF]
-\definemathtopaccent[\v!top][acute]["B4]
-\definemathtopaccent[\v!top][hat] ["2C6] % "302
-\definemathtopaccent[\v!top][check]["2C7]
-\definemathtopaccent[\v!top][breve]["2D8]
-\definemathtopaccent[\v!top][dot] ["2D9]
-\definemathtopaccent[\v!top][ring] ["2DA]
-\definemathtopaccent[\v!top][tilde]["2DC]
+% These retain the given unicode values ... but can stretch when configured
+% to do so: \setupmathaccent[\v!top][\c!stretch=\v!yes]
+
+\definemathtopaccent[\v!top][grave]["0060] % these are old school
+\definemathtopaccent[\v!top][ddot] ["00A8]
+\definemathtopaccent[\v!top][bar] ["00AF]
+\definemathtopaccent[\v!top][acute]["00B4]
+\definemathtopaccent[\v!top][hat] ["02C6]
+\definemathtopaccent[\v!top][check]["02C7]
+\definemathtopaccent[\v!top][breve]["02D8]
+\definemathtopaccent[\v!top][dot] ["02D9]
+\definemathtopaccent[\v!top][ring] ["02DA]
+\definemathtopaccent[\v!top][tilde]["02DC]
\definemathtopaccent[\v!top][dddot]["20DB]
\definemathaccent
@@ -156,16 +145,16 @@
%D We have a problem. We can use stackers but then we need to adapt the dimensions
%D which is font dependent. So, for now we keep them as accents.
-\definemathtopaccent[\v!top:\v!stretch][widegrave]["0300] % ["060]
-\definemathtopaccent[\v!top:\v!stretch][wideddot] ["0308] % ["0A8]
-\definemathtopaccent[\v!top:\v!stretch][widebar] ["0304] % ["0AF]
-\definemathtopaccent[\v!top:\v!stretch][wideacute]["0301] % ["0B4]
-\definemathtopaccent[\v!top:\v!stretch][widehat] ["0302] % ["2C6]
-\definemathtopaccent[\v!top:\v!stretch][widecheck]["030C] % ["2C7]
-\definemathtopaccent[\v!top:\v!stretch][widebreve]["0306] % ["2D8]
-\definemathtopaccent[\v!top:\v!stretch][widedot] ["0307] % ["2D9]
-\definemathtopaccent[\v!top:\v!stretch][widering] ["030A] % ["2DA]
-\definemathtopaccent[\v!top:\v!stretch][widetilde]["0303] % ["2DC]
+\definemathtopaccent[\v!top:\v!stretch][widegrave]["0300] % these are generic modern
+\definemathtopaccent[\v!top:\v!stretch][wideddot] ["0308]
+\definemathtopaccent[\v!top:\v!stretch][widebar] ["0304]
+\definemathtopaccent[\v!top:\v!stretch][wideacute]["0301]
+\definemathtopaccent[\v!top:\v!stretch][widehat] ["0302]
+\definemathtopaccent[\v!top:\v!stretch][widecheck]["030C]
+\definemathtopaccent[\v!top:\v!stretch][widebreve]["0306]
+\definemathtopaccent[\v!top:\v!stretch][widedot] ["0307]
+\definemathtopaccent[\v!top:\v!stretch][widering] ["030A]
+\definemathtopaccent[\v!top:\v!stretch][widetilde]["0303]
\definemathtopaccent[\v!top:\v!stretch][widedddot]["20DB]
\aliased\let\mathring\ring % for a while
diff --git a/tex/context/base/mkxl/math-act.lmt b/tex/context/base/mkxl/math-act.lmt
index 89d7d3153..14c0a94ce 100644
--- a/tex/context/base/mkxl/math-act.lmt
+++ b/tex/context/base/mkxl/math-act.lmt
@@ -10,7 +10,7 @@ if not modules then modules = { } end modules ['math-act'] = {
-- have been removed (no longer viable) but can be found in the .lua variant.
local type, next, tonumber = type, next, tonumber
-local fastcopy, insert, remove = table.fastcopy, table.insert, table.remove
+local fastcopy, copytable, insert, remove = table.fastcopy, table.copy, table.insert, table.remove
local formatters = string.formatters
local byte = string.byte
local setmetatableindex, sortedhash = table.setmetatableindex, table.sortedhash
@@ -34,7 +34,9 @@ local stepper = utilities.parsers.stepper
local helpers = fonts.helpers
local upcommand = helpers.commands.up
+local downcommand = helpers.commands.down
local rightcommand = helpers.commands.right
+local leftcommand = helpers.commands.left
local charcommand = helpers.commands.char
local prependcommands = helpers.prependcommands
@@ -98,6 +100,7 @@ function mathematics.initializeparameters(target,original)
if not mathparameters.AccentBottomOvershoot then mathparameters.AccentBottomOvershoot = 0 end
if not mathparameters.AccentSuperscriptDrop then mathparameters.AccentSuperscriptDrop = 0 end
if not mathparameters.AccentSuperscriptPercent then mathparameters.AccentSuperscriptPercent = 0 end
+ if not mathparameters.AccentExtendMargin then mathparameters.AccentExtendMargin = 50 end
if not mathparameters.DelimiterPercent then mathparameters.DelimiterPercent = 100 end
if not mathparameters.DelimiterShortfall then mathparameters.DelimiterShortfall = 0 end
--
@@ -373,13 +376,24 @@ do
k = mathgaps[k] or k
local character = targetcharacters[k]
if character then
- if not character.tweaked then -- todo: add a force
+-- if not character.tweaked then -- todo: add a force
local t = type(v)
if t == "number" then
v = list[v]
t = type(v)
end
if t == "table" and next(v) then
+ local factor = v.factor
+ if factor then
+ local m = v
+ v = setmetatableindex({
+ width = factor,
+ height = factor,
+ depth = factor,
+ squeeze = factor,
+ extend = factor,
+ }, v)
+ end
local original = v.original
if not original then
local delta = v.delta
@@ -391,7 +405,7 @@ do
original = mathgaps[original] or original
local data = targetcharacters[original]
if data then
- data = table.copy(data)
+ data = copytable(data)
data.unicode = original
targetcharacters[k] = data
character = data
@@ -478,7 +492,7 @@ do
else
report_mathtweak("invalid dimension entry %U",k)
end
- character.tweaked = true
+-- character.tweaked = true
if v.all then
local nxt = character.next
if nxt then
@@ -492,7 +506,7 @@ do
end
end
end
- end
+-- end
else
report_tweak("no character %U",target,original,k)
end
@@ -769,7 +783,6 @@ do
-- see changed hack in math-fbk
- local copytable = table.copy
local nps = fonts.helpers.newprivateslot
local list = {
@@ -920,7 +933,6 @@ end
do
- local copytable = table.copy
local nps = fonts.helpers.newprivateslot
local privates = {
@@ -996,7 +1008,6 @@ do
if preset then
local p = predefined[preset]
if p then
- -- p = table.copy(p)
v = table.combine(p,v)
p.preset = nil
else
@@ -1287,7 +1298,7 @@ do
}
local function adapt(c,factor,baseheight,basedepth)
- if not c.tweaked then
+-- if not c.tweaked then
local height = c.height or 0
local depth = c.depth or 0
local yoffset = 0
@@ -1313,8 +1324,8 @@ do
c.yoffset = yoffset ~= 0 and yoffset or nil
c.height = height > 0 and height or nil
c.depth = depth > 0 and depth or nil
- c.tweaked = true
- end
+-- c.tweaked = true
+-- end
end
local function process(target,original,characters,list,baseheight,basedepth)
@@ -1383,6 +1394,9 @@ end
do
+ local addprivate = fonts.helpers.addprivate
+ local privateslot = fonts.helpers.privateslot
+
-- function mathtweaks.addrules(target,original,parameters)
-- local characters = target.characters
-- local height = target.mathparameters.OverbarRuleThickness
@@ -1436,8 +1450,6 @@ do
--
-- lucida lacks them ...
--
- local addprivate = fonts.helpers.addprivate
- --
local half = thickness / 2
local double = thickness * 2
--
@@ -1483,6 +1495,215 @@ do
}
}
end
+ --
+ end
+
+ local force = false experiments.register("math.arrows", function(v) force = v end)
+
+ local function tighten(target,unicode,left,right,squeeze,yoffset)
+ local name = string.formatters["math tightened %U %.3N %.3N %.3N %.3N"](unicode,left,right,squeeze,yoffset)
+ local slot = privateslot(target,name)
+ if not slot then
+ local characters = target.characters
+ local data = copytable(characters[unicode])
+ local width = data.width
+ data.advance = width
+ data.width = width * (1-left-right)
+ data.xoffset = width * -left
+ if squeeze ~= 1 then
+ data.effect = { squeeze = squeeze }
+ end
+ if yoffset ~= 0 then
+ data.yoffset = (data.height or 0) * yoffset
+ end
+ slot = addprivate(target,name,data)
+ end
+ return slot
+ end
+
+ local function create(target,unicode,list,overloads)
+ local characters = target.characters
+ local chardata = characters[unicode]
+ if chardata then
+ local endpoint = unicode
+ while chardata.next do
+ chardata = characters[chardata.next]
+ end
+-- if chardata and (force or not chardata.hparts) then
+ if chardata and (force or overloads[unicode] == false or not chardata.hparts) then
+ if not list then
+ chardata.hparts = nil -- when we test
+ else
+ local overload = overloads[unicode]
+ local hparts = { }
+ for i=1,#list do
+ local part = list[i]
+ local glyph = part.glyph or unicode
+ local check = overloads[glyph]
+ local left = (check and check.left ) or part.left or 0
+ local right = (check and check.right ) or part.right or 0
+ local squeeze = check and check.squeeze or 1
+ local yoffset = check and check.yoffset or 0
+ if left~= 0 or right ~= 0 or squeeze ~= 1 or yoffset ~= 0 then
+ glyph = tighten(target,glyph,left,right,squeeze,yoffset)
+ end
+ local width = characters[glyph].width
+ local step = width/2
+ if part.extensible then
+ hparts[#hparts+1] = {
+ advance = width,
+ glyph = glyph,
+ ["end"] = step,
+ start = step,
+ extender = 1,
+ }
+ else
+ hparts[#hparts+1] = {
+ advance = width,
+ glyph = glyph,
+ ["end"] = 0,
+ start = step,
+ }
+ end
+ end
+ if #hparts == #list then
+ chardata.hparts = hparts
+ end
+ end
+ end
+ end
+ end
+
+ -- Unicode math lacks the arrow snippet while it does have fence snippets. Also, some
+ -- fonts have a relbar that doesn't match the double arrow.
+ --
+ -- {
+ -- tweak = "addarrows",
+ -- list = { [0x3D] = { squeeze = .85, yoffset = .0975 } }
+ -- },
+ --
+ -- We have no begin and end snippet, so I played with centering and rules at the edges
+ --
+ -- [0x21A9] = { -- hookleftarrow
+ -- { glyph = 0x2212, left = slack, extensible = true },
+ -- { glyph = 0x21A9, right = slack },
+ -- { glyph = 0x2212, right = slack, extensible = true },
+ -- }
+ --
+ -- but in the end rejected it.
+
+ local function initialize(left, right, slack)
+ -- We save some space with locals. When no glyph is given the unicode itself is
+ -- used which also saves some.
+ local single = { glyph = 0x2212, left = slack, right = slack, extensible = true }
+ local double = { glyph = 0x003D, left = slack, right = slack, extensible = true }
+ local triple = { glyph = 0x2261, left = slack, right = slack, extensible = true }
+ ----- spacer = { glyph = 0x0020, left = slack, right = slack, extensible = true }
+ local slackslack = { left = slack, right = slack }
+ local leftslack = { left = left, right = slack }
+ local slackright = { left = slack, right = right }
+ ----- centered = { spacer, { }, spacer }
+ local centered = false -- the luametatex engine does this
+ local singleright = { single, slackright }
+ local leftsingle = { leftslack, single }
+ return {
+ --
+ [0x002D] = { { left = slack, right = slack, glyph = 0x2212 }, single }, -- rel
+ --
+ [0x2190] = leftsingle, -- leftarrow
+ [0x219E] = leftsingle, -- twoheadleftarrow
+ [0x21BC] = leftsingle, -- leftharpoonup
+ [0x21BD] = leftsingle, -- leftharpoondown
+ --
+ [0x2192] = singleright, -- rightarrow
+ [0x21A0] = singleright, -- twoheadrightarrow
+ [0x21C0] = singleright, -- rightharpoonup
+ [0x21C1] = singleright, -- rightharpoondown
+ --
+ [0x003D] = { slackslack, double }, -- equaltext
+ [0x2261] = { slackslack, triple }, -- triplerel
+ [0x27F8] = { leftslack, double }, -- Leftarrow
+ [0x27F9] = { double, slackright }, -- Rightarrow
+ --
+ [0x21A9] = centered, -- hookleftarrow
+ [0x21AA] = centered, -- hookrightarrow
+ [0x21CB] = centered, -- leftrightharpoons
+ [0x21CC] = centered, -- rightleftharpoons
+ [0x21C4] = centered, -- rightoverleftarrow
+ [0x21A6] = centered, -- mapsto
+ --
+ [0x203E] = { slackslack, { left = slack, right = slack, extensible = true } }, -- bar
+ --
+ [0x27F7] = { { glyph = 0x2190, left = left, right = slack }, single, { glyph = 0x2192, left = slack, right = right } }, -- leftrightarrow rightleftarrow
+ [0x27FA] = { { glyph = 0x27F8, left = left, right = slack }, double, { glyph = 0x27F9, left = slack, right = right } }, -- Leftrightarrow Rightleftarrow
+ }
+ end
+
+ function mathtweaks.addarrows(target,original,parameters)
+ local overloads = parameters.list or { } -- { [unicode] = { left = .1, right = .1 } }
+ local left = parameters.left or 0.05
+ local right = parameters.right or 0.05
+ local slack = parameters.slack or 0.1
+ local arrows = initialize(left,right,slack)
+ -- inspect(arrows)
+ for unicode, list in sortedhash(arrows) do
+ create(target,unicode,list,overloads)
+ end
+ end
+
+end
+
+do -- this could be combined with the previous
+
+ function mathtweaks.addparts(target,original,parameters)
+ local characters = target.characters
+ local list = parameters.list
+ if list then
+ for unicode, data in sortedhash(list) do
+ local template = data.template
+ if template then
+ local source = characters[template]
+ local target = characters[unicode]
+ if source and target then
+ local sequence = data.sequence
+ local horizontal = data.horizontal
+ if sequence then
+ local parts = horizontal and source.hparts or source.vparts
+ if parts then
+ local p = { }
+ for i=1,#sequence do
+ local step = sequence[i]
+ local glyph = step.glyph
+ if glyph == "first" or glyph == "last" then
+ local g = glyph == "first" and 1 or #parts
+ local c = fastcopy(parts[g])
+ local f = step.factor
+ if f then
+ c["end"] = f * (c["end"] or 0)
+ c.start = f * (c.start or 0)
+ end
+ p[#p+1] = c
+ else
+ local c = characters[glyph]
+ if c then
+ p[#p+1] = {
+ glyph = glyph,
+ advance = c.width,
+ start = 0,
+ ["end"] = 0,
+ }
+ end
+ end
+ end
+ if #p > 0 then
+ target[horizontal and "hparts" or "vparts"] = p
+ end
+ end
+ end
+ end
+ end
+ end
+ end
end
end
@@ -1610,6 +1831,446 @@ end
do
+ local mapping = {
+ [0x002F] = 0x2044,
+ }
+
+ function mathtweaks.fixslashes(target,original,parameters)
+ local characters = target.characters
+ for normal, weird in sortedhash(mapping) do
+ local normalone = characters[normal]
+ local weirdone = characters[weird]
+ if normalone and weirdone and not normalone.next then
+ normalone.next = weirdone.next
+ if trace_tweaking then
+ report_tweak("extensibles from %U used for %U",target,original,weird,normal)
+ end
+ end
+ weirdone = copytable(normalone)
+ characters[weird] = weirdone
+ weirdone.unicode = weird
+ end
+ end
+
+end
+
+do -- see pagella for an extensive example
+
+ local mapping = {
+ [0x0300] = { 0x0060, false }, -- aliases can be a table
+ [0x0308] = { 0x00A8, false },
+ [0x0304] = { 0x00AF, false },
+ [0x0301] = { 0x00B4, false },
+ [0x0302] = { 0x02C6, true },
+ [0x030C] = { 0x02C7, true },
+ [0x0306] = { 0x02D8, false },
+ [0x0307] = { 0x02D9, false },
+ [0x030A] = { 0x02DA, false },
+ [0x0303] = { 0x02DC, true },
+ [0x20DB] = { 0x20DB, false },
+ }
+
+local hat = fonts.helpers.newprivateslot("hat 0x0302") -- todo other sizes
+
+ function mathtweaks.fixaccents(target,original,parameters)
+ local characters = target.characters
+
+characters[hat] = copytable(characters[0x0302]) -- TODO
+
+ for stretching, entry in sortedhash(mapping) do
+ local alias = entry[1]
+ local stretchingdata = characters[stretching]
+ if stretchingdata and stretchingdata.width == 0 then
+ local topaccent = stretchingdata.topaccent or 0
+ local width = -topaccent
+ topaccent = width/2
+ stretchingdata.width = width
+ stretchingdata.topaccent = topaccent
+ stretchingdata.commands = { rightcommand[width + topaccent], charcommand[stretching] }
+ if trace_tweaking then
+ report_tweak("width of initial extensible accent %U set",target,original,stretching)
+ end
+ end
+ end
+ end
+
+ function mathtweaks.extendaccents(target,original,parameters)
+ local characters = target.characters
+ for stretching, entry in sortedhash(mapping) do
+ local extend = entry[2]
+ local stretchingdata = characters[stretching]
+ if extend then
+ local last = stretchingdata
+ while last do
+ local n = last.next
+ if n then
+ last = characters[n]
+ else
+ last.extensible = true
+ local flataccent = last.flataccent
+ if flataccent then
+ characters[flataccent].extensible = true
+ end
+ break
+ end
+ end
+ end
+ end
+ end
+
+ function mathtweaks.copyaccents(target,original,parameters)
+ local characters = target.characters
+ for stretching, entry in sortedhash(mapping) do
+ local alias = entry[1]
+ if alias ~= stretching then
+ local stretchingdata = characters[stretching]
+ if stretchingdata then
+ -- we need to nil [x|y]offsets
+ characters[alias] = {
+ width = stretchingdata.width,
+ height = stretchingdata.height,
+ depth = stretchingdata.depth,
+ next = stretchingdata.next,
+ commands = { charcommand[stretching] },
+ topaccent = stretchingdata.topaccent,
+ -- unicode = stretching, -- when we aliasize to combiners
+ unicode = alias, -- when we keep the original
+ }
+ if trace_tweaking then
+ report_tweak("extensibles accent %U copied to %U",target,original,stretching,alias)
+ end
+ end
+ end
+ end
+ end
+
+end
+
+do
+
+ local single <const> = 0x003D
+ local double <const> = 0x2A75
+ local triple <const> = 0x2A76
+
+ function mathtweaks.addequals(target,original,parameters)
+ local characters = target.characters
+ local basechar = characters[single]
+ local width = basechar.width
+ local height = basechar.height
+ local depth = basechar.depth
+ local advance = (parameters.advance or 1/20) * width
+ local char = charcommand[single]
+ local left = leftcommand[advance]
+ characters[double] = {
+ unicode = double,
+ width = 2*width - 1*advance,
+ height = height,
+ depth = depth,
+ callback = "devirtualize",
+ commands = { char, left, char },
+ }
+ characters[triple] = {
+ unicode = triple,
+ width = 3*width - 2*advance,
+ height = height,
+ depth = depth,
+ callback = "devirtualize",
+ commands = { char, left, char, left, char },
+ }
+ if trace_tweaking then
+ report_tweak("double %U and triple %U equals added",target,original,double,triple)
+ end
+ end
+
+end
+
+do
+
+ -- If we really want, we can have variants that also match radicals but in practice
+ -- radicals and actuarians are never seen together. We could also have a smaller
+ -- extender.
+
+ local radical <const> = 0x0221A
+ local actuarian <const> = 0x020E7
+ local nairautca <const> = 0xFE942
+ local placehold <const> = 0xFE943
+
+ function mathtweaks.addactuarian(target,original,parameters)
+ local characters = target.characters
+ local parameters = target.parameters
+ local linewidth = target.MathConstants.RadicalRuleThickness -- make option
+ local basechar = characters[radical]
+ local baseheight = basechar.height
+ local basedepth = basechar.depth
+ local basetotal = baseheight + basedepth
+ local used = baseheight
+ characters[actuarian] = {
+ width = 2*linewidth,
+ height = baseheight,
+ depth = basedepth,
+ unicode = actuarian,
+ callback = "devirtualize",
+ commands = {
+ downcommand[basedepth],
+ { "rule", basetotal, linewidth },
+ },
+ vparts = {
+ {
+ advance = basetotal,
+ ["end"] = used,
+ glyph = actuarian,
+ start = 0,
+ },
+ {
+ advance = basetotal,
+ ["end"] = 0,
+ extender = 1,
+ glyph = actuarian,
+ start = used,
+ },
+ }
+ }
+ characters[placehold] = {
+ width = 2*linewidth,
+ height = baseheight,
+ depth = basedepth,
+ unicode = actuarian, -- whatever
+ callback = "devirtualize",
+ commands = {
+ rightcommand[linewidth],
+ downcommand[basedepth],
+ { "rule", basetotal, 0 },
+ },
+ }
+ characters[nairautca] = {
+ width = 2*linewidth,
+ height = baseheight,
+ depth = basedepth,
+ unicode = actuarian, -- whatever
+ callback = "devirtualize",
+ -- commands = {
+ -- rightcommand[linewidth],
+ -- downcommand[basedepth],
+ -- { "rule", basetotal, linewidth },
+ -- },
+ commands = {
+ rightcommand[linewidth],
+ upcommand[baseheight-4*linewidth],
+ { "rule", 4*linewidth, linewidth },
+ },
+ vparts = {
+ {
+ advance = basetotal,
+ ["end"] = used,
+ extender = 1,
+ glyph = placehold,
+ start = 0,
+ },
+ {
+ advance = basetotal,
+ ["end"] = 0,
+ glyph = nairautca,
+ start = used,
+ },
+ }
+ }
+ if trace_tweaking then
+ report_tweak("actuarian %U added",target,original,actuarian)
+ end
+ end
+
+end
+
+do
+
+ -- todo: make callback because we can delay it but then we need to stack
+ -- callbacks
+
+ -- todo: use named privates for snippets
+
+ local list = {
+ { 0x302, 0xFE944, 0xFE945 },
+ { 0x303, 0xFE946, 0xFE947 },
+ { 0x30C, 0xFE948, 0xFE949 },
+ }
+
+ function mathtweaks.addfourier(target,original,parameters)
+ local characters = target.characters
+ for i=1,#list do
+ local entry = list[i]
+ local basecode = entry[1]
+ local fouriercode = entry[2]
+ local movecode = entry[3]
+ local basechar = characters[basecode]
+ local scale = parameters.scale or 1
+ local variant = parameters.variant
+ if variant then
+ for i=1,variant do
+ local okay = basechar.next
+ if okay then
+ basecode = okay
+ basechar = characters[basecode]
+ else
+ break
+ end
+ end
+ end
+ local baseheight = scale * (basechar.height or 0)
+ local basedepth = scale * (basechar.depth or 0)
+ local basewidth = scale * (basechar.width or 0)
+ local used = baseheight/2
+ local total = baseheight + basedepth
+ characters[movecode] = {
+ width = basewidth,
+ height = used,
+ unicode = basecode,
+ -- callback = "devirtualize",
+ commands = {
+ downcommand[used],
+ { "rule", used, 0 },
+ },
+ }
+ characters[fouriercode] = {
+ width = basewidth,
+ height = baseheight,
+ depth = basedepth,
+ unicode = basecode,
+ -- callback = "devirtualize",
+ commands = {
+ scale == 1 and charcommand[basecode] or { "slot", 0, basecode, scale, scale },
+ },
+ vparts = {
+ {
+ advance = used,
+ ["end"] = used,
+ extender = 1,
+ glyph = movecode,
+ start = used,
+ },
+ {
+ advance = total,
+ ["end"] = 0,
+ glyph = fouriercode,
+ start = total,
+ },
+ }
+ }
+ if trace_tweaking then
+ report_tweak("fourier %U added using %U",target,original,basecode,fourier)
+ end
+ end
+ end
+
+end
+
+do
+
+ -- \im{\left\Uchar"007C \frac{1}{2} \right\Uchar"007C}
+ -- \im{\left\Uchar"2016 \frac{1}{2} \right\Uchar"2016}
+ -- \im{\left\Uchar"2980 \frac{1}{2} \right\Uchar"2980}
+
+ local single <const> = 0x007C
+ local double <const> = 0x2016
+ local triple <const> = 0x2980
+
+ local function extensible(unicode,total,used)
+ return {
+ {
+ advance = total,
+ ["end"] = used,
+ glyph = unicode,
+ start = 0,
+ },
+ {
+ advance = total,
+ ["end"] = 0,
+ extender = 1,
+ glyph = unicode,
+ start = used,
+ },
+ }
+ end
+
+ function mathtweaks.addbars(target,original,parameters)
+ local characters = target.characters
+ local basechar = characters[single]
+ local width = basechar.width
+ local height = basechar.height
+ local depth = basechar.depth
+ local advance = (parameters.advance or 1/10) * width
+ local used = 0.8*height
+ local total = height + depth
+ characters[single].vparts = extensible(single,total,used)
+ characters[double] = {
+ unicode = double,
+ width = 2*width - 1*advance,
+ height = height,
+ depth = depth,
+ vparts = extensible(double,total,used),
+ callback = "devirtualize",
+ commands = {
+ charcommand[single],
+ leftcommand[advance],
+ charcommand[single],
+ },
+ }
+ characters[triple] = {
+ unicode = triple,
+ width = 3*width - 2*advance,
+ height = height,
+ depth = depth,
+ vparts = extensible(triple,total,used),
+ callback = "devirtualize",
+ commands = {
+ charcommand[single],
+ leftcommand[advance],
+ charcommand[single],
+ leftcommand[advance],
+ charcommand[single],
+ },
+ }
+ if trace_tweaking then
+ report_tweak("triple bars %U added",target,original,triple)
+ end
+ end
+
+end
+
+do
+
+ -- lucida: \im{\cdot \ldot \cdots \ldots}
+
+ local snormal <const> = 0x002E
+ local sraised <const> = 0x22C5
+
+ local tnormal <const> = 0x2026
+ local traised <const> = 0x22EF
+
+ function mathtweaks.fixellipses(target,original,parameters)
+ local characters = target.characters
+ local function fix(normal,raised)
+ local normalone = characters[normal]
+ if normalone then
+ local raisedone = copytable(normalone)
+ characters[raised] = raisedone
+ raisedone.unicode = weird
+ local height = raisedone.height
+ local yoffset = (parameters.yoffset or 2) * height
+ raisedone.yoffset = yoffset
+ raisedone.height = height + yoffset
+ if trace_tweaking then
+ report_tweak("taking %U from %U",target,original,weird,normal)
+ end
+ end
+ end
+ fix(snormal,sraised)
+ fix(tnormal,traised)
+ end
+
+end
+
+do
+
-- For Ton, who needs the high minus and plus for calculator signs in Dutch
-- school math books.
@@ -1700,32 +2361,41 @@ local function applytweaks(when,target,original)
if apply_tweaks then
local goodies = original.goodies
if goodies then
- for i=1,#goodies do
- local goodie = goodies[i]
- local mathematics = goodie.mathematics
- local tweaks = mathematics and mathematics.tweaks
- if type(tweaks) == "table" then
- tweaks = tweaks[when]
+ local tweaked = target.tweaked or { }
+ if tweaked[when] then
+ if trace_defining then
+ report_math("tweaking math of %a @ %p (%s: %s)",target.properties.fullname,target.parameters.size,when,"done")
+ end
+ else
+ for i=1,#goodies do
+ local goodie = goodies[i]
+ local mathematics = goodie.mathematics
+ local tweaks = mathematics and mathematics.tweaks
if type(tweaks) == "table" then
- if trace_defining then
- report_math("tweaking math of %a @ %p (%s)",target.properties.fullname,target.parameters.size,when)
- end
- for i=1,#tweaks do
- local tweak = tweaks[i]
- local tvalue = type(tweak)
- if type(tweak) == "table" then
- local action = mathtweaks[tweak.tweak or ""]
- if action then
- if original then
- action(target,original,tweak)
- else
- action(target,tweak)
+ tweaks = tweaks[when]
+ if type(tweaks) == "table" then
+ if trace_defining then
+ report_math("tweaking math of %a @ %p (%s: %s)",target.properties.fullname,target.parameters.size,when,"okay")
+ end
+ for i=1,#tweaks do
+ local tweak = tweaks[i]
+ local tvalue = type(tweak)
+ if type(tweak) == "table" then
+ local action = mathtweaks[tweak.tweak or ""]
+ if action then
+ if original then
+ action(target,original,tweak)
+ else
+ action(target,tweak)
+ end
end
end
end
end
end
end
+ tweaked[when] = true
+ target.tweaked = tweaked
end
end
else
diff --git a/tex/context/base/mkxl/math-def.mkxl b/tex/context/base/mkxl/math-def.mkxl
index abfd1f74e..d46506add 100644
--- a/tex/context/base/mkxl/math-def.mkxl
+++ b/tex/context/base/mkxl/math-def.mkxl
@@ -54,14 +54,14 @@
\definemathfunction [injlim] [\c!mathlimits=\v!yes]
\definemathfunction [ker]
\definemathfunction [lg]
-\definemathfunction [liminf] [\c!mathlimits=\v!yes]
-\definemathfunction [limsup] [\c!mathlimits=\v!yes]
-\definemathfunction [lim] [\c!mathlimits=\v!yes]
+\definemathfunction [liminf] [\c!mathlimits=\v!auto]
+\definemathfunction [limsup] [\c!mathlimits=\v!auto]
+\definemathfunction [lim] [\c!mathlimits=\v!auto]
\definemathfunction [ln]
\definemathfunction [log]
\definemathfunction [median] [\c!mathlimits=\v!yes]
-\definemathfunction [max] [\c!mathlimits=\v!yes]
-\definemathfunction [min] [\c!mathlimits=\v!yes]
+\definemathfunction [max] [\c!mathlimits=\v!auto]
+\definemathfunction [min] [\c!mathlimits=\v!auto]
\definemathfunction [mod] [\c!mathlimits=\v!yes]
%definemathfunction [div] [\c!mathlimits=\v!yes]
\definemathfunction [projlim] [\c!mathlimits=\v!yes]
diff --git a/tex/context/base/mkxl/math-del.mklx b/tex/context/base/mkxl/math-del.mklx
new file mode 100644
index 000000000..875ccdeee
--- /dev/null
+++ b/tex/context/base/mkxl/math-del.mklx
@@ -0,0 +1,87 @@
+%D \module
+%D [ file=math-del,
+%D version=2022.07.29,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=delimiteds,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Math Macros / Delimited}
+
+\unprotect
+
+%D This is a variant on radicals but in the end it was better to just define a new
+%D environment for this. This is because we don't have the rule and we want a
+%D different control over the spacing. We also don't want the degree.
+
+% Todo: also add the mp plugin here but that more fun stuff for later (when we pick
+% up school math).
+
+\installcorenamespace{mathdelimited}
+\installcorenamespace{mathdelimitedalternative}
+
+\installcommandhandler \??mathdelimited {mathdelimited} \??mathdelimited
+
+\setupmathdelimited
+ [\c!alternative=\v!normal,
+ \c!mpoffset=.25\exheight,
+ \c!topoffset=\zeropoint,
+ \c!bottomoffset=\zeropoint,
+ \c!height=\zeropoint,
+ \c!depth=\zeropoint,
+ \c!strut=\v!height,
+ \c!source=\zerocount,
+ \c!left=\zerocount,
+ \c!right=\zerocount,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\zeropoint]
+
+\appendtoks
+ \frozen\protected\instance\edefcsname\currentmathdelimited\endcsname{\math_delimited_handle{\currentmathdelimited}}
+\to \everydefinemathdelimited
+
+\mutable\let\currentmathdelimited\empty
+
+\tolerant\protected\def\math_delimited_handle#tag#*[#settings]#:#body%
+ {\begingroup
+ \edef\currentmathdelimited{#tag}%
+ \setupcurrentmathdelimited[#settings]%
+ \math_delimited_alternative{%
+ \begincsname\??mathwhateverstrut\mathdelimitedparameter\c!strut\endcsname
+ \scratchdimen\mathdelimitedparameter\c!leftmargin \relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi
+ #body%
+ \scratchdimen\mathdelimitedparameter\c!rightmargin\relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi
+ }%
+ \endgroup}
+
+\def\math_delimited_alternative{\csname\??mathdelimitedalternative\mathdelimitedparameter\c!alternative\endcsname}
+
+\protected\def\math_delimited_common
+ {\Udelimited
+ \s!height\dimexpr\mathdelimitedparameter\c!height+\mathdelimitedparameter\c!topoffset\relax
+ \s!depth \dimexpr\mathdelimitedparameter\c!depth+\mathdelimitedparameter\c!bottomoffset\relax
+ \s!source\numexpr\namedboxanchor{\mathdelimitedparameter\c!source}\relax
+ \s!style \normalmathstyle
+ \zerocount \mathdelimitedparameter\c!left
+ \zerocount \mathdelimitedparameter\c!right
+ \relax}
+
+\defcsname\??mathdelimitedalternative\v!default\endcsname % #body%
+ {\math_delimited_common} % {#body}}
+
+\defcsname\??mathdelimitedalternative\v!normal\endcsname#body%
+ {\edef\p_color{\mathdelimitedparameter\c!color}%
+ \ifempty\p_color
+ \math_delimited_common{#body}% {} really needed as \rootdelimited expands first
+ \else
+ \pushcolor[\p_color]%
+ \math_delimited_common
+ {\popcolor#body}%
+ \fi}
+
+\protect \endinput
diff --git a/tex/context/base/mkxl/math-fbk.lmt b/tex/context/base/mkxl/math-fbk.lmt
index c219bb34f..185bb0d55 100644
--- a/tex/context/base/mkxl/math-fbk.lmt
+++ b/tex/context/base/mkxl/math-fbk.lmt
@@ -25,16 +25,14 @@ local setmetatableindex = table.setmetatableindex
local fallbacks = { }
mathematics.fallbacks = fallbacks
-local helpers = fonts.helpers
-local prependcommands = helpers.prependcommands
-local charcommand = helpers.commands.char
-local leftcommand = helpers.commands.left
-local rightcommand = helpers.commands.right
-local upcommand = helpers.commands.up
-local downcommand = helpers.commands.down
-local dummycommand = helpers.commands.dummy
-local popcommand = helpers.commands.pop
-local pushcommand = helpers.commands.push
+----- helpers = fonts.helpers
+----- charcommand = helpers.commands.char
+----- leftcommand = helpers.commands.left
+----- rightcommand = helpers.commands.right
+----- upcommand = helpers.commands.up
+----- downcommand = helpers.commands.down
+----- popcommand = helpers.commands.pop
+----- pushcommand = helpers.commands.push
local virtualcharacters = { }
local virtualforced = { }
@@ -172,79 +170,79 @@ end
local addextra = mathematics.extras.add
-addextra(0xFE350) -- MATHEMATICAL DOUBLE ARROW LEFT END
-addextra(0xFE351) -- MATHEMATICAL DOUBLE ARROW MIDDLE PART
-addextra(0xFE352) -- MATHEMATICAL DOUBLE ARROW RIGHT END
-
-local leftarrow = charcommand[0x2190]
-local relbar = charcommand[0x2212]
-local rightarrow = charcommand[0x2192]
-
-virtualcharacters[0xFE350] = function(data)
- -- return combined(data,0x2190,0x2212) -- leftarrow relbar
- local charone = data.characters[0x2190]
- local chartwo = data.characters[0x2212]
- if charone and chartwo then
- local size = data.size/2
- return {
- width = chartwo.width,
- height = size,
- depth = size,
- commands = {
- pushcommand,
- downcommand[size/2],
- leftarrow,
- popcommand,
- upcommand[size/2],
- relbar,
- }
- }
- end
-end
-
-virtualcharacters[0xFE351] = function(data)
- -- return combined(data,0x2212,0x2212) -- relbar, relbar (isn't that just equal)
- local char = data.characters[0x2212]
- if char then
- local size = data.size/2
- return {
- width = char.width,
- height = size,
- depth = size,
- commands = {
- pushcommand,
- downcommand[size/2],
- relbar,
- popcommand,
- upcommand[size/2],
- relbar,
- }
- }
- end
-end
-
-virtualcharacters[0xFE352] = function(data)
- -- return combined(data,0x2192,0x2212) -- rightarrow relbar
- local charone = data.characters[0x2192]
- local chartwo = data.characters[0x2212]
- if charone and chartwo then
- local size = data.size/2
- return {
- width = chartwo.width,
- height = size,
- depth = size,
- commands = {
- pushcommand,
- downcommand[size/2],
- relbar,
- popcommand,
- rightcommand[chartwo.width - charone.width],
- upcommand[size/2],
- rightarrow,
- }
- }
- end
-end
+-- addextra(0xFE350) -- MATHEMATICAL DOUBLE ARROW LEFT END
+-- addextra(0xFE351) -- MATHEMATICAL DOUBLE ARROW MIDDLE PART
+-- addextra(0xFE352) -- MATHEMATICAL DOUBLE ARROW RIGHT END
+--
+-- local leftarrow = charcommand[0x2190]
+-- local relbar = charcommand[0x2212]
+-- local rightarrow = charcommand[0x2192]
+--
+-- virtualcharacters[0xFE350] = function(data)
+-- -- return combined(data,0x2190,0x2212) -- leftarrow relbar
+-- local charone = data.characters[0x2190]
+-- local chartwo = data.characters[0x2212]
+-- if charone and chartwo then
+-- local size = data.size/2
+-- return {
+-- width = chartwo.width,
+-- height = size,
+-- depth = size,
+-- commands = {
+-- pushcommand,
+-- downcommand[size/2],
+-- leftarrow,
+-- popcommand,
+-- upcommand[size/2],
+-- relbar,
+-- }
+-- }
+-- end
+-- end
+--
+-- virtualcharacters[0xFE351] = function(data)
+-- -- return combined(data,0x2212,0x2212) -- relbar, relbar (isn't that just equal)
+-- local char = data.characters[0x2212]
+-- if char then
+-- local size = data.size/2
+-- return {
+-- width = char.width,
+-- height = size,
+-- depth = size,
+-- commands = {
+-- pushcommand,
+-- downcommand[size/2],
+-- relbar,
+-- popcommand,
+-- upcommand[size/2],
+-- relbar,
+-- }
+-- }
+-- end
+-- end
+--
+-- virtualcharacters[0xFE352] = function(data)
+-- -- return combined(data,0x2192,0x2212) -- rightarrow relbar
+-- local charone = data.characters[0x2192]
+-- local chartwo = data.characters[0x2212]
+-- if charone and chartwo then
+-- local size = data.size/2
+-- return {
+-- width = chartwo.width,
+-- height = size,
+-- depth = size,
+-- commands = {
+-- pushcommand,
+-- downcommand[size/2],
+-- relbar,
+-- popcommand,
+-- rightcommand[chartwo.width - charone.width],
+-- upcommand[size/2],
+-- rightarrow,
+-- }
+-- }
+-- end
+-- end
---------------------------------------------------------------------------------
-- these are moved to math-act.lmt (keep this code)
@@ -649,124 +647,144 @@ end
---------------------------------------------------------------------------------
-- these might move to math-act.lmt
---------------------------------------------------------------------------------
-
+--
-- actuarian (beware: xits has an ugly one)
-addextra(0xFE940) -- SMALL ANNUITY SYMBOL
-
-local function actuarian(data)
- local characters = data.target.characters
- local parameters = data.target.parameters
- local basechar = characters[0x0078] -- x (0x0058 X) or 0x1D431
- local linewidth = parameters.xheight / 10
- local basewidth = basechar.width
- local baseheight = basechar.height
- return {
- -- todo: add alttext
- -- compromise: lm has large hooks e.g. \actuarial{a}
- width = basewidth + 4 * linewidth,
- height = basechar.height,
- depth = basechar.depth,
- unicode = 0x20E7,
- commands = {
- rightcommand[2 * linewidth],
- downcommand[- baseheight - 3 * linewidth],
- { "rule", linewidth, basewidth + 4 * linewidth },
- leftcommand[linewidth],
- downcommand[baseheight + 4 * linewidth],
- { "rule", baseheight + 5 * linewidth, linewidth },
- },
- }
-end
-
-virtualcharacters[0x020E7] = actuarian -- checked
-virtualcharacters[0xFE940] = actuarian -- unchecked
-
-local function equals(data,unicode,snippet,advance,n) -- mathpair needs them
- local characters = data.target.characters
- local parameters = data.target.parameters
- local basechar = characters[snippet]
- local advance = advance * parameters.quad
- return {
- unicode = unicode,
- width = n*basechar.width - (n-1)*advance,
- height = basechar.height,
- depth = basechar.depth,
- commands = {
- charcommand[snippet],
- leftcommand[advance],
- charcommand[snippet],
- n > 2 and leftcommand[advance] or nil,
- n > 2 and charcommand[snippet] or nil,
- },
- }
-end
-
-virtualcharacters[0x2A75] = function(data) return equals(data,0x2A75,0x003D, 1/5,2) end -- ==
-virtualcharacters[0x2A76] = function(data) return equals(data,0x2A76,0x003D, 1/5,3) end -- ===
-virtualcharacters[0x2980] = function(data) return equals(data,0x2980,0x007C,-1/8,3) end -- |||
-
----------------------------------------------------------------------------------
--- these might move to math-act.lmt -- lucida needs this
----------------------------------------------------------------------------------
+-- addextra(0xFE940) -- SMALL ANNUITY SYMBOL
+--
+-- local function actuarian(data)
+-- local characters = data.target.characters
+-- local parameters = data.target.parameters
+-- local basechar = characters[0x0078] -- x (0x0058 X) or 0x1D431
+-- local linewidth = parameters.xheight / 10
+-- local basewidth = basechar.width
+-- local baseheight = basechar.height
+-- return {
+-- -- todo: add alttext
+-- -- compromise: lm has large hooks e.g. \actuarial{a}
+-- width = basewidth + 4 * linewidth,
+-- height = basechar.height,
+-- depth = basechar.depth,
+-- unicode = 0x20E7,
+-- commands = {
+-- rightcommand[2 * linewidth],
+-- downcommand[- baseheight - 3 * linewidth],
+-- { "rule", linewidth, basewidth + 4 * linewidth },
+-- leftcommand[linewidth],
+-- downcommand[baseheight + 4 * linewidth],
+-- { "rule", baseheight + 5 * linewidth, linewidth },
+-- },
+-- }
+-- end
+--
+-- virtualcharacters[0x020E7] = actuarian -- checked
+-- -----------------[0xFE940] = actuarian -- unchecked
-virtualcharacters[0x305] = function(data)
- local target = data.target
- local height = target.parameters.xheight/8
- local width = target.parameters.emwidth/2
- local depth = height
- local used = 0.8 * width
- return {
- width = width,
- height = height,
- depth = depth,
- commands = { { "rule", height, width } },
- hparts = {
- {
- advance = width,
- ["end"] = used,
- glyph = 0x305,
- start = 0,
- },
- {
- advance = width,
- ["end"] = 0,
- extender = 1,
- glyph = 0x305,
- start = used,
- },
- }
- }
-end
+-- local function equals(data,unicode,snippet,advance,n) -- mathpair needs them
+-- local characters = data.target.characters
+-- local parameters = data.target.parameters
+-- local basechar = characters[snippet]
+-- local width = n*basechar.width
+-- local advance = advance * parameters.quad -- for equals
+-- return {
+-- unicode = unicode,
+-- width = width - (n-1)*advance,
+-- height = basechar.height,
+-- depth = basechar.depth,
+-- commands = {
+-- charcommand[snippet],
+-- leftcommand[advance],
+-- charcommand[snippet],
+-- n > 2 and leftcommand[advance] or nil,
+-- n > 2 and charcommand[snippet] or nil,
+-- },
+-- }
+-- end
+--
+-- virtualcharacters[0x2A75] = function(data) return equals(data,0x2A75,0x003D, 1/5,2) end -- ==
+-- virtualcharacters[0x2A76] = function(data) return equals(data,0x2A76,0x003D, 1/5,3) end -- ===
+--
+-- local function bars(data,unicode,snippet,advance,n) -- mathpair needs them
+-- local characters = data.target.characters
+-- local parameters = data.target.parameters
+-- local basechar = characters[snippet]
+-- local width = n*basechar.width
+-- advance = advance * width
+-- return {
+-- unicode = unicode,
+-- width = width - (n-1)*advance,
+-- height = basechar.height,
+-- depth = basechar.depth,
+-- callback = "devirtualize",
+-- commands = {
+-- charcommand[snippet],
+-- leftcommand[advance],
+-- charcommand[snippet],
+-- n > 2 and leftcommand[advance] or nil,
+-- n > 2 and charcommand[snippet] or nil,
+-- },
+-- }
+-- end
+--
+-- virtualcharacters[0x2980] = function(data) return bars(data,0x2980,0x007C,1/10,3) end -- |||
---------------------------------------------------------------------------------
--- these might move to math-act.lmt
+-- these might move to math-act.lmt -- lucida needs this -- no longer used
---------------------------------------------------------------------------------
-local function threedots(data,shift)
- local characters = data.target.characters
- local parameters = data.target.parameters
- local periodchar = characters[0x002E]
- local pluschar = characters[0x002B]
- local period = charcommand[0x002E]
- local periodwd = periodchar.width or 0
- local periodht = periodchar.height or 0
- local perioddp = periodchar.depth or 0
- local offset = 0
- if shift then
- local plusht = pluschar.height or 0
- local plusdp = pluschar.depth or 0
- local axis = (plusdp + plusht)//2 - plusdp
- offset = axis - periodht//2
- periodht = axis + periodht//2
- end
- return {
- width = 3*periodwd,
- height = periodht,
- depth = 0,
- commands = { upcommand[offset], period, period, period }
- }
-end
+-- virtualcharacters[0x305] = function(data)
+-- local target = data.target
+-- local height = target.parameters.xheight/8
+-- local width = target.parameters.emwidth/2
+-- local depth = height
+-- local used = 0.8 * width
+-- return {
+-- width = width,
+-- height = height,
+-- depth = depth,
+-- commands = { { "rule", height, width } },
+-- hparts = {
+-- {
+-- advance = width,
+-- ["end"] = used,
+-- glyph = 0x305,
+-- start = 0,
+-- },
+-- {
+-- advance = width,
+-- ["end"] = 0,
+-- extender = 1,
+-- glyph = 0x305,
+-- start = used,
+-- },
+-- }
+-- }
+-- end
-virtualcharacters[0x2026] = function(data) return threedots(data,false) end virtualforced[0x2026] = true
-virtualcharacters[0x22EF] = function(data) return threedots(data, true) end virtualforced[0x22EF] = true
+-- local function threedots(data,shift)
+-- local characters = data.target.characters
+-- local parameters = data.target.parameters
+-- local periodchar = characters[0x002E]
+-- local pluschar = characters[0x002B]
+-- local period = charcommand[0x002E]
+-- local periodwd = periodchar.width or 0
+-- local periodht = periodchar.height or 0
+-- local perioddp = periodchar.depth or 0
+-- local offset = 0
+-- if shift then
+-- local plusht = pluschar.height or 0
+-- local plusdp = pluschar.depth or 0
+-- local axis = (plusdp + plusht)//2 - plusdp
+-- offset = axis - periodht//2
+-- periodht = axis + periodht//2
+-- end
+-- return {
+-- width = 3*periodwd,
+-- height = periodht,
+-- depth = 0,
+-- commands = { upcommand[offset], period, period, period }
+-- }
+-- end
+--
+-- virtualcharacters[0x2026] = function(data) return threedots(data,false) end -- virtualforced[0x2026] = true
+-- virtualcharacters[0x22EF] = function(data) return threedots(data, true) end -- virtualforced[0x22EF] = true
diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl
index 8f2a4d405..aeed32fcf 100644
--- a/tex/context/base/mkxl/math-fen.mkxl
+++ b/tex/context/base/mkxl/math-fen.mkxl
@@ -130,10 +130,17 @@
\s!axis
\s!exact}
+% \startTEXpage[offset=1dk]
+% \dm { \fenced[brace][middle="7C] { \frac{p}{q} \fence p,q \in \naturalnumbers} }\par
+% \dm { \fenced[brace][middle=`|] { \frac{p}{q} \fence p,q \in \naturalnumbers} }\par
+% \dm { \fenced[brace][middle=124] { \frac{p}{q} \fence p,q \in \naturalnumbers} }\par
+% \dm { \fenced[brace][middle=|] { \frac{p}{q} \fence p,q \in \naturalnumbers} }
+% \stopTEXpage
+
\newconstant\c_math_fenced_class
\integerdef \c_math_fence_check \zerocount
-\def\math_fenced_common#1#2#3#4% \Uwhatever class symbol source
+\protected\def\math_fenced_common#1#2#3#4% \Uwhatever class symbol source
{\c_math_fenced_class\mathfenceparameter#2\relax
\math_fenced_check_size_mismatch % we need to catch an unbalanced \F as we are sequential
\ifconditional\c_math_fenced_sized
@@ -198,10 +205,13 @@
\s!source
\numexpr\namedboxanchor{\mathfenceparameter#4}\relax
\math_fenced_trace
- \Udelimiter
- \mathghostcode
- \fam
- \ifx\p_fence\v!none\zerocount\else\p_fence\relax\fi
+ \ifx\p_fence\v!none
+ \Udelimiter\mathghostcode\fam\zerocount
+ \orelse\ifchknum\p_fence\or
+ \Udelimiter\mathghostcode\fam\p_fence
+ \else
+ \p_fence
+ \fi
\fi
% we could use \s!attr \c_math_fenced_stack here
\ifconditional\c_math_fenced_sized
@@ -459,13 +469,10 @@
\fi
\math_fenced_force_size\bigmathdelimitervariant\c_math_fenced_level\relax}
-% todo: | in mathmode letter
-%
-% \appendtoks
-% \let\bar\letterbar
-% \to \everymathematics
-%
-% but then we don't have it in embedded text too so ...
+\appendtoks
+ \enforced\aliased\let|\letterbar
+ %\enforced\aliased\let\bar\letterbar
+\to \everymathematics
\definemathfence [parenthesis] [\c!left="0028,\c!right="0029]
\definemathfence [bracket] [\c!left="005B,\c!right="005D]
@@ -578,127 +585,163 @@
\pushoverloadmode
-\protected\def\left {\afterassignment\math_left \let\nexttoken}
-\protected\def\right {\afterassignment\math_right \let\nexttoken}
-\protected\def\middle{\afterassignment\math_middle\let\nexttoken}
-
-\popoverloadmode
-
-% \let\leftorright\relax
-
-\newconditional\c_math_fenced_done
-\newconditional\c_math_fenced_unknown \settrue\c_math_fenced_unknown
-
-\permanent\protected\def\installmathfencepair#1#2#3#4%
- {\letcsname\??mathleft \normalmeaningless#1\endcsname#2%
- \letcsname\??mathright\normalmeaningless#3\endcsname#4}
-
-\def\math_unknown_left {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\Uleft \nexttoken\fi}
-\def\math_unknown_right {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\Uright \nexttoken\fi}
-\def\math_unknown_middle{\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\Umiddle nooverflow \nexttoken\fi}
-
-\letcsname\??mathleft \s!unknown\endcsname\math_unknown_left
-\letcsname\??mathright \s!unknown\endcsname\math_unknown_right
-\letcsname\??mathmiddle\s!unknown\endcsname\math_unknown_middle
-
-\def\math_left
- {\settrue\c_math_fenced_done
- \ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_left
- \fi}
-
-\def\math_right
- {\settrue\c_math_fenced_done
- \ifcsname\??mathright\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_right
- \fi}
-
-\def\math_middle
- {\settrue\c_math_fenced_done
- \ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_middle
- \fi}
-
-\permanent\protected\def\lfence#1%
- {\settrue\c_math_fenced_done
- \let\nexttoken#1%
- \ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_left
- \fi}
-
-\permanent\protected\def\rfence#1%
- {\settrue\c_math_fenced_done
- \let\nexttoken#1%
- \ifcsname\??mathright\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_right
- \fi}
-
-\permanent\protected\def\mfence#1%
- {\settrue\c_math_fenced_done
- \let\nexttoken#1%
- \ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname
- \expandafter\lastnamedcs
- \else
- \expandafter\math_unknown_middle
- \fi}
-
-\normalexpanded{\installmathfencepair {|\detokenize {|}} \Ldoublebar {|\detokenize {|}} \Rdoublebar}
-\normalexpanded{\installmathfencepair {|\detokenize{||}} \Ltriplebar {|\detokenize{||}} \Rtriplebar}
+% \protected\def\left {\afterassignment\math_left \let\nexttoken}
+% \protected\def\right {\afterassignment\math_right \let\nexttoken}
+% \protected\def\middle{\afterassignment\math_middle\let\nexttoken}
-\installmathfencepair \bgroup \Lbrace \egroup \Rbrace
-\installmathfencepair \egroup \Rbracemirrored \bgroup \Lbracemirrored
+% \im { \left{ \frac{1}{2} \right} }
+% \im { \left\bgroup \frac{1}{2} \right\egroup }
+% \im { \left\{ \frac{1}{2} \right\} }
+% \im { \left\lbrace \frac{1}{2} \right\rbrace }
-\installmathfencepair \letteropenbrace \Lbrace \letterclosebrace \Rbrace % as we escape in mp textexts
-
-\installmathfencepair . \Lnothing . \Rnothing
-\installmathfencepair . \Rnothingmirrored . \Lnothingmirrored
+\def\math_fenced_x_left
+ {\advance\c_math_fence_nesting\plusone
+ \ifx\math_fenced_x_p_left\bgroup\let\math_fenced_x_p_left\letterleftbrace\fi
+ \math_fenced_common\Uleft\c!leftclass\math_fenced_x_p_left\c!leftsource}
-\installmathfencepair [ \Lbracket ] \Rbracket
-\installmathfencepair ] \Rbracketmirrored [ \Lbracketmirrored
+\def\math_fenced_x_right
+ {\ifx\math_fenced_x_p_right\egroup\let\math_fenced_x_p_right\letterrightbrace\fi
+ \math_fenced_common\Uright\c!rightclass\math_fenced_x_p_right\c!rightsource
+ \advance\c_math_fence_nesting\minusone}
-\installmathfencepair ( \Lparenthesis ) \Rparenthesis
-\installmathfencepair ) \Rparenthesismirrored ( \Lparenthesismirrored
+\def\math_fenced_x_middle_normal
+ {\math_fenced_common\Umiddle\c!middleclass\math_fenced_x_p_middle\c!middlesource}
-\installmathfencepair < \Langle > \Rangle
-\installmathfencepair > \Ranglemirrored < \Langlemirrored
+% the expandafter permits \left\Uchar...
-\installmathfencepair / \Lsolidus / \Rsolidus
-%installmathfencepair / \Rsolidusmirrored / \Lsolidusmirrored
+\protected\def\lfence{\afterassignment\math_fenced_x_left \expandafter\let\expandafter\math_fenced_x_p_left}
+\protected\def\rfence{\afterassignment\math_fenced_x_right \expandafter\let\expandafter\math_fenced_x_p_right}
+\protected\def\mfence{\afterassignment\math_fenced_x_middle\expandafter\let\expandafter\math_fenced_x_p_middle}
-\installmathfencepair | \Lbar | \Rbar
-%installmathfencepair | \Rbarmirrored | \Lbarmirrored
+\aliased\let\left \lfence
+\aliased\let\right \rfence
+\aliased\let\middle\mfence
-\installmathfencepair ⌊ \Lfloor ⌋ \Rfloor
-\installmathfencepair ⌋ \Rfloormirrored ⌊ \Lfloormirrored
-\installmathfencepair ⌈ \Lceiling ⌉ \Rceiling
-\installmathfencepair ⌉ \Rceilingmirrored ⌈ \Lceilingmirrored
+\popoverloadmode
-\installmathfencepair ⟨ \Langle ⟩ \Rangle
-\installmathfencepair ⟩ \Ranglemirrored ⟨ \Langlemirrored
+% \let\leftorright\relax
-\installmathfencepair ⟪ \Ldoubleangle ⟫ \Rdoubleangle
-\installmathfencepair ⟫ \Rdoubleanglemirrored ⟪ \Ldoubleanglemirrored
+\newconditional\c_math_fenced_unknown \settrue\c_math_fenced_unknown
-\installmathfencepair ‖ \Ldoublebar ‖ \Rdoublebar
-%installmathfencepair ‖ \Rdoublebarmirrored ‖ \Ldoublebarmirrored
+% \permanent\protected\def\installmathfencepair#1#2#3#4%
+% {\letcsname\??mathleft \normalmeaningless#1\endcsname#2%
+% \letcsname\??mathright\normalmeaningless#3\endcsname#4}
-\installmathfencepair ⦀ \Ltriplebar ⦀ \Rtriplebar
-%installmathfencepair ⦀ \Rtriplebarmirrored ⦀ \Ltriplebarmirrored
+\permanent\protected\def\installmathfencepair#1#2#3#4%
+ {}
-% \installmathfencepair { \Lbrace } \Rbrace
-% \installmathfencepair } \Rbracemirrored { \Lbracemirrored
+% \def\math_unknown_left {\ifconditional\c_math_fenced_unknown\Uleft \nexttoken\fi}
+% \def\math_unknown_right {\ifconditional\c_math_fenced_unknown\Uright \nexttoken\fi}
+% \def\math_unknown_middle{\ifconditional\c_math_fenced_unknown\Umiddle nooverflow \nexttoken\fi}
-\installmathfencepair ⦗ \Linterval ⦘ \Rinterval
+% \def\math_unknown_left
+% {\let\math_fenced_p_left\nexttoken
+% \math_fenced_left}
+%
+% \def\math_unknown_right
+% {\let\math_fenced_p_right\nexttoken
+% \math_fenced_right}
+%
+% \def\math_unknown_middle
+% {\let\math_fenced_p_middle\nexttoken
+% \math_fenced_middle}
+%
+% \letcsname\??mathleft \s!unknown\endcsname\math_unknown_left
+% \letcsname\??mathright \s!unknown\endcsname\math_unknown_right
+% \letcsname\??mathmiddle\s!unknown\endcsname\math_unknown_middle
+%
+% \def\math_left
+% {\ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_left
+% \fi}
+%
+% \def\math_right
+% {\ifcsname\??mathright\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_right
+% \fi}
+%
+% \def\math_middle
+% {\ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_middle
+% \fi}
+%
+% \permanent\protected\def\lfence#1%
+% {\let\nexttoken#1%
+% \ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_left
+% \fi}
+%
+% \permanent\protected\def\rfence#1%
+% {\let\nexttoken#1%
+% \ifcsname\??mathright\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_right
+% \fi}
+%
+% \permanent\protected\def\mfence#1%
+% {\let\nexttoken#1%
+% \ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname
+% \expandafter\lastnamedcs
+% \else
+% \expandafter\math_unknown_middle
+% \fi}
+
+% \normalexpanded{\installmathfencepair {|\detokenize {|}} \Ldoublebar {|\detokenize {|}} \Rdoublebar}
+% \normalexpanded{\installmathfencepair {|\detokenize{||}} \Ltriplebar {|\detokenize{||}} \Rtriplebar}
+%
+% \installmathfencepair \bgroup \Lbrace \egroup \Rbrace
+% \installmathfencepair \egroup \Rbracemirrored \bgroup \Lbracemirrored
+%
+% \installmathfencepair \letteropenbrace \Lbrace \letterclosebrace \Rbrace % as we escape in mp textexts
+%
+% \installmathfencepair . \Lnothing . \Rnothing
+% \installmathfencepair . \Rnothingmirrored . \Lnothingmirrored
+%
+% \installmathfencepair [ \Lbracket ] \Rbracket
+% \installmathfencepair ] \Rbracketmirrored [ \Lbracketmirrored
+%
+% \installmathfencepair ( \Lparenthesis ) \Rparenthesis
+% \installmathfencepair ) \Rparenthesismirrored ( \Lparenthesismirrored
+%
+% \installmathfencepair < \Langle > \Rangle
+% \installmathfencepair > \Ranglemirrored < \Langlemirrored
+%
+% \installmathfencepair / \Lsolidus / \Rsolidus
+% %installmathfencepair / \Rsolidusmirrored / \Lsolidusmirrored
+%
+% \installmathfencepair | \Lbar | \Rbar
+% %installmathfencepair | \Rbarmirrored | \Lbarmirrored
+%
+% \installmathfencepair ⌊ \Lfloor ⌋ \Rfloor
+% \installmathfencepair ⌋ \Rfloormirrored ⌊ \Lfloormirrored
+% \installmathfencepair ⌈ \Lceiling ⌉ \Rceiling
+% \installmathfencepair ⌉ \Rceilingmirrored ⌈ \Lceilingmirrored
+%
+% \installmathfencepair ⟨ \Langle ⟩ \Rangle
+% \installmathfencepair ⟩ \Ranglemirrored ⟨ \Langlemirrored
+%
+% \installmathfencepair ⟪ \Ldoubleangle ⟫ \Rdoubleangle
+% \installmathfencepair ⟫ \Rdoubleanglemirrored ⟪ \Ldoubleanglemirrored
+%
+% \installmathfencepair ‖ \Ldoublebar ‖ \Rdoublebar
+% %installmathfencepair ‖ \Rdoublebarmirrored ‖ \Ldoublebarmirrored
+%
+% \installmathfencepair ⦀ \Ltriplebar ⦀ \Rtriplebar
+% %installmathfencepair ⦀ \Rtriplebarmirrored ⦀ \Ltriplebarmirrored
+%
+% % \installmathfencepair { \Lbrace } \Rbrace
+% % \installmathfencepair } \Rbracemirrored { \Lbracemirrored
+%
+% \installmathfencepair ⦗ \Linterval ⦘ \Rinterval
\appendtoks
\ignorediscretionaries % so $\mtext{a|b}$ works, this is ok because it's an \hbox
@@ -728,33 +771,33 @@
\aliased\let\Lparen \Lparenthesis
\aliased\let\Rparen \Rparenthesis
-\installmathfencepair \lbrace \Lbrace \rbrace \Rbrace
-\installmathfencepair \lbracket \Lbracket \rbracket \Rbracket
-\installmathfencepair \lbrack \Lbracket \rbracket \Rbracket
-\installmathfencepair \lparenthesis \Lparenthesis \rparenthesis \Rparenthesis
-\installmathfencepair \lparent \Lparenthesis \rparent \Rparenthesis
-\installmathfencepair \lparen \Lparenthesis \rparen \Rparenthesis
-\installmathfencepair \langle \Langle \rangle \Rangle
-\installmathfencepair \llangle \Ldoubleangle \rrangle \Rdoubleangle
-%installmathfencepair \lbar \Lbar \rbar \Rbar
-\installmathfencepair \lVert \Ldoublebar \rVert \Rdoublebar
-\installmathfencepair \vert \Lbar \vert \Rbar
-\installmathfencepair \solidus \Lsolidus \solidus \Rsolidus
-\installmathfencepair \lfloor \Lfloor \rfloor \Rfloor
-\installmathfencepair \lceiling \Lceiling \rceiling \Rceiling
-\installmathfencepair \lceil \Lceiling \rceil \Rceiling
-
-\installmathfencepair \ulcorner \Luppercorner \urcorner \Ruppercorner
-\installmathfencepair \llcorner \Llowercorner \lrcorner \Rlowercorner
-\installmathfencepair \lmoustache \Lmoustache \rmoustache \Rmoustache
-\installmathfencepair \llbracket \Lopenbracket \rrbracket \Ropenbracket
-\installmathfencepair \lgroup \Lgroup \rgroup \Rgroup
-
-\installmathfencepair \linterval \Linterval \rinterval \Rinterval
-%installmathfencepair \linterv \Linterval \rinterv \Rinterval
-\installmathfencepair \lointerval \Linterval \rointerval \Rinterval
-\installmathfencepair \llointerval \Llointerval \rlointerval \Rlointerval
-\installmathfencepair \lrointerval \Lrointerval \rrointerval \Rrointerval
+% \installmathfencepair \lbrace \Lbrace \rbrace \Rbrace
+% \installmathfencepair \lbracket \Lbracket \rbracket \Rbracket
+% \installmathfencepair \lbrack \Lbracket \rbracket \Rbracket
+% \installmathfencepair \lparenthesis \Lparenthesis \rparenthesis \Rparenthesis
+% \installmathfencepair \lparent \Lparenthesis \rparent \Rparenthesis
+% \installmathfencepair \lparen \Lparenthesis \rparen \Rparenthesis
+% \installmathfencepair \langle \Langle \rangle \Rangle
+% \installmathfencepair \llangle \Ldoubleangle \rrangle \Rdoubleangle
+% %installmathfencepair \lbar \Lbar \rbar \Rbar
+% \installmathfencepair \lVert \Ldoublebar \rVert \Rdoublebar
+% \installmathfencepair \vert \Lbar \vert \Rbar
+% \installmathfencepair \solidus \Lsolidus \solidus \Rsolidus
+% \installmathfencepair \lfloor \Lfloor \rfloor \Rfloor
+% \installmathfencepair \lceiling \Lceiling \rceiling \Rceiling
+% \installmathfencepair \lceil \Lceiling \rceil \Rceiling
+
+% \installmathfencepair \ulcorner \Luppercorner \urcorner \Ruppercorner
+% \installmathfencepair \llcorner \Llowercorner \lrcorner \Rlowercorner
+% \installmathfencepair \lmoustache \Lmoustache \rmoustache \Rmoustache
+% \installmathfencepair \llbracket \Lopenbracket \rrbracket \Ropenbracket
+% \installmathfencepair \lgroup \Lgroup \rgroup \Rgroup
+
+% \installmathfencepair \linterval \Linterval \rinterval \Rinterval
+% %installmathfencepair \linterv \Linterval \rinterv \Rinterval
+% \installmathfencepair \lointerval \Linterval \rointerval \Rinterval
+% \installmathfencepair \llointerval \Llointerval \rlointerval \Rlointerval
+% \installmathfencepair \lrointerval \Lrointerval \rrointerval \Rrointerval
\aliased\let\textlbar\lbar \aliased\let\mathlbar\Lbar
\aliased\let\textrbar\lbar \aliased\let\mathrbar\Rbar
@@ -764,20 +807,31 @@
% \setupmathfences[color=darkgreen]
-\permanent\protected\def\{{\mathortext\lbrace \letterleftbrace } % or maybe a chardef
-\permanent\protected\def\}{\mathortext\rbrace \letterrightbrace } % or maybe a chardef
-\permanent\protected\def\[{\mathortext\lbracket \letterleftbracket } % or maybe a chardef
-\permanent\protected\def\]{\mathortext\rbracket \letterrightbracket } % or maybe a chardef
-\permanent\protected\def\({\mathortext\lparenthesis\letterleftparenthesis } % or maybe a chardef
-\permanent\protected\def\){\mathortext\rparenthesis\letterrightparenthesis} % or maybe a chardef
-\permanent\protected\def\|{\mathortext\vert \letterbar } % or maybe a chardef
-%permanent\protected\def\/{\mathortext\solidus \letterslash } % or maybe a chardef
-
-\installmathfencepair \{ \Lbrace \} \Rbrace
-\installmathfencepair \[ \Lbracket \] \Rbracket
-\installmathfencepair \( \Lparenthesis \) \Rparenthesis
-\installmathfencepair \< \Langle \> \Rangle
-\installmathfencepair \| \Lbar \| \Rbar
+% \permanent\protected\def\{{\mathortext\lbrace \letterleftbrace } % or maybe a chardef
+% \permanent\protected\def\}{\mathortext\rbrace \letterrightbrace } % or maybe a chardef
+% \permanent\protected\def\[{\mathortext\lbracket \letterleftbracket } % or maybe a chardef
+% \permanent\protected\def\]{\mathortext\rbracket \letterrightbracket } % or maybe a chardef
+% \permanent\protected\def\({\mathortext\lparenthesis\letterleftparenthesis } % or maybe a chardef
+% \permanent\protected\def\){\mathortext\rparenthesis\letterrightparenthesis} % or maybe a chardef
+% \permanent\protected\def\|{\mathortext\vert \letterbar } % or maybe a chardef
+% %permanent\protected\def\/{\mathortext\solidus \letterslash } % or maybe a chardef
+%
+% \installmathfencepair \{ \Lbrace \} \Rbrace
+% \installmathfencepair \[ \Lbracket \] \Rbracket
+% \installmathfencepair \( \Lparenthesis \) \Rparenthesis
+% \installmathfencepair \< \Langle \> \Rangle
+% \installmathfencepair \| \Lbar \| \Rbar
+
+% isn't that already the case .. still needed in lua mode ?
+
+\aliased\let\{\letterleftbrace
+\aliased\let\}\letterrightbrace
+\aliased\let\[\letterleftbracket
+\aliased\let\]\letterrightbracket
+\aliased\let\(\letterleftparenthesis
+\aliased\let\)\letterrightparenthesis
+\aliased\let\|\letterbar
+%aliased\let\/\letterslash % italic correction
\popoverloadmode
@@ -853,11 +907,6 @@
%definemathfence [fancybracket] [bracket] [command=yes,color=red]
-% experimental accents:
-%
-% \definemathoverextensible [top] [hoed] ["FE302]
-% \definemathoverextensible [top] [slang] ["FE303]
-
%D The nested fences recovery code is needed for mathml and the original
%D code can still be found in the mkiv file.
@@ -1044,4 +1093,14 @@
\c_math_fence_nesting\zerocount
\to \everymathematics
+%D Experiment:
+
+\permanent\protected\def\autofences
+ {\setmathoptions\mathopencode\numexpression
+ \setmathoptions\mathopencode bor \autoinjectclassoptioncode
+ \relax
+ \setmathoptions\mathclosecode\numexpression
+ \setmathoptions\mathclosecode bor \autoinjectclassoptioncode
+ \relax}
+
\protect
diff --git a/tex/context/base/mkxl/math-fnt.lmt b/tex/context/base/mkxl/math-fnt.lmt
index 2f80cdfa6..23a69d0ec 100644
--- a/tex/context/base/mkxl/math-fnt.lmt
+++ b/tex/context/base/mkxl/math-fnt.lmt
@@ -40,10 +40,19 @@ local function register_extensible(font,char,style,box)
local fontdata = chardata[font]
local oldchar = fontdata[char]
local unicode = oldchar.unicode or char
- local private = fonts.helpers.setboxdirectly(font,unicode,box)
+-- we cannot have self referencing t3 fonts
+local oldcommands = oldchar.oldcommands
+local newcommands = oldchar.commands
+if oldcommands then
+ oldchar.commands = oldcommands
+end
+ local private = fonts.helpers.setboxdirectly(font,unicode,box)
-- we saved a scaled glyph stream so we now use an unscaled one ...
local g = new_glyph(font,private,al)
local n = new_hlist(g)
+if newcommands then
+ oldchar.commands = newcommands
+end
-- local newchar = {
-- unicode = unicode,
diff --git a/tex/context/base/mkxl/math-frc.mkxl b/tex/context/base/mkxl/math-frc.mkxl
index 3577a6b2f..06150b3ea 100644
--- a/tex/context/base/mkxl/math-frc.mkxl
+++ b/tex/context/base/mkxl/math-frc.mkxl
@@ -86,6 +86,7 @@
\c!method=\v!vertical,
\c!mathnumeratorstyle=\mathfractionparameter\c!mathstyle,
\c!mathdenominatorstyle=\mathfractionparameter\c!mathstyle,
+ \c!mathclass=\mathfractioncode,
\c!alternative=\v!inner,
\c!margin=\zeropoint,
% \c!rulethickness=.1\exheight, % was .25 for above / atop
@@ -201,13 +202,15 @@
\installlocalcurrenthandler\??mathfractions {mathfraction}
\tolerant\protected\def\math_frac#1#*[#2]%%
- {\mathfrac\bgroup
+ {\beginmathgroup
%
\setlocalmathfractioncurrent{#1}% \edef\currentmathfraction{#1}%
%
\ifparameter#2\or\setupcurrentmathfraction[#2]\fi
%
\edef\p_math_fraction_fences{\mathfractionparameter\c!fences}%
+ %
+ \mathatom \s!class \mathfractionparameter\c!mathclass\bgroup
\ifempty\p_math_fraction_fences \else
\math_fenced_fenced_start\p_math_fraction_fences
\fi
@@ -232,7 +235,8 @@
{\ifempty\p_math_fraction_fences \else
\math_fenced_fenced_stop\p_math_fraction_fences
\fi
- \egroup}
+ \egroup
+ \endmathgroup}
\integerdef\math_frac_no_delim "2E % or just \zerocount
@@ -251,42 +255,46 @@
\installcorenamespace{fractionmethods}
-\defcsname\??fractionmethods\v!vertical \v!no \v!none\endcsname{\Uatop}
-\defcsname\??fractionmethods\v!vertical \v!no \endcsname{\Uatopwithdelims
+\defcsname\??fractionmethods\v!vertical \v!no \v!none\endcsname{\Uatop}
+\defcsname\??fractionmethods\v!vertical \v!no \endcsname{\Uatopwithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo}
+\defcsname\??fractionmethods\v!vertical \v!yes \v!none\endcsname{\Uabove}
+\defcsname\??fractionmethods\v!vertical \v!yes \endcsname{\Uabovewithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo}
+\defcsname\??fractionmethods\v!vertical \v!hidden \v!none\endcsname{\Uabove}
+\defcsname\??fractionmethods\v!vertical \v!hidden \endcsname{\Uabovewithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo}
+\defcsname\??fractionmethods\v!vertical \v!auto \v!none\endcsname{\Uover}
+\defcsname\??fractionmethods\v!vertical \v!auto \endcsname{\Uoverwithdelims
\Udelimiter\zerocount\fam\scratchcounterone
\Udelimiter\zerocount\fam\scratchcountertwo}
-\defcsname\??fractionmethods\v!vertical \v!yes \v!none\endcsname{\Uabove}
-\defcsname\??fractionmethods\v!vertical \v!yes \endcsname{\Uabovewithdelims
- \Udelimiter\zerocount\fam\scratchcounterone
- \Udelimiter\zerocount\fam\scratchcountertwo}
-\defcsname\??fractionmethods\v!vertical \v!hidden\v!none\endcsname{\Uabove
- norule}
-\defcsname\??fractionmethods\v!vertical \v!hidden \endcsname{\Uabovewithdelims
- \Udelimiter\zerocount\fam\scratchcounterone
- \Udelimiter\zerocount\fam\scratchcountertwo
- norule}
-\defcsname\??fractionmethods\v!vertical \v!auto \v!none\endcsname{\Uover}
-\defcsname\??fractionmethods\v!vertical \v!auto \endcsname{\Uoverwithdelims
- \Udelimiter\zerocount\fam\scratchcounterone
- \Udelimiter\zerocount\fam\scratchcountertwo}
-\defcsname\??fractionmethods\v!horizontal \v!none\endcsname{\Uskewed
- \Udelimiter\zerocount\fam\scratchcounterthree
- \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
-\defcsname\??fractionmethods\v!horizontal \endcsname{\Uskewedwithdelims
- \Udelimiter\zerocount\fam\scratchcounterone
- \Udelimiter\zerocount\fam\scratchcountertwo
- \Udelimiter\zerocount\fam\scratchcounterthree
- \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
-\defcsname\??fractionmethods\v!line \v!none\endcsname{\Uskewed
- \Udelimiter\zerocount\fam\scratchcounterthree
- \s!noaxis \space
- \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
-\defcsname\??fractionmethods\v!line \endcsname{\Uskewedwithdelims
- \Udelimiter\zerocount\fam\scratchcounterone
- \Udelimiter\zerocount\fam\scratchcountertwo
- \Udelimiter\zerocount\fam\scratchcounterthree
- \s!noaxis \space
- \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
+\defcsname\??fractionmethods\v!vertical \v!symbol \v!none\endcsname{\Ustretched
+ \Udelimiter\zerocount\fam\scratchcounterthree}
+\defcsname\??fractionmethods\v!vertical \v!symbol \endcsname{\Ustretchedwithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo
+ \Udelimiter\zerocount\fam\scratchcounterthree}
+\defcsname\??fractionmethods\v!horizontal \v!none\endcsname{\Uskewed
+ \Udelimiter\zerocount\fam\scratchcounterthree
+ \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
+\defcsname\??fractionmethods\v!horizontal \endcsname{\Uskewedwithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo
+ \Udelimiter\zerocount\fam\scratchcounterthree
+ \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
+\defcsname\??fractionmethods\v!line \v!none\endcsname{\Uskewed
+ \Udelimiter\zerocount\fam\scratchcounterthree
+ \s!noaxis \space
+ \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
+\defcsname\??fractionmethods\v!line \endcsname{\Uskewedwithdelims
+ \Udelimiter\zerocount\fam\scratchcounterone
+ \Udelimiter\zerocount\fam\scratchcountertwo
+ \Udelimiter\zerocount\fam\scratchcounterthree
+ \s!noaxis \space
+ \s!hfactor \numexpr\mathfractionparameter\c!hfactor\relax}
\def\math_frac_command_u
{\edef\p_method {\mathfractionparameter\c!method}%
@@ -295,7 +303,7 @@
\scratchcounterone \mathfractionparameter\c!left \relax
\scratchcountertwo \mathfractionparameter\c!right \relax
\scratchcounterthree \mathfractionparameter\c!middle \relax
- \csname
+ \ifcsname
\??fractionmethods
\p_method
\ifx\p_method\v!horizontal
@@ -310,7 +318,7 @@
\v!none
\fi
\fi
- \endcsname
+ \endcsname \lastnamedcs \else \csname\??fractionmethods\v!vertical\v!auto\endcsname \fi
\usedcolorparameterattributes{\mathfractionparameter\c!color}%
thickness \ifx\p_thickness\v!font
\zeropoint
@@ -318,11 +326,13 @@
\else
\dimexpr\p_thickness\relax
\fi
+ \s!class \numexpr\mathfractionparameter\c!mathclass\relax
\s!vfactor \numexpr\mathfractionparameter\c!vfactor\relax
- \s!source \number\namedboxanchor{\mathfractionparameter\c!source}}
+ \s!source \number\namedboxanchor{\mathfractionparameter\c!source}}
\protected\defcsname\??mathfractionalternative\v!inner\endcsname#1#2%
- {\math_frac_command_u
+ {%\beginmathgroup
+ \math_frac_command_u
{\dousecolorparameter{\mathfractionparameter\c!topcolor}%
\math_fraction_margin_kern
\usemathstyleparameter\mathfractionparameter\c!mathnumeratorstyle
@@ -333,6 +343,7 @@
\usemathstyleparameter\mathfractionparameter\c!mathdenominatorstyle
\m_fractions_strut_bot#2%
\math_fraction_margin_kern}%
+ %\endmathgroup
\math_frac_wrapup}
\protected\defcsname\??mathfractionalternative\v!outer\endcsname#1#2%
@@ -656,7 +667,7 @@
%D These macros are based on Michael J.~Downes posting on comp.text.tex on 2001/12/06
%D but adapted a bit.
%D
-%D Does anyone actually use this kinf of stuff?
+%D Does anyone actually use this kind of stuff?
\permanent\protected\def\splitfrac #1#2{{\textstyle {{\textstyle#1\quad\hfill}\normalabove\zeropoint{\textstyle\hfill\quad\mathstrut#2}}}}
\permanent\protected\def\splitdfrac#1#2{{\displaystyle{{ #1\quad\hfill}\normalabove\zeropoint{ \hfill\quad\mathstrut#2}}}}
@@ -678,6 +689,54 @@
[\c!hfactor=20,
\c!vfactor=10]
+%D And a cheat (for Mikael):
+
+% \definemathfraction
+% [afrac]
+% [\c!mathclass=\mathrelationcode,
+% \c!rule=\v!symbol,
+% \c!middle="2192]
+
+%D New stretched fraction with middle symnbol:
+
+% \enableexperiments[math.arrows] % enforce construction of these in math-act
+%
+% {
+% tweak = "addarrows",
+% list = { [0x3D] = { squeeze = .85, yoffset = .0975 } } -- bonum
+% },
+
+\definemathfraction
+ [relfraction]
+ [\c!mathclass=\mathrelationcode,
+ \c!margin=.25\emwidth,
+ \c!rule=\v!symbol]
+
+\definemathfraction [bartext] [relfraction] [\c!middle="203E]
+\definemathfraction [leftarrowtext] [relfraction] [\c!middle="2190]
+\definemathfraction [rightarrowtext] [relfraction] [\c!middle="2192]
+\definemathfraction [twoheadleftarrowtext] [relfraction] [\c!middle="219E]
+\definemathfraction [twoheadrightarrowtext] [relfraction] [\c!middle="21A0]
+\definemathfraction [reltext] [relfraction] [\c!middle="002D]
+\definemathfraction [equaltext] [relfraction] [\c!middle="003D]
+\definemathfraction [mapstotext] [relfraction] [\c!middle="21A6]
+\definemathfraction [hookleftarrowtext] [relfraction] [\c!middle="21A9]
+\definemathfraction [hookrightarrowtext] [relfraction] [\c!middle="21AA]
+\definemathfraction [leftharpoondowntext] [relfraction] [\c!middle="21BD]
+\definemathfraction [leftharpoonuptext] [relfraction] [\c!middle="21BC]
+\definemathfraction [rightharpoondowntext] [relfraction] [\c!middle="21C1]
+\definemathfraction [rightharpoonuptext] [relfraction] [\c!middle="21C0]
+\definemathfraction [rightoverleftarrowtext] [relfraction] [\c!middle="21C4]
+\definemathfraction [leftrightharpoonstext] [relfraction] [\c!middle="21CB]
+\definemathfraction [rightleftharpoonstext] [relfraction] [\c!middle="21CC]
+\definemathfraction [triplereltext] [relfraction] [\c!middle="2261]
+\definemathfraction [leftrightarrowtext] [relfraction] [\c!middle="27F7]
+\definemathfraction [rightleftarrowtext] [relfraction] [\c!middle="27F7]
+\definemathfraction [Leftarrowtext] [relfraction] [\c!middle="27F8]
+\definemathfraction [Rightarrowtext] [relfraction] [\c!middle="27F9]
+\definemathfraction [Leftrightarrowtext] [relfraction] [\c!middle="27FA]
+\definemathfraction [Rightleftarrowtext] [relfraction] [\c!middle="27FA]
+
\protect \endinput
% I have no clue what \mthfrac and \mthsqrt are supposed to do but
diff --git a/tex/context/base/mkxl/math-ini.lmt b/tex/context/base/mkxl/math-ini.lmt
index 0af62a45e..81ac23f43 100644
--- a/tex/context/base/mkxl/math-ini.lmt
+++ b/tex/context/base/mkxl/math-ini.lmt
@@ -52,6 +52,8 @@ local setmathcode = tex.setmathcode
local setdelcode = tex.setdelcode
local texintegerdef = tex.integerdef
+setdelcode = function() end
+
-- This is relatively new and experimental:
do
@@ -135,15 +137,18 @@ do
end
end
- function dictionaries.registercharacter(group,index,description)
+ function dictionaries.registercharacter(group,index,description,class)
local d = names[group] -- can be number or string
if d then
data[d][index] = description or true
local v = variants[index]
+ if not class then
+ class = true
+ end
if v then
- v[d] = true
+ v[d] = class
else
- variants[index] = { [d] = true }
+ variants[index] = { [d] = class}
end
if not defaults[index] then
defaults[index] = d
@@ -170,25 +175,27 @@ do
local function trace(n,properties,group,index,font,char)
-- local properties, group, index, font, char = nodes.nuts.getchardict(nodes.nuts.tonut(n))
- local char = fontchardata[font][char]
- if char or whatdetail == "all" then
- local unicode = char and char.unicode
- if unicode then
- local groupname = groups[group]
- local indexname = false
- if groupname then
- indexname = data[group][index] -- dictionaries.data
- else
- groupname = "unknown"
- end
- if not indexname or indexname == true then
- indexname = chardata[unicode]
- indexname = indexname and indexname.description or "unknown"
- end
- if not f_dictionary then
- f_dictionary = formatters["properties [%04X:%04X:%04X] [%s] %U : %s"]
+ if properties ~= 0 or group ~= 0 or index ~= 0 then
+ local char = fontchardata[font][char]
+ if char or whatdetail == "all" then
+ local unicode = char and char.unicode
+ if unicode then
+ local groupname = groups[group]
+ local indexname = false
+ if groupname then
+ indexname = data[group][index] -- dictionaries.data
+ else
+ groupname = "unknown"
+ end
+ if not indexname or indexname == true then
+ indexname = chardata[unicode]
+ indexname = indexname and indexname.description or "unknown"
+ end
+ if not f_dictionary then
+ f_dictionary = formatters["properties [%04X:%04X:%04X] [%s] %U : %s"]
+ end
+ return f_dictionary(properties,group,index,groupname,unicode,indexname)
end
- return f_dictionary(properties,group,index,groupname,unicode,indexname)
end
end
end
@@ -217,25 +224,29 @@ do
-- abandoned but we can use it as a start and playground anyway.
--
-- The char-def.lua file will have mathgroup entries reflecting this.
+ --
+ -- This is a good one (with nice roll-overs too):
+ --
+ -- https://en.wikipedia.org/wiki/List_of_mathematical_symbols_by_subject
if environment.initex then
local registergroup = mathematics.dictionaries.registergroup
registergroup("default")
- registergroup("binary arithmic")
+ registergroup("binary arithmetic")
registergroup("binary linear algebra")
registergroup("binary logical")
registergroup("binary relation")
registergroup("binary set")
- registergroup("constant arithmic")
+ registergroup("constant arithmetic")
registergroup("constant set")
registergroup("differential")
registergroup("integral")
registergroup("interval")
registergroup("lambda")
registergroup("limit")
- registergroup("nary arithmic")
+ registergroup("nary arithmetic")
registergroup("nary constructor")
registergroup("nary functional")
registergroup("nary linear algebra")
@@ -249,7 +260,7 @@ do
registergroup("partial") -- partial differential
registergroup("product")
registergroup("quantifier")
- registergroup("unary arithmic")
+ registergroup("unary arithmetic")
registergroup("unary elementary")
registergroup("unary functional")
registergroup("unary linear algebra")
@@ -358,6 +369,10 @@ registerengineclass("unspaced")
registerengineclass("experimental")
registerengineclass("fake")
+registerengineclass("maybeordinary")
+registerengineclass("mayberelation")
+registerengineclass("maybebinary")
+
local specialclasses = tex.specialmathclasscodes
classes["all"] = specialclasses["all"] classnames[specialclasses["all"] ] = "all"
@@ -366,8 +381,8 @@ classes["end"] = specialclasses["end"] classnames[specialclasses["end"] ]
callback.register("get_noad_class", function(n) return classnames[n] end)
-local function registerprivateclass(name)
- local class = classes[name]
+local function registerprivateclass(name,parent)
+ local class = parent and classes[parent] or classes[name]
if not class then
lastprivateclass = lastprivateclass + 1
class = lastprivateclass
@@ -395,19 +410,22 @@ implement {
actions = registerengineclass,
}
-local topaccent_class = registerprivateclass("topaccent")
-local botaccent_class = registerprivateclass("botaccent")
-local delimiter_class = registerprivateclass("delimiter")
-local root_class = registerprivateclass("root")
-local prime_class = registerprivateclass("prime")
+local topaccent_class = registerprivateclass("topaccent")
+local bottomaccent_class = registerprivateclass("bottomaccent")
+local delimiter_class = registerprivateclass("delimiter")
+local root_class = registerprivateclass("root")
+local prime_class = registerprivateclass("prime")
+
+registerprivateclass("botaccent","bottomaccent")
local accents = allocate {
- accent = true, -- some can be both
- topaccent = true, [topaccent_class] = true,
- botaccent = true, [botaccent_class] = true,
- under = true, [under_class] = true,
- over = true, [over_class] = true,
- unknown = false,
+ accent = true, -- some can be both
+ topaccent = true, [topaccent_class] = true,
+ bottomaccent = true, [bottomaccent_class] = true,
+ botaccent = true,
+ under = true, [under_class] = true,
+ over = true, [over_class] = true,
+ unknown = false,
}
local integer_value = tokens.values.integer
@@ -503,8 +521,8 @@ do
group = groupnames[group] or 0
if group ~= 0 then
-- which one
- registercharacter(group,unicode)
- -- registercharacter(group,slot)
+ registercharacter(group,unicode,nil,class)
+ -- registercharacter(group,slot,nil,class)
end
end
return mset, dset
@@ -521,18 +539,18 @@ do
end
end
- local f_accent = formatters[ [[\defUmathtopaccent \%s{%X}{%X}{%X}]] ]
- local f_fixedtopaccent = formatters[ [[\defUmathfixedtopaccent \%s{%X}{%X}{%X}]] ]
- local f_fixedbotaccent = formatters[ [[\defUmathfixedbotaccent \%s{%X}{%X}{%X}]] ]
- local f_topaccent = formatters[ [[\defUmathtopaccent \%s{%X}{%X}{%X}]] ]
- local f_botaccent = formatters[ [[\defUmathbotaccent \%s{%X}{%X}{%X}]] ]
- local f_over = formatters[ [[\defUdelimiterover \%s{%X}{%X}{%X}]] ]
- local f_under = formatters[ [[\defUdelimiterunder\%s{%X}{%X}{%X}]] ]
- local f_fence = formatters[ [[\defUdelimiter \%s{%X}{%X}{%X}]] ]
- local f_delimiter = formatters[ [[\defUdelimiter \%s{%X}{%X}{%X}]] ]
- local f_radical = formatters[ [[\defUradical \%s{%X}{%X}]] ]
- local f_root = formatters[ [[\defUroot \%s{%X}{%X}]] ]
- local f_char = formatters[ [[\defUmathchar \%s{%X}{%X}{%X}]] ]
+ local f_accent = formatters[ [[\defUmathtopaccent \%s{%X}{%X}{%X}]] ]
+ local f_fixedtopaccent = formatters[ [[\defUmathfixedtopaccent \%s{%X}{%X}{%X}]] ]
+ local f_fixedbottomaccent = formatters[ [[\defUmathfixedbottomaccent \%s{%X}{%X}{%X}]] ]
+ local f_topaccent = formatters[ [[\defUmathtopaccent \%s{%X}{%X}{%X}]] ]
+ local f_bottomaccent = formatters[ [[\defUmathbottomaccent \%s{%X}{%X}{%X}]] ]
+ local f_over = formatters[ [[\defUdelimiterover \%s{%X}{%X}{%X}]] ]
+ local f_under = formatters[ [[\defUdelimiterunder\%s{%X}{%X}{%X}]] ]
+ local f_fence = formatters[ [[\defUdelimiter \%s{%X}{%X}{%X}]] ]
+ local f_delimiter = formatters[ [[\defUdelimiter \%s{%X}{%X}{%X}]] ]
+ local f_radical = formatters[ [[\defUradical \%s{%X}{%X}]] ]
+ local f_root = formatters[ [[\defUroot \%s{%X}{%X}]] ]
+ local f_char = formatters[ [[\defUmathchar \%s{%X}{%X}{%X}]] ]
local texmathchardef = tex.mathchardef
@@ -540,9 +558,10 @@ do
if class == accent_class then
ctx_sprint(f_topaccent(name,0,family,slot))
elseif class == topaccent_class then
+ -- only widegrave widehat widetilde : still needed?
ctx_sprint((stretch and f_topaccent or f_fixedtopaccent)(name,0,family,slot))
- elseif class == botaccent_class then
- ctx_sprint((stretch and f_botaccent or f_fixedbotaccent)(name,0,family,slot))
+ elseif class == bottomaccent_class then
+ ctx_sprint((stretch and f_bottomaccent or f_fixedbottomaccent)(name,0,family,slot))
elseif class == over_class then
ctx_sprint(f_over(name,0,family,slot))
elseif class == under_class then
@@ -561,7 +580,7 @@ do
if group then
group = groupnames[group] or 0
if group ~= 0 then
- texmathchardef(name,engine,family,slot,"permanent",0,group,slot)
+ texmathchardef(name,engine,family,slot,"permanent",0x1,group,slot)
return
end
end
@@ -639,10 +658,11 @@ do
end
end
for i=1,#spec do
- local m = spec[i]
- local name = m.name
- local class = m.class or class
- local group = m.group or group
+ local m = spec[i]
+ local name = m.name
+ local class = m.class or class
+ local group = m.group or group
+ local stretch = m.stretch or stretch
if class then
class = classes[class] or ordinary_class
else
@@ -898,7 +918,7 @@ do
name = "utfmathcommandbelow",
public = true,
actions = { utfmathcommand, context },
- arguments = { "argument", false, "'botaccent'","'under'" }
+ arguments = { "argument", false, "'bottomaccent'","'under'" }
}
implement {
@@ -921,7 +941,7 @@ do
name = "doifelseutfmathbelow",
public = true,
actions = { utfmathaccent, ctx_doifelsesomething },
- arguments = { "argument", false, "'botaccent'", "'under'" }
+ arguments = { "argument", false, "'bottomaccent'", "'under'" }
}
implement {
diff --git a/tex/context/base/mkxl/math-ini.mkxl b/tex/context/base/mkxl/math-ini.mkxl
index 9dd9675f3..5b5610ff5 100644
--- a/tex/context/base/mkxl/math-ini.mkxl
+++ b/tex/context/base/mkxl/math-ini.mkxl
@@ -1,4 +1,4 @@
- %D \module
+%D \module
%D [ file=math-ini,
%D version=2008.01.02,
%D title=\CONTEXT\ Math Macros,
@@ -182,11 +182,35 @@
\setnewconstant\mathallcode \mathclassvalue all
\setnewconstant\mathfakecode \mathclassvalue fake
-%setnewconstant\mathtopaccentcode \mathclassvalue topaccent % these are private and above 31
-%setnewconstant\mathbotaccentcode \mathclassvalue botaccent % these are private and above 31
-%setnewconstant\mathdelimitercode \mathclassvalue delimiter % these are private and above 31
-%setnewconstant\mathrootcode \mathclassvalue root % these are private and above 31
-%setnewconstant\mathprimecode \mathclassvalue prime % these are private and above 31
+%D \starttyping
+%D \enabletrackers[math.suspicious]
+%D
+%D \Umathchardef \foo \mathmaybeordinarycode 0 `o
+%D \Umathchardef \oof \mathmayberelationcode 0 `=
+%D \Umathchardef \ofo \mathmaybebinarycode 0 `+
+%D
+%D \starttext
+%D $ \foo _ 1 \ofo \foo _ 2 \oof \foo _ 3 + 4 $
+%D \stoptext
+%D \stoptyping
+%D
+%D Gives:
+%D
+%D \starttyping
+%D mathematics > suspicious > class 36, U+1D45C 𝑜
+%D mathematics > suspicious > class 38, U+0002B +
+%D mathematics > suspicious > class 37, U+0003D =
+%D \stoptyping
+
+\setnewconstant\mathmaybeordinarycode \mathclassvalue maybeordinary
+\setnewconstant\mathmayberelationcode \mathclassvalue mayberelation
+\setnewconstant\mathmaybebinarycode \mathclassvalue maybebinary
+
+%setnewconstant\mathtopaccentcode \mathclassvalue topaccent % these are private and above 31
+%setnewconstant\mathbottomaccentcode \mathclassvalue bottomaccent % these are private and above 31
+%setnewconstant\mathdelimitercode \mathclassvalue delimiter % these are private and above 31
+%setnewconstant\mathrootcode \mathclassvalue root % these are private and above 31
+%setnewconstant\mathprimecode \mathclassvalue prime % these are private and above 31
%letmathspacing \mathimaginarycode \mathordinarycode \mathordinarycode \mathordinarycode \mathordinarycode
%letmathspacing \mathdifferentialcode \mathordinarycode \mathordinarycode \mathordinarycode \mathordinarycode
@@ -203,6 +227,10 @@
\copymathspacing \mathwrappedcode \mathfractioncode
\copymathspacing \mathunarycode \mathordinarycode
+\copymathspacing \mathmaybeordinarycode \mathordinarycode
+\copymathspacing \mathmayberelationcode \mathrelationcode
+\copymathspacing \mathmaybebinarycode \mathbinarycode
+
\setnewconstant\mathlimopcode \plusone
\setnewconstant\mathnolopcode \plusone
@@ -543,6 +571,11 @@
\noitaliccorrectionclassoptioncode
% +\middlefenceclassoptioncode
+\raiseprimeclassoptioncode
+ +\carryoverlefttopkernclassoptioncode
+ +\carryoverleftbottomkernclassoptioncode
+ +\carryoverrighttopkernclassoptioncode
+ +\carryoverrightbottomkernclassoptioncode
+ +\preferdelimiterdimensionsclassoptioncode
\relax
\setmathoptions\mathfractioncode\numexpr
@@ -567,9 +600,10 @@
\setmathoptions\mathaccentcode\numexpr
\defaultmathclassoptions
+ +\autoinjectclassoptioncode
\relax
-% \m{m^2/x__3}
+% ord spacing but with support for \m{m^2/x__3}
\setmathoptions\mathdivisioncode\numexpr
\nopreslackclassoptioncode
@@ -673,9 +707,11 @@
%D A few compatibility helpers:
-\permanent\def\Umathbotaccent{\Umathaccent \s!bottom }
-\permanent\def\Umathtopaccent{\Umathaccent \s!top }
-\permanent\def\Umathaccents {\Umathaccent \s!both } % strange highlighting
+\permanent\def\Umathbottomaccent{\Umathaccent \s!bottom }
+\permanent\def\Umathtopaccent {\Umathaccent \s!top }
+\permanent\def\Umathaccents {\Umathaccent \s!both } % strange highlighting
+
+\aliased\let\Umathbotaccent\Umathbottomaccent
%D The attributes that we will use (todo: pack some into one but uglier code):
@@ -690,7 +726,7 @@
\definesystemattribute[mathitalics] [public]
\definesystemattribute[mathkernpairs] [public]
\definesystemattribute[mathbidi] [public]
-\definesystemattribute[mathdomain] [public]
+%definesystemattribute[mathdomain] [public]
\definesystemattribute[mathcollapsing] [public]
\definesystemattribute[mathunstack] [public]
\definesystemattribute[mathvariant] [public]
@@ -1062,7 +1098,7 @@
\inherited\setmathspacing \mathordinarycode \mathrelationcode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathordinarycode \mathrelationcode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathordinarycode \mathopencode \allmathstyles \zeromuskip
- \inherited\setmathspacing \mathordinarycode \mathmiddlecode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathordinarycode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathordinarycode \mathmiddlecode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathordinarycode \mathclosecode \allmathstyles \zeromuskip
% \inherited\setmathspacing \mathordinarycode \mathpunctuationcode \allmathstyles \zeromuskip
@@ -1081,7 +1117,7 @@
\inherited\setmathspacing \mathoperatorcode \mathrelationcode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathoperatorcode \mathrelationcode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathoperatorcode \mathopencode \allmathstyles \zeromuskip
- \inherited\setmathspacing \mathoperatorcode \mathmiddlecode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathoperatorcode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathoperatorcode \mathmiddlecode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathoperatorcode \mathclosecode \allmathstyles \zeromuskip
% \inherited\setmathspacing \mathoperatorcode \mathpunctuationcode \allmathstyles \zeromuskip
@@ -1100,7 +1136,7 @@
%% \inherited\setmathspacing \mathbinarycode \mathrelationcode \allmathstyles \zeromuskip
\inherited\setmathspacing \mathbinarycode \mathopencode \allsplitstyles \medmuskip
\inherited\setmathspacing \mathbinarycode \mathopencode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathbinarycode \mathmiddlecode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathbinarycode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathbinarycode \mathmiddlecode \allscriptstyles \pettymuskip
%% \inherited\setmathspacing \mathbinarycode \mathclosecode \allmathstyles \zeromuskip
\inherited\setmathspacing \mathbinarycode \mathpunctuationcode \allsplitstyles \medmuskip
@@ -1179,7 +1215,7 @@
\inherited\setmathspacing \mathpunctuationcode \mathrelationcode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathpunctuationcode \mathopencode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathpunctuationcode \mathopencode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathpunctuationcode \mathmiddlecode \allsplitstyles \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
@@ -1203,7 +1239,7 @@
\inherited\setmathspacing \mathconstructcode \mathrelationcode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathconstructcode \mathopencode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathconstructcode \mathopencode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathconstructcode \mathmiddlecode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathconstructcode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathconstructcode \mathmiddlecode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathconstructcode \mathclosecode \allmathstyles \zeromuskip
\inherited\setmathspacing \mathconstructcode \mathpunctuationcode \allsplitstyles \thinmuskip
@@ -1224,7 +1260,7 @@
\inherited\setmathspacing \mathellipsiscode \mathrelationcode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathellipsiscode \mathopencode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathellipsiscode \mathopencode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathellipsiscode \mathmiddlecode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathellipsiscode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathellipsiscode \mathmiddlecode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathellipsiscode \mathclosecode \allmathstyles \zeromuskip
\inherited\setmathspacing \mathellipsiscode \mathpunctuationcode \allsplitstyles \thinmuskip
@@ -1249,7 +1285,7 @@
\inherited\setmathspacing \mathfractioncode \mathrelationcode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathfractioncode \mathopencode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathfractioncode \mathopencode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathfractioncode \mathmiddlecode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathfractioncode \mathmiddlecode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathfractioncode \mathmiddlecode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathfractioncode \mathclosecode \allmathstyles \pettymuskip
% \inherited\setmathspacing \mathfractioncode \mathpunctuationcode \allmathstyles \zeromuskip
@@ -1270,7 +1306,8 @@
\inherited\setmathspacing \mathradicalcode \mathrelationcode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathradicalcode \mathrelationcode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathradicalcode \mathopencode \allmathstyles \zeromuskip
- % \inherited\setmathspacing \mathradicalcode \mathmiddlecode \allmathstyles \zeromuskip
+ \inherited\setmathspacing \mathradicalcode \mathmiddlecode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathradicalcode \mathmiddlecode \allscriptstyles \pettymuskip
% \inherited\setmathspacing \mathradicalcode \mathclosecode \allmathstyles \zeromuskip
% \inherited\setmathspacing \mathradicalcode \mathpunctuationcode \allmathstyles \zeromuskip
\inherited\setmathspacing \mathradicalcode \mathconstructcode \allsplitstyles \thinmuskip
@@ -1282,24 +1319,29 @@
\inherited\setmathspacing \mathradicalcode \mathradicalcode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathradicalcode \mathradicalcode \allscriptstyles \pettymuskip
%
- \inherited\setmathspacing \mathmiddlecode \mathordinarycode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathordinarycode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathordinarycode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathmiddlecode \mathoperatorcode \allmathstyles \thinmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathoperatorcode \allmathstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathbinarycode \allsplitstyles \medmuskip
\inherited\setmathspacing \mathmiddlecode \mathbinarycode \allscriptstyles \pettymuskip
\inherited\setmathspacing \mathmiddlecode \mathrelationcode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathrelationcode \allscriptstyles \pettymuskip
- % \inherited\setmathspacing \mathmiddlecode \mathopencode \allmathstyles \zeromuskip
- % \inherited\setmathspacing \mathmiddlecode \mathmiddlecode \allmathstyles \zeromuskip
- % \inherited\setmathspacing \mathmiddlecode \mathclosecode \allmathstyles \zeromuskip
- % \inherited\setmathspacing \mathmiddlecode \mathpunctuationcode \allmathstyles \zeromuskip
- \inherited\setmathspacing \mathmiddlecode \mathconstructcode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathopencode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathopencode \allsplitstyles \pettymuskip
+ \inherited\setmathspacing \mathmiddlecode \mathmiddlecode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathmiddlecode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathmiddlecode \mathclosecode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathclosecode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathmiddlecode \mathpunctuationcode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathpunctuationcode \allscriptstyles \pettymuskip
+ \inherited\setmathspacing \mathmiddlecode \mathconstructcode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathconstructcode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathmiddlecode \mathellipsiscode \allsplitstyles \thinmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathellipsiscode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathellipsiscode \allscriptstyles \pettymuskip
- \inherited\setmathspacing \mathmiddlecode \mathfractioncode \allsplitstyles \medmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathfractioncode \allsplitstyles \thickmuskip
\inherited\setmathspacing \mathmiddlecode \mathfractioncode \allscriptstyles \pettymuskip
- % \inherited\setmathspacing \mathmiddlecode \mathradicalcode \allmathstyles \zeromuskip
+ \inherited\setmathspacing \mathmiddlecode \mathradicalcode \allsplitstyles \thickmuskip
+ \inherited\setmathspacing \mathmiddlecode \mathradicalcode \allmathstyles \pettymuskip
%
\inherited\setmathspacing \mathclosecode \mathdifferentialcode \allsplitstyles \thinmuskip
\inherited\setmathspacing \mathclosecode \mathdifferentialcode \allscriptstyles \pettymuskip
@@ -1322,6 +1364,10 @@
\inherited\setmathspacing \mathfunctioncode \mathbinarycode \allsplitstyles \medmuskip
\inherited\setmathspacing \mathfunctioncode \mathbinarycode \allscriptstyles \pettymuskip
%
+ % \im{1\unit{hour} 20 \unit{minute} 56 \unit{second}}
+ %
+ \inherited\setmathspacing \mathdimensioncode \mathdigitcode \allmathstyles \thickmuskip
+ %
\inherited\setmathspacing \mathfakecode \mathallcode \allmathstyles \tinymuskip
\inherited\setmathspacing \mathallcode \mathfakecode \allmathstyles \tinymuskip
%
@@ -3627,29 +3673,30 @@
\permanent\protected\def\mathminus {\ifmmode –\orelse\iffontchar\font`−−\else –\fi}
\permanent\protected\def\mathplusminus{±}
-%D Experiment: (todo: same switch as italic, using \type {\everyswitchmathematics}).
-
-\newcount\c_math_domain_attribute
-
-\def\math_domain_initialize
- {\ifnum\c_math_domain_attribute=\attributeunsetvalue \else
- \clf_initializemathdomain % one time
- \glet\math_domain_initialize\relax
- \fi}
-
-\appendtoks
- \edef\p_domain{\mathematicsparameter\c!domain}%
- \ifempty\p_domain
- \c_math_domain_attribute\attributeunsetvalue
- \else
- \c_math_domain_attribute\clf_getmathdomain\p_domain\relax
- \math_domain_initialize
- \fi
-\to \everyswitchmathematics % only in mathematics
-
-\appendtoks
- \c_attr_mathdomain\c_math_domain_attribute
-\to \everymathematics
+%D Experiment, replaced by dictionaries but for now we keep the code as the domain key
+%D might come back.
+%
+% \newcount\c_math_domain_attribute
+%
+% \def\math_domain_initialize
+% {\ifnum\c_math_domain_attribute=\attributeunsetvalue \else
+% \clf_initializemathdomain % one time
+% \glet\math_domain_initialize\relax
+% \fi}
+%
+% \appendtoks
+% \edef\p_domain{\mathematicsparameter\c!domain}%
+% \ifempty\p_domain
+% \c_math_domain_attribute\attributeunsetvalue
+% \else
+% \c_math_domain_attribute\clf_getmathdomain\p_domain\relax
+% \math_domain_initialize
+% \fi
+% \to \everyswitchmathematics % only in mathematics
+%
+% \appendtoks
+% \c_attr_mathdomain\c_math_domain_attribute
+% \to \everymathematics
\setupmathematics
[\s!italics=3] % for the moment only this one makes sense .. still experimental
diff --git a/tex/context/base/mkxl/math-int.mkxl b/tex/context/base/mkxl/math-int.mkxl
index db7aec7e2..fd5ea37c9 100644
--- a/tex/context/base/mkxl/math-int.mkxl
+++ b/tex/context/base/mkxl/math-int.mkxl
@@ -54,6 +54,6 @@
\to \everyswitchmathematics
\setupmathematics
- [\c!integral=nolimits]
+ [\c!integral=auto]
\protect \endinput
diff --git a/tex/context/base/mkxl/math-lop.mkxl b/tex/context/base/mkxl/math-lop.mkxl
index 044ca0634..8be8fc98d 100644
--- a/tex/context/base/mkxl/math-lop.mkxl
+++ b/tex/context/base/mkxl/math-lop.mkxl
@@ -106,11 +106,18 @@
% TODO: Add 4 (inherited) classes and then define them automatically from char-def
% instead.
+\definemathoperator [integrals]
+\definemathoperator [summations]
+\definemathoperator [products]
+\definemathoperator [operators]
+
\setupmathoperators [integrals] [\c!size=\v!auto,\c!method=\mathematicsparameter\c!integral] % cf Mikael's wish
\setupmathoperators [summations] [\c!size=\v!auto]
\setupmathoperators [products] [\c!size=\v!auto]
\setupmathoperators [operators] [\c!size=\v!auto]
+\setupmathematics[\c!integral=nolimits]
+
\definemathoperator [integral] [integrals] [\c!left="222B] % these might go unless we decide
\definemathoperator [iintegral] [integrals] [\c!left="222C] % to have verbose parents but who
\definemathoperator [iiintegral] [integrals] [\c!left="222D] % will use them
diff --git a/tex/context/base/mkxl/math-noa.lmt b/tex/context/base/mkxl/math-noa.lmt
index 8e5b75ef4..3f77c2225 100644
--- a/tex/context/base/mkxl/math-noa.lmt
+++ b/tex/context/base/mkxl/math-noa.lmt
@@ -57,44 +57,35 @@ local mathmode_code = tex.modelevels.math
local colortracers = nodes.tracers.colors
-local trace_remapping = false registertracker("math.remapping", function(v) trace_remapping = v end)
-local trace_processing = false registertracker("math.processing", function(v) trace_processing = v end)
-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 trace_domains = false registertracker("math.domains", function(v) trace_domains = v end)
-local trace_families = false registertracker("math.families", function(v) trace_families = v end)
-local trace_fences = false registertracker("math.fences", function(v) trace_fences = v end)
-local trace_unstacking = false registertracker("math.unstack", function(v) trace_unstacking = v end)
-local trace_snapping = false registertracker("math.snapping", function(v) trace_snapping = v end)
-local trace_dictionaries = false registertracker("math.dictionaries", function(v) trace_dictionaries = 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)
-
-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 report_domains = logreporter("mathematics","domains")
-local report_families = logreporter("mathematics","families")
-local report_fences = logreporter("mathematics","fences")
-local report_unstacking = logreporter("mathematics","unstack")
-local report_snapping = logreporter("mathematics","snapping")
+-- most trace/report will move into the closures
+
+local trace_remapping = false registertracker("math.remapping", function(v) trace_remapping = v end)
+local trace_processing = false registertracker("math.processing", function(v) trace_processing = v end)
+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)
+
+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")
@@ -135,18 +126,30 @@ local getwidth = nuts.getwidth
local getheight = nuts.getheight
local getdepth = nuts.getdepth
local getwhd = nuts.getwhd
+local getdelimiter = nuts.getdelimiter
+local getleftdelimiter = nuts.getleftdelimiter
+local getrightdelimiter = nuts.getrightdelimiter
+local getnumerator = nuts.getnumerator
+local getdenominator = nuts.getdenominator
+local getdegree = nuts.getdegree
+local gettop = nuts.gettop
+local getmiddle = nuts.getmiddle
+local getbottom = nuts.getbottom
+local getchoice = nuts.getchoice
local getnucleus = nuts.getnucleus
local getsub = nuts.getsub
local getsup = nuts.getsup
local getsubpre = nuts.getsubpre
local getsuppre = nuts.getsuppre
+local getprime = nuts.getprime
local setnucleus = nuts.setnucleus
local setsub = nuts.setsub
local setsup = nuts.setsup
local setsubpre = nuts.setsubpre
local setsuppre = nuts.setsuppre
+local setprime = nuts.setprime
local getoffsets = nuts.getoffsets
local setoffsets = nuts.setoffsets
@@ -292,48 +295,51 @@ local function process(start,what,n,parent)
end
elseif id == noad_code then
-- single characters are like this
- local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
- noad = getsup (start) if noad then process(noad,what,n,start) end -- list
- noad = getsub (start) if noad then process(noad,what,n,start) end -- list
- noad = getsuppre (start) if noad then process(noad,what,n,start) end -- list
- noad = getsubpre (start) if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"prime") if noad then process(noad,what,n,start) end -- list
+ local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsup(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsub(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsuppre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsubpre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getprime(start) if noad then process(noad,what,n,start) end -- list
elseif id == mathchar_code or id == mathtextchar_code or id == delimiter_code then
break
elseif id == subbox_code or id == submlist_code then
- local noad = getlist(start) if noad then process(noad,what,n,start) end -- list (not getlist !)
+ local noad = getlist(start) if noad then process(noad,what,n,start) end -- list (not getlist !)
elseif id == fraction_code then
- local noad = getfield(start,"num") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"denom") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"left") if noad then process(noad,what,n,start) end -- delimiter
- noad = getfield(start,"right") if noad then process(noad,what,n,start) end -- delimiter
+ local noad = getnumerator(start) if noad then process(noad,what,n,start) end -- list
+ noad = getdenominator(start) if noad then process(noad,what,n,start) end -- list
+ noad = getleftdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = getdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = getrightdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
elseif id == math_choice then
- local noad = getfield(start,"display") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"text") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"script") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"scriptscript") if noad then process(noad,what,n,start) end -- list
+ local noad = getchoice(start,1) if noad then process(noad,what,n,start) end -- list
+ noad = getchoice(start,2) if noad then process(noad,what,n,start) end -- list
+ noad = getchoice(start,3) if noad then process(noad,what,n,start) end -- list
+ noad = getchoice(start,4) if noad then process(noad,what,n,start) end -- list
elseif id == fence_code then
- local noad = getfield(start,"delimiter") if noad then process(noad,what,n,start) end -- delimiter
- noad = getfield(start,"top") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"bottom") if noad then process(noad,what,n,start) end -- list
+ local noad = getdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = gettop(start) if noad then process(noad,what,n,start) end -- list
+ noad = getbottom(start) if noad then process(noad,what,n,start) end -- list
elseif id == radical_code then
- local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
- noad = getsup (start) if noad then process(noad,what,n,start) end -- list
- noad = getsub (start) if noad then process(noad,what,n,start) end -- list
- noad = getsuppre (start) if noad then process(noad,what,n,start) end -- list
- noad = getsubpre (start) if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"prime") if noad then process(noad,what,n,start) end -- delimiter
- noad = getfield(start,"left") if noad then process(noad,what,n,start) end -- delimiter
- noad = getfield(start,"degree") if noad then process(noad,what,n,start) end -- list
+ local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsup(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsub(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsuppre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsubpre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getprime(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = getleftdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = getrightdelimiter(start) if noad then process(noad,what,n,start) end -- delimiter
+ noad = getdegree(start) if noad then process(noad,what,n,start) end -- list
elseif id == accent_code then
- local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
- noad = getsup (start) if noad then process(noad,what,n,start) end -- list
- noad = getsub (start) if noad then process(noad,what,n,start) end -- list
- noad = getsuppre (start) if noad then process(noad,what,n,start) end -- list
- noad = getsubpre (start) if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"prime") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"topaccent") if noad then process(noad,what,n,start) end -- list
- noad = getfield(start,"botaccent") if noad then process(noad,what,n,start) end -- list
+ local noad = getnucleus(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsup(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsub(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsuppre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getsubpre(start) if noad then process(noad,what,n,start) end -- list
+ noad = getprime(start) if noad then process(noad,what,n,start) end -- list
+ noad = gettop(start) if noad then process(noad,what,n,start) end -- list
+ noad = getmiddle(start) if noad then process(noad,what,n,start) end -- list
+ noad = getbottom(start) if noad then process(noad,what,n,start) end -- list
-- elseif id == style_code then
-- -- has a next
-- elseif id == parameter_code then
@@ -352,46 +358,49 @@ local function processnested(current,what,n)
local noad = nil
local id = getid(current)
if id == noad_code then
- noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
- noad = getsup (current) if noad then process(noad,what,n,current) end -- list
- noad = getsub (current) if noad then process(noad,what,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,what,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,what,n,current) end -- list
- noad = getfield (current,"prime") if noad then process(noad,what,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,what,n,current) end -- list
elseif id == subbox_code or id == submlist_code then
- noad = getlist(current) if noad then process(noad,what,n,current) end -- list (not getlist !)
+ noad = getlist(current) if noad then process(noad,what,n,current) end -- list (not getlist !)
elseif id == fraction_code then
- noad = getfield(current,"num") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"denom") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"left") if noad then process(noad,what,n,current) end -- delimiter
- noad = getfield(current,"right") if noad then process(noad,what,n,current) end -- delimiter
+ noad = getnumerator(current) if noad then process(noad,what,n,current) end -- list
+ noad = getdenominator(current) if noad then process(noad,what,n,current) end -- list
+ noad = getleftdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
+ noad = getdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
+ noad = getrightdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
elseif id == math_choice then
- noad = getfield(current,"display") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"text") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"script") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"scriptscript") if noad then process(noad,what,n,current) end -- list
+ noad = getchoice(start,1) if noad then process(noad,what,n,current) end -- list
+ noad = getchoice(start,2) if noad then process(noad,what,n,current) end -- list
+ noad = getchoice(start,3) if noad then process(noad,what,n,current) end -- list
+ noad = getchoice(start,4) if noad then process(noad,what,n,current) end -- list
elseif id == fence_code then
- noad = getfield(current,"delimiter") if noad then process(noad,what,n,current) end -- delimiter
- noad = getfield(current,"top") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"bottom") if noad then process(noad,what,n,current) end -- list
+ noad = getdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
+ noad = gettop(current) if noad then process(noad,what,n,current) end -- list
+ noad = getbottom(current) if noad then process(noad,what,n,current) end -- list
elseif id == radical_code then
- noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
- noad = getsup (current) if noad then process(noad,what,n,current) end -- list
- noad = getsub (current) if noad then process(noad,what,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,what,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"prime") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"left") if noad then process(noad,what,n,current) end -- delimiter
- noad = getfield(current,"degree") if noad then process(noad,what,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,what,n,current) end -- list
+ noad = getleftdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
+ noad = getrightdelimiter(current) if noad then process(noad,what,n,current) end -- delimiter
+ noad = getdegree(current) if noad then process(noad,what,n,current) end -- list
elseif id == accent_code then
- noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
- noad = getsup (current) if noad then process(noad,what,n,current) end -- list
- noad = getsub (current) if noad then process(noad,what,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,what,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"prime") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"topaccent") if noad then process(noad,what,n,current) end -- list
- noad = getfield(current,"botaccent") if noad then process(noad,what,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,what,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,what,n,current) end -- list
+ noad = gettop(current) if noad then process(noad,what,n,current) end -- list
+ noad = getmiddle(current) if noad then process(noad,what,n,current) end -- list
+ noad = getbottom(current) if noad then process(noad,what,n,current) end -- list
end
end
@@ -399,46 +408,49 @@ local function processstep(current,process,n,id)
local noad = nil
local id = id or getid(current)
if id == noad_code then
- noad = getnucleus(current) if noad then process(noad,n,current) end -- list
- noad = getsup (current) if noad then process(noad,n,current) end -- list
- noad = getsub (current) if noad then process(noad,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,n,current) end -- list
- noad = getfield (current,"prime") if noad then process(noad,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,n,current) end -- list
elseif id == subbox_code or id == submlist_code then
- noad = getlist(current) if noad then process(noad,n,current) end -- list (not getlist !)
+ noad = getlist(current) if noad then process(noad,n,current) end -- list (not getlist !)
elseif id == fraction_code then
- noad = getfield(current,"num") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"denom") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"left") if noad then process(noad,n,current) end -- delimiter
- noad = getfield(current,"right") if noad then process(noad,n,current) end -- delimiter
+ noad = getnumerator(current) if noad then process(noad,n,current) end -- list
+ noad = getdenominator(current) if noad then process(noad,n,current) end -- list
+ noad = getleftdelimiter(current) if noad then process(noad,n,current) end -- delimiter
+ noad = getdelimiter(current) if noad then process(noad,n,current) end -- delimiter
+ noad = getrightdelimiter(current) if noad then process(noad,n,current) end -- delimiter
elseif id == math_choice then
- noad = getfield(current,"display") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"text") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"script") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"scriptscript") if noad then process(noad,n,current) end -- list
+ noad = getchoice(start,1) if noad then process(noad,n,current) end -- list
+ noad = getchoice(start,2) if noad then process(noad,n,current) end -- list
+ noad = getchoice(start,3) if noad then process(noad,n,current) end -- list
+ noad = getchoice(start,4) if noad then process(noad,n,current) end -- list
elseif id == fence_code then
- noad = getfield(current,"delimiter") if noad then process(noad,n,current) end -- delimiter
- noad = getfield(current,"top") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"bottom") if noad then process(noad,n,current) end -- list
+ noad = getdelimiter(current) if noad then process(noad,n,current) end -- delimiter
+ noad = gettop(current) if noad then process(noad,n,current) end -- list
+ noad = getbottom(current) if noad then process(noad,n,current) end -- list
elseif id == radical_code then
- noad = getnucleus(current) if noad then process(noad,n,current) end -- list
- noad = getsup (current) if noad then process(noad,n,current) end -- list
- noad = getsub (current) if noad then process(noad,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,n,current) end -- list
- noad = getfield(current,"prime") if noad then process(noad,n,current) end -- delimiter
- noad = getfield(current,"left") if noad then process(noad,n,current) end -- delimiter
- noad = getfield(current,"degree") if noad then process(noad,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,n,current) end -- delimiter
+ noad = getleftdelimiter(current) if noad then process(noad,n,current) end -- delimiter
+ noad = getrightdelimiter(current) if noad then process(noad,n,current) end -- delimiter
+ noad = getdegree(current) if noad then process(noad,n,current) end -- list
elseif id == accent_code then
- noad = getnucleus(current) if noad then process(noad,n,current) end -- list
- noad = getsup (current) if noad then process(noad,n,current) end -- list
- noad = getsub (current) if noad then process(noad,n,current) end -- list
- noad = getsuppre (current) if noad then process(noad,n,current) end -- list
- noad = getsubpre (current) if noad then process(noad,n,current) end -- list
- noad = getfield(current,"prime") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"topaccent") if noad then process(noad,n,current) end -- list
- noad = getfield(current,"botaccent") if noad then process(noad,n,current) end -- list
+ noad = getnucleus(current) if noad then process(noad,n,current) end -- list
+ noad = getsup(current) if noad then process(noad,n,current) end -- list
+ noad = getsub(current) if noad then process(noad,n,current) end -- list
+ noad = getsuppre(current) if noad then process(noad,n,current) end -- list
+ noad = getsubpre(current) if noad then process(noad,n,current) end -- list
+ noad = getprime(current) if noad then process(noad,n,current) end -- list
+ noad = gettop(current) if noad then process(noad,n,current) end -- list
+ noad = getmiddle(current) if noad then process(noad,n,current) end -- list
+ noad = getbottom(current) if noad then process(noad,n,current) end -- list
end
end
@@ -520,6 +532,9 @@ do
local a_mathfamily = privateattribute("mathfamily")
local boldmap = mathematics.boldmap
+ local trace_families = false registertracker("math.families", function(v) trace_families = v end)
+ local report_families = logreporter("mathematics","families")
+
local familymap = { [0] =
"regular",
"regular",
@@ -605,8 +620,42 @@ do
end
end
end
+
+ -- families[delimiter_code] = function(pointer)
+ -- if getfield(pointer,"smallfamily") == 0 then
+ -- local a = getattr(pointer,a_mathfamily)
+ -- if a and a > 0 then
+ -- setattr(pointer,a_mathfamily,0)
+ -- if a > 5 then
+ -- -- no bold delimiters in unicode
+ -- a = a - 3
+ -- end
+ -- local fam = getfontoffamily(a)
+ -- local char = getfield(pointer,"smallchar")
+ -- local okay = fontcharacters[fam][char]
+ -- if okay then
+ -- setfield(pointer,"smallfamily",a)
+ -- elseif a > 2 then
+ -- setfield(pointer,"smallfamily",a-3)
+ -- end
+ -- local char = getfield(pointer,"largechar")
+ -- local okay = fontcharacters[fam][char]
+ -- if okay then
+ -- setfield(pointer,"largefamily",a)
+ -- elseif a > 2 then
+ -- setfield(pointer,"largefamily",a-3)
+ -- end
+ -- else
+ -- setfield(pointer,"smallfamily",0)
+ -- setfield(pointer,"largefamily",0)
+ -- end
+ -- end
+ -- end
+
+ -- has become:
+
families[delimiter_code] = function(pointer)
- if getfield(pointer,"smallfamily") == 0 then
+ if getfam(pointer) == 0 then
local a = getattr(pointer,a_mathfamily)
if a and a > 0 then
setattr(pointer,a_mathfamily,0)
@@ -614,52 +663,19 @@ do
-- no bold delimiters in unicode
a = a - 3
end
- local fam = getfontoffamily(a)
- local char = getfield(pointer,"smallchar")
- local okay = fontcharacters[fam][char]
- if okay then
- setfield(pointer,"smallfamily",a)
- elseif a > 2 then
- setfield(pointer,"smallfamily",a-3)
- end
- local char = getfield(pointer,"largechar")
- local okay = fontcharacters[fam][char]
+ local char = getchar(pointer)
+ local okay = fontcharacters[getfontoffamily(a)][char]
if okay then
- setfield(pointer,"largefamily",a)
+ setfam(pointer,a)
elseif a > 2 then
- setfield(pointer,"largefamily",a-3)
+ setfam(pointer,a-3)
end
else
- setfield(pointer,"smallfamily",0)
- setfield(pointer,"largefamily",0)
+ setfam(pointer,0)
end
end
end
- -- will become:
-
- -- families[delimiter_code] = function(pointer)
- -- if getfam(pointer) == 0 then
- -- local a = getattr(pointer,a_mathfamily)
- -- if a and a > 0 then
- -- setattr(pointer,a_mathfamily,0)
- -- if a > 5 then
- -- -- no bold delimiters in unicode
- -- a = a - 3
- -- end
- -- local char = getchar(pointer)
- -- local okay = fontcharacters[getfontoffamily(a)][char]
- -- if okay then
- -- setfam(pointer,a)
- -- elseif a > 2 then
- -- setfam(pointer,a-3)
- -- end
- -- else
- -- setfam(pointer,0)
- -- end
- -- end
- -- end
-
families[mathtextchar_code] = families[mathchar_code]
function handlers.families(head,style,penalties)
@@ -861,6 +877,9 @@ do
local a_mathsize = privateattribute("mathsize") -- this might move into other fence code
local resize = { }
+ local trace_fences = false registertracker("math.fences", function(v) trace_fences = v end)
+ local report_fences = logreporter("mathematics","fences")
+
resize[fence_code] = function(pointer)
local subtype = getsubtype(pointer)
-- if subtype == leftfence_code or subtype == rightfence_code then
@@ -1273,6 +1292,9 @@ do
local enabled = false
local a_unstack = privateattribute("mathunstack")
+ local trace_unstacking = false registertracker("math.unstack", function(v) trace_unstacking = v end)
+ local report_unstacking = logreporter("mathematics","unstack")
+
unstack[noad_code] = function(pointer)
if getattr(pointer,a_unstack) then
local sup = getsup(pointer)
@@ -1549,6 +1571,8 @@ do
end
end
+ alternate[delimiter_code] = alternate[mathchar_code]
+
function handlers.alternates(head,style,penalties)
processnoads(head,alternate,"alternate")
return true -- not needed
@@ -2004,7 +2028,7 @@ do
setsub(prev,primesub)
primesub = nil
end
- setfield(prev,"prime",nuc)
+ setprime(prev,nuc)
setnucleus(parent)
if not primesup then
setsup(parent)
@@ -2142,6 +2166,9 @@ end
do
+ -- Given the amount of classes this no longer makes much sense or we need to
+ -- extend it.
+
local classes = { }
local colors = {
[relationnoad_code] = "trace:dr",
@@ -2236,6 +2263,9 @@ do
local a_mathsnap = attributes.private("mathsnap")
+ local trace_snapping = false registertracker("math.snapping", function(v) trace_snapping = v end)
+ local report_snapping = logreporter("mathematics","snapping")
+
function handlers.snap(h,_,_,_,_,level)
-- if not level or level == 0 then
if texgetcount("mathnestinglevel") == 1 then
@@ -2363,165 +2393,168 @@ do
end
--- experimental
-
-do
-
- -- mathematics.registerdomain {
- -- name = "foo",
- -- parents = { "bar" },
- -- characters = {
- -- [0x123] = { char = 0x234, class = binary },
- -- },
- -- }
-
- local domains = { }
- local categories = { }
- local numbers = { }
- local a_mathdomain = privateattribute("mathdomain")
- mathematics.domains = categories
- local permitted = {
- ordinary = ordinarynoad_code,
- binary = binarynoad_code,
- relation = relationnoad_code,
- punctuation = punctuationnoad_code,
- inner = innernoad_code,
- fenced = fencednoad_code,
- -- fraction = fractionnoad_code,
- -- radical = radicalnoad_code,
- }
-
- function mathematics.registerdomain(data)
- local name = data.name
- if not name then
- return
- end
- local attr = #numbers + 1
- categories[name] = data
- numbers[attr] = data
- data.attribute = attr
- -- we delay hashing
- return attr
- end
-
- local enable
-
- enable = function()
- enableaction("math", "noads.handlers.domains")
- if trace_domains then
- report_domains("enabling math domains")
- end
- enable = false
- end
-
- function mathematics.setdomain(name)
- if enable then
- enable()
- end
- local data = name and name ~= v_reset and categories[name]
- texsetattribute(a_mathdomain,data and data.attribute or unsetvalue)
- end
-
- function mathematics.getdomain(name)
- if enable then
- enable()
- end
- local data = name and name ~= v_reset and categories[name]
- context(data and data.attribute or unsetvalue)
- end
-
- implement {
- name = "initializemathdomain",
- actions = enable,
- onlyonce = true,
- }
-
- implement {
- name = "setmathdomain",
- arguments = "string",
- actions = mathematics.setdomain,
- }
-
- implement {
- name = "getmathdomain",
- arguments = "string",
- actions = mathematics.getdomain,
- }
-
- local function makehash(data)
- local hash = { }
- local parents = data.parents
- if parents then
- local function merge(name)
- if name then
- local c = categories[name]
- if c then
- local hash = c.hash
- if not hash then
- hash = makehash(c)
- end
- for k, v in next, hash do
- hash[k] = v
- end
- end
- end
- end
- if type(parents) == "string" then
- merge(parents)
- elseif type(parents) == "table" then
- for i=1,#parents do
- merge(parents[i])
- end
- end
- end
- local characters = data.characters
- if characters then
- for k, v in next, characters do
- -- local chr = n.char
- local cls = v.class
- if cls then
- v.code = permitted[cls]
- else
- -- invalid class
- end
- hash[k] = v
- end
- end
- data.hash = hash
- return hash
- end
-
- domains[mathchar_code] = function(pointer,what,n,parent)
- local attr = getattr(pointer,a_mathdomain)
- if attr then
- local domain = numbers[attr]
- if domain then
- local hash = domain.hash
- if not hash then
- hash = makehash(domain)
- end
- local char = getchar(pointer)
- local okay = hash[char]
- if okay then
- local chr = okay.char
- local cls = okay.code
- if chr and chr ~= char then
- setchar(pointer,chr)
- end
- if cls and cls ~= getsubtype(parent) then
- setsubtype(parent,cls)
- end
- end
- end
- end
- end
-
- function handlers.domains(head,style,penalties)
- processnoads(head,domains,"domains")
- return true -- not needed
- end
-
-end
+-- experimental : replaced by dictionaries but for now we keep the code
+--
+-- do
+--
+-- -- mathematics.registerdomain {
+-- -- name = "foo",
+-- -- parents = { "bar" },
+-- -- characters = {
+-- -- [0x123] = { char = 0x234, class = binary },
+-- -- },
+-- -- }
+--
+-- local trace_domains = false registertracker("math.domains", function(v) trace_domains = v end)
+-- local report_domains = logreporter("mathematics","domains")
+--
+-- local domains = { }
+-- local categories = { }
+-- local numbers = { }
+-- local a_mathdomain = privateattribute("mathdomain")
+-- mathematics.domains = categories
+-- local permitted = {
+-- ordinary = ordinarynoad_code,
+-- binary = binarynoad_code,
+-- relation = relationnoad_code,
+-- punctuation = punctuationnoad_code,
+-- inner = innernoad_code,
+-- fenced = fencednoad_code,
+-- -- fraction = fractionnoad_code,
+-- -- radical = radicalnoad_code,
+-- }
+--
+-- function mathematics.registerdomain(data)
+-- local name = data.name
+-- if not name then
+-- return
+-- end
+-- local attr = #numbers + 1
+-- categories[name] = data
+-- numbers[attr] = data
+-- data.attribute = attr
+-- -- we delay hashing
+-- return attr
+-- end
+--
+-- local enable
+--
+-- enable = function()
+-- enableaction("math", "noads.handlers.domains")
+-- if trace_domains then
+-- report_domains("enabling math domains")
+-- end
+-- enable = false
+-- end
+--
+-- function mathematics.setdomain(name)
+-- if enable then
+-- enable()
+-- end
+-- local data = name and name ~= v_reset and categories[name]
+-- texsetattribute(a_mathdomain,data and data.attribute or unsetvalue)
+-- end
+--
+-- function mathematics.getdomain(name)
+-- if enable then
+-- enable()
+-- end
+-- local data = name and name ~= v_reset and categories[name]
+-- context(data and data.attribute or unsetvalue)
+-- end
+--
+-- implement {
+-- name = "initializemathdomain",
+-- actions = enable,
+-- onlyonce = true,
+-- }
+--
+-- implement {
+-- name = "setmathdomain",
+-- arguments = "string",
+-- actions = mathematics.setdomain,
+-- }
+--
+-- implement {
+-- name = "getmathdomain",
+-- arguments = "string",
+-- actions = mathematics.getdomain,
+-- }
+--
+-- local function makehash(data)
+-- local hash = { }
+-- local parents = data.parents
+-- if parents then
+-- local function merge(name)
+-- if name then
+-- local c = categories[name]
+-- if c then
+-- local hash = c.hash
+-- if not hash then
+-- hash = makehash(c)
+-- end
+-- for k, v in next, hash do
+-- hash[k] = v
+-- end
+-- end
+-- end
+-- end
+-- if type(parents) == "string" then
+-- merge(parents)
+-- elseif type(parents) == "table" then
+-- for i=1,#parents do
+-- merge(parents[i])
+-- end
+-- end
+-- end
+-- local characters = data.characters
+-- if characters then
+-- for k, v in next, characters do
+-- -- local chr = n.char
+-- local cls = v.class
+-- if cls then
+-- v.code = permitted[cls]
+-- else
+-- -- invalid class
+-- end
+-- hash[k] = v
+-- end
+-- end
+-- data.hash = hash
+-- return hash
+-- end
+--
+-- domains[mathchar_code] = function(pointer,what,n,parent)
+-- local attr = getattr(pointer,a_mathdomain)
+-- if attr then
+-- local domain = numbers[attr]
+-- if domain then
+-- local hash = domain.hash
+-- if not hash then
+-- hash = makehash(domain)
+-- end
+-- local char = getchar(pointer)
+-- local okay = hash[char]
+-- if okay then
+-- local chr = okay.char
+-- local cls = okay.code
+-- if chr and chr ~= char then
+-- setchar(pointer,chr)
+-- end
+-- if cls and cls ~= getsubtype(parent) then
+-- setsubtype(parent,cls)
+-- end
+-- end
+-- end
+-- end
+-- end
+--
+-- function handlers.domains(head,style,penalties)
+-- processnoads(head,domains,"domains")
+-- return true -- not needed
+-- end
+--
+-- end
-- just for me
@@ -2551,12 +2584,16 @@ do
end
--- for Mikael and me
-
--- This could be an early callback, when we actually assign a character.
+-- Musical timestamp: August 2022 with "Meditation by Cory Wong (Live @ Brooklyn
+-- Steel FEB 2022). Seen live earlier that year and its gets better and better!
+--
+-- As we also try to do here:
do
+ local trace_dictionaries = false registertracker("math.dictionaries", function(v) trace_dictionaries = v end)
+ local report_dictionaries = logreporter("mathematics","dictionaries")
+
local setnodecolor = colortracers.set
local getchardict = nuts.getchardict
local setchardict = nuts.setchardict
@@ -2570,39 +2607,54 @@ do
local function check(pointer,group,index)
local v = variants[index]
if v and v[group] then
- return group
+ return group, class
end
return 1
end
- dictionaries[mathchar_code] = function(pointer)
- local properties, group, index = getchardict(pointer)
- local set = sets[group]
- local real = 1
- if set then
- local groups = set.groups
- local nofgroups = groups and #groups
- if nofgroups > 0 then
- for i=1,nofgroups do
- real = check(pointer,groups[i],index)
- if real ~= 1 then
- goto done
+ dictionaries[mathchar_code] = function(pointer,what,n,parent)
+ local properties, oldgroup, index, font, char = getchardict(pointer)
+ local newgroup = 1
+ local newclass = false
+ local oldclass = getsubtype(pointer)
+ if (properties & 0x1) == 0x1 then
+ newclass = oldclass
+ newgroup = oldgroup
+ else
+ local set = sets[oldgroup]
+ if set then
+ local groups = set.groups
+ local nofgroups = groups and #groups
+ if nofgroups > 0 then
+ for i=1,nofgroups do
+ real, class = check(pointer,groups[i],index)
+ if real ~= 1 then
+ goto done
+ end
end
end
+ else
+ newgroup, newclass = check(pointer,group,index)
+ end
+ ::done::
+ if newgroup == 1 then
+ newgroup = defaults[index] or 1
+ end
+ setchardict(pointer,properties,newgroup,index)
+ if type(newclass) == "number" then
+ setsubtype(parent,newclass)
+ else
+ newclass = oldclass
end
- else
- real = check(pointer,group,index)
- end
- ::done::
- if real == 1 then
- real = defaults[index] or 1
end
- setchardict(pointer,properties,real,index)
- if trace_dictionaries and real > 1 then
- local groupname = groups[real]
- if groupname then
- setnodecolor(pointer,"dictionary:"..groupname)
+ if trace_dictionaries then
+ if newgroup > 1 then
+ local groupname = groups[newgroup]
+ if groupname then
+ setnodecolor(pointer,"dictionary:"..groupname)
+ end
end
+ report_dictionaries("group 0x%02X -> 0x%02X, class 0x%02X -> 0x%02X, index %05X, %U %c",oldgroup,newgroup,oldclass,newclass,index,char,char)
end
end
@@ -2612,6 +2664,40 @@ do
end
+do
+
+ local trace_suspicious = false registertracker("math.suspicious", function(v) trace_suspicious = v end)
+ local report_suspicious = logreporter("mathematics","suspicious")
+
+ local suspicious = { } noads.processors.suspicious = suspicious
+
+ local candidates = {
+ [mathematics.classes.maybeordinary] = "maybeordinary",
+ [mathematics.classes.mayberelation] = "mayberelation",
+ [mathematics.classes.maybebinary ] = "maybebinary",
+ }
+ local registered = setmetatableindex("table")
+
+ suspicious[mathchar_code] = function(pointer,what,n,parent)
+ local class = getsubtype(pointer)
+ local found = candidates[class]
+ if found then
+ local char = getchar(pointer)
+ if not registered[class][char] then
+ report_suspicious("class %a, %U %c",found,char,char)
+ registered[class][char] = true
+ end
+ end
+ end
+
+ function handlers.suspicious(head,style,penalties)
+ if trace_suspicious then
+ processnoads(head,suspicious,"suspicious")
+ end
+ end
+
+end
+
-- the normal builder
-- do
diff --git a/tex/context/base/mkxl/math-rad.mklx b/tex/context/base/mkxl/math-rad.mklx
index 2293c2a90..caa58b9d0 100644
--- a/tex/context/base/mkxl/math-rad.mklx
+++ b/tex/context/base/mkxl/math-rad.mklx
@@ -26,8 +26,6 @@
% \def\rootradical{\Uroot 0 "221A } % can be done in char-def
% \def\surdradical{\Uradical 0 "221A } % can be done in char-def
-\permanent\protected\def\root#1\of{\rootradical{#1}} % #2
-
\protected\def\sqrt{\doifelsenextoptionalcs\rootwithdegree\rootwithoutdegree} % will be redefined
% \permanent\protected\def\styledrootradical#1#2% so that \text works ok ... \rootradical behaves somewhat weird
@@ -93,7 +91,11 @@
\c!height=\zeropoint,
\c!depth=\zeropoint,
\c!strut=\v!height,
- \c!source=\zerocount]
+ \c!source=\zerocount,
+ \c!left="221A,
+ \c!right=\zerocount,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\zeropoint]
\appendtoks
\frozen\protected\instance\edefcsname\currentmathradical\endcsname{\math_radical_handle{\currentmathradical}}
@@ -124,9 +126,14 @@
\ifempty\currentmathradicaldegree
\let\currentmathradicaldegree\m_math_no_degree
\fi
+ \ifcase\mathradicalparameter\c!right\else
+ \let\currentmathradicaldegree\m_math_no_degree
+ \fi
\math_radical_alternative{%
\begincsname\??mathwhateverstrut\mathradicalparameter\c!strut\endcsname
+ \scratchdimen\mathradicalparameter\c!leftmargin \relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi
#body%
+ \scratchdimen\mathradicalparameter\c!rightmargin\relax\ifzeropt\scratchdimen\else\kern\scratchdimen\fi
}%
\endgroup}
@@ -159,19 +166,19 @@
\def\math_radical_alternative{\csname\??mathradicalalternative\mathradicalparameter\c!alternative\endcsname}
-\integerdef\c_radical_unicode "221A
-
% We use a strut in the degree because not all fonts have the right gaps set up but
% as struts are sort of predictable we can now fix all fonts in the lfg file.
\protected\def\math_radical_common#degree%
- {\Uroot
+ {\Urooted
\s!height\dimexpr\mathradicalparameter\c!height\relax
\s!depth \dimexpr\mathradicalparameter\c!depth\relax
\s!source\numexpr\namedboxanchor{\mathradicalparameter\c!source}\relax
\s!style \normalmathstyle
- \zerocount \c_radical_unicode
- {\mathstrut#degree}}
+ \zerocount \mathradicalparameter\c!left
+ \zerocount \mathradicalparameter\c!right
+ \relax
+ {\mathstrut#degree}}
\defcsname\??mathradicalalternative\v!default\endcsname % #body%
{\math_radical_common{\currentmathradicaldegree}} % {#body}}
@@ -182,7 +189,7 @@
\math_radical_common{\currentmathradicaldegree}{#body}% {} really needed as \rootradical expands first
\orelse\ifempty\currentmathradicaldegree
\pushcolor[\p_color]%
- \math_radical_common{\currentmathradicaldegree}%
+ \math_radical_common{}%
{\popcolor#body}%
\else
\pushcolor[\p_color]%
@@ -330,4 +337,28 @@
%
% \dorecurse{8}{$\mathhat{\blackrule[width=#1ex,color=gray]}$ }
+\definemathradical
+ [rannuity]
+ [\c!left=\zerocount,
+ \c!right="20E7,
+ \c!rightmargin=.05\emwidth]
+
+\definemathradical
+ [lannuity]
+ [\c!left="FE942,
+ \c!right=\zerocount,
+ \c!leftmargin=.05\emwidth,
+ \c!rightmargin=.05\emwidth]
+
+\definemathradical
+ [lrannuity]
+ [\c!left="FE942,
+ \c!right="20E7,
+ \c!leftmargin=.05\emwidth,
+ \c!rightmargin=.05\emwidth]
+
+\definemathradical
+ [annuity]
+ [rannuity]
+
\protect \endinput
diff --git a/tex/context/base/mkxl/math-spa.lmt b/tex/context/base/mkxl/math-spa.lmt
index 2bde8dd1d..d26a3f6f8 100644
--- a/tex/context/base/mkxl/math-spa.lmt
+++ b/tex/context/base/mkxl/math-spa.lmt
@@ -18,6 +18,8 @@ local glue_code = nodes.nodecodes.glue
local line_code = nodes.listcodes.line
local ghost_code = nodes.listcodes.ghost
local middle_code = nodes.listcodes.middle
+local leftskip_code = nodes.gluecodes.leftskip
+local rightskip_code = nodes.gluecodes.rightskip
local nuts = nodes.nuts
local tonut = nodes.tonut
@@ -104,6 +106,8 @@ local function reposition(n,offset)
addxoffset(n,-offset)
end
end
+ -- this is tricky ... see line numbering so it might become a real shift
+ -- inside the box: setprops(n,"repositioned",true)
addxoffset(n,offset)
end
diff --git a/tex/context/base/mkxl/math-stc.mklx b/tex/context/base/mkxl/math-stc.mklx
index bed61bb62..2ddfa24fd 100644
--- a/tex/context/base/mkxl/math-stc.mklx
+++ b/tex/context/base/mkxl/math-stc.mklx
@@ -371,7 +371,8 @@
\scratchwidth\mathcharwd\scratchunicode
\ifdim\wd\scratchboxone>\scratchwidth
\scratchwidth\wd\scratchboxone
- \orelse\ifdim\wd\scratchboxtwo>\scratchwidth
+ \fi % no \elseif here
+ \ifdim\wd\scratchboxtwo>\scratchwidth
\scratchwidth\wd\scratchboxtwo
\fi
\else
@@ -1084,24 +1085,6 @@
\definemathextensible [\v!mathematics] [mrightleftharpoons] ["21CC]
\definemathextensible [\v!mathematics] [mtriplerel] ["2261]
-\definemathextensible [\v!mathematics] [eleftarrowfill] ["2190] % ["27F5]
-\definemathextensible [\v!mathematics] [erightarrowfill] ["2192] % ["27F6]
-\definemathextensible [\v!mathematics] [eleftrightarrowfill] ["27F7]
-\definemathextensible [\v!mathematics] [etwoheadrightarrowfill] ["27F9]
-\definemathextensible [\v!mathematics] [eleftharpoondownfill] ["21BD]
-\definemathextensible [\v!mathematics] [eleftharpoonupfill] ["21BC]
-\definemathextensible [\v!mathematics] [erightharpoondownfill] ["21C1]
-\definemathextensible [\v!mathematics] [erightharpoonupfill] ["21C0]
-
-\definemathextensible [\v!mathematics] [eoverbarfill] ["FE33E]
-\definemathextensible [\v!mathematics] [eunderbarfill] ["FE33F]
-\definemathextensible [\v!mathematics] [eoverbracefill] ["FE3DE]
-\definemathextensible [\v!mathematics] [eunderbracefill] ["FE3DF]
-\definemathextensible [\v!mathematics] [eoverparentfill] ["FE3DC]
-\definemathextensible [\v!mathematics] [eunderparentfill] ["FE3DD]
-\definemathextensible [\v!mathematics] [eoverbracketfill] ["FE3B4]
-\definemathextensible [\v!mathematics] [eunderbracketfill] ["FE3B5]
-
\definemathextensible [\v!text] [trel] ["002D]
\definemathextensible [\v!text] [tequal] ["003D]
\definemathextensible [\v!text] [tmapsto] ["21A6]
@@ -1157,28 +1140,6 @@
%D in the backend (okay, we still need to deal with some cut and paste issues but at
%D least we now know what we deal with.
-% alternatively we can move the original to FE*
-
-% \definemathoverextensible [\v!vfenced] [overbar] ["FE33E] % ["203E]
-% \definemathunderextensible [\v!vfenced] [underbar] ["FE33F] % ["203E]
-% \definemathdoubleextensible [\v!vfenced] [doublebar] ["FE33E] ["FE33F]
-%
-% \definemathoverextensible [\v!vfenced] [overbrace] ["FE3DE] % ["023DE]
-% \definemathunderextensible [\v!vfenced] [underbrace] ["FE3DF] % ["023DF]
-% \definemathdoubleextensible [\v!vfenced] [doublebrace] ["FE3DE] ["FE3DF]
-%
-% \definemathoverextensible [\v!vfenced] [overparent] ["FE3DC] % ["023DC]
-% \definemathunderextensible [\v!vfenced] [underparent] ["FE3DD] % ["023DD]
-% \definemathdoubleextensible [\v!vfenced] [doubleparent] ["FE3DC] ["FE3DD]
-%
-% \definemathoverextensible [\v!vfenced] [overbracket] ["FE3B4] % ["023B4]
-% \definemathunderextensible [\v!vfenced] [underbracket] ["FE3B5] % ["023B5]
-% \definemathdoubleextensible [\v!vfenced] [doublebracket] ["FE3B4] ["FE3B5]
-
-% \definemathoverextensible [\v!vfenced] [overbar] ["203E]
-% \definemathunderextensible [\v!vfenced] [underbar] ["203E]
-% \definemathdoubleextensible [\v!vfenced] [doublebar] ["203E] ["203E]
-
\definemathoverextensible [\v!vfenced] [overbar] ["203E]
\definemathunderextensible [\v!vfenced] [underbar] ["203E] % ["0332]
\definemathdoubleextensible [\v!vfenced] [doublebar] ["203E] ["203E] % ["0332]
@@ -1195,29 +1156,8 @@
\definemathunderextensible [\v!vfenced] [underbracket] ["23B5]
\definemathdoubleextensible [\v!vfenced] [doublebracket] ["23B4] ["23B5]
-% If we do this, we need to adapt the dimensions, so wel leave them accents:
-%
-% \definemathoverextensible[\v!vfenced][widebar] ["0305]
-% \definemathoverextensible[\v!vfenced][widetilde]["0303]
-
-% \protected\def\mathopwithlimits#1#2{\mathop{#1{#2}}\limits}
-
%D For mathml:
-% \definemathdoubleextensible [\v!both] [overbarunderbar] ["FE33E] ["FE33F]
-% \definemathdoubleextensible [\v!both] [overbraceunderbrace] ["FE3DE] ["FE3DF]
-% \definemathdoubleextensible [\v!both] [overparentunderparent] ["FE3DC] ["FE3DD]
-% \definemathdoubleextensible [\v!both] [overbracketunderbracket] ["FE3B4] ["FE3B5]
-%
-% \definemathovertextextensible [\v!bothtext] [overbartext] ["FE33E]
-% \definemathundertextextensible [\v!bothtext] [underbartext] ["FE33F]
-% \definemathovertextextensible [\v!bothtext] [overbracetext] ["FE3DE]
-% \definemathundertextextensible [\v!bothtext] [underbracetext] ["FE3DF]
-% \definemathovertextextensible [\v!bothtext] [overparenttext] ["FE3DC]
-% \definemathundertextextensible [\v!bothtext] [underparenttext] ["FE3DD]
-% \definemathovertextextensible [\v!bothtext] [overbrackettext] ["FE3B4]
-% \definemathundertextextensible [\v!bothtext] [underbrackettext] ["FE3B5]
-
\definemathdoubleextensible [\v!both] [overbarunderbar] ["203E] ["203E]
\definemathdoubleextensible [\v!both] [overbraceunderbrace] ["23DE] ["23DF]
\definemathdoubleextensible [\v!both] [overparentunderparent] ["23DC] ["23DD]
@@ -1263,7 +1203,7 @@
#3%
\endgroup}}
-% These will be defined in char-def as well once we have \leaders<number>
+% These will become characters defined in math-act.
\immutable\protected\def\rightarrowfill {\math_stackers_hacked_fill \relbar \relbar \rightarrow}
\immutable\protected\def\leftarrowfill {\math_stackers_hacked_fill \leftarrow \relbar \relbar }
@@ -1285,10 +1225,6 @@
\immutable\protected\def\relfill {\math_stackers_hacked_fill \relbar \relbar \relbar}
\immutable\protected\def\triplerelfill {\math_stackers_hacked_fill \equiv \equiv \equiv}
-% \permanent\protected\def\singlebond{{\xrel}} % or \def\singlebond{{\xrel[2]}}
-% \permanent\protected\def\doublebond{{\xequal}}
-% \permanent\protected\def\triplebond{{\xtriplerel}}
-
%D For the moment (needs checking):
\permanent\tolerant\protected\def\defineextensiblefiller[#1]#*[#2]%
@@ -1304,8 +1240,8 @@
\defineextensiblefiller [twoheadleftarrowfill] ["219E]
\defineextensiblefiller [twoheadrightarrowfill] ["21A0]
\defineextensiblefiller [mapstofill] ["21A6]
-%defineextensiblefiller [hookleftarrowfill] ["21A9]
-%defineextensiblefiller [hookrightarrowfill] ["21AA]
+%defineextensiblefiller [hookleftarrowfill] ["21A9] % not in fonts
+%defineextensiblefiller [hookrightarrowfill] ["21AA] % not in fonts
\defineextensiblefiller [leftharpoondownfill] ["21BD]
\defineextensiblefiller [leftharpoonupfill] ["21BC]
\defineextensiblefiller [rightharpoondownfill] ["21C1]
@@ -1318,28 +1254,7 @@
\defineextensiblefiller [Leftarrowfill] ["27F8]
\defineextensiblefiller [Rightarrowfill] ["27F9]
\defineextensiblefiller [Leftrightarrowfill] ["27FA]
-%\defineextensiblefiller[Rightleftarrowfill] [.....]
-
-% These are fishy ... we need to check this because now these commands relax (there
-% are some entries in char-def.)
-%
-% %definemathoverextensible [overbarfill] ["FE33E]
-% %definemathunderextensible [underbarfill] ["FE33F]
-% \definemathoverextensible [overbracefill] ["FE3DE]
-% \definemathunderextensible [underbracefill] ["FE3DF]
-% \definemathoverextensible [overparentfill] ["FE3DC]
-% \definemathunderextensible [underparentfill] ["FE3DD]
-% \definemathoverextensible [overbracketfill] ["FE3B4]
-% \definemathunderextensible [underbracketfill] ["FE3B5]
-%
-% %defineextensiblefiller [overbarfill] ["FE33E]
-% %defineextensiblefiller [underbarfill] ["FE33F]
-% \defineextensiblefiller [overbracefill] ["FE3DE]
-% \defineextensiblefiller [underbracefill] ["FE3DF]
-% \defineextensiblefiller [overparentfill] ["FE3DC]
-% \defineextensiblefiller [underparentfill] ["FE3DD]
-% \defineextensiblefiller [overbracketfill] ["FE3B4]
-% \defineextensiblefiller [underbracketfill] ["FE3B5]
+\defineextensiblefiller [Rightleftarrowfill] ["27FA]
%D Extra:
diff --git a/tex/context/base/mkxl/math-tag.lmt b/tex/context/base/mkxl/math-tag.lmt
index 429191546..2eb9327cf 100644
--- a/tex/context/base/mkxl/math-tag.lmt
+++ b/tex/context/base/mkxl/math-tag.lmt
@@ -13,6 +13,9 @@ if not modules then modules = { } end modules ['math-tag'] = {
-- todo: tracing
-- todo: maybe use lpeg matchers
+-- todo: prime
+-- todo: middle in fraction
+
local find, match = string.find, string.match
local insert, remove, concat = table.insert, table.remove, table.concat
@@ -33,6 +36,16 @@ local getattrlist = nuts.getattrlist
local setattr = nuts.setattr
local getwidth = nuts.getwidth
+local getnumerator = nuts.getnumerator
+local getdenominator = nuts.getdenominator
+local getdelimiter = nuts.getdelimiter
+local getleftdelimiter = nuts.getleftdelimiter
+local getrightdelimiter = nuts.getrightdelimiter
+local getdegree = nuts.getdegree
+local gettop = nuts.gettop
+local getbottom = nuts.getbottom
+local getchoice = nuts.getchoice
+
local getnucleus = nuts.getnucleus
local getsub = nuts.getsub
local getsup = nuts.getsup
@@ -416,10 +429,13 @@ process = function(start) -- we cannot use the processor as we have no finalizer
end
end
elseif id == fraction_code then
- local num = getfield(start,"num")
- local denom = getfield(start,"denom")
- local left = getfield(start,"left")
- local right = getfield(start,"right")
+ --
+ -- if middle then we have a stacker!
+ --
+ local num = getnumerator(start)
+ local denom = getdenominator(start)
+ local left = getleftdelimiter(start)
+ local right = getrightdelimiter(start)
if left then
setattr(left,a_tagged,start_tagged("mo"))
process(left)
@@ -435,10 +451,10 @@ process = function(start) -- we cannot use the processor as we have no finalizer
stop_tagged()
end
elseif id == choice_code then
- local display = getfield(start,"display")
- local text = getfield(start,"text")
- local script = getfield(start,"script")
- local scriptscript = getfield(start,"scriptscript")
+ local display = getchoice(start,1)
+ local text = getchoice(start,2)
+ local script = getchoice(start,3)
+ local scriptscript = getchoice(start,4)
if display then
process(display)
end
@@ -452,28 +468,28 @@ process = function(start) -- we cannot use the processor as we have no finalizer
process(scriptscript)
end
elseif id == fence_code then
- local delim = getfield(start,"delimiter")
+ local delimiter = getdelimiter(start)
if subtype == leftfence_code then
-- left
local properties = { }
insert(fencesstack,properties)
setattr(start,a_tagged,start_tagged("mfenced",properties)) -- needs checking
- if delim then
+ if delimiter then
start_tagged("ignore")
- local chr = getchar(delim)
+ local chr = getchar(delimiter)
if chr ~= 0 then
properties.left = chr
end
- process(delim)
+ process(delimiter)
stop_tagged()
end
start_tagged("mrow") -- begin of subsequence
elseif subtype == middlefence_code then
-- middle
- if delim then
+ if delimiter then
start_tagged("ignore")
local top = fencesstack[#fencesstack]
- local chr = getchar(delim)
+ local chr = getchar(delimiter)
if chr ~= 0 then
local mid = top.middle
if mid then
@@ -482,7 +498,7 @@ process = function(start) -- we cannot use the processor as we have no finalizer
top.middle = { chr }
end
end
- process(delim)
+ process(delimiter)
stop_tagged()
end
stop_tagged() -- end of subsequence
@@ -493,13 +509,13 @@ process = function(start) -- we cannot use the processor as we have no finalizer
report_tags("missing right fence")
properties = { }
end
- if delim then
+ if delimiter then
start_tagged("ignore")
- local chr = getchar(delim)
+ local chr = getchar(delimiter)
if chr ~= 0 then
properties.right = chr
end
- process(delim)
+ process(delimiter)
stop_tagged()
end
stop_tagged() -- end of subsequence
@@ -508,13 +524,19 @@ process = function(start) -- we cannot use the processor as we have no finalizer
-- can't happen
end
elseif id == radical_code then
- local left = getfield(start,"left")
- local degree = getfield(start,"degree")
+ local left = getleftdelimiter(start)
+ local right = getrightdelimiter(start)
+ local degree = getdegree(start)
if left then
start_tagged("ignore")
process(left) -- root symbol, ignored
stop_tagged()
end
+ if right then
+ start_tagged("ignore")
+ process(lright) -- actuarian symbol, ignored
+ stop_tagged()
+ end
if degree and hascontent(degree) then
setattr(start,a_tagged,start_tagged("mroot"))
processsubsup(start)
@@ -526,29 +548,29 @@ process = function(start) -- we cannot use the processor as we have no finalizer
stop_tagged()
end
elseif id == accent_code then
- local topaccent = getfield(start,"topaccent")
- local botaccent = getfield(start,"botaccent")
- if botaccent then
+ local topaccent = gettop(start)
+ local bottomaccent = getbottom(start)
+ if bottomaccent then
if topaccent then
setattr(start,a_tagged,start_tagged("munderover", {
accent = true,
top = getunicode(topaccent),
- bottom = getunicode(botaccent),
+ bottom = getunicode(bottomaccent),
topfixed = subtype == fixedtopaccent_code or subtype == fixedbothaccent_code,
bottomfixed = subtype == fixedbottomaccent_code or subtype == fixedbothaccent_code,
}))
processsubsup(start)
- process(botaccent)
+ process(bottomaccent)
process(topaccent)
stop_tagged()
else
setattr(start,a_tagged,start_tagged("munder", {
accent = true,
- bottom = getunicode(botaccent),
+ bottom = getunicode(bottomaccent),
bottomfixed = subtype == fixedbottomaccent_code or subtype == fixedbothaccent_code,
}))
processsubsup(start)
- process(botaccent)
+ process(bottomaccent)
stop_tagged()
end
elseif topaccent then
diff --git a/tex/context/base/mkxl/mult-prm.mkxl b/tex/context/base/mkxl/mult-prm.mkxl
index 2ec763c39..1c0482349 100644
--- a/tex/context/base/mkxl/mult-prm.mkxl
+++ b/tex/context/base/mkxl/mult-prm.mkxl
@@ -71,7 +71,7 @@
"pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate",
"pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr",
"pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage",
- "pdfomitcidset", "pdfomitcharset",
+ "pdfomitcidset", "pdfomitcharset", "pdfomitinfodict",
},
aleph = { -- we don't bother
"Alephminorversion", "Alephrevision", "Alephversion",
diff --git a/tex/context/base/mkxl/node-ini.lmt b/tex/context/base/mkxl/node-ini.lmt
index 25141b8ab..53bd082af 100644
--- a/tex/context/base/mkxl/node-ini.lmt
+++ b/tex/context/base/mkxl/node-ini.lmt
@@ -46,6 +46,7 @@ local noadcodes = mark(getsubtypes("noad"))
local radicalcodes = mark(getsubtypes("radical"))
local accentcodes = mark(getsubtypes("accent"))
local fencecodes = mark(getsubtypes("fence"))
+local choicecodes = mark(getsubtypes("choice"))
----- fractioncodes = mark(getsubtypes("fraction"))
local parcodes = mark(getsubtypes("par"))
local attributecodes = mark(getsubtypes("attribute"))
@@ -91,6 +92,7 @@ mathcodes = allocate(swapped(mathcodes,mathcodes))
disccodes = allocate(swapped(disccodes,disccodes))
accentcodes = allocate(swapped(accentcodes,accentcodes))
fencecodes = allocate(swapped(fencecodes,fencecodes))
+choicecodes = allocate(swapped(choicecodes,choicecodes))
parcodes = allocate(swapped(parcodes,parcodes))
attributecodes = allocate(swapped(attributecodes,attributecodes))
rulecodes = allocate(swapped(rulecodes,rulecodes))
@@ -114,6 +116,7 @@ nodes.disccodes = disccodes
nodes.accentcodes = accentcodes
nodes.radicalcodes = radicalcodes
nodes.fencecodes = fencecodes
+nodes.choicecodes = choicecodes
nodes.parcodes = parcodes
nodes.attributecodes = attributecodes
nodes.rulecodes = rulecodes
@@ -162,6 +165,7 @@ local subtypes = allocate {
accent = accentcodes,
radical = radicalcodes,
fence = fencecodes,
+ choice = choicecodes,
par = parcodes,
attribute = attributecodes,
rule = rulecodes,
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index fccb539f3..a2a0043ac 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -50,11 +50,12 @@ local nuts = {
addxymargins = direct.addxymargins,
addyoffset = direct.addyoffset,
append = direct.append,
+ appendaftertail = direct.appendaftertail,
checkdiscretionaries = direct.checkdiscretionaries,
collapsing = direct.collapsing,
copy = direct.copy,
- copynode = direct.copy,
copylist = direct.copylist,
+ copynode = direct.copy,
copyonly = direct.copyonly,
count = direct.count,
currentattributes = direct.currentattributes,
@@ -63,16 +64,17 @@ local nuts = {
effectiveglue = direct.effectiveglue,
endofmath = direct.endofmath,
exchange = direct.exchange,
- flattenleaders = direct.flattenleaders,
findattribute = direct.findattribute,
findnode = direct.findnode,
firstglyph = direct.firstglyph,
flattendiscretionaries = direct.flattendiscretionaries,
- softenhyphens = direct.softenhyphens,
+ flattenleaders = direct.flattenleaders,
flush = d_flushnode,
flushlist = direct.flushlist,
flushnode = d_flushnode,
free = direct.free,
+ freeze = direct.freeze,
+ getanchors = direct.getanchors,
getattr = direct.getattribute,
getattribute = direct.getattribute,
getattributelist = direct.getattributelist,
@@ -80,53 +82,65 @@ local nuts = {
getattrlist = direct.getattributelist,
getattrs = direct.getattributes,
getboth = d_getboth,
+ getbottom = direct.getbottom,
getbox = direct.getbox,
getboxglue = direct.getglue,
getchar = direct.getchar,
+ getchardict = direct.getchardict,
getcharspec = direct.getcharspec,
- -- getcomponents = direct.getcomponents,
+ getchoice = direct.getchoice,
getdata = direct.getdata,
+ getdegree = direct.getdegree,
+ getdelimiter = direct.getdelimiter,
+ getmiddle = direct.getdelimiter,
+ getdenominator = direct.getdenominator,
getdepth = direct.getdepth,
getdir = direct.getdir,
getdirection = direct.getdirection,
getdisc = direct.getdisc,
getdiscpart = direct.getdiscpart,
getdiscretionary = direct.getdisc,
- getchardict = direct.getchardict,
getexpansion = direct.getexpansion,
getfam = direct.getfam,
getfield = direct.getfield,
getfont = direct.getfont,
+ getgeometry = direct.getgeometry,
getglue = direct.getglue,
getglyphdata = direct.getglyphdata,
getglyphdimensions = direct.getglyphdimensions,
getheight = direct.getheight,
getid = d_getid,
getindex = direct.getindex,
+ getinputfields = direct.getinputfields,
getkern = direct.getkern,
getkerndimension = direct.getkerndimension,
getlang = direct.getlanguage,-- will become obsolete
getlanguage = direct.getlanguage,
getleader = direct.getleader,
+ getleftdelimiter = direct.getleftdelimiter,
getlist = d_getlist,
+ getmiddledelimiter = direct.getdelimiter,
getnext = d_getnext,
getnormalizedline = direct.getnormalizedline,
getnucleus = direct.getnucleus,
+ getnumerator = direct.getnumerator,
getoffsets = direct.getoffsets,
getoptions = direct.getoptions,
- getanchors = direct.getanchors,
- getgeometry = direct.getgeometry,
getorientation = direct.getorientation,
+ getparstate = direct.getparstate,
getpenalty = direct.getpenalty,
getpost = direct.getpost,
getpre = direct.getpre,
getprev = d_getprev,
+ getprime = direct.getprime,
getreplace = direct.getreplace,
+ getrightdelimiter = direct.getrightdelimiter,
getruledata = direct.getdata, -- obsolete when we have the split
getscale = direct.getscale,
getscales = direct.getscales,
getscript = direct.getscript,
getshift = direct.getshift,
+ getspeciallist = direct.getspeciallist,
getstate = direct.getstate,
getsub = direct.getsub,
getsubpre = direct.getsubpre,
@@ -134,14 +148,17 @@ local nuts = {
getsup = direct.getsup,
getsuppre = direct.getsuppre,
getsurround = direct.getkern,
- getinputfields = direct.getinputfields,
+ gettop = direct.gettop,
gettotal = direct.gettotal,
+ getusedattributes = direct.getusedattributes,
getvalue = direct.getdata, -- obsolete
getwhd = direct.getwhd,
getwidth = direct.getwidth,
+ getwordrange = direct.getwordrange,
getxscale = direct.getxscale,
getxyscales = direct.getxyscales,
getyscale = direct.getyscale,
+ gluetostring = direct.gluetostring,
hasattribute = direct.hasattribute,
hasdimensions = direct.hasdimensions,
hasfield = direct.hasfield,
@@ -153,17 +170,13 @@ local nuts = {
ignoremathskip = direct.ignoremathskip,
insertafter = d_insertafter,
insertbefore = d_insertbefore,
- appendaftertail = direct.appendaftertail,
- prependbeforehead = direct.prependbeforehead,
- getparstate = direct.getparstate,
- getwordrange = direct.getwordrange,
- isdirect = isdirect,
- isnode = isnode,
- isnut = isdirect,
ischar = direct.ischar,
+ isdirect = isdirect,
isglyph = direct.isglyph,
isnextchar = direct.isnextchar,
isnextglyph = direct.isnextglyph,
+ isnode = isnode,
+ isnut = isdirect,
isprevchar = direct.isprevchar,
isprevglyph = direct.isprevglyph,
iszeroglue = direct.iszeroglue,
@@ -178,64 +191,76 @@ local nuts = {
naturalwidth = direct.naturalwidth,
new = direct.new,
newmathglyph = direct.newmathglyph,
+ patchattributes = direct.patchattributes,
+ prependbeforehead = direct.prependbeforehead,
protectglyph = direct.protectglyph,
protectglyphs = direct.protectglyphs,
protrusionskippable = direct.protrusionskippable,
rangedimensions = direct.rangedimensions,
remove = d_remove_node,
repack = direct.repack,
- freeze = direct.freeze,
reverse = direct.reverse,
+ serialized = direct.serialized,
+ setanchors = direct.setanchors,
setattr = direct.setattribute,
setattribute = direct.setattribute,
- setattributes = direct.setattributes,
- patchattributes = direct.patchattributes,
setattributelist = direct.setattributelist,
+ setattributes = direct.setattributes,
setattrlist = direct.setattributelist,
setattrs = direct.setattributes,
setboth = direct.setboth,
+ setbottom = direct.setbottom,
setbox = direct.setbox,
setboxglue = direct.setglue,
setchar = direct.setchar,
- -- setcomponents = direct.setcomponents,
+ setchardict = direct.setchardict,
+ setchoice = direct.setchoice,
setdata = direct.setdata,
+ setdegree = direct.setdegree,
+ setdelimiter = direct.setdelimiter,
+ setdenominator = direct.setdenominator,
setdepth = direct.setdepth,
setdir = direct.setdir,
setdirection = direct.setdirection,
setdisc = direct.setdisc,
setdiscpart = direct.setdiscpart,
setdiscretionary = direct.setdisc,
- setchardict = direct.setchardict,
setexpansion = direct.setexpansion,
setfam = direct.setfam,
setfield = direct.setfield,
setfont = direct.setfont,
+ setgeometry = direct.setgeometry,
setglue = direct.setglue,
setglyphdata = direct.setglyphdata,
setheight = direct.setheight,
+ setinputfields = direct.setinputfields,
setkern = direct.setkern,
setlang = direct.setlanguage,
setlanguage = direct.setlanguage,
setleader = direct.setleader,
+ setleftdelimiter = direct.setleftdelimiter,
setlink = d_setlink,
setlist = direct.setlist,
+ setmiddledelimiter = direct.setdelimiter,
setnext = direct.setnext,
setnucleus = direct.setnucleus,
+ setnumerator = direct.setnumerator,
setoffsets = direct.setoffsets,
setoptions = direct.setoptions,
- setanchors = direct.setanchors,
- setgeometry = direct.setgeometry,
setorientation = direct.setorientation,
setpenalty = direct.setpenalty,
setpost = direct.setpost,
setpre = direct.setpre,
setprev = direct.setprev,
+ setprime = direct.setprime,
setreplace = direct.setreplace,
+ setrightdelimiter = direct.setrightdelimiter,
setruledata = direct.setdata, -- obsolete when we have the split
setscale = direct.setscale or direct.setscales,
setscales = direct.setscales,
setscript = direct.setscript,
setshift = direct.setshift,
+ setspeciallist = direct.setspeciallist,
setsplit = direct.setsplit,
setstate = direct.setstate,
setsub = direct.setsub,
@@ -244,13 +269,13 @@ local nuts = {
setsup = direct.setsup,
setsuppre = direct.setsuppre,
setsurround = direct.setkern,
- setinputfields = direct.setinputfields,
setvalue = direct.setdata, -- obsolete
+ settop = direct.settop,
setwhd = direct.setwhd,
setwidth = direct.setwidth,
show = direct.show,
- serialized = direct.serialized,
slide = d_slide,
+ softenhyphens = direct.softenhyphens,
startofpar = direct.startofpar,
tail = d_find_tail,
takeattr = direct.unsetattribute, -- ?
@@ -262,8 +287,8 @@ local nuts = {
traversecontent = direct.traversecontent,
traverseglyph = direct.traverseglyph,
traverseid = direct.traverseid,
- traverselist = direct.traverselist,
traverseleader = direct.traverseleader,
+ traverselist = direct.traverselist,
unprotectglyph = direct.unprotectglyph,
unprotectglyphs = direct.unprotectglyphs,
unsetattribute = direct.unsetattribute,
@@ -275,11 +300,6 @@ local nuts = {
write = direct.write,
xscaled = direct.xscaled,
yscaled = direct.yscaled,
- -- getxyoffsets = direct.getxyoffsets,
- getspeciallist = direct.getspeciallist,
- setspeciallist = direct.setspeciallist,
- getusedattributes = direct.getusedattributes,
- gluetostring = direct.gluetostring,
}
nodes.nuts = nuts
diff --git a/tex/context/base/mkxl/node-ser.lmt b/tex/context/base/mkxl/node-ser.lmt
index 089009260..e45d7f249 100644
--- a/tex/context/base/mkxl/node-ser.lmt
+++ b/tex/context/base/mkxl/node-ser.lmt
@@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['node-ser'] = {
license = "see context related readme files"
}
+-- needs to be updated (mayeb fetch field types)
+
local type, tostring = type, tostring
local concat, tohash, sortedkeys, sortedhash, printtable, serialize = table.concat, table.tohash, table.sortedkeys, table.sortedhash, table.print, table.serialize
local formatters, format, rep = string.formatters, string.format, string.rep
@@ -64,6 +66,8 @@ end)
nodes.fieldtypes = fieldtypes
+-- todo: subtype zero too
+
local function astable(n)
n = tonode(n)
if n then
@@ -75,7 +79,9 @@ local function astable(n)
for field, fieldtype in sortedhash(fields) do -- no need to sort
local value = n[field]
if value then
- if canbeignored[field] then
+ if field == "subtype" then
+ -- we always show them now
+ elseif canbeignored[field] then
value = nil
elseif canbezero[fieldtype] and value == 0 then
value = nil
diff --git a/tex/context/base/mkxl/phys-dim.mkxl b/tex/context/base/mkxl/phys-dim.mkxl
index 44aff6411..90475f5b8 100644
--- a/tex/context/base/mkxl/phys-dim.mkxl
+++ b/tex/context/base/mkxl/phys-dim.mkxl
@@ -401,9 +401,20 @@
\permanent\protected\def\installunitsspace#1#2%
{\defcsname\??unitspace#1\endcsname{#2}}
+% \protected\def\phys_units_space
+% {\unskip % weird, why is unskip needed
+% \ifcsname\??unitspace\unitparameter\c!space\endcsname\lastnamedcs\else\unitsmediumspace\fi}
+
+% \im{1 \unit{hour} 20 \unit{minute} 56 \unit{second}}
+% \im{\unit{1 hour} \unit{20 minute} 56 \unit{second}}
+
\protected\def\phys_units_space
- {\unskip % weird, why is unskip needed
- \ifcsname\??unitspace\unitparameter\c!space\endcsname\lastnamedcs\else\unitsmediumspace\fi}
+ {\ifmmode
+ % let the atoms do the work
+ \else
+ \unskip % weird, why is unskip needed
+ \ifcsname\??unitspace\unitparameter\c!space\endcsname\lastnamedcs\else\unitsmediumspace\fi
+ \fi}
\installunitsspace\v!normal{\unitsmediumspace}
\installunitsspace\v!big {\unitsbigspace}
@@ -608,7 +619,7 @@
\dostarttagged\t!maction\t!unit
\mathatom
\s!leftclass \mathdimensioncode
- \s!rightclass \mathordinarycode
+ \s!rightclass \mathdimensioncode
\bgroup
\else
\dostarttagged\t!unit\empty
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index ed581db6a..a8d674723 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -1455,14 +1455,14 @@
% we can't end up here
\orelse\ifconditional\c_strc_math_aligned_here
\ifzeropt\d_strc_math_indent\else
-\ifnum\c_page_sides_hangafter=\zerocount
- \hangafter\plusone
- \hangindent\d_strc_math_indent
-\else
+% \ifnum\c_page_sides_hangafter=\zerocount
+% \hangafter\plusone
+% \hangindent\d_strc_math_indent
+% \else
% this might become the default anyway:
\advance\leftskip\d_strc_math_indent
\hskip-\d_strc_math_indent
-\fi
+% \fi
\fi
% \strc_math_setup_align % _inner
\else
diff --git a/tex/context/base/mkxl/syst-ini.mkxl b/tex/context/base/mkxl/syst-ini.mkxl
index ce2f50942..0c5251373 100644
--- a/tex/context/base/mkxl/syst-ini.mkxl
+++ b/tex/context/base/mkxl/syst-ini.mkxl
@@ -765,16 +765,17 @@
% For now:
-\permanent\protected\def\defUmathfixedtopaccent#1#2#3#4{\global\immutable\protected\def#1{\Umathtopaccent \s!fixed "#2 "#3 "#4 }}
-\permanent\protected\def\defUmathfixedbotaccent#1#2#3#4{\global\immutable\protected\def#1{\Umathbotaccent \s!fixed "#2 "#3 "#4 }}
-\permanent\protected\def\defUmathtopaccent #1#2#3#4{\global\immutable\protected\def#1{\Umathtopaccent "#2 "#3 "#4 }}
-\permanent\protected\def\defUmathbotaccent #1#2#3#4{\global\immutable\protected\def#1{\Umathbotaccent "#2 "#3 "#4 }}
-\permanent\protected\def\defUdelimiterover #1#2#3#4{\global\immutable\protected\def#1{\Udelimiterover "#2 "#3 }}
-\permanent\protected\def\defUdelimiterunder #1#2#3#4{\global\immutable\protected\def#1{\Udelimiterunder "#2 "#3 }}
-\permanent\protected\def\defUdelimiter #1#2#3#4{\global\immutable\protected\def#1{\Udelimiter "#2 "#3 "#4 }}
-\permanent\protected\def\defUradical #1#2#3{\global\immutable\protected\def#1{\Uradical "#2 "#3 }}
-\permanent\protected\def\defUroot #1#2#3{\global\immutable\protected\def#1{\Uroot "#2 "#3 }}
-\permanent\protected\def\defUmathchar #1#2#3#4{\global\immutable\Umathchardef #1 "#2 "#3 "#4 }
+\permanent\protected\def\defUmathfixedtopaccent #1#2#3#4{\global\immutable\protected\def#1{\Umathtopaccent \s!fixed "#2 "#3 "#4 }}
+\permanent\protected\def\defUmathfixedbottomaccent#1#2#3#4{\global\immutable\protected\def#1{\Umathbottomaccent \s!fixed "#2 "#3 "#4 }}
+\permanent\protected\def\defUmathtopaccent #1#2#3#4{\global\immutable\protected\def#1{\Umathtopaccent "#2 "#3 "#4 }}
+\permanent\protected\def\defUmathbottomaccent #1#2#3#4{\global\immutable\protected\def#1{\Umathbottomaccent "#2 "#3 "#4 }}
+\permanent\protected\def\defUdelimiterover #1#2#3#4{\global\immutable\protected\def#1{\Udelimiterover "#2 "#3 }}
+\permanent\protected\def\defUdelimiterunder #1#2#3#4{\global\immutable\protected\def#1{\Udelimiterunder "#2 "#3 }}
+%permanent\protected\def\defUdelimiter #1#2#3#4{\global\immutable\protected\def#1{\Udelimiter "#2 "#3 "#4 }}
+\permanent\protected\def\defUdelimiter #1#2#3#4{\global\immutable\Umathchardef #1 "#2 "#3 "#4 }
+\permanent\protected\def\defUradical #1#2#3{\global\immutable\protected\def#1{\Uradical "#2 "#3 }}
+\permanent\protected\def\defUroot #1#2#3{\global\immutable\protected\def#1{\Uroot "#2 "#3 }}
+\permanent\protected\def\defUmathchar #1#2#3#4{\global\immutable\Umathchardef #1 "#2 "#3 "#4 }
%D For a while we keep the following, as systems like tikz need it. Best not use
%D that one \CONTEXT. It will probably move to the tikz loader.
diff --git a/tex/context/base/mkxl/tabl-ntb.mkxl b/tex/context/base/mkxl/tabl-ntb.mkxl
index 33e68a4cb..d36d113e1 100644
--- a/tex/context/base/mkxl/tabl-ntb.mkxl
+++ b/tex/context/base/mkxl/tabl-ntb.mkxl
@@ -321,6 +321,9 @@
\installcorenamespace{naturaltablesqueeze}
\installcorenamespace{naturaltabletok}
+% \integerdefcsname
+% \dimensiondefcsname
+
\letcsname\??naturaltablesqueeze \endcsname\donefalse
\letcsname\??naturaltablesqueeze\v!fit \endcsname\donetrue
\letcsname\??naturaltablesqueeze\v!fixed\endcsname\donetrue
@@ -336,20 +339,25 @@
\def\tabl_ntb_set_nob#1{\letcsname\??naturaltablenob\m_tabl_tbl_level:\number#1\endcsname\plusone}
\def\tabl_ntb_get_nob#1{\ifcsname\??naturaltablenob\m_tabl_tbl_level:\number#1\endcsname\plusone\else\zerocount\fi}
-%def\tabl_ntb_set_tag#1#2{\edefcsname\??naturaltabletag\m_tabl_tbl_level:\number#1:\number#2\endcsname}
-\def\tabl_ntb_set_col#1#2{\edefcsname\??naturaltablecol\m_tabl_tbl_level:\number#1:\number#2\endcsname}
-\def\tabl_ntb_set_row#1#2{\edefcsname\??naturaltablerow\m_tabl_tbl_level:\number#1:\number#2\endcsname}
+%def\tabl_ntb_set_tag#1#2{\expandafter\integerdef\csname\??naturaltabletag\m_tabl_tbl_level:\number#1:\number#2\endcsname}
+\def\tabl_ntb_set_col#1#2{\expandafter\integerdef\csname\??naturaltablecol\m_tabl_tbl_level:\number#1:\number#2\endcsname}
+\def\tabl_ntb_set_row#1#2{\expandafter\integerdef\csname\??naturaltablerow\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_let_tag#1#2{\letcsname\??naturaltabletag\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_let_col#1#2{\letcsname\??naturaltablecol\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_let_row#1#2{\letcsname\??naturaltablerow\m_tabl_tbl_level:\number#1:\number#2\endcsname}
-%def\tabl_ntb_set_wd#1#2{\xdefcsname\??naturaltablewd\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
-\def\tabl_ntb_set_ht#1#2{\xdefcsname\??naturaltableht\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
+% \let\tabl_ntb_let_col\tabl_ntb_set_col
+% \let\tabl_ntb_let_row\tabl_ntb_set_row
+
+%def\tabl_ntb_set_wd#1#2{\global\expandafter\dimensiondef\csname\??naturaltablewd\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
+\def\tabl_ntb_set_ht#1#2{\global\expandafter\dimensiondef\csname\??naturaltableht\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
%def\tabl_ntb_let_wd#1#2{\letcsname\??naturaltablewd\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
\def\tabl_ntb_let_ht#1#2{\letcsname\??naturaltableht\m_tabl_tbl_level:\number#1:\number#2\endcsname} % global !
+% \let\tabl_ntb_let_ht\tabl_ntb_set_ht
+
\def\tabl_ntb_get_tag#1#2{\csname\??naturaltabletag\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_get_col#1#2{\csname\??naturaltablecol\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_get_row#1#2{\csname\??naturaltablerow\m_tabl_tbl_level:\number#1:\number#2\endcsname}
@@ -357,24 +365,27 @@
%def\tabl_ntb_get_wd#1#2{\csname\??naturaltablewd\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_get_ht#1#2{\csname\??naturaltableht\m_tabl_tbl_level:\number#1:\number#2\endcsname}
-\def\tabl_ntb_set_wid#1{\xdefcsname\??naturaltablewid\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
-\def\tabl_ntb_set_hei#1{\xdefcsname\??naturaltablehei\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
-\def\tabl_ntb_set_dis#1{\xdefcsname\??naturaltabledis\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
-\def\tabl_ntb_set_aut#1{\xdefcsname\??naturaltableaut\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
+\def\tabl_ntb_set_wid#1{\global\expandafter\dimensiondef\csname\??naturaltablewid\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
+\def\tabl_ntb_set_hei#1{\global\expandafter\dimensiondef\csname\??naturaltablehei\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
+\def\tabl_ntb_set_dis#1{\global\expandafter\dimensiondef\csname\??naturaltabledis\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
+\def\tabl_ntb_set_aut#1{\global\expandafter\dimensiondef\csname\??naturaltableaut\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
\def\tabl_ntb_let_wid#1{\gletcsname\??naturaltablewid\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
\def\tabl_ntb_let_hei#1{\gletcsname\??naturaltablehei\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
\def\tabl_ntb_let_dis#1{\gletcsname\??naturaltabledis\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
\def\tabl_ntb_let_aut#1{\gletcsname\??naturaltableaut\m_tabl_tbl_level:\number#1\endcsname} % {#2} global !
+% \let\tabl_ntb_let_wid\tabl_ntb_set_wid
+% \let\tabl_ntb_let_hei\tabl_ntb_set_hei
+% \let\tabl_ntb_let_dis\tabl_ntb_set_dis
+% \let\tabl_ntb_let_aut\tabl_ntb_set_aut
+
\def\tabl_ntb_get_wid#1{\ifcsname\??naturaltablewid\m_tabl_tbl_level:\number#1\endcsname\lastnamedcs\else\zeropoint\fi}
\def\tabl_ntb_get_hei#1{\ifcsname\??naturaltablehei\m_tabl_tbl_level:\number#1\endcsname\lastnamedcs\else\zeropoint\fi}
\def\tabl_ntb_get_dis#1{\ifcsname\??naturaltabledis\m_tabl_tbl_level:\number#1\endcsname\lastnamedcs\else\zeropoint\fi}
\def\tabl_ntb_get_aut#1{\csname \??naturaltableaut\m_tabl_tbl_level:\number#1\endcsname}
-% \i ntegerdef
-
-\def\tabl_ntb_let_bck#1#2{\global\expandafter\chardef\csname\??naturaltablebck\m_tabl_tbl_level:\number#1:\number#2\endcsname}
+\def\tabl_ntb_let_bck#1#2{\global\expandafter\integerdef\csname\??naturaltablebck\m_tabl_tbl_level:\number#1:\number#2\endcsname}
\def\tabl_ntb_get_bck#1#2{\csname\??naturaltablebck\m_tabl_tbl_level:\number#1:\number#2\endcsname}
@@ -408,11 +419,18 @@
%def\tabl_ntb_get_ref #1#2{\ifcsname\??naturaltableref\m_tabl_tbl_level:\number#1:\number#2\endcsname\csname\??naturaltableref\m_tabl_tbl_level:\number#1:\number#2\endcsname\fi}
\def\tabl_ntb_get_ref #1#2{\begincsname\??naturaltableref\m_tabl_tbl_level:\number#1:\number#2\endcsname}
-\def\tabl_ntb_set_spn #1{\letcsname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname \!!plusone}
-\def\tabl_ntb_spn_doifelse#1{\ifcase0\csname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname\relax % could be inlined
- \expandafter\secondoftwoarguments % unset
- \else
+% \def\tabl_ntb_set_spn #1{\letcsname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname \!!plusone}
+% \def\tabl_ntb_spn_doifelse#1{\ifcase0\csname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname\relax % could be inlined
+% \expandafter\secondoftwoarguments % unset
+% \else
+% \expandafter\firstoftwoarguments % a span
+% \fi}
+
+\def\tabl_ntb_set_spn #1{\letcsname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname\plusone}
+\def\tabl_ntb_spn_doifelse#1{\ifcsname\??naturaltablespn\m_tabl_tbl_level:\number#1\endcsname
\expandafter\firstoftwoarguments % a span
+ \else
+ \expandafter\secondoftwoarguments % unset
\fi}
\protected\def\tabl_ntb_set_txt_process#1#2#3#4#5#6%
@@ -508,15 +526,25 @@
\letcsname\??naturaltablesetupthree\s!unknown\endcsname\tabl_ntb_setup_un
\letcsname\??naturaltablesetuptwo \s!unknown\endcsname\tabl_ntb_setup_ux
-\letcsnamecsname\csname\??naturaltablesetupthree r\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
-\letcsnamecsname\csname\??naturaltablesetupthree c\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
-\letcsnamecsname\csname\??naturaltablesetupthree y\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
-\letcsnamecsname\csname\??naturaltablesetupthree x\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
+% \letcsnamecsname\csname\??naturaltablesetupthree r\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
+% \letcsnamecsname\csname\??naturaltablesetupthree c\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
+% \letcsnamecsname\csname\??naturaltablesetupthree y\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
+% \letcsnamecsname\csname\??naturaltablesetupthree x\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
+
+% \letcsnamecsname\csname\??naturaltablesetuptwo r\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
+% \letcsnamecsname\csname\??naturaltablesetuptwo c\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
+% \letcsnamecsname\csname\??naturaltablesetuptwo y\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
+% \letcsnamecsname\csname\??naturaltablesetuptwo x\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
+
+\letcsname\??naturaltablesetupthree r\expandafter\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
+\letcsname\??naturaltablesetupthree c\expandafter\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
+\letcsname\??naturaltablesetupthree y\expandafter\endcsname\csname\??naturaltablesetupthree \v!row\endcsname
+\letcsname\??naturaltablesetupthree x\expandafter\endcsname\csname\??naturaltablesetupthree\v!column\endcsname
-\letcsnamecsname\csname\??naturaltablesetuptwo r\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
-\letcsnamecsname\csname\??naturaltablesetuptwo c\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
-\letcsnamecsname\csname\??naturaltablesetuptwo y\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
-\letcsnamecsname\csname\??naturaltablesetuptwo x\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
+\letcsname\??naturaltablesetuptwo r\expandafter\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
+\letcsname\??naturaltablesetuptwo c\expandafter\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
+\letcsname\??naturaltablesetuptwo y\expandafter\endcsname\csname\??naturaltablesetuptwo \v!row\endcsname
+\letcsname\??naturaltablesetuptwo x\expandafter\endcsname\csname\??naturaltablesetuptwo \v!column\endcsname
\def\tabl_ntb_parameters_set[#1][#2]%
{\ifappendTBLsetups
@@ -598,10 +626,12 @@
{\tabl_ntb_setup_section % already forgotten
\edef\m_tabl_ntb_positive_row{\number#1}%
\edef\m_tabl_ntb_positive_col{\number#2}%
- \edef\m_tabl_ntb_negative_row{\the\numexpr-\c_tabl_ntb_maximum_row+#1+\minusone\relax}%
- \edef\m_tabl_ntb_negative_col{\the\numexpr-\c_tabl_ntb_maximum_col+#2+\minusone\relax}%
+% \edef\m_tabl_ntb_negative_row{\the\numexpr-\c_tabl_ntb_maximum_row+#1+\minusone\relax}%
+% \edef\m_tabl_ntb_negative_col{\the\numexpr-\c_tabl_ntb_maximum_col+#2+\minusone\relax}%
+ \edef\m_tabl_ntb_negative_row{\number\numexpr-\c_tabl_ntb_maximum_row+#1+\minusone}%
+ \edef\m_tabl_ntb_negative_col{\number\numexpr-\c_tabl_ntb_maximum_col+#2+\minusone}%
% saves tokens (no speed gain)
- \edef\m_tabl_ntb_prefix{\??naturaltableset\m_tabl_tbl_level:}%
+ \edef\m_tabl_ntb_prefix{\??naturaltableset\m_tabl_tbl_level:}% can move to \tabl_ntb_next_level etc
% each each
\begincsname\m_tabl_ntb_prefix\c!x\v!each\c!y\v!each\endcsname
\begincsname\m_tabl_ntb_prefix\c!y\v!each\endcsname
@@ -754,10 +784,10 @@
\else
\tabl_ntb_td_pass_m{#1}%
\fi
- \doloop % skip over columns that result from earlier span
+ \localcontrolledloop\plusone\maxcard\plusone % skip over columns that result from earlier span
{\advance\c_tabl_ntb_running_col\plusone
\ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\endcsname \else
- \exitloop
+ \quitloop
\fi}%
% fill r*c cells and set span
\c_tabl_ntb_nx\naturaltableparameter\c!nx\relax
@@ -775,8 +805,8 @@
\fi
% set values
\tabl_ntb_let_tag\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_cell
- \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_nx}%
- \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_ny}%
+ \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_nx
+ \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_ny
% the action key will change!
\tabl_ntb_set_ref\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\naturaltableparameter\c!action}%
% save text
@@ -789,10 +819,10 @@
\def\tabl_ntb_td_nop[#1]#2\eTD
{\global\advance\c_tabl_ntb_spn\plusone\relax
- \doloop
+ \localcontrolledloop\plusone\maxcard\plusone
{\advance\c_tabl_ntb_running_col\plusone
\ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\endcsname \else
- \exitloop
+ \quitloop
\fi}%
\c_tabl_ntb_nx\plusone
\c_tabl_ntb_ny\plusone
@@ -800,8 +830,8 @@
\c_tabl_ntb_maximum_col\c_tabl_ntb_running_col
\fi
\tabl_ntb_let_tag\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_cell
- \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_nx}%
- \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_ny}%
+ \tabl_ntb_set_col\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_nx
+ \tabl_ntb_set_row\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\c_tabl_ntb_ny
\tabl_ntb_let_ref\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col\empty
\normalexpanded
{\tabl_ntb_set_txt_process\c_tabl_ntb_maximum_row\c_tabl_ntb_running_col{\the\c_tabl_ntb_maximum_row}{\the\c_tabl_ntb_running_col}}%
@@ -825,7 +855,7 @@
\def\tabl_ntb_td_pass_m#1%
{\scratchcounter\numexpr\m_tabl_ntb_m-\c_tabl_ntb_running_col+\minusone-\c_tabl_ntb_spn\relax
- \dorecurse\scratchcounter{\normalexpanded{\tabl_ntb_td[\c!n=,\c!m=]}\eTD}%
+ \localcontrolledloop\plusone\scratchcounter\plusone{\normalexpanded{\tabl_ntb_td[\c!n=,\c!m=]}\eTD}%
% can be sped up
\letnaturaltableparameter\c!ny\m_tabl_ntb_default_nr
\letnaturaltableparameter\c!nx\m_tabl_ntb_default_nc
@@ -838,7 +868,7 @@
\def\tabl_ntb_cell_preset
{\c_tabl_ntb_current_row\c_tabl_ntb_maximum_row
\c_tabl_ntb_current_col\c_tabl_ntb_running_col
- \dorecurse\c_tabl_ntb_ny\tabl_ntb_cell_preset_rows
+ \localcontrolledloop\plusone\c_tabl_ntb_ny\plusone{\tabl_ntb_cell_preset_rows}%
% check max column
\advance\c_tabl_ntb_current_col\minusone
\ifnum\c_tabl_ntb_current_col>\c_tabl_ntb_maximum_col\relax
@@ -847,11 +877,11 @@
\def\tabl_ntb_cell_preset_rows
{\c_tabl_ntb_current_col\c_tabl_ntb_running_col
- \tabl_ntb_set_col\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_nx}%
+ \tabl_ntb_set_col\c_tabl_ntb_current_row\c_tabl_ntb_current_col\c_tabl_ntb_nx
\ifnum\c_tabl_ntb_nx>\c_tabl_ntb_maximum_row_span\relax
\c_tabl_ntb_maximum_row_span\c_tabl_ntb_nx
\fi
- \dorecurse\c_tabl_ntb_nx\tabl_ntb_cell_preset_cells
+ \localcontrolledloop\plusone\c_tabl_ntb_nx\plusone{\tabl_ntb_cell_preset_cells}%
\advance\c_tabl_ntb_current_row\plusone}
\def\tabl_ntb_cell_preset_cells
@@ -1057,7 +1087,7 @@
{% tricky and dirty order -)
\setfalse\c_tabl_ntb_okay
% head
- \doifelsesometoks\t_tabl_ntb_head % slow, better a flag
+ \doifelsesometoks\t_tabl_ntb_head % slow, better a flag \iftok
{\c_tabl_ntb_head\numexpr\c_tabl_ntb_maximum_row+\plusone\relax
\the\t_tabl_ntb_head
\c_tabl_ntb_n_of_head_lines\c_tabl_ntb_maximum_row\relax
@@ -1088,11 +1118,11 @@
\ifcase\c_tabl_ntb_maximum_col\else
\startTBLprocessing
\tabl_ntb_table_start
- \dorecurse\c_tabl_ntb_maximum_row
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone
{\tabl_ntb_row_start
- \c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_ntb_maximum_col
- {\c_tabl_ntb_current_col\recurselevel\relax
+ \c_tabl_ntb_current_row\currentloopiterator\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\c_tabl_ntb_current_col\currentloopiterator\relax
\normalexpanded{\tabl_ntb_cell{\the\c_tabl_ntb_current_row}{\the\c_tabl_ntb_current_col}}}%
\tabl_ntb_row_stop}%
\removeunwantedspaces % only if hmode
@@ -1106,10 +1136,10 @@
% tracing
% \iftrue
% \blank \tttf
- % \dorecurse\c_tabl_ntb_maximum_row
- % {\c_tabl_ntb_current_row\recurselevel\relax
- % \dorecurse\c_tabl_ntb_maximum_col
- % {\c_tabl_ntb_current_col\recurselevel\relax
+ % \localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone
+ % {\c_tabl_ntb_current_row\currentloopiterator\relax
+ % \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ % {\c_tabl_ntb_current_col\currentloopiterator\relax
% [r=\the\c_tabl_ntb_current_row,c=\the\c_tabl_ntb_current_col,h=\the\dimexpr\tabl_ntb_get_ht\c_tabl_ntb_current_row\c_tabl_ntb_current_col,w=\the\dimexpr\tabl_ntb_get_wd\c_tabl_ntb_current_row\c_tabl_ntb_current_col]}%
% \par}%
% \blank
@@ -1119,14 +1149,14 @@
\tabl_ntb_table_pop}
\def\tabl_ntb_loop_one
- {\dorecurse\c_tabl_ntb_maximum_row{\tabl_ntb_loop_one_rows}}
+ {\localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone{\tabl_ntb_loop_one_rows}}
\def\tabl_ntb_loop_one_rows
- {\c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_ntb_maximum_col\tabl_ntb_loop_one_cells}
+ {\c_tabl_ntb_current_row\currentloopiterator\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone{\tabl_ntb_loop_one_cells}}
\def\tabl_ntb_loop_one_cells
- {\c_tabl_ntb_current_col\recurselevel\relax
+ {\c_tabl_ntb_current_col\currentloopiterator\relax
\ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_current_row\c_tabl_ntb_current_col\endcsname \else
\tabl_ntb_loop_one_cells_indeed
\fi}
@@ -1135,25 +1165,25 @@
{\c_tabl_ntb_current_col_two\c_tabl_ntb_current_col
\c_tabl_ntb_current_row_two\c_tabl_ntb_current_row
\c_tabl_ntb_current_row_one\c_tabl_ntb_current_row
- \doloop
+ \localcontrolledloop\plusone\maxcard\plusone
{\c_tabl_ntb_current_col_one\c_tabl_ntb_current_col
- \doloop
+ \localcontrolledloop\plusone\maxcard\plusone
{\ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_current_row_one\c_tabl_ntb_current_col_one\endcsname
- \exitloop
+ \quitloop
\else
\advance\c_tabl_ntb_current_col_one\plusone
\ifnum\c_tabl_ntb_current_col_one>\c_tabl_ntb_maximum_col\relax
- \exitloop
+ \quitloop
\fi
\fi}%
\ifcsname\tabl_ntb_tag_pattern\c_tabl_ntb_current_row_one\c_tabl_ntb_current_col_one\endcsname
- \exitloop
+ \quitloop
\else
\c_tabl_ntb_current_row_two\c_tabl_ntb_current_row_one
\c_tabl_ntb_current_col_two\c_tabl_ntb_current_col_one
\advance\c_tabl_ntb_current_row_one\plusone
\ifnum\c_tabl_ntb_current_row_one>\c_tabl_ntb_maximum_row
- \exitloop
+ \quitloop
\fi
\fi}%
\ifnum\c_tabl_ntb_current_row_two>\c_tabl_ntb_maximum_row\c_tabl_ntb_current_row_two\c_tabl_ntb_maximum_row\fi
@@ -1161,16 +1191,16 @@
\c_tabl_ntb_current_row_two\numexpr\c_tabl_ntb_current_row_two-\c_tabl_ntb_current_row+\plusone\relax
\c_tabl_ntb_current_col_two\numexpr\c_tabl_ntb_current_col_two-\c_tabl_ntb_current_col+\plusone\relax
\c_tabl_ntb_current_row_one\c_tabl_ntb_current_row
- \dorecurse\c_tabl_ntb_current_row_two
+ \localcontrolledloop\plusone\c_tabl_ntb_current_row_two\plusone
{\c_tabl_ntb_current_col_one\c_tabl_ntb_current_col
- \tabl_ntb_set_col\c_tabl_ntb_current_row_one\c_tabl_ntb_current_col_one{\the\c_tabl_ntb_current_col_two}%
- \dorecurse\c_tabl_ntb_current_col_two
+ \tabl_ntb_set_col\c_tabl_ntb_current_row_one\c_tabl_ntb_current_col_one\c_tabl_ntb_current_col_two
+ \localcontrolledloop\plusone\c_tabl_ntb_current_col_two\plusone
{\tabl_ntb_let_tag\c_tabl_ntb_current_row_one\c_tabl_ntb_current_col_one\c_tabl_ntb_none
\advance\c_tabl_ntb_current_col_one\plusone}%
\advance\c_tabl_ntb_current_row_one\plusone}%
\tabl_ntb_let_tag\c_tabl_ntb_current_row\c_tabl_ntb_current_col\c_tabl_ntb_cell
- \tabl_ntb_set_col\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_current_col_two}%
- \tabl_ntb_set_row\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_current_row_two}%
+ \tabl_ntb_set_col\c_tabl_ntb_current_row\c_tabl_ntb_current_col\c_tabl_ntb_current_col_two
+ \tabl_ntb_set_row\c_tabl_ntb_current_row\c_tabl_ntb_current_col\c_tabl_ntb_current_row_two%
\ifautoTBLemptycell
\normalexpanded
{\tabl_ntb_set_txt_process\c_tabl_ntb_current_row\c_tabl_ntb_current_col{\the\c_tabl_ntb_current_row}{\the\c_tabl_ntb_current_col}}%
@@ -1178,14 +1208,14 @@
\fi}
\def\tabl_ntb_loop_two
- {\dorecurse\c_tabl_ntb_maximum_row\tabl_ntb_loop_two_rows}
+ {\localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone{\tabl_ntb_loop_two_rows}}
\def\tabl_ntb_loop_two_rows
- {\c_tabl_ntb_current_row\recurselevel\relax
- \dorecurse\c_tabl_ntb_maximum_col\tabl_ntb_loop_two_cells}
+ {\c_tabl_ntb_current_row\currentloopiterator\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone{\tabl_ntb_loop_two_cells}}
\def\tabl_ntb_loop_two_cells
- {\c_tabl_ntb_current_col\recurselevel\relax
+ {\c_tabl_ntb_current_col\currentloopiterator\relax
\ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row\c_tabl_ntb_current_col\endcsname
\scratchcounter\numexpr\c_tabl_ntb_maximum_row-\c_tabl_ntb_current_row+\plusone\relax
\ifnum\tabl_ntb_get_row\c_tabl_ntb_current_row\c_tabl_ntb_current_col>\scratchcounter
@@ -1270,8 +1300,8 @@
% \prelocateTBLrows{1000} % may speed up large tables
\permanent\protected\def\prelocateTBLrows#1% we start at zero so we have one to much, better play safe anyway
- {\dostepwiserecurse\c_tabl_prelocated_rows{#1}\plusone
- {\expandafter\newtoks\csname\??naturaltabletok\recurselevel\endcsname}%
+ {\localcontrolledloop\c_tabl_prelocated_rows#1\plusone
+ {\expandafter\newtoks\csname\??naturaltabletok\the\currentloopiterator\endcsname}%
\def\tabl_ntb_row_start
{\ifnum\c_tabl_ntb_row<\c_tabl_prelocated_rows\relax
\tabl_ntb_prelocate_okay
@@ -1428,7 +1458,7 @@
\protected\def\tabl_ntb_span#1%
{\hskip\tabl_ntb_get_dis\c_tabl_ntb_col
- \dorecurse{#1}
+ \localcontrolledloop\plusone#1\plusone
{\hskip\tabl_ntb_get_wid\c_tabl_ntb_col\relax
\global\advance\c_tabl_ntb_col\plusone}}
@@ -1476,15 +1506,15 @@
\scratchcounter\c_tabl_ntb_col
\scratchcounterone\tabl_ntb_get_col{#1}{#2}\relax
\ifcase\scratchcounterone\or
- \advance\d_tabl_ntb_width\dimexpr
+ \advance\d_tabl_ntb_width\dimexpr % no need for dimexpr
\tabl_ntb_get_wid\scratchcounter
\relax
\advance\scratchcounter\plusone
\else
- \dorecurse\scratchcounterone
+ \localcontrolledloop\plusone\scratchcounterone\plusone
{\advance\d_tabl_ntb_width\dimexpr
\tabl_ntb_get_wid\scratchcounter
- \ifnum\recurselevel<\scratchcounterone
+ \ifnum\currentloopiterator<\scratchcounterone
+\d_tabl_ntb_columndistance
+\tabl_ntb_get_dis\scratchcounter
\fi
@@ -1492,11 +1522,11 @@
\advance\scratchcounter\plusone}%
\fi
\setbox\scratchbox\hbox{\tabl_ntb_get_txt{#1}{#2}}%
- \tabl_ntb_set_ht{#1}{#2}{\the\ht\scratchbox}%
- %tabl_ntb_set_wd{#1}{#2}{\the\wd\scratchbox}%
+ \tabl_ntb_set_ht{#1}{#2}\ht\scratchbox
+ %tabl_ntb_set_wd{#1}{#2}\wd\scratchbox
\ifdim\ht\scratchbox>\tabl_ntb_get_hei{#1}\relax
- \tabl_ntb_set_hei{#1}{\the\ht\scratchbox}%
- \fi}%
+ \tabl_ntb_set_hei{#1}\ht\scratchbox
+ \fi}
\def\tabl_ntb_pass_three#1 #2 %
{% height
@@ -1511,7 +1541,7 @@
% case: nc=maxcolumns
\else
\scratchcounter#1\relax
- \dorecurse\scratchcountertwo
+ \localcontrolledloop\plusone\scratchcountertwo\plusone
{\advance\d_tabl_ntb_height\tabl_ntb_get_hei\scratchcounter
\advance\scratchcounter\plusone}%
\ifdim\d_tabl_ntb_height<\scratchheight\relax
@@ -1527,10 +1557,10 @@
\relax
\advance\scratchcounter\plusone
\else
- \dorecurse\scratchcounterone
+ \localcontrolledloop\plusone\scratchcounterone\plusone
{\advance\d_tabl_ntb_width\dimexpr
\tabl_ntb_get_wid\scratchcounter
- \ifnum\recurselevel<\scratchcounterone
+ \ifnum\currentloopiterator<\scratchcounterone
+\d_tabl_ntb_columndistance
+\tabl_ntb_get_dis\scratchcounter
\fi
@@ -1573,7 +1603,7 @@
\def\tabl_ntb_cell_finalize_indeed
{\scratchdimen\tabl_ntb_get_aut\c_tabl_ntb_col\relax
\ifdim\localwidth>\scratchdimen
- \tabl_ntb_set_aut\c_tabl_ntb_col{\the\dimexpr\localwidth}%
+ \tabl_ntb_set_aut\c_tabl_ntb_col\localwidth\relax
\fi}
\let\tabl_ntb_preroll\relax
@@ -1606,19 +1636,19 @@
% \letnaturaltablelocalparameter\c!align\v!no
% \inheritednaturaltablelocalframed{\strut}}%
%\edef\minimalcellheight{\the\ht\scratchbox}% not used
- \dorecurse\c_tabl_ntb_maximum_col
- {\tabl_ntb_let_aut\recurselevel\zeropoint
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\tabl_ntb_let_aut\currentloopiterator\zeropoint
% new
- \c_tabl_ntb_current_col_one\recurselevel\relax
- \dorecurse\c_tabl_ntb_maximum_row
- {%tabl_ntb_let_wd\recurselevel\c_tabl_ntb_current_col_one\zeropoint
- \tabl_ntb_let_ht\recurselevel\c_tabl_ntb_current_col_one\zeropoint}%
+ \c_tabl_ntb_current_col_one\currentloopiterator\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone
+ {%tabl_ntb_let_wd\currentloopiterator\c_tabl_ntb_current_col_one\zeropoint
+ \tabl_ntb_let_ht\currentloopiterator\c_tabl_ntb_current_col_one\zeropoint}%
% till here
- \tabl_ntb_let_tal\recurselevel\zerocount
- \tabl_ntb_let_wid\recurselevel\zeropoint
- \tabl_ntb_let_dis\recurselevel\zeropoint}%
- \dorecurse\c_tabl_ntb_maximum_row
- {\tabl_ntb_let_hei\recurselevel\maxdimen}%
+ \tabl_ntb_let_tal\currentloopiterator\zerocount
+ \tabl_ntb_let_wid\currentloopiterator\zeropoint
+ \tabl_ntb_let_dis\currentloopiterator\zeropoint}%
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone
+ {\tabl_ntb_let_hei\currentloopiterator\maxdimen}%
\tabl_ntb_let_gal\zerocount
\tabl_ntb_preroll\relax
\c_tabl_tbl_pass\plusone
@@ -1693,12 +1723,12 @@
-\d_tabl_ntb_rightmargindistance
+\d_tabl_ntb_columndistance
\relax
- \dorecurse\c_tabl_ntb_maximum_col
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
{\advance\scratchdimenfour\dimexpr
- \tabl_ntb_get_wid\recurselevel
+ \tabl_ntb_get_wid\currentloopiterator
\relax
\advance\scratchdimenfive\dimexpr
- -\tabl_ntb_get_dis\recurselevel
+ -\tabl_ntb_get_dis\currentloopiterator
-\d_tabl_ntb_columndistance
\relax}%
\relax
@@ -1706,8 +1736,9 @@
\ifdim\scratchdimenfour<\scratchdimenfive
\advance\scratchdimenfour-\scratchdimenfive
\divide\scratchdimenfour\c_tabl_ntb_maximum_col
- \dorecurse\c_tabl_ntb_maximum_col
- {\tabl_ntb_set_wid\recurselevel{\the\dimexpr\tabl_ntb_get_wid\recurselevel-\scratchdimenfour\relax}}%
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\scratchdimen\dimexpr\tabl_ntb_get_wid\currentloopiterator-\scratchdimenfour\relax
+ \tabl_ntb_set_wid\currentloopiterator\scratchdimen}%
\fi
\fi}
@@ -1767,10 +1798,10 @@
\t_split_before{\m_tabl_ntb_before_split}% not used (yet)
\setbox\b_split_content\vbox{\tabl_ntb_flush_content}%
\ifmultipleTBLheads
- \dorecurse\c_tabl_ntb_n_of_head_lines
+ \localcontrolledloop\plusone\c_tabl_ntb_n_of_head_lines\plusone
{\setbox\scratchbox\vsplit\b_split_content to \lineheight
\setbox\b_split_head\vbox{\unvcopy\b_split_head\unvcopy\scratchbox}}% \vpack ?
- \dorecurse\c_tabl_ntb_n_of_next_lines
+ \localcontrolledloop\plusone\c_tabl_ntb_n_of_next_lines\plusone
{\setbox\scratchbox\vsplit\b_split_content to \lineheight
\setbox\b_split_next\vbox{\unvcopy\b_split_next\unvcopy\scratchbox}}% \vpack ?
\fi
@@ -1803,18 +1834,18 @@
-\d_tabl_ntb_rightmargindistance
-\d_tabl_ntb_columndistance
\relax
- \dorecurse\c_tabl_ntb_maximum_col
- {\scratchdimen\tabl_ntb_get_aut\recurselevel\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\scratchdimen\tabl_ntb_get_aut\currentloopiterator
\advance\scratchdimenone\dimexpr
- -\tabl_ntb_get_dis\recurselevel
+ -\tabl_ntb_get_dis\currentloopiterator
-\d_tabl_ntb_columndistance
\relax
\ifdim\scratchdimen>\zeropoint\relax
\advance\scratchdimenone -\scratchdimen
\else
- \scratchdimen\tabl_ntb_get_wid\recurselevel\relax
+ \scratchdimen\tabl_ntb_get_wid\currentloopiterator\relax
\ifdim\scratchdimen>\d_tabl_ntb_maxwidth\relax
- \ifcase#1\else\tabl_ntb_let_wid\recurselevel\zeropoint\fi
+ \ifcase#1\else\tabl_ntb_let_wid\currentloopiterator\zeropoint\fi
\advance\scratchcounterone \plusone
\orelse\ifdim\scratchdimen>\zeropoint\relax
\advance\scratchdimenone -\scratchdimen
@@ -1826,15 +1857,15 @@
\fi}%
\ifconditional\c_tabl_ntb_trace_widths\tabl_ntb_show_widths M#1\fi
\ifcase\scratchcounterone \else \divide\scratchdimenone \scratchcounterone \fi
- \dorecurse\c_tabl_ntb_maximum_col
- {\scratchdimen\tabl_ntb_get_wid\recurselevel\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\scratchdimen\tabl_ntb_get_wid\currentloopiterator
\ifcase#1\relax
\ifdim\scratchdimen<\scratchdimenone % take natural width
- \tabl_ntb_set_aut\recurselevel{\the\scratchdimen}%
+ \tabl_ntb_set_aut\currentloopiterator\scratchdimen
\fi
\else
\ifzeropt\scratchdimen % auto set width
- \tabl_ntb_set_wid\recurselevel{\the\scratchdimenone}%
+ \tabl_ntb_set_wid\currentloopiterator\scratchdimenone
\fi
\fi}%
\ifconditional\c_tabl_ntb_trace_widths\tabl_ntb_show_widths E#1\fi}
@@ -1849,12 +1880,12 @@
\dimen0=\tabl_ntb_get_ht\c_tabl_ntb_current_row_three\c_tabl_ntb_current_col_three
% find nearest height in row
\dimen2=\zeropoint
- \dorecurse\c_tabl_ntb_maximum_col
- {\ifnum\recurselevel=\c_tabl_ntb_current_col_three\else
- \ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row_three\recurselevel\endcsname
- \scratchcounterthree\tabl_ntb_get_row\c_tabl_ntb_current_row_three\recurselevel\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\ifnum\currentloopiterator=\c_tabl_ntb_current_col_three\else
+ \ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row_three\the\currentloopiterator\endcsname
+ \scratchcounterthree\tabl_ntb_get_row\c_tabl_ntb_current_row_three\currentloopiterator\relax
\ifnum\scratchcounterthree=\plusone
- \dimen4=\tabl_ntb_get_ht\c_tabl_ntb_current_row_three\recurselevel\relax
+ \dimen4=\tabl_ntb_get_ht\c_tabl_ntb_current_row_three\currentloopiterator\relax
\ifdim\dimen2<\dimen4
\dimen2=\dimen4
\fi
@@ -1866,11 +1897,11 @@
\dimen4=\dimen2
\scratchcounterthree\c_tabl_ntb_current_row_three
\advance\scratchcounterthree\minusone
- \dorecurse\scratchcountertwo
+ \localcontrolledloop\plusone\scratchcountertwo\plusone
{\ifnum\c_tabl_ntb_current_row_four=\c_tabl_ntb_current_row_three\else
\advance\dimen4 \tabl_ntb_get_hei\c_tabl_ntb_current_row_four
\fi
- \ifnum\recurselevel=\scratchcountertwo\else
+ \ifnum\currentloopiterator=\scratchcountertwo\else
\tabl_ntb_set_nob\scratchcounterthree
\advance\scratchcounterthree\plusone
\fi
@@ -1881,30 +1912,30 @@
\advance\dimen0 -\dimen4
\divide\dimen0 \scratchcountertwo
\c_tabl_ntb_current_row_four\c_tabl_ntb_current_row_three
- \tabl_ntb_set_hei\c_tabl_ntb_current_row_three{\the\dimen2}%
- \dorecurse\scratchcountertwo
- {\dorecurse\c_tabl_ntb_maximum_col
- {\ifnum\recurselevel=\c_tabl_ntb_current_col_three\else
- \scratchdimen\dimexpr\tabl_ntb_get_ht\c_tabl_ntb_current_row_four\recurselevel+\dimen0\relax
- \tabl_ntb_set_ht\c_tabl_ntb_current_row_four\recurselevel{\the\scratchdimen}%
+ \tabl_ntb_set_hei\c_tabl_ntb_current_row_three\dimen2\relax
+ \localcontrolledloop\plusone\scratchcountertwo\plusone
+ {\localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\ifnum\currentloopiterator=\c_tabl_ntb_current_col_three\else
+ \scratchdimen\dimexpr\tabl_ntb_get_ht\c_tabl_ntb_current_row_four\currentloopiterator+\dimen0\relax
+ \tabl_ntb_set_ht\c_tabl_ntb_current_row_four\currentloopiterator\scratchdimen
\ifdim\tabl_ntb_get_hei\c_tabl_ntb_current_row_four<\scratchdimen
- \tabl_ntb_set_hei\c_tabl_ntb_current_row_four{\the\scratchdimen}%
+ \tabl_ntb_set_hei\c_tabl_ntb_current_row_four\scratchdimen
\fi
\fi}%
\advance\c_tabl_ntb_current_row_four\plusone}%
\orelse\ifdim\dimen4>\dimen0
\iftightTBLrowspan
- \tabl_ntb_set_hei\c_tabl_ntb_current_row_three{\the\dimen2}%
+ \tabl_ntb_set_hei\c_tabl_ntb_current_row_three\dimen2\relax
\fi
\fi
\fi
\fi}
\def\tabl_ntb_check_heights_one
- {\dorecurse\c_tabl_ntb_maximum_row
- {\c_tabl_ntb_current_row_three\recurselevel\relax
- \dorecurse\c_tabl_ntb_maximum_col
- {\c_tabl_ntb_current_col_three\recurselevel\relax
+ {\localcontrolledloop\plusone\c_tabl_ntb_maximum_row\plusone
+ {\c_tabl_ntb_current_row_three\currentloopiterator\relax
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\c_tabl_ntb_current_col_three\currentloopiterator\relax
\ifcsname\tabl_ntb_row_pattern\c_tabl_ntb_current_row_three\c_tabl_ntb_current_col_three\endcsname
\tabl_ntb_check_heights_one_indeed
\fi}}}
@@ -1915,11 +1946,11 @@
\def\tabl_ntb_show_widths#1#2%
{\begingroup
\scratchdimen\zeropoint
- \dorecurse\c_tabl_ntb_maximum_col
- {\advance\scratchdimen\tabl_ntb_get_wid\recurselevel\relax}%
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\advance\scratchdimen\tabl_ntb_get_wid\currentloopiterator\relax}%
\writestatus\m!TABLE{#1 \ifcase#2trial\else real\fi: hsize: \the\hsize, total: \the\scratchdimen}%
- \dorecurse\c_tabl_ntb_maximum_col
- {\writestatus\m!TABLE{\space\space\recurselevel: \the\dimexpr\tabl_ntb_get_wid\recurselevel}}%
+ \localcontrolledloop\plusone\c_tabl_ntb_maximum_col\plusone
+ {\writestatus\m!TABLE{\space\space\the\currentloopiterator: \the\dimexpr\tabl_ntb_get_wid\currentloopiterator}}%
\endgroup}
\def\tabl_ntb_char_align % called often
@@ -1974,7 +2005,7 @@
\def\tabl_ntb_cell_process_a_check_span_two_nop
{\ifdim\tabl_ntb_get_wid\c_tabl_ntb_col<\wd\scratchbox
- \tabl_ntb_set_wid\c_tabl_ntb_col{\the\wd\scratchbox}%
+ \tabl_ntb_set_wid\c_tabl_ntb_col\wd\scratchbox
\fi}
\protected\def\tabl_ntb_cell_process_a#1#2[#3]#4% grouping added ! ! !
@@ -1988,7 +2019,7 @@
\setbox\scratchbox\hbox
{\scratchdimen\naturaltablelocalparameter\c!distance\relax
\ifdim\scratchdimen>\tabl_ntb_get_dis{#2}\relax
- \tabl_ntb_set_dis{#2}{\the\scratchdimen}%
+ \tabl_ntb_set_dis{#2}\scratchdimen
\fi
\anch_backgrounds_text_level_start
\inheritednaturaltablelocalframed{\tabl_ntb_cell_start\tabl_ntb_char_align{#1}{#2}#4\tabl_ntb_cell_stop\tabl_ntb_cell_finalize}%
@@ -2009,10 +2040,10 @@
\scratchcounter\numexpr\c_tabl_ntb_row+\plusone\relax
\scratchdimen\tabl_ntb_get_hei\scratchcounter\relax
\ifdim\ht\scratchbox<\scratchdimen
- \tabl_ntb_set_hei\scratchcounter{\the\ht\scratchbox}% auto set
+ \tabl_ntb_set_hei\scratchcounter\ht\scratchbox% auto set
\fi
- \tabl_ntb_set_ht{#1}{#2}{\the\ht\scratchbox}%
- %tabl_ntb_set_wd{#1}{#2}{\the\wd\scratchbox}%
+ \tabl_ntb_set_ht{#1}{#2}\ht\scratchbox
+ %tabl_ntb_set_wd{#1}{#2}\wd\scratchbox
\ifautoTBLcheckwidth
\ifdim\wd\scratchbox<.75\hsize % fuzzy guess
\ifdim\ht\scratchbox>2\openlineheight % honor width since this
@@ -2020,10 +2051,10 @@
\ifzeropt\scratchdimen
% side effect: when width is set to 0pt,
% we can force a span that fits the sum of spans widths
- \tabl_ntb_set_aut\c_tabl_ntb_col{\the\scratchdimen}%
+ \tabl_ntb_set_aut\c_tabl_ntb_col\scratchdimen
\orelse\ifdim\wd\scratchbox>\scratchdimen
% unless span
- \tabl_ntb_set_aut\c_tabl_ntb_col{\the\wd\scratchbox}%
+ \tabl_ntb_set_aut\c_tabl_ntb_col\wd\scratchbox
% to be translated
\writestatus\m!TABLE{no auto width in (\number#1,\number#2)\space\the\wd\scratchbox/\the\hsize}%
\fi
@@ -2116,6 +2147,8 @@
\newtoks\everyresetTABLEyes
\newtoks\everyresetTABLEnop
+% todo : use \letTABLEparameter\c!width\v!fit ...
+
\appendtoks
\setupTABLE [%
%
diff --git a/tex/context/base/mkxl/task-ini.lmt b/tex/context/base/mkxl/task-ini.lmt
index 397f02292..0cb473651 100644
--- a/tex/context/base/mkxl/task-ini.lmt
+++ b/tex/context/base/mkxl/task-ini.lmt
@@ -106,7 +106,7 @@ appendaction("math", "normalizers", "noads.handlers.families",
appendaction("math", "normalizers", "noads.handlers.render", nil, "nonut", "enabled" )
appendaction("math", "normalizers", "noads.handlers.collapse", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.fixscripts", nil, "nonut", "enabled" )
-appendaction("math", "normalizers", "noads.handlers.domains", nil, "nonut", "disabled" )
+------------("math", "normalizers", "noads.handlers.domains", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.autofences", nil, "nonut", "disabled" )
appendaction("math", "normalizers", "noads.handlers.resize", nil, "nonut", "enabled" )
------------("math", "normalizers", "noads.handlers.respace", nil, "nonut", "enabled" )
@@ -116,6 +116,7 @@ appendaction("math", "normalizers", "noads.handlers.italics",
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" )
+appendaction("math", "normalizers", "noads.handlers.suspicious", nil, "nonut", "enabled" )
appendaction("math", "builders", "builders.kernel.mlisttohlist", nil, "nut", "enabled" ) -- mandate
appendaction("math", "builders", "typesetters.directions.processmath", nil, "nut", "disabled" )
diff --git a/tex/context/base/mkxl/typo-lin.lmt b/tex/context/base/mkxl/typo-lin.lmt
index 783faeabf..0824a8079 100644
--- a/tex/context/base/mkxl/typo-lin.lmt
+++ b/tex/context/base/mkxl/typo-lin.lmt
@@ -144,7 +144,7 @@ local function finalize(prop,key) -- delayed calculations
end
local function normalize(line,islocal) -- assumes prestine lines, nothing pre/appended
- local prop = getnormalizedline(line) -- we also can have "lineproperties" set but for a different porpose
+ local prop = getnormalizedline(line) -- we also can have "lineproperties" set but for a different purpose
local width = getwidth(line)
local hsize = islocal and width or tex.hsize
noflines = noflines + 1
@@ -214,6 +214,12 @@ local function addtoline(n,list,option)
delta = line.lefthangskip + line.leftskip
end
end
+
+ -- this is a quick hack for line numbering in aligned math but maybe we need
+ -- a signal in the properties: if getprops(n,"repositioned")
+ local xoffset = nuts.getoffsets(n)
+ delta = delta - xoffset
+
-- always kerns, also when 0 so that we can adapt but we can optimize if needed
-- by keeping a hash as long as we use the shiftinline helper .. no need to
-- optimize now .. we can also decide to put each blob in a hlist
diff --git a/tex/context/fonts/mkiv/asana-math.lfg b/tex/context/fonts/mkiv/asana-math.lfg
index 07a96741b..934f9e0f0 100644
--- a/tex/context/fonts/mkiv/asana-math.lfg
+++ b/tex/context/fonts/mkiv/asana-math.lfg
@@ -100,6 +100,10 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "fixellipses",
+ },
+
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/bonum-math.lfg b/tex/context/fonts/mkiv/bonum-math.lfg
index 73a1efcaf..c09b55c20 100644
--- a/tex/context/fonts/mkiv/bonum-math.lfg
+++ b/tex/context/fonts/mkiv/bonum-math.lfg
@@ -32,6 +32,9 @@ return {
parameters = {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
+ AccentTopShiftUp = -15,
+ FlattenedAccentTopShiftUp = -15,
+ -- AccentExtendMargin = 50,
AccentBaseDepth = 50,
RadicalDegreeBottomRaisePercent = 60,
RadicalRuleThickness = 66, -- 72 in font
@@ -74,7 +77,7 @@ return {
[0x1D450] = { xoffset = -0.05, width = 1.1, italic = 0, anchor = 0.9 }, -- c
[0x1D451] = { xoffset = -0.05, width = 1.1, italic = 0, anchor = 0.75 }, -- d
[0x1D452] = { xoffset = -0.05, width = 1.1, italic = 0, anchor = 0.9 }, -- e
- [0x1D453] = { xoffset = 0.45, width = 1.9, italic = 0.45 }, -- f
+ [0x1D453] = { xoffset = 0.45, width = 1.9, italic = 0.45, anchor = 1.1 }, -- f
[0x1D454] = { xoffset = 0.05, width = 1.1, italic = 0, anchor = 0.9 }, -- g
[0x0210E] = { xoffset = -0.1, width = 1.05, italic = 0, anchor = 1.15 }, -- h
[0x1D456] = { xoffset = -0.2, width = 1.1, italic = 0 }, -- i
@@ -180,11 +183,12 @@ return {
},
["lowercasescript"] = {
- width = 1.2,
- extend = 1.2,
- height = 1.2,
- depth = 1.2,
- squeeze = 1.2,
+ factor = 1.2,
+ -- width = 1.2,
+ -- extend = 1.2,
+ -- height = 1.2,
+ -- depth = 1.2,
+ -- squeeze = 1.2,
},
},
},
@@ -195,11 +199,10 @@ return {
topleft = -0.2,
bottomright = -0.2,
},
--- [0x1D453] = {
--- [0x0210E] = {
--- topleft = 0.5,
--- bottomright = -0.2,
--- },
+ ["0x2F.variants.*"] = {
+ topleft = -0.2,
+ bottomright = -0.2,
+ },
-- [0x28] = { -- left parenthesis. No!
-- topleft = -0.1,
-- bottomleft = -0.1,
@@ -270,6 +273,55 @@ return {
},
},
+
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
-- For upright alphabets, we unset the anchor.
-- This means that accents are placed
@@ -466,6 +518,19 @@ return {
tweak = "addrules",
},
{
+ -- This tweak is only needed for the funny arrows and these now get properly
+ -- centered. (Could actually be done in the engine).
+ tweak = "addarrows",
+ -- These are for documentation purposed as they are the defaults anyway:
+ left = 0.05,
+ right = 0.05,
+ slack = 0.10,
+ -- The equal doesn't really match the double arrows, as in plain etc, so it still
+ -- looks somewhat bad when zoomed in. This is the best we could do. Anyway, this
+ -- in only used when testing (forced) so it doesn't kick in normally.
+ list = { [0x3D] = { squeeze = .85, yoffset = .0975 } }
+ },
+ {
tweak = "kernpairs",
list = {
[mathematics.tweaks.subsets.acenorsuvxz] = {
@@ -521,6 +586,21 @@ return {
-- tweak = "fixanchors",
-- factor = .5,
-- },
+ {
+ tweak = "addbars",
+ advance = 0.275,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+
},
},
alternates = {
diff --git a/tex/context/fonts/mkiv/cambria-math.lfg b/tex/context/fonts/mkiv/cambria-math.lfg
index de8b55b22..2207c0645 100644
--- a/tex/context/fonts/mkiv/cambria-math.lfg
+++ b/tex/context/fonts/mkiv/cambria-math.lfg
@@ -56,6 +56,9 @@ return {
parameters = {
NoLimitSupFactor = 0,
NoLimitSubFactor = 1000,
+ -- AccentTopShiftUp = 0,
+ -- FlattenedAccentTopShiftUp = 0,
+ -- AccentExtendMargin = 50,
AccentBaseDepth = 300,
RadicalDegreeBottomRaisePercent = 65,
RadicalKernAfterDegree = -900,
@@ -80,9 +83,9 @@ return {
-- [0x002D8] = { yoffset = -0.15 }, -- breve
-- [0x002D9] = { yoffset = -0.15 }, -- dot
-- [0x000A8] = { yoffset = -0.1 }, -- ddot
- [0x020DB] = { yoffset = -0.05 }, -- dddot
+ -- [0x020DB] = { yoffset = -0.05 }, -- dddot
-- [0x002C7] = { yoffset = -0.1 }, -- check
- [0x020D7] = { yoffset = -0.05 }, -- vec
+ -- [0x020D7] = { yoffset = -0.05 }, -- vec
-- [0x00300] = { yoffset = -0.12, all=true }, -- widegrave
-- [0x00301] = { yoffset = -0.12, all=true }, -- wideacute
@@ -90,8 +93,8 @@ return {
-- [0x00303] = { yoffset = -0.12, all=true }, -- widetilde
-- [0x00304] = { yoffset = -0.12, all=true }, -- widebar
-- [0x00306] = { yoffset = -0.12, all=true }, -- widebreve
- [0x00307] = { yoffset = -0.025, all=true }, -- widedot
- [0x00308] = { yoffset = -0.025, all=true }, -- wideddot
+ -- [0x00307] = { yoffset = -0.025, all=true }, -- widedot
+ -- [0x00308] = { yoffset = -0.025, all=true }, -- wideddot
-- [0x020DB] = { yoffset = -0.1, all=true }, -- widedddot
-- [0x0030A] = { yoffset = -0.12, all=true }, -- widering
-- [0x0030C] = { yoffset = -0.12, all=true }, -- widecheck
@@ -147,6 +150,55 @@ return {
-- ["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
},
},
+
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 2, anchor = 1.5, xoffset = .25 }, -- widehat
+ [0x00303] = { width = 2, anchor = 1.5, xoffset = .25 }, -- widetilde
+ [0x00306] = { width = 2, anchor = 1.5, xoffset = .25 }, -- widebreve
+ [0x0030C] = { width = 2, anchor = 1.5, xoffset = .25 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ [0x020DB] = { yoffset = -0.03, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
tweak = "fixprimes",
scale = 0.9,
@@ -179,6 +231,26 @@ return {
{
tweak = "wipecues",
},
+ {
+ tweak = "addarrows",
+ },
+ {
+ tweak = "fixslashes",
+ },
+ {
+ tweak = "addbars",
+ advance = 0.33,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+ -- { -- the ldots are squareshaped and the cdots are circular
+ -- tweak = "fixellipses",
+ -- },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/concrete-math.lfg b/tex/context/fonts/mkiv/concrete-math.lfg
index f7e5f3dda..ff55d353d 100644
--- a/tex/context/fonts/mkiv/concrete-math.lfg
+++ b/tex/context/fonts/mkiv/concrete-math.lfg
@@ -21,18 +21,33 @@ return {
-- factor = 0.9,
-- },
{
- tweak = "kerns",
- list = {
- [0x2F] = {
- topleft = -0.2,
- -- bottomleft = 0,
- -- topright = 0,
- bottomright = -0.2,
- },
+ tweak = "kerns",
+ list = {
+ [0x2F] = {
+ topleft = -0.2,
+ -- bottomleft = 0,
+ -- topright = 0,
+ bottomright = -0.2,
},
},
+ },
+ {
+ tweak = "fixellipses",
+ },
+ {
+ tweak = "addbars",
+ advance = 0.6,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+
+
+ },
},
- },
bigslots = {
1, 2, 3, 4
},
diff --git a/tex/context/fonts/mkiv/dejavu-math.lfg b/tex/context/fonts/mkiv/dejavu-math.lfg
index b13150295..c2e909aef 100644
--- a/tex/context/fonts/mkiv/dejavu-math.lfg
+++ b/tex/context/fonts/mkiv/dejavu-math.lfg
@@ -27,6 +27,9 @@ return {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
FractionRuleThickness = 60,
+ AccentTopShiftUp = -25,
+ FlattenedAccentTopShiftUp = -25,
+ -- AccentExtendMargin = 50,
AccentBaseDepth = 30,
RadicalDegreeBottomRaisePercent = 62,
RadicalRuleThickness = 46, -- 52 in font
@@ -45,6 +48,7 @@ return {
{
tweak = "dimensions",
list = {
+ [0x1D44E] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- a
-- [0x1D449] = { xoffset = 0, width = .8, italic = .2 },
-- [0x1D44A] = { xoffset = 0, width = .8, italic = .2 },
["0x1D449:0x1D44A"] = { xoffset = 0, width = .8, italic = .2 },
@@ -107,6 +111,54 @@ return {
},
},
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ [0x020DB] = { yoffset = 0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
tweak = "fixprimes",
-- scale = 0.9,
@@ -128,6 +180,20 @@ return {
{
tweak = "wipecues",
},
+ {
+ tweak = "addbars",
+ advance = 0.175,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
},
},
alternates = {
diff --git a/tex/context/fonts/mkiv/erewhon-math.lfg b/tex/context/fonts/mkiv/erewhon-math.lfg
index e1e7fe9fd..71ff64648 100644
--- a/tex/context/fonts/mkiv/erewhon-math.lfg
+++ b/tex/context/fonts/mkiv/erewhon-math.lfg
@@ -87,6 +87,12 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/garamond-math.lfg b/tex/context/fonts/mkiv/garamond-math.lfg
index bdbb6b155..7c1e7ab22 100644
--- a/tex/context/fonts/mkiv/garamond-math.lfg
+++ b/tex/context/fonts/mkiv/garamond-math.lfg
@@ -11,10 +11,11 @@ return {
FractionRuleThickness = 60,
OverbarRuleThickness = 60,
UnderbarRuleThickness = 60,
+ AccentTopShiftUp = -75,
+ FlattenedAccentTopShiftUp = -75,
+ -- AccentExtendMargin = 50,
-- AccentBaseHeight = 0,
AccentBaseDepth = 75,
- -- AccentTopShiftUp = -75,
- -- FlattenedAccentTopShiftUp = -100,
-- RadicalRuleThickness = 50, -- 50 in font
DelimiterPercent = 90,
DelimiterShortfall = 400,
@@ -32,29 +33,29 @@ return {
tweak = "dimensions",
list = {
-- offset width italic
- -- [0x00060] = { yoffset = -0.1 }, -- grave
- -- [0x000B4] = { yoffset = -0.1 }, -- acute
- [0x002C6] = { yoffset = -0.1 }, -- hat
- [0x002DC] = { yoffset = -0.1 }, -- tilde
- -- [0x000AF] = { yoffset = -0.1 }, -- bar
- [0x002D8] = { yoffset = -0.15 }, -- breve
- [0x002D9] = { yoffset = -0.15 }, -- dot
- -- [0x000A8] = { yoffset = -0.1 }, -- ddot
- [0x020DB] = { yoffset = -0.115 }, -- dddot
- [0x002C7] = { yoffset = -0.1 }, -- check
- [0x020D7] = { yoffset = -0.1 }, -- vec
+ -- -- [0x00060] = { yoffset = -0.1 }, -- grave
+ -- -- [0x000B4] = { yoffset = -0.1 }, -- acute
+ -- [0x002C6] = { yoffset = -0.1 }, -- hat
+ -- [0x002DC] = { yoffset = -0.1 }, -- tilde
+ -- -- [0x000AF] = { yoffset = -0.1 }, -- bar
+ -- [0x002D8] = { yoffset = -0.15 }, -- breve
+ -- [0x002D9] = { yoffset = -0.15 }, -- dot
+ -- -- [0x000A8] = { yoffset = -0.1 }, -- ddot
+ -- [0x020DB] = { yoffset = -0.115 }, -- dddot
+ -- [0x002C7] = { yoffset = -0.1 }, -- check
+ -- [0x020D7] = { yoffset = -0.1 }, -- vec
- [0x00300] = { yoffset = -0.12 , all = true }, -- widegrave
- [0x00301] = { yoffset = -0.12 , all = true }, -- wideacute
- [0x00302] = { yoffset = -0.12 , all = true }, -- widehat
- [0x00303] = { yoffset = -0.12 , all = true }, -- widetilde
- [0x00304] = { yoffset = -0.12 , all = true }, -- widebar
- [0x00306] = { yoffset = -0.12 , all = true }, -- widebreve
- [0x00307] = { yoffset = -0.12 , all = true }, -- widedot
- [0x00308] = { yoffset = -0.12 , all = true }, -- wideddot
- -- [0x020DB] = { yoffset = -0.1 , all = true }, -- widedddot
- [0x0030A] = { yoffset = -0.12 , all = true }, -- widering
- [0x0030C] = { yoffset = -0.12 , all = true }, -- widecheck
+ -- [0x00300] = { yoffset = -0.12 , all = true }, -- widegrave
+ -- [0x00301] = { yoffset = -0.12 , all = true }, -- wideacute
+ -- [0x00302] = { yoffset = -0.12 , all = true }, -- widehat
+ -- [0x00303] = { yoffset = -0.12 , all = true }, -- widetilde
+ -- [0x00304] = { yoffset = -0.12 , all = true }, -- widebar
+ -- [0x00306] = { yoffset = -0.12 , all = true }, -- widebreve
+ -- [0x00307] = { yoffset = -0.12 , all = true }, -- widedot
+ -- [0x00308] = { yoffset = -0.12 , all = true }, -- wideddot
+ -- -- [0x020DB] = { yoffset = -0.1 , all = true }, -- widedddot
+ -- [0x0030A] = { yoffset = -0.12 , all = true }, -- widering
+ -- [0x0030C] = { yoffset = -0.12 , all = true }, -- widecheck
-- [0x002C6] = { scale =.85, yoffset = .1, width = .85, height = .935 }, -- hat
@@ -147,6 +148,54 @@ return {
["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 },
},
},
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ -- [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ -- [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ -- [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ -- [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
tweak = "fixprimes",
scale = 0.9,
@@ -166,6 +215,20 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.6,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
},
},
alternates = {
diff --git a/tex/context/fonts/mkiv/generic-math.lfg b/tex/context/fonts/mkiv/generic-math.lfg
index d50d49af9..490ad1416 100644
--- a/tex/context/fonts/mkiv/generic-math.lfg
+++ b/tex/context/fonts/mkiv/generic-math.lfg
@@ -45,6 +45,15 @@ return {
-- keep = true, -- keep the text size prime (aka minute)
},
{
+ tweak = "fixslashes",
+ },
+ {
+ tweak = "fixellipses",
+ },
+ {
+ tweak = "addbreve",
+ },
+ {
tweak = "checkspacing",
},
{
@@ -65,8 +74,127 @@ return {
-- }
},
{
+ tweak = "checkspacing",
+ },
+ {
+ tweak = "addscripts",
+ },
+ {
+ tweak = "accentdimensions",
+ },
+ {
+ tweak = "addrules",
+ },
+ {
+ tweak = "addarrows",
+ left = 0.1,
+ right = 0.1,
+ slack = 0.20,
+ list = {
+ [0x21A9] = false,
+ [0x21AA] = false,
+ [0x2190] = false,
+ [0x2192] = false,
+ [0x219E] = false,
+ [0x21A0] = false,
+-- [0x21A6] = false,
+-- [0x21CB] = false,
+-- [0x21CC] = false,
+ }
+ },
+ {
+ -- For upright alphabets, we unset the anchor.
+ -- This means that accents are placed
+ -- centered over the character
+ tweak = "wipeanchors",
+ -- list = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 }, -- todo: ranges
+ list = {
+ "digitsbold",
+ "digitsdoublestruck",
+ "digitsmonospace",
+ "digitsnormal",
+ "digitssansserifbold",
+ "digitssansserifnormal",
+ "lowercasebold",
+ "lowercaseboldfraktur",
+ "lowercasedoublestruck",
+ "lowercasefraktur",
+ "lowercasegreekbold",
+ "lowercasegreeknormal",
+ "lowercasegreeksansserifbold",
+ "lowercasemonospace",
+ "lowercasenormal",
+ "lowercasesansserifbold",
+ "lowercasesansserifnormal",
+ "uppercasebold",
+ "uppercaseboldfraktur",
+ "uppercasedoublestruck",
+ "uppercasefraktur",
+ "uppercasegreekbold",
+ "uppercasegreeknormal",
+ "uppercasegreeksansserifbold",
+ "uppercasemonospace",
+ "uppercasenormal", -- they are italic!
+ "uppercasesansserifbold",
+ "uppercasesansserifnormal",
+ },
+ },
+ {
+ -- For non-italic alphabets we
+ -- remove italic correction.
+ tweak = "wipeitalics",
+ list = {
+ -- "digitsbold",
+ -- "digitsdoublestruck",
+ -- "digitsmonospace",
+ -- "digitsnormal",
+ -- "digitssansserifbold",
+ -- "digitssansserifnormal",
+ -- "lowercasebold",
+ -- "lowercaseboldfraktur",
+ -- "lowercasedoublestruck",
+ -- "lowercasefraktur",
+ "lowercasemonospace",
+ "lowercasenormal",
+ -- "lowercasesansserifbold",
+ -- "lowercasesansserifnormal",
+ -- "lowercasegreeknormal",
+ "uppercasebold",
+ -- "uppercaseboldfraktur",
+ -- "uppercasedoublestruck",
+ -- "uppercasefraktur",
+ -- "uppercasegreekbold",
+ -- "uppercasegreeknormal",
+ -- "uppercasegreeksansserifbold",
+ "uppercasemonospace",
+ "uppercasesansserifbold",
+ "uppercasesanserifnormal",
+ },
+ },
+ {
+ -- This one fakes margins to get larger/smaller accents
+ -- with for example \widetilde.
+ -- see lm for many examples
+ tweak = "margins",
+ list = {
+ },
+ },
+ {
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.1,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "wipecues",
+ },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/kpfonts-math.lfg b/tex/context/fonts/mkiv/kpfonts-math.lfg
index 3c2b89b79..c0b019f79 100644
--- a/tex/context/fonts/mkiv/kpfonts-math.lfg
+++ b/tex/context/fonts/mkiv/kpfonts-math.lfg
@@ -27,7 +27,9 @@ return {
{
tweak = "dimensions",
list = {
- -- whatever
+ [0x2A3F] = {
+ factor = 0.84625,
+ }
},
},
{
@@ -93,6 +95,16 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.025,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
},
},
alternates = {
diff --git a/tex/context/fonts/mkiv/libertinus-math.lfg b/tex/context/fonts/mkiv/libertinus-math.lfg
index 4992b41be..77d0161e3 100644
--- a/tex/context/fonts/mkiv/libertinus-math.lfg
+++ b/tex/context/fonts/mkiv/libertinus-math.lfg
@@ -18,6 +18,9 @@ return {
OverbarRuleThickness = 50,
-- RadicalRuleThickness = 50,
UnderbarRuleThickness = 50,
+ AccentTopShiftUp = -35,
+ FlattenedAccentTopShiftUp = -35,
+ -- AccentExtendMargin = 50,
-- AccentTopShiftUp = 0,
AccentBaseDepth = 10,
RadicalDegreeBottomRaisePercent = 60,
@@ -39,30 +42,30 @@ return {
{
tweak = "dimensions",
list = {
- [0x00060] = { yoffset = -0.075 }, -- grave
- [0x000B4] = { yoffset = -0.075 }, -- acute
- [0x002C6] = { yoffset = -0.075 }, -- hat
- [0x002DC] = { yoffset = -0.075 }, -- tilde
- -- [0x000AF] = { yoffset = -0.1 }, -- bar
- [0x002D8] = { yoffset = -0.075 }, -- breve
- [0x002D9] = { yoffset = -0.05 }, -- dot
- [0x000A8] = { yoffset = -0.02 }, -- ddot
- [0x020DB] = { yoffset = -0.02 }, -- dddot
- [0x002DA] = { yoffset = -0.1 }, -- ring
- -- [0x002C7] = { yoffset = -0.1 }, -- check
- [0x020D7] = { yoffset = -0.1 }, -- vec
+ -- [0x00060] = { yoffset = -0.075 }, -- grave
+ -- [0x000B4] = { yoffset = -0.075 }, -- acute
+ -- [0x002C6] = { yoffset = -0.075 }, -- hat
+ -- [0x002DC] = { yoffset = -0.075 }, -- tilde
+ -- -- [0x000AF] = { yoffset = -0.1 }, -- bar
+ -- [0x002D8] = { yoffset = -0.075 }, -- breve
+ -- [0x002D9] = { yoffset = -0.05 }, -- dot
+ -- [0x000A8] = { yoffset = -0.02 }, -- ddot
+ -- [0x020DB] = { yoffset = -0.02 }, -- dddot
+ -- [0x002DA] = { yoffset = -0.1 }, -- ring
+ -- -- [0x002C7] = { yoffset = -0.1 }, -- check
+ -- [0x020D7] = { yoffset = -0.1 }, -- vec
- [0x00300] = { yoffset = -0.1, all = true }, -- widegrave
- [0x00301] = { yoffset = -0.1, all = true }, -- wideacute
- [0x00302] = { yoffset = -0.1, all = true }, -- widehat
- [0x00303] = { yoffset = -0.09, all = true }, -- widetilde
- -- [0x00304] = { yoffset = -0.12, all = true }, -- widebar
- [0x00306] = { yoffset = -0.05, all = true }, -- widebreve
- [0x00307] = { yoffset = -0.02, all = true }, -- widedot
- [0x00308] = { yoffset = -0.02, all = true }, -- wideddot
- -- [0x020DB] = { yoffset = -0.1, all = true }, -- widedddot
- [0x0030A] = { yoffset = -0.12, all = true }, -- widering
- [0x0030C] = { yoffset = -0.04, all = true }, -- widecheck
+ -- [0x00300] = { yoffset = -0.1, all = true }, -- widegrave
+ -- [0x00301] = { yoffset = -0.1, all = true }, -- wideacute
+ -- [0x00302] = { yoffset = -0.1, all = true }, -- widehat
+ -- [0x00303] = { yoffset = -0.09, all = true }, -- widetilde
+ -- -- [0x00304] = { yoffset = -0.12, all = true }, -- widebar
+ -- [0x00306] = { yoffset = -0.05, all = true }, -- widebreve
+ -- [0x00307] = { yoffset = -0.02, all = true }, -- widedot
+ -- [0x00308] = { yoffset = -0.02, all = true }, -- wideddot
+ -- -- [0x020DB] = { yoffset = -0.1, all = true }, -- widedddot
+ -- [0x0030A] = { yoffset = -0.12, all = true }, -- widering
+ -- [0x0030C] = { yoffset = -0.04, all = true }, -- widecheck
-- [0x1D44F] = { width = 1, italic = 0, anchor = 1.5 }, -- b (6.8)
-- [0x1D451] = { width = 1, italic = 0, anchor = 1.2 }, -- d (6.8)
@@ -119,6 +122,55 @@ return {
},
},
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.8, anchor = 1.40, xoffset = .20 }, -- widehat
+ [0x00303] = { width = 2.0, anchor = 1.50, xoffset = .30 }, -- widetilde
+ [0x00306] = { width = 1.6, anchor = 1.30, xoffset = .15 }, -- widebreve
+ [0x0030C] = { width = 1.3, anchor = 1.15, xoffset = .075 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
+
{
tweak = "fixprimes",
scale = 0.9,
@@ -137,6 +189,20 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.5,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/lm.lfg b/tex/context/fonts/mkiv/lm.lfg
index 250fe9e93..1d81e0b77 100644
--- a/tex/context/fonts/mkiv/lm.lfg
+++ b/tex/context/fonts/mkiv/lm.lfg
@@ -61,6 +61,24 @@ return {
author = "Hans Hagen & Mikael Sundqvist",
copyright = "ConTeXt development team",
mathematics = {
+ parameters = {
+ FractionNumeratorDisplayStyleShiftUp = 600, -- used to be a function
+ NoLimitSupFactor = 0,
+ NoLimitSubFactor = 900,
+ AccentTopShiftUp = -60,
+ FlattenedAccentTopShiftUp = -60,
+ -- AccentExtendMargin = 50,
+ -- AccentBaseHeight = 0,
+ -- AccentBaseDepth = 0,
+ -- AccentTopOvershoot = 66,
+ AccentSuperscriptDrop = 100, -- drop the superscripts if accents are present. Amount in percentage of height of accent(?)
+ AccentSuperscriptPercent = 0,
+ DelimiterPercent = 90,
+ DelimiterShortfall = 400,
+ -- DisplayOperatorMinHeight = 1800, -- 1300 in font (only one)
+ PrimeRaisePercent = 60, -- 50 default
+ PrimeRaiseComposedPercent = 15, -- 25 default
+ },
tweaks = {
aftercopying = {
{
@@ -79,21 +97,21 @@ return {
-- [0x002D9] = { yoffset = -0.05 }, -- dot
-- [0x000A8] = { yoffset = -0.05 }, -- ddot
-- [0x020DB] = { yoffset = 0.2 }, -- dddot (done below!)
- [0x002DA] = { width = 0 }, -- ring (bounding box is wrong)
+ -- [0x002DA] = { width = 0 }, -- ring (bounding box is wrong)
-- [0x002C7] = { yoffset = -0.05 }, -- check
-- [0x020D7] = { yoffset = -0.05 }, -- vec
- [0x00300] = { yoffset = -0.03, all = true }, -- widegrave
- [0x00301] = { yoffset = -0.03, all = true }, -- wideacute
- [0x00302] = { yoffset = -0.075, all = true }, -- widehat
- [0x00303] = { yoffset = -0.05, all = true }, -- widetilde
- [0x00304] = { yoffset = -0.02, all = true }, -- widebar
- [0x00306] = { yoffset = -0.05, all = true }, -- widebreve
- [0x00307] = { yoffset = -0.027, all = true }, -- widedot
- [0x00308] = { yoffset = -0.027, all = true }, -- wideddot
- [0x020DB] = { yoffset = -0.065, all = true }, -- widedddot
- [0x0030C] = { yoffset = -0.05, all = true }, -- widecheck
- [0x0030A] = { yoffset = -0.025, all = true }, -- widering
+ -- [0x00300] = { yoffset = -0.03, all = true }, -- widegrave
+ -- [0x00301] = { yoffset = -0.03, all = true }, -- wideacute
+ -- [0x00302] = { yoffset = -0.075, all = true }, -- widehat
+ -- [0x00303] = { yoffset = -0.05, all = true }, -- widetilde
+ -- [0x00304] = { yoffset = -0.02, all = true }, -- widebar
+ -- [0x00306] = { yoffset = -0.05, all = true }, -- widebreve
+ -- [0x00307] = { yoffset = -0.027, all = true }, -- widedot
+ -- [0x00308] = { yoffset = -0.027, all = true }, -- wideddot
+ -- [0x020DB] = { yoffset = -0.065, all = true }, -- widedddot
+ -- [0x0030C] = { yoffset = -0.05, all = true }, -- widecheck
+ -- [0x0030A] = { yoffset = -0.025, all = true }, -- widering
-- [0x0212C] = { width = 0.95, italic = 0.05 }, -- script B
-- [0x1D49E] = { width = 0.8, italic = 0.25 }, -- script C
@@ -241,6 +259,58 @@ return {
-- },
},
},
+
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ -- [0x00300] = { width = 0.8 }, -- widegrave
+ -- [0x00301] = { width = 0.9 }, -- wideacute
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ -- [0x0030A] = { width = 0.9, xoffset = -.0 }, -- widering
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
-- Here we modify "corner kerns".
-- We started with 0x2F, the solidus
@@ -489,6 +559,20 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.52,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+ {
+ tweak = "addequals",
+ },
-- {
-- tweak = "wipevariants",
-- list = {
@@ -497,21 +581,6 @@ return {
-- },
},
},
- parameters = {
- FractionNumeratorDisplayStyleShiftUp = 600, -- used to be a function
- NoLimitSupFactor = 0,
- NoLimitSubFactor = 900,
- -- AccentBaseHeight = 0,
- -- AccentBaseDepth = 0,
- -- AccentTopOvershoot = 66,
- AccentSuperscriptDrop = 100, -- drop the superscripts if accents are present. Amount in percentage of height of accent(?)
- AccentSuperscriptPercent = 0,
- DelimiterPercent = 90,
- DelimiterShortfall = 400,
- -- DisplayOperatorMinHeight = 1800, -- 1300 in font (only one)
- PrimeRaisePercent = 60, -- 50 default
- PrimeRaiseComposedPercent = 15, -- 25 default
- },
bigslots = {
1, 3, 5, 7 -- In fact, 6 is the last one.
},
diff --git a/tex/context/fonts/mkiv/lucida-opentype-math.lfg b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
index a8cd48ca2..372d8cce2 100644
--- a/tex/context/fonts/mkiv/lucida-opentype-math.lfg
+++ b/tex/context/fonts/mkiv/lucida-opentype-math.lfg
@@ -42,6 +42,9 @@ return {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
FractionRuleThickness = 55,
+ -- AccentTopShiftUp = 0,
+ -- FlattenedAccentTopShiftUp = 0,
+ -- AccentExtendMargin = 50,
-- AccentBaseHeight = 650,
AccentBaseDepth = 150,
RadicalDegreeBottomRaisePercent = 50,
@@ -110,6 +113,63 @@ return {
["0x7C.variants.4"]={ squeeze = 0.80, height = 0.80, depth = 0.80 },
},
},
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ -- [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ -- [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ -- [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ -- [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
+ {
+ tweak = "fixslashes",
+ },
+ {
+ tweak = "fixellipses",
+ },
+ {
+ tweak = "addbreve",
+ },
{
tweak = "kerns",
list = {
@@ -189,6 +249,31 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addfourier",
+ -- scale = 1.5,
+ variant = 1,
+ },
+ {
+ tweak = "addarrows",
+ left = 0.1,
+ right = 0.1,
+ slack = 0.20,
+ list = {
+ [0x21A9] = false,
+ [0x21AA] = false,
+ [0x2190] = false,
+ [0x2192] = false,
+ [0x219E] = false,
+ [0x21A0] = false,
+-- [0x21A6] = false,
+-- [0x21CB] = false,
+-- [0x21CC] = false,
+ }
+ },
},
},
alternates = {
diff --git a/tex/context/fonts/mkiv/pagella-math.lfg b/tex/context/fonts/mkiv/pagella-math.lfg
index f03c10d65..9be98adcf 100644
--- a/tex/context/fonts/mkiv/pagella-math.lfg
+++ b/tex/context/fonts/mkiv/pagella-math.lfg
@@ -9,7 +9,7 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
-- [0x1D453] = offset_f, -- 𝑓
-- ["1:0x1D453"] = offset_f, -- needed for compact
-- ["2:0x1D453"] = offset_f, -- needed for compact
--- ["*:0x1D453"] = offset_f, -- 𝑓
+ -- ["*:0x1D453"] = offset_f, -- 𝑓
},
}
@@ -28,8 +28,9 @@ local dimensions, kerns if CONTEXTLMTXMODE == 0 then
end
-- When set this will bypass the italic correction hackery!
+
local integral_variants = { bottomright = -0.20 }
--- local integral_top = { topright = 0.05 }
+----- integral_top = { topright = 0.05 }
local integral_bottom = { bottomright = -0.20 }
@@ -43,11 +44,13 @@ return {
parameters = {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
- AccentTopShiftUp = 30,
+ AccentTopShiftUp = 10,
+ FlattenedAccentTopShiftUp = 10, -- now also set, the wide ones (so we can move in one go)
+ -- AccentExtendMargin = 50,
-- AccentBaseHeight = 0,
AccentBaseDepth = 80,
--- SpaceAfterScript = 0,
--- SpaceAfterScript = 30,
+ -- SpaceAfterScript = 0,
+ -- SpaceAfterScript = 30,
RadicalDegreeBottomRaisePercent = 60,
RadicalKernAfterDegree = -500,
RadicalRuleThickness = 54, -- 60 in font
@@ -78,36 +81,7 @@ return {
{
tweak = "dimensions",
list = { -- offset width italic
- -- [0x002C6] = { scale=.85, yoffset = .1, width = .85, height = .935 }, -- hat
- -- [0x00302] = { scale=.85, yoffset = .1, width = .85, height = .935 }, -- hat
- -- [0x002C6] = { scale=.75, yoffset = .2, advance = .75, width = .75, height = .90 }, -- hat
- -- [0x00302] = { scale=.75, yoffset = .2, advance = .75, width = .75, height = .90 }, -- hat
-
- [0x00060] = { yoffset = -0.035 }, -- grave
- [0x000B4] = { yoffset = -0.035 }, -- acute
- [0x002C6] = { yoffset = -0.035 }, -- hat
- [0x002DC] = { yoffset = -0.035 }, -- tilde
- [0x000AF] = { yoffset = -0.05 }, -- bar
- [0x002D8] = { yoffset = -0.035 }, -- breve
- [0x002D9] = { yoffset = -0.035 }, -- dot
- [0x000A8] = { yoffset = -0.05 }, -- ddot
- [0x020DB] = { yoffset = -0.06 }, -- dddot
- -- [0x002DA] = { yoffset = -0.05 }, -- ring
- -- [0x002C7] = { yoffset = -0.05 }, -- check
[0x020D7] = { yoffset = -0.05 }, -- vec
-
- -- [0x00300] = { yoffset = -0.07, all=true }, -- widegrave
- -- [0x00301] = { yoffset = -0.07, all=true }, -- wideacute
- [0x00302] = { yoffset = -0.02, all=true }, -- widehat
- [0x00303] = { yoffset = -0.02, all=true }, -- widetilde
- [0x00304] = { yoffset = -0.05, all=true }, -- widebar
- [0x00306] = { yoffset = -0.03, all=true }, -- widebreve
- [0x00307] = { yoffset = -0.03, all=true }, -- widedot
- [0x00308] = { yoffset = -0.03, all=true }, -- wideddot
- -- [0x020DB] = { yoffset = 0, all=true }, -- widedddot
- -- [0x0030A] = { yoffset = -0.05, all=true }, -- widering
- [0x0030C] = { yoffset = -0.03, all=true }, -- widecheck
-
[0x1D44E] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- a
[0x1D44F] = { xoffset = 0, width = 1, italic = 0, anchor = 1.3 }, -- b
[0x1D450] = { xoffset = 0, width = 1, italic = 0, anchor = 0.9 }, -- c
@@ -132,6 +106,62 @@ return {
[0x1D71D] = { xoffset = 0, width = 1, italic = 0, anchor = 0.7 }, -- \varpi
},
},
+
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00300] = { width = 0.9 }, -- widegrave
+ [0x00301] = { width = 0.9 }, -- wideacute
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030A] = { width = 0.9, xoffset = -.0 }, -- widering
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ [0x020DB] = { yoffset = -0.01, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
+ {
+ tweak = "fixslashes",
+ },
+
{
tweak = "kerns",
list = {
@@ -141,16 +171,7 @@ return {
-- bottomleft = 0,
-- topright = 0,
bottomright = -0.2,
- },
-
--- [0x1D453] = {
--- topleft = 3,
--- bottomleft = 3,
--- topright = 3,
--- bottomright = 3,
--- },
-
-
+ },
["0x7D.parts.top"] = {
topright = -0.15,
}, -- right brace top
@@ -223,6 +244,23 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addarrows",
+ },
+ {
+ tweak = "addbars",
+ advance = 0.2,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/schola-math.lfg b/tex/context/fonts/mkiv/schola-math.lfg
index 5c96f9055..cb992cd0b 100644
--- a/tex/context/fonts/mkiv/schola-math.lfg
+++ b/tex/context/fonts/mkiv/schola-math.lfg
@@ -26,6 +26,9 @@ return {
parameters = {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
+ AccentTopShiftUp = -15,
+ FlattenedAccentTopShiftUp = -15,
+ -- AccentExtendMargin = 50,
-- AccentBaseHeight = 0,
AccentBaseDepth = 30,
RadicalDegreeBottomRaisePercent = 60,
@@ -108,6 +111,57 @@ return {
},
},
+
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
+
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
+ },
+ },
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
+
+
{
tweak = "fixprimes",
scale = 0.85,
@@ -126,6 +180,21 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.27,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ -- scale = 1.25,
+ variant = 1,
+ },
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/stix-two-math.lfg b/tex/context/fonts/mkiv/stix-two-math.lfg
index bd09c192b..b5e6daf29 100644
--- a/tex/context/fonts/mkiv/stix-two-math.lfg
+++ b/tex/context/fonts/mkiv/stix-two-math.lfg
@@ -1,5 +1,5 @@
-- When set this will bypass the italic correction hackery!
-local integral_variants = { bottomright = -0.20 }
+local integral_variants = { bottomright = -0.4 }
-- local integral_top = { topright = 0.05 }
local integral_bottom = { bottomright = -0.35 }
@@ -31,6 +31,8 @@ return {
NoLimitSubFactor = 1000,
-- AccentBaseHeight = 0,
AccentBaseDepth = 30,
+ FlattenedAccentTopShiftUp = 0, -- now also set, the wide ones (so we can move in one go)
+ -- AccentExtendMargin = 50,
RadicalDegreeBottomRaisePercent = 65,
-- RadicalKernBeforeDegree = 500,
RadicalKernAfterDegree = -500,
@@ -122,34 +124,54 @@ return {
feature = "ss01",-- this changes to roundhand style for stixtwo
selector = 0xFE01,
},
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.2, anchor = 1.10, xoffset = .05 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
{
tweak = "dimensions",
list = {
- -- [0x00060] = { yoffset = -0.035 }, -- grave
- -- [0x000B4] = { yoffset = -0.035 }, -- acute
- -- [0x002C6] = { yoffset = -0.035 }, -- hat
- -- [0x002DC] = { yoffset = -0.035 }, -- tilde
- -- [0x000AF] = { yoffset = -0.05 }, -- bar
- -- [0x002D8] = { yoffset = -0.035 }, -- breve
- [0x002D9] = { yoffset = -0.02 }, -- dot
- [0x000A8] = { yoffset = -0.02 }, -- ddot
- [0x020DB] = { yoffset = 0.04 }, -- dddot
- -- [0x002DA] = { yoffset = -0.05 }, -- ring
- -- [0x002C7] = { yoffset = -0.05 }, -- check
- [0x020D7] = { yoffset = -0.07 }, -- vec
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
- -- [0x00300] = { yoffset = -0.07, all=true }, -- widegrave
- -- [0x00301] = { yoffset = -0.07, all=true }, -- wideacute
- -- [0x00302] = { yoffset = -0.02, all=true }, -- widehat
- -- [0x00303] = { yoffset = -0.02, all=true }, -- widetilde
- -- [0x00304] = { yoffset = -0.05, all=true }, -- widebar
- -- [0x00306] = { yoffset = -0.03, all=true }, -- widebreve
- -- [0x00307] = { yoffset = -0.03, all=true }, -- widedot
- -- [0x00308] = { yoffset = -0.03, all=true }, -- wideddot
- -- [0x020DB] = { yoffset = 0, all=true }, -- widedddot
- -- [0x0030A] = { yoffset = -0.05, all=true }, -- widering
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ [0x020DB] = { yoffset = 0.025, height = .95, all = true }, -- widedddot : 0x20DB (self)
},
},
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
tweak = "fixprimes",
scale = 1,
@@ -168,6 +190,35 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addarrows",
+ },
+ {
+ tweak = "fixslashes",
+ },
+ { -- already exists, but not good spacing
+ tweak = "addbars",
+ advance = 0.4,
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
+{
+ tweak = "addparts",
+ list = {
+ [0x21F4] = {
+ horizontal = true,
+ template = 0x2192,
+ sequence = {
+ { glyph = "first", factor = 2 },
+ { glyph = 0x2022, },
+ { glyph = "first", factor = 2 },
+ { glyph = "last" },
+ }
+ }
+ }
+},
},
},
bigslots = {
diff --git a/tex/context/fonts/mkiv/termes-math.lfg b/tex/context/fonts/mkiv/termes-math.lfg
index f45ee4433..c5bcb3e84 100644
--- a/tex/context/fonts/mkiv/termes-math.lfg
+++ b/tex/context/fonts/mkiv/termes-math.lfg
@@ -33,6 +33,9 @@ return {
parameters = {
NoLimitSupFactor = 0,
NoLimitSubFactor = 900,
+ AccentTopShiftUp = -15,
+ FlattenedAccentTopShiftUp = -15,
+ -- AccentExtendMargin = 50,
-- AccentBaseHeight = 0,
AccentBaseDepth = 50,
RadicalDegreeBottomRaisePercent = 60,
@@ -125,11 +128,56 @@ return {
["0x2231.variants.*"] = integral_variants, ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom,
["0x2232.variants.*"] = integral_variants, ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom,
["0x2233.variants.*"] = integral_variants, ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom,
+ },
+ },
+ -- Accents are a mess. We migrate the extensibles from the combiners to the base accent
+ -- and then need to tweak the width (which is auto set because it was zero with a large
+ -- accent anchor offset). First we copy and fix.
+ {
+ tweak = "extendaccents",
+ },
+ {
+ tweak = "fixaccents",
+ },
+ -- First we set the dimensions of the initial accent which started out as zero but we want
+ -- a proper width.
+ {
+ tweak = "dimensions",
+ list = {
+ [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat
+ [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde
+ [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve
+ [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck
+ },
+ },
+ -- Then we deal with all offsets and heights in one go. So we treat the initial accent
+ -- as well as the variants here.
+ {
+ tweak = "dimensions",
+ list = {
+ -- here we want to apply to all
+ -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060
+ -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4
+ -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6
+ -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC
+ -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8
+ -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA
+ -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7
+ -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF
-
+ -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9
+ -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8
+ -- [0x020DB] = { yoffset = -0.015, height = .95, all = true }, -- widedddot : 0x20DB (self)
},
},
+ -- We now copy these to the not wide slots so that we can set these to stretch as well,
+ -- if only because it is less confusing and more consistent.
+ {
+ tweak = "copyaccents",
+ },
+ -- So far for the accents.
+
{
tweak = "fixprimes",
scale = 0.85,
@@ -148,6 +196,20 @@ return {
{
tweak = "addrules",
},
+ {
+ tweak = "addbars",
+ advance = 0.3,
+ },
+ {
+ tweak = "addactuarian",
+ },
+ {
+ tweak = "addequals",
+ },
+ {
+ tweak = "addfourier",
+ variant = 1,
+ },
},
},
bigslots = {
diff --git a/tex/context/interface/mkii/keys-nl.xml b/tex/context/interface/mkii/keys-nl.xml
index e7e05ec5c..d0ccd5522 100644
--- a/tex/context/interface/mkii/keys-nl.xml
+++ b/tex/context/interface/mkii/keys-nl.xml
@@ -876,6 +876,7 @@
<cd:constant name='frameradius' value='kaderstraal'/>
<cd:constant name='frames' value='hokjes'/>
<cd:constant name='freeregion' value='vrijgebied'/>
+ <cd:constant name='freezespacing' value='freezespacing'/>
<cd:constant name='from' value='van'/>
<cd:constant name='functioncolor' value='functioncolor'/>
<cd:constant name='functionstyle' value='functionstyle'/>
@@ -956,6 +957,7 @@
<cd:constant name='lastpubsep' value='lastpubsep'/>
<cd:constant name='layout' value='layout'/>
<cd:constant name='left' value='links'/>
+ <cd:constant name='leftclass' value='leftclass'/>
<cd:constant name='leftcolor' value='linkerkleur'/>
<cd:constant name='leftcompoundhyphen' value='linkerkoppelteken'/>
<cd:constant name='leftedge' value='linkerrand'/>
@@ -1014,6 +1016,7 @@
<cd:constant name='menu' value='menu'/>
<cd:constant name='method' value='methode'/>
<cd:constant name='middle' value='midden'/>
+ <cd:constant name='middleclass' value='middleclass'/>
<cd:constant name='middlecolor' value='middenkleur'/>
<cd:constant name='middlecommand' value='middencommando'/>
<cd:constant name='middlesource' value='middlesource'/>
@@ -1060,6 +1063,8 @@
<cd:constant name='numberconversionset' value='numberconversionset'/>
<cd:constant name='numberdistance' value='nummerafstand'/>
<cd:constant name='numbering' value='nummeren'/>
+ <cd:constant name='numberlocation' value='numberlocation'/>
+ <cd:constant name='numbermethod' value='nummermethode'/>
<cd:constant name='numberorder' value='numberorder'/>
<cd:constant name='numberprefix' value='numberprefix'/>
<cd:constant name='numbersegments' value='numbersegments'/>
@@ -1070,6 +1075,7 @@
<cd:constant name='numberstopper' value='numberstopper'/>
<cd:constant name='numberstrut' value='nummerstrut'/>
<cd:constant name='numberstyle' value='nummerletter'/>
+ <cd:constant name='numberthreshold' value='numberthreshold'/>
<cd:constant name='numberwidth' value='nummerbreedte'/>
<cd:constant name='nx' value='nx'/>
<cd:constant name='ny' value='ny'/>
@@ -1123,6 +1129,7 @@
<cd:constant name='palet' value='palet'/>
<cd:constant name='paper' value='papier'/>
<cd:constant name='paragraph' value='alinea'/>
+ <cd:constant name='penalties' value='penalties'/>
<cd:constant name='period' value='period'/>
<cd:constant name='place' value='plaatsen'/>
<cd:constant name='placehead' value='plaatskop'/>
@@ -1176,6 +1183,7 @@
<cd:constant name='reverse' value='omgekeerd'/>
<cd:constant name='right' value='rechts'/>
<cd:constant name='rightchars' value='rightchars'/>
+ <cd:constant name='rightclass' value='rightclass'/>
<cd:constant name='rightcolor' value='rechterkleur'/>
<cd:constant name='rightcompoundhyphen' value='rechterkoppelteken'/>
<cd:constant name='rightedge' value='rechterrand'/>
diff --git a/tex/context/modules/mkxl/m-gimmicks.mkxl b/tex/context/modules/mkxl/m-gimmicks.mkxl
new file mode 100644
index 000000000..e2659ae99
--- /dev/null
+++ b/tex/context/modules/mkxl/m-gimmicks.mkxl
@@ -0,0 +1,89 @@
+%D \module
+%D [ file=m-gimmicks,
+%D version=2022.07.25
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Whatever comes up,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\def\MacScale {.7}%
+\def\MacRule {.05}%
+\def\MacDistance {.05}%
+\def\MacKern {0}%
+
+\protected\def\Mac
+ {\dontleavehmode
+ \begingroup
+ \scratchwidth \fontcharwd\font`M\relax
+ \scratchdistance\MacScale\fontcharwd\font`c\relax
+ \scratchoffset \dimexpr\fontcharht\font`M -\MacScale\fontcharht\font`c\relax
+ \scratchdepth \MacRule\exheight
+ \kern\scratchwidth
+ \vrule
+ width \scratchdistance
+ height \dimexpr \scratchoffset- \scratchdepth-\MacDistance\exheight\relax
+ depth \dimexpr-\scratchoffset+2\scratchdepth+\MacDistance\exheight\relax
+ \relax
+ \kern-\dimexpr\scratchwidth+\scratchdistance\relax
+ M%
+ \glyphscale\numexpr\numericscale\MacScale*\glyphyscale/\plusthousand\relax
+ \glyph
+ yoffset \scratchoffset `c
+ \kern\MacKern\emwidth
+ \endgroup}
+
+\continueifinputfile{m-gimmicks.mkxl}
+
+% Question on mailing list:
+
+\chardef\MacAnulty = \getprivateglyphslot{MacAnulty}
+
+\startsetups [box:demo:\number\MacAnulty]
+ \Mac Anulty
+\stopsetups
+
+\registerboxglyph category {demo} unicode \MacAnulty \relax
+
+\startluacode
+ fonts.handlers.otf.addfeature {
+ name = "mcanulty",
+ 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", },
+ }
+ }
+\stopluacode
+
+\definefontfeature[whatever][default][box=demo,mcanulty=yes]
+
+\startTEXpage [offset=10dk]
+% \def\Test#1{%
+% \begingroup
+% #1%
+% \dostepwiserecurse{5}{8}{1}{
+% \def\MacScale{.##1}%
+% \Mac Anulty
+% \par
+% }
+% \endgroup
+% }
+% \Test\tf
+% \Test\bf
+% \Test\it
+% \Test\sl
+% \Test\bfb
+% \def\MacScale{.6}
+% \def\MacKern {-.1}
+% \Mac Anulty
+
+\definedfont[Serif*whatever] McAnulty\quad \MacAnulty\par
+\definedfont[SerifBold*whatever] McAnulty\quad \MacAnulty\par
+
+\stopTEXpage
diff --git a/tex/context/modules/mkxl/m-oldmath.mkxl b/tex/context/modules/mkxl/m-oldmath.mkxl
index 248ff66bd..3594385ff 100644
--- a/tex/context/modules/mkxl/m-oldmath.mkxl
+++ b/tex/context/modules/mkxl/m-oldmath.mkxl
@@ -135,7 +135,8 @@
\permanent\protected\def\pmatrix#1%
{\left(\matrix{#1}\right)}
-
+\permanent\protected\def\root#1\of% #2%
+ {\rootradical{#1}} % {#2}
\protect
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 05086a7f8..45f32e90b 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-05 17:16
+-- merge date : 2022-08-25 17:38
do -- begin closure to overcome local limits and interference
@@ -13702,8 +13702,13 @@ local result={}
local justpass=false
local seacs={}
local procidx=nil
- local function showstate(where)
- report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ local function showstate(where,i,n)
+ if i then
+ local j=i+n-1
+ report("%w%-10s : [%s] step",depth*2+2,where,concat(stack," ",i,j<=top and j or top))
+ else
+ report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
+ end
end
local function showvalue(where,value,showstack)
if showstack then
@@ -13819,9 +13824,9 @@ local result={}
ymin=y
end
end
- local function xycurveto(x1,y1,x2,y2,x3,y3)
+ local function xycurveto(x1,y1,x2,y2,x3,y3,i,n)
if trace_charstrings then
- showstate("curveto")
+ showstate("curveto",i,n)
end
if keepcurve then
r=r+1
@@ -13958,6 +13963,15 @@ local result={}
if trace_charstrings then
showstate("rrcurveto")
end
+if top==6 then
+ local ax=x+stack[1]
+ local ay=y+stack[2]
+ local bx=ax+stack[3]
+ local by=ay+stack[4]
+ x=bx+stack[5]
+ y=by+stack[6]
+ xycurveto(ax,ay,bx,by,x,y,1,6)
+else
for i=1,top,6 do
local ax=x+stack[i]
local ay=y+stack[i+1]
@@ -13965,8 +13979,9 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
+end
top=0
end
local function hhcurveto()
@@ -13978,6 +13993,15 @@ local result={}
y=y+stack[1]
s=2
end
+if top==4 then
+ local ax=x+stack[1]
+ local ay=y
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx+stack[4]
+ y=by
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=s,top,4 do
local ax=x+stack[i]
local ay=y
@@ -13985,8 +14009,9 @@ local result={}
local by=ay+stack[i+2]
x=bx+stack[i+3]
y=by
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function vvcurveto()
@@ -13999,6 +14024,16 @@ local result={}
d=stack[1]
s=2
end
+if top==4 then
+ local ax=x+d
+ local ay=y+stack[1]
+ local bx=ax+stack[2]
+ local by=ay+stack[3]
+ x=bx
+ y=by+stack[4]
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+ d=0
+else
for i=s,top,4 do
local ax=x+d
local ay=y+stack[i]
@@ -14006,9 +14041,10 @@ local result={}
local by=ay+stack[i+2]
x=bx
y=by+stack[i+3]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
d=0
end
+end
top=0
end
local function xxcurveto(swap)
@@ -14016,6 +14052,33 @@ local result={}
if last then
top=top-1
end
+if top==4 then
+ local ax,ay,bx,by
+ if swap then
+ ax=x+stack[1]
+ ay=y
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ y=by+stack[4]
+ if last then
+ x=bx+last
+ else
+ x=bx
+ end
+ else
+ ax=x
+ ay=y+stack[1]
+ bx=ax+stack[2]
+ by=ay+stack[3]
+ x=bx+stack[4]
+ if last then
+ y=by+last
+ else
+ y=by
+ end
+ end
+ xycurveto(ax,ay,bx,by,x,y,1,4)
+else
for i=1,top,4 do
local ax,ay,bx,by
if swap then
@@ -14043,8 +14106,9 @@ local result={}
end
swap=true
end
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,4)
end
+end
top=0
end
local function hvcurveto()
@@ -14070,7 +14134,7 @@ local result={}
local by=ay+stack[i+3]
x=bx+stack[i+4]
y=by+stack[i+5]
- xycurveto(ax,ay,bx,by,x,y)
+ xycurveto(ax,ay,bx,by,x,y,i,6)
end
x=x+stack[top-1]
y=y+stack[top]
@@ -15214,26 +15278,35 @@ local function readfdselect(f,fontdata,data,glyphs,doshapes,version,streams)
end
end
else
+ report("unsupported fd index format %i",format)
end
if maxindex>=0 then
local cidarray=cid.fdarray
if cidarray then
setposition(f,header.offset+cidarray)
local dictionaries=readlengths(f,version=="cff2")
- for i=1,#dictionaries do
- dictionaries[i]=readstring(f,dictionaries[i])
- end
- parsedictionaries(data,dictionaries)
- cid.dictionaries=dictionaries
- readcidprivates(f,data)
- for i=1,#dictionaries do
- readlocals(f,data,dictionaries[i],version)
- end
- startparsing(fontdata,data,streams)
- for i=1,#charstrings do
- parsecharstring(fontdata,data,dictionaries[fdindex[i]+1],charstrings[i],glyphs,i,doshapes,version,streams)
+ if #dictionaries>0 then
+ for i=1,#dictionaries do
+ dictionaries[i]=readstring(f,dictionaries[i])
+ end
+ parsedictionaries(data,dictionaries)
+ cid.dictionaries=dictionaries
+ readcidprivates(f,data)
+ for i=1,#dictionaries do
+ readlocals(f,data,dictionaries[i],version)
+ end
+ startparsing(fontdata,data,streams)
+ for i=1,#charstrings do
+ local dictionary=dictionaries[fdindex[i]+1]
+ if dictionary then
+ parsecharstring(fontdata,data,dictionary,charstrings[i],glyphs,i,doshapes,version,streams)
+ else
+ end
+ end
+ stopparsing(fontdata,data)
+ else
+ report("no cid dictionaries")
end
- stopparsing(fontdata,data)
else
report("no cid array")
end
diff --git a/tex/generic/context/luatex/luatex-pdf.tex b/tex/generic/context/luatex/luatex-pdf.tex
index 569f8664f..6e12575e9 100644
--- a/tex/generic/context/luatex/luatex-pdf.tex
+++ b/tex/generic/context/luatex/luatex-pdf.tex
@@ -137,6 +137,7 @@
\xdef\pdfgentounicode {\pdfvariable gentounicode}
\xdef\pdfomitcidset {\pdfvariable omitcidset}
\xdef\pdfomitcharset {\pdfvariable omitcharset}
+ \xdef\pdfomitinfodict {\pdfvariable omitinfodict}
\xdef\pdfpagebox {\pdfvariable pagebox}
\xdef\pdfmajorversion {\pdfvariable majorversion}
\xdef\pdfminorversion {\pdfvariable minorversion}
@@ -182,6 +183,7 @@
\global\pdfgentounicode 0
% \global\pdfomitcidset 0
% \global\pdfomitcharset 0
+ % \global\pdfomitinfodict 0
\global\pdfpagebox 0
% \global\pdfmajorversion 1
\global\pdfminorversion 4