summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-03-20 01:27:42 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-03-20 01:27:42 +0100
commit9fed721832d90d94caa292b8e6b7f22c88d03c3b (patch)
tree77d97c74222b17a4b80ebcdf007ad9acbc8948bf
parent94a53123a12ab97fcf453b5893941128e8ed4d44 (diff)
downloadcontext-9fed721832d90d94caa292b8e6b7f22c88d03c3b.tar.gz
2021-03-20 01:06:00
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua2
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-metafun.lua2
-rw-r--r--context/data/scite/context/scite-context-data-context.properties10
-rw-r--r--context/data/scite/context/scite-context-data-metafun.properties106
-rw-r--r--context/data/textadept/context/data/scite-context-data-context.lua2
-rw-r--r--context/data/textadept/context/data/scite-context-data-metafun.lua2
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json2
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json2
-rw-r--r--doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua102
-rw-r--r--metapost/context/base/mpiv/mp-mlib.mpiv8
-rw-r--r--metapost/context/base/mpxl/mp-mlib.mpxl107
-rw-r--r--metapost/context/base/mpxl/mp-tool.mpxl8
-rw-r--r--scripts/context/lua/mtxrun.lua6
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua6
-rw-r--r--scripts/context/stubs/unix/mtxrun6
-rw-r--r--scripts/context/stubs/win64/mtxrun.lua6
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/l-url.lua100
-rw-r--r--tex/context/base/mkiv/mult-fun.lua2
-rw-r--r--tex/context/base/mkiv/mult-low.lua3
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin25400 -> 25366 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin257322 -> 256896 bytes
-rw-r--r--tex/context/base/mkiv/strc-mat.mkiv12
-rw-r--r--tex/context/base/mkiv/task-ini.lua3
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl4
-rw-r--r--tex/context/base/mkxl/font-otj.lmt2
-rw-r--r--tex/context/base/mkxl/lang-hup.lmt249
-rw-r--r--tex/context/base/mkxl/lang-hup.mkxl34
-rw-r--r--tex/context/base/mkxl/math-ali.mkxl160
-rw-r--r--tex/context/base/mkxl/math-frc.mkxl4
-rw-r--r--tex/context/base/mkxl/meta-tex.mkxl122
-rw-r--r--tex/context/base/mkxl/mlib-lmt.lmt16
-rw-r--r--tex/context/base/mkxl/mlib-pps.lmt15
-rw-r--r--tex/context/base/mkxl/mlib-svg.lmt401
-rw-r--r--tex/context/base/mkxl/node-aux.lmt4
-rw-r--r--tex/context/base/mkxl/node-met.lmt146
-rw-r--r--tex/context/base/mkxl/node-nut.lmt2
-rw-r--r--tex/context/base/mkxl/spac-hor.mkxl1
-rw-r--r--tex/context/base/mkxl/strc-lst.mklx69
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl59
-rw-r--r--tex/context/base/mkxl/typo-hid.lmt4
-rw-r--r--tex/context/base/mkxl/typo-hid.mkxl2
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
47 files changed, 1219 insertions, 584 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 2f8a6a5b1..fe8928341 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", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "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", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenhyphenationcode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "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", "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", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "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", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "forcecheckhyphenationmodecode", "lazyligatureshyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
+ ["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", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "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", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenhyphenationcode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "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", "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", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "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", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "forcecheckhyphenationmodecode", "lazyligatureshyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "flattendiscretionariescode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
["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", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "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", "pickupgroupedcommand", "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", "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", "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", "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", "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", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "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", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "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", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox" },
} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-metafun.lua b/context/data/scite/context/lexers/data/scite-context-data-metafun.lua
index 7b54ad10a..e26349697 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-metafun.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-metafun.lua
@@ -1,4 +1,4 @@
return {
- ["commands"]={ "loadfile", "loadimage", "loadmodule", "dispose", "nothing", "transparency", "tolist", "topath", "tocycle", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "tanh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "unittriangle", "fulltriangle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "randomizedcontrols", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "perpendicular", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "drawdoublearrows", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "boundingradius", "boundingcircle", "boundingpoint", "crossingunder", "insideof", "outsideof", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", "sized", "xyscaled", "intersection_point", "intersection_found", "penpoint", "bbwidth", "bbheight", "withshade", "withcircularshade", "withlinearshade", "defineshade", "shaded", "shadedinto", "withshadecolors", "withshadedomain", "withshademethod", "withshadefactor", "withshadevector", "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin", "shownshadedirection", "shownshadecenter", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "outlinetext", "filloutlinetext", "drawoutlinetext", "outlinetexttopath", "checkedbounds", "checkbounds", "strut", "rule", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "colordecimalslist", "textext", "thetextext", "rawtextext", "textextoffset", "texbox", "thetexbox", "rawtexbox", "istextext", "rawmadetext", "validtexbox", "onetimetextext", "rawfmttext", "thefmttext", "fmttext", "onetimefmttext", "notcached", "keepcached", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "withopacity", "property", "properties", "withproperties", "asgroup", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "colorlike", "readfile", "clearxy", "unitvector", "center", "epsed", "anchored", "originpath", "infinite", "break", "xstretched", "ystretched", "snapped", "pathconnectors", "function", "constructedfunction", "constructedpath", "constructedpairs", "straightfunction", "straightpath", "straightpairs", "curvedfunction", "curvedpath", "curvedpairs", "evenly", "oddly", "condition", "pushcurrentpicture", "popcurrentpicture", "arrowpath", "resetarrows", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary", "complemented", "resolvedcolor", "normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths", "drawboundary", "drawwholepath", "drawpathonly", "visualizeddraw", "visualizedfill", "detaileddraw", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "pencilled", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "topair", "format", "formatted", "quotation", "quote", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "nofill", "dofill", "fillup", "eofillup", "nodraw", "dodraw", "area", "addbackground", "shadedup", "shadeddown", "shadedleft", "shadedright", "sortlist", "copylist", "shapedlist", "listtocurves", "listtolines", "listsize", "listlast", "uniquelist", "circularpath", "squarepath", "linearpath", "theoffset", "texmode", "systemmode", "texvar", "texstr", "isarray", "prefix", "dimension", "getmacro", "getdimen", "getcount", "gettoks", "setmacro", "setdimen", "setcount", "settoks", "setglobalmacro", "setglobaldimen", "setglobalcount", "setglobaltoks", "positionpath", "positioncurve", "positionxy", "positionpxy", "positionwhd", "positionpage", "positionregion", "positionbox", "positionanchor", "positioninregion", "positionatanchor", "wdpart", "htpart", "dppart", "texvar", "texstr", "inpath", "pointof", "leftof", "rightof", "utfnum", "utflen", "utfsub", "newhash", "disposehash", "inhash", "tohash", "isarray", "prefix", "isobject", "comment", "report", "lua", "lualist", "mp", "MP", "luacall", "mirrored", "mirroredabout", "scriptindex", "newscriptindex", "newcolor", "newrgbcolor", "newcmykcolor", "newnumeric", "newboolean", "newtransform", "newpath", "newpicture", "newstring", "newpair", "mpvar", "withtolerance" },
+ ["commands"]={ "loadfile", "loadimage", "loadmodule", "dispose", "nothing", "transparency", "tolist", "topath", "tocycle", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "tanh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "unittriangle", "fulltriangle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "randomizedcontrols", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "perpendicular", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "drawdoublearrows", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "boundingradius", "boundingcircle", "boundingpoint", "crossingunder", "insideof", "outsideof", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", "sized", "xyscaled", "intersection_point", "intersection_found", "penpoint", "bbwidth", "bbheight", "withshade", "withcircularshade", "withlinearshade", "defineshade", "shaded", "shadedinto", "withshadecolors", "withshadedomain", "withshademethod", "withshadefactor", "withshadevector", "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadecenterone", "withshadecentertwo", "withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin", "shownshadedirection", "shownshadecenter", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "outlinetext", "filloutlinetext", "drawoutlinetext", "outlinetexttopath", "checkedbounds", "checkbounds", "strut", "rule", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "colordecimalslist", "textext", "thetextext", "rawtextext", "textextoffset", "texbox", "thetexbox", "rawtexbox", "istextext", "rawmadetext", "validtexbox", "onetimetextext", "rawfmttext", "thefmttext", "fmttext", "onetimefmttext", "notcached", "keepcached", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "withopacity", "property", "properties", "withproperties", "asgroup", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "colorlike", "readfile", "clearxy", "unitvector", "center", "epsed", "anchored", "originpath", "infinite", "break", "xstretched", "ystretched", "snapped", "pathconnectors", "function", "constructedfunction", "constructedpath", "constructedpairs", "straightfunction", "straightpath", "straightpairs", "curvedfunction", "curvedpath", "curvedpairs", "evenly", "oddly", "condition", "pushcurrentpicture", "popcurrentpicture", "arrowpath", "resetarrows", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary", "complemented", "resolvedcolor", "normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths", "drawboundary", "drawwholepath", "drawpathonly", "visualizeddraw", "visualizedfill", "detaileddraw", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "pencilled", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "topair", "format", "formatted", "quotation", "quote", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "nofill", "dofill", "fillup", "eofillup", "nodraw", "dodraw", "area", "addbackground", "shadedup", "shadeddown", "shadedleft", "shadedright", "sortlist", "copylist", "shapedlist", "listtocurves", "listtolines", "listsize", "listlast", "uniquelist", "circularpath", "squarepath", "linearpath", "theoffset", "texmode", "systemmode", "texvar", "texstr", "isarray", "prefix", "dimension", "getmacro", "getdimen", "getcount", "gettoks", "setmacro", "setdimen", "setcount", "settoks", "setglobalmacro", "setglobaldimen", "setglobalcount", "setglobaltoks", "positionpath", "positioncurve", "positionxy", "positionpxy", "positionwhd", "positionpage", "positionregion", "positionbox", "positionanchor", "positioninregion", "positionatanchor", "wdpart", "htpart", "dppart", "texvar", "texstr", "inpath", "pointof", "leftof", "rightof", "utfnum", "utflen", "utfsub", "newhash", "disposehash", "inhash", "tohash", "isarray", "prefix", "isobject", "comment", "report", "lua", "lualist", "mp", "MP", "luacall", "mirrored", "mirroredabout", "scriptindex", "newscriptindex", "newcolor", "newrgbcolor", "newcmykcolor", "newnumeric", "newboolean", "newtransform", "newpath", "newpicture", "newstring", "newpair", "mpvar", "withtolerance" },
["internals"]={ "nocolormodel", "greycolormodel", "graycolormodel", "rgbcolormodel", "cmykcolormodel", "shadefactor", "shadeoffset", "textextoffset", "textextanchor", "normaltransparent", "multiplytransparent", "screentransparent", "overlaytransparent", "softlighttransparent", "hardlighttransparent", "colordodgetransparent", "colorburntransparent", "darkentransparent", "lightentransparent", "differencetransparent", "exclusiontransparent", "huetransparent", "saturationtransparent", "colortransparent", "luminositytransparent", "ahvariant", "ahdimple", "ahfactor", "ahscale", "metapostversion", "maxdimensions", "drawoptionsfactor", "dq", "sq", "crossingscale", "crossingoption", "contextlmtxmode", "metafunversion", "minifunversion", "getparameters", "presetparameters", "hasparameter", "hasoption", "getparameter", "getparameterdefault", "getparametercount", "getmaxparametercount", "getparameterpath", "getparameterpen", "getparametertext", "applyparameters", "pushparameters", "popparameters", "definecolor" },
} \ 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 672d045b1..f75918e40 100644
--- a/context/data/scite/context/scite-context-data-context.properties
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -84,11 +84,11 @@ explicithyphenationmodecode syllablehyphenationmodecode uppercasehyphenationmode
strictstarthyphenationmodecode strictendhyphenationmodecode automaticpenaltyhyphenationmodecode explicitpenaltyhyphenationmodecode permitgluehyphenationmodecode \
permitallhyphenationmodecode permitmathreplacehyphenationmodecode forcecheckhyphenationmodecode lazyligatureshyphenationmodecode normalizelinecode \
parindentskipcode swaphangindentcode swapparsshapecode breakafterdircode removemarginkernscode \
-clipwidthcode noligaturingcode nokerningcode noleftligaturecode noleftkerncode \
-norightligaturecode norightkerncode noexpansioncode noprotrusioncode frozenflagcode \
-tolerantflagcode protectedflagcode primitiveflagcode permanentflagcode noalignedflagcode \
-immutableflagcode mutableflagcode globalflagcode overloadedflagcode immediateflagcode \
-conditionalflagcode valueflagcode instanceflagcode continuewhenlmtxmode
+clipwidthcode flattendiscretionariescode noligaturingcode nokerningcode noleftligaturecode \
+noleftkerncode norightligaturecode norightkerncode noexpansioncode noprotrusioncode \
+frozenflagcode tolerantflagcode protectedflagcode primitiveflagcode permanentflagcode \
+noalignedflagcode immutableflagcode mutableflagcode globalflagcode overloadedflagcode \
+immediateflagcode conditionalflagcode valueflagcode instanceflagcode continuewhenlmtxmode
keywordclass.context.helpers=\
startsetups stopsetups startxmlsetups stopxmlsetups \
diff --git a/context/data/scite/context/scite-context-data-metafun.properties b/context/data/scite/context/scite-context-data-metafun.properties
index e547c04aa..8a645785a 100644
--- a/context/data/scite/context/scite-context-data-metafun.properties
+++ b/context/data/scite/context/scite-context-data-metafun.properties
@@ -27,59 +27,59 @@ intersection_point intersection_found penpoint bbwidth bbheight \
withshade withcircularshade withlinearshade defineshade shaded \
shadedinto withshadecolors withshadedomain withshademethod withshadefactor \
withshadevector withshadecenter withshadedirection withshaderadius withshadetransform \
-withshadestep withshadefraction withshadeorigin shownshadevector shownshadeorigin \
-shownshadedirection shownshadecenter cmyk spotcolor multitonecolor \
-namedcolor drawfill undrawfill inverted uncolored \
-softened grayed greyed onlayer along \
-graphictext loadfigure externalfigure figure register \
-outlinetext filloutlinetext drawoutlinetext outlinetexttopath checkedbounds \
-checkbounds strut rule withmask bitmapimage \
-colordecimals ddecimal dddecimal ddddecimal colordecimalslist \
-textext thetextext rawtextext textextoffset texbox \
-thetexbox rawtexbox istextext rawmadetext validtexbox \
-onetimetextext rawfmttext thefmttext fmttext onetimefmttext \
-notcached keepcached verbatim thelabel label \
-autoalign transparent withtransparency withopacity property \
-properties withproperties asgroup infont space \
-crlf dquote percent SPACE CRLF \
-DQUOTE PERCENT grayscale greyscale withgray \
-withgrey colorpart colorlike readfile clearxy \
-unitvector center epsed anchored originpath \
-infinite break xstretched ystretched snapped \
-pathconnectors function constructedfunction constructedpath constructedpairs \
-straightfunction straightpath straightpairs curvedfunction curvedpath \
-curvedpairs evenly oddly condition pushcurrentpicture \
-popcurrentpicture arrowpath resetarrows tensecircle roundedsquare \
-colortype whitecolor blackcolor basiccolors complementary \
-complemented resolvedcolor normalfill normaldraw visualizepaths \
-detailpaths naturalizepaths drawboundary drawwholepath drawpathonly \
-visualizeddraw visualizedfill detaileddraw draworigin drawboundingbox \
-drawpath drawpoint drawpoints drawcontrolpoints drawcontrollines \
-drawpointlabels drawlineoptions drawpointoptions drawcontroloptions drawlabeloptions \
-draworiginoptions drawboundoptions drawpathoptions resetdrawoptions undashed \
-pencilled decorated redecorated undecorated passvariable \
-passarrayvariable tostring topair format formatted \
-quotation quote startpassingvariable stoppassingvariable eofill \
-eoclip nofill dofill fillup eofillup \
-nodraw dodraw area addbackground shadedup \
-shadeddown shadedleft shadedright sortlist copylist \
-shapedlist listtocurves listtolines listsize listlast \
-uniquelist circularpath squarepath linearpath theoffset \
-texmode systemmode texvar texstr isarray \
-prefix dimension getmacro getdimen getcount \
-gettoks setmacro setdimen setcount settoks \
-setglobalmacro setglobaldimen setglobalcount setglobaltoks positionpath \
-positioncurve positionxy positionpxy positionwhd positionpage \
-positionregion positionbox positionanchor positioninregion positionatanchor \
-wdpart htpart dppart texvar texstr \
-inpath pointof leftof rightof utfnum \
-utflen utfsub newhash disposehash inhash \
-tohash isarray prefix isobject comment \
-report lua lualist mp MP \
-luacall mirrored mirroredabout scriptindex newscriptindex \
-newcolor newrgbcolor newcmykcolor newnumeric newboolean \
-newtransform newpath newpicture newstring newpair \
-mpvar withtolerance
+withshadecenterone withshadecentertwo withshadestep withshadefraction withshadeorigin \
+shownshadevector shownshadeorigin shownshadedirection shownshadecenter cmyk \
+spotcolor multitonecolor namedcolor drawfill undrawfill \
+inverted uncolored softened grayed greyed \
+onlayer along graphictext loadfigure externalfigure \
+figure register outlinetext filloutlinetext drawoutlinetext \
+outlinetexttopath checkedbounds checkbounds strut rule \
+withmask bitmapimage colordecimals ddecimal dddecimal \
+ddddecimal colordecimalslist textext thetextext rawtextext \
+textextoffset texbox thetexbox rawtexbox istextext \
+rawmadetext validtexbox onetimetextext rawfmttext thefmttext \
+fmttext onetimefmttext notcached keepcached verbatim \
+thelabel label autoalign transparent withtransparency \
+withopacity property properties withproperties asgroup \
+infont space crlf dquote percent \
+SPACE CRLF DQUOTE PERCENT grayscale \
+greyscale withgray withgrey colorpart colorlike \
+readfile clearxy unitvector center epsed \
+anchored originpath infinite break xstretched \
+ystretched snapped pathconnectors function constructedfunction \
+constructedpath constructedpairs straightfunction straightpath straightpairs \
+curvedfunction curvedpath curvedpairs evenly oddly \
+condition pushcurrentpicture popcurrentpicture arrowpath resetarrows \
+tensecircle roundedsquare colortype whitecolor blackcolor \
+basiccolors complementary complemented resolvedcolor normalfill \
+normaldraw visualizepaths detailpaths naturalizepaths drawboundary \
+drawwholepath drawpathonly visualizeddraw visualizedfill detaileddraw \
+draworigin drawboundingbox drawpath drawpoint drawpoints \
+drawcontrolpoints drawcontrollines drawpointlabels drawlineoptions drawpointoptions \
+drawcontroloptions drawlabeloptions draworiginoptions drawboundoptions drawpathoptions \
+resetdrawoptions undashed pencilled decorated redecorated \
+undecorated passvariable passarrayvariable tostring topair \
+format formatted quotation quote startpassingvariable \
+stoppassingvariable eofill eoclip nofill dofill \
+fillup eofillup nodraw dodraw area \
+addbackground shadedup shadeddown shadedleft shadedright \
+sortlist copylist shapedlist listtocurves listtolines \
+listsize listlast uniquelist circularpath squarepath \
+linearpath theoffset texmode systemmode texvar \
+texstr isarray prefix dimension getmacro \
+getdimen getcount gettoks setmacro setdimen \
+setcount settoks setglobalmacro setglobaldimen setglobalcount \
+setglobaltoks positionpath positioncurve positionxy positionpxy \
+positionwhd positionpage positionregion positionbox positionanchor \
+positioninregion positionatanchor wdpart htpart dppart \
+texvar texstr inpath pointof leftof \
+rightof utfnum utflen utfsub newhash \
+disposehash inhash tohash isarray prefix \
+isobject comment report lua lualist \
+mp MP luacall mirrored mirroredabout \
+scriptindex newscriptindex newcolor newrgbcolor newcmykcolor \
+newnumeric newboolean newtransform newpath newpicture \
+newstring newpair mpvar withtolerance
keywordclass.metafun.internals=\
nocolormodel greycolormodel graycolormodel rgbcolormodel \
diff --git a/context/data/textadept/context/data/scite-context-data-context.lua b/context/data/textadept/context/data/scite-context-data-context.lua
index 2f8a6a5b1..fe8928341 100644
--- a/context/data/textadept/context/data/scite-context-data-context.lua
+++ b/context/data/textadept/context/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", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "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", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenhyphenationcode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "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", "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", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "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", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "forcecheckhyphenationmodecode", "lazyligatureshyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
+ ["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", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "directionlefttoright", "directionrighttoleft", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "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", "frozenhsizecode", "frozenskipcode", "frozenhangcode", "frozenindentcode", "frozenparfillcode", "frozenadjustcode", "frozenprotrudecode", "frozentolerancecode", "frozenstretchcode", "frozenloosenesscode", "frozenlastlinecode", "frozenlinepenaltycode", "frozenclubpenaltycode", "frozenwidowpenaltycode", "frozendisplaypenaltycode", "frozenbrokenpenaltycode", "frozendemeritscode", "frozenshapecode", "frozenlinecode", "frozenhyphenationcode", "frozenallcode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vadjustgroupcode", "vcentergroupcode", "mathabovegroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "localboxgroupcode", "splitoffgroupcode", "splitkeepgroupcode", "preamblegroupcode", "alignsetgroupcode", "finrowgroupcode", "discretionarygroupcode", "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", "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", "mathordcode", "mathopcode", "mathbincode", "mathrelcode", "mathopencode", "mathclosecode", "mathpunctcode", "mathalphacode", "mathinnercode", "mathnothingcode", "mathlimopcode", "mathnolopcode", "mathboxcode", "mathchoicecode", "mathaccentcode", "mathradicalcode", "constantnumber", "constantnumberargument", "constantdimen", "constantdimenargument", "constantemptyargument", "continueifinputfile", "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", "normalhyphenationmodecode", "automatichyphenationmodecode", "explicithyphenationmodecode", "syllablehyphenationmodecode", "uppercasehyphenationmodecode", "completehyphenationmodecode", "compoundhyphenationmodecode", "strictstarthyphenationmodecode", "strictendhyphenationmodecode", "automaticpenaltyhyphenationmodecode", "explicitpenaltyhyphenationmodecode", "permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode", "forcecheckhyphenationmodecode", "lazyligatureshyphenationmodecode", "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode", "flattendiscretionariescode", "noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode", "noexpansioncode", "noprotrusioncode", "frozenflagcode", "tolerantflagcode", "protectedflagcode", "primitiveflagcode", "permanentflagcode", "noalignedflagcode", "immutableflagcode", "mutableflagcode", "globalflagcode", "overloadedflagcode", "immediateflagcode", "conditionalflagcode", "valueflagcode", "instanceflagcode", "continuewhenlmtxmode" },
["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", "dontcomplain", "forgetall", "donetrue", "donefalse", "foundtrue", "foundfalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "startpickupmath", "stoppickupmath", "reqno", "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", "pickupgroupedcommand", "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", "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", "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", "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", "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", "shiftbox", "vpackbox", "hpackbox", "vpackedbox", "hpackedbox", "ordordspacing", "ordopspacing", "ordbinspacing", "ordrelspacing", "ordopenspacing", "ordclosespacing", "ordpunctspacing", "ordinnerspacing", "opordspacing", "opopspacing", "opbinspacing", "oprelspacing", "opopenspacing", "opclosespacing", "oppunctspacing", "opinnerspacing", "binordspacing", "binopspacing", "binbinspacing", "binrelspacing", "binopenspacing", "binclosespacing", "binpunctspacing", "bininnerspacing", "relordspacing", "relopspacing", "relbinspacing", "relrelspacing", "relopenspacing", "relclosespacing", "relpunctspacing", "relinnerspacing", "openordspacing", "openopspacing", "openbinspacing", "openrelspacing", "openopenspacing", "openclosespacing", "openpunctspacing", "openinnerspacing", "closeordspacing", "closeopspacing", "closebinspacing", "closerelspacing", "closeopenspacing", "closeclosespacing", "closepunctspacing", "closeinnerspacing", "punctordspacing", "punctopspacing", "punctbinspacing", "punctrelspacing", "punctopenspacing", "punctclosespacing", "punctpunctspacing", "punctinnerspacing", "innerordspacing", "inneropspacing", "innerbinspacing", "innerrelspacing", "inneropenspacing", "innerclosespacing", "innerpunctspacing", "innerinnerspacing", "normalreqno", "startimath", "stopimath", "normalstartimath", "normalstopimath", "startdmath", "stopdmath", "normalstartdmath", "normalstopdmath", "normalsuperscript", "normalsubscript", "normalnosuperscript", "normalnosubscript", "superscript", "subscript", "nosuperscript", "nosubscript", "superprescript", "subprescript", "nosuperprescript", "nosubsprecript", "uncramped", "cramped", "mathstyletrigger", "triggermathstyle", "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", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "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", "futureletnexttoken", "defbackslashbreak", "letbackslashbreak", "pushoverloadmode", "popoverloadmode", "pushrunstate", "poprunstate", "suggestedalias", "newlocalcount", "newlocaldimen", "newlocalskip", "newlocalmuskip", "newlocaltoks", "newlocalbox", "newlocalwrite", "newlocalread", "setnewlocalcount", "setnewlocaldimen", "setnewlocalskip", "setnewlocalmuskip", "setnewlocaltoks", "setnewlocalbox" },
} \ No newline at end of file
diff --git a/context/data/textadept/context/data/scite-context-data-metafun.lua b/context/data/textadept/context/data/scite-context-data-metafun.lua
index 7b54ad10a..e26349697 100644
--- a/context/data/textadept/context/data/scite-context-data-metafun.lua
+++ b/context/data/textadept/context/data/scite-context-data-metafun.lua
@@ -1,4 +1,4 @@
return {
- ["commands"]={ "loadfile", "loadimage", "loadmodule", "dispose", "nothing", "transparency", "tolist", "topath", "tocycle", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "tanh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "unittriangle", "fulltriangle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "randomizedcontrols", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "perpendicular", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "drawdoublearrows", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "boundingradius", "boundingcircle", "boundingpoint", "crossingunder", "insideof", "outsideof", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", "sized", "xyscaled", "intersection_point", "intersection_found", "penpoint", "bbwidth", "bbheight", "withshade", "withcircularshade", "withlinearshade", "defineshade", "shaded", "shadedinto", "withshadecolors", "withshadedomain", "withshademethod", "withshadefactor", "withshadevector", "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin", "shownshadedirection", "shownshadecenter", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "outlinetext", "filloutlinetext", "drawoutlinetext", "outlinetexttopath", "checkedbounds", "checkbounds", "strut", "rule", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "colordecimalslist", "textext", "thetextext", "rawtextext", "textextoffset", "texbox", "thetexbox", "rawtexbox", "istextext", "rawmadetext", "validtexbox", "onetimetextext", "rawfmttext", "thefmttext", "fmttext", "onetimefmttext", "notcached", "keepcached", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "withopacity", "property", "properties", "withproperties", "asgroup", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "colorlike", "readfile", "clearxy", "unitvector", "center", "epsed", "anchored", "originpath", "infinite", "break", "xstretched", "ystretched", "snapped", "pathconnectors", "function", "constructedfunction", "constructedpath", "constructedpairs", "straightfunction", "straightpath", "straightpairs", "curvedfunction", "curvedpath", "curvedpairs", "evenly", "oddly", "condition", "pushcurrentpicture", "popcurrentpicture", "arrowpath", "resetarrows", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary", "complemented", "resolvedcolor", "normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths", "drawboundary", "drawwholepath", "drawpathonly", "visualizeddraw", "visualizedfill", "detaileddraw", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "pencilled", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "topair", "format", "formatted", "quotation", "quote", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "nofill", "dofill", "fillup", "eofillup", "nodraw", "dodraw", "area", "addbackground", "shadedup", "shadeddown", "shadedleft", "shadedright", "sortlist", "copylist", "shapedlist", "listtocurves", "listtolines", "listsize", "listlast", "uniquelist", "circularpath", "squarepath", "linearpath", "theoffset", "texmode", "systemmode", "texvar", "texstr", "isarray", "prefix", "dimension", "getmacro", "getdimen", "getcount", "gettoks", "setmacro", "setdimen", "setcount", "settoks", "setglobalmacro", "setglobaldimen", "setglobalcount", "setglobaltoks", "positionpath", "positioncurve", "positionxy", "positionpxy", "positionwhd", "positionpage", "positionregion", "positionbox", "positionanchor", "positioninregion", "positionatanchor", "wdpart", "htpart", "dppart", "texvar", "texstr", "inpath", "pointof", "leftof", "rightof", "utfnum", "utflen", "utfsub", "newhash", "disposehash", "inhash", "tohash", "isarray", "prefix", "isobject", "comment", "report", "lua", "lualist", "mp", "MP", "luacall", "mirrored", "mirroredabout", "scriptindex", "newscriptindex", "newcolor", "newrgbcolor", "newcmykcolor", "newnumeric", "newboolean", "newtransform", "newpath", "newpicture", "newstring", "newpair", "mpvar", "withtolerance" },
+ ["commands"]={ "loadfile", "loadimage", "loadmodule", "dispose", "nothing", "transparency", "tolist", "topath", "tocycle", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "tanh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "unittriangle", "fulltriangle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "randomizedcontrols", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "perpendicular", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "drawdoublearrows", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "boundingradius", "boundingcircle", "boundingpoint", "crossingunder", "insideof", "outsideof", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", "sized", "xyscaled", "intersection_point", "intersection_found", "penpoint", "bbwidth", "bbheight", "withshade", "withcircularshade", "withlinearshade", "defineshade", "shaded", "shadedinto", "withshadecolors", "withshadedomain", "withshademethod", "withshadefactor", "withshadevector", "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadecenterone", "withshadecentertwo", "withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin", "shownshadedirection", "shownshadecenter", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "outlinetext", "filloutlinetext", "drawoutlinetext", "outlinetexttopath", "checkedbounds", "checkbounds", "strut", "rule", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "colordecimalslist", "textext", "thetextext", "rawtextext", "textextoffset", "texbox", "thetexbox", "rawtexbox", "istextext", "rawmadetext", "validtexbox", "onetimetextext", "rawfmttext", "thefmttext", "fmttext", "onetimefmttext", "notcached", "keepcached", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "withopacity", "property", "properties", "withproperties", "asgroup", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "colorlike", "readfile", "clearxy", "unitvector", "center", "epsed", "anchored", "originpath", "infinite", "break", "xstretched", "ystretched", "snapped", "pathconnectors", "function", "constructedfunction", "constructedpath", "constructedpairs", "straightfunction", "straightpath", "straightpairs", "curvedfunction", "curvedpath", "curvedpairs", "evenly", "oddly", "condition", "pushcurrentpicture", "popcurrentpicture", "arrowpath", "resetarrows", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "complementary", "complemented", "resolvedcolor", "normalfill", "normaldraw", "visualizepaths", "detailpaths", "naturalizepaths", "drawboundary", "drawwholepath", "drawpathonly", "visualizeddraw", "visualizedfill", "detaileddraw", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "pencilled", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "topair", "format", "formatted", "quotation", "quote", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "nofill", "dofill", "fillup", "eofillup", "nodraw", "dodraw", "area", "addbackground", "shadedup", "shadeddown", "shadedleft", "shadedright", "sortlist", "copylist", "shapedlist", "listtocurves", "listtolines", "listsize", "listlast", "uniquelist", "circularpath", "squarepath", "linearpath", "theoffset", "texmode", "systemmode", "texvar", "texstr", "isarray", "prefix", "dimension", "getmacro", "getdimen", "getcount", "gettoks", "setmacro", "setdimen", "setcount", "settoks", "setglobalmacro", "setglobaldimen", "setglobalcount", "setglobaltoks", "positionpath", "positioncurve", "positionxy", "positionpxy", "positionwhd", "positionpage", "positionregion", "positionbox", "positionanchor", "positioninregion", "positionatanchor", "wdpart", "htpart", "dppart", "texvar", "texstr", "inpath", "pointof", "leftof", "rightof", "utfnum", "utflen", "utfsub", "newhash", "disposehash", "inhash", "tohash", "isarray", "prefix", "isobject", "comment", "report", "lua", "lualist", "mp", "MP", "luacall", "mirrored", "mirroredabout", "scriptindex", "newscriptindex", "newcolor", "newrgbcolor", "newcmykcolor", "newnumeric", "newboolean", "newtransform", "newpath", "newpicture", "newstring", "newpair", "mpvar", "withtolerance" },
["internals"]={ "nocolormodel", "greycolormodel", "graycolormodel", "rgbcolormodel", "cmykcolormodel", "shadefactor", "shadeoffset", "textextoffset", "textextanchor", "normaltransparent", "multiplytransparent", "screentransparent", "overlaytransparent", "softlighttransparent", "hardlighttransparent", "colordodgetransparent", "colorburntransparent", "darkentransparent", "lightentransparent", "differencetransparent", "exclusiontransparent", "huetransparent", "saturationtransparent", "colortransparent", "luminositytransparent", "ahvariant", "ahdimple", "ahfactor", "ahscale", "metapostversion", "maxdimensions", "drawoptionsfactor", "dq", "sq", "crossingscale", "crossingoption", "contextlmtxmode", "metafunversion", "minifunversion", "getparameters", "presetparameters", "hasparameter", "hasoption", "getparameter", "getparameterdefault", "getparametercount", "getmaxparametercount", "getparameterpath", "getparameterpen", "getparametertext", "applyparameters", "pushparameters", "popparameters", "definecolor" },
} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json
index b52c3416a..cc3c8b483 100644
--- a/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-mps.json
@@ -60,7 +60,7 @@
"name" : "context.extra"
},
"helper" : {
- "match" : "(zmod|ystretched|ysized|xysized|xyscaled|xstretched|xsized|withtransparency|withtolerance|withshadevector|withshadetransform|withshadestep|withshaderadius|withshadeorigin|withshademethod|withshadefraction|withshadefactor|withshadedomain|withshadedirection|withshadecolors|withshadecenter|withshade|withproperties|withopacity|withmask|withlinearshade|withgrey|withgray|withcircularshade|whitecolor|wdpart|visualizepaths|visualizedfill|visualizeddraw|verbatim|validtexbox|utfsub|utfnum|utflen|urtriangle|urmoved|urenlarged|urcircle|uptriangle|unspiked|unitvector|unittriangle|unitdiamond|unitcircle|uniquelist|undrawfill|undecorated|undashed|uncolored|ultriangle|ulmoved|ulenlarged|ulcircle|tripled|triangle|transparent|transparency|tostring|topenlarged|topboundary|topath|topair|tolist|tohash|tocycle|thetextext|thetexbox|theoffset|thelabel|thefmttext|texvar|texvar|textextoffset|textext|texstr|texstr|texmode|texbox|tensecircle|tcircle|tanh|tand|tan|systemmode|superellipsed|strut|stretched|straightpath|straightpairs|straightfunction|stoppassingvariable|startpassingvariable|squeezed|squarepath|sqr|spotcolor|space|sortlist|softened|snapped|smoothed|sized|sinh|sin|simplified|shownshadevector|shownshadeorigin|shownshadedirection|shownshadecenter|shortened|shapedlist|shadedup|shadedright|shadedleft|shadedinto|shadeddown|shaded|settoks|setmacro|setglobaltoks|setglobalmacro|setglobaldimen|setglobalcount|setdimen|setcount|scriptindex|rule|roundedsquare|righttriangle|rightof|rightenlarged|rightboundary|rightarrow|resolvedcolor|resetdrawoptions|resetarrows|report|register|redecorated|readfile|rcircle|rawtextext|rawtexbox|rawmadetext|rawfmttext|randomshifted|randomizedcontrols|randomized|radian|quote|quotation|pushcurrentpicture|pushboundingbox|punked|property|properties|prefix|prefix|pow|positionxy|positionwhd|positionregion|positionpxy|positionpath|positionpage|positioninregion|positioncurve|positionbox|positionatanchor|positionanchor|popcurrentpicture|popboundingbox|pointof|pi|perpendicular|percent|penpoint|pencilled|peepholed|pathconnectors|passvariable|passarrayvariable|paralleled|paired|outsideof|outlinetexttopath|outlinetext|outerboundingbox|originpath|onlayer|onetimetextext|onetimefmttext|oddly|nothing|notcached|normalfill|normaldraw|nofill|nodraw|newtransform|newstring|newscriptindex|newrgbcolor|newpicture|newpath|newpair|newnumeric|newhash|newcolor|newcmykcolor|newboolean|naturalizepaths|namedcolor|multitonecolor|mpvar|mp|mirroredabout|mirrored|lualist|luacall|lua|lrtriangle|lrmoved|lrenlarged|lrcircle|log|loadmodule|loadimage|loadfile|loadfigure|ln|lltriangle|llmoved|llenlarged|llcircle|listtolines|listtocurves|listsize|listlast|linearpath|lefttriangle|leftof|leftenlarged|leftboundary|leftarrow|lcircle|laddered|label|keepcached|istextext|isobject|isarray|isarray|invtan|invsin|inverted|invcos|inv|intersection_point|intersection_found|interpolated|insideof|inpath|innerboundingbox|inhash|infont|infinite|htpart|greyscale|greyed|grayscale|grayed|graphictext|gettoks|getmacro|getdimen|getcount|function|fulltriangle|fullsquare|fulldiamond|formatted|format|fmttext|fillup|filloutlinetext|figure|externalfigure|exp|evenly|epsed|eofillup|eofill|eoclip|enlonged|enlarged|drawwholepath|drawpoints|drawpointoptions|drawpointlabels|drawpoint|drawpathoptions|drawpathonly|drawpath|drawoutlinetext|draworiginoptions|draworigin|drawlineoptions|drawlabeloptions|drawfill|drawdoublearrows|drawcontrolpoints|drawcontroloptions|drawcontrollines|drawboundoptions|drawboundingbox|drawboundary|dquote|dppart|downtriangle|dofill|dodraw|disposehash|dispose|dimension|detailpaths|detaileddraw|defineshade|decorated|ddecimal|dddecimal|ddddecimal|cutends|curvedpath|curvedpairs|curvedfunction|curved|crossingunder|crossed|crlf|cotd|cot|cosh|cos|cornered|copylist|constructedpath|constructedpairs|constructedfunction|condition|complemented|complementary|comment|colortype|colorpart|colorlike|colordecimalslist|colordecimals|cmyk|clearxy|circularpath|checkedbounds|checkbounds|centerarrow|center|break|boundingradius|boundingpoint|boundingcircle|boundingbox|bottomenlarged|bottomboundary|blownup|blackcolor|bitmapimage|bcircle|bbwidth|bbheight|basiccolors|autoalign|atan|asinh|asin|asgroup|arrowpath|area|anchored|along|addbackground|acosh|acos|SPACE|PERCENT|MP|DQUOTE|CRLF)(?=[^a-zA-Z\u005C_@!?-ÿ])",
+ "match" : "(zmod|ystretched|ysized|xysized|xyscaled|xstretched|xsized|withtransparency|withtolerance|withshadevector|withshadetransform|withshadestep|withshaderadius|withshadeorigin|withshademethod|withshadefraction|withshadefactor|withshadedomain|withshadedirection|withshadecolors|withshadecentertwo|withshadecenterone|withshadecenter|withshade|withproperties|withopacity|withmask|withlinearshade|withgrey|withgray|withcircularshade|whitecolor|wdpart|visualizepaths|visualizedfill|visualizeddraw|verbatim|validtexbox|utfsub|utfnum|utflen|urtriangle|urmoved|urenlarged|urcircle|uptriangle|unspiked|unitvector|unittriangle|unitdiamond|unitcircle|uniquelist|undrawfill|undecorated|undashed|uncolored|ultriangle|ulmoved|ulenlarged|ulcircle|tripled|triangle|transparent|transparency|tostring|topenlarged|topboundary|topath|topair|tolist|tohash|tocycle|thetextext|thetexbox|theoffset|thelabel|thefmttext|texvar|texvar|textextoffset|textext|texstr|texstr|texmode|texbox|tensecircle|tcircle|tanh|tand|tan|systemmode|superellipsed|strut|stretched|straightpath|straightpairs|straightfunction|stoppassingvariable|startpassingvariable|squeezed|squarepath|sqr|spotcolor|space|sortlist|softened|snapped|smoothed|sized|sinh|sin|simplified|shownshadevector|shownshadeorigin|shownshadedirection|shownshadecenter|shortened|shapedlist|shadedup|shadedright|shadedleft|shadedinto|shadeddown|shaded|settoks|setmacro|setglobaltoks|setglobalmacro|setglobaldimen|setglobalcount|setdimen|setcount|scriptindex|rule|roundedsquare|righttriangle|rightof|rightenlarged|rightboundary|rightarrow|resolvedcolor|resetdrawoptions|resetarrows|report|register|redecorated|readfile|rcircle|rawtextext|rawtexbox|rawmadetext|rawfmttext|randomshifted|randomizedcontrols|randomized|radian|quote|quotation|pushcurrentpicture|pushboundingbox|punked|property|properties|prefix|prefix|pow|positionxy|positionwhd|positionregion|positionpxy|positionpath|positionpage|positioninregion|positioncurve|positionbox|positionatanchor|positionanchor|popcurrentpicture|popboundingbox|pointof|pi|perpendicular|percent|penpoint|pencilled|peepholed|pathconnectors|passvariable|passarrayvariable|paralleled|paired|outsideof|outlinetexttopath|outlinetext|outerboundingbox|originpath|onlayer|onetimetextext|onetimefmttext|oddly|nothing|notcached|normalfill|normaldraw|nofill|nodraw|newtransform|newstring|newscriptindex|newrgbcolor|newpicture|newpath|newpair|newnumeric|newhash|newcolor|newcmykcolor|newboolean|naturalizepaths|namedcolor|multitonecolor|mpvar|mp|mirroredabout|mirrored|lualist|luacall|lua|lrtriangle|lrmoved|lrenlarged|lrcircle|log|loadmodule|loadimage|loadfile|loadfigure|ln|lltriangle|llmoved|llenlarged|llcircle|listtolines|listtocurves|listsize|listlast|linearpath|lefttriangle|leftof|leftenlarged|leftboundary|leftarrow|lcircle|laddered|label|keepcached|istextext|isobject|isarray|isarray|invtan|invsin|inverted|invcos|inv|intersection_point|intersection_found|interpolated|insideof|inpath|innerboundingbox|inhash|infont|infinite|htpart|greyscale|greyed|grayscale|grayed|graphictext|gettoks|getmacro|getdimen|getcount|function|fulltriangle|fullsquare|fulldiamond|formatted|format|fmttext|fillup|filloutlinetext|figure|externalfigure|exp|evenly|epsed|eofillup|eofill|eoclip|enlonged|enlarged|drawwholepath|drawpoints|drawpointoptions|drawpointlabels|drawpoint|drawpathoptions|drawpathonly|drawpath|drawoutlinetext|draworiginoptions|draworigin|drawlineoptions|drawlabeloptions|drawfill|drawdoublearrows|drawcontrolpoints|drawcontroloptions|drawcontrollines|drawboundoptions|drawboundingbox|drawboundary|dquote|dppart|downtriangle|dofill|dodraw|disposehash|dispose|dimension|detailpaths|detaileddraw|defineshade|decorated|ddecimal|dddecimal|ddddecimal|cutends|curvedpath|curvedpairs|curvedfunction|curved|crossingunder|crossed|crlf|cotd|cot|cosh|cos|cornered|copylist|constructedpath|constructedpairs|constructedfunction|condition|complemented|complementary|comment|colortype|colorpart|colorlike|colordecimalslist|colordecimals|cmyk|clearxy|circularpath|checkedbounds|checkbounds|centerarrow|center|break|boundingradius|boundingpoint|boundingcircle|boundingbox|bottomenlarged|bottomboundary|blownup|blackcolor|bitmapimage|bcircle|bbwidth|bbheight|basiccolors|autoalign|atan|asinh|asin|asgroup|arrowpath|area|anchored|along|addbackground|acosh|acos|SPACE|PERCENT|MP|DQUOTE|CRLF)(?=[^a-zA-Z\u005C_@!?-ÿ])",
"name" : "context.command.metafun.helper.mps"
},
"identifier" : {
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
index 3ce2d8286..b0da9385d 100644
--- a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
@@ -68,7 +68,7 @@
"name" : "context.comment.comment.tex"
},
"constant" : {
- "match" : "\u005C\u005C(zwnj|zwj|zerowidthspace|zerowidthnonjoiner|zerowidthnobreakspace|zerowidthjoiner|zeroskip|zeropoint|zeromuskip|zerocount|xmlcatcodes|xifcode|xetexengine|wildcardsymbol|whatsitnodecode|vtopgroupcode|vrbcatcodes|voidifcode|voidbox|vmodeifcode|vlistnodecode|vcentergroupcode|vboxifcode|vboxgroupcode|valueflagcode|vadjustgroupcode|usetexmodule|usemodule|useluamodule|uprotationangle|uppercasehyphenationmodecode|unsetnodecode|unknownengine|unexpandeddocumentvariable|underscoreasciicode|undefined|typescripttwo|typescriptthree|typescriptone|txtcatcodes|twoperemspace|trueifcode|tpbcatcodes|tpacatcodes|tolerantflagcode|tildeasciicode|threeperemspace|thousandpoint|texengineversion|texenginename|texenginefunctionality|texengine|texcatcodes|tabasciicode|syllablehyphenationmodecode|swapparsshapecode|swaphangindentcode|superscriptcatcode|subscriptcatcode|strictstarthyphenationmodecode|strictendhyphenationmodecode|stoptext|stopproject|stopproduct|stopnotmode|stopnotext|stopnotallmodes|stopmodule|stopmodeset|stopmodeset|stopmode|stopmkivmode|stoplmtxmode|stopenvironment|stopdocument|stopcomponent|stopallmodes|stopTEXpage|statuswrite|starttext|startproject|startproduct|startnotmode|startnotext|startnotallmodes|startmodule|startmodeset|startmodeset|startmode|startmkivmode|startlmtxmode|startenvironment|startdocument|startcomponent|startallmodes|startTEXpage|splitoffgroupcode|splitkeepgroupcode|spacecatcode|spaceasciicode|softhyphen|smallskipamount|slantperpoint|sixperemspace|singlequoteasciicode|simplegroupcode|setupmodule|setupdocument|semisimplegroupcode|scrollmodecode|scaledpoint|rulenodecode|rlncatcodes|rlm|righttoleftmark|rightrotationangle|rightparentasciicode|rightbracketasciicode|rightbraceasciicode|removemarginkernscode|questionmarkasciicode|pushmode|punctuationspace|prtcatcodes|protectedflagcode|project|product|primitiveflagcode|primeasciicode|preventmode|presetdocument|preamblegroupcode|popmode|points|plustwohundred|plustwo|plustwentythousand|plustwelve|plusthree|plusthousand|plustenthousand|plusten|plussixteen|plussix|plusseven|plusonehundred|plusone|plusnine|plushundred|plusfour|plusfivehundred|plusfive|plusfifty|pluseleven|pluseight|pluscxxviii|pluscxxvii|pluscclvi|pluscclv|permitmathreplacehyphenationmodecode|permitgluehyphenationmodecode|permitallhyphenationmodecode|permanentflagcode|periodasciicode|percentasciicode|penaltynodecode|pdftexengine|parindentskipcode|parfillrightskip|parfillleftskip|parametercatcode|overloadedflagcode|outputnewlinechar|outputgroupcode|othercatcode|optionalspace|onepoint|onemuskip|onebasepoint|oddifcode|numifcode|notcatcodes|normalpagebox|normalizelinecode|normalhyphenationmodecode|norightligaturecode|norightkerncode|noprotrusioncode|nonstopmodecode|nonbreakablespace|noligaturingcode|noleftligaturecode|noleftkerncode|nokerningcode|noexpansioncode|nobreakspace|noaligngroupcode|noalignedflagcode|nilcatcodes|newlineasciicode|narrownobreakspace|mutableflagcode|muquad|morethanasciicode|moduleparameter|mmodeifcode|mksuffix|minustwo|minusone|medskipamount|medcard|maxdimen|maxcount|maxcardminusone|maxcard|mathsnodecode|mathsizesuffix|mathshiftgroupcode|mathshiftcatcode|mathrelcode|mathradicalcode|mathpunctcode|mathordcode|mathopencode|mathopcode|mathnothingcode|mathnolopcode|mathnodecode|mathlimopcode|mathleftgroupcode|mathinnercode|mathgroupcode|mathexheight|mathemwidth|mathclosecode|mathchoicegroupcode|mathchoicecode|mathboxcode|mathbincode|mathaxisheight|mathalphacode|mathaccentcode|mathabovegroupcode|marknodecode|luatexengine|luastringsep|luacatcodes|lrm|localboxgroupcode|ligaturenodecode|lettercatcode|lessthanasciicode|lefttorightmark|leftrotationangle|leftparentasciicode|leftbracketasciicode|leftbraceasciicode|lazyligatureshyphenationmodecode|kernnodecode|invalidcatcode|interwordstretch|interwordspace|interwordshrink|instanceflagcode|insertnodecode|insertgroupcode|innerifcode|inicatcodes|immutableflagcode|immediateflagcode|ignorecatcode|ideographicspace|ideographichalffillspace|hyphenasciicode|hmodeifcode|hlistnodecode|hboxifcode|hboxgroupcode|hashasciicode|halfpoint|halfapoint|hairspace|gluenodecode|globalpreventmode|globalflagcode|globalenablemode|globaldisablemode|frozenwidowpenaltycode|frozentolerancecode|frozenstretchcode|frozenskipcode|frozenshapecode|frozenprotrudecode|frozenparfillcode|frozenloosenesscode|frozenlinepenaltycode|frozenlinecode|frozenlastlinecode|frozenindentcode|frozenhyphenationcode|frozenhsizecode|frozenhangcode|frozenflagcode|frozendisplaypenaltycode|frozendemeritscode|frozenclubpenaltycode|frozenbrokenpenaltycode|frozenallcode|frozenadjustcode|fourperemspace|forwardslashasciicode|formfeedasciicode|forcecheckhyphenationmodecode|fontslantperpoint|fontinterwordstretch|fontinterwordspace|fontinterwordshrink|fontextraspace|fontexheight|fontemwidth|fontcharifcode|fmtversion|fmtname|fiveperemspace|finrowgroupcode|figurespace|falseifcode|extraspace|explicitpenaltyhyphenationmodecode|explicithyphenationmodecode|exheight|exclamationmarkasciicode|everystoptext|everystarttext|escapecatcode|errorstopmodecode|eofifcode|environment|enquad|endoflinetoken|endoflinecatcode|endoflineasciicode|endoffileasciicode|endline|endgroupcatcode|enablemode|emwidth|emquad|emptyvbox|emptytoks|emptyhbox|emptybox|empty|egroup|eUx|downrotationangle|doublequoteasciicode|doublecommentsignal|dollarasciicode|doifnotmode|doifnotdocumentvariable|doifnotallmodes|doifmodeelse|doifmode|doifelsemode|doifelsedocumentvariable|doifelseallmodes|doifdocumentvariableelse|doifdocumentvariable|doifallmodeselse|doifallmodes|documentvariable|discretionarynodecode|discretionarygroupcode|discretionarygroupcode|disablemode|directionrighttoleft|directionlefttoright|dimifcode|delasciicode|definemode|definedifcode|currentmoduleparameter|ctxcatcodes|ctdcatcodes|csnameifcode|continuewhenlmtxmode|continueifinputfile|contextversion|contextmark|contextlmtxmode|contextformat|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|conditionaltrue|conditionalflagcode|conditionalfalse|compoundhyphenationmodecode|component|completehyphenationmodecode|commentcatcode|commentasciicode|commaasciicode|colonasciicode|clipwidthcode|circumflexasciicode|charnodecode|charifcode|catifcode|caseifcode|breakafterdircode|breakablethinspace|bottomlevelgroupcode|bigskipamount|bidirlo|bidirle|bidipop|bidilro|bidilre|bgroup|begingroupcatcode|batchmodecode|barasciicode|backslashasciicode|automaticpenaltyhyphenationmodecode|automatichyphenationmodecode|attributeunsetvalue|atsignasciicode|asciispacechar|ampersandasciicode|alignsetgroupcode|alignmentcatcode|aligngroupcode|adjustnodecode|adjustedhboxgroupcode|activetabtoken|activemathcharcode|activeformfeedtoken|activeendoflinetoken|activecatcode|activecatcode|Ux|Umathaccents|!!es|!!bs)(?=[^a-zA-Z])",
+ "match" : "\u005C\u005C(zwnj|zwj|zerowidthspace|zerowidthnonjoiner|zerowidthnobreakspace|zerowidthjoiner|zeroskip|zeropoint|zeromuskip|zerocount|xmlcatcodes|xifcode|xetexengine|wildcardsymbol|whatsitnodecode|vtopgroupcode|vrbcatcodes|voidifcode|voidbox|vmodeifcode|vlistnodecode|vcentergroupcode|vboxifcode|vboxgroupcode|valueflagcode|vadjustgroupcode|usetexmodule|usemodule|useluamodule|uprotationangle|uppercasehyphenationmodecode|unsetnodecode|unknownengine|unexpandeddocumentvariable|underscoreasciicode|undefined|typescripttwo|typescriptthree|typescriptone|txtcatcodes|twoperemspace|trueifcode|tpbcatcodes|tpacatcodes|tolerantflagcode|tildeasciicode|threeperemspace|thousandpoint|texengineversion|texenginename|texenginefunctionality|texengine|texcatcodes|tabasciicode|syllablehyphenationmodecode|swapparsshapecode|swaphangindentcode|superscriptcatcode|subscriptcatcode|strictstarthyphenationmodecode|strictendhyphenationmodecode|stoptext|stopproject|stopproduct|stopnotmode|stopnotext|stopnotallmodes|stopmodule|stopmodeset|stopmodeset|stopmode|stopmkivmode|stoplmtxmode|stopenvironment|stopdocument|stopcomponent|stopallmodes|stopTEXpage|statuswrite|starttext|startproject|startproduct|startnotmode|startnotext|startnotallmodes|startmodule|startmodeset|startmodeset|startmode|startmkivmode|startlmtxmode|startenvironment|startdocument|startcomponent|startallmodes|startTEXpage|splitoffgroupcode|splitkeepgroupcode|spacecatcode|spaceasciicode|softhyphen|smallskipamount|slantperpoint|sixperemspace|singlequoteasciicode|simplegroupcode|setupmodule|setupdocument|semisimplegroupcode|scrollmodecode|scaledpoint|rulenodecode|rlncatcodes|rlm|righttoleftmark|rightrotationangle|rightparentasciicode|rightbracketasciicode|rightbraceasciicode|removemarginkernscode|questionmarkasciicode|pushmode|punctuationspace|prtcatcodes|protectedflagcode|project|product|primitiveflagcode|primeasciicode|preventmode|presetdocument|preamblegroupcode|popmode|points|plustwohundred|plustwo|plustwentythousand|plustwelve|plusthree|plusthousand|plustenthousand|plusten|plussixteen|plussix|plusseven|plusonehundred|plusone|plusnine|plushundred|plusfour|plusfivehundred|plusfive|plusfifty|pluseleven|pluseight|pluscxxviii|pluscxxvii|pluscclvi|pluscclv|permitmathreplacehyphenationmodecode|permitgluehyphenationmodecode|permitallhyphenationmodecode|permanentflagcode|periodasciicode|percentasciicode|penaltynodecode|pdftexengine|parindentskipcode|parfillrightskip|parfillleftskip|parametercatcode|overloadedflagcode|outputnewlinechar|outputgroupcode|othercatcode|optionalspace|onepoint|onemuskip|onebasepoint|oddifcode|numifcode|notcatcodes|normalpagebox|normalizelinecode|normalhyphenationmodecode|norightligaturecode|norightkerncode|noprotrusioncode|nonstopmodecode|nonbreakablespace|noligaturingcode|noleftligaturecode|noleftkerncode|nokerningcode|noexpansioncode|nobreakspace|noaligngroupcode|noalignedflagcode|nilcatcodes|newlineasciicode|narrownobreakspace|mutableflagcode|muquad|morethanasciicode|moduleparameter|mmodeifcode|mksuffix|minustwo|minusone|medskipamount|medcard|maxdimen|maxcount|maxcardminusone|maxcard|mathsnodecode|mathsizesuffix|mathshiftgroupcode|mathshiftcatcode|mathrelcode|mathradicalcode|mathpunctcode|mathordcode|mathopencode|mathopcode|mathnothingcode|mathnolopcode|mathnodecode|mathlimopcode|mathleftgroupcode|mathinnercode|mathgroupcode|mathexheight|mathemwidth|mathclosecode|mathchoicegroupcode|mathchoicecode|mathboxcode|mathbincode|mathaxisheight|mathalphacode|mathaccentcode|mathabovegroupcode|marknodecode|luatexengine|luastringsep|luacatcodes|lrm|localboxgroupcode|ligaturenodecode|lettercatcode|lessthanasciicode|lefttorightmark|leftrotationangle|leftparentasciicode|leftbracketasciicode|leftbraceasciicode|lazyligatureshyphenationmodecode|kernnodecode|invalidcatcode|interwordstretch|interwordspace|interwordshrink|instanceflagcode|insertnodecode|insertgroupcode|innerifcode|inicatcodes|immutableflagcode|immediateflagcode|ignorecatcode|ideographicspace|ideographichalffillspace|hyphenasciicode|hmodeifcode|hlistnodecode|hboxifcode|hboxgroupcode|hashasciicode|halfpoint|halfapoint|hairspace|gluenodecode|globalpreventmode|globalflagcode|globalenablemode|globaldisablemode|frozenwidowpenaltycode|frozentolerancecode|frozenstretchcode|frozenskipcode|frozenshapecode|frozenprotrudecode|frozenparfillcode|frozenloosenesscode|frozenlinepenaltycode|frozenlinecode|frozenlastlinecode|frozenindentcode|frozenhyphenationcode|frozenhsizecode|frozenhangcode|frozenflagcode|frozendisplaypenaltycode|frozendemeritscode|frozenclubpenaltycode|frozenbrokenpenaltycode|frozenallcode|frozenadjustcode|fourperemspace|forwardslashasciicode|formfeedasciicode|forcecheckhyphenationmodecode|fontslantperpoint|fontinterwordstretch|fontinterwordspace|fontinterwordshrink|fontextraspace|fontexheight|fontemwidth|fontcharifcode|fmtversion|fmtname|flattendiscretionariescode|fiveperemspace|finrowgroupcode|figurespace|falseifcode|extraspace|explicitpenaltyhyphenationmodecode|explicithyphenationmodecode|exheight|exclamationmarkasciicode|everystoptext|everystarttext|escapecatcode|errorstopmodecode|eofifcode|environment|enquad|endoflinetoken|endoflinecatcode|endoflineasciicode|endoffileasciicode|endline|endgroupcatcode|enablemode|emwidth|emquad|emptyvbox|emptytoks|emptyhbox|emptybox|empty|egroup|eUx|downrotationangle|doublequoteasciicode|doublecommentsignal|dollarasciicode|doifnotmode|doifnotdocumentvariable|doifnotallmodes|doifmodeelse|doifmode|doifelsemode|doifelsedocumentvariable|doifelseallmodes|doifdocumentvariableelse|doifdocumentvariable|doifallmodeselse|doifallmodes|documentvariable|discretionarynodecode|discretionarygroupcode|discretionarygroupcode|disablemode|directionrighttoleft|directionlefttoright|dimifcode|delasciicode|definemode|definedifcode|currentmoduleparameter|ctxcatcodes|ctdcatcodes|csnameifcode|continuewhenlmtxmode|continueifinputfile|contextversion|contextmark|contextlmtxmode|contextformat|constantnumberargument|constantnumber|constantemptyargument|constantdimenargument|constantdimen|conditionaltrue|conditionalflagcode|conditionalfalse|compoundhyphenationmodecode|component|completehyphenationmodecode|commentcatcode|commentasciicode|commaasciicode|colonasciicode|clipwidthcode|circumflexasciicode|charnodecode|charifcode|catifcode|caseifcode|breakafterdircode|breakablethinspace|bottomlevelgroupcode|bigskipamount|bidirlo|bidirle|bidipop|bidilro|bidilre|bgroup|begingroupcatcode|batchmodecode|barasciicode|backslashasciicode|automaticpenaltyhyphenationmodecode|automatichyphenationmodecode|attributeunsetvalue|atsignasciicode|asciispacechar|ampersandasciicode|alignsetgroupcode|alignmentcatcode|aligngroupcode|adjustnodecode|adjustedhboxgroupcode|activetabtoken|activemathcharcode|activeformfeedtoken|activeendoflinetoken|activecatcode|activecatcode|Ux|Umathaccents|!!es|!!bs)(?=[^a-zA-Z])",
"name" : "context.constant.commands.constant.tex"
},
"csname" : {
diff --git a/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua b/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua
index 802efcf3d..8bf00c72b 100644
--- a/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua
+++ b/doc/context/sources/general/manuals/svg/svg-lmtx-mozilla.lua
@@ -362,4 +362,106 @@ return {
<circle cx="60" cy="110" r="3" fill="red" />
</svg>
]],
+ -- https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Gradients
+ [[
+ <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="gradient" x1="0%" y1="0%" x2="0" y2="100%">
+ <stop offset="0%" style="stop-color:skyblue;" />
+ <stop offset="100%" style="stop-color:seagreen;" />
+ </linearGradient>
+ </defs>
+ <rect x="0" y="0" width="100%" height="100%" fill="url(#gradient)" />
+ <circle cx="50" cy="50" r="40" fill="black" />
+ <circle cx="150" cy="50" r="40" fill="black" opacity="0.3" />
+ </svg>
+ ]],
+ [==[
+ <svg width="120" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="Gradient1">
+ <stop class="stop1" offset="0%"/>
+ <stop class="stop2" offset="50%"/>
+ <stop class="stop3" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Gradient2" x1="0" x2="0" y1="0" y2="1">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="50%" stop-color="black" stop-opacity="0"/>
+ <stop offset="100%" stop-color="blue"/>
+ </linearGradient>
+ <style type="text/css">
+ #rect1 { fill: url(#Gradient1); }
+ .stop1 { stop-color: red; }
+ .stop2 { stop-color: black; stop-opacity: 0; }
+ .stop3 { stop-color: blue; }
+ </style>
+ </defs>
+ <rect id="rect1" x="10" y="10" rx="15" ry="15" width="100" height="100"/>
+ <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#Gradient2)"/>
+ </svg>
+ ]==],
+ [[
+ <svg width="120" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <radialGradient id="RadialGradient1">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ <radialGradient id="RadialGradient2" cx="0.25" cy="0.25" r="0.25">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ </defs>
+ <rect x="10" y="10" rx="15" ry="15" width="100" height="100" fill="url(#RadialGradient1)"/>
+ <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#RadialGradient2)"/>
+ </svg>
+ ]],
+ [[
+ <svg width="120" height="120" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <radialGradient id="Gradient"
+ cx="0.5" cy="0.5" r="0.5" fx="0.25" fy="0.25">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ </defs>
+ <rect x="10" y="10" rx="15" ry="15" width="100" height="100" fill="url(#Gradient)" stroke="black" stroke-width="2"/>
+ <circle cx="60" cy="60" r="50" fill="transparent" stroke="white" stroke-width="2"/>
+ <circle cx="35" cy="35" r="2" fill="white" stroke="white"/>
+ <circle cx="60" cy="60" r="2" fill="white" stroke="white"/>
+ <text x="38" y="40" fill="white" font-family="sans-serif" font-size="10pt">(fx,fy)</text>
+ <text x="63" y="63" fill="white" font-family="sans-serif" font-size="10pt">(cx,cy)</text>
+ </svg>
+ ]],
+ [[
+ <svg width="220" height="220" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <radialGradient id="GradientPad"
+ cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75"
+ spreadMethod="pad">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ <radialGradient id="GradientRepeat"
+ cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75"
+ spreadMethod="repeat">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ <radialGradient id="GradientReflect"
+ cx="0.5" cy="0.5" r="0.4" fx="0.75" fy="0.75"
+ spreadMethod="reflect">
+ <stop offset="0%" stop-color="red"/>
+ <stop offset="100%" stop-color="blue"/>
+ </radialGradient>
+ </defs>
+ <rect x="10" y="10" rx="15" ry="15" width="100" height="100" fill="url(#GradientPad)"/>
+ <rect x="10" y="120" rx="15" ry="15" width="100" height="100" fill="url(#GradientRepeat)"/>
+ <rect x="120" y="120" rx="15" ry="15" width="100" height="100" fill="url(#GradientReflect)"/>
+ <text x="15" y="30" fill="white" font-family="sans-serif" font-size="12pt">Pad</text>
+ <text x="15" y="140" fill="white" font-family="sans-serif" font-size="12pt">Repeat</text>
+ <text x="125" y="140" fill="white" font-family="sans-serif" font-size="12pt">Reflect</text>
+ </svg>
+ ]]
}
diff --git a/metapost/context/base/mpiv/mp-mlib.mpiv b/metapost/context/base/mpiv/mp-mlib.mpiv
index fe00b5535..173fd9529 100644
--- a/metapost/context/base/mpiv/mp-mlib.mpiv
+++ b/metapost/context/base/mpiv/mp-mlib.mpiv
@@ -310,7 +310,7 @@ pair mfun_laboff.llft ; mfun_laboff.llft := -(.7,.7) ;
pair mfun_laboff.lrt ; mfun_laboff.lrt := (.7,-.7) ;
pair mfun_laboff.d ; mfun_laboff.d := mfun_laboff ;
-pair mfun_laboff.dflt ; mfun_laboff.dflt := mfun_laboff.lft ;
+pair mfun_laboff.dlft ; mfun_laboff.dlft := mfun_laboff.lft ;
pair mfun_laboff.drt ; mfun_laboff.drt := mfun_laboff.rt ;
pair mfun_laboff.origin ; mfun_laboff.origin := mfun_laboff ;
pair mfun_laboff.raw ; mfun_laboff.raw := mfun_laboff ;
@@ -339,7 +339,7 @@ mfun_labxf.llft := mfun_labxf.l_b := mfun_labxf.b_l := 1 ;
mfun_labxf.lrt := mfun_labxf.r_b := mfun_labxf.b_r := 0 ;
mfun_labxf.d := mfun_labxf ;
-mfun_labxf.dflt := mfun_labxf.lft ;
+mfun_labxf.dlft := mfun_labxf.lft ;
mfun_labxf.drt := mfun_labxf.rt ;
mfun_labxf.origin := 0 ;
mfun_labxf.raw := 0 ;
@@ -355,7 +355,7 @@ mfun_labyf.llft := mfun_labyf.l_b := mfun_labyf.b_l := 1 ;
mfun_labyf.lrt := mfun_labyf.r_b := mfun_labyf.b_r := 1 ;
mfun_labyf.d := mfun_labyf ;
-mfun_labyf.dflt := mfun_labyf.lft ;
+mfun_labyf.dlft := mfun_labyf.lft ;
mfun_labyf.drt := mfun_labyf.rt ;
mfun_labyf.origin := 0 ;
mfun_labyf.raw := 0 ;
@@ -370,7 +370,7 @@ mfun_labtype.urt := mfun_labtype.r_t := mfun_labtype.t_r := 6 ;
mfun_labtype.llft := mfun_labtype.l_b := mfun_labtype.b_l := 7 ;
mfun_labtype.lrt := mfun_labtype.r_b := mfun_labtype.b_r := 8 ;
mfun_labtype.d := 10 ;
-mfun_labtype.dflt := 11 ;
+mfun_labtype.dlft := 11 ;
mfun_labtype.drt := 12 ;
mfun_labtype.origin := 0 ;
mfun_labtype.raw := 0 ;
diff --git a/metapost/context/base/mpxl/mp-mlib.mpxl b/metapost/context/base/mpxl/mp-mlib.mpxl
index e327069ea..40be3dd2d 100644
--- a/metapost/context/base/mpxl/mp-mlib.mpxl
+++ b/metapost/context/base/mpxl/mp-mlib.mpxl
@@ -123,36 +123,15 @@ def withtransparency(expr a, t) =
withprescript "tr_transparency=" & decimal t
enddef ;
-% no, not compatible ... maybe only mpiv .. maybe withopacity
+% works reverse from transparency (for svg)
-% let opacity = pair ;
-
-% def withtransparency expr t =
-% withprescript "tr_alternative=" & decimal transparency_alternative_to_number(xpart t)
-% withprescript "tr_transparency=" & decimal ypart t
-% enddef ;
-%
-% withtransparency (1,.5)
-% withtransparency ("normal",.5)
-%
-% withopacity (1,.5)
-% withopacity (normaltransparency,.5)
-% withopacity .5
-
-def withopacity expr t =
- if pair t :
- withprescript "tr_alternative=" & decimal transparency_alternative_to_number(xpart t)
- withprescript "tr_transparency=" & decimal ypart t
- else :
- mfun_with_opacity (transparency_alternative_to_number(t))
+def withopacity expr o =
+ if o <> 1 :
+ withprescript "tr_alternative=" & decimal normaltransparent
+ withprescript "tr_transparency=" & decimal (1 - o)
fi
enddef ;
-def mfun_with_opacity (expr a) expr t =
- withprescript "tr_alternative=" & decimal a
- withprescript "tr_transparency=" & decimal t
-enddef ;
-
% Provided for downward compability:
def cmyk(expr c, m, y, k) =
@@ -332,7 +311,7 @@ pair mfun_laboff.llft ; mfun_laboff.llft := -(.7,.7) ;
pair mfun_laboff.lrt ; mfun_laboff.lrt := (.7,-.7) ;
pair mfun_laboff.d ; mfun_laboff.d := mfun_laboff ;
-pair mfun_laboff.dflt ; mfun_laboff.dflt := mfun_laboff.lft ;
+pair mfun_laboff.dlft ; mfun_laboff.dlft := mfun_laboff.lft ;
pair mfun_laboff.drt ; mfun_laboff.drt := mfun_laboff.rt ;
pair mfun_laboff.origin ; mfun_laboff.origin := mfun_laboff ;
pair mfun_laboff.raw ; mfun_laboff.raw := mfun_laboff ;
@@ -361,7 +340,7 @@ mfun_labxf.llft := mfun_labxf.l_b := mfun_labxf.b_l := 1 ;
mfun_labxf.lrt := mfun_labxf.r_b := mfun_labxf.b_r := 0 ;
mfun_labxf.d := mfun_labxf ;
-mfun_labxf.dflt := mfun_labxf.lft ;
+mfun_labxf.dlft := mfun_labxf.lft ;
mfun_labxf.drt := mfun_labxf.rt ;
mfun_labxf.origin := 0 ;
mfun_labxf.raw := 0 ;
@@ -377,7 +356,7 @@ mfun_labyf.llft := mfun_labyf.l_b := mfun_labyf.b_l := 1 ;
mfun_labyf.lrt := mfun_labyf.r_b := mfun_labyf.b_r := 1 ;
mfun_labyf.d := mfun_labyf ;
-mfun_labyf.dflt := mfun_labyf.lft ;
+mfun_labyf.dlft := mfun_labyf.lft ;
mfun_labyf.drt := mfun_labyf.rt ;
mfun_labyf.origin := 0 ;
mfun_labyf.raw := 0 ;
@@ -392,7 +371,7 @@ mfun_labtype.urt := mfun_labtype.r_t := mfun_labtype.t_r := 6 ;
mfun_labtype.llft := mfun_labtype.l_b := mfun_labtype.b_l := 7 ;
mfun_labtype.lrt := mfun_labtype.r_b := mfun_labtype.b_r := 8 ;
mfun_labtype.d := 10 ;
-mfun_labtype.dflt := 11 ;
+mfun_labtype.dlft := 11 ;
mfun_labtype.drt := 12 ;
mfun_labtype.origin := 0 ;
mfun_labtype.raw := 0 ;
@@ -696,20 +675,27 @@ numeric mfun_shade_lx, mfun_shade_ly ;
numeric mfun_shade_nx, mfun_shade_ny ;
numeric mfun_shade_dx, mfun_shade_dy ;
numeric mfun_shade_tx, mfun_shade_ty ;
+pair mfun_shade_center ;
+path mfun_shade_bbox ;
+numeric mfun_shade_height, mfun_shade_width;
% first
def mfun_with_shade_method_analyze(expr p) =
- mfun_shade_path := p ;
- mfun_shade_step := 1 ;
- mfun_shade_fx := xpart point 0 of p ;
- mfun_shade_fy := ypart point 0 of p ;
- mfun_shade_lx := mfun_shade_fx ;
- mfun_shade_ly := mfun_shade_fy ;
- mfun_shade_nx := 0 ;
- mfun_shade_ny := 0 ;
- mfun_shade_dx := abs(mfun_shade_fx - mfun_shade_lx) ;
- mfun_shade_dy := abs(mfun_shade_fy - mfun_shade_ly) ;
+ mfun_shade_path := p ;
+ mfun_shade_center := center p;
+ mfun_shade_bbox := boundingbox p;
+ mfun_shade_width := bbwidth p;
+ mfun_shade_height := bbheight p;
+ mfun_shade_step := 1 ;
+ mfun_shade_fx := xpart point 0 of p ;
+ mfun_shade_fy := ypart point 0 of p ;
+ mfun_shade_lx := mfun_shade_fx ;
+ mfun_shade_ly := mfun_shade_fy ;
+ mfun_shade_nx := 0 ;
+ mfun_shade_ny := 0 ;
+ mfun_shade_dx := abs(mfun_shade_fx - mfun_shade_lx) ;
+ mfun_shade_dy := abs(mfun_shade_fy - mfun_shade_ly) ;
for i=1 upto length(p) :
mfun_shade_tx := abs(mfun_shade_fx - xpart point i of p) ;
mfun_shade_ty := abs(mfun_shade_fy - ypart point i of p) ;
@@ -726,6 +712,33 @@ def mfun_with_shade_method_analyze(expr p) =
endfor ;
enddef ;
+% todo: native bbox
+
+vardef mfun_shade_center_fraction_do expr a =
+ ddecimal (
+ (xpart llcorner mfun_shade_bbox) + (xpart a) * mfun_shade_width,
+ (ypart llcorner mfun_shade_bbox) + (ypart a) * mfun_shade_height
+ )
+enddef ;
+
+def withshadecenterfraction expr a =
+ withprescript "sh_center_a=" & mfun_shade_center_fraction_do a
+ withprescript "sh_center_b=" & mfun_shade_center_fraction_do a
+enddef ;
+
+def withshadecenteronefraction expr a =
+ withprescript "sh_center_a=" & mfun_shade_center_fraction_do a
+enddef ;
+
+def withshadecentertwofraction expr a =
+ withprescript "sh_center_b=" & mfun_shade_center_fraction_do a
+enddef ;
+
+def withshaderadiusfraction expr a =
+ withprescript "sh_radius_a=0"
+ withprescript "sh_radius_b=" & decimal (a * sqrt(mfun_shade_width*mfun_shade_width+mfun_shade_height*mfun_shade_height)/2)
+enddef ;
+
vardef mfun_max_radius(expr p) =
max (
(xpart center p - xpart llcorner p) ++ (ypart center p - ypart llcorner p),
@@ -780,6 +793,14 @@ def withshadeorigin expr a =
withprescript "sh_center_b=" & ddecimal a
enddef ;
+def withshadecenterone expr a =
+ withprescript "sh_center_a=" & ddecimal a
+enddef ;
+
+def withshadecentertwo expr a =
+ withprescript "sh_center_b=" & ddecimal a
+enddef ;
+
def withshadevector expr a =
withprescript "sh_center_a=" & ddecimal (point xpart a of mfun_shade_path)
withprescript "sh_center_b=" & ddecimal (point ypart a of mfun_shade_path)
@@ -828,6 +849,12 @@ def withshadefraction expr a =
fi
enddef ;
+% def withshadeopacity expr a =
+% if mfun_shade_step > 0 :
+% withprescript "sh_opacity_" & decimal mfun_shade_step & "=" & decimal a
+% fi
+% enddef ;
+
def withshadecolors (expr a, b) =
if mfun_shade_step > 0 :
withprescript "sh_color=into"
diff --git a/metapost/context/base/mpxl/mp-tool.mpxl b/metapost/context/base/mpxl/mp-tool.mpxl
index 88d34769c..630bd58c1 100644
--- a/metapost/context/base/mpxl/mp-tool.mpxl
+++ b/metapost/context/base/mpxl/mp-tool.mpxl
@@ -3800,12 +3800,12 @@ enddef ;
% t
% enddef ;
-def closedcurve expr p =
- p if not cycle p : .. cycle fi
+vardef closedcurve primary p =
+ p if (path p and not cycle p) or (pair p) : .. cycle fi
enddef ;
-def closedlines expr p =
- p if not cycle p : -- cycle fi
+vardef closedlines primary p =
+ p if (path p and not cycle p) or (pair p) : -- cycle fi
enddef ;
permanent totransform, bymatrix, closedcurve, closedlines ;
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 74f787329..1320e2600 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -4926,7 +4926,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-url"] = package.loaded["l-url"] or true
--- original size: 14755, stripped down to: 6981
+-- original size: 14713, stripped down to: 6981
if not modules then modules={} end modules ['l-url']={
version=1.001,
@@ -25842,8 +25842,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1025948
--- stripped bytes : 405652
+-- original bytes : 1025906
+-- stripped bytes : 405610
-- end library merge
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 74f787329..1320e2600 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -4926,7 +4926,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-url"] = package.loaded["l-url"] or true
--- original size: 14755, stripped down to: 6981
+-- original size: 14713, stripped down to: 6981
if not modules then modules={} end modules ['l-url']={
version=1.001,
@@ -25842,8 +25842,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1025948
--- stripped bytes : 405652
+-- original bytes : 1025906
+-- stripped bytes : 405610
-- end library merge
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 74f787329..1320e2600 100644
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -4926,7 +4926,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-url"] = package.loaded["l-url"] or true
--- original size: 14755, stripped down to: 6981
+-- original size: 14713, stripped down to: 6981
if not modules then modules={} end modules ['l-url']={
version=1.001,
@@ -25842,8 +25842,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1025948
--- stripped bytes : 405652
+-- original bytes : 1025906
+-- stripped bytes : 405610
-- end library merge
diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua
index 74f787329..1320e2600 100644
--- a/scripts/context/stubs/win64/mtxrun.lua
+++ b/scripts/context/stubs/win64/mtxrun.lua
@@ -4926,7 +4926,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["l-url"] = package.loaded["l-url"] or true
--- original size: 14755, stripped down to: 6981
+-- original size: 14713, stripped down to: 6981
if not modules then modules={} end modules ['l-url']={
version=1.001,
@@ -25842,8 +25842,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1025948
--- stripped bytes : 405652
+-- original bytes : 1025906
+-- stripped bytes : 405610
-- end library merge
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index fd0516977..146fcbb8c 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{2021.03.17 17:43}
+\newcontextversion{2021.03.20 01:03}
%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 e04f656a7..f2d2b947f 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{2021.03.17 17:43}
+\edef\contextversion{2021.03.20 01:03}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index 095b149a2..e182985f2 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{2021.03.17 17:43}
+\newcontextversion{2021.03.20 01:03}
%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 633060dd1..f0ff9b363 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.03.17 17:43}
+\edef\contextversion{2021.03.20 01:03}
%D Kind of special:
diff --git a/tex/context/base/mkiv/l-url.lua b/tex/context/base/mkiv/l-url.lua
index 6f834d778..2e01ad408 100644
--- a/tex/context/base/mkiv/l-url.lua
+++ b/tex/context/base/mkiv/l-url.lua
@@ -379,53 +379,53 @@ end
-- print(url.barepath("/test"),url.barepath("test/"),url.barepath("/test/"),url.barepath("test"))
-- print(url.barepath("/x/yz"),url.barepath("x/yz/"),url.barepath("/x/yz/"),url.barepath("x/yz"))
---~ print(url.filename("file:///c:/oeps.txt"))
---~ print(url.filename("c:/oeps.txt"))
---~ print(url.filename("file:///oeps.txt"))
---~ print(url.filename("file:///etc/test.txt"))
---~ print(url.filename("/oeps.txt"))
-
---~ from the spec on the web (sort of):
-
---~ local function test(str)
---~ local t = url.hashed(str)
---~ t.constructed = url.construct(t)
---~ print(table.serialize(t))
---~ end
-
---~ inspect(url.hashed("http://www.pragma-ade.com/test%20test?test=test%20test&x=123%3d45"))
---~ inspect(url.hashed("http://www.pragma-ade.com/test%20test?test=test%20test&x=123%3d45"))
-
---~ test("sys:///./colo-rgb")
-
---~ test("/data/site/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733/figuur-cow.jpg")
---~ test("file:///M:/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
---~ test("M:/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
---~ test("file:///q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
---~ test("/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
-
---~ test("file:///cow%20with%20spaces")
---~ test("file:///cow%20with%20spaces.pdf")
---~ test("cow%20with%20spaces.pdf")
---~ test("some%20file")
---~ test("/etc/passwords")
---~ test("http://www.myself.com/some%20words.html")
---~ test("file:///c:/oeps.txt")
---~ test("file:///c|/oeps.txt")
---~ test("file:///etc/oeps.txt")
---~ test("file://./etc/oeps.txt")
---~ test("file:////etc/oeps.txt")
---~ test("ftp://ftp.is.co.za/rfc/rfc1808.txt")
---~ test("http://www.ietf.org/rfc/rfc2396.txt")
---~ test("ldap://[2001:db8::7]/c=GB?objectClass?one#what")
---~ test("mailto:John.Doe@example.com")
---~ test("news:comp.infosystems.www.servers.unix")
---~ test("tel:+1-816-555-1212")
---~ test("telnet://192.0.2.16:80/")
---~ test("urn:oasis:names:specification:docbook:dtd:xml:4.1.2")
---~ test("http://www.pragma-ade.com/spaced%20name")
-
---~ test("zip:///oeps/oeps.zip#bla/bla.tex")
---~ test("zip:///oeps/oeps.zip?bla/bla.tex")
-
---~ table.print(url.hashed("/test?test"))
+-- print(url.filename("file:///c:/oeps.txt"))
+-- print(url.filename("c:/oeps.txt"))
+-- print(url.filename("file:///oeps.txt"))
+-- print(url.filename("file:///etc/test.txt"))
+-- print(url.filename("/oeps.txt"))
+
+-- from the spec on the web (sort of):
+
+-- local function test(str)
+-- local t = url.hashed(str)
+-- t.constructed = url.construct(t)
+-- print(table.serialize(t))
+-- end
+
+-- inspect(url.hashed("http://www.pragma-ade.com/test%20test?test=test%20test&x=123%3d45"))
+-- inspect(url.hashed("http://www.pragma-ade.com/test%20test?test=test%20test&x=123%3d45"))
+
+-- test("sys:///./colo-rgb")
+
+-- test("/data/site/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733/figuur-cow.jpg")
+-- test("file:///M:/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
+-- test("M:/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
+-- test("file:///q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
+-- test("/q2p/develop/output/q2p-develop/resources/ecaboperception4_res/topicresources/58313733")
+
+-- test("file:///cow%20with%20spaces")
+-- test("file:///cow%20with%20spaces.pdf")
+-- test("cow%20with%20spaces.pdf")
+-- test("some%20file")
+-- test("/etc/passwords")
+-- test("http://www.myself.com/some%20words.html")
+-- test("file:///c:/oeps.txt")
+-- test("file:///c|/oeps.txt")
+-- test("file:///etc/oeps.txt")
+-- test("file://./etc/oeps.txt")
+-- test("file:////etc/oeps.txt")
+-- test("ftp://ftp.is.co.za/rfc/rfc1808.txt")
+-- test("http://www.ietf.org/rfc/rfc2396.txt")
+-- test("ldap://[2001:db8::7]/c=GB?objectClass?one#what")
+-- test("mailto:John.Doe@example.com")
+-- test("news:comp.infosystems.www.servers.unix")
+-- test("tel:+1-816-555-1212")
+-- test("telnet://192.0.2.16:80/")
+-- test("urn:oasis:names:specification:docbook:dtd:xml:4.1.2")
+-- test("http://www.pragma-ade.com/spaced%20name")
+
+-- test("zip:///oeps/oeps.zip#bla/bla.tex")
+-- test("zip:///oeps/oeps.zip?bla/bla.tex")
+
+-- table.print(url.hashed("/test?test"))
diff --git a/tex/context/base/mkiv/mult-fun.lua b/tex/context/base/mkiv/mult-fun.lua
index ce94fb3a0..759424f53 100644
--- a/tex/context/base/mkiv/mult-fun.lua
+++ b/tex/context/base/mkiv/mult-fun.lua
@@ -72,7 +72,7 @@ return {
-- "withshading", "withlinearshading", "withcircularshading", "withfromshadecolor", "withtoshadecolor",
"shadedinto", "withshadecolors",
"withshadedomain", "withshademethod", "withshadefactor", "withshadevector",
- "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform",
+ "withshadecenter", "withshadedirection", "withshaderadius", "withshadetransform", "withshadecenterone", "withshadecentertwo",
"withshadestep", "withshadefraction", "withshadeorigin", "shownshadevector", "shownshadeorigin",
"shownshadedirection", "shownshadecenter",
"cmyk", "spotcolor", "multitonecolor", "namedcolor",
diff --git a/tex/context/base/mkiv/mult-low.lua b/tex/context/base/mkiv/mult-low.lua
index a893d455c..8360ec81f 100644
--- a/tex/context/base/mkiv/mult-low.lua
+++ b/tex/context/base/mkiv/mult-low.lua
@@ -165,7 +165,8 @@ return {
"permitgluehyphenationmodecode", "permitallhyphenationmodecode", "permitmathreplacehyphenationmodecode",
"forcecheckhyphenationmodecode", "lazyligatureshyphenationmodecode",
--
- "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode", "clipwidthcode",
+ "normalizelinecode", "parindentskipcode", "swaphangindentcode", "swapparsshapecode", "breakafterdircode", "removemarginkernscode",
+ "clipwidthcode", "flattendiscretionariescode",
--
"noligaturingcode", "nokerningcode", "noleftligaturecode", "noleftkerncode", "norightligaturecode", "norightkerncode",
"noexpansioncode", "noprotrusioncode",
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 150b4e1bd..b414d1c97 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 68a481428..097b6cbf0 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/strc-mat.mkiv b/tex/context/base/mkiv/strc-mat.mkiv
index 7f5a19154..15b00baae 100644
--- a/tex/context/base/mkiv/strc-mat.mkiv
+++ b/tex/context/base/mkiv/strc-mat.mkiv
@@ -204,7 +204,10 @@
\relax \relax \relax
[\c!name=\v!formula,\s!counter=\v!formula,%
\s!hascaption=\v!yes,\s!hastitle=\v!yes,\s!hasnumber=\v!yes,%\s!haslevel=#6,%
- \c!reference=#1,\c!title=\namedformulaentry,\c!bookmark=]%
+ \c!reference=#1,%
+ \c!title=\namedformulaentry,%
+ \c!list=\currentplaceformulalist,%
+ \c!bookmark=\currentplaceformulabookmark]%
[#2]%
\glet\namedformulaentry\empty % \relax
\glet#3\m_strc_counters_last_registered_index
@@ -1227,13 +1230,20 @@
%\doifelsenextbgroup\strc_formulas_place_yes\strc_formulas_place_nop} % [ref]{}
\strc_formulas_place_nop}
+\let\currentplaceformulabookmark\empty
+\let\currentplaceformulalist \empty
+
\def\strc_formulas_start_place_parameters[#1]%
{\letdummyparameter\c!title \empty
\letdummyparameter\c!reference\empty
+ \letdummyparameter\c!bookmark \empty
+ \letdummyparameter\c!list \empty
\letdummyparameter\c!suffix \empty
\getdummyparameters[#1]%
\edef\currentplaceformulatitle {\dummyparameter\c!title}%
\edef\currentplaceformulareference{\dummyparameter\c!reference}%
+ \edef\currentplaceformulareference{\dummyparameter\c!reference}%
+ \edef\currentplaceformulabookmark {\dummyparameter\c!bookmark}%
\edef\currentplaceformulasuffix {\dummyparameter\c!suffix}%
\ifx\currentplaceformulatitle\empty\else
\normalexpanded{\setformulalistentry{\currentplaceformulatitle}}%
diff --git a/tex/context/base/mkiv/task-ini.lua b/tex/context/base/mkiv/task-ini.lua
index 8270b9112..84bec0131 100644
--- a/tex/context/base/mkiv/task-ini.lua
+++ b/tex/context/base/mkiv/task-ini.lua
@@ -131,6 +131,9 @@ appendaction("finalizers", "lists", "typesetters.paragraphs.normalize",
end
+appendaction("finalizers", "lists", "nodes.handlers.showhyphenation", nil, "nut", "disabled" )
+appendaction("finalizers", "lists", "nodes.handlers.visualizehyphenation", nil, "nut", "disabled" )
+
appendaction("finalizers", "lists", "typesetters.margins.localhandler", nil, "nut", "disabled" )
appendaction("finalizers", "lists", "builders.paragraphs.keeptogether", nil, "nut", "disabled" )
appendaction("finalizers", "fonts", "builders.paragraphs.solutions.splitters.optimize", nil, "nonut", "disabled" )
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 4597309ef..bd37945c2 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{2021.03.17 17:43}
+\newcontextversion{2021.03.20 01:03}
%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 80430f67d..6a211f58c 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{2021.03.17 17:43}
+\immutable\edef\contextversion{2021.03.20 01:03}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
@@ -523,6 +523,8 @@
\loadmkxlfile{lang-spa} % will become obsolete
+\loadmkxlfile{lang-hup}
+
\loadmkxlfile{typo-ovl} % fuzzy project (tracing) code
% old bibtex support: (will be m-oldbibtex.mkiv)
diff --git a/tex/context/base/mkxl/font-otj.lmt b/tex/context/base/mkxl/font-otj.lmt
index 301b0672f..b454101ba 100644
--- a/tex/context/base/mkxl/font-otj.lmt
+++ b/tex/context/base/mkxl/font-otj.lmt
@@ -125,7 +125,7 @@ local fontkern = nuts.pool and nuts.pool.fontkern
local italickern = nuts.pool and nuts.pool.italickern
local function somekern(makekern,amount,current)
- local kern = makekern(leftkern,amount)
+ local kern = makekern(amount)
setattrlist(kern,current)
return kern
end
diff --git a/tex/context/base/mkxl/lang-hup.lmt b/tex/context/base/mkxl/lang-hup.lmt
new file mode 100644
index 000000000..cde677102
--- /dev/null
+++ b/tex/context/base/mkxl/lang-hup.lmt
@@ -0,0 +1,249 @@
+if not modules then modules = { } end modules ['lang-hup'] = {
+ version = 1.001,
+ comment = "companion to lang-hup.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+local utfchar = utf.char
+local concat, sortedhash = table.concat, table.sortedhash
+
+local specialskips = nodes.specialskipcodes
+local nodecodes = nodes.nodecodes
+local disc_code = nodecodes.disc
+local glyph_code = nodecodes.glyph
+local glue_code = nodecodes.glue
+local hlist_code = nodecodes.hlist
+local kern_code = nodecodes.kern
+local par_code = nodecodes.par
+local line_code = nodes.listcodes.line
+local fontkern_code = nodes.kerncodes.fontkern
+local nuts = nodes.nuts
+local findtail = nuts.tail
+local getlist = nuts.getlist
+local getnext = nuts.getnext
+local getprev = nuts.getprev
+local getid = nuts.getid
+local getsubtype = nuts.getsubtype
+local getreplace = nuts.getreplace
+local getdiscpart = nuts.getdiscpart
+local isglyph = nuts.isglyph
+local nexthlist = nuts.traversers.list
+local nextglyph = nuts.traversers.glyph
+
+local setcolor = nodes.tracers.colors.set
+local setaction = nodes.tasks.setaction
+
+local hash = table.setmetatableindex("number")
+
+local report = logs.reporter("hyphenated")
+local trace_detail = false
+
+-- local nexthlist = nuts.traversers.list
+-- local nextglyph = nuts.traversers.glyph
+--
+-- local setcolor = nodes.tracers.colors.set
+--
+-- function nodes.handlers.showhyphenation(head)
+-- for current, id, subtype, list in nexthlist, head do
+-- if subtype == line_code then
+-- for n in nextglyph, list do
+-- local d = getdiscpart(n)
+-- if d == 0 then
+-- -- nothing
+-- elseif d == 1 then
+-- setcolor(n,"red") -- pre
+-- elseif d == 2 then
+-- setcolor(n,"blue") -- post
+-- elseif d == 3 then
+-- setcolor(n,"green") -- replace
+-- end
+-- end
+-- end
+-- end
+-- return head
+-- end
+
+local hash = table.setmetatableindex("number")
+
+local characters = fonts.hashes.characters
+
+local function collect(t,head)
+ local last = nil
+ while head do
+ local char, id = isglyph(head)
+ if char then
+ local u = characters[id][char].unicode
+ if u then
+ if type(u) == "table" then
+ for i=1,#u do
+ t[#t+1] = utfchar(u[i])
+ end
+ else
+ t[#t+1] = utfchar(u)
+ end
+ else
+ t[#t+1] = utfchar(char)
+ end
+ last = head
+ elseif id == disc_code then
+ collect(t,getreplace(head))
+ elseif id == kern_code and getsubtype(head,fontkern_code) then
+ -- we're ok
+ else
+ break
+ end
+ head = getnext(head)
+ end
+ return last and getdiscpart(last) == 1
+end
+
+local function getpostpart(current)
+ local first = nil
+ while current do
+ local id = getid(current)
+ if id == glue_code then
+ if not specialskips[getsubtype(current)] then
+ break
+ end
+ elseif id == glyph_code or id == disc_code then
+ return current
+ elseif id ~= par_code then
+ break
+ end
+ current = getnext(current)
+ end
+end
+
+local function findprepart(current)
+ local tail = findtail(current)
+ while tail do
+ local id = getid(tail)
+ if id == glue_code then
+ if not specialskips[getsubtype(tail)] then
+ break
+ end
+ elseif id == glyph_code and getdiscpart(tail) == 1 then
+ return tail
+ else
+ break
+ end
+ tail = getprev(tail)
+ end
+end
+
+local function getprepart(disc)
+ local back = getprev(disc)
+ local okay = back
+ while okay do
+ local id = getid(okay)
+ if id == glyph_code or id == disc_code or (id == kern_code and getsubtype(okay,fontkern_code)) then
+ back = okay
+ else
+ break
+ end
+ okay = getprev(okay)
+ end
+ return back
+end
+
+function nodes.handlers.showhyphenation(head)
+ local current = head
+ local word = { }
+ while current do
+ if getid(current) == hlist_code and getsubtype(current) == line_code then
+ local list = getlist(current)
+ if list then
+ if #word > 0 then
+ local after = getpostpart(list)
+ local more = collect(word,after)
+ if more then
+ goto skip
+ else
+ word = concat(word)
+ if trace_detail then
+ local r = status.readstate
+ report("around line %s in file %s: %s",r.linenumber or "-",file.basename(r.filename),word)
+ end
+ hash[word] = hash[word] + 1
+ word = { }
+ end
+ end
+ local last = findprepart(list)
+ if last then
+ local before = getprepart(last)
+ collect(word,before)
+
+ end
+ ::skip::
+ end
+ end
+ current = getnext(current)
+ end
+ return head
+end
+
+local initialize ; initialize = function()
+ logs.registerfinalactions(function()
+ logs.startfilelogging(report,"hyphenated words")
+ if hash and next(hash) then
+ for word, count in sortedhash(hash) do
+ report("%4i : %s",count,word)
+ end
+ else
+ report("nothing hyphenated")
+ end
+ logs.stopfilelogging()
+ end)
+ --
+ statistics.register("hyphenation",function()
+ local n = 0
+ local m = 0
+ for k, v in sortedhash(hash) do
+ n = n + 1
+ m = m + v
+ end
+ return string.format("%i hyphenated words, %i unique words",m,n)
+ end)
+ initialize = false
+end
+
+trackers.register("hyphenation.applied", function(v)
+ setaction("finalizers","nodes.handlers.showhyphenation",v)
+ if v and initialize then
+ initialize()
+ end
+end)
+
+trackers.register("hyphenation.applied.console", function(v)
+ setaction("finalizers","nodes.handlers.showhyphenation",v)
+ trace_detail = v
+ if v and initialize then
+ initialize()
+ end
+end)
+
+function nodes.handlers.visualizehyphenation(head)
+ for current, id, subtype, list in nexthlist, head do
+ if subtype == line_code then
+ for n in nextglyph, list do
+ local d = getdiscpart(n)
+ if d == 0 then
+ -- nothing
+ elseif d == 1 then
+ setcolor(n,"red") -- pre
+ elseif d == 2 then
+ setcolor(n,"blue") -- post
+ elseif d == 3 then
+ setcolor(n,"green") -- replace
+ end
+ end
+ end
+ end
+ return head
+end
+
+trackers.register("hyphenation.applied.visualize", function(v)
+ setaction("finalizers","nodes.handlers.visualizehyphenation",v)
+end)
diff --git a/tex/context/base/mkxl/lang-hup.mkxl b/tex/context/base/mkxl/lang-hup.mkxl
new file mode 100644
index 000000000..b7bebce52
--- /dev/null
+++ b/tex/context/base/mkxl/lang-hup.mkxl
@@ -0,0 +1,34 @@
+%D \module
+%D [ file=lang-hup,
+%D version=2021.03.19,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Hyphenation tracing,
+%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 Language Macros / hyphenation tracing}
+
+\unprotect
+
+\registerctxluafile{lang-hup}{autosuffix}
+
+%D \starttyping
+%D \starttext
+%D
+%D \enabletrackers[hyphenation.applied]
+%D \enabletrackers[hyphenation.applied.console]
+%D
+%D \dontcomplain \dostepwiserecurse{0}{15}{1}{
+%D {\advance\hsize -#1cm \input tufte \par}
+%D }
+%D
+%D \stoptext
+%D \stoptyping
+
+\protect \endinput
+
diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl
index 2007ed83c..decf8c655 100644
--- a/tex/context/base/mkxl/math-ali.mkxl
+++ b/tex/context/base/mkxl/math-ali.mkxl
@@ -658,7 +658,8 @@
\setupmathcases
[\c!distance=\emwidth,
\c!strut=\v!yes, % new
- \c!numberdistance=2.5\emwidth,
+ %\c!numberdistance=2.5\emwidth,
+ \c!numberdistance=\zeropoint, % pending an extension wrt placement (Aditya/Hans)
\c!left={\left\{\mskip\thinmuskip},
\c!right={\right.}]
@@ -667,36 +668,126 @@
\frozen\instance \defcsname \e!stop \currentmathcases\endcsname{\math_cases_stop}%
\to \everydefinemathcases
-\permanent\protected\def\math_cases_NC_zero
- {\math_cases_NC}
+% \permanent\protected\def\math_cases_NC_zero
+% {\math_cases_NC}
+%
+% \permanent\protected\def\math_cases_MC_zero
+% {\math_cases_NC
+% \ifmmode\else
+% \startimath
+% \enforced\let\math_cases_end_math\stopimath
+% \fi}
+%
+% \let\math_cases_end_math\relax
+%
+% \permanent\protected\def\math_cases_NR_zero
+% {\unskip
+% \math_cases_end_math
+% \aligntab
+% \global\enforced\let\math_cases_NC\math_cases_NC_first
+% \dodirectdoubleempty\math_cases_NR}
+%
+% \permanent\protected\def\math_cases_NC_first
+% {\global\enforced\let\math_cases_NC\math_cases_NC_second}
+%
+% \permanent\protected\def\math_cases_NC_second
+% {\math_cases_end_math\aligntab}
+%
+% \let\math_cases_NR\math_align_NR_generic
+%
+% \installmacrostack\math_cases_NC
+%
+% \let\math_cases_strut\relax
+%
+% \permanent\tolerant\protected\def\math_cases_start[#1]#*[#2]%
+% {\begingroup
+% \edef\currentmathcases{#1}%
+% \ifarguments\or\or
+% \setupcurrentmathcases[#2]%
+% \fi
+% \edef\p_strut{\mathcasesparameter\c!strut}%
+% \ifx\p_strut\v!yes
+% \enforced\let\math_cases_strut\strut
+% \else
+% \enforced\let\math_cases_strut\relax
+% \fi
+% \mathcasesparameter\c!left
+% \vcenter\bgroup
+% \push_macro_math_cases_NC
+% \enforced\let\MC\math_cases_MC_zero
+% \enforced\let\NR\math_cases_NR_zero
+% \enforced\let\TB\math_common_TB
+% \enforced\glet\math_cases_NC\math_cases_NC_first
+% \normalbaselines
+% \mathsurround\zeropoint
+% \everycr\emptytoks
+% \tabskip\zeropoint
+% \global\c_math_eqalign_column\plusone
+% \halign\bgroup
+% \startimath
+% \mathcasesparameter\c!style
+% \alignmark\alignmark
+% \stopimath
+% \hfil
+% \aligntab
+% \hskip\mathcasesparameter\c!distance\relax
+% \pop_macro_math_cases_NC
+% \math_cases_strut % looks better
+% \alignmark\alignmark
+% \hfil
+% \aligntab
+% \hskip\mathcasesparameter\c!numberdistance\relax
+% % \let\formuladistance\!!zeropoint
+% \span\math_text_in_eqalign{\alignmark\alignmark}%
+% \crcr} % todo: number
+%
+% % When we have just protected we get an extra row but we can no flag
+% % this as a proper alignment related command which means that uit gets
+% % expanded.
+%
+% \noaligned\permanent\protected\def\math_cases_stop
+% {\crcr
+% \egroup
+% \pop_macro_math_cases_NC
+% \egroup
+% \mathcasesparameter\c!right
+% \endgroup}
-\permanent\protected\def\math_cases_MC_zero
- {\math_cases_NC
- \ifmmode\else
- \startimath
- \enforced\let\math_cases_end_math\stopimath
- \fi}
+\let\math_cases_strut\relax
-\let\math_cases_end_math\relax
+\newcount\c_math_cases_nc
-\permanent\protected\def\math_cases_NR_zero
- {\unskip
- \math_cases_end_math
- \aligntab
- \global\enforced\let\math_cases_NC\math_cases_NC_first
- \dodirectdoubleempty\math_cases_NR}
+\def\math_cases_NC_zero
+ {\ifmmode\else\startimath\fi}
-\permanent\protected\def\math_cases_NC_first
- {\global\enforced\let\math_cases_NC\math_cases_NC_second}
+\def\math_cases_NC_one
+ {\ifmmode\stopimath\fi
+ \aligntab
+ \ifmmode\else\startimath\fi}
-\permanent\protected\def\math_cases_NC_second
- {\math_cases_end_math\aligntab}
+\def\math_cases_NC_two
+ {\ifmmode\stopimath\fi}
-\let\math_cases_NR\math_align_NR_generic
+\permanent\protected\def\math_cases_NC
+ {\ifcase\c_math_cases_nc
+ \expandafter\math_cases_NC_zero
+ \or
+ \expandafter\math_cases_NC_one
+ \or
+ \expandafter\math_cases_NC_two
+ \else
+ % error
+ \fi
+ \global\advance\c_math_cases_nc\plusone}
-\installmacrostack\math_cases_NC
+\noaligned\tolerant\permanent\protected\def\math_cases_NR[#1]#*[#2]%
+ {\unskip
+ \ifmmode\stopimath\fi
+ \aligntab
+ \global\c_math_cases_nc\zerocount
+ \math_align_NR_generic[#1][#2]}
-\let\math_cases_strut\relax
+\installglobalmacrostack\c_math_cases_nc
\permanent\tolerant\protected\def\math_cases_start[#1]#*[#2]%
{\begingroup
@@ -710,48 +801,41 @@
\else
\enforced\let\math_cases_strut\relax
\fi
+ \push_macro_c_math_cases_nc
\mathcasesparameter\c!left
\vcenter\bgroup
- \push_macro_math_cases_NC
- % \enforced\let\endmath\relax
- \enforced\let\NC\math_cases_NC_zero
- \enforced\let\MC\math_cases_MC_zero
- \enforced\let\NR\math_cases_NR_zero
+ \enforced\let\MC\math_cases_NC
+ \enforced\let\NC\math_cases_NC
+ \enforced\let\NR\math_cases_NR
\enforced\let\TB\math_common_TB
- \global\enforced\let\math_cases_NC\math_cases_NC_first
\normalbaselines
\mathsurround\zeropoint
\everycr\emptytoks
\tabskip\zeropoint
\global\c_math_eqalign_column\plusone
+ \global\c_math_cases_nc\zerocount
\halign\bgroup
- \startimath
+ \ifmmode\else\startimath\fi
\mathcasesparameter\c!style
\alignmark\alignmark
- \stopimath
+ \ifmmode\stopimath\fi
\hfil
\aligntab
\hskip\mathcasesparameter\c!distance\relax
- \pop_macro_math_cases_NC
\math_cases_strut % looks better
\alignmark\alignmark
\hfil
\aligntab
\hskip\mathcasesparameter\c!numberdistance\relax
- % \let\formuladistance\!!zeropoint
\span\math_text_in_eqalign{\alignmark\alignmark}%
\crcr} % todo: number
-% When we have just protected we get an extra row but we can no flag
-% this as a proper alignment related command which means that uit gets
-% expanded.
-
\noaligned\permanent\protected\def\math_cases_stop
{\crcr
\egroup
- \pop_macro_math_cases_NC
\egroup
\mathcasesparameter\c!right
+ \pop_macro_c_math_cases_nc
\endgroup}
\definemathcases[cases]
diff --git a/tex/context/base/mkxl/math-frc.mkxl b/tex/context/base/mkxl/math-frc.mkxl
index dfdb7144f..d02a3b865 100644
--- a/tex/context/base/mkxl/math-frc.mkxl
+++ b/tex/context/base/mkxl/math-frc.mkxl
@@ -489,9 +489,7 @@
\appendtoks
\edef\p_distance{\rootmathfractionparameter\c!distance}%
\ifempty\p_distance\else
- \ifcsname\??mathfractiondistance\p_distance\endcsname
- \lastnamedcs
- \fi
+ \begincsname\??mathfractiondistance\p_distance\endcsname
\fi
\to \everymathematics
diff --git a/tex/context/base/mkxl/meta-tex.mkxl b/tex/context/base/mkxl/meta-tex.mkxl
index 00ad3a58b..17dc788ef 100644
--- a/tex/context/base/mkxl/meta-tex.mkxl
+++ b/tex/context/base/mkxl/meta-tex.mkxl
@@ -45,10 +45,10 @@
\permanent\def\getTeXtext#1%
{\begincsname\??graphictextext#1\endcsname}
-\letvalue{\??graphictexdepth d}\syst_boxes_lower_nextbox_dp
-\letvalue{\??graphictexdepth \s!depth}\syst_boxes_lower_nextbox_dp
-\letvalue{\??graphictexdepth n}\donothing
-\letvalue{\??graphictexdepth\s!nodepth}\donothing
+\letcsname\??graphictexdepth d\endcsname\syst_boxes_lower_nextbox_dp
+\letcsname\??graphictexdepth \s!depth\endcsname\syst_boxes_lower_nextbox_dp
+\letcsname\??graphictexdepth n\endcsname\donothing
+\letcsname\??graphictexdepth\s!nodepth\endcsname\donothing
% old hackery, slightly modernized
@@ -176,16 +176,16 @@
\permanent\protected\def\svghashed#1%
{\clf_svghashed#1\relax}
-\permanent\protected\def\svg_normal_poscode#1#2#3%
+\permanent\protected\def\svg_normal_pcode#1#2#3%
{\glyph xoffset #1\onebasepoint yoffset #2\onebasepoint #3\relax}
-\permanent\protected\def\svg_normal_poschar#1#2#3%
+\permanent\protected\def\svg_normal_pchar#1#2#3%
{\glyph xoffset #1\onebasepoint yoffset #2\onebasepoint `#3\relax}
-\permanent\protected\def\svg_normal_posspace#1#2%
+\permanent\protected\def\svg_normal_pspace#1#2%
{\space}
-\permanent\protected\def\svg_normal_space#1%
+\permanent\protected\def\svg_normal_space
{\space}
\permanent\protected\def\svg_normal_code#1%
@@ -194,42 +194,56 @@
\permanent\protected\def\svg_normal_char#1%
{#1\relax}
-\permanent\protected\def\svg_normal_startlayer
+\permanent\protected\def\svg_normal_start
{\resetlayer[svgmps]%
\setlayer[svgmps]\bgroup}
-\permanent\protected\def\svg_normal_stoplayer
+\permanent\protected\def\svg_normal_stop
{\egroup
\flushlayer[svgmps]}
-\permanent\protected\def\svg_normal_colored#1#2#3#4%
+\permanent\protected\def\svg_normal_color#1#2#3#4%
{\colored[r=#1,g=#2,b=#3]{#4}}
-\permanent\protected\def\svg_normal_setlayer#1#2#3%
+\permanent\protected\def\svg_normal_set#1#2#3%
{\setlayer[svgmps]{\hbox xoffset #1\onebasepoint yoffset #2\onebasepoint to 10sp{#3}}}
-\permanent\protected\def\svg_normal_scaled#1#2#3#4#5%
+% \permanent\protected\def\svg_normal_font#1#2#3#4#5%
+% {\hbox\bgroup
+% \iftok{#2}\emptytoks\else
+% \edef\p_font{\ifcsname\??svgfamily#2\endcsname\lastnamedcs\else#2\fi-#3-#4}%
+% \predefinedfont[\s!spec:\p_font*\s!default\space @ 10bp]%
+% \fi
+% \glyphscale\numericscale#1\relax % we need a period !
+% #5%
+% \egroup}
+
+\permanent\protected\def\svg_normal_font#1#2#3#4#5%
{\hbox\bgroup
- \edef\p_family{#2}%
- \ifempty\p_family\else
+ \iftok{#2}\emptytoks\else
\edef\p_font{\ifcsname\??svgfamily#2\endcsname\lastnamedcs\else#2\fi-#3-#4}%
- \predefinedfont[\s!spec:\p_font*\s!default\space @ 10bp]%
+ \ifcsname svg:\p_font\endcsname
+ \lastnamedcs
+ \else
+ \predefinefont[svg:\p_font][\s!spec:\p_font*\s!default\space @ 10bp]%
+ \csname svg:\p_font\endcsname
+ \fi
\fi
\glyphscale\numericscale#1\relax % we need a period !
#5%
\egroup}
-\permanent\protected\def\svg_traced_poscode#1#2#3%
+\permanent\protected\def\svg_traced_pcode#1#2#3%
{\writestatus{SVG TEXT}{....[poscode #1 #2 \Uchar #3]}%
- \svg_normal_poscode{#1}{#2}{#3}}
+ \svg_normal_pcode{#1}{#2}{#3}}
-\permanent\protected\def\svg_traced_poschar#1#2#3%
+\permanent\protected\def\svg_traced_pchar#1#2#3%
{\writestatus{SVG TEXT}{....[poschar #1 #2 #3]}%
- \svg_normal_poschar{#1}{#2}{#3}}
+ \svg_normal_pchar{#1}{#2}{#3}}
-\permanent\protected\def\svg_traced_posspace#1#2%
+\permanent\protected\def\svg_traced_pspace#1#2%
{\writestatus{SVG TEXT}{....[posspace #1 #2]}%
- \svg_normal_posspace{#1}{#2}}
+ \svg_normal_pspace{#1}{#2}}
\permanent\protected\def\svg_traced_code#1%
{\writestatus{SVG TEXT}{....[char \Uchar #1]}%
@@ -243,54 +257,54 @@
{\writestatus{SVG TEXT}{....[space]}%
\svg_normal_space}
-\permanent\protected\def\svg_traced_startlayer
+\permanent\protected\def\svg_traced_start
{\writestatus{SVG TEXT}{[start layer]}%
- \svg_normal_startlayer}
+ \svg_normal_start}
-\permanent\protected\def\svg_traced_stoplayer
- {\svg_normal_stoplayer
+\permanent\protected\def\svg_traced_stop
+ {\svg_normal_stop
\writestatus{SVG TEXT}{[stop layer]}}
-\permanent\protected\def\svg_traced_colored#1#2#3#4%
+\permanent\protected\def\svg_traced_color#1#2#3#4%
{\writestatus{SVG TEXT}{.[start color #1 #2 #3]}%
- \svg_normal_colored{#1}{#2}{#3}{#4}%
+ \svg_normal_color{#1}{#2}{#3}{#4}%
\writestatus{SVG TEXT}{.[stop color]}}
-\permanent\protected\def\svg_traced_setlayer#1#2#3%
+\permanent\protected\def\svg_traced_set#1#2#3%
{\writestatus{SVG TEXT}{...[start set layer #1 #2]}%
- \svg_normal_setlayer{#1}{#2}{#3}%
+ \svg_normal_set{#1}{#2}{#3}%
\writestatus{SVG TEXT}{...[stop set setlayer]}}
-\permanent\protected\def\svg_traced_scaled#1#2#3#4#5%
+\permanent\protected\def\svg_traced_font#1#2#3#4#5%
{\writestatus{SVG TEXT}{..[start scaled font #1 #2 #3 #4]}%
- \svg_normal_scaled{#1}{#2}{#3}{#4}{#5}%
+ \svg_normal_font{#1}{#2}{#3}{#4}{#5}%
\writestatus{SVG TEXT}{..[stop scaled font]}}
\permanent\protected\def\svg_normal_text
- {\let\svgposcode \svg_normal_poscode
- \let\svgposchar \svg_normal_poschar
- \let\svgposspace \svg_normal_posspace
- \let\svgcode \svg_normal_code
- \let\svgchar \svg_normal_char
- \let\svgspace \svg_normal_space
- \let\svgstartlayer\svg_normal_startlayer
- \let\svgstoplayer \svg_normal_stoplayer
- \let\svgcolored \svg_normal_colored
- \let\svgsetlayer \svg_normal_setlayer
- \let\svgscaled \svg_normal_scaled}
+ {\let\svgpcode \svg_normal_pcode
+ \let\svgpchar \svg_normal_pchar
+ \let\svgpspace\svg_normal_pspace
+ \let\svgcode \svg_normal_code
+ \let\svgchar \svg_normal_char
+ \let\svgspace \svg_normal_space
+ \let\svgstart \svg_normal_start
+ \let\svgstop \svg_normal_stop
+ \let\svgcolor \svg_normal_color
+ \let\svgset \svg_normal_set
+ \let\svgfont \svg_normal_font}
\permanent\protected\def\svg_traced_text
- {\let\svgposcode \svg_traced_poscode
- \let\svgposchar \svg_traced_poschar
- \let\svgposspace \svg_traced_posspace
- \let\svgcode \svg_traced_code
- \let\svgchar \svg_traced_char
- \let\svgspace \svg_traced_space
- \let\svgstartlayer\svg_traced_startlayer
- \let\svgstoplayer \svg_traced_stoplayer
- \let\svgcolored \svg_traced_colored
- \let\svgsetlayer \svg_traced_setlayer
- \let\svgscaled \svg_traced_scaled}
+ {\let\svgpcode \svg_traced_pcode
+ \let\svgpchar \svg_traced_pchar
+ \let\svgpspace\svg_traced_pspace
+ \let\svgcode \svg_traced_code
+ \let\svgchar \svg_traced_char
+ \let\svgspace \svg_traced_space
+ \let\svgstart \svg_traced_start
+ \let\svgstop \svg_traced_stop
+ \let\svgcolor \svg_traced_color
+ \let\svgset \svg_traced_set
+ \let\svgfont \svg_traced_font}
\installtextracker
{svg.text}
diff --git a/tex/context/base/mkxl/mlib-lmt.lmt b/tex/context/base/mkxl/mlib-lmt.lmt
index b7c869c3b..651a98be5 100644
--- a/tex/context/base/mkxl/mlib-lmt.lmt
+++ b/tex/context/base/mkxl/mlib-lmt.lmt
@@ -168,8 +168,8 @@ registerscript("scrutenized", function()
local t = { p[1], cycle = p.cycle }
for i=2,m-1 do
local pi = p[i]
- local x2 = r(pi[1])
- local y2 = r(pi[2])
+ local x2 = round(pi[1])
+ local y2 = round(pi[2])
if x1 ~= x2 or y1 ~= y2 then
n = n + 1
t[n] = p[i]
@@ -177,16 +177,16 @@ registerscript("scrutenized", function()
y1 = y2
end
end
- local x1 = r(p[1][1])
- local y1 = r(p[1][2])
- local x2 = r(p[m][1])
- local y2 = r(p[m][2])
+ local x1 = round(p[1][1])
+ local y1 = round(p[1][2])
+ local x2 = round(p[m][1])
+ local y2 = round(p[m][2])
if x1 ~= x2 or y1 ~= y2 then
n = n + 1
t[n] = p[m]
end
- mp.path(t)
- -- injectpath(t)
+ -- mp.path(t)
+ injectpath(t)
end)
-- A goodie, mostly a side effect of updating the metafun manual.
diff --git a/tex/context/base/mkxl/mlib-pps.lmt b/tex/context/base/mkxl/mlib-pps.lmt
index d668d1b10..45ae9bf24 100644
--- a/tex/context/base/mkxl/mlib-pps.lmt
+++ b/tex/context/base/mkxl/mlib-pps.lmt
@@ -761,6 +761,10 @@ end
local tx_reset, tx_process do
+ -- The dilemma is that we need to process the text in order to know the
+ -- dimensions but afterwards also need to apply color and such. So, we need
+ -- two passes, one immediately and one when we use it.
+
local eol = S("\n\r")^1
local cleaner = Cs((P("@@")/"@" + P("@")/"%%" + P(1))^0)
local splitter = Ct(
@@ -1015,6 +1019,8 @@ local tx_reset, tx_process do
end
end
+ local fasttrack = false directives.register("metapost.text.fasttrack", function(v) fasttrack = v end)
+
tx_process = function(object,prescript,before,after)
local data = top.texdata[metapost.properties.number] -- the current figure number, messy
local index = tonumber(prescript.tx_index)
@@ -1040,9 +1046,14 @@ local tx_reset, tx_process do
local mp_text = top.texstrings[mp_index]
local mp_hash = prescript.tx_cache
local box
+local donebox = fasttrack and top.textexts[mp_index]
if mp_hash == "no" then
+if donebox then
+ box = copy_list(donebox)
+else
texrunlocal("mptexttoks")
box = textakebox("mptextbox")
+end
else
local cache = data.texhash
if mp_hash then
@@ -1074,8 +1085,12 @@ local tx_reset, tx_process do
if box then
box = copy_list(box)
else
+if donebox then
+ box = copy_list(donebox)
+else
texrunlocal("mptexttoks")
box = textakebox("mptextbox")
+end
cache[mp_hash] = box
end
end
diff --git a/tex/context/base/mkxl/mlib-svg.lmt b/tex/context/base/mkxl/mlib-svg.lmt
index e405eaa8d..496d4ed0d 100644
--- a/tex/context/base/mkxl/mlib-svg.lmt
+++ b/tex/context/base/mkxl/mlib-svg.lmt
@@ -7,6 +7,10 @@ if not modules then modules = { } end modules ['mlib-svg'] = {
license = "see context related readme files",
}
+-- todo: svg stripper
+
+-- todo: when opacity is 1 don't flush it
+
-- Just a few notes:
--
-- There is no real need to boost performance here .. we can always make a fast
@@ -335,6 +339,7 @@ do
* (P("e") * S("+-")^0 * p_digit^1)^-1
local function convert (n) n = tonumber(n) return n end
+ local function convert_p (n,u) n = tonumber(n) if u == true then return n / 100 else return n end end
local function convert_r (n,u) n = tonumber(n) if u == true then return percentage_r * n elseif u then return u * n else return n end end
local function convert_x (n,u) n = tonumber(n) if u == true then return percentage_x * n elseif u then return u * n else return n end end
local function convert_y (n,u) n = tonumber(n) if u == true then return percentage_y * n elseif u then return u * n else return n end end
@@ -345,7 +350,7 @@ do
local p_percent = P("%") * Cc(true)
local c_number_n = C(p_number)
- local c_number_u = C(p_number) * (p_unit + p_percent)^-1
+ local c_number_u = C(p_number) * (p_percent + p_unit)^-1
p_number_n = c_number_n / convert
p_number_x = c_number_u / convert_x
@@ -353,9 +358,11 @@ do
p_number_y = c_number_u / convert_y
p_number_vy = c_number_u / convert_vy
p_number_r = c_number_u / convert_r
+ p_number_p = c_number_u / convert_p
asnumber = function(s) return s and lpegmatch(p_number, s) or 0 end
asnumber_r = function(s) return s and lpegmatch(p_number_r, s) or 0 end
+ asnumber_p = function(s) return s and lpegmatch(p_number_p, s) or 0 end
asnumber_x = function(s) return s and lpegmatch(p_number_x, s) or 0 end
asnumber_y = function(s) return s and lpegmatch(p_number_y, s) or 0 end
asnumber_vx = function(s) return s and lpegmatch(p_number_vx,s) or 0 end
@@ -483,8 +490,8 @@ local colorcomponents, withcolor, thecolor, usedcolors do
local f_rgb = formatters[' withcolor svgcolor(%.3N,%.3N,%.3N)']
local f_cmyk = formatters[' withcolor svgcmyk(%.3N,%.3N,%.3N,%.3N)']
local f_gray = formatters[' withcolor svggray(%.3N)']
- local f_rgba = formatters[' withcolor svgcolor(%.3N,%.3N,%.3N) withtransparency (2,1-%.3N)']
- local f_graya = formatters[' withcolor svggray(%.3N) withtransparency (2,1-%.3N)']
+ local f_rgba = formatters[' withcolor svgcolor(%.3N,%.3N,%.3N) withopacity %.3N']
+ local f_graya = formatters[' withcolor svggray(%.3N) withopacity %.3N']
local f_name = formatters[' withcolor "%s"']
local f_svgrgb = formatters['svgcolor(%.3N,%.3N,%.3N)']
local f_svgcmyk = formatters['svgcmyk(%.3N,%.3N,%.3N,%.3N)']
@@ -513,6 +520,13 @@ local colorcomponents, withcolor, thecolor, usedcolors do
local p_left = P("(")
local p_right = P(")")
local p_a = P("a")^-1
+ local p_r_a_color = p_left
+ * (p_fraction * p_separator^-1)^-3
+ * p_absolute^0
+ * p_right
+ local p_c_k_color = p_left
+ * (p_absolute + p_separator^-1)^-4
+ * p_right
local p_h_a_color = p_left
* p_angle
* p_separator * p_percent
@@ -541,11 +555,11 @@ local colorcomponents, withcolor, thecolor, usedcolors do
end
end
+ P("rgb") * p_a
- * p_left * (p_fraction + p_separator)^-3 * (p_absolute + p_separator)^0 * p_right / function(r,g,b,a)
+ * p_r_a_color / function(r,g,b,a)
return "rgb", r or 0, g or 0, b or 0, a or false
end
+ P("cmyk")
- * p_left * (p_absolute + p_separator)^0 * p_right / function(c,m,y,k)
+ * p_c_k_color / function(c,m,y,k)
return "cmyk", c or 0, m or 0, y or 0, k or 0
end
+ P("hsl") * p_a
@@ -634,7 +648,7 @@ local colorcomponents, withcolor, thecolor, usedcolors do
if not what then
local t = triplets[color]
if t then
- s1, s3, s3 = t[1], t[2], t[3]
+ s1, s2, s3 = t[1], t[2], t[3]
what = "rgb"
end
end
@@ -648,7 +662,6 @@ local colorcomponents, withcolor, thecolor, usedcolors do
withcolor = function(color)
local what, s1, s2, s3, s4 = validcolor(color)
- -- print(color,what, s1, s2, s3, s4)
if what == "rgb" then
if s4 then
if s1 == s2 and s1 == s3 then
@@ -1296,6 +1309,14 @@ local handletransform, handleviewbox do
end
end
+ handletransformstring = function(t)
+ if t then
+ noftransforms = 0
+ lpegmatch(p_transform,t)
+ return noftransforms > 0 and concat(transforms,"",1,noftransforms)
+ end
+ end
+
handleviewbox = function(v)
if v then
local x, y, w, h = lpegmatch(p_fournumbers,v)
@@ -1398,6 +1419,20 @@ do
-- ["vkern"] = true,
}
+ local usetags = {
+ ["circle"] = true,
+ ["ellipse"] = true,
+ ["g"] = true,
+ ["image"] = true,
+ ["line"] = true,
+ ["path"] = true,
+ ["polygon"] = true,
+ ["polyline"] = true,
+ ["rect"] = true,
+ -- ["text"] = true,
+ -- ["tspan"] = true,
+ }
+
local pathtracer = {
["stroke"] = "darkred",
["stroke-opacity"] = ".5",
@@ -1505,17 +1540,42 @@ do
-- We can have root in definitions and then do a metatable lookup but use
-- is not used that often I guess.
- local function locate(id)
+ local function locate(id,c)
+ if id == none then
+ return
+ end
local res = definitions[id]
+ local ref
if res then
return res
end
- local ref = gsub(id,"^url%(#(.-)%)$","%1")
- local ref = gsub(ref,"^#","")
+ ref = gsub(id,"^url%(#(.-)%)$","%1")
+ ref = gsub(ref,"^#","")
-- we can make a fast id lookup
- local res = xmlfirst(root,"**[@id='"..ref.."']")
+ res = xmlfirst(root,"**[@id='"..ref.."']")
if res then
definitions[id] = res
+ return res
+ end
+ -- we expect resource paths to be specified but for now we want
+ -- them on the same path .. we could use the url splitter .. todo
+ ref = url.hashed(id)
+ if not ref.nosheme and ref.scheme == "file" then
+ local filename = ref.filename
+ local fragment = ref.fragment
+ if filename and filename ~= "" then
+ if lfs.isfile(filename) then
+ report("loading use file: %s",filename)
+ local root = xml.load(filename)
+ res = xmlfirst(root,"**[@id='"..fragment.."']")
+ if res then
+ xmlinheritattributes(res,c) -- tricky
+ setmetatableindex(res.at,c.at)
+ definitions[id] = res
+ return res
+ end
+ end
+ end
end
return res
end
@@ -1531,7 +1591,7 @@ do
local spec = definitions[clippath] or locate(clippath)
- -- do we really need thsi crap
+ -- do we really need this crap
if not spec then
local index = match(clippath,"(%d+)")
if index then
@@ -1577,12 +1637,16 @@ do
-- break
elseif tg == "path" then
local ca = c.at
- local d = ca.d
+ local d = rawget(ca,"d")
if d then
local p = grabpath(d)
p.evenodd = ca["clip-rule"] == "evenodd"
p.close = true
- return p, clippath
+local transform = rawget(ca,"transform")
+if transform then
+ transform = handletransformstring(transform)
+end
+ return p, clippath, transform
else
return
end
@@ -1592,19 +1656,36 @@ do
end
end
- local s_shade_linear = ' withshademethod "linear" '
- local s_shade_circular = ' withshademethod "circular" '
- local f_shade_step = formatters['withshadestep ( withshadefraction %N withshadecolors(%s,%s) )']
- local f_shade_one = formatters['withprescript "sh_center_a=%N %N"']
- local f_shade_two = formatters['withprescript "sh_center_b=%N %N"']
-
- local f_color = formatters[' withcolor "%s"']
- local f_opacity = formatters[' withtransparency (2,%N)']
- local f_pen = formatters[' withpen pencircle scaled %N']
+ local s_shade_linear = ' withshademethod "linear" '
+ local s_shade_circular = ' withshademethod "circular" '
+ local f_color = formatters[' withcolor "%s"']
+ local f_opacity = formatters[' withopacity %N']
+ local f_pen = formatters[' withpen pencircle scaled %N']
+
+ local f_shade_step = formatters['withshadestep ( withshadefraction %N withshadecolors (%s,%s) )']
+ local f_shade_step_opacity = formatters['withshadestep ( withshadefraction %N withshadecolors (%s,%s) withshadeopacity %N )']
+ local f_shade_radius = formatters['withshaderadius (%N,%N) ']
+ local f_shade_center_one = formatters['withshadecenterone (%N,%N)']
+ local f_shade_center_two = formatters['withshadecentertwo (%N,%N)']
+ local f_shade_center_one_f = formatters['withshadecenteronefraction (%N,%N)']
+ local f_shade_center_two_f = formatters['withshadecentertwofraction (%N,%N)']
+ local f_shade_center_f = formatters['withshadecenterfraction (%N,%N)']
+ local f_shade_radius_f = formatters['withshaderadiusfraction %N']
-- todo: gradient unfinished
-- todo: opacity but first we need groups in mp
+ -- this is rather hard to deal with because browsers differ (at the time of writing)
+ -- and what they show on screen comes out different (or not at all) in print
+
+ -- todo: gradientUnits = "userSpaceOnUse" : use units instead of ratios
+
+ -- spreadMethod = "pad" : default
+ -- spreadMethod = "repeat" : crap
+ -- spreadMethod = "reflect" : crap
+
+ -- stop-opacity = "0" : strange, just use steps for that
+
local function gradient(id)
local spec = definitions[id] -- no locate !
if spec then
@@ -1620,10 +1701,10 @@ do
local x2 = rawget(a,"x2")
local y2 = rawget(a,"y2")
if x1 and y1 then
- n = n + 1 ; shade[n] = f_shade_one(asnumber_vx(x1),asnumber_vy(y1))
+ n = n + 1 ; shade[n] = f_shade_center_one_f(asnumber_p(x1),1-asnumber_p(y1))
end
if x2 and y2 then
- n = n + 1 ; shade[n] = f_shade_one(asnumber_vx(x2),asnumber_vy(y2))
+ n = n + 1 ; shade[n] = f_shade_center_two_f(asnumber_p(x2),1-asnumber_p(y2))
end
--
elseif kind == "radialGradient" then
@@ -1636,10 +1717,13 @@ do
local fy = rawget(a,"fy") -- focal points
--
if cx and cy then
- -- todo
+ n = n + 1 ; shade[n] = f_shade_center_f(asnumber_p(cx),1-asnumber_p(cy))
+ end
+ if fx and fy then
+ n = n + 1 ; shade[n] = f_shade_center_one_f(asnumber_p(fx),1-asnumber_p(fy))
end
if r then
- -- todo
+ n = n + 1 ; shade[n] = f_shade_radius_f(asnumber_p(r))
end
if fx and fy then
-- todo
@@ -1657,29 +1741,30 @@ do
local a = c.at
local offset = rawget(a,"offset")
local colorb = rawget(a,"stop-color")
- local opacity = rawget(a,"stop-opacity")
- if colorb then
- colorb = thecolor(colorb)
- end
+ -- local opacity = rawget(a,"stop-opacity") -- not in pdf for steps
if not colora then
colora = colorb
end
-- what if no percentage
-
- local fraction = offset and asnumber_r(offset)
+ local fraction = offset and asnumber_r(offset) -- asnumber_p ?
if not fraction then
-- offset = tonumber(offset)
-- for now
- fraction = xmlcount(spec,"/stop")/100
+ fraction = xmlcount(spec,"/stop")/100 -- asnumber_p ?
end
- if colora and colorb and color_a ~= "" and color_b ~= "" then
- n = n + 1 ; shade[n] = f_shade_step(fraction,colora,colorb)
+ if colora and colorb and colora ~= "" and colorb ~= "" then
+ n = n + 1
+ -- if opacity then
+ -- shade[n] = f_shade_step_opacity(fraction,thecolor(colora),thecolor(colorb),asnumber(o))
+ -- else
+ shade[n] = f_shade_step(fraction,thecolor(colora),thecolor(colorb))
+ -- end
end
colora = colorb
end
- return concat(shade," ")
+ return concat(shade,"\n ")
end
end
@@ -1706,8 +1791,9 @@ do
o = nil
elseif o then
o = asnumber_r(o)
- if o and o ~= 1 then
- o = f_opacity(1-o)
+-- if o and o ~= 0 then
+ if o then
+ o = f_opacity(o)
else
o = nil
end
@@ -1716,29 +1802,35 @@ do
end
local s_opacity_start = s_draw_image_start
- local f_opacity_content = formatters["setgroup currentpicture to boundingbox currentpicture withtransparency (1,%N);"]
+ local f_opacity_content = formatters["setgroup currentpicture to boundingbox currentpicture withopacity %N;"]
local s_opacity_stop = s_draw_image_stop
local function sharedopacity(at)
local o = at["opacity"]
if o and o ~= "none" then
o = asnumber_r(o)
- if o and o ~= 1 then
- return s_opacity_start, f_opacity_content(1-o), s_opacity_stop
+-- if o and o ~= 1 then
+ if o then
+ return s_opacity_start, f_opacity_content(o), s_opacity_stop
end
end
end
+ -- it looks like none and transparent are both used (mozilla examples)
+
local function fillproperties(fill,at,opacity)
local c = c ~= "none" and (gradient(fill) or withcolor(fill)) or nil
local o = at["fill-opacity"] or (opacity and at["opacity"])
if o and o ~= "none" then
o = asnumber_r(o)
- if o == 1 then
- return c
- elseif o then
- return c, f_opacity(1-o), o == 0
+-- if o == 1 then
+-- return c
+-- else
+ if o then
+ return c, f_opacity(o), o == 0 -- hm this check should be: o == 1
end
+ elseif fill == "transparent" then
+ return nil, f_opacity(1), false -- o == 1 -- hm this check should be: o == 1
end
return c
end
@@ -1817,7 +1909,7 @@ do
function handlers.use(c)
local at = c.at
local id = rawget(at,"href") or rawget(at,"xlink:href") -- better a rawget
- local res = locate(id)
+ local res = locate(id,c)
if res then
-- width height ?
uselevel = uselevel + 1
@@ -1839,7 +1931,12 @@ do
at["transform"] = false
-- at["clip-path"] = false
- process(res,"/*")
+ local tg = res.tg
+ if usetags[tg] then
+ process(res,".")
+ else
+ process(res,"/*")
+ end
at["transform"] = _transform
-- at["clip-path"] = _clippath
@@ -1869,26 +1966,19 @@ do
local f_do_fill = f_do_fill_c
local f_eo_fill = f_eo_fill_c
local f_no_fill = f_no_fill_c
--- local s_clip_start = 'draw image ('
--- local f_clip_stop_c = formatters[') ; clip currentpicture to (%s..cycle) ;']
--- local f_clip_stop_l = formatters[') ; clip currentpicture to (%s--cycle) ;']
--- local f_clip_stop = f_clip_stop_c
--- local f_eoclip_stop_c = formatters[') ; eoclip currentpicture to (%s..cycle) ;']
--- local f_eoclip_stop_l = formatters[') ; eoclip currentpicture to (%s--cycle) ;']
--- local f_eoclip_stop = f_eoclip_stop_c
local s_clip_start = 'save p ; picture p ; p := image ('
- local f_clip_stop_c = formatters[') ; clip p to (%s..cycle) ; draw p ;']
- local f_clip_stop_l = formatters[') ; clip p to (%s--cycle) ; draw p ;']
+ local f_clip_stop_c = formatters[') ; clip p to closedcurve(%s) %s ; draw p ;']
+ local f_clip_stop_l = formatters[') ; clip p to closedlines(%s) %s ; draw p ;']
local f_clip_stop = f_clip_stop_c
- local f_eoclip_stop_c = formatters[') ; eoclip p to (%s..cycle) ; draw p ;']
- local f_eoclip_stop_l = formatters[') ; eoclip p to (%s--cycle) ; draw p ;']
+ local f_eoclip_stop_c = formatters[') ; eoclip p to closedcurve(%s) %s ; draw p ;']
+ local f_eoclip_stop_l = formatters[') ; eoclip p to closedlines(%s) %s ; draw p ;']
local f_eoclip_stop = f_eoclip_stop_c
-- could be shared and then beginobject | endobject
local function flushobject(object,at,c,o)
local btransform, etransform = handletransform(at)
- local cpath = handleclippath(at)
+ local cpath, _, ctransform = handleclippath(at)
if cpath then
r = r + 1 ; result[r] = s_clip_start
@@ -1921,7 +2011,7 @@ do
else
f_done = f_done and f_eoclip_stop_l or f_clip_stop_l
end
- r = r + 1 ; result[r] = f_done(cpath[1])
+ r = r + 1 ; result[r] = f_done(cpath[1],ctransform or "")
end
end
@@ -1985,10 +2075,11 @@ do
local refy = rawget(at,"refY")
local width = rawget(at,"markerWidth")
local height = rawget(at,"markerHeight")
+ local units = rawget(at,"markerUnits") -- no parentat["stroke-width"], bad for m4mbo
local view = rawget(at,"viewBox")
local orient = rawget(at,"orient")
-- local ratio = rawget(at,"preserveAspectRatio")
- local units = asnumber(at["markerUnits"] or parentat["stroke-width"]) or 1
+ local units = units and asnumber(units) or 1
local angx = 0
local angy = 0
@@ -2148,7 +2239,7 @@ do
local stroke = at["stroke"] or "none"
local btransform, etransform = handletransform(at)
- local cpath = handleclippath(at)
+ local cpath, _, ctransform = handleclippath(at)
if cpath then
r = r + 1 ; result[r] = s_clip_start
@@ -2218,7 +2309,7 @@ do
end
if cpath then
- r = r + 1 ; result[r] = (cpath.evenodd and f_eoclip_stop or f_clip_stop)(cpath[1])
+ r = r + 1 ; result[r] = (cpath.evenodd and f_eoclip_stop or f_clip_stop)(cpath[1],ctransform)
end
end
@@ -2446,7 +2537,7 @@ do
end
if cpath then
- r = r + 1 ; result[r] = f_clip_stop(cpath[1])
+ r = r + 1 ; result[r] = f_clip_stop(cpath[1],"")
end
end
@@ -2492,7 +2583,7 @@ do
y = y and asnumber_vy(y) or 0
nofimages = nofimages + 1
local name = "temp-svg-image-" .. nofimages .. "." .. kind
- local data = mime.decode("base64")(data)
+ local data = basexx.decode64(data)
io.savedata(name,data)
if not w or not h then
local info = graphics.identifiers[kind](data,"string")
@@ -2538,7 +2629,7 @@ do
local at = c.at
local btransform, etransform, transform = handletransform(at)
- local cpath, clippath = handleclippath(at)
+ local cpath, clippath, ctransform = handleclippath(at)
if cpath then
r = r + 1 ; result[r] = s_clip_start
@@ -2569,7 +2660,7 @@ do
else
f_done = f_done and f_eoclip_stop_l or f_clip_stop_l
end
- r = r + 1 ; result[r] = f_done(cpath[1])
+ r = r + 1 ; result[r] = f_done(cpath[1],ctransform or "")
end
end
@@ -2590,31 +2681,31 @@ do
do
- local s_startlayer = "\\svgstartlayer "
- local s_stoplayer = "\\svgstoplayer "
- local f_setlayer = formatters["\\svgsetlayer{%N}{%N}"] -- we need a period
- local f_colored = formatters["\\svgcolored{%.3N}{%.3N}{%.3N}{"]
- local f_poscode = formatters["\\svgposcode{%N}{%N}{%s}"]
- local f_poschar = formatters["\\svgposchar{%N}{%N}{%s}"]
- local f_posspace = formatters["\\svgposspace{%N}{%N}"]
- local f_coder = formatters["\\svgcode{%s}"]
- local f_char = formatters["\\svgchar{%s}"]
- local s_space = "\\svgspace "
- local f_scaled = formatters["\\svgscaled{%0.6f}{%s}{%s}{%s}"] -- we need a period
- local f_hashed = formatters["\\svghashed{%s}"]
-
- local p_texescape = lpegpatterns.texescape
+ local s_start = "\\svgstart "
+ local s_stop = "\\svgstop "
+ local f_set = formatters["\\svgset{%N}{%N}"] -- we need a period
+ local f_colored = formatters["\\svgcolor{%.3N}{%.3N}{%.3N}{"]
+ local f_poscode = formatters["\\svgpcode{%N}{%N}{%s}"]
+ local f_poschar = formatters["\\svgpchar{%N}{%N}{%s}"]
+ local f_posspace = formatters["\\svgpspace{%N}{%N}"]
+ local f_code = formatters["\\svgcode{%s}"]
+ local f_char = formatters["\\svgchar{%s}"]
+ local s_space = "\\svgspace "
+ local f_scaled = formatters["\\svgfont{%0.6f}{%s}{%s}{%s}"] -- we need a period
+ local f_hashed = formatters["\\svghashed{%s}"]
+
+ ----- p_texescape = lpegpatterns.texescape
local anchors = {
["start"] = "drt",
- ["end"] = "dflt",
+ ["end"] = "dlft",
["middle"] = "d",
}
-- we can now just use the lmt maptext feature
- local f_text_normal_svg = formatters['(textext.%s("%s") shifted (%N,%N))']
- local f_text_simple_svg = formatters['textext.%s("%s")']
+ local f_text_normal_svg = formatters['(onetimetextext.%s("%s") shifted (%N,%N))']
+ local f_text_simple_svg = formatters['onetimetextext.%s("%s")']
local f_mapped_normal_svg = formatters['(svgtext("%s") shifted (%N,%N))']
local f_mapped_simple_svg = formatters['svgtext("%s")']
@@ -2690,17 +2781,18 @@ do
if c.special then
return nil
end
- local dt = c.dt
- local nt = #dt
- local at = c.at
- local tg = c.tg
- local ax = rawget(at,"x")
- local ay = rawget(at,"y")
- local v_fill = at["fill"]
- local v_family = at["font-family"]
- local v_style = at["font-style"]
- local v_weight = at["font-weight"]
- local v_size = at["font-size"]
+ local dt = c.dt
+ local nt = #dt
+ local at = c.at
+ local tg = c.tg
+ local ax = rawget(at,"x")
+ local ay = rawget(at,"y")
+ local v_fill = at["fill"]
+ local v_family = at["font-family"]
+ local v_style = at["font-style"]
+ local v_weight = at["font-weight"]
+ local v_size = at["font-size"]
+ local v_lineheight = at["line-height"]
--
ax = ax and asnumber_vx(ax) or x
ay = ay and asnumber_vy(ay) or y
@@ -2721,12 +2813,23 @@ do
--
usedfonts[v_family][v_weight][v_style] = true
--
+ local lh = v_lineheight and asnumber_vx(v_lineheight) or false
+ --
ax = ax - x
ay = ay - y
--
local usedsize = v_size or defaultsize
local usedscale = usedsize / defaultsize
--
+-- todo: rotate : list of numbers
+-- todo: lengthAdjust : spacing|spacingAndGlyphs
+-- todo: textLength : scale to width
+-- toto: font-size-adjust
+-- toto: font-stretch
+-- letter-spacing
+-- word-spacing
+-- writing-mode:lr-tb
+ --
-- local useddelta = d_x ~= 0 or d_y ~= 0 or false
-- if useddelta then
-- dx = validdelta(usedscale,dx)
@@ -2758,20 +2861,18 @@ do
end
end
--
+ local hasa = ax ~= 0 or ay ~= 0
+ if hasa then
+ -- we abuse the fact that flushing layers can be nested
+ t[#t+1] = f_set(ax or 0,ay or 0)
+ t[#t+1] = "{"
+ end
for i=1,nt do
local di = dt[i]
if type(di) == "table" then
-- when x or y then absolute else inline
if #di.dt > 0 then
- t[#t+1] = f_setlayer(ax,ay)
- t[#t+1] = "{"
- local ok = collect(tg,t,di,x,y,usedsize,usedscale,v_family)
- if not ok then
- t[#t] = nil
- t[#t] = nil
- else
- t[#t+1] = "}"
- end
+ collect(tg,t,di,x,y,usedsize,usedscale,v_family)
end
else
-- check for preserve
@@ -2785,44 +2886,57 @@ do
if svghash then
-- dx dy
di = f_hashed(svghash[di])
- elseif tx or ty or tdx or tdy then
- local txi, tyi, tdxi, tdyi
- for i=1,#chars do
- txi = tx and (tx [i] or txi )
- tyi = ty and (ty [i] or tyi )
- tdxi = tdx and (tdx[i] or tdxi) or 0
- tdyi = tdy and (tdy[i] or tdyi) or 0
- local dx = (txi and (txi - x) or 0) + tdxi
- local dy = (tyi and (tyi - y) or 0) + tdyi
- local ci = chars[i]
- if ci == " " then
- chars[i] = f_posspace(dx, dy)
- elseif sensitive[ci] then
- chars[i] = f_poscode(dx, dy, utfbyte(ci))
- else
- chars[i] = f_poschar(dx, dy, ci)
- end
- end
- di = "{" .. concat(chars) .. "}"
else
- -- this needs to be texescaped ! and even quotes and newlines
- -- or we could register it but that's a bit tricky as we nest
- -- and don't know what we can expect here
- -- di = lpegmatch(p_texescape,di) or di
- for i=1,#chars do
- local ci = chars[i]
- if ci == " " then
- chars[i] = s_space
- elseif sensitive[ci] then
- chars[i] = f_code(utfbyte(chars[i]))
- else
- chars[i] = f_char(ci)
+ if tx or ty or tdx or tdy then
+ local txi, tyi, tdxi, tdyi
+ for i=1,#chars do
+ txi = tx and (tx [i] or txi )
+ tyi = ty and (ty [i] or tyi )
+ tdxi = tdx and (tdx[i] or tdxi) or 0
+ tdyi = tdy and (tdy[i] or tdyi) or 0
+ local dx = (txi and (txi - x) or 0) + tdxi
+ local dy = (tyi and (tyi - y) or 0) + tdyi
+ local ci = chars[i]
+ if ci == " " then
+ chars[i] = f_posspace(dx, dy)
+ elseif sensitive[ci] then
+ chars[i] = f_poscode(dx, dy, utfbyte(ci))
+ else
+ chars[i] = f_poschar(dx, dy, ci)
+ end
end
+ di = "{" .. concat(chars) .. "}"
+ t[#t+1] = di
+ else
+ -- this needs to be texescaped ! and even quotes and newlines
+ -- or we could register it but that's a bit tricky as we nest
+ -- and don't know what we can expect here
+ -- di = lpegmatch(p_texescape,di) or di
+ for i=1,#chars do
+ local ci = chars[i]
+ if ci == " " then
+ chars[i] = s_space
+ elseif sensitive[ci] then
+ chars[i] = f_code(utfbyte(chars[i]))
+ else
+ chars[i] = f_char(ci)
+ -- chars[i] = ci
+ end
+ end
+ di = concat(chars)
+ t[#t+1] = di
end
- di = concat(chars)
end
- t[#t+1] = di
end
+ if hasa then
+ if t[#t] == "{" then
+ t[#t] = nil
+ t[#t] = nil
+ else
+ t[#t+1] = "}"
+ end
+ end
+
end
--
if ecolored then
@@ -2892,13 +3006,13 @@ do
local ndy = #tdy
--
local t = { }
- t[#t+1] = s_startlayer
+ t[#t+1] = s_start
if nx > 1 or ny > 1 or ndx > 1 or ndy > 1 then
collect(tg,t,c,x,y,defaultsize,1,"serif",tx,ty,tdx,tdy)
else
collect(tg,t,c,x,y,defaultsize,1,"serif")
end
- t[#t+1] = s_stoplayer
+ t[#t+1] = s_stop
t = concat(t)
if x == 0 and y == 0 then
t = f_text_simple_svg(anchor,t)
@@ -3093,7 +3207,12 @@ do
normalize,
specification.remap
)
- if trace_result then
+ if trace_result == "file" then
+ io.savedata(
+ tex.jobname .. "-svg-to-mp.tex",
+ "\\startMPpage[instance=doublefun]\n" .. concat(result,"\n") .. "\n\\stopMPpage\n"
+ )
+ elseif trace_result then
report("result graphic:\n %\n t",result)
end
if usedcolors and next(usedcolors) then
diff --git a/tex/context/base/mkxl/node-aux.lmt b/tex/context/base/mkxl/node-aux.lmt
index d952ec41b..27f248c58 100644
--- a/tex/context/base/mkxl/node-aux.lmt
+++ b/tex/context/base/mkxl/node-aux.lmt
@@ -56,6 +56,7 @@ local nextglyph = traversers.glyph
local flush_node = nuts.flush
local flush_list = nuts.flush_list
local hpack_nodes = nuts.hpack
+local vpack_nodes = nuts.vpack
local unset_attribute = nuts.unset_attribute
local first_glyph = nuts.first_glyph
local copy_node = nuts.copy
@@ -394,3 +395,6 @@ do
end
end
+
+function nodes.hpack(h,...) return tonode(hpack_nodes(tonut(h),...)) end
+function nodes.vpack(h,...) return tonode(vpack_nodes(tonut(h),...)) end
diff --git a/tex/context/base/mkxl/node-met.lmt b/tex/context/base/mkxl/node-met.lmt
index a3f02d709..0186f2860 100644
--- a/tex/context/base/mkxl/node-met.lmt
+++ b/tex/context/base/mkxl/node-met.lmt
@@ -65,81 +65,57 @@ end
-- We start with some helpers and provide all relevant basic functions in the
-- node namespace as well.
-nodes = nodes or { }
-local nodes = nodes
-
-local nodecodes = nodes.nodecodes
-
-nodes.tostring = node.tostring or tostring
-nodes.copy = node.copy
-nodes.copy_node = node.copy
-nodes.copy_list = node.copy_list
-nodes.delete = node.delete
-nodes.dimensions = node.dimensions
-nodes.rangedimensions = node.rangedimensions
-nodes.end_of_math = node.end_of_math
-nodes.flush = node.flush_node
-nodes.flush_node = node.flush_node
-nodes.flush_list = node.flush_list
-nodes.free = node.free
-nodes.insert_after = node.insert_after
-nodes.insert_before = node.insert_before
-nodes.hpack = node.hpack
-nodes.new = node.new
-nodes.tail = node.tail
-nodes.traverse = node.traverse
-nodes.traverse_id = node.traverse_id
-nodes.traverse_char = node.traverse_char
-nodes.traverse_glyph = node.traverse_glyph
-nodes.traverse_list = node.traverse_list
-nodes.slide = node.slide
-nodes.vpack = node.vpack
-nodes.fields = node.fields
-nodes.is_node = node.is_node
-nodes.setglue = node.setglue
-nodes.uses_font = node.uses_font
-
-nodes.first_glyph = node.first_glyph
-nodes.has_glyph = node.has_glyph or node.first_glyph
-
-nodes.current_attributes = node.current_attributes or node.current_attr
-nodes.has_field = node.has_field
-nodes.last_node = node.last_node
-nodes.usedlist = node.usedlist
-nodes.protrusion_skippable = node.protrusion_skippable
-nodes.check_discretionaries = node.check_discretionaries
-nodes.write = node.write
-nodes.flatten_discretionaries = node.flatten_discretionaries
-
-nodes.count = node.count
-nodes.length = node.length
-
-nodes.has_attribute = node.has_attribute
-nodes.set_attribute = node.set_attribute
-nodes.find_attribute = node.find_attribute
-nodes.unset_attribute = node.unset_attribute
-
-nodes.protect_glyph = node.protect_glyph
-nodes.protect_glyphs = node.protect_glyphs
-nodes.unprotect_glyph = node.unprotect_glyph
-nodes.unprotect_glyphs = node.unprotect_glyphs
-nodes.kerning = node.kerning
-nodes.ligaturing = node.ligaturing
-nodes.hyphenating = node.hyphenating
-nodes.mlist_to_hlist = node.mlist_to_hlist
-
-nodes.effective_glue = node.effective_glue
-nodes.getglue = node.getglue
-nodes.setglue = node.setglue
-nodes.is_zero_glue = node.is_zero_glue
-
-nodes.tonode = function(n) return n end
-nodes.tonut = function(n) return n end
+nodes = nodes or { }
+local nodes = nodes
+
+local nodecodes = nodes.nodecodes
+
+nodes.copy = node.copy
+nodes.copy_list = node.copy_list
+nodes.copy_node = node.copy
+nodes.current_attributes = node.current_attributes
+nodes.remove = node.remove
+nodes.fields = node.fields
+nodes.flush = node.flush_node
+nodes.flush_list = node.flush_list
+nodes.flush_node = node.flush_node
+nodes.get_attribute = node.get_attribute
+nodes.has_attribute = node.has_attribute
+nodes.has_field = node.has_field
+nodes.insert_after = node.insert_after
+nodes.insert_before = node.insert_before
+nodes.is_node = node.is_node
+nodes.new = node.new
+nodes.set_attribute = node.set_attribute
+nodes.tail = node.tail
+nodes.tostring = node.tostring or tostring
+nodes.traverse = node.traverse
+nodes.traverse_id = node.traverse_id
+nodes.unset_attribute = node.unset_attribute
+nodes.write = node.write
+nodes.usedlist = node.usedlist
+
+nodes.get_properties_table = node.get_properties_table
+nodes.getproperty = node.getproperty
+nodes.setproperty = node.setproperty
+
+-- nodes.usedlist",
+-- nodes.inuse",
+-- nodes.instock",
+-- nodes.type",
+-- nodes.types",
+-- nodes.subtypes",
+-- nodes.values",
+-- nodes.id",
+-- nodes.show",
+
+-- nodes.tonode = function(n) return n end
+-- nodes.tonut = function(n) return n end
-- These are never used in \CONTEXT, only as a gimmick in node operators
-- so we keep them around.
--
--- Fro nwo I keep them in \LMTX\ but they will go away!
+-- Fot now I keep them in \LMTX\ but they will go away!
local n_getfield = node.getfield
local n_getattr = node.get_attribute
@@ -324,10 +300,6 @@ function nodes.concat(list) -- consider tail instead of slide
return head, tail
end
-function nodes.reference(n)
- return n and tonut(n) or "<none>"
-end
-
-- Here starts an experiment with metatables. Of course this only works with nodes
-- wrapped in userdata with a metatable.
--
@@ -559,29 +531,9 @@ metatable.__unm = function(head)
return first
end
--- see node-nut.lua for more info on going nuts
-
--- if not gonuts then
---
--- local nuts = { }
--- nodes.nuts = nuts
---
--- local function dummy(f) return f end
---
--- nodes.vianuts = dummy
--- nodes.vianodes = dummy
---
--- for k, v in next, nodes do
--- if type(v) == "function" then
--- nuts[k] = v
--- end
--- end
---
--- end
-
--- also handy
+-- also handy n.. do we still need this ... needs an update anyway
-local tonode = nodes.tonode
+local tonode = node.direct.tonode
local whatsit_code = nodecodes.whatsit
local getfields = node.fields
local sort = table.sort
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index 7ef087178..b9af5551d 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -82,6 +82,7 @@ local nuts = {
getdirection = direct.getdirection,
getdisc = direct.getdisc,
getdiscretionary = direct.getdisc,
+ getdiscpart = direct.getdiscpart,
getexpansion = direct.getexpansion,
getfam = direct.getfam,
getfield = direct.getfield,
@@ -179,6 +180,7 @@ local nuts = {
setdirection = direct.setdirection,
setdisc = direct.setdisc,
setdiscretionary = direct.setdisc,
+ setdiscpart = direct.setdiscpart,
setexpansion = direct.setexpansion,
setfam = direct.setfam,
setfield = direct.setfield,
diff --git a/tex/context/base/mkxl/spac-hor.mkxl b/tex/context/base/mkxl/spac-hor.mkxl
index f64207a2c..25f469fc5 100644
--- a/tex/context/base/mkxl/spac-hor.mkxl
+++ b/tex/context/base/mkxl/spac-hor.mkxl
@@ -22,6 +22,7 @@
\bitwiseflip \normalizelinemode \parindentskipcode
\bitwiseflip \normalizelinemode \normalizelinecode
\bitwiseflip \normalizelinemode \clipwidthcode
+\bitwiseflip \normalizelinemode \flattendiscretionariescode
\let\v_spac_indentation_current\empty % amount/keyword
diff --git a/tex/context/base/mkxl/strc-lst.mklx b/tex/context/base/mkxl/strc-lst.mklx
index 049a0370e..2046be727 100644
--- a/tex/context/base/mkxl/strc-lst.mklx
+++ b/tex/context/base/mkxl/strc-lst.mklx
@@ -116,17 +116,6 @@
\installcorenamespace {listlocations}
-% \permanent\protected\def\doifelseinlistentry#1%
-% {\ifcsname\??listlocations#1\endcsname
-% \ifnum\lastnamedcs=\structurelistlocation\relax
-% \doubleexpandafter\firstoftwoarguments
-% \else
-% \doubleexpandafter\secondoftwoarguments
-% \fi
-% \else
-% \expandafter\secondoftwoarguments
-% \fi}
-
\permanent\protected\def\doifelseinlistentry#1%
{\unless\ifcsname\??listlocations#1\endcsname
\expandafter\secondoftwoarguments
@@ -236,6 +225,22 @@
\tolerant\def\strc_lists_write_to_nop[#settings]#:#first#second%
{\endgroup} % \strc_lists_inject_nop[][]
+% \starttyping
+% \installstructurelistprocessor{chapter:userdata}
+% {\startlinecorrection[blank]
+% \hfill \inframed{you really need to look at \structurelistuservariable{pagenumber}}%
+% \stoplinecorrection}
+%
+% \starttext
+% \placelist[chapter]
+% \chapter{one}
+% \writebetweenlist[chapter][location=here]{\blank page 4\blank}
+% \writedatatolist[chapter][location=here][pagenumber=4]
+% \writetolist[chapter]{}{It's a test}
+% \chapter{two}
+% \stoptext
+% \stoptyping
+
%D When placing a list either one or a set can be giving. This makes it possible to
%D flush for instance an nested (or merged) table of contents. Keep in mind that
%D placing a list is what we do most (think of tables of contents, figures, etc.\
@@ -320,9 +325,9 @@
\permanent\tolerant\protected\def\definecombinedlist[#tag]#spacer[#list]#spacer[#settings]%
{\definelist[#tag][\c!criterium=\v!local,\c!reference=,\c!alternative=,\c!list={#list},#settings]% inherits from root
- \frozen\instance\setvalue{\e!setup#tag\e!endsetup}{\setupcombinedlist[#tag]}%
- \frozen\instance\setvalue{\e!place#tag}{\placecombinedlist[#tag]}%
- \frozen\instance\setvalue{\e!complete#tag}{\strc_lists_combined_complete[#tag]}}
+ \frozen\instance\defcsname\e!setup#tag\e!endsetup\endcsname{\setupcombinedlist[#tag]}%
+ \frozen\instance\defcsname\e!place#tag\endcsname{\placecombinedlist[#tag]}%
+ \frozen\instance\defcsname\e!complete#tag\endcsname{\strc_lists_combined_complete[#tag]}}
\permanent\tolerant\protected\def\setupcombinedlist[#tag]#spacer[#settings]%
{\ifarguments\or\or
@@ -352,9 +357,9 @@
\installcorenamespace {listpagenumber}
-\setvalue{\??listpagenumber\v!always }{\settrue\c_lists_show_page\settrue\c_lists_has_page}
-\setvalue{\??listpagenumber\v!yes }{\settrue\c_lists_show_page}
-\setvalue{\??listpagenumber\s!realpage}{\settrue\c_lists_show_page\settrue\c_lists_show_realpage}
+\defcsname\??listpagenumber\v!always \endcsname{\settrue\c_lists_show_page\settrue\c_lists_has_page}
+\defcsname\??listpagenumber\v!yes \endcsname{\settrue\c_lists_show_page}
+\defcsname\??listpagenumber\s!realpage\endcsname{\settrue\c_lists_show_page\settrue\c_lists_show_realpage}
\def\strc_lists_process_pagenumber#1%
{\begincsname\??listpagenumber#1\endcsname}
@@ -493,7 +498,7 @@
{\expandafter\normaldef\csname\??structurelistprocessor#tag\endcsname{#meaning}}
\permanent\def\usestructurelistprocessor#tag%
- {\csname\??structurelistprocessor#tag\endcsname}
+ {\begincsname\??structurelistprocessor#tag\endcsname}
\aliased\let\dotaglistlocation\relax
@@ -549,7 +554,7 @@
% example of usage elsewhere:
%
-% \installstructcurelistprocessor{pubs:userdata}
+% \installstructurelistprocessor{pubs:userdata}
% {\clf_listuserdata{\currentlist}\currentlistindex{bibref}}
%D List symbols are used in interactive documents where no numbers are used but
@@ -631,22 +636,22 @@
\fi
\endgroup}
-\letvalue{\??listsymbollabels\s!unknown}\strc_lists_symbol_default
+\letcsname\??listsymbollabels\s!unknown\endcsname\strc_lists_symbol_default
-\setvalue{\??listsymbollabels}% default (empty)
+\defcsname\??listsymbollabels\endcsname % default (empty)
{\listparameter\c!starter
\currentlistentrynumber
\listparameter\c!stopper}
-\setvalue{\??listsymbollabels\v!no}% also default
+\defcsname\??listsymbollabels\v!no\endcsname % also default
{\listparameter\c!starter
\currentlistentrynumber
\listparameter\c!stopper}
-\setvalue{\??listsymbollabels\v!none}% real minimal (as suggested by WS)
+\defcsname\??listsymbollabels\v!none\endcsname % real minimal (as suggested by WS)
{\currentlistentrynumber}
-\setvalue{\??listsymbollabels\v!yes}% auto (use value stored in tuc file)
+\defcsname\??listsymbollabels\v!yes\endcsname % auto (use value stored in tuc file)
{\edef\currentlistlabel{\clf_listlabel\currentlistindex{\currentlistlabel}}%
\leftlabeltext\currentlistlabel
\listparameter\c!starter
@@ -1418,14 +1423,14 @@
\installcorenamespace{listinteractions}
-\letvalue{\??listinteractions\v!number }\v!number
-\letvalue{\??listinteractions\v!sectionnumber}\v!number
-\letvalue{\??listinteractions\v!text }\v!text
-\letvalue{\??listinteractions\v!title }\v!text
-\letvalue{\??listinteractions\v!page }\v!pagenumber
-\letvalue{\??listinteractions\v!pagenumber }\v!pagenumber
-\letvalue{\??listinteractions\v!all }\v!all
-\letvalue{\??listinteractions\v!yes }\v!all
+\letcsname\??listinteractions\v!number \endcsname\v!number
+\letcsname\??listinteractions\v!sectionnumber\endcsname\v!number
+\letcsname\??listinteractions\v!text \endcsname\v!text
+\letcsname\??listinteractions\v!title \endcsname\v!text
+\letcsname\??listinteractions\v!page \endcsname\v!pagenumber
+\letcsname\??listinteractions\v!pagenumber \endcsname\v!pagenumber
+\letcsname\??listinteractions\v!all \endcsname\v!all
+\letcsname\??listinteractions\v!yes \endcsname\v!all
\permanent\def\listboxproperties {\strc_lists_get_reference_attribute}
\permanent\def\listrenderingsetup {\the\t_lists_every_renderingtext}
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 0b90eecba..5399da133 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -195,13 +195,17 @@
\protected\def\strc_formulas_store_number#1#2#3#4#5% ref, todo:str, \sync % todo: title etc (like float)
{\settrue\c_strc_formulas_handle_number
+ \edef\xx{\formulaparameter\c!list}%
\strc_counters_register_component
{formula}%
\setupcurrentformula \formulaparameter \detokenizedformulaparameter
\relax \relax \relax
[\c!name=\v!formula,\s!counter=\v!formula,%
\s!hascaption=\v!yes,\s!hastitle=\v!yes,\s!hasnumber=\v!yes,%\s!haslevel=#6,%
- \c!reference=#1,\c!title=\namedformulaentry,\c!bookmark=]%
+ \c!reference=#1,%
+ \c!title=\namedformulaentry,
+ \c!list=\currentplaceformulalist,
+ \c!bookmark=\currentplaceformulabookmark]%
[#2]%
\glet\namedformulaentry\empty % \relax
\glet#3\m_strc_counters_last_registered_index
@@ -615,14 +619,14 @@
\installcorenamespace{mathdisplayspacemodel}
-\setvalue{\??mathdisplayspacemodel\v!before:1}% old
+\defcsname\??mathdisplayspacemodel\v!before:1\endcsname % old
{\ifx\p_spacebefore\v!none
% nothing
\else
\directvspacing\p_spacebefore
\fi}
-\setvalue{\??mathdisplayspacemodel\v!after:1}% old
+\defcsname\??mathdisplayspacemodel\v!after:1\endcsname % old
{\prevdepth .5\strutdp
\edef\p_spaceafter{\formulaparameter\c!spaceafter}%
\ifx\p_spaceafter\v!none
@@ -631,7 +635,7 @@
\directvspacing\p_spaceafter
\fi}
-\setvalue{\??mathdisplayspacemodel\v!before:2}% old
+\defcsname\??mathdisplayspacemodel\v!before:2\endcsname % old
{\ifx\p_spacebefore\v!none
% nothing
\else
@@ -639,7 +643,7 @@
\fi
\prevdepth-\maxdimen} % texbook pagina 79-80
-\setvalue{\??mathdisplayspacemodel\v!after:2}% old
+\defcsname\??mathdisplayspacemodel\v!after:2\endcsname % old
{\prevdepth\lineheight
\edef\p_spaceafter{\formulaparameter\c!spaceafter}%
\ifx\p_spaceafter\v!none
@@ -648,7 +652,7 @@
\directvspacing\p_spaceafter
\fi}
-\setvalue{\??mathdisplayspacemodel\v!before:3}%
+\defcsname\??mathdisplayspacemodel\v!before:3\endcsname
{% not ok, try \stopformula\par\startformula vs \stopformula\startformula
\let\m_spacebefore\empty
\ifvmode
@@ -684,7 +688,7 @@
\fi
\fi}
-\setvalue{\??mathdisplayspacemodel\v!after:3}%
+\defcsname\??mathdisplayspacemodel\v!after:3\endcsname
{\prevdepth\strutdp % \directvspacing\v!depth
\ifx\p_spaceafter\v!none
% nothing
@@ -696,7 +700,7 @@
\newconditional\c_math_model_four_indeed
-\setvalue{\??mathdisplayspacemodel\v!before:4}%
+\defcsname\??mathdisplayspacemodel\v!before:4\endcsname
{% not ok, try \stopformula\par\startformula vs \stopformula\startformula
\ifvmode
\ifinner
@@ -717,7 +721,7 @@
\csname\??mathdisplayspacemodel\v!before:3\endcsname
\fi}
-\setvalue{\??mathdisplayspacemodel\v!after:4}%
+\defcsname\??mathdisplayspacemodel\v!after:4\endcsname
{\ifconditional\c_math_model_four_indeed
\setfalse\c_math_model_four_indeed
\forcestrutdepth
@@ -785,9 +789,6 @@
\relax
\hsize\displaywidth} % new, else overfull in itemize
-\protected\def\strc_formulas_start_formula#1%
- {\dodoubleempty\strc_formulas_start_formula_indeed[#1]}
-
% \newskip\formulastrutht
% \newskip\formulastrutdp
@@ -798,35 +799,35 @@
%D
%D \typebuffer \getbuffer
-\setvalue{\??formulaoption\v!packed}%
+\defcsname\??formulaoption\v!packed\endcsname
{\c_strc_formulas_space_model\zerocount}
-\setvalue{\??formulaoption\v!tight}%
+\defcsname\??formulaoption\v!tight\endcsname
{\settrue\c_strc_formulas_tight}
-\setvalue{\??formulaoption\v!middle}%
+\defcsname\??formulaoption\v!middle\endcsname
{\d_strc_formulas_display_skip_left \zeropoint
\d_strc_formulas_display_skip_right\zeropoint}
-\setvalue{\??formulaoption\v!depth}%
+\defcsname\??formulaoption\v!depth\endcsname
{\c_strc_formulas_space_model\plusfour}
-\setvalue{\??formulaoption\v!line}%
+\defcsname\??formulaoption\v!line\endcsname
{\ifgridsnapping
\setformulaparameter\c!grid{\v!math:\v!line}%
\fi}
-\setvalue{\??formulaoption\v!halfline}%
+\defcsname\??formulaoption\v!halfline\endcsname
{\ifgridsnapping
\setformulaparameter\c!grid{\v!math:\v!halfline}%
\fi}
-\setvalue{\??formulaoption-\v!line}%
+\defcsname\??formulaoption-\v!line\endcsname
{\ifgridsnapping
\setformulaparameter\c!grid{\v!math:-\v!line}%
\fi}
-\setvalue{\??formulaoption-\v!halfline}%
+\defcsname\??formulaoption-\v!halfline\endcsname
{\ifgridsnapping
\setformulaparameter\c!grid{\v!math:-\v!halfline}%
\fi}
@@ -885,7 +886,12 @@
\enforced\let\breakhere\strc_math_break_here
\to \everymathematics
-\protected\def\strc_formulas_start_formula_indeed[#1][#2]% setting leftskip adaption is slow !
+% \protected\def\strc_formulas_start_formula#1%
+% {\strc_formulas_start_formula_indeed[#1]}
+%
+% \tolerant\protected\def\strc_formulas_start_formula[#1]#*[#2]% setting leftskip adaption is slow !
+
+\tolerant\protected\def\strc_formulas_start_formula#1#:#*[#2]% setting leftskip adaption is slow !
{\ifhmode
\par
\fi
@@ -1207,7 +1213,7 @@
\expandafter\strc_formulas_start_place_nop
\fi[#1]}
-\def\strc_formulas_start_place_yes[#1]%
+\def\strc_formulas_start_place_yes[#1]% todo
{\doifassignmentelse{#1}\strc_formulas_start_place_parameters\strc_formulas_start_place_reference[#1]}
\def\strc_formulas_start_place_nop[#1]%
@@ -1221,13 +1227,20 @@
%\doifelsenextbgroup\strc_formulas_place_yes\strc_formulas_place_nop} % [ref]{}
\strc_formulas_place_nop}
-\def\strc_formulas_start_place_parameters[#1]%
+\mutable\let\currentplaceformulabookmark\empty
+\mutable\let\currentplaceformulalist \empty
+
+\def\strc_formulas_start_place_parameters[#1]% maybe a dedicated setup handler
{\letdummyparameter\c!title \empty
\letdummyparameter\c!reference\empty
+ \letdummyparameter\c!bookmark \empty
+ \letdummyparameter\c!list \empty
\letdummyparameter\c!suffix \empty
\getdummyparameters[#1]%
\edef\currentplaceformulatitle {\dummyparameter\c!title}%
\edef\currentplaceformulareference{\dummyparameter\c!reference}%
+ \edef\currentplaceformulabookmark {\dummyparameter\c!bookmark}%
+ \edef\currentplaceformulalist {\dummyparameter\c!list}%
\edef\currentplaceformulasuffix {\dummyparameter\c!suffix}%
\ifempty\currentplaceformulatitle\else
\normalexpanded{\setformulalistentry{\currentplaceformulatitle}}%
diff --git a/tex/context/base/mkxl/typo-hid.lmt b/tex/context/base/mkxl/typo-hid.lmt
index 9cc77ffac..e3b7567d9 100644
--- a/tex/context/base/mkxl/typo-hid.lmt
+++ b/tex/context/base/mkxl/typo-hid.lmt
@@ -1,6 +1,6 @@
-if not modules then modules = { } end modules ['typo-krn'] = {
+if not modules then modules = { } end modules ['typo-hid'] = {
version = 1.001,
- comment = "companion to typo-krn.mkiv",
+ comment = "companion to typo-hid.mkiv",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
diff --git a/tex/context/base/mkxl/typo-hid.mkxl b/tex/context/base/mkxl/typo-hid.mkxl
index cf9759c85..8ee953cc1 100644
--- a/tex/context/base/mkxl/typo-hid.mkxl
+++ b/tex/context/base/mkxl/typo-hid.mkxl
@@ -1,5 +1,5 @@
%D \module
-%D [ file=typo-krn,
+%D [ file=typo-hid,
%D version=2021.03.15, % based on old code lying around
%D title=\CONTEXT\ Typesetting Macros,
%D subtitle=Hiding,
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index b7ee64864..8987234fe 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 : 2021-03-17 17:43
+-- merge date : 2021-03-20 01:03
do -- begin closure to overcome local limits and interference