diff options
39 files changed, 940 insertions, 687 deletions
diff --git a/context/data/scite/lexers/data/scite-context-data-context.lua b/context/data/scite/lexers/data/scite-context-data-context.lua index 1c74aba9b..46c028941 100644 --- a/context/data/scite/lexers/data/scite-context-data-context.lua +++ b/context/data/scite/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", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "etexversion", "pdftexversion", "xetexversion", "xetexrevision", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "spaceasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vcentergroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "vadjustgroupcode", "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", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathsupdisplay", "mathsupnormal", "mathsupcramped", "mathsubnormal", "mathsubcombined", "mathaxisheight", "startmode", "stopmode", "startnotmode", "stopnotmode", "startmodeset", "stopmodeset", "doifmode", "doifmodeelse", "doifnotmode", "startallmodes", "stopallmodes", "startnotallmodes", "stopnotallmodes", "doifallmodes", "doifallmodeselse", "doifnotallmodes", "startenvironment", "stopenvironment", "environment", "startcomponent", "stopcomponent", "component", "startproduct", "stopproduct", "product", "startproject", "stopproject", "project", "starttext", "stoptext", "startnotext", "stopnotext", "startdocument", "stopdocument", "documentvariable", "setupdocument", "startmodule", "stopmodule", "usemodule", "usetexmodule", "useluamodule", "startTEXpage", "stopTEXpage", "enablemode", "disablemode", "preventmode", "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" }, - ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "doifelsecommandhandler", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "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", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "availablehsize", "localhsize", "setlocalhsize", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifinsetelse", "doifnextcharelse", "doifnextoptionalelse", "doifnextbgroupelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifdimensionelse", "doifnumberelse", "doifnumber", "doifnotnumber", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifinstringelse", "doifassignmentelse", "docheckassignment", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "dowith", "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", "setconstant", "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", "modulonumber", "dividenumber", "getfirstcharacter", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "strut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "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", "uncramped", "cramped", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expdoifelse", "expdoif", "expdoifnot", "expdoifcommonelse", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "carryoverpar", "Umathbotaccent" }, + ["helpers"]={ "startsetups", "stopsetups", "startxmlsetups", "stopxmlsetups", "startluasetups", "stopluasetups", "starttexsetups", "stoptexsetups", "startrawsetups", "stoprawsetups", "startlocalsetups", "stoplocalsetups", "starttexdefinition", "stoptexdefinition", "starttexcode", "stoptexcode", "startcontextcode", "stopcontextcode", "doifsetupselse", "doifsetups", "doifnotsetups", "setup", "setups", "texsetup", "xmlsetup", "luasetup", "directsetup", "doifelsecommandhandler", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "strippedcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "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", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "availablehsize", "localhsize", "setlocalhsize", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifinsetelse", "doifnextcharelse", "doifnextoptionalelse", "doifnextbgroupelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", "doifelsevalue", "doifvalue", "doifnotvalue", "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", "doifdimensionelse", "doifnumberelse", "doifnumber", "doifnotnumber", "doifcommonelse", "doifcommon", "doifnotcommon", "doifinstring", "doifnotinstring", "doifinstringelse", "doifassignmentelse", "docheckassignment", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", "firstofoneargument", "firstoftwoarguments", "secondoftwoarguments", "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", "firstofoneunexpanded", "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", "dofastloopcs", "dowith", "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", "setconstant", "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", "modulonumber", "dividenumber", "getfirstcharacter", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "strut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "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", "uncramped", "cramped", "triggermathstyle", "mathstylefont", "mathsmallstylefont", "mathstyleface", "mathsmallstyleface", "mathstylecommand", "mathpalette", "mathstylehbox", "mathstylevbox", "mathstylevcenter", "mathstylevcenteredhbox", "mathstylevcenteredvbox", "mathtext", "setmathsmalltextbox", "setmathtextbox", "triggerdisplaystyle", "triggertextstyle", "triggerscriptstyle", "triggerscriptscriptstyle", "triggeruncrampedstyle", "triggercrampedstyle", "triggersmallstyle", "triggeruncrampedsmallstyle", "triggercrampedsmallstyle", "triggerbigstyle", "triggeruncrampedbigstyle", "triggercrampedbigstyle", "luaexpr", "expdoifelse", "expdoif", "expdoifnot", "expdoifcommonelse", "expdoifinsetelse", "ctxdirectlua", "ctxlatelua", "ctxsprint", "ctxwrite", "ctxcommand", "ctxdirectcommand", "ctxlatecommand", "ctxreport", "ctxlua", "luacode", "lateluacode", "directluacode", "registerctxluafile", "ctxloadluafile", "luaversion", "luamajorversion", "luaminorversion", "ctxluacode", "luaconditional", "luaexpanded", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "carryoverpar", "Umathbotaccent" },  }
\ No newline at end of file diff --git a/context/data/scite/scite-context-data-context.properties b/context/data/scite/scite-context-data-context.properties index 0de70e9c5..da62440da 100644 --- a/context/data/scite/scite-context-data-context.properties +++ b/context/data/scite/scite-context-data-context.properties @@ -71,109 +71,109 @@ setsystemmode resetsystemmode pushsystemmode popsystemmode booleanmodevalue \  newcount newdimen newskip newmuskip newbox \  newtoks newread newwrite newmarks newinsert \  newattribute newif newlanguage newfamily newfam \ -newhelp then begcsname firstargumentfalse firstargumenttrue \ -secondargumentfalse secondargumenttrue thirdargumentfalse thirdargumenttrue fourthargumentfalse \ -fourthargumenttrue fifthargumentfalse fifthsargumenttrue sixthargumentfalse sixtsargumenttrue \ -doglobal dodoglobal redoglobal resetglobal donothing \ -dontcomplain forgetall donetrue donefalse 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 ruledhfilneg ruledhfillneg normalhfillneg \ -ruledvss ruledvfil ruledvfill ruledvfilneg ruledvfillneg \ -normalvfillneg ruledhbox ruledvbox ruledvtop ruledvcenter \ -ruledhskip ruledvskip ruledkern ruledmskip ruledmkern \ -ruledhglue ruledvglue normalhglue normalvglue ruledpenalty \ -filledhboxb filledhboxr filledhboxg filledhboxc filledhboxm \ -filledhboxy filledhboxk scratchcounter globalscratchcounter scratchdimen \ -globalscratchdimen scratchskip globalscratchskip scratchmuskip globalscratchmuskip \ -scratchtoks globalscratchtoks scratchbox globalscratchbox availablehsize \ -localhsize setlocalhsize nextbox dowithnextbox dowithnextboxcs \ -dowithnextboxcontent dowithnextboxcontentcs scratchwidth scratchheight scratchdepth \ -scratchoffset scratchdistance scratchhsize scratchvsize scratchxoffset \ -scratchyoffset scratchhoffset scratchvoffset scratchxposition scratchyposition \ -scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset scratchcounterone \ -scratchcountertwo scratchcounterthree scratchdimenone scratchdimentwo scratchdimenthree \ -scratchskipone scratchskiptwo scratchskipthree scratchmuskipone scratchmuskiptwo \ -scratchmuskipthree scratchtoksone scratchtokstwo scratchtoksthree scratchboxone \ -scratchboxtwo scratchboxthree scratchnx scratchny scratchmx \ -scratchmy scratchunicode scratchleftskip scratchrightskip scratchtopskip \ -scratchbottomskip doif doifnot doifelse doifinset \ -doifnotinset doifinsetelse doifnextcharelse doifnextoptionalelse doifnextbgroupelse \ -doifnextparenthesiselse doiffastoptionalcheckelse doifundefinedelse doifdefinedelse doifundefined \ -doifdefined doifelsevalue doifvalue doifnotvalue doifnothing \ -doifsomething doifelsenothing doifsomethingelse doifvaluenothing doifvaluesomething \ -doifelsevaluenothing doifdimensionelse doifnumberelse doifnumber doifnotnumber \ -doifcommonelse doifcommon doifnotcommon doifinstring doifnotinstring \ -doifinstringelse doifassignmentelse docheckassignment tracingall tracingnone \ -loggingall removetoks appendtoks prependtoks appendtotoks \ -prependtotoks to endgraf endpar everyendpar \ -reseteverypar finishpar empty null space \ -quad enspace obeyspaces obeylines obeyedspace \ -obeyedline normalspace executeifdefined singleexpandafter doubleexpandafter \ -tripleexpandafter dontleavehmode removelastspace removeunwantedspaces keepunwantedspaces \ -wait writestatus define defineexpandable redefine \ -setmeasure setemeasure setgmeasure setxmeasure definemeasure \ -freezemeasure measure measured installcorenamespace getvalue \ -setvalue setevalue setgvalue setxvalue letvalue \ -letgvalue resetvalue undefinevalue ignorevalue setuvalue \ -setuevalue setugvalue setuxvalue globallet glet \ -udef ugdef uedef uxdef checked \ -unique getparameters geteparameters getgparameters getxparameters \ -forgetparameters copyparameters getdummyparameters dummyparameter directdummyparameter \ -setdummyparameter letdummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter \ -processcommalist processcommacommand quitcommalist quitprevcommalist processaction \ -processallactions processfirstactioninset processallactionsinset unexpanded expanded \ -startexpanded stopexpanded protected protect unprotect \ -firstofoneargument firstoftwoarguments secondoftwoarguments firstofthreearguments secondofthreearguments \ -thirdofthreearguments firstoffourarguments secondoffourarguments thirdoffourarguments fourthoffourarguments \ -firstoffivearguments secondoffivearguments thirdoffivearguments fourthoffivearguments fifthoffivearguments \ -firstofsixarguments secondofsixarguments thirdofsixarguments fourthofsixarguments fifthofsixarguments \ -sixthofsixarguments firstofoneunexpanded gobbleoneargument gobbletwoarguments gobblethreearguments \ -gobblefourarguments gobblefivearguments gobblesixarguments gobblesevenarguments gobbleeightarguments \ -gobbleninearguments gobbletenarguments gobbleoneoptional gobbletwooptionals gobblethreeoptionals \ -gobblefouroptionals gobblefiveoptionals dorecurse doloop exitloop \ -dostepwiserecurse recurselevel recursedepth dofastloopcs dowith \ -newconstant setnewconstant newconditional settrue setfalse \ -setconstant 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 modulonumber \ -dividenumber getfirstcharacter doiffirstcharelse startnointerference stopnointerference \ -twodigits threedigits strut setstrut strutbox \ -strutht strutdp strutwd struthtdp begstrut \ -endstrut lineheight 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 \ -uncramped cramped triggermathstyle mathstylefont mathsmallstylefont \ -mathstyleface mathsmallstyleface mathstylecommand mathpalette mathstylehbox \ -mathstylevbox mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox mathtext \ -setmathsmalltextbox setmathtextbox triggerdisplaystyle triggertextstyle triggerscriptstyle \ -triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle triggeruncrampedsmallstyle \ -triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle luaexpr \ -expdoifelse expdoif expdoifnot expdoifcommonelse expdoifinsetelse \ -ctxdirectlua ctxlatelua ctxsprint ctxwrite ctxcommand \ -ctxdirectcommand ctxlatecommand ctxreport ctxlua luacode \ -lateluacode directluacode registerctxluafile ctxloadluafile luaversion \ -luamajorversion luaminorversion ctxluacode luaconditional luaexpanded \ -startluaparameterset stopluaparameterset luaparameterset definenamedlua obeylualines \ -obeyluatokens startluacode stopluacode startlua stoplua \ -carryoverpar Umathbotaccent  +newhelp then begcsname strippedcsname firstargumentfalse \ +firstargumenttrue secondargumentfalse secondargumenttrue thirdargumentfalse thirdargumenttrue \ +fourthargumentfalse fourthargumenttrue fifthargumentfalse fifthsargumenttrue sixthargumentfalse \ +sixtsargumenttrue doglobal dodoglobal redoglobal resetglobal \ +donothing dontcomplain forgetall donetrue donefalse \ +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 ruledhfilneg ruledhfillneg \ +normalhfillneg ruledvss ruledvfil ruledvfill ruledvfilneg \ +ruledvfillneg normalvfillneg ruledhbox ruledvbox ruledvtop \ +ruledvcenter ruledhskip ruledvskip ruledkern ruledmskip \ +ruledmkern ruledhglue ruledvglue normalhglue normalvglue \ +ruledpenalty filledhboxb filledhboxr filledhboxg filledhboxc \ +filledhboxm filledhboxy filledhboxk scratchcounter globalscratchcounter \ +scratchdimen globalscratchdimen scratchskip globalscratchskip scratchmuskip \ +globalscratchmuskip scratchtoks globalscratchtoks scratchbox globalscratchbox \ +availablehsize localhsize setlocalhsize nextbox dowithnextbox \ +dowithnextboxcs dowithnextboxcontent dowithnextboxcontentcs scratchwidth scratchheight \ +scratchdepth scratchoffset scratchdistance scratchhsize scratchvsize \ +scratchxoffset scratchyoffset scratchhoffset scratchvoffset scratchxposition \ +scratchyposition scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset \ +scratchcounterone scratchcountertwo scratchcounterthree scratchdimenone scratchdimentwo \ +scratchdimenthree scratchskipone scratchskiptwo scratchskipthree scratchmuskipone \ +scratchmuskiptwo scratchmuskipthree scratchtoksone scratchtokstwo scratchtoksthree \ +scratchboxone scratchboxtwo scratchboxthree scratchnx scratchny \ +scratchmx scratchmy scratchunicode scratchleftskip scratchrightskip \ +scratchtopskip scratchbottomskip doif doifnot doifelse \ +doifinset doifnotinset doifinsetelse doifnextcharelse doifnextoptionalelse \ +doifnextbgroupelse doifnextparenthesiselse doiffastoptionalcheckelse doifundefinedelse doifdefinedelse \ +doifundefined doifdefined doifelsevalue doifvalue doifnotvalue \ +doifnothing doifsomething doifelsenothing doifsomethingelse doifvaluenothing \ +doifvaluesomething doifelsevaluenothing doifdimensionelse doifnumberelse doifnumber \ +doifnotnumber doifcommonelse doifcommon doifnotcommon doifinstring \ +doifnotinstring doifinstringelse doifassignmentelse docheckassignment tracingall \ +tracingnone loggingall removetoks appendtoks prependtoks \ +appendtotoks prependtotoks to endgraf endpar \ +everyendpar reseteverypar finishpar empty null \ +space quad enspace obeyspaces obeylines \ +obeyedspace obeyedline normalspace executeifdefined singleexpandafter \ +doubleexpandafter tripleexpandafter dontleavehmode removelastspace removeunwantedspaces \ +keepunwantedspaces wait writestatus define defineexpandable \ +redefine setmeasure setemeasure setgmeasure setxmeasure \ +definemeasure freezemeasure measure measured installcorenamespace \ +getvalue setvalue setevalue setgvalue setxvalue \ +letvalue letgvalue resetvalue undefinevalue ignorevalue \ +setuvalue setuevalue setugvalue setuxvalue globallet \ +glet udef ugdef uedef uxdef \ +checked unique getparameters geteparameters getgparameters \ +getxparameters forgetparameters copyparameters getdummyparameters dummyparameter \ +directdummyparameter setdummyparameter letdummyparameter usedummystyleandcolor usedummystyleparameter \ +usedummycolorparameter processcommalist processcommacommand quitcommalist quitprevcommalist \ +processaction processallactions processfirstactioninset processallactionsinset unexpanded \ +expanded startexpanded stopexpanded protected protect \ +unprotect firstofoneargument firstoftwoarguments secondoftwoarguments firstofthreearguments \ +secondofthreearguments thirdofthreearguments firstoffourarguments secondoffourarguments thirdoffourarguments \ +fourthoffourarguments firstoffivearguments secondoffivearguments thirdoffivearguments fourthoffivearguments \ +fifthoffivearguments firstofsixarguments secondofsixarguments thirdofsixarguments fourthofsixarguments \ +fifthofsixarguments sixthofsixarguments firstofoneunexpanded gobbleoneargument gobbletwoarguments \ +gobblethreearguments gobblefourarguments gobblefivearguments gobblesixarguments gobblesevenarguments \ +gobbleeightarguments gobbleninearguments gobbletenarguments gobbleoneoptional gobbletwooptionals \ +gobblethreeoptionals gobblefouroptionals gobblefiveoptionals dorecurse doloop \ +exitloop dostepwiserecurse recurselevel recursedepth dofastloopcs \ +dowith newconstant setnewconstant newconditional settrue \ +setfalse setconstant 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 \ +modulonumber dividenumber getfirstcharacter doiffirstcharelse startnointerference \ +stopnointerference twodigits threedigits strut setstrut \ +strutbox strutht strutdp strutwd struthtdp \ +begstrut endstrut lineheight 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 uncramped cramped triggermathstyle mathstylefont \ +mathsmallstylefont mathstyleface mathsmallstyleface mathstylecommand mathpalette \ +mathstylehbox mathstylevbox mathstylevcenter mathstylevcenteredhbox mathstylevcenteredvbox \ +mathtext setmathsmalltextbox setmathtextbox triggerdisplaystyle triggertextstyle \ +triggerscriptstyle triggerscriptscriptstyle triggeruncrampedstyle triggercrampedstyle triggersmallstyle \ +triggeruncrampedsmallstyle triggercrampedsmallstyle triggerbigstyle triggeruncrampedbigstyle triggercrampedbigstyle \ +luaexpr expdoifelse expdoif expdoifnot expdoifcommonelse \ +expdoifinsetelse ctxdirectlua ctxlatelua ctxsprint ctxwrite \ +ctxcommand ctxdirectcommand ctxlatecommand ctxreport ctxlua \ +luacode lateluacode directluacode registerctxluafile ctxloadluafile \ +luaversion luamajorversion luaminorversion ctxluacode luaconditional \ +luaexpanded startluaparameterset stopluaparameterset luaparameterset definenamedlua \ +obeylualines obeyluatokens startluacode stopluacode startlua \ +stoplua carryoverpar Umathbotaccent  diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index b345d61f0..422946ceb 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit  package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749  if not modules then modules={} end modules ['util-prs']={    version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s  patterns.settings_to_hash_b=pattern_b_s  patterns.settings_to_hash_c=pattern_c_s  function parsers.make_settings_to_hash_pattern(set,how) -  if how=="strict" then +  if type(str)=="table" then +    return set +  elseif how=="strict" then      return (pattern_c/set)^1    elseif how=="tolerant" then      return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how)    end  end  function parsers.settings_to_hash(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_a_s,str)      return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing)    end  end  function parsers.settings_to_hash_tolerant(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_b_s,str)      return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing)    end  end  function parsers.settings_to_hash_strict(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_c_s,str)      return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm  local pattern=spaces*Ct(value*(separator*value)^0)  patterns.settings_to_array=pattern  function parsers.settings_to_array(str,strict) -  if not str or str=="" then +  if type(str)=="table" then +    return str +  elseif not str or str=="" then      return {}    elseif strict then      if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure  -- used libraries    : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua  -- skipped libraries : - --- original bytes    : 667729 --- stripped bytes    : 244539 +-- original bytes    : 668507 +-- stripped bytes    : 244711  -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index b345d61f0..422946ceb 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit  package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749  if not modules then modules={} end modules ['util-prs']={    version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s  patterns.settings_to_hash_b=pattern_b_s  patterns.settings_to_hash_c=pattern_c_s  function parsers.make_settings_to_hash_pattern(set,how) -  if how=="strict" then +  if type(str)=="table" then +    return set +  elseif how=="strict" then      return (pattern_c/set)^1    elseif how=="tolerant" then      return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how)    end  end  function parsers.settings_to_hash(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_a_s,str)      return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing)    end  end  function parsers.settings_to_hash_tolerant(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_b_s,str)      return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing)    end  end  function parsers.settings_to_hash_strict(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_c_s,str)      return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm  local pattern=spaces*Ct(value*(separator*value)^0)  patterns.settings_to_array=pattern  function parsers.settings_to_array(str,strict) -  if not str or str=="" then +  if type(str)=="table" then +    return str +  elseif not str or str=="" then      return {}    elseif strict then      if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure  -- used libraries    : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua  -- skipped libraries : - --- original bytes    : 667729 --- stripped bytes    : 244539 +-- original bytes    : 668507 +-- stripped bytes    : 244711  -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index b345d61f0..422946ceb 100755 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -5485,7 +5485,7 @@ do -- create closure to overcome 200 locals limit  package.loaded["util-prs"] = package.loaded["util-prs"] or true --- original size: 16976, stripped down to: 12143 +-- original size: 17754, stripped down to: 12749  if not modules then modules={} end modules ['util-prs']={    version=1.001, @@ -5555,7 +5555,9 @@ patterns.settings_to_hash_a=pattern_a_s  patterns.settings_to_hash_b=pattern_b_s  patterns.settings_to_hash_c=pattern_c_s  function parsers.make_settings_to_hash_pattern(set,how) -  if how=="strict" then +  if type(str)=="table" then +    return set +  elseif how=="strict" then      return (pattern_c/set)^1    elseif how=="tolerant" then      return (pattern_b/set)^1 @@ -5564,7 +5566,16 @@ function parsers.make_settings_to_hash_pattern(set,how)    end  end  function parsers.settings_to_hash(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_a_s,str)      return hash @@ -5573,7 +5584,16 @@ function parsers.settings_to_hash(str,existing)    end  end  function parsers.settings_to_hash_tolerant(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_b_s,str)      return hash @@ -5582,7 +5602,16 @@ function parsers.settings_to_hash_tolerant(str,existing)    end  end  function parsers.settings_to_hash_strict(str,existing) -  if str and str~="" then +  if type(str)=="table" then +    if existing then +      for k,v in next,str do +        existing[k]=v +      end +      return exiting +    else +      return str +    end +  elseif str and str~="" then      hash=existing or {}      lpegmatch(pattern_c_s,str)      return next(hash) and hash @@ -5595,7 +5624,9 @@ local value=P(lbrace*C((nobrace+nestedbraces)^0)*rbrace)+C((nestedbraces+(1-comm  local pattern=spaces*Ct(value*(separator*value)^0)  patterns.settings_to_array=pattern  function parsers.settings_to_array(str,strict) -  if not str or str=="" then +  if type(str)=="table" then +    return str +  elseif not str or str=="" then      return {}    elseif strict then      if find(str,"{") then @@ -16008,8 +16039,8 @@ end -- of closure  -- used libraries    : l-lua.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-md5.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-sto.lua util-prs.lua util-fmt.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-mrg.lua util-tpl.lua util-env.lua luat-env.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 util-lib.lua luat-sta.lua luat-fmt.lua  -- skipped libraries : - --- original bytes    : 667729 --- stripped bytes    : 244539 +-- original bytes    : 668507 +-- stripped bytes    : 244711  -- end library merge diff --git a/tex/context/base/cldf-bas.lua b/tex/context/base/cldf-bas.lua index 08d881271..6adeb2272 100644 --- a/tex/context/base/cldf-bas.lua +++ b/tex/context/base/cldf-bas.lua @@ -29,12 +29,16 @@ local format  = string.format  local utfchar = utf.char  local concat  = table.concat -local context   = context -local generics  = context.generics -local variables = interfaces.variables +local context      = context +local generics     = context.generics +local variables    = interfaces.variables -local new_rule  = nodes.pool.rule -local texcount  = tex.count +local nodepool     = nodes.pool +local new_rule     = nodepool.rule +local new_glyph    = nodepool.glyph + +local current_font = font.current +local texcount     = tex.count  function context.char(k) -- used as escape too, so don't change to utf      if type(k) == "table" then @@ -83,6 +87,15 @@ function context.hrule(w,h,d,dir)      end  end +function context.glyph(id,k) +    if id then +        if not k then +            id, k = current_font(), id +        end +        context(new_glyph(id,k)) +    end +end +  context.vrule = context.hrule  --~ local hbox, bgroup, egroup = context.hbox, context.bgroup, context.egroup diff --git a/tex/context/base/colo-ini.lua b/tex/context/base/colo-ini.lua index 148733932..b9e8eb203 100644 --- a/tex/context/base/colo-ini.lua +++ b/tex/context/base/colo-ini.lua @@ -39,8 +39,6 @@ local attributes_list     = attributes.list  local colorvalues         = colors.values  local transparencyvalues  = transparencies.values -local texattribute        = tex.attribute -  colors.sets               = colors.sets or { } -- sets are mostly used for  local colorsets           = colors.sets        -- showing lists of defined  local colorset            = { }                -- colors @@ -500,7 +498,7 @@ local function mpcolor(model,ca,ta,default)  end  local function mpnamedcolor(name) -    return mpcolor(texattribute[a_colorspace],l_color[name] or l_color.black) +    return mpcolor(gettexattribute(a_colorspace),l_color[name] or l_color.black)  end  local function mpoptions(model,ca,ta,default) -- will move to mlib-col diff --git a/tex/context/base/cont-fil.mkiv b/tex/context/base/cont-fil.mkiv index 42d333992..93a135170 100644 --- a/tex/context/base/cont-fil.mkiv +++ b/tex/context/base/cont-fil.mkiv @@ -105,8 +105,12 @@  % downward compatible mapping:  \definefilesynonym [pre-41]          [present-tiles] +\definefilesynonym [fnt-29]          [fonts-shapes]  \definefilesynonym [fnt-33]          [math-coverage] +\definefilesynonym [mat-12]          [math-parameters]  \definefilesynonym [mat-20]          [math-parameters] +\definefilesynonym [fnt-25]          [math-characters] +\definefilesynonym [fnt-28]          [fonts-goodies]  \definefilesynonym [mat-10]          [math-characters]  \definefilesynonym [mat-11]          [math-characters] diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 56058a1bd..8574253c9 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. -\newcontextversion{2013.05.16 13:51} +\newcontextversion{2013.05.16 23:48}  %D This file is loaded at runtime, thereby providing an excellent place for  %D hacks, patches, extensions and new features. diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 899723dde..aea5cbfaa 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 8d68cc543..93569d55d 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@  %D up and the dependencies are more consistent.  \edef\contextformat {\jobname} -\edef\contextversion{2013.05.16 13:51} +\edef\contextversion{2013.05.16 23:48}  \edef\contextkind   {beta}  %D For those who want to use this: diff --git a/tex/context/base/file-mod.mkvi b/tex/context/base/file-mod.mkvi index 3140b35de..cd7970292 100644 --- a/tex/context/base/file-mod.mkvi +++ b/tex/context/base/file-mod.mkvi @@ -240,26 +240,36 @@  %D Relatively new: -\unexpanded\def\syst_modules_direct_lua#1% -  {\ctxlua{#1()}} - -\unexpanded\def\syst_modules_single_lua#1% -  {\edef\m_module_command_function{#1}% +\unexpanded\def\syst_modules_direct_lua#1#2% +  {\edef\m_module_command_command {#1}% +   \edef\m_module_command_function{#2}% +   \directsetup{module:\m_module_command_command:start}% +   \ctxlua{\m_module_command_function()}% +   \directsetup{module:\m_module_command_command:stop}} + +\unexpanded\def\syst_modules_single_lua#1#2% +  {\edef\m_module_command_command {#1}% +   \edef\m_module_command_function{#2}%     \dosingleempty\syst_modules_single_lua_indeed} -\def\syst_modules_single_lua_indeed[#1]% -  {\ctxlua{\m_module_command_function(\!!bs#1\!!es)}} +\unexpanded\def\syst_modules_single_lua_indeed[#1]% +  {\directsetup{module:\m_module_command_command:start}% +   \ctxlua{\m_module_command_function(\!!bs#1\!!es)}% +   \directsetup{module:\m_module_command_command:stop}} -\unexpanded\def\syst_modules_double_lua#1% -  {\edef\m_module_command_function{#1}% +\unexpanded\def\syst_modules_double_lua#1#2% +  {\edef\m_module_command_command {#1}% +   \edef\m_module_command_function{#2}%     \dodoubleempty\syst_modules_double_lua_indeed} -\def\syst_modules_double_lua_indeed[#1][#2]% -  {\ctxlua{\m_module_command_function(\!!bs#1\!!es,\!!bs#2\!!es)}} +\unexpanded\def\syst_modules_double_lua_indeed[#1][#2]% +  {\directsetup{module:\m_module_command_command:start}% +   \ctxlua{\m_module_command_function(\!!bs#1\!!es,\!!bs#2\!!es)}% +   \directsetup{module:\m_module_command_command:stop}} -\def\installmodulecommandlua      #1#2{\unexpanded\def#1{\syst_modules_direct_lua{#2}}} -\def\installmodulecommandluasingle#1#2{\unexpanded\def#1{\syst_modules_single_lua{#2}}} -\def\installmodulecommandluadouble#1#2{\unexpanded\def#1{\syst_modules_double_lua{#2}}} +\def\installmodulecommandlua      #1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_direct_lua{\strippedcsname#1}{#2}}}} +\def\installmodulecommandluasingle#1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_single_lua{\strippedcsname#1}{#2}}}} +\def\installmodulecommandluadouble#1#2{\unexpanded\def#1{\normalexpanded{\syst_modules_double_lua{\strippedcsname#1}{#2}}}}  % obsolete  % diff --git a/tex/context/base/font-ini.mkvi b/tex/context/base/font-ini.mkvi index 63b7863c8..5f7aaa92f 100644 --- a/tex/context/base/font-ini.mkvi +++ b/tex/context/base/font-ini.mkvi @@ -2297,4 +2297,18 @@  \unexpanded\def\font_basics_predefined#1%    {\font_basics_predefine{\??predefinedfont#1}{#1}} +%D Handy helper: + +\unexpanded\def\savedefinedfont[#1]% +  {\bgroup +   \definedfont[#1]% +   \xdef\saveddefinedfontid  {\number\fontid\font}% +   \xdef\saveddefinedfontname{\fontname\font}% +   \egroup} + +\def\saveddefinedfontid  {\number\fontid\font} +\def\saveddefinedfontname{\fontname\font} + + +  \protect \endinput diff --git a/tex/context/base/math-ini.lua b/tex/context/base/math-ini.lua index 20c98afbe..7ba1d4514 100644 --- a/tex/context/base/math-ini.lua +++ b/tex/context/base/math-ini.lua @@ -15,10 +15,10 @@ if not modules then modules = { } end modules ['math-ini'] = {  -- to the fam when set ... we use other means .. ok, we could use it for spacing but  -- then we also have to set the other characters (only a subset done now) -local formatters = string.formatters +local formatters, find = string.formatters, string.find  local utfchar, utfbyte = utf.char, utf.byte  local setmathcode, setdelcode = tex.setmathcode, tex.setdelcode -local texattribute = tex.attribute +local settexattribute = tex.setattribute  local floor = math.floor  local context = context @@ -26,19 +26,19 @@ local context = context  local contextsprint = context.sprint  local contextfprint = context.fprint -- a bit inefficient -local allocate = utilities.storage.allocate -  local trace_defining = false  trackers.register("math.defining", function(v) trace_defining = v end)  local report_math = logs.reporter("mathematics","initializing") -mathematics       = mathematics or { } -local mathematics = mathematics +mathematics             = mathematics or { } +local mathematics       = mathematics  mathematics.extrabase   = 0xFE000 -- here we push some virtuals  mathematics.privatebase = 0xFF000 -- here we push the ex -local chardata = characters.data +local unsetvalue        = attributes.unsetvalue +local allocate          = utilities.storage.allocate +local chardata          = characters.data  local families = allocate {      mr = 0, @@ -491,10 +491,10 @@ end  --  -- function commands.taggedmathfunction(tag,label)  --     if label then ---         texattribute[a_mathcategory] = registercategory(1,tag,tag) +--         settexattribute(a_mathcategory,registercategory(1,tag,tag))  --         context.mathlabeltext(tag)  --     else ---         texattribute[a_mathcategory] = 1 +--         settexattribute(a_mathcategory,1)  --         context(tag)  --     end  -- end @@ -517,13 +517,31 @@ function commands.taggedmathfunction(tag,label,apply)              noffunctions = noffunctions + 1              functions[noffunctions] = tag              functions[tag] = noffunctions -            texattribute[a_mathcategory] = noffunctions + delta +            settexattribute(a_mathcategory,noffunctions + delta)          else -            texattribute[a_mathcategory] = n + delta +            settexattribute(a_mathcategory,n + delta)          end          context.mathlabeltext(tag)      else -        texattribute[a_mathcategory] = 1000 + delta +        settexattribute(a_mathcategory,1000 + delta)          context(tag)      end  end + +-- + +local list + +function commands.resetmathattributes() +    if not list then +        list = { } +        for k, v in next, attributes.numbers do +            if find(k,"^math") then +                list[#list+1] = v +            end +        end +    end +    for i=1,#list do +        settexattribute(list[i],unsetvalue) +    end +end diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv index 72daa8341..c19e24365 100644 --- a/tex/context/base/math-ini.mkiv +++ b/tex/context/base/math-ini.mkiv @@ -71,6 +71,26 @@  \setnewconstant\defaultmathfamily \zerocount % 255 +\unexpanded\def\resetmathattributes{\ctxcommand{resetmathattributes()}} + +% \unexpanded\def\rawmathcharacter#1% slow but only for tracing +%   {\begingroup +%    \ifmmode +%      \resetmathattributes\Uchar#1% +%    \else +%      \startimath\resetmathattributes\Uchar#1\stopimath +%    \fi +%    \endgroup} + +\unexpanded\def\rawmathematics#1% slow but only for tracing +  {\begingroup +   \ifmmode +     \resetmathattributes#1% +   \else +     \startimath\resetmathattributes#1\stopimath +   \fi +   \endgroup} +  %D Some measures (maybe spac-mth):  % \def\mathskipsmall {\mskip\thinmuskip} diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua index 2e960114e..867235b33 100644 --- a/tex/context/base/mult-low.lua +++ b/tex/context/base/mult-low.lua @@ -142,6 +142,8 @@ return {          "then",          "begcsname",          -- +        "strippedcsname", +        --          "firstargumentfalse", "firstargumenttrue",          "secondargumentfalse", "secondargumenttrue",          "thirdargumentfalse", "thirdargumenttrue", diff --git a/tex/context/base/phys-dim.mkiv b/tex/context/base/phys-dim.mkiv index 4efaa65a8..73cc2ea25 100644 --- a/tex/context/base/phys-dim.mkiv +++ b/tex/context/base/phys-dim.mkiv @@ -519,13 +519,13 @@     \fi}  \unexpanded\def\checkedtextcelsius -  {\iffontchar\font"2103\relax\iffontchar\font"2109\relax -     ℉\else\phys_units_text_celsius\fi\else\phys_units_text_celsius +  {\iffontchar\font"2103\relax +     ℃\else\phys_units_text_celsius     \fi}  \unexpanded\def\checkedtextfahrenheit -  {\iffontchar\font"2109\relax\iffontchar\font"2103\relax -     ℉\else\phys_units_text_fahrenheit\fi\else\phys_units_text_fahrenheit +  {\iffontchar\font"2109\relax +     ℉\else\phys_units_text_fahrenheit     \fi}  \setelementnature[unit]    [mixed] diff --git a/tex/context/base/s-fnt-11.mkiv b/tex/context/base/s-fnt-11.mkiv index a91e069ea..db803eefc 100644 --- a/tex/context/base/s-fnt-11.mkiv +++ b/tex/context/base/s-fnt-11.mkiv @@ -70,4 +70,12 @@ end     \ctxlua{fonts.names.table("#1",\reload,\all)}%     \egroup} -\protect \endinput +\protect + +\continueifinputfile{s-fnt-11.mkiv} + +\starttext + +\showinstalledfonts + +\stoptext diff --git a/tex/context/base/s-fnt-23.mkiv b/tex/context/base/s-fnt-23.mkiv index 17fc5463d..283f751ea 100644 --- a/tex/context/base/s-fnt-23.mkiv +++ b/tex/context/base/s-fnt-23.mkiv @@ -237,7 +237,6 @@  \def\StartShowGlyphShape#1%    {\startTEXpage -   \nonknuthmode % default anyway     \def\GlyphUnicode{#1}}  \def\StopShowGlyphShape @@ -254,7 +253,6 @@  \def\ShowAllGlyphShapes#1#2% name size    {\begingroup -   \nonknuthmode % default anyway     \definedfont[#1 at #2]%     \ctxlua{moduledata.fonts.show_all_shapes()}%     \endgroup} diff --git a/tex/context/base/s-fnt-26.mkiv b/tex/context/base/s-fnt-26.mkiv deleted file mode 100644 index 904091f06..000000000 --- a/tex/context/base/s-fnt-26.mkiv +++ /dev/null @@ -1,82 +0,0 @@ -%D \module -%D   [      file=s-fnt-26, -%D        version=2009.10.26, -%D          title=\CONTEXT\ Style File, -%D       subtitle=Goodies Tables, -%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. - -\startluacode - -    function document.show_goodies_stylistics(name) -        local goodies = fonts.goodies.load(name) -        local stylistics = goodies and goodies.stylistics -        if stylistics then -            local col, row, type = context.NC, context.NR, context.type -            context.starttabulate { "|l|pl|" } -            col() context("feature") col() context("meaning") col() row() -            for feature, meaning in table.sortedpairs(stylistics) do -                col() type(feature) col() type(meaning) col() row() -            end -            context.stoptabulate() -        end -    end - -    function document.show_goodies_featuresets(name) -        local goodies = fonts.goodies.load(name) -        local featuresets = goodies and goodies.featuresets -        if featuresets then -            local col, row, type = context.NC, context.NR, context.type -            context.starttabulate { "|l|pl|" } -            col() context("featureset") col() context("definitions") col() row() -            for featureset, definitions in table.sortedpairs(featuresets) do -            col() type(featureset) col() -            for k, v in table.sortedpairs(definitions) do -                type(string.format("%s=%s",k,tostring(v))) -                context.quad() -            end -            col() row() -            end -            context.stoptabulate() -        end -    end - -    function document.show_goodies_colorschemes(name) -        local goodies = fonts.goodies.load(name) -        local colorschemes = goodies and goodies.colorschemes -        if colorschemes then -            local col, row, type = context.NC, context.NR, context.type -            context.starttabulate { "|l|pl|" } -            col() context("colorscheme") col() context("numbers") col() row() -            for colorscheme, numbers in table.sortedpairs(colorschemes) do -                col() type(colorscheme) col() -                for i=1,#numbers do -                    type(i) -                    context.quad() -                end -                col() row() -            end -            context.stoptabulate() -        end -    end - -\stopluacode - -\def\showgoodiesstylistics  #1{\ctxlua{document.show_goodies_stylistics  ("#1")}} -\def\showgoodiesfeaturesets #1{\ctxlua{document.show_goodies_featuresets ("#1")}} -\def\showgoodiescolorschemes#1{\ctxlua{document.show_goodies_colorschemes("#1")}} - -\continueifinputfile{s-fnt-26.mkiv} - -\starttext - -    \showgoodiesstylistics  {husayni} -    \showgoodiesfeaturesets {husayni} -    \showgoodiescolorschemes{husayni} - -\stoptext diff --git a/tex/context/base/s-fnt-28.mkiv b/tex/context/base/s-fnt-28.mkiv deleted file mode 100644 index 778a4c390..000000000 --- a/tex/context/base/s-fnt-28.mkiv +++ /dev/null @@ -1,46 +0,0 @@ -%D \module -%D   [      file=s-fnt-28, -%D        version=2010.09.22, -%D          title=\CONTEXT\ Style File, -%D       subtitle=Tracing Names, -%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. - -\startluacode -    function fonts.tracers.files(goodyfile) -        local goodies = fonts.goodies.load(goodyfile) -        if goodies then -            local files = goodies.files -            if files and files.list then -                for filename, specification in table.sortedpairs(files.list) do -                    context.start() -                    context.dontleavehmode() -                    context.definedfont{ filename .. "*default" } -                    context("%s-%s-%s-%s-%s", -                        specification.name    or files.name, -                        specification.weight  or "normal", -                        specification.style   or "normal", -                        specification.width   or "normal", -                        specification.variant or "normal") -                    context.par() -                    context.stop() -                end -            end -        end -    end -\stopluacode - -\continueifinputfile{s-fnt-28.mkiv} - -\starttext - -    \loadfontgoodies[antykwapoltawskiego] - -    \ctxlua{fonts.tracers.files("antykwapoltawskiego")} - -\stoptext diff --git a/tex/context/base/s-fnt-29.mkiv b/tex/context/base/s-fnt-29.mkiv deleted file mode 100644 index f9e0a1658..000000000 --- a/tex/context/base/s-fnt-29.mkiv +++ /dev/null @@ -1,71 +0,0 @@ -%D \module -%D   [      file=s-fnt-29, -%D        version=2010.09.27, -%D          title=\CONTEXT\ Style File, -%D       subtitle=Tracing Shapes, -%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. - -\startluacode - -    local fontdata = fonts.hashes.identifiers - -    function fonts.tracers.shapes() -- todo: ranges -        local NC, NR = context.NC, context.NR -        local char = context.char -        local chrs = fontdata[font.current()].characters -     -- local desc = fontdata[font.current()].descriptions -        context.starttabulate { "|l|c|c|c|c|l|" } -            context.FL() -                NC() context("unicode") -                NC() context("glyph") -                NC() context("shape") -                NC() context("lower") -                NC() context("upper") -             -- NC() context("name") -                NC() context("description") -                NC() NR() -            context.TL() -            for k, v in next, characters.data do -                if chrs[k] then -                    NC() context("0x%05X",k) -                    NC() char(k) -                    NC() char(v.shcode) -                    NC() char(v.lccode or k) -                    NC() char(v.uccode or k) -                 -- NC() context(desc[k].name) -                    NC() context(v.description) -                    NC() NR() -                end -            end -        context.stoptabulate() -    end - -\stopluacode - -\continueifinputfile{s-fnt-29.mkiv} - -\setupbodyfont[dejavu,tt,9pt] - -\setuplayout -  [backspace=1cm, -   topspace=1cm, -   footer=1cm, -   header=0cm, -   height=middle, -   width=middle] - -\setupfootertexts -  [] -  [\fontname\font\quad\pagenumber] - -\starttext - -    \ctxlua{fonts.tracers.shapes()} - -\stoptext diff --git a/tex/context/base/s-fnt-31.mkiv b/tex/context/base/s-fnt-31.mkiv deleted file mode 100644 index 24f7f2d7e..000000000 --- a/tex/context/base/s-fnt-31.mkiv +++ /dev/null @@ -1,180 +0,0 @@ -%D \module -%D   [      file=s-fnt-31, -%D        version=2011.01.02, % about -%D          title=\CONTEXT\ Style File, -%D       subtitle=Comparing Fonts, -%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. - -% begin info -% -% title   : compare glyphs in fonts -% -% comment : show glyphs in several fonts alongside in order to to compare coverage -% status  : experimental, used for luatex testing -% -% end info - -\startluacode - -local format, upper, find = string.format, string.upper, string.find -local chardata = characters.data - -function fonts.tracers.coverage(fontfiles,pattern) -- todo: patterns - -    local present, names = { }, { } -    local pattern = pattern and upper(pattern) - -    for i=1,#fontfiles do -        local fontname = format("testfont-%s",i) -        local fontfile = fontfiles[i] -        local fontsize = tex.dimen.bodyfontsize -        local id, fontdata = fonts.definers.define { -            name = fontfile, -            size = fontsize, -            cs   = fontname, -        } -        for k, v in next, fontdata.characters do -            present[k] = true -        end -        names[i] = fontname -    end - -    local t = { } - -    context.starttabulate {"|Tr" .. string.rep("|l",#names) .. "|" } -        for i=1,#fontfiles do -            local file = fontfiles[i] -            t[#t+1] = i .. "=" .. file -            context.NC() -            context(i) -            context.NC() -            context.type(file) -            context.NC() -            context.NR() -        end -    context.stoptabulate() - -    context.setupfootertexts { -        table.concat(t," ") -    } - -    context.starttabulate {"|Tl" .. string.rep("|c",#names) .. "|Tl|" } -        context.NC() -        context.type("unicode") -        context.NC() -        for i=1,#names do -            context.type(i) -            context.NC() -        end -        context.type("description") -        context.NC() -        context.NR() -        context.HL() -        for k, v in table.sortedpairs(present) do -            local description = chardata[k].description -            if not pattern or (pattern == k) or (description and find(description,pattern)) then -                context.NC() -                context(format("%05X",k)) -                context.NC() -                for i=1,#names do -                    context.getvalue(names[i]) -                    context.char(k) -                    context.NC() -                end -                context(description) -                context.NC() -                context.NR() -            end -        end -    context.stoptabulate() - -end - -\stopluacode - -\continueifinputfile{s-fnt-31.mkiv} - -\setupbodyfont[10pt] - -\setupfootertexts -  [style=\ttx] - -\setuplayout -  [backspace=1cm, -   topspace=1cm, -   footer=1cm, -   header=0cm, -   height=middle, -   width=middle] - -\starttext - -% \startluacode -%     fonts.tracers.coverage { -%         "pirat.ttf", -%     } -% \stopluacode - -% \startluacode -%     fonts.tracers.coverage { -%      -- "cambria.ttf", -%         "lbr.afm", -%         "LucidaBrightRegular.ttf", -%         "lbi.afm", -%         "LucidaBrightItalic.ttf", -%         "lbd.afm", -%         "LucidaBrightDemiBold.ttf", -%         "lbdi.afm", -%         "LucidaBrightDemiItalic.ttf", -%     } -% \stopluacode - -% \startluacode -%     fonts.tracers.coverage ( { -%         "LucidaBrightRegular.ttf", -%         "cambria.ttf", -%         "iwona-regular.otf", -%         "texgyrepagella-regular.otf", -%         "texgyretermes-regular.otf", -%         "texgyrebonum-regular.otf", -%         "antpolt-regular.otf", -%     }, "OGONEK") -% \stopluacode - -% \loadfontgoodies[lucida-math] -% \loadfontgoodies[lm-math] - -% \startluacode -%     fonts.tracers.coverage { -%         "LucidaBrightRegular.ttf", -%         "LucidaBrightOne@lucida-math", -%         "cambria.ttc(Cambria Math)", -%         "xits-math.otf", -%         "LMMath10-Regular@lmroman10-math", -%     } -% \stopluacode - -% \loadfontgoodies[px-math] -% \loadfontgoodies[lm-math] - -\startluacode -    fonts.tracers.coverage { -        "cambria.ttc(Cambria Math)", -        "xits-math.otf", -        "stixmath-regular.otf", -     -- "lmmath-regular", -     -- "LMMath10-Regular@lmroman10-math", -     -- "pxmath@px-math", -     -- "lucida-math.otf", -     -- "lucida-math-demi.otf", -     -- "LinLibertine_Re-4.7.5.otf", -    } -\stopluacode - -\stoptext diff --git a/tex/context/base/s-fnt-32.mkiv b/tex/context/base/s-fnt-32.mkiv deleted file mode 100644 index 20a939a97..000000000 --- a/tex/context/base/s-fnt-32.mkiv +++ /dev/null @@ -1,60 +0,0 @@ -%D \module -%D   [      file=s-fnt-31, -%D        version=2011.05.12, -%D          title=\CONTEXT\ Style File, -%D       subtitle=Unicode Math Scripts, -%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. - -\startluacode -    function fonts.tracers.mathscripts() -        context.starttabulate { "|cT|c|cT|c|c|l|" } -        for k, v in table.sortedpairs(table.merged(characters.superscripts,characters.subscripts)) do -            local ck = utf.char(k) -            local cv = utf.char(v) -            local ss = characters.superscripts[k] and "^" or "_" -            context.NC() context("U+%05X",k) -            context.NC() context(ck) -            context.NC() context("U+%05X",v) -            context.NC() context(cv) -            context.NC() context("$x%s = x%s%s$",ck,ss,cv) -            context.NC() context(string.lower(characters.data[k].description)) -            context.NC() context.NR() -        end -        context.stoptabulate() -    end -\stopluacode - -\continueifinputfile{s-fnt-32.mkiv} - -\setupbodyfont[dejavu,10pt] - -% \enabletrackers[math.normalizing] -% \setupbackend[export=yes] - -\setuplayout -  [backspace=1cm, -   topspace=1cm, -   footer=1cm, -   header=0cm, -   height=middle, -   width=middle] - -\starttext - -\startbuffer -$e=mc²$ ${}²$ $²$ $x²ᶞ$ $x⁽²⁺²⁼²⁺²⁾$ $x²⁺²⁼²⁺²$ $x₅²$ $x²₅²$ -\stopbuffer - -\typebuffer \getbuffer - -\startluacode -    fonts.tracers.mathscripts() -\stopluacode - -\stoptext diff --git a/tex/context/base/s-fonts-goodies.lua b/tex/context/base/s-fonts-goodies.lua new file mode 100644 index 000000000..381fc45ea --- /dev/null +++ b/tex/context/base/s-fonts-goodies.lua @@ -0,0 +1,117 @@ +if not modules then modules = { } end modules['s-fonts-goodies'] = { +    version   = 1.001, +    comment   = "companion to s-fonts-goodies.mkiv", +    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL", +    copyright = "PRAGMA ADE / ConTeXt Development Team", +    license   = "see context related readme files" +} + +moduledata.fonts         = moduledata.fonts         or { } +moduledata.fonts.goodies = moduledata.fonts.goodies or { } + +local NC, NR, HL = context.NC, context.NR, context.HL + +local function initialized(specification) +    specification = interfaces.checkedspecification(specification) +    local name = specification.name +    if name then +        local goodies = fonts.goodies.load(name) +        if goodies then +            return specification, goodies +        end +    end +end + +function moduledata.fonts.goodies.showstylistics(specification) +    local specification, goodies = initialized(specification) +    if goodies then +        local stylistics = goodies.stylistics +        if stylistics then +            context.starttabulate { "|Tl|Tpl|" } +            HL() +            NC() context.bold("feature") +            NC() context.bold("meaning") +            NC() NR() +            HL() +            for feature, meaning in table.sortedpairs(stylistics) do +                NC() context(feature) +                NC() context(string.lower(meaning)) +                NC() NR() +            end +            HL() +            context.stoptabulate() +        end +    end +end + +function moduledata.fonts.goodies.showfeaturesets(specification) +    local specification, goodies = initialized(specification) +    if goodies then +        local featuresets = goodies.featuresets +        if featuresets then +            context.starttabulate { "|Tl|Tpl|" } +            HL() +            NC() context.bold("featureset") +            NC() context.bold("definitions") +            NC() NR() +            HL() +            for featureset, definitions in table.sortedpairs(featuresets) do +                NC() context.type(featureset) NC() +                for k, v in table.sortedpairs(definitions) do +                    context("%s=%S",k,v) +                    context.quad() +                end +                NC() NR() +            end +            HL() +            context.stoptabulate() +        end +    end +end + +function moduledata.fonts.goodies.showcolorschemes(specification) +    local specification, goodies = initialized(specification) +    if goodies then +        local colorschemes = goodies.colorschemes +        if colorschemes then +            context.starttabulate { "|Tl|Tpl|" } +            HL() +            NC() context.bold("colorscheme") +            NC() context.bold("numbers") +            NC() NR() +            HL() +            for colorscheme, numbers in table.sortedpairs(colorschemes) do +                NC() context.type(colorscheme) NC() +                for i=1,#numbers do +                    context(i) +                    context.quad() +                end +                NC() NR() +            end +            HL() +            context.stoptabulate() +        end +    end +end + +function moduledata.fonts.goodies.showfiles(specification) +    local specification, goodies = initialized(specification) +    if goodies then +        local files = goodies.files +        if files and files.list then +            for filename, specification in table.sortedpairs(files.list) do +                context.start() +                context.dontleavehmode() +                context.definedfont{ filename .. "*default" } +                context("%s-%s-%s-%s-%s", +                    specification.name    or files.name, +                    specification.weight  or "normal", +                    specification.style   or "normal", +                    specification.width   or "normal", +                    specification.variant or "normal") +                context.par() +                context.stop() +            end +        end +    end +end diff --git a/tex/context/base/s-fonts-goodies.mkiv b/tex/context/base/s-fonts-goodies.mkiv new file mode 100644 index 000000000..f07081825 --- /dev/null +++ b/tex/context/base/s-fonts-goodies.mkiv @@ -0,0 +1,37 @@ +%D \module +%D   [      file=s-fonts-goodies, % s-fnt-26, s-fnt-28 +%D        version=2009.10.26, +%D          title=\CONTEXT\ Style File, +%D       subtitle=Goodies Tables, +%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. + +%D More tables will follow here as we have many more goodies by now. + +\startmodule[s-fonts-goodies] + +\registerctxluafile{s-fonts-goodies}{} + +\installmodulecommandluasingle \showfontgoodiesstylistics   {moduledata.fonts.goodies.showstylistics} +\installmodulecommandluasingle \showfontgoodiesfeaturesets  {moduledata.fonts.goodies.showfeaturesets} +\installmodulecommandluasingle \showfontgoodiescolorschemes {moduledata.fonts.goodies.showcolorschemes} +\installmodulecommandluasingle \showfontgoodiesfiles        {moduledata.fonts.goodies.showfiles} + +\stopmodule + +\continueifinputfile{s-fonts-goodies.mkiv} + +\starttext + +    \showfontgoodiesstylistics  [name=husayni]             \page +    \showfontgoodiesfeaturesets [name=husayni]             \page +    \showfontgoodiescolorschemes[name=husayni]             \page + +    \showfontgoodiesfiles       [name=antykwapoltawskiego] \page + +\stoptext diff --git a/tex/context/base/s-fonts-missing.lua b/tex/context/base/s-fonts-missing.lua index 0d409c3a6..829fed45f 100644 --- a/tex/context/base/s-fonts-missing.lua +++ b/tex/context/base/s-fonts-missing.lua @@ -50,7 +50,7 @@ local function legend(id)      end  end -function moduledata.fonts.missing.legend(specification) +function moduledata.fonts.missing.showlegend(specification)      specification = interfaces.checkedspecification(specification)      context.begingroup()      context.definedfont { "Mono*missing" } -- otherwise no privates added @@ -93,7 +93,7 @@ local function missings()      end  end -function moduledata.fonts.missing.characters(specification) +function moduledata.fonts.missing.showcharacters(specification)      context.begingroup()      context.definedfont { "Mono*missing" } -- otherwise no privates added      context(function() missings() end) diff --git a/tex/context/base/s-fonts-missing.mkiv b/tex/context/base/s-fonts-missing.mkiv index 4215d2d88..6acef819e 100644 --- a/tex/context/base/s-fonts-missing.mkiv +++ b/tex/context/base/s-fonts-missing.mkiv @@ -15,8 +15,8 @@  \registerctxluafile{s-fonts-missing}{} -\installmodulecommandluasingle \showmissingcharacterslegend {moduledata.fonts.missing.legend} -\installmodulecommandluasingle \showmissingcharacters       {moduledata.fonts.missing.characters} +\installmodulecommandluasingle \showmissingcharacterslegend {moduledata.fonts.missing.showlegend} +\installmodulecommandluasingle \showmissingcharacters       {moduledata.fonts.missing.showcharacters}  \stopmodule diff --git a/tex/context/base/s-fonts-shapes.lua b/tex/context/base/s-fonts-shapes.lua new file mode 100644 index 000000000..e0c1262c5 --- /dev/null +++ b/tex/context/base/s-fonts-shapes.lua @@ -0,0 +1,62 @@ +if not modules then modules = { } end modules['s-fonts-shapes'] = { +    version   = 1.001, +    comment   = "companion to s-fonts-shapes.mkiv", +    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL", +    copyright = "PRAGMA ADE / ConTeXt Development Team", +    license   = "see context related readme files" +} + +moduledata.fonts        = moduledata.fonts        or { } +moduledata.fonts.shapes = moduledata.fonts.shapes or { } + +local fontdata = fonts.hashes.identifiers + +local NC, NR = context.NC, context.NR +local space, dontleavehmode, glyph = context.space, context.dontleavehmode, context.glyph + +function moduledata.fonts.shapes.showlist(specification) -- todo: ranges +    specification = interfaces.checkedspecification(specification) +    local id = tonumber(specification.number) or font.current() +    local chrs = fontdata[id].characters +    function char(k) +        dontleavehmode() +        glyph(id,k) +    end +    local function special(v) +        local specials = v.specials +        if specials and #specials > 1 then +            context("%s:",specials[1]) +            for i=2,#specials do +                space() +                char(specials[i]) +            end +        end +    end +    context.begingroup() +    context.tt() +    context.starttabulate { "|l|c|c|c|c|l|l|" } +        context.FL() +            NC() context.bold("unicode") +            NC() context.bold("glyph") +            NC() context.bold("shape") +            NC() context.bold("lower") +            NC() context.bold("upper") +            NC() context.bold("specials") +            NC() context.bold("description") +            NC() NR() +        context.TL() +        for k, v in next, characters.data do +            if chrs[k] then +                NC() context("0x%05X",k) +                NC() char(k) +                NC() char(v.shcode) +                NC() char(v.lccode or k) +                NC() char(v.uccode or k) +                NC() special(v) +                NC() context.tx(v.description) +                NC() NR() +            end +        end +    context.stoptabulate() +    context.endgroup() +end diff --git a/tex/context/base/s-fonts-shapes.mkiv b/tex/context/base/s-fonts-shapes.mkiv new file mode 100644 index 000000000..257a18fba --- /dev/null +++ b/tex/context/base/s-fonts-shapes.mkiv @@ -0,0 +1,44 @@ +%D \module +%D   [      file=s-fonts-shapes, % s-fnt-29, +%D        version=2010.09.27, +%D          title=\CONTEXT\ Style File, +%D       subtitle=Tracing Shapes, +%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. + +\startmodule[s-fonts-shapes] + +\registerctxluafile{s-fonts-shapes}{} + +\installmodulecommandluasingle \showfontshapes {moduledata.fonts.shapes.showlist} + +\stopmodule + +\continueifinputfile{s-fonts-shapes.mkiv} + +\setupbodyfont[dejavu,9pt] + +\setuplayout +  [backspace=1cm, +   topspace=1cm, +   footer=1cm, +   header=0cm, +   height=middle, +   width=middle] + +\setupfootertexts +  [] +  [\saveddefinedfontname\quad\pagenumber] + +\starttext + +    \savedefinedfont[Bold*default] + +    \showfontshapes[number=\saveddefinedfontid] + +\stoptext diff --git a/tex/context/base/s-fonts-tables.lua b/tex/context/base/s-fonts-tables.lua index 2849c0540..5c91d5ee7 100644 --- a/tex/context/base/s-fonts-tables.lua +++ b/tex/context/base/s-fonts-tables.lua @@ -164,17 +164,17 @@ end  tabletracers.typeset = typeset -function tabletracers.properties(nesting) +function tabletracers.showproperties(nesting)      local tfmdata = fonts.hashes.identifiers[font.current()]      typeset(tfmdata.properties,fonts.constructors.keys.properties,nesting)  end -function tabletracers.parameters(nesting) +function tabletracers.showparameters(nesting)      local tfmdata = fonts.hashes.identifiers[font.current()]      typeset(tfmdata.parameters,fonts.constructors.keys.parameters,nesting)  end -function tabletracers.positionings() +function tabletracers.showpositionings()      local tfmdata = fonts.hashes.identifiers[font.current()]      local resources = tfmdata.resources      if resources then @@ -206,7 +206,7 @@ end  local dynamics = true -function tabletracers.substitutions() +function tabletracers.showsubstitutions()      local tfmdata = fonts.hashes.identifiers[font.current()]      local resources = tfmdata.resources      if resources then @@ -281,7 +281,7 @@ function tabletracers.substitutions()      end  end -function tabletracers.all(specification) -- not interfaced +function tabletracers.showall(specification) -- not interfaced      specification = interfaces.checkedspecification(specification) @@ -290,19 +290,19 @@ function tabletracers.all(specification) -- not interfaced      end      context.startsubject { title = "Properties" } -        tabletracers.properties() +        tabletracers.showproperties()      context.stopsubject()      context.startsubject { title = "Parameters" } -        tabletracers.parameters() +        tabletracers.showparameters()      context.stopsubject()      context.startsubject { title = "Positioning features" } -        tabletracers.positionings() +        tabletracers.showpositionings()      context.stopsubject()      context.startsubject { title = "Substitution features" } -        tabletracers.substitutions() +        tabletracers.showsubstitutions()      context.stopsubject()      if title then diff --git a/tex/context/base/s-fonts-tables.mkiv b/tex/context/base/s-fonts-tables.mkiv index d991d7d81..98f9052ca 100644 --- a/tex/context/base/s-fonts-tables.mkiv +++ b/tex/context/base/s-fonts-tables.mkiv @@ -17,11 +17,11 @@  \registerctxluafile{s-fonts-tables}{} -\installmodulecommandluasingle \showfonttables        {moduledata.fonts.tables.all} -\installmodulecommandluasingle \showfontproperties    {moduledata.fonts.tables.properties} -\installmodulecommandluasingle \showfontparameters    {moduledata.fonts.tables.parameters} -\installmodulecommandluasingle \showfontpositionings  {moduledata.fonts.tables.positionings} -\installmodulecommandluasingle \showfontsubstitutions {moduledata.fonts.tables.substitutions} +\installmodulecommandluasingle \showfonttables        {moduledata.fonts.tables.showall} +\installmodulecommandluasingle \showfontproperties    {moduledata.fonts.tables.showproperties} +\installmodulecommandluasingle \showfontparameters    {moduledata.fonts.tables.showparameters} +\installmodulecommandluasingle \showfontpositionings  {moduledata.fonts.tables.showpositionings} +\installmodulecommandluasingle \showfontsubstitutions {moduledata.fonts.tables.showsubstitutions}  \stopmodule diff --git a/tex/context/base/s-math-coverage.lua b/tex/context/base/s-math-coverage.lua index 05a311ee6..c06f14b11 100644 --- a/tex/context/base/s-math-coverage.lua +++ b/tex/context/base/s-math-coverage.lua @@ -10,6 +10,13 @@ moduledata.math          = moduledata.math          or { }  moduledata.math.coverage = moduledata.math.coverage or { }  local utfchar, utfbyte = utf.char, utf.byte +local formatters, lower, upper, find, format = string.formatters, string.lower, string.upper, string.find, string.format +local lpegmatch = lpeg.match +local concat = table.concat + +local context = context +local NC, NR, HL = context.NC, context.NR, context.HL +local char, getglyph, bold, getvalue = context.char, context.getglyph, context.bold, context.getvalue  local ucgreek = {      0x0391, 0x0392, 0x0393, 0x0394, 0x0395, @@ -67,6 +74,10 @@ local alphabets = {  local getboth        = mathematics.getboth  local remapalphabets = mathematics.remapalphabets +local chardata     = characters.data +local superscripts = characters.superscripts +local subscripts   = characters.subscripts +  function moduledata.math.coverage.showalphabets()      context.starttabulate { "|lT|l|Tl|" }      for i=1,#styles do @@ -75,11 +86,11 @@ function moduledata.math.coverage.showalphabets()              local alternative = alternatives[i]              for i=1,#alphabets do                  local alphabet = alphabets[i] -                context.NC() +                NC()                      if i == 1 then                          context("%s %s",style,alternative)                      end -                context.NC() +                NC()                      context.startimath()                      context.setmathattribute(style,alternative)                      for i=1,#alphabet do @@ -95,15 +106,15 @@ function moduledata.math.coverage.showalphabets()                          end                      end                      context.stopimath() -                context.NC() +                NC()                      local first = alphabet[1]                      local last = alphabet[#alphabet]                      local id = getboth(style,alternative)                      local f_unicode = remapalphabets(first,id) or utfbyte(first)                      local l_unicode = remapalphabets(last,id) or utfbyte(last)                      context("%05X - %05X",f_unicode,l_unicode) -                context.NC() -                context.NR() +                NC() +                NR()              end          end      end @@ -111,29 +122,28 @@ function moduledata.math.coverage.showalphabets()  end  function moduledata.math.coverage.showcharacters() -    local NC, NR, getglyph, concat = context.NC, context.NR, context.getglyph, table.concat      context.startcolumns()      context.setupalign { "nothyphenated" }      context.starttabulate { "|T|i2|Tpl|" } -    for u, d in table.sortedpairs(characters.data) do +    for u, d in table.sortedpairs(chardata) do          local mathclass = d.mathclass          local mathspec = d.mathspec          if mathclass or mathspec then              NC() -            context("%05X",u) +                context("%05X",u)              NC() -            getglyph("MathRoman",u) +                getglyph("MathRoman",u)              NC() -            if mathspec then -                local t = { } -                for i=1,#mathspec do -                    t[mathspec[i].class] = true +                if mathspec then +                    local t = { } +                    for i=1,#mathspec do +                        t[mathspec[i].class] = true +                    end +                    t = table.sortedkeys(t) +                    context("% t",t) +                else +                    context(mathclass)                  end -                t = table.sortedkeys(t) -                context(concat(t," ")) -            else -                context(mathclass) -            end              NC()              NR()          end @@ -141,3 +151,124 @@ function moduledata.math.coverage.showcharacters()      context.stoptabulate()      context.stopcolumns()  end + +-- This is a somewhat tricky table as we need to bypass the math machinery. + +function moduledata.math.coverage.showscripts() +    context.starttabulate { "|cT|c|cT|c|c|c|l|" } +    for k, v in table.sortedpairs(table.merged(superscripts,subscripts)) do +        local ck = utfchar(k) +        local cv = utfchar(v) +        local ss = superscripts[k] and "^" or "_" +        NC() +            context("%05X",k) +        NC() +            context(ck) +        NC() +            context("%05X",v) +        NC() +            context(cv) +        NC() +            context.formatted.rawmathematics("x%s = x%s%s",ck,ss,cv) +        NC() +            context.formatted.mathematics("x%s = x%s%s",ck,ss,cv) +        NC() +            context(lower(chardata[k].description)) +        NC() +        NR() +    end +    context.stoptabulate() +end + +function moduledata.math.coverage.showcomparison(specification) + +    specification = interfaces.checkedspecification(specification) + +    local fontfiles = utilities.parsers.settings_to_array(specification.list or "") +    local pattern   = upper(specification.pattern or "") + +    local present = { } +    local names   = { } +    local files   = { } + +    if not pattern then +        -- skip +    elseif pattern == "" then +        pattern = nil +    elseif tonumber(pattern) then +        pattern = tonumber(pattern) +    else +        pattern = lpeg.oneof(utilities.parsers.settings_to_array(pattern)) +        pattern = (1-pattern)^0 * pattern +    end + +    for i=1,#fontfiles do +        local fontname = format("testfont-%s",i) +        local fontfile = fontfiles[i] +        local fontsize = tex.dimen.bodyfontsize +        local id, fontdata = fonts.definers.define { +            name = fontfile, +            size = fontsize, +            cs   = fontname, +        } +        if id and fontdata then +            for k, v in next, fontdata.characters do +                present[k] = true +            end +            names[#names+1] = fontname +            files[#files+1] = fontfile +        end +    end + +    local t = { } + +    context.starttabulate { "|Tr" .. string.rep("|l",#names) .. "|" } +    for i=1,#files do +        local file = files[i] +        t[#t+1] = i .. "=" .. file +        NC() +            context(i) +        NC() +            context(file) +        NC() +        NR() +    end +    context.stoptabulate() + +    context.setupfootertexts { +        table.concat(t," ") +    } + +    context.starttabulate { "|Tl" .. string.rep("|c",#names) .. "|Tl|" } +    NC() +    bold("unicode") +    NC() +    for i=1,#names do +        bold(i) +        NC() +    end +    bold("description") +    NC() +    NR() +    HL() +    for k, v in table.sortedpairs(present) do +        if k > 0 then +            local description = chardata[k].description +            if not pattern or (pattern == k) or (description and lpegmatch(pattern,description)) then +                NC() +                    context("%05X",k) +                NC() +                for i=1,#names do +                    getvalue(names[i]) +                    char(k) +                    NC() +                end +                    context(description) +                NC() +                NR() +            end +        end +    end +    context.stoptabulate() + +end diff --git a/tex/context/base/s-math-coverage.mkiv b/tex/context/base/s-math-coverage.mkiv index fd7498d2e..185c382d6 100644 --- a/tex/context/base/s-math-coverage.mkiv +++ b/tex/context/base/s-math-coverage.mkiv @@ -1,6 +1,6 @@  %D \module -%D   [      file=s-math-coverage, % s-fnt-33, -%D        version=2011.05.10, % about then +%D   [      file=s-math-coverage, % s-fnt-33, s-fnt-32, s-fnt-31 +%D        version=2011.05.10, % and older  %D          title=\CONTEXT\ Style File,  %D       subtitle=Show Math Coverage,  %D         author=Hans Hagen, @@ -11,31 +11,128 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. +% begin info +% +% title   : compare glyphs in fonts +% +% comment : show glyphs in several fonts alongside in order to to compare coverage +% status  : experimental, used for luatex testing +% +% end info +  \startmodule[math-coverage]  \registerctxluafile{s-math-coverage}{}  \installmodulecommandluasingle \showmathalphabets  {moduledata.math.coverage.showalphabets}  \installmodulecommandluasingle \showmathcharacters {moduledata.math.coverage.showcharacters} +\installmodulecommandluasingle \showmathscripts    {moduledata.math.coverage.showscripts} +\installmodulecommandluasingle \showmathcomparison {moduledata.math.coverage.showcomparison}  \stopmodule  \continueifinputfile{s-math-coverage.mkiv} -\setupbodyfont -  [modern] - -\setuplayout -  [backspace=1cm, -   topspace=1cm, -   header=1cm, -   footer=1cm, -   width=middle, -   height=middle] +\usemodule[art-01]  \starttext      \showmathalphabets  \page      \showmathcharacters \page +    \showmathscripts    \page + +    \showmathcomparison +      [list={texgyrepagella-regular.otf,texgyretermes-regular.otf,texgyrebonum-regular.otf}, +       pattern=ogonek] + +    \page + +  % $e=mc²$ ${}²$ $²$ $x²ᶞ$ $x⁽²⁺²⁼²⁺²⁾$ $x²⁺²⁼²⁺²$ $x₅²$ $x²₅²$ + +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = { +  %             "texgyrepagella-math.otf", +  %             "texgyretermes-math.otf", +  %             "texgyrebonum-math.otf", +  %         } +  %     } +  % \stopluacode + +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = "pirat.ttf", +  %     } +  % \stopluacode + +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = { +  %             "lucidabrightot.otf", +  %             "cambria.ttf", +  %             "iwona-regular.otf", +  %             "texgyrepagella-regular.otf", +  %             "texgyretermes-regular.otf", +  %             "texgyrebonum-regular.otf", +  %             "antpolt-regular.otf", +  %         }, +  %         pattern = "OGONEK" +  %     } +  % \stopluacode + +  % \loadfontgoodies[lucida-math] +  % \loadfontgoodies[lm-math] +  % +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = { +  %             "LucidaBrightRegular.ttf", +  %             "LucidaBrightOne@lucida-math", +  %             "cambria.ttc(Cambria Math)", +  %             "xits-math.otf", +  %             "LMMath10-Regular@lmroman10-math", +  %         }, +  %     } +  % \stopluacode + +  % \loadfontgoodies[px-math] +  % \loadfontgoodies[lm-math] +  % +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = { +  %             "cambria.ttc(Cambria Math)", +  %             "xits-math.otf", +  %          -- "stixmath-regular.otf", +  %             "latinmodern-math.otf", +  %          -- "lucidabrightmathot.otf", +  %          -- "lucidabrightmathot-demi.otf", +  %             "texgyrepagella-math.otf", +  %             "texgyretermes-math.otf", +  %             "texgyrebonum-math.otf", +  %          -- "LMMath10-Regular@lmroman10-math", +  %          -- "pxmath@px-math", +  %          -- "txmath@tx-math", +  %         }, +  %     } +  % \stopluacode + +  % \startluacode +  %     moduledata.math.coverage.showcomparison { +  %         list = { +  %             "dejavuserif.ttf", +  %             "dejavusans.ttf", +  %             "dejavusansmono.ttf", +  %             "lucidabrightot.otf", +  %             "cambria.ttf", +  %             "iwona-regular.otf", +  %             "texgyrepagella-regular.otf", +  %             "texgyretermes-regular.otf", +  %             "texgyrebonum-regular.otf", +  %             "antpolt-regular.otf", +  %         }, +  %         pattern = "CELSIUS,FAHRENHEIT" +  %     } +  % \stopluacode  \stoptext diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex cf8a52e83..6266ba72d 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex 8e05e1f2b..90f5b1bd4 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua index 6ee7c8da8..75db1b910 100644 --- a/tex/context/base/status-mkiv.lua +++ b/tex/context/base/status-mkiv.lua @@ -4277,6 +4277,11 @@ return {    },    {     category = "lua", +   filename = "s-fonts-shapes", +   status   = "okay", +  }, +  { +   category = "lua",     filename = "s-fonts-tables",     status   = "okay",    }, @@ -4302,6 +4307,11 @@ return {    },    {     category = "lua", +   filename = "s-fonts-goodies", +   status   = "okay", +  }, +  { +   category = "lua",     filename = "s-math-parameters",     status   = "okay",    }, @@ -5316,42 +5326,27 @@ return {    },    {     category = "mkiv", -   filename = "s-fnt-26", -   status   = "todo", -  }, -  { -   category = "mkiv", -   filename = "s-fnt-28", -   status   = "todo", -  }, -  { -   category = "mkiv", -   filename = "s-fnt-29", -   status   = "todo", -  }, -  { -   category = "mkiv",     filename = "s-fnt-30",     status   = "todo",    },    {     category = "mkiv", -   filename = "s-fnt-31", -   status   = "todo", +   filename = "s-fonts-features", +   status   = "okay",    },    {     category = "mkiv", -   filename = "s-fnt-32", -   status   = "todo", +   filename = "s-fonts-goodies", +   status   = "okay",    },    {     category = "mkiv", -   filename = "s-fonts-features", +   filename = "s-fonts-missing",     status   = "okay",    },    {     category = "mkiv", -   filename = "s-fonts-missing", +   filename = "s-fonts-shapes",     status   = "okay",    },    { diff --git a/tex/context/base/util-prs.lua b/tex/context/base/util-prs.lua index 31e7ffa53..cdf497588 100644 --- a/tex/context/base/util-prs.lua +++ b/tex/context/base/util-prs.lua @@ -93,7 +93,9 @@ patterns.settings_to_hash_b = pattern_b_s  patterns.settings_to_hash_c = pattern_c_s  function parsers.make_settings_to_hash_pattern(set,how) -    if how == "strict" then +    if type(str) == "table" then +        return set +    elseif how == "strict" then          return (pattern_c/set)^1      elseif how == "tolerant" then          return (pattern_b/set)^1 @@ -103,7 +105,16 @@ function parsers.make_settings_to_hash_pattern(set,how)  end  function parsers.settings_to_hash(str,existing) -    if str and str ~= "" then +    if type(str) == "table" then +        if existing then +            for k, v in next, str do +                existing[k] = v +            end +            return exiting +        else +            return str +        end +    elseif str and str ~= "" then          hash = existing or { }          lpegmatch(pattern_a_s,str)          return hash @@ -113,7 +124,16 @@ function parsers.settings_to_hash(str,existing)  end  function parsers.settings_to_hash_tolerant(str,existing) -    if str and str ~= "" then +    if type(str) == "table" then +        if existing then +            for k, v in next, str do +                existing[k] = v +            end +            return exiting +        else +            return str +        end +    elseif str and str ~= "" then          hash = existing or { }          lpegmatch(pattern_b_s,str)          return hash @@ -123,7 +143,16 @@ function parsers.settings_to_hash_tolerant(str,existing)  end  function parsers.settings_to_hash_strict(str,existing) -    if str and str ~= "" then +    if type(str) == "table" then +        if existing then +            for k, v in next, str do +                existing[k] = v +            end +            return exiting +        else +            return str +        end +    elseif str and str ~= "" then          hash = existing or { }          lpegmatch(pattern_c_s,str)          return next(hash) and hash @@ -144,7 +173,9 @@ patterns.settings_to_array = pattern  -- we could use a weak table as cache  function parsers.settings_to_array(str,strict) -    if not str or str == "" then +    if type(str) == "table" then +        return str +    elseif not str or str == "" then          return { }      elseif strict then          if find(str,"{") then diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index fae9586a9..e4e1e1e5d 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 : luatex-fonts-merged.lua  -- parent file : luatex-fonts.lua --- merge date  : 05/16/13 13:51:17 +-- merge date  : 05/16/13 23:48:12  do -- begin closure to overcome local limits and interference  | 
