From 12fd8a1b4fa2a1cec2c363284f9baa572dbc96b9 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Thu, 2 Jul 2020 17:28:32 +0200 Subject: 2020-07-02 16:06:00 --- .../context/lexers/data/scite-context-data-tex.lua | 2 +- .../context/scite-context-data-tex.properties | 58 +-- .../context/data/scite-context-data-tex.lua | 2 +- .../context/syntaxes/context-syntax-tex.json | 2 +- doc/context/documents/general/manuals/evenmore.pdf | Bin 1607905 -> 1633517 bytes .../documents/general/manuals/luametatex.pdf | Bin 1232874 -> 1233125 bytes .../manuals/evenmore/evenmore-parameters.tex | 449 +++++++++++++++++++++ .../sources/general/manuals/evenmore/evenmore.tex | 3 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/attr-ini.mkiv | 4 +- tex/context/base/mkiv/back-exp.lua | 23 +- tex/context/base/mkiv/buff-ver.mkiv | 8 +- tex/context/base/mkiv/buff-ver.mkxl | 8 +- tex/context/base/mkiv/cldf-ini.lua | 16 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 3 +- tex/context/base/mkiv/context.mkxl | 3 +- tex/context/base/mkiv/driv-shp.lua | 72 ++-- tex/context/base/mkiv/lxml-ini.mkiv | 2 +- tex/context/base/mkiv/mult-ini.mkiv | 4 + tex/context/base/mkiv/mult-prm.lua | 1 + tex/context/base/mkiv/node-aux.lua | 230 ----------- tex/context/base/mkiv/node-cmp.lua | 11 + tex/context/base/mkiv/node-fin.lua | 189 ++++----- tex/context/base/mkiv/node-met.lua | 230 ----------- tex/context/base/mkiv/node-shp.lua | 108 ++--- tex/context/base/mkiv/spac-lin.mkiv | 54 ++- tex/context/base/mkiv/status-files.pdf | Bin 27742 -> 27724 bytes tex/context/base/mkiv/status-lua.pdf | Bin 254471 -> 254455 bytes tex/context/base/mkiv/strc-sec.mkiv | 21 +- tex/context/base/mkiv/syst-aux.lua | 22 + tex/context/base/mkiv/syst-aux.mkiv | 6 + tex/context/base/mkiv/task-ini.lua | 2 +- tex/context/base/mkiv/toks-ini.lua | 2 +- tex/context/base/mkiv/typo-plc.mkiv | 39 ++ tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 37 files changed, 874 insertions(+), 708 deletions(-) create mode 100644 doc/context/sources/general/manuals/evenmore/evenmore-parameters.tex create mode 100644 tex/context/base/mkiv/typo-plc.mkiv diff --git a/context/data/scite/context/lexers/data/scite-context-data-tex.lua b/context/data/scite/context/lexers/data/scite-context-data-tex.lua index a577eae37..850dada73 100644 --- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua +++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua @@ -1,7 +1,7 @@ return { ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" }, ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "readline", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "tracingscantokens", "unexpanded", "unless", "widowpenalties" }, - ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uradical", "Uright", "Uroot", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenmode", "automatichyphenpenalty", "begincsname", "beginlocalcontrol", "boundary", "boxattr", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "breakafterdirmode", "catcodetable", "clearmarks", "compoundhyphenmode", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "directlua", "efcode", "endlocalcontrol", "etoksapp", "etokspre", "exceptionpenalty", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "fixupboxesmode", "fontid", "formatname", "frozen", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gleaders", "glet", "glyphdatafield", "glyphdimensionsmode", "glyphscriptfield", "glyphstatefield", "gtoksapp", "gtokspre", "hjcode", "hpack", "hyphenationbounds", "hyphenationmin", "hyphenpenaltymode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimval", "ifempty", "iffrozen", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifmathparameter", "ifmathstyle", "ifnumval", "ifprotected", "iftok", "ifusercmd", "ignorearguments", "ignorepars", "immediateassigned", "immediateassignment", "initcatcodetable", "insertht", "internalcodesmode", "lastarguments", "lastnamedcs", "lastnodesubtype", "leftmarginkern", "letcharcode", "letdatacode", "letfrozen", "letprotected", "linedirection", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "luavaluefunction", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathitalicsmode", "mathnolimitsmode", "matholdmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "noboundary", "nohrule", "nokerns", "noligs", "nospaces", "novrule", "orelse", "outputbox", "pardirection", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "shapemode", "supmarkmode", "textdirection", "toksapp", "tokspre", "tpack", "tracingfonts", "unletfrozen", "unletprotected", "vpack", "wordboundary", "xtoksapp", "xtokspre" }, + ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uradical", "Uright", "Uroot", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenmode", "automatichyphenpenalty", "begincsname", "beginlocalcontrol", "boundary", "boxattr", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "breakafterdirmode", "catcodetable", "clearmarks", "compoundhyphenmode", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "directlua", "efcode", "endlocalcontrol", "etoksapp", "etokspre", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "fixupboxesmode", "fontid", "formatname", "frozen", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gleaders", "glet", "glyphdatafield", "glyphdimensionsmode", "glyphscriptfield", "glyphstatefield", "gtoksapp", "gtokspre", "hjcode", "hpack", "hyphenationbounds", "hyphenationmin", "hyphenpenaltymode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimval", "ifempty", "iffrozen", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifmathparameter", "ifmathstyle", "ifnumval", "ifprotected", "iftok", "ifusercmd", "ignorearguments", "ignorepars", "immediateassigned", "immediateassignment", "initcatcodetable", "insertht", "internalcodesmode", "lastarguments", "lastnamedcs", "lastnodesubtype", "leftmarginkern", "letcharcode", "letdatacode", "letfrozen", "letprotected", "linedirection", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "luavaluefunction", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathitalicsmode", "mathnolimitsmode", "matholdmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "noboundary", "nohrule", "nokerns", "noligs", "nospaces", "novrule", "orelse", "outputbox", "pardirection", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "shapemode", "supmarkmode", "textdirection", "toksapp", "tokspre", "tpack", "tracingfonts", "unletfrozen", "unletprotected", "vpack", "wordboundary", "xtoksapp", "xtokspre" }, ["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" }, ["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" }, ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "closein", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everytab", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "futurelet", "gdef", "global", "globaldefs", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "hoffset", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "ifeof", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mag", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "openin", "or", "ordlimits", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "read", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thewithoutunit", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topskip", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "voffset", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" }, diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties index 2fc8a5d95..ddfc35c82 100644 --- a/context/data/scite/context/scite-context-data-tex.properties +++ b/context/data/scite/context/scite-context-data-tex.properties @@ -57,35 +57,35 @@ boxdirection boxorientation boxtotal boxxmove boxxoffset \ boxymove boxyoffset breakafterdirmode catcodetable clearmarks \ compoundhyphenmode crampeddisplaystyle crampedscriptscriptstyle crampedscriptstyle crampedtextstyle \ csstring directlua efcode endlocalcontrol etoksapp \ -etokspre exceptionpenalty expandafterpars expandafterspaces expandcstoken \ -expanded expandtoken explicitdiscretionary explicithyphenpenalty firstvalidlanguage \ -fixupboxesmode fontid formatname frozen futuredef \ -futureexpand futureexpandis futureexpandisap gleaders glet \ -glyphdatafield glyphdimensionsmode glyphscriptfield glyphstatefield gtoksapp \ -gtokspre hjcode hpack hyphenationbounds hyphenationmin \ -hyphenpenaltymode ifabsdim ifabsnum ifarguments ifboolean \ -ifchkdim ifchknum ifcmpdim ifcmpnum ifcondition \ -ifcstok ifdimval ifempty iffrozen ifhastok \ -ifhastoks ifhasxtoks ifincsname ifmathparameter ifmathstyle \ -ifnumval ifprotected iftok ifusercmd ignorearguments \ -ignorepars immediateassigned immediateassignment initcatcodetable insertht \ -internalcodesmode lastarguments lastnamedcs lastnodesubtype leftmarginkern \ -letcharcode letdatacode letfrozen letprotected linedirection \ -localbrokenpenalty localinterlinepenalty localleftbox localrightbox lpcode \ -luabytecode luabytecodecall luacopyinputnodes luadef luaescapestring \ -luafunction luafunctioncall luatexbanner luatexrevision luatexversion \ -luavaluefunction mathdelimitersmode mathdirection mathdisplayskipmode matheqnogapstep \ -mathflattenmode mathitalicsmode mathnolimitsmode matholdmode mathpenaltiesmode \ -mathrulesfam mathrulesmode mathrulethicknessmode mathscriptboxmode mathscriptcharmode \ -mathscriptsmode mathstyle mathsurroundmode mathsurroundskip noboundary \ -nohrule nokerns noligs nospaces novrule \ -orelse outputbox pardirection postexhyphenchar posthyphenchar \ -prebinoppenalty predisplaygapfactor preexhyphenchar prehyphenchar prerelpenalty \ -protrudechars protrusionboundary pxdimen quitvmode rightmarginkern \ -rpcode savecatcodetable scantextokens setfontid shapemode \ -supmarkmode textdirection toksapp tokspre tpack \ -tracingfonts unletfrozen unletprotected vpack wordboundary \ -xtoksapp xtokspre +etokspre exceptionpenalty expand expandafterpars expandafterspaces \ +expandcstoken expanded expandtoken explicitdiscretionary explicithyphenpenalty \ +firstvalidlanguage fixupboxesmode fontid formatname frozen \ +futuredef futureexpand futureexpandis futureexpandisap gleaders \ +glet glyphdatafield glyphdimensionsmode glyphscriptfield glyphstatefield \ +gtoksapp gtokspre hjcode hpack hyphenationbounds \ +hyphenationmin hyphenpenaltymode ifabsdim ifabsnum ifarguments \ +ifboolean ifchkdim ifchknum ifcmpdim ifcmpnum \ +ifcondition ifcstok ifdimval ifempty iffrozen \ +ifhastok ifhastoks ifhasxtoks ifincsname ifmathparameter \ +ifmathstyle ifnumval ifprotected iftok ifusercmd \ +ignorearguments ignorepars immediateassigned immediateassignment initcatcodetable \ +insertht internalcodesmode lastarguments lastnamedcs lastnodesubtype \ +leftmarginkern letcharcode letdatacode letfrozen letprotected \ +linedirection localbrokenpenalty localinterlinepenalty localleftbox localrightbox \ +lpcode luabytecode luabytecodecall luacopyinputnodes luadef \ +luaescapestring luafunction luafunctioncall luatexbanner luatexrevision \ +luatexversion luavaluefunction mathdelimitersmode mathdirection mathdisplayskipmode \ +matheqnogapstep mathflattenmode mathitalicsmode mathnolimitsmode matholdmode \ +mathpenaltiesmode mathrulesfam mathrulesmode mathrulethicknessmode mathscriptboxmode \ +mathscriptcharmode mathscriptsmode mathstyle mathsurroundmode mathsurroundskip \ +noboundary nohrule nokerns noligs nospaces \ +novrule orelse outputbox pardirection postexhyphenchar \ +posthyphenchar prebinoppenalty predisplaygapfactor preexhyphenchar prehyphenchar \ +prerelpenalty protrudechars protrusionboundary pxdimen quitvmode \ +rightmarginkern rpcode savecatcodetable scantextokens setfontid \ +shapemode supmarkmode textdirection toksapp tokspre \ +tpack tracingfonts unletfrozen unletprotected vpack \ +wordboundary xtoksapp xtokspre keywordclass.tex.omega=\ Omegaminorversion Omegarevision Omegaversion diff --git a/context/data/textadept/context/data/scite-context-data-tex.lua b/context/data/textadept/context/data/scite-context-data-tex.lua index a577eae37..850dada73 100644 --- a/context/data/textadept/context/data/scite-context-data-tex.lua +++ b/context/data/textadept/context/data/scite-context-data-tex.lua @@ -1,7 +1,7 @@ return { ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" }, ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "readline", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "tracingscantokens", "unexpanded", "unless", "widowpenalties" }, - ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uradical", "Uright", "Uroot", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenmode", "automatichyphenpenalty", "begincsname", "beginlocalcontrol", "boundary", "boxattr", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "breakafterdirmode", "catcodetable", "clearmarks", "compoundhyphenmode", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "directlua", "efcode", "endlocalcontrol", "etoksapp", "etokspre", "exceptionpenalty", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "fixupboxesmode", "fontid", "formatname", "frozen", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gleaders", "glet", "glyphdatafield", "glyphdimensionsmode", "glyphscriptfield", "glyphstatefield", "gtoksapp", "gtokspre", "hjcode", "hpack", "hyphenationbounds", "hyphenationmin", "hyphenpenaltymode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimval", "ifempty", "iffrozen", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifmathparameter", "ifmathstyle", "ifnumval", "ifprotected", "iftok", "ifusercmd", "ignorearguments", "ignorepars", "immediateassigned", "immediateassignment", "initcatcodetable", "insertht", "internalcodesmode", "lastarguments", "lastnamedcs", "lastnodesubtype", "leftmarginkern", "letcharcode", "letdatacode", "letfrozen", "letprotected", "linedirection", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "luavaluefunction", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathitalicsmode", "mathnolimitsmode", "matholdmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "noboundary", "nohrule", "nokerns", "noligs", "nospaces", "novrule", "orelse", "outputbox", "pardirection", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "shapemode", "supmarkmode", "textdirection", "toksapp", "tokspre", "tpack", "tracingfonts", "unletfrozen", "unletprotected", "vpack", "wordboundary", "xtoksapp", "xtokspre" }, + ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Umiddle", "Unosubprescript", "Unosubscript", "Unosuperprescript", "Unosuperscript", "Uover", "Uoverdelimiter", "Uoverwithdelims", "Uradical", "Uright", "Uroot", "Uskewed", "Uskewedwithdelims", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Ustyle", "Usubprescript", "Usubscript", "Usuperprescript", "Usuperscript", "Uunderdelimiter", "Uvextensible", "adjustspacing", "adjustspacingshrink", "adjustspacingstep", "adjustspacingstretch", "afterassigned", "aftergrouped", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenmode", "automatichyphenpenalty", "begincsname", "beginlocalcontrol", "boundary", "boxattr", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "breakafterdirmode", "catcodetable", "clearmarks", "compoundhyphenmode", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "directlua", "efcode", "endlocalcontrol", "etoksapp", "etokspre", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "fixupboxesmode", "fontid", "formatname", "frozen", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gleaders", "glet", "glyphdatafield", "glyphdimensionsmode", "glyphscriptfield", "glyphstatefield", "gtoksapp", "gtokspre", "hjcode", "hpack", "hyphenationbounds", "hyphenationmin", "hyphenpenaltymode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimval", "ifempty", "iffrozen", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifmathparameter", "ifmathstyle", "ifnumval", "ifprotected", "iftok", "ifusercmd", "ignorearguments", "ignorepars", "immediateassigned", "immediateassignment", "initcatcodetable", "insertht", "internalcodesmode", "lastarguments", "lastnamedcs", "lastnodesubtype", "leftmarginkern", "letcharcode", "letdatacode", "letfrozen", "letprotected", "linedirection", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "luavaluefunction", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathitalicsmode", "mathnolimitsmode", "matholdmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "noboundary", "nohrule", "nokerns", "noligs", "nospaces", "novrule", "orelse", "outputbox", "pardirection", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "shapemode", "supmarkmode", "textdirection", "toksapp", "tokspre", "tpack", "tracingfonts", "unletfrozen", "unletprotected", "vpack", "wordboundary", "xtoksapp", "xtokspre" }, ["omega"]={ "Omegaminorversion", "Omegarevision", "Omegaversion" }, ["pdftex"]={ "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "pdfadjustspacing", "pdfannot", "pdfcatalog", "pdfcolorstack", "pdfcolorstackinit", "pdfcompresslevel", "pdfcopyfont", "pdfcreationdate", "pdfdecimaldigits", "pdfdest", "pdfdestmargin", "pdfdraftmode", "pdfeachlinedepth", "pdfeachlineheight", "pdfendlink", "pdfendthread", "pdffirstlineheight", "pdffontattr", "pdffontexpand", "pdffontname", "pdffontobjnum", "pdffontsize", "pdfgamma", "pdfgentounicode", "pdfglyphtounicode", "pdfhorigin", "pdfignoreddimen", "pdfignoreunknownimages", "pdfimageaddfilename", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinfoomitdate", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmajorversion", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfomitcharset", "pdfomitcidset", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkfixeddpi", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrecompress", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdfsuppressoptionalinfo", "pdfsuppressptexinfo", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdftrailerid", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformmargin", "pdfxformname", "pdfxformresources", "pdfximage" }, ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "closein", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everytab", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "futurelet", "gdef", "global", "globaldefs", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "hoffset", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "ifeof", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mag", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "openin", "or", "ordlimits", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "read", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thewithoutunit", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topskip", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "voffset", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" }, diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json index bce24ce07..74af61101 100644 --- a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json +++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json @@ -215,7 +215,7 @@ ] }, "primitive" : { - "match" : "\u005C\u005C(year|xtokspre|xtoksapp|xspaceskip|xleaders|xdef|wordboundary|widowpenalty|widowpenalties|wd|vtop|vss|vsplit|vskip|vsize|vrule|vpack|voffset|vfuzz|vfilneg|vfill|vfil|vcenter|vbox|vbadness|valign|vadjust|uppercase|unvcopy|unvbox|unskip|unpenalty|unletprotected|unletfrozen|unless|unkern|unhcopy|unhbox|underline|uchyph|uccode|tracingstats|tracingscantokens|tracingrestores|tracingparagraphs|tracingpages|tracingoutput|tracingonline|tracingnesting|tracingmacros|tracinglostchars|tracingifs|tracinggroups|tracingfonts|tracingcommands|tracingassigns|tpack|topskip|topmarks|topmark|tolerance|tokspre|toksdef|toksapp|toks|time|thinmuskip|thickmuskip|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|supmarkmode|string|splittopskip|splitmaxdepth|splitfirstmarks|splitfirstmark|splitdiscards|splitbotmarks|splitbotmark|span|spaceskip|spacefactor|skipdef|skip|skewchar|showtokens|showthe|shownodedetails|showlists|showifs|showgroups|showboxdepth|showboxbreadth|showbox|show|shipout|shapemode|sfcode|setlanguage|setfontid|setbox|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|relpenalty|relax|readline|read|raise|radical|quitvmode|pxdimen|protrusionboundary|protrudechars|prevgraf|prevdepth|pretolerance|prerelpenalty|prehyphenchar|preexhyphenchar|predisplaysize|predisplaypenalty|predisplaygapfactor|predisplaydirection|prebinoppenalty|posthyphenchar|postexhyphenchar|postdisplaypenalty|penalty|pdfximage|pdfxformresources|pdfxformname|pdfxformmargin|pdfxformattr|pdfxform|pdfvorigin|pdfuniqueresname|pdfuniformdeviate|pdftrailerid|pdftrailer|pdftracingfonts|pdfthreadmargin|pdfthread|pdftexversion|pdftexrevision|pdftexbanner|pdfsuppressptexinfo|pdfsuppressoptionalinfo|pdfstartthread|pdfstartlink|pdfsetrandomseed|pdfsetmatrix|pdfsavepos|pdfsave|pdfretval|pdfrestore|pdfreplacefont|pdfrefximage|pdfrefxform|pdfrefobj|pdfrecompress|pdfrandomseed|pdfpxdimen|pdfprotrudechars|pdfprimitive|pdfpkresolution|pdfpkmode|pdfpkfixeddpi|pdfpagewidth|pdfpagesattr|pdfpageresources|pdfpageref|pdfpageheight|pdfpagebox|pdfpageattr|pdfoutput|pdfoutline|pdfomitcidset|pdfomitcharset|pdfobjcompresslevel|pdfobj|pdfnormaldeviate|pdfnoligatures|pdfnames|pdfminorversion|pdfmapline|pdfmapfile|pdfmajorversion|pdfliteral|pdflinkmargin|pdflastypos|pdflastxpos|pdflastximagepages|pdflastximage|pdflastxform|pdflastobj|pdflastlink|pdflastlinedepth|pdflastannot|pdfinsertht|pdfinfoomitdate|pdfinfo|pdfinclusionerrorlevel|pdfinclusioncopyfonts|pdfincludechars|pdfimageresolution|pdfimagehicolor|pdfimagegamma|pdfimageapplygamma|pdfimageaddfilename|pdfignoreunknownimages|pdfignoreddimen|pdfhorigin|pdfglyphtounicode|pdfgentounicode|pdfgamma|pdffontsize|pdffontobjnum|pdffontname|pdffontexpand|pdffontattr|pdffirstlineheight|pdfendthread|pdfendlink|pdfeachlineheight|pdfeachlinedepth|pdfdraftmode|pdfdestmargin|pdfdest|pdfdecimaldigits|pdfcreationdate|pdfcopyfont|pdfcompresslevel|pdfcolorstackinit|pdfcolorstack|pdfcatalog|pdfannot|pdfadjustspacing|pausing|patterns|parskip|parshapelength|parshapeindent|parshapedimen|parshape|parindent|parfillskip|pardirection|par|pagetotal|pagestretch|pageshrink|pagegoal|pagefilstretch|pagefillstretch|pagefilllstretch|pagediscards|pagedepth|overwithdelims|overline|overfullrule|over|outputpenalty|outputbox|output|outer|orelse|ordlimits|or|openin|omit|numexpr|number|nullfont|nulldelimiterspace|novrule|nospaces|normalyear|normalxtokspre|normalxtoksapp|normalxspaceskip|normalxleaders|normalxdef|normalwordboundary|normalwidowpenalty|normalwidowpenalties|normalwd|normalvtop|normalvss|normalvsplit|normalvskip|normalvsize|normalvrule|normalvpack|normalvoffset|normalvfuzz|normalvfilneg|normalvfill|normalvfil|normalvcenter|normalvbox|normalvbadness|normalvalign|normalvadjust|normaluppercase|normalunvcopy|normalunvbox|normalunskip|normalunpenalty|normalunletprotected|normalunletfrozen|normalunless|normalunkern|normalunhcopy|normalunhbox|normalunexpanded|normalunderline|normaluchyph|normaluccode|normaltracingstats|normaltracingscantokens|normaltracingrestores|normaltracingparagraphs|normaltracingpages|normaltracingoutput|normaltracingonline|normaltracingnesting|normaltracingmacros|normaltracinglostchars|normaltracingifs|normaltracinggroups|normaltracingfonts|normaltracingcommands|normaltracingassigns|normaltpack|normaltopskip|normaltopmarks|normaltopmark|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltime|normalthinmuskip|normalthickmuskip|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|normalsupmarkmode|normalstring|normalsplittopskip|normalsplitmaxdepth|normalsplitfirstmarks|normalsplitfirstmark|normalsplitdiscards|normalsplitbotmarks|normalsplitbotmark|normalspan|normalspaceskip|normalspacefactor|normalskipdef|normalskip|normalskewchar|normalshowtokens|normalshowthe|normalshownodedetails|normalshowlists|normalshowifs|normalshowgroups|normalshowboxdepth|normalshowboxbreadth|normalshowbox|normalshow|normalshipout|normalshapemode|normalsfcode|normalsetlanguage|normalsetfontid|normalsetbox|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|normalrelpenalty|normalrelax|normalreadline|normalread|normalraise|normalradical|normalquitvmode|normalpxdimen|normalprotrusionboundary|normalprotrudechars|normalprotected|normalprevgraf|normalprevdepth|normalpretolerance|normalprerelpenalty|normalprehyphenchar|normalpreexhyphenchar|normalpredisplaysize|normalpredisplaypenalty|normalpredisplaygapfactor|normalpredisplaydirection|normalprebinoppenalty|normalposthyphenchar|normalpostexhyphenchar|normalpostdisplaypenalty|normalpenalty|normalpdfximage|normalpdfxformresources|normalpdfxformname|normalpdfxformmargin|normalpdfxformattr|normalpdfxform|normalpdfvorigin|normalpdfuniqueresname|normalpdfuniformdeviate|normalpdftrailerid|normalpdftrailer|normalpdftracingfonts|normalpdfthreadmargin|normalpdfthread|normalpdftexversion|normalpdftexrevision|normalpdftexbanner|normalpdfsuppressptexinfo|normalpdfsuppressoptionalinfo|normalpdfstartthread|normalpdfstartlink|normalpdfsetrandomseed|normalpdfsetmatrix|normalpdfsavepos|normalpdfsave|normalpdfretval|normalpdfrestore|normalpdfreplacefont|normalpdfrefximage|normalpdfrefxform|normalpdfrefobj|normalpdfrecompress|normalpdfrandomseed|normalpdfpxdimen|normalpdfprotrudechars|normalpdfprimitive|normalpdfpkresolution|normalpdfpkmode|normalpdfpkfixeddpi|normalpdfpagewidth|normalpdfpagesattr|normalpdfpageresources|normalpdfpageref|normalpdfpageheight|normalpdfpagebox|normalpdfpageattr|normalpdfoutput|normalpdfoutline|normalpdfomitcidset|normalpdfomitcharset|normalpdfobjcompresslevel|normalpdfobj|normalpdfnormaldeviate|normalpdfnoligatures|normalpdfnames|normalpdfminorversion|normalpdfmapline|normalpdfmapfile|normalpdfmajorversion|normalpdfliteral|normalpdflinkmargin|normalpdflastypos|normalpdflastxpos|normalpdflastximagepages|normalpdflastximage|normalpdflastxform|normalpdflastobj|normalpdflastlink|normalpdflastlinedepth|normalpdflastannot|normalpdfinsertht|normalpdfinfoomitdate|normalpdfinfo|normalpdfinclusionerrorlevel|normalpdfinclusioncopyfonts|normalpdfincludechars|normalpdfimageresolution|normalpdfimagehicolor|normalpdfimagegamma|normalpdfimageapplygamma|normalpdfimageaddfilename|normalpdfignoreunknownimages|normalpdfignoreddimen|normalpdfhorigin|normalpdfglyphtounicode|normalpdfgentounicode|normalpdfgamma|normalpdffontsize|normalpdffontobjnum|normalpdffontname|normalpdffontexpand|normalpdffontattr|normalpdffirstlineheight|normalpdfendthread|normalpdfendlink|normalpdfeachlineheight|normalpdfeachlinedepth|normalpdfdraftmode|normalpdfdestmargin|normalpdfdest|normalpdfdecimaldigits|normalpdfcreationdate|normalpdfcopyfont|normalpdfcompresslevel|normalpdfcolorstackinit|normalpdfcolorstack|normalpdfcatalog|normalpdfannot|normalpdfadjustspacing|normalpausing|normalpatterns|normalparskip|normalparshapelength|normalparshapeindent|normalparshapedimen|normalparshape|normalparindent|normalparfillskip|normalpardirection|normalpar|normalpagetotal|normalpagestretch|normalpageshrink|normalpagegoal|normalpagefilstretch|normalpagefillstretch|normalpagefilllstretch|normalpagediscards|normalpagedepth|normaloverwithdelims|normaloverline|normaloverfullrule|normalover|normaloutputpenalty|normaloutputbox|normaloutput|normalouter|normalorelse|normalordlimits|normalor|normalopenin|normalomit|normalnumexpr|normalnumber|normalnullfont|normalnulldelimiterspace|normalnovrule|normalnospaces|normalnonstopmode|normalnonscript|normalnolimits|normalnoligs|normalnokerns|normalnoindent|normalnohrule|normalnoexpand|normalnoboundary|normalnoalign|normalnewlinechar|normalmutoglue|normalmuskipdef|normalmuskip|normalmultiply|normalmuexpr|normalmskip|normalmoveright|normalmoveleft|normalmonth|normalmkern|normalmiddle|normalmessage|normalmedmuskip|normalmeaning|normalmaxdepth|normalmaxdeadcycles|normalmathsurroundskip|normalmathsurroundmode|normalmathsurround|normalmathstyle|normalmathscriptsmode|normalmathscriptcharmode|normalmathscriptboxmode|normalmathrulethicknessmode|normalmathrulesmode|normalmathrulesfam|normalmathrel|normalmathpunct|normalmathpenaltiesmode|normalmathord|normalmathopen|normalmathop|normalmatholdmode|normalmathnolimitsmode|normalmathitalicsmode|normalmathinner|normalmathflattenmode|normalmatheqnogapstep|normalmathdisplayskipmode|normalmathdirection|normalmathdelimitersmode|normalmathcode|normalmathclose|normalmathchoice|normalmathchardef|normalmathchar|normalmathbin|normalmathaccent|normalmarks|normalmark|normalmag|normalluavaluefunction|normalluatexversion|normalluatexrevision|normalluatexbanner|normalluafunctioncall|normalluafunction|normalluaescapestring|normalluadef|normalluacopyinputnodes|normalluabytecodecall|normalluabytecode|normallpcode|normallowercase|normallower|normallooseness|normallong|normallocalrightbox|normallocalleftbox|normallocalinterlinepenalty|normallocalbrokenpenalty|normallinepenalty|normallinedirection|normallimits|normalletprotected|normalletfrozen|normalletdatacode|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|normallastnodetype|normallastnodesubtype|normallastnamedcs|normallastlinefit|normallastkern|normallastbox|normallastarguments|normallanguage|normalkern|normaljobname|normalinternalcodesmode|normalinterlinepenalty|normalinterlinepenalties|normalinteractionmode|normalinsertpenalties|normalinsertht|normalinsert|normalinputlineno|normalinput|normalinitcatcodetable|normalindent|normalimmediateassignment|normalimmediateassigned|normalignorespaces|normalignorepars|normalignorearguments|normalifx|normalifvoid|normalifvmode|normalifvbox|normalifusercmd|normaliftrue|normaliftok|normalifprotected|normalifpdfprimitive|normalifpdfabsnum|normalifpdfabsdim|normalifodd|normalifnumval|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normaliffrozen|normaliffontchar|normaliffalse|normalifeof|normalifempty|normalifdimval|normalifdim|normalifdefined|normalifcstok|normalifcsname|normalifcondition|normalifcmpnum|normalifcmpdim|normalifchknum|normalifchkdim|normalifcat|normalifcase|normalifboolean|normalifarguments|normalifabsnum|normalifabsdim|normalif|normalhyphenpenaltymode|normalhyphenpenalty|normalhyphenchar|normalhyphenationmin|normalhyphenationbounds|normalhyphenation|normalht|normalhss|normalhskip|normalhsize|normalhrule|normalhpack|normalholdinginserts|normalhoffset|normalhjcode|normalhfuzz|normalhfilneg|normalhfill|normalhfil|normalhbox|normalhbadness|normalhangindent|normalhangafter|normalhalign|normalgtokspre|normalgtoksapp|normalglyphstatefield|normalglyphscriptfield|normalglyphdimensionsmode|normalglyphdatafield|normalgluetomu|normalgluestretchorder|normalgluestretch|normalglueshrinkorder|normalglueshrink|normalglueexpr|normalglobaldefs|normalglobal|normalglet|normalgleaders|normalgdef|normalfuturelet|normalfutureexpandisap|normalfutureexpandis|normalfutureexpand|normalfuturedef|normalfrozen|normalformatname|normalfontname|normalfontid|normalfontdimen|normalfontcharwd|normalfontcharic|normalfontcharht|normalfontchardp|normalfont|normalfloatingpenalty|normalfixupboxesmode|normalfirstvalidlanguage|normalfirstmarks|normalfirstmark|normalfinalhyphendemerits|normalfi|normalfam|normalexplicithyphenpenalty|normalexplicitdiscretionary|normalexpandtoken|normalexpanded|normalexpandcstoken|normalexpandafterspaces|normalexpandafterpars|normalexpandafter|normalexhyphenpenalty|normalexhyphenchar|normalexceptionpenalty|normaleveryvbox|normaleverytab|normaleverypar|normaleverymath|normaleveryjob|normaleveryhbox|normaleveryeof|normaleverydisplay|normaleverycr|normaletokspre|normaletoksapp|normalescapechar|normalerrorstopmode|normalerrorcontextlines|normalerrmessage|normalerrhelp|normaleqno|normalendlocalcontrol|normalendlinechar|normalendinput|normalendgroup|normalendcsname|normalend|normalemergencystretch|normalelse|normalefcode|normaledef|normaldump|normaldp|normaldoublehyphendemerits|normaldivide|normaldisplaywidth|normaldisplaywidowpenalty|normaldisplaywidowpenalties|normaldisplaystyle|normaldisplaylimits|normaldisplayindent|normaldiscretionary|normaldirectlua|normaldimexpr|normaldimendef|normaldimen|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|normalcurrentiftype|normalcurrentiflevel|normalcurrentifbranch|normalcurrentgrouptype|normalcurrentgrouplevel|normalcsstring|normalcsname|normalcrcr|normalcrampedtextstyle|normalcrampedscriptstyle|normalcrampedscriptscriptstyle|normalcrampeddisplaystyle|normalcr|normalcountdef|normalcount|normalcopy|normalcompoundhyphenmode|normalclubpenalty|normalclubpenalties|normalclosein|normalclearmarks|normalcleaders|normalchardef|normalchar|normalcatcodetable|normalcatcode|normalbrokenpenalty|normalbreakafterdirmode|normalboxyoffset|normalboxymove|normalboxxoffset|normalboxxmove|normalboxtotal|normalboxorientation|normalboxmaxdepth|normalboxdirection|normalboxattr|normalbox|normalboundary|normalbotmarks|normalbotmark|normalbinoppenalty|normalbelowdisplayskip|normalbelowdisplayshortskip|normalbeginlocalcontrol|normalbegingroup|normalbegincsname|normalbatchmode|normalbadness|normalautomatichyphenpenalty|normalautomatichyphenmode|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|normalaftergrouped|normalaftergroup|normalafterassignment|normalafterassigned|normaladvance|normaladjustspacingstretch|normaladjustspacingstep|normaladjustspacingshrink|normaladjustspacing|normaladjdemerits|normalaccent|normalabovewithdelims|normalabovedisplayskip|normalabovedisplayshortskip|normalabove|normalXeTeXversion|normalUvextensible|normalUunderdelimiter|normalUsuperscript|normalUsuperprescript|normalUsubscript|normalUsubprescript|normalUstyle|normalUstopmath|normalUstopdisplaymath|normalUstartmath|normalUstartdisplaymath|normalUstack|normalUskewedwithdelims|normalUskewed|normalUroot|normalUright|normalUradical|normalUoverwithdelims|normalUoverdelimiter|normalUover|normalUnosuperscript|normalUnosuperprescript|normalUnosubscript|normalUnosubprescript|normalUmiddle|normalUmathunderdelimitervgap|normalUmathunderdelimiterbgap|normalUmathunderbarvgap|normalUmathunderbarrule|normalUmathunderbarkern|normalUmathsupsubbottommax|normalUmathsupshiftup|normalUmathsupshiftdrop|normalUmathsupbottommin|normalUmathsubtopmax|normalUmathsubsupvgap|normalUmathsubsupshiftdown|normalUmathsubshiftdrop|normalUmathsubshiftdown|normalUmathstackvgap|normalUmathstacknumup|normalUmathstackdenomdown|normalUmathspacingmode|normalUmathspacebeforescript|normalUmathspaceafterscript|normalUmathskewedfractionvgap|normalUmathskewedfractionhgap|normalUmathrelrelspacing|normalUmathrelpunctspacing|normalUmathrelordspacing|normalUmathrelopspacing|normalUmathrelopenspacing|normalUmathrelinnerspacing|normalUmathrelclosespacing|normalUmathrelbinspacing|normalUmathradicalvgap|normalUmathradicalrule|normalUmathradicalkern|normalUmathradicaldegreeraise|normalUmathradicaldegreebefore|normalUmathradicaldegreeafter|normalUmathquad|normalUmathpunctrelspacing|normalUmathpunctpunctspacing|normalUmathpunctordspacing|normalUmathpunctopspacing|normalUmathpunctopenspacing|normalUmathpunctinnerspacing|normalUmathpunctclosespacing|normalUmathpunctbinspacing|normalUmathoverdelimitervgap|normalUmathoverdelimiterbgap|normalUmathoverbarvgap|normalUmathoverbarrule|normalUmathoverbarkern|normalUmathordrelspacing|normalUmathordpunctspacing|normalUmathordordspacing|normalUmathordopspacing|normalUmathordopenspacing|normalUmathordinnerspacing|normalUmathordclosespacing|normalUmathordbinspacing|normalUmathoprelspacing|normalUmathoppunctspacing|normalUmathopordspacing|normalUmathopopspacing|normalUmathopopenspacing|normalUmathopinnerspacing|normalUmathoperatorsize|normalUmathopenrelspacing|normalUmathopenpunctspacing|normalUmathopenordspacing|normalUmathopenopspacing|normalUmathopenopenspacing|normalUmathopeninnerspacing|normalUmathopenclosespacing|normalUmathopenbinspacing|normalUmathopclosespacing|normalUmathopbinspacing|normalUmathnolimitsupfactor|normalUmathnolimitsubfactor|normalUmathlimitbelowvgap|normalUmathlimitbelowkern|normalUmathlimitbelowbgap|normalUmathlimitabovevgap|normalUmathlimitabovekern|normalUmathlimitabovebgap|normalUmathinnerrelspacing|normalUmathinnerpunctspacing|normalUmathinnerordspacing|normalUmathinneropspacing|normalUmathinneropenspacing|normalUmathinnerinnerspacing|normalUmathinnerclosespacing|normalUmathinnerbinspacing|normalUmathfractionrule|normalUmathfractionnumvgap|normalUmathfractionnumup|normalUmathfractiondenomvgap|normalUmathfractiondenomdown|normalUmathfractiondelsize|normalUmathconnectoroverlapmin|normalUmathcodenum|normalUmathcode|normalUmathcloserelspacing|normalUmathclosepunctspacing|normalUmathcloseordspacing|normalUmathcloseopspacing|normalUmathcloseopenspacing|normalUmathcloseinnerspacing|normalUmathcloseclosespacing|normalUmathclosebinspacing|normalUmathclass|normalUmathcharslot|normalUmathcharnumdef|normalUmathcharnum|normalUmathcharfam|normalUmathchardef|normalUmathcharclass|normalUmathchar|normalUmathbinrelspacing|normalUmathbinpunctspacing|normalUmathbinordspacing|normalUmathbinopspacing|normalUmathbinopenspacing|normalUmathbininnerspacing|normalUmathbinclosespacing|normalUmathbinbinspacing|normalUmathaxis|normalUmathaccent|normalUleft|normalUhextensible|normalUdelimiterunder|normalUdelimiterover|normalUdelimiter|normalUdelcodenum|normalUdelcode|normalUchar|normalUatopwithdelims|normalUatop|normalUabovewithdelims|normalUabove|normalUUskewedwithdelims|normalUUskewed|normalOmegaversion|normalOmegarevision|normalOmegaminorversion|normalAlephversion|normalAlephrevision|normalAlephminorversion|normal |nonstopmode|nonscript|nolimits|noligs|nokerns|noindent|nohrule|noexpand|noboundary|noalign|newlinechar|mutoglue|muskipdef|muskip|multiply|muexpr|mskip|moveright|moveleft|month|mkern|middle|message|medmuskip|meaning|maxdepth|maxdeadcycles|mathsurroundskip|mathsurroundmode|mathsurround|mathstyle|mathscriptsmode|mathscriptcharmode|mathscriptboxmode|mathrulethicknessmode|mathrulesmode|mathrulesfam|mathrel|mathpunct|mathpenaltiesmode|mathord|mathopen|mathop|matholdmode|mathnolimitsmode|mathitalicsmode|mathinner|mathflattenmode|matheqnogapstep|mathdisplayskipmode|mathdirection|mathdelimitersmode|mathcode|mathclose|mathchoice|mathchardef|mathchar|mathbin|mathaccent|marks|mark|mag|luavaluefunction|luatexversion|luatexrevision|luatexbanner|luafunctioncall|luafunction|luaescapestring|luadef|luacopyinputnodes|luabytecodecall|luabytecode|lpcode|lowercase|lower|looseness|long|localrightbox|localleftbox|localinterlinepenalty|localbrokenpenalty|lineskiplimit|lineskip|linepenalty|linedirection|limits|letprotected|letfrozen|letdatacode|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|lastnodetype|lastnodesubtype|lastnamedcs|lastlinefit|lastkern|lastbox|lastarguments|language|kern|jobname|internalcodesmode|interlinepenalty|interlinepenalties|interactionmode|insertpenalties|insertht|insert|inputlineno|input|initcatcodetable|indent|immediateassignment|immediateassigned|ignorespaces|ignorepars|ignorearguments|ifx|ifvoid|ifvmode|ifvbox|ifusercmd|iftrue|iftok|ifprotected|ifpdfprimitive|ifpdfabsnum|ifpdfabsdim|ifodd|ifnumval|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|iffrozen|iffontchar|iffalse|ifeof|ifempty|ifdimval|ifdim|ifdefined|ifcstok|ifcsname|ifcondition|ifcmpnum|ifcmpdim|ifchknum|ifchkdim|ifcat|ifcase|ifboolean|ifarguments|ifabsnum|ifabsdim|if|hyphenpenaltymode|hyphenpenalty|hyphenchar|hyphenationmin|hyphenationbounds|hyphenation|ht|hss|hskip|hsize|hrule|hpack|holdinginserts|hoffset|hjcode|hfuzz|hfilneg|hfill|hfil|hbox|hbadness|hangindent|hangafter|halign|gtokspre|gtoksapp|glyphstatefield|glyphscriptfield|glyphdimensionsmode|glyphdatafield|gluetomu|gluestretchorder|gluestretch|glueshrinkorder|glueshrink|glueexpr|globaldefs|global|gleaders|gdef|futurelet|futureexpandisap|futureexpandis|futureexpand|futuredef|frozen|formatname|fontname|fontid|fontdimen|fontcharwd|fontcharic|fontcharht|fontchardp|font|floatingpenalty|fixupboxesmode|firstvalidlanguage|firstmarks|firstmark|finalhyphendemerits|fi|fam|explicithyphenpenalty|explicitdiscretionary|expandtoken|expandcstoken|expandafterspaces|expandafterpars|expandafter|exhyphenpenalty|exhyphenchar|exceptionpenalty|everyvbox|everytab|everypar|everymath|everyjob|everyhbox|everyeof|everydisplay|everycr|etokspre|etoksapp|escapechar|errorstopmode|errorcontextlines|errmessage|errhelp|eqno|endlocalcontrol|endlinechar|endinput|endgroup|endcsname|end|emergencystretch|else|efcode|edef|dump|dp|doublehyphendemerits|divide|displaywidth|displaywidowpenalty|displaywidowpenalties|displaystyle|displaylimits|displayindent|discretionary|directlua|dimexpr|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defaultskewchar|defaulthyphenchar|def|deadcycles|day|currentiftype|currentiflevel|currentifbranch|currentgrouptype|currentgrouplevel|csstring|csname|crcr|crampedtextstyle|crampedscriptstyle|crampedscriptscriptstyle|crampeddisplaystyle|cr|countdef|count|copy|compoundhyphenmode|clubpenalty|clubpenalties|closein|clearmarks|cleaders|chardef|char|catcodetable|catcode|brokenpenalty|breakafterdirmode|boxyoffset|boxymove|boxxoffset|boxxmove|boxtotal|boxorientation|boxmaxdepth|boxdirection|boxattr|box|boundary|botmarks|botmark|binoppenalty|belowdisplayskip|belowdisplayshortskip|beginlocalcontrol|begingroup|begincsname|batchmode|baselineskip|badness|automatichyphenpenalty|automatichyphenmode|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|aftergrouped|aftergroup|afterassignment|afterassigned|advance|adjustspacingstretch|adjustspacingstep|adjustspacingshrink|adjustspacing|adjdemerits|accent|abovewithdelims|abovedisplayskip|abovedisplayshortskip|above|XeTeXversion|Uvextensible|Uunderdelimiter|Usuperscript|Usuperprescript|Usubscript|Usubprescript|Ustyle|Ustopmath|Ustopdisplaymath|Ustartmath|Ustartdisplaymath|Ustack|Uskewedwithdelims|Uskewed|Uroot|Uright|Uradical|Uoverwithdelims|Uoverdelimiter|Uover|Unosuperscript|Unosuperprescript|Unosubscript|Unosubprescript|Umiddle|Umathunderdelimitervgap|Umathunderdelimiterbgap|Umathunderbarvgap|Umathunderbarrule|Umathunderbarkern|Umathsupsubbottommax|Umathsupshiftup|Umathsupshiftdrop|Umathsupbottommin|Umathsubtopmax|Umathsubsupvgap|Umathsubsupshiftdown|Umathsubshiftdrop|Umathsubshiftdown|Umathstackvgap|Umathstacknumup|Umathstackdenomdown|Umathspacingmode|Umathspacebeforescript|Umathspaceafterscript|Umathskewedfractionvgap|Umathskewedfractionhgap|Umathrelrelspacing|Umathrelpunctspacing|Umathrelordspacing|Umathrelopspacing|Umathrelopenspacing|Umathrelinnerspacing|Umathrelclosespacing|Umathrelbinspacing|Umathradicalvgap|Umathradicalrule|Umathradicalkern|Umathradicaldegreeraise|Umathradicaldegreebefore|Umathradicaldegreeafter|Umathquad|Umathpunctrelspacing|Umathpunctpunctspacing|Umathpunctordspacing|Umathpunctopspacing|Umathpunctopenspacing|Umathpunctinnerspacing|Umathpunctclosespacing|Umathpunctbinspacing|Umathoverdelimitervgap|Umathoverdelimiterbgap|Umathoverbarvgap|Umathoverbarrule|Umathoverbarkern|Umathordrelspacing|Umathordpunctspacing|Umathordordspacing|Umathordopspacing|Umathordopenspacing|Umathordinnerspacing|Umathordclosespacing|Umathordbinspacing|Umathoprelspacing|Umathoppunctspacing|Umathopordspacing|Umathopopspacing|Umathopopenspacing|Umathopinnerspacing|Umathoperatorsize|Umathopenrelspacing|Umathopenpunctspacing|Umathopenordspacing|Umathopenopspacing|Umathopenopenspacing|Umathopeninnerspacing|Umathopenclosespacing|Umathopenbinspacing|Umathopclosespacing|Umathopbinspacing|Umathnolimitsupfactor|Umathnolimitsubfactor|Umathlimitbelowvgap|Umathlimitbelowkern|Umathlimitbelowbgap|Umathlimitabovevgap|Umathlimitabovekern|Umathlimitabovebgap|Umathinnerrelspacing|Umathinnerpunctspacing|Umathinnerordspacing|Umathinneropspacing|Umathinneropenspacing|Umathinnerinnerspacing|Umathinnerclosespacing|Umathinnerbinspacing|Umathfractionrule|Umathfractionnumvgap|Umathfractionnumup|Umathfractiondenomvgap|Umathfractiondenomdown|Umathfractiondelsize|Umathconnectoroverlapmin|Umathcodenum|Umathcode|Umathcloserelspacing|Umathclosepunctspacing|Umathcloseordspacing|Umathcloseopspacing|Umathcloseopenspacing|Umathcloseinnerspacing|Umathcloseclosespacing|Umathclosebinspacing|Umathclass|Umathcharslot|Umathcharnumdef|Umathcharnum|Umathcharfam|Umathchardef|Umathcharclass|Umathchar|Umathbinrelspacing|Umathbinpunctspacing|Umathbinordspacing|Umathbinopspacing|Umathbinopenspacing|Umathbininnerspacing|Umathbinclosespacing|Umathbinbinspacing|Umathaxis|Umathaccent|Uleft|Uhextensible|Udelimiterunder|Udelimiterover|Udelimiter|Udelcodenum|Udelcode|Uchar|Uatopwithdelims|Uatop|Uabovewithdelims|Uabove|UUskewedwithdelims|UUskewed|Omegaversion|Omegarevision|Omegaminorversion|Alephversion|Alephrevision|Alephminorversion| )(?=[^a-zA-Z])", + "match" : "\u005C\u005C(year|xtokspre|xtoksapp|xspaceskip|xleaders|xdef|wordboundary|widowpenalty|widowpenalties|wd|vtop|vss|vsplit|vskip|vsize|vrule|vpack|voffset|vfuzz|vfilneg|vfill|vfil|vcenter|vbox|vbadness|valign|vadjust|uppercase|unvcopy|unvbox|unskip|unpenalty|unletprotected|unletfrozen|unless|unkern|unhcopy|unhbox|underline|uchyph|uccode|tracingstats|tracingscantokens|tracingrestores|tracingparagraphs|tracingpages|tracingoutput|tracingonline|tracingnesting|tracingmacros|tracinglostchars|tracingifs|tracinggroups|tracingfonts|tracingcommands|tracingassigns|tpack|topskip|topmarks|topmark|tolerance|tokspre|toksdef|toksapp|toks|time|thinmuskip|thickmuskip|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|supmarkmode|string|splittopskip|splitmaxdepth|splitfirstmarks|splitfirstmark|splitdiscards|splitbotmarks|splitbotmark|span|spaceskip|spacefactor|skipdef|skip|skewchar|showtokens|showthe|shownodedetails|showlists|showifs|showgroups|showboxdepth|showboxbreadth|showbox|show|shipout|shapemode|sfcode|setlanguage|setfontid|setbox|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|relpenalty|relax|readline|read|raise|radical|quitvmode|pxdimen|protrusionboundary|protrudechars|prevgraf|prevdepth|pretolerance|prerelpenalty|prehyphenchar|preexhyphenchar|predisplaysize|predisplaypenalty|predisplaygapfactor|predisplaydirection|prebinoppenalty|posthyphenchar|postexhyphenchar|postdisplaypenalty|penalty|pdfximage|pdfxformresources|pdfxformname|pdfxformmargin|pdfxformattr|pdfxform|pdfvorigin|pdfuniqueresname|pdfuniformdeviate|pdftrailerid|pdftrailer|pdftracingfonts|pdfthreadmargin|pdfthread|pdftexversion|pdftexrevision|pdftexbanner|pdfsuppressptexinfo|pdfsuppressoptionalinfo|pdfstartthread|pdfstartlink|pdfsetrandomseed|pdfsetmatrix|pdfsavepos|pdfsave|pdfretval|pdfrestore|pdfreplacefont|pdfrefximage|pdfrefxform|pdfrefobj|pdfrecompress|pdfrandomseed|pdfpxdimen|pdfprotrudechars|pdfprimitive|pdfpkresolution|pdfpkmode|pdfpkfixeddpi|pdfpagewidth|pdfpagesattr|pdfpageresources|pdfpageref|pdfpageheight|pdfpagebox|pdfpageattr|pdfoutput|pdfoutline|pdfomitcidset|pdfomitcharset|pdfobjcompresslevel|pdfobj|pdfnormaldeviate|pdfnoligatures|pdfnames|pdfminorversion|pdfmapline|pdfmapfile|pdfmajorversion|pdfliteral|pdflinkmargin|pdflastypos|pdflastxpos|pdflastximagepages|pdflastximage|pdflastxform|pdflastobj|pdflastlink|pdflastlinedepth|pdflastannot|pdfinsertht|pdfinfoomitdate|pdfinfo|pdfinclusionerrorlevel|pdfinclusioncopyfonts|pdfincludechars|pdfimageresolution|pdfimagehicolor|pdfimagegamma|pdfimageapplygamma|pdfimageaddfilename|pdfignoreunknownimages|pdfignoreddimen|pdfhorigin|pdfglyphtounicode|pdfgentounicode|pdfgamma|pdffontsize|pdffontobjnum|pdffontname|pdffontexpand|pdffontattr|pdffirstlineheight|pdfendthread|pdfendlink|pdfeachlineheight|pdfeachlinedepth|pdfdraftmode|pdfdestmargin|pdfdest|pdfdecimaldigits|pdfcreationdate|pdfcopyfont|pdfcompresslevel|pdfcolorstackinit|pdfcolorstack|pdfcatalog|pdfannot|pdfadjustspacing|pausing|patterns|parskip|parshapelength|parshapeindent|parshapedimen|parshape|parindent|parfillskip|pardirection|par|pagetotal|pagestretch|pageshrink|pagegoal|pagefilstretch|pagefillstretch|pagefilllstretch|pagediscards|pagedepth|overwithdelims|overline|overfullrule|over|outputpenalty|outputbox|output|outer|orelse|ordlimits|or|openin|omit|numexpr|number|nullfont|nulldelimiterspace|novrule|nospaces|normalyear|normalxtokspre|normalxtoksapp|normalxspaceskip|normalxleaders|normalxdef|normalwordboundary|normalwidowpenalty|normalwidowpenalties|normalwd|normalvtop|normalvss|normalvsplit|normalvskip|normalvsize|normalvrule|normalvpack|normalvoffset|normalvfuzz|normalvfilneg|normalvfill|normalvfil|normalvcenter|normalvbox|normalvbadness|normalvalign|normalvadjust|normaluppercase|normalunvcopy|normalunvbox|normalunskip|normalunpenalty|normalunletprotected|normalunletfrozen|normalunless|normalunkern|normalunhcopy|normalunhbox|normalunexpanded|normalunderline|normaluchyph|normaluccode|normaltracingstats|normaltracingscantokens|normaltracingrestores|normaltracingparagraphs|normaltracingpages|normaltracingoutput|normaltracingonline|normaltracingnesting|normaltracingmacros|normaltracinglostchars|normaltracingifs|normaltracinggroups|normaltracingfonts|normaltracingcommands|normaltracingassigns|normaltpack|normaltopskip|normaltopmarks|normaltopmark|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltime|normalthinmuskip|normalthickmuskip|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|normalsupmarkmode|normalstring|normalsplittopskip|normalsplitmaxdepth|normalsplitfirstmarks|normalsplitfirstmark|normalsplitdiscards|normalsplitbotmarks|normalsplitbotmark|normalspan|normalspaceskip|normalspacefactor|normalskipdef|normalskip|normalskewchar|normalshowtokens|normalshowthe|normalshownodedetails|normalshowlists|normalshowifs|normalshowgroups|normalshowboxdepth|normalshowboxbreadth|normalshowbox|normalshow|normalshipout|normalshapemode|normalsfcode|normalsetlanguage|normalsetfontid|normalsetbox|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|normalrelpenalty|normalrelax|normalreadline|normalread|normalraise|normalradical|normalquitvmode|normalpxdimen|normalprotrusionboundary|normalprotrudechars|normalprotected|normalprevgraf|normalprevdepth|normalpretolerance|normalprerelpenalty|normalprehyphenchar|normalpreexhyphenchar|normalpredisplaysize|normalpredisplaypenalty|normalpredisplaygapfactor|normalpredisplaydirection|normalprebinoppenalty|normalposthyphenchar|normalpostexhyphenchar|normalpostdisplaypenalty|normalpenalty|normalpdfximage|normalpdfxformresources|normalpdfxformname|normalpdfxformmargin|normalpdfxformattr|normalpdfxform|normalpdfvorigin|normalpdfuniqueresname|normalpdfuniformdeviate|normalpdftrailerid|normalpdftrailer|normalpdftracingfonts|normalpdfthreadmargin|normalpdfthread|normalpdftexversion|normalpdftexrevision|normalpdftexbanner|normalpdfsuppressptexinfo|normalpdfsuppressoptionalinfo|normalpdfstartthread|normalpdfstartlink|normalpdfsetrandomseed|normalpdfsetmatrix|normalpdfsavepos|normalpdfsave|normalpdfretval|normalpdfrestore|normalpdfreplacefont|normalpdfrefximage|normalpdfrefxform|normalpdfrefobj|normalpdfrecompress|normalpdfrandomseed|normalpdfpxdimen|normalpdfprotrudechars|normalpdfprimitive|normalpdfpkresolution|normalpdfpkmode|normalpdfpkfixeddpi|normalpdfpagewidth|normalpdfpagesattr|normalpdfpageresources|normalpdfpageref|normalpdfpageheight|normalpdfpagebox|normalpdfpageattr|normalpdfoutput|normalpdfoutline|normalpdfomitcidset|normalpdfomitcharset|normalpdfobjcompresslevel|normalpdfobj|normalpdfnormaldeviate|normalpdfnoligatures|normalpdfnames|normalpdfminorversion|normalpdfmapline|normalpdfmapfile|normalpdfmajorversion|normalpdfliteral|normalpdflinkmargin|normalpdflastypos|normalpdflastxpos|normalpdflastximagepages|normalpdflastximage|normalpdflastxform|normalpdflastobj|normalpdflastlink|normalpdflastlinedepth|normalpdflastannot|normalpdfinsertht|normalpdfinfoomitdate|normalpdfinfo|normalpdfinclusionerrorlevel|normalpdfinclusioncopyfonts|normalpdfincludechars|normalpdfimageresolution|normalpdfimagehicolor|normalpdfimagegamma|normalpdfimageapplygamma|normalpdfimageaddfilename|normalpdfignoreunknownimages|normalpdfignoreddimen|normalpdfhorigin|normalpdfglyphtounicode|normalpdfgentounicode|normalpdfgamma|normalpdffontsize|normalpdffontobjnum|normalpdffontname|normalpdffontexpand|normalpdffontattr|normalpdffirstlineheight|normalpdfendthread|normalpdfendlink|normalpdfeachlineheight|normalpdfeachlinedepth|normalpdfdraftmode|normalpdfdestmargin|normalpdfdest|normalpdfdecimaldigits|normalpdfcreationdate|normalpdfcopyfont|normalpdfcompresslevel|normalpdfcolorstackinit|normalpdfcolorstack|normalpdfcatalog|normalpdfannot|normalpdfadjustspacing|normalpausing|normalpatterns|normalparskip|normalparshapelength|normalparshapeindent|normalparshapedimen|normalparshape|normalparindent|normalparfillskip|normalpardirection|normalpar|normalpagetotal|normalpagestretch|normalpageshrink|normalpagegoal|normalpagefilstretch|normalpagefillstretch|normalpagefilllstretch|normalpagediscards|normalpagedepth|normaloverwithdelims|normaloverline|normaloverfullrule|normalover|normaloutputpenalty|normaloutputbox|normaloutput|normalouter|normalorelse|normalordlimits|normalor|normalopenin|normalomit|normalnumexpr|normalnumber|normalnullfont|normalnulldelimiterspace|normalnovrule|normalnospaces|normalnonstopmode|normalnonscript|normalnolimits|normalnoligs|normalnokerns|normalnoindent|normalnohrule|normalnoexpand|normalnoboundary|normalnoalign|normalnewlinechar|normalmutoglue|normalmuskipdef|normalmuskip|normalmultiply|normalmuexpr|normalmskip|normalmoveright|normalmoveleft|normalmonth|normalmkern|normalmiddle|normalmessage|normalmedmuskip|normalmeaning|normalmaxdepth|normalmaxdeadcycles|normalmathsurroundskip|normalmathsurroundmode|normalmathsurround|normalmathstyle|normalmathscriptsmode|normalmathscriptcharmode|normalmathscriptboxmode|normalmathrulethicknessmode|normalmathrulesmode|normalmathrulesfam|normalmathrel|normalmathpunct|normalmathpenaltiesmode|normalmathord|normalmathopen|normalmathop|normalmatholdmode|normalmathnolimitsmode|normalmathitalicsmode|normalmathinner|normalmathflattenmode|normalmatheqnogapstep|normalmathdisplayskipmode|normalmathdirection|normalmathdelimitersmode|normalmathcode|normalmathclose|normalmathchoice|normalmathchardef|normalmathchar|normalmathbin|normalmathaccent|normalmarks|normalmark|normalmag|normalluavaluefunction|normalluatexversion|normalluatexrevision|normalluatexbanner|normalluafunctioncall|normalluafunction|normalluaescapestring|normalluadef|normalluacopyinputnodes|normalluabytecodecall|normalluabytecode|normallpcode|normallowercase|normallower|normallooseness|normallong|normallocalrightbox|normallocalleftbox|normallocalinterlinepenalty|normallocalbrokenpenalty|normallinepenalty|normallinedirection|normallimits|normalletprotected|normalletfrozen|normalletdatacode|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|normallastnodetype|normallastnodesubtype|normallastnamedcs|normallastlinefit|normallastkern|normallastbox|normallastarguments|normallanguage|normalkern|normaljobname|normalinternalcodesmode|normalinterlinepenalty|normalinterlinepenalties|normalinteractionmode|normalinsertpenalties|normalinsertht|normalinsert|normalinputlineno|normalinput|normalinitcatcodetable|normalindent|normalimmediateassignment|normalimmediateassigned|normalignorespaces|normalignorepars|normalignorearguments|normalifx|normalifvoid|normalifvmode|normalifvbox|normalifusercmd|normaliftrue|normaliftok|normalifprotected|normalifpdfprimitive|normalifpdfabsnum|normalifpdfabsdim|normalifodd|normalifnumval|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normaliffrozen|normaliffontchar|normaliffalse|normalifeof|normalifempty|normalifdimval|normalifdim|normalifdefined|normalifcstok|normalifcsname|normalifcondition|normalifcmpnum|normalifcmpdim|normalifchknum|normalifchkdim|normalifcat|normalifcase|normalifboolean|normalifarguments|normalifabsnum|normalifabsdim|normalif|normalhyphenpenaltymode|normalhyphenpenalty|normalhyphenchar|normalhyphenationmin|normalhyphenationbounds|normalhyphenation|normalht|normalhss|normalhskip|normalhsize|normalhrule|normalhpack|normalholdinginserts|normalhoffset|normalhjcode|normalhfuzz|normalhfilneg|normalhfill|normalhfil|normalhbox|normalhbadness|normalhangindent|normalhangafter|normalhalign|normalgtokspre|normalgtoksapp|normalglyphstatefield|normalglyphscriptfield|normalglyphdimensionsmode|normalglyphdatafield|normalgluetomu|normalgluestretchorder|normalgluestretch|normalglueshrinkorder|normalglueshrink|normalglueexpr|normalglobaldefs|normalglobal|normalglet|normalgleaders|normalgdef|normalfuturelet|normalfutureexpandisap|normalfutureexpandis|normalfutureexpand|normalfuturedef|normalfrozen|normalformatname|normalfontname|normalfontid|normalfontdimen|normalfontcharwd|normalfontcharic|normalfontcharht|normalfontchardp|normalfont|normalfloatingpenalty|normalfixupboxesmode|normalfirstvalidlanguage|normalfirstmarks|normalfirstmark|normalfinalhyphendemerits|normalfi|normalfam|normalexplicithyphenpenalty|normalexplicitdiscretionary|normalexpandtoken|normalexpanded|normalexpandcstoken|normalexpandafterspaces|normalexpandafterpars|normalexpandafter|normalexpand|normalexhyphenpenalty|normalexhyphenchar|normalexceptionpenalty|normaleveryvbox|normaleverytab|normaleverypar|normaleverymath|normaleveryjob|normaleveryhbox|normaleveryeof|normaleverydisplay|normaleverycr|normaletokspre|normaletoksapp|normalescapechar|normalerrorstopmode|normalerrorcontextlines|normalerrmessage|normalerrhelp|normaleqno|normalendlocalcontrol|normalendlinechar|normalendinput|normalendgroup|normalendcsname|normalend|normalemergencystretch|normalelse|normalefcode|normaledef|normaldump|normaldp|normaldoublehyphendemerits|normaldivide|normaldisplaywidth|normaldisplaywidowpenalty|normaldisplaywidowpenalties|normaldisplaystyle|normaldisplaylimits|normaldisplayindent|normaldiscretionary|normaldirectlua|normaldimexpr|normaldimendef|normaldimen|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|normalcurrentiftype|normalcurrentiflevel|normalcurrentifbranch|normalcurrentgrouptype|normalcurrentgrouplevel|normalcsstring|normalcsname|normalcrcr|normalcrampedtextstyle|normalcrampedscriptstyle|normalcrampedscriptscriptstyle|normalcrampeddisplaystyle|normalcr|normalcountdef|normalcount|normalcopy|normalcompoundhyphenmode|normalclubpenalty|normalclubpenalties|normalclosein|normalclearmarks|normalcleaders|normalchardef|normalchar|normalcatcodetable|normalcatcode|normalbrokenpenalty|normalbreakafterdirmode|normalboxyoffset|normalboxymove|normalboxxoffset|normalboxxmove|normalboxtotal|normalboxorientation|normalboxmaxdepth|normalboxdirection|normalboxattr|normalbox|normalboundary|normalbotmarks|normalbotmark|normalbinoppenalty|normalbelowdisplayskip|normalbelowdisplayshortskip|normalbeginlocalcontrol|normalbegingroup|normalbegincsname|normalbatchmode|normalbadness|normalautomatichyphenpenalty|normalautomatichyphenmode|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|normalaftergrouped|normalaftergroup|normalafterassignment|normalafterassigned|normaladvance|normaladjustspacingstretch|normaladjustspacingstep|normaladjustspacingshrink|normaladjustspacing|normaladjdemerits|normalaccent|normalabovewithdelims|normalabovedisplayskip|normalabovedisplayshortskip|normalabove|normalXeTeXversion|normalUvextensible|normalUunderdelimiter|normalUsuperscript|normalUsuperprescript|normalUsubscript|normalUsubprescript|normalUstyle|normalUstopmath|normalUstopdisplaymath|normalUstartmath|normalUstartdisplaymath|normalUstack|normalUskewedwithdelims|normalUskewed|normalUroot|normalUright|normalUradical|normalUoverwithdelims|normalUoverdelimiter|normalUover|normalUnosuperscript|normalUnosuperprescript|normalUnosubscript|normalUnosubprescript|normalUmiddle|normalUmathunderdelimitervgap|normalUmathunderdelimiterbgap|normalUmathunderbarvgap|normalUmathunderbarrule|normalUmathunderbarkern|normalUmathsupsubbottommax|normalUmathsupshiftup|normalUmathsupshiftdrop|normalUmathsupbottommin|normalUmathsubtopmax|normalUmathsubsupvgap|normalUmathsubsupshiftdown|normalUmathsubshiftdrop|normalUmathsubshiftdown|normalUmathstackvgap|normalUmathstacknumup|normalUmathstackdenomdown|normalUmathspacingmode|normalUmathspacebeforescript|normalUmathspaceafterscript|normalUmathskewedfractionvgap|normalUmathskewedfractionhgap|normalUmathrelrelspacing|normalUmathrelpunctspacing|normalUmathrelordspacing|normalUmathrelopspacing|normalUmathrelopenspacing|normalUmathrelinnerspacing|normalUmathrelclosespacing|normalUmathrelbinspacing|normalUmathradicalvgap|normalUmathradicalrule|normalUmathradicalkern|normalUmathradicaldegreeraise|normalUmathradicaldegreebefore|normalUmathradicaldegreeafter|normalUmathquad|normalUmathpunctrelspacing|normalUmathpunctpunctspacing|normalUmathpunctordspacing|normalUmathpunctopspacing|normalUmathpunctopenspacing|normalUmathpunctinnerspacing|normalUmathpunctclosespacing|normalUmathpunctbinspacing|normalUmathoverdelimitervgap|normalUmathoverdelimiterbgap|normalUmathoverbarvgap|normalUmathoverbarrule|normalUmathoverbarkern|normalUmathordrelspacing|normalUmathordpunctspacing|normalUmathordordspacing|normalUmathordopspacing|normalUmathordopenspacing|normalUmathordinnerspacing|normalUmathordclosespacing|normalUmathordbinspacing|normalUmathoprelspacing|normalUmathoppunctspacing|normalUmathopordspacing|normalUmathopopspacing|normalUmathopopenspacing|normalUmathopinnerspacing|normalUmathoperatorsize|normalUmathopenrelspacing|normalUmathopenpunctspacing|normalUmathopenordspacing|normalUmathopenopspacing|normalUmathopenopenspacing|normalUmathopeninnerspacing|normalUmathopenclosespacing|normalUmathopenbinspacing|normalUmathopclosespacing|normalUmathopbinspacing|normalUmathnolimitsupfactor|normalUmathnolimitsubfactor|normalUmathlimitbelowvgap|normalUmathlimitbelowkern|normalUmathlimitbelowbgap|normalUmathlimitabovevgap|normalUmathlimitabovekern|normalUmathlimitabovebgap|normalUmathinnerrelspacing|normalUmathinnerpunctspacing|normalUmathinnerordspacing|normalUmathinneropspacing|normalUmathinneropenspacing|normalUmathinnerinnerspacing|normalUmathinnerclosespacing|normalUmathinnerbinspacing|normalUmathfractionrule|normalUmathfractionnumvgap|normalUmathfractionnumup|normalUmathfractiondenomvgap|normalUmathfractiondenomdown|normalUmathfractiondelsize|normalUmathconnectoroverlapmin|normalUmathcodenum|normalUmathcode|normalUmathcloserelspacing|normalUmathclosepunctspacing|normalUmathcloseordspacing|normalUmathcloseopspacing|normalUmathcloseopenspacing|normalUmathcloseinnerspacing|normalUmathcloseclosespacing|normalUmathclosebinspacing|normalUmathclass|normalUmathcharslot|normalUmathcharnumdef|normalUmathcharnum|normalUmathcharfam|normalUmathchardef|normalUmathcharclass|normalUmathchar|normalUmathbinrelspacing|normalUmathbinpunctspacing|normalUmathbinordspacing|normalUmathbinopspacing|normalUmathbinopenspacing|normalUmathbininnerspacing|normalUmathbinclosespacing|normalUmathbinbinspacing|normalUmathaxis|normalUmathaccent|normalUleft|normalUhextensible|normalUdelimiterunder|normalUdelimiterover|normalUdelimiter|normalUdelcodenum|normalUdelcode|normalUchar|normalUatopwithdelims|normalUatop|normalUabovewithdelims|normalUabove|normalUUskewedwithdelims|normalUUskewed|normalOmegaversion|normalOmegarevision|normalOmegaminorversion|normalAlephversion|normalAlephrevision|normalAlephminorversion|normal |nonstopmode|nonscript|nolimits|noligs|nokerns|noindent|nohrule|noexpand|noboundary|noalign|newlinechar|mutoglue|muskipdef|muskip|multiply|muexpr|mskip|moveright|moveleft|month|mkern|middle|message|medmuskip|meaning|maxdepth|maxdeadcycles|mathsurroundskip|mathsurroundmode|mathsurround|mathstyle|mathscriptsmode|mathscriptcharmode|mathscriptboxmode|mathrulethicknessmode|mathrulesmode|mathrulesfam|mathrel|mathpunct|mathpenaltiesmode|mathord|mathopen|mathop|matholdmode|mathnolimitsmode|mathitalicsmode|mathinner|mathflattenmode|matheqnogapstep|mathdisplayskipmode|mathdirection|mathdelimitersmode|mathcode|mathclose|mathchoice|mathchardef|mathchar|mathbin|mathaccent|marks|mark|mag|luavaluefunction|luatexversion|luatexrevision|luatexbanner|luafunctioncall|luafunction|luaescapestring|luadef|luacopyinputnodes|luabytecodecall|luabytecode|lpcode|lowercase|lower|looseness|long|localrightbox|localleftbox|localinterlinepenalty|localbrokenpenalty|lineskiplimit|lineskip|linepenalty|linedirection|limits|letprotected|letfrozen|letdatacode|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|lastnodetype|lastnodesubtype|lastnamedcs|lastlinefit|lastkern|lastbox|lastarguments|language|kern|jobname|internalcodesmode|interlinepenalty|interlinepenalties|interactionmode|insertpenalties|insertht|insert|inputlineno|input|initcatcodetable|indent|immediateassignment|immediateassigned|ignorespaces|ignorepars|ignorearguments|ifx|ifvoid|ifvmode|ifvbox|ifusercmd|iftrue|iftok|ifprotected|ifpdfprimitive|ifpdfabsnum|ifpdfabsdim|ifodd|ifnumval|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|iffrozen|iffontchar|iffalse|ifeof|ifempty|ifdimval|ifdim|ifdefined|ifcstok|ifcsname|ifcondition|ifcmpnum|ifcmpdim|ifchknum|ifchkdim|ifcat|ifcase|ifboolean|ifarguments|ifabsnum|ifabsdim|if|hyphenpenaltymode|hyphenpenalty|hyphenchar|hyphenationmin|hyphenationbounds|hyphenation|ht|hss|hskip|hsize|hrule|hpack|holdinginserts|hoffset|hjcode|hfuzz|hfilneg|hfill|hfil|hbox|hbadness|hangindent|hangafter|halign|gtokspre|gtoksapp|glyphstatefield|glyphscriptfield|glyphdimensionsmode|glyphdatafield|gluetomu|gluestretchorder|gluestretch|glueshrinkorder|glueshrink|glueexpr|globaldefs|global|gleaders|gdef|futurelet|futureexpandisap|futureexpandis|futureexpand|futuredef|frozen|formatname|fontname|fontid|fontdimen|fontcharwd|fontcharic|fontcharht|fontchardp|font|floatingpenalty|fixupboxesmode|firstvalidlanguage|firstmarks|firstmark|finalhyphendemerits|fi|fam|explicithyphenpenalty|explicitdiscretionary|expandtoken|expandcstoken|expandafterspaces|expandafterpars|expandafter|expand|exhyphenpenalty|exhyphenchar|exceptionpenalty|everyvbox|everytab|everypar|everymath|everyjob|everyhbox|everyeof|everydisplay|everycr|etokspre|etoksapp|escapechar|errorstopmode|errorcontextlines|errmessage|errhelp|eqno|endlocalcontrol|endlinechar|endinput|endgroup|endcsname|end|emergencystretch|else|efcode|edef|dump|dp|doublehyphendemerits|divide|displaywidth|displaywidowpenalty|displaywidowpenalties|displaystyle|displaylimits|displayindent|discretionary|directlua|dimexpr|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defaultskewchar|defaulthyphenchar|def|deadcycles|day|currentiftype|currentiflevel|currentifbranch|currentgrouptype|currentgrouplevel|csstring|csname|crcr|crampedtextstyle|crampedscriptstyle|crampedscriptscriptstyle|crampeddisplaystyle|cr|countdef|count|copy|compoundhyphenmode|clubpenalty|clubpenalties|closein|clearmarks|cleaders|chardef|char|catcodetable|catcode|brokenpenalty|breakafterdirmode|boxyoffset|boxymove|boxxoffset|boxxmove|boxtotal|boxorientation|boxmaxdepth|boxdirection|boxattr|box|boundary|botmarks|botmark|binoppenalty|belowdisplayskip|belowdisplayshortskip|beginlocalcontrol|begingroup|begincsname|batchmode|baselineskip|badness|automatichyphenpenalty|automatichyphenmode|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|aftergrouped|aftergroup|afterassignment|afterassigned|advance|adjustspacingstretch|adjustspacingstep|adjustspacingshrink|adjustspacing|adjdemerits|accent|abovewithdelims|abovedisplayskip|abovedisplayshortskip|above|XeTeXversion|Uvextensible|Uunderdelimiter|Usuperscript|Usuperprescript|Usubscript|Usubprescript|Ustyle|Ustopmath|Ustopdisplaymath|Ustartmath|Ustartdisplaymath|Ustack|Uskewedwithdelims|Uskewed|Uroot|Uright|Uradical|Uoverwithdelims|Uoverdelimiter|Uover|Unosuperscript|Unosuperprescript|Unosubscript|Unosubprescript|Umiddle|Umathunderdelimitervgap|Umathunderdelimiterbgap|Umathunderbarvgap|Umathunderbarrule|Umathunderbarkern|Umathsupsubbottommax|Umathsupshiftup|Umathsupshiftdrop|Umathsupbottommin|Umathsubtopmax|Umathsubsupvgap|Umathsubsupshiftdown|Umathsubshiftdrop|Umathsubshiftdown|Umathstackvgap|Umathstacknumup|Umathstackdenomdown|Umathspacingmode|Umathspacebeforescript|Umathspaceafterscript|Umathskewedfractionvgap|Umathskewedfractionhgap|Umathrelrelspacing|Umathrelpunctspacing|Umathrelordspacing|Umathrelopspacing|Umathrelopenspacing|Umathrelinnerspacing|Umathrelclosespacing|Umathrelbinspacing|Umathradicalvgap|Umathradicalrule|Umathradicalkern|Umathradicaldegreeraise|Umathradicaldegreebefore|Umathradicaldegreeafter|Umathquad|Umathpunctrelspacing|Umathpunctpunctspacing|Umathpunctordspacing|Umathpunctopspacing|Umathpunctopenspacing|Umathpunctinnerspacing|Umathpunctclosespacing|Umathpunctbinspacing|Umathoverdelimitervgap|Umathoverdelimiterbgap|Umathoverbarvgap|Umathoverbarrule|Umathoverbarkern|Umathordrelspacing|Umathordpunctspacing|Umathordordspacing|Umathordopspacing|Umathordopenspacing|Umathordinnerspacing|Umathordclosespacing|Umathordbinspacing|Umathoprelspacing|Umathoppunctspacing|Umathopordspacing|Umathopopspacing|Umathopopenspacing|Umathopinnerspacing|Umathoperatorsize|Umathopenrelspacing|Umathopenpunctspacing|Umathopenordspacing|Umathopenopspacing|Umathopenopenspacing|Umathopeninnerspacing|Umathopenclosespacing|Umathopenbinspacing|Umathopclosespacing|Umathopbinspacing|Umathnolimitsupfactor|Umathnolimitsubfactor|Umathlimitbelowvgap|Umathlimitbelowkern|Umathlimitbelowbgap|Umathlimitabovevgap|Umathlimitabovekern|Umathlimitabovebgap|Umathinnerrelspacing|Umathinnerpunctspacing|Umathinnerordspacing|Umathinneropspacing|Umathinneropenspacing|Umathinnerinnerspacing|Umathinnerclosespacing|Umathinnerbinspacing|Umathfractionrule|Umathfractionnumvgap|Umathfractionnumup|Umathfractiondenomvgap|Umathfractiondenomdown|Umathfractiondelsize|Umathconnectoroverlapmin|Umathcodenum|Umathcode|Umathcloserelspacing|Umathclosepunctspacing|Umathcloseordspacing|Umathcloseopspacing|Umathcloseopenspacing|Umathcloseinnerspacing|Umathcloseclosespacing|Umathclosebinspacing|Umathclass|Umathcharslot|Umathcharnumdef|Umathcharnum|Umathcharfam|Umathchardef|Umathcharclass|Umathchar|Umathbinrelspacing|Umathbinpunctspacing|Umathbinordspacing|Umathbinopspacing|Umathbinopenspacing|Umathbininnerspacing|Umathbinclosespacing|Umathbinbinspacing|Umathaxis|Umathaccent|Uleft|Uhextensible|Udelimiterunder|Udelimiterover|Udelimiter|Udelcodenum|Udelcode|Uchar|Uatopwithdelims|Uatop|Uabovewithdelims|Uabove|UUskewedwithdelims|UUskewed|Omegaversion|Omegarevision|Omegaminorversion|Alephversion|Alephrevision|Alephminorversion| )(?=[^a-zA-Z])", "name" : "context.primitive.commands.primitive.tex" }, "reserved" : { diff --git a/doc/context/documents/general/manuals/evenmore.pdf b/doc/context/documents/general/manuals/evenmore.pdf index 0f7da622e..102323f06 100644 Binary files a/doc/context/documents/general/manuals/evenmore.pdf and b/doc/context/documents/general/manuals/evenmore.pdf differ diff --git a/doc/context/documents/general/manuals/luametatex.pdf b/doc/context/documents/general/manuals/luametatex.pdf index db9b643ad..8741c2c0d 100644 Binary files a/doc/context/documents/general/manuals/luametatex.pdf and b/doc/context/documents/general/manuals/luametatex.pdf differ diff --git a/doc/context/sources/general/manuals/evenmore/evenmore-parameters.tex b/doc/context/sources/general/manuals/evenmore/evenmore-parameters.tex new file mode 100644 index 000000000..b07378fae --- /dev/null +++ b/doc/context/sources/general/manuals/evenmore/evenmore-parameters.tex @@ -0,0 +1,449 @@ +% language=us + +% This feature was done mid May 2020 with Alien Chatter (I really need to find the +% original cd's) in the background. + +\environment evenmore-style + +\startcomponent evenmore-parameters + +\startchapter[title=Parameters] + +When \TEX\ reads input it either does something directly, like setting a +register, loading a font, turning a character into a glyph node, packaging a box, +or it sort of collects tokens and stores them somehow, in a macro (definition), +in a token register, or someplace temporary to inject them into the input later. +Here we'll be discussing macros, which have a special token list containing the +preamble defining the arguments and a body doing the real work. For instance when +you say: + +\starttyping[option=TEX] +\def\foo#1#2{#1 + #2 + #1 + #2} +\stoptyping + +the macro \type {\foo} is stored in such a way that it knows how to pick up the +two arguments and when expanding the body, it will inject the collected arguments +each time a reference like \type {#1} or \type {#2} is seen. In fact, quite +often, \TEX\ pushes a list of tokens (like an argument) in the input stream and +then detours in taking tokens from that list. Because \TEX\ does all its memory +management itself the price of all that copying is not that high, although during +a long and more complex run the individual tokens that make the forward linked +list of tokens get scattered in token memory and memory access is still the +bottleneck in processing. + +A somewhat simplified view of how a macro like this gets stored is the following: + +\starttyping +hash entry "foo" with property "macro call" => + + match (# property stored) + match (# property stored) + end of match + + match reference 1 + other character + + match reference 2 + other character + + match reference 1 + other character + + match reference 2 +\stoptyping + +When a macro gets expanded, the scanner first collects all the passed arguments +and then pushes those (in this case two) token lists on the parameter stack. Keep +in mind that due to nesting many kinds of stacks play a role. When the body gets +expanded and a reference is seen, the argument that it refers to gets injected +into the input, so imagine that we have this definition: + +\starttyping[option=TEX] +\foo#1#2{\ifdim\dimen0=0pt #1\else #2\fi} +\stoptyping + +and we say: + +\starttyping[option=TEX] +\foo{yes}{no} +\stoptyping + +then it's as if we had typed: + +\starttyping[option=TEX] +\ifdim\dimen0=0pt yes\else no\fi +\stoptyping + +So, you'd better not have something in the arguments that messes up the condition +parser! From the perspective of an expansion machine it all makes sense. But it +also means that when arguments are not used, they still get parsed and stored. +Imagine using this one: + +\starttyping[option=TEX] +\def\foo#1{\iffalse#1\oof#1\oof#1\oof#1\oof#1\fi} +\stoptyping + +When \TEX\ sees that the condition is false it will enter a fast scanning mode +where it only looks at condition related tokens, so even if \type {\oof} is not +defined this will work ok: + +\starttyping[option=TEX] +\foo{!} +\stoptyping + +But when we say this: + +\starttyping[option=TEX] +\foo{\else} +\stoptyping + +It will bark! This is because each \type {#1} reference will be resolved, so we +effectively have + +\starttyping[option=TEX] +\def\foo#1{\iffalse\else\oof\else\oof\else\oof\else\oof\else\fi} +\stoptyping + +which is not good. On the other hand, since expansion takes place in quick +parsing mode, this will work: + +\starttyping[option=TEX] +\def\oof{\else} +\foo\oof +\stoptyping + +which actually is: + +\starttyping[option=TEX] +\def\foo#1{\iffalse\oof\oof\oof\oof\oof\oof\oof\oof\oof\fi} +\stoptyping + +So, a reference to an argument effectively is just a replacement. As long as you +keep that in mind, and realize that while \TEX\ is skipping \quote {if} branches +nothing gets expanded, you're okay. + +Most users will associate the \type {#} character with macro arguments or +preambles in low level alignments, but since most macro packages provide a higher +level set of table macros the latter is less well known. But, as often with +characters in \TEX, you can do magic things: + +\starttyping[option=TEX] +\catcode`?=\catcode`# + +\def\foo #1#2?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\par +\def\foo ?1#2?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\par +\def\foo ?1?2#3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\par +\stoptyping + +Here the question mark also indicates a macro argument. However, when expanded +we see this as result: + +\starttyping +macro:#1#2?3->?1?2?3 =>123 +macro:?1#2?3->?1?2?3 =>123 +macro:?1?2#3->#1#2#3 =>123 +\stoptyping + +The last used argument signal character (officially called a match character, +here we have two that fit that category, \type {#} and \type {?}) is used in the +serialization! Now, there is an interesting aspect here. When \TEX\ stores the +preamble, as in our first example: + +\starttyping + match (# property stored) + match (# property stored) + end of match +\stoptyping + +the property is stored, so in the later example we get: + +\starttyping + match (# property stored) + match (# property stored) + match (? property stored) + end of match +\stoptyping + +But in the macro body the number is stored instead, because we need it as +reference to the parameter, so when that bit gets serialized \TEX\ (or more +accurately: \LUATEX, which is what we're using here) doesn't know what specific +signal was used. When the preamble is serialized it does keep track of the last +so|-|called match character. This is why we see this inconsistency in rendering. + +A simple solution would be to store the used signal for the match argument, which +probably only takes a few lines of extra code (using a nine integer array instead +of a single integer), and use that instead. I'm willing to see that as a bug in +\LUATEX\ but when I ran into it I was playing with something else: adding the +ability to prevent storing unused arguments. But the resulting confusion can make +one wonder why we do not always serialize the match character as \type {#}. + +It was then that I noticed that the preamble stored the match tokens and not the +number and that \TEX\ in fact assumes that no mixture is used. And, after +prototyping that in itself trivial change I decided that in order to properly +serialize this new feature it also made sense to always serialize the match token +as \type {#}. I simply prefer consistency over confusion and so I caught two +flies in one stroke. The new feature is indicated with a \type {#0} parameter: + +\startbuffer + +\bgroup +\catcode`?=\catcode`# + +\def\foo ?1?0?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\crlf +\def\foo ?1#0?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\crlf +\def\foo #1#2?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\crlf +\def\foo ?1#2?3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\crlf +\def\foo ?1?2#3{?1?2?3} \meaning\foo\space=>\foo{1}{2}{3}\crlf +\egroup +\stopbuffer + +\typebuffer[option=TEX] + +\start +\getbuffer +\stop + +So, what is the rationale behind this new \type{#0} variant? Quite often you +don't want to do something with an argument at all. This happens when a macro +acts upon for instance a first argument and then expands another macro that +follows up but only deals with one of many arguments and discards the rest. Then +it makes no sense to store unused arguments. Keep in mind that in order to use it +more than once an argument does need to be stored, because the parser only looks +forward. In principle there could be some optimization in case the tokens come +from macros but we leave that for now. So, when we don't need an argument, we can +avoid storing it and just skip over it. Consider the following: + +\startbuffer +\def\foo #1{\ifnum#1=1 \expandafter\fooone\else\expandafter\footwo\fi} +\def\fooone#1#0{#1} +\def\footwo#0#2{#2} +\foo{1}{yes}{no} +\foo{0}{yes}{no} +\stopbuffer + +\typebuffer[option=TEX] + +We get: + +\getbuffer + +Just for the record, tracing of a macro shows that indeed there is no argument +stored: + +\starttyping[option=TEX] +\def\foo#1#0#3{....} +\foo{11}{22}{33} +\foo #1#0#3->.... +#1<-11 +#2<- +#3<-33 +\stoptyping + +Now, you can argue, what is the benefit of not storing tokens? As mentioned +above, the \TEX\ engines do their own memory management. \footnote {An added +benefit is that dumping and undumping is relatively efficient too.} This has +large benefits in performance especially when one keeps in mind that tokens get +allocated and are recycled constantly (take only lookahead and push back). + +However, even if this means that storing a couple of unused arguments doesn't put +much of a dent in performance, it does mean that a token sits somewhere in memory +and that this bit of memory needs to get accessed. Again, this is no big deal on +a computer where a \TEX\ job can take one core and basically is the only process +fighting for \CPU\ cache usage. But less memory access might be more relevant in +a scenario of multiple virtual machines running on the same hardware or multiple +\TEX\ processes on one machine. I didn't carefully measure that so I might be +wrong here. Anyway, it's always good to avoid moving around data when there is no +need for it. + +Just to temper expectations with respect to performance, here are some examples: + +\starttyping[option=TEX] +\catcode`!=9 % ignore this character +\firstoftwoarguments + {!!!!!!!!!!!!!!!!!!!}{!!!!!!!!!!!!!!!!!!!} +\secondoftwoarguments + {!!!!!!!!!!!!!!!!!!!}{!!!!!!!!!!!!!!!!!!!} +\secondoffourarguments + {!!!!!!!!!!!!!!!!!!!}{!!!!!!!!!!!!!!!!!!!} + {!!!!!!!!!!!!!!!!!!!}{!!!!!!!!!!!!!!!!!!!} +\stoptyping + +In \CONTEXT\ we define these macros as follows: + +\starttyping[option=TEX] +\def\firstoftwoarguments #1#2{#1} +\def\secondoftwoarguments #1#2{#2} +\def\secondoffourarguments#1#2#3#4{#2} +\stoptyping + +The performance of 2 million expansions is the following (probably half or less +on a more modern machine): + +\starttabulate[||||] +\BC macro \BC total \BC step \NC \NR +\NC \type {\firstoftwoarguments} \NC 0.245 \NC 0.000000123 \NC \NR +\NC \type {\secondoftwoarguments} \NC 0.251 \NC 0.000000126 \NC \NR +\NC \type {\secondoffourarguments} \NC 0.390 \NC 0.000000195 \NC \NR +\stoptabulate + +But we could use this instead: + +\starttyping[option=TEX] +\def\firstoftwoarguments #1#0{#1} +\def\secondoftwoarguments #0#2{#2} +\def\secondoffourarguments#0#2#0#0{#2} +\stoptyping + +which gives: + +\starttabulate[||||] +\BC macro \BC total \BC step \NC \NR +\NC \type {\firstoftwoarguments} \NC 0.229 \NC 0.000000115 \NC \NR +\NC \type {\secondoftwoarguments} \NC 0.236 \NC 0.000000118 \NC \NR +\NC \type {\secondoffourarguments} \NC 0.323 \NC 0.000000162 \NC \NR +\stoptabulate + +So, no impressive differences, especially when one considers that when that many +expansions happen in a run, getting the document itself rendered plus expanding +real arguments (not something defined to be ignored) will take way more time +compared to this. I always test an extension like this on the test suite +\footnote {Currently some 1600 files that take 24 minutes plus or minus 30 +seconds to process on a high end 2013 laptop. The 260 page manual with lots of +tables, verbatim and \METAPOST\ images takes around 11 seconds. A few +milliseconds more or less don't really show here. I only time these runs because +I want to make sure that there are no dramatic consequences.} as well as the +\LUAMETATEX\ manual (which takes about 11 seconds) and although one can notice a +little gain, it makes more sense not to play music on the same machine as we run +the \TEX\ job, if gaining milliseconds is that important. But, as said, it's more +about unnecessary memory access than about \CPU\ cycles. + +This extension is downward compatible and its overhead can be neglected. Okay, +the serialization now always uses \type {#} but it was inconsistent before, so +I'm willing to sacrifice that (and I'm pretty sure no \CONTEXT\ user cares or +will even notice). Also, it's only in \LUAMETATEX\ (for now) so that other macro +packages don't suffer from this patch. The few cases where \CONTEXT\ can benefit +from it are easy to isolate for \MKIV\ and \LMTX\ so we can support \LUATEX\ and +\LUAMETATEX. + +I mentioned \LUATEX\ and how it serializes, but for the record, let's see how +\PDFTEX, which is very close to original \TEX\ in terms of source code, does it. +If we have this input: + +\starttyping[option=TEX] +\catcode`D=\catcode`# +\catcode`O=\catcode`# +\catcode`N=\catcode`# +\catcode`-=\catcode`# +\catcode`K=\catcode`# +\catcode`N=\catcode`# +\catcode`U=\catcode`# +\catcode`T=\catcode`# +\catcode`H=\catcode`# + +\def\dek D1O2N3-4K5N6U7T8H9{#1#2#3 #4#6#7#8#9} + +{\meaning\dek \tracingall \dek don{}knuth} +\stoptyping + +The meaning gets typeset as: + +\starttyping +macro:D1O2N3-4K5N6U7T8H9->H1H2H3 H4H6H7H8H9don nuth +\stoptyping + +while the tracing reports: + +\starttyping +\dek D1O2N3-4K5N6U7T8H9->H1H2H3 H5H6H7H8H9 +D1<-d +O2<-o +N3<-n +-4<- +K5<-k +N6<-n +U7<-u +T8<-t +H9<-h +\stoptyping + +The reason for the difference, as mentioned, is that the tracing uses the +template and therefore uses the stored match token, while the meaning uses the +reference match tokens that carry the number and at that time has no access to +the original match token. Keeping track of that for the sake of tracing would not +make sense anyway. So, traditional \TEX, which is what \PDFTEX\ is very close to, +uses the last used match token, the \type {H}. Maybe this example can convince +you that dropping that bit of log related compatibility is not that much of a +problem. I just tell myself that I turned an unwanted side effect into a new +feature. + +\subject{A few side notes} + +The fact that characters can be given a special meaning is one of the charming +properties of \TEX. Take these two cases: + +\starttyping[option=TEX] +\bgroup\catcode`\&=5 &\egroup +\bgroup\catcode`\!=5 !\egroup +\stoptyping + +In both lines there is now an alignment character used outside an alignment. And, +in both cases the error message is similar: + +\starttyping +! Misplaced alignment tab character & +! Misplaced alignment tab character ! +\stoptyping + +So, indeed the right character is shown in the message. But, as soon as you ask +for help, there is a difference: in the first case the help is specific for a tab +character, but in the second case a more generic explanation is given. Just try +it. + +The reason is an explicit check for the ampersand being used as tab character. +Such is the charm of \TEX. I'll probably opt for a trivial change to be +consistent here, although in \CONTEXT\ the ampersand is just an ampersand so no +user will notice. + +There are a few more places where, although in principle any character can serve +any purpose, there are hard coded assumptions, like \type {$} being used for +math, so a missing dollar is reported, even if math started with another +character being used to enter math mode. This makes sense because there is no +urgent need to keep track of what specific character was used for entering math +mode. An even stronger argument could be that \TEX ies expect dollars to be used +for that purpose. Of course this works fine: + +\starttyping[option=TEX] +\catcode`€=\catcode`$ +€ \sqrt{x^3} € +\stoptyping + +But when we forget an \type {€} we get messages like: + +\starttyping +! Missing $ inserted +\stoptyping + +or more generic: + +\starttyping +! Extra }, or forgotten $ +\stoptyping + +which is definitely a confirmation of \quotation {America first}. Of course we +can compromise in display math because this is quite okay: + +\starttyping[option=TEX] +\catcode`€=\catcode`$ +$€ \sqrt{x^3} €$ +\stoptyping + +unless of course we forget the last dollar in which case we are told that + +\starttyping +! Display math should end with $$ +\stoptyping + +so no matter what, the dollar wins. Given how ugly the Euro sign looks I can live +with this, although I always wonder what character would have been taken if \TEX\ +was developed in another country. + +\stopchapter + +\stopcomponent diff --git a/doc/context/sources/general/manuals/evenmore/evenmore.tex b/doc/context/sources/general/manuals/evenmore/evenmore.tex index c2e4e232b..357fb9f24 100644 --- a/doc/context/sources/general/manuals/evenmore/evenmore.tex +++ b/doc/context/sources/general/manuals/evenmore/evenmore.tex @@ -21,8 +21,7 @@ \component evenmore-libraries \component evenmore-whattex \component evenmore-numbers - % \component evenmore-parameters - \startchapter[title=Parameters] {\em This will appear first in \TUGBOAT.} \stopchapter + \component evenmore-parameters \component evenmore-parsing \component evenmore-tokens \stopbodymatter diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 4433ce6fe..92f8f4cad 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2020.06.29 19:42} +\newcontextversion{2020.07.02 16:03} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index 3b40a3155..c8eddc1ab 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.29 19:42} +\edef\contextversion{2020.07.02 16:03} %D For those who want to use this: diff --git a/tex/context/base/mkiv/attr-ini.mkiv b/tex/context/base/mkiv/attr-ini.mkiv index 9eb1da69f..71c6478f8 100644 --- a/tex/context/base/mkiv/attr-ini.mkiv +++ b/tex/context/base/mkiv/attr-ini.mkiv @@ -139,8 +139,8 @@ %definesystemattribute [state] % nomath \definesystemattribute [color] [public] % global \definesystemattribute [colormodel] [public,global] -% \definesystemattribute [skip] -% \definesystemattribute [penalty] +%definesystemattribute [skip] +%definesystemattribute [penalty] \definesystemattribute [transparency] [public] \definesystemattribute [reference] [public] \definesystemattribute [destination] [public] diff --git a/tex/context/base/mkiv/back-exp.lua b/tex/context/base/mkiv/back-exp.lua index da2301db7..f247e4e27 100644 --- a/tex/context/base/mkiv/back-exp.lua +++ b/tex/context/base/mkiv/back-exp.lua @@ -3175,17 +3175,6 @@ local collectresults do -- too many locals otherwise end end end - elseif id == disc_code then -- probably too late - local pre, post, replace = getdisc(n) - if keephyphens then - if pre and not getnext(pre) and isglyph(pre) == 0xAD then -- hyphencode then - nofcurrentcontent = nofcurrentcontent + 1 - currentcontent[nofcurrentcontent] = hyphen - end - end - if replace then - collectresults(replace,nil) - end elseif id == glue_code then -- we need to distinguish between hskips and vskips local ca = getattr(n,a_characters) @@ -3403,6 +3392,18 @@ end end elseif not localparagraph and id == localpar_code and start_of_par(n) then localparagraph = getattr(n,a_taggedpar) + elseif id == disc_code then + -- very unlikely because we stripped them + local pre, post, replace = getdisc(n) + if keephyphens then + if pre and not getnext(pre) and isglyph(pre) == 0xAD then -- hyphencode then + nofcurrentcontent = nofcurrentcontent + 1 + currentcontent[nofcurrentcontent] = hyphen + end + end + if replace then + collectresults(replace,nil) + end end p = n pid = id diff --git a/tex/context/base/mkiv/buff-ver.mkiv b/tex/context/base/mkiv/buff-ver.mkiv index a3c27977f..3e1eee75a 100644 --- a/tex/context/base/mkiv/buff-ver.mkiv +++ b/tex/context/base/mkiv/buff-ver.mkiv @@ -811,6 +811,7 @@ \else \buff_verbatim_type_buffer_indeed\currenttyping\empty% [] \fi\fi + \useindentnextparameter\typingparameter \endgroup \dorechecknextindentation} @@ -825,7 +826,9 @@ \setuptyping[#1][#3]% \fi \buff_verbatim_type_buffer_indeed{#1}{#2}% - \endgroup} + \useindentnextparameter\typingparameter + \endgroup + \dorechecknextindentation} \unexpanded\def\buff_verbatim_type_buffer_indeed#1#2% category name {\edef\currenttyping{#1}% @@ -851,8 +854,7 @@ \endofverbatimlines \dostoptagged \stoppacked - \typingparameter\c!after - \dorechecknextindentation} + \typingparameter\c!after} \unexpanded\def\typeinlinebuffer {\dontleavehmode diff --git a/tex/context/base/mkiv/buff-ver.mkxl b/tex/context/base/mkiv/buff-ver.mkxl index 24579e05e..292365e8f 100644 --- a/tex/context/base/mkiv/buff-ver.mkxl +++ b/tex/context/base/mkiv/buff-ver.mkxl @@ -797,6 +797,7 @@ \else \buff_verbatim_type_buffer_indeed\currenttyping\empty% [] \fi + \useindentnextparameter\typingparameter \endgroup \dorechecknextindentation} @@ -811,7 +812,9 @@ \setuptyping[#1][#3]% \fi \buff_verbatim_type_buffer_indeed{#1}{#2}% - \endgroup} + \useindentnextparameter\typingparameter + \endgroup + \dorechecknextindentation} \unexpanded\def\buff_verbatim_type_buffer_indeed#1#2% category name {\edef\currenttyping{#1}% @@ -837,8 +840,7 @@ \endofverbatimlines \dostoptagged \stoppacked - \typingparameter\c!after - \dorechecknextindentation} + \typingparameter\c!after} \unexpanded\def\typeinlinebuffer {\dontleavehmode diff --git a/tex/context/base/mkiv/cldf-ini.lua b/tex/context/base/mkiv/cldf-ini.lua index 9569cf357..03c9be8f9 100644 --- a/tex/context/base/mkiv/cldf-ini.lua +++ b/tex/context/base/mkiv/cldf-ini.lua @@ -110,6 +110,10 @@ local newtoken = token.new local createtoken = token.create local setluatoken = token.set_lua +local isprintable = tex.isprintable or function(n) + return n and (type(n) == "string" or isnode(n) or istoken(n)) +end + local catcodenumbers = catcodes.numbers local ctxcatcodes = catcodenumbers.ctxcatcodes @@ -803,7 +807,8 @@ local function writer(parent,command,...) -- already optimized before call end elseif typ == "thread" then report_context("coroutines not supported as we cannot yield across boundaries") - elseif isnode(ti) then -- slow | why {} here ? + -- elseif isnode(ti) or istoken(ti) then + elseif isprintable(ti) then flush(currentcatcodes,"{",ti,"}") else local s = tostring(ti) @@ -967,7 +972,8 @@ local caller = function(parent,f,a,...) end elseif typ == "thread" then report_context("coroutines not supported as we cannot yield across boundaries") - elseif isnode(f) then -- slow + -- elseif isnode(f) or istoken(f) then + elseif isprintable(f) then flush(f) else local s = tostring(f) @@ -1062,8 +1068,7 @@ end) local function userdata(argument) if isnode(argument) then return formatters["<< %s node %i>>"](nodes.nodecodes[argument.id],tonut(argument)) - end - if istoken(argument) then + elseif istoken(argument) then local csname = argument.csname if csname then -- return formatters["<<\\%s>>"](csname) @@ -1074,8 +1079,9 @@ local function userdata(argument) return "<>" -- argument.mode end return "<>" + else + return "<>" end - return "<>" end diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 6d6aa3e1a..21e1a320d 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2020.06.29 19:42} +\newcontextversion{2020.07.02 16:03} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 472c2cb2d..9ad4337ed 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.29 19:42} +\edef\contextversion{2020.07.02 16:03} \edef\contextkind {beta} %D Kind of special: @@ -264,6 +264,7 @@ \loadmarkfile{lxml-sor} \loadmkvifile{typo-prc} +\loadmkivfile{typo-plc} % \loadmarkfile{anch-pos} diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index 8566fc72a..d72b40d9d 100644 --- a/tex/context/base/mkiv/context.mkxl +++ b/tex/context/base/mkiv/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.06.29 19:42} +\edef\contextversion{2020.07.02 16:03} \edef\contextkind {beta} %D Kind of special: @@ -252,6 +252,7 @@ \loadmarkfile{lxml-sor} \loadmkvifile{typo-prc} +\loadmkivfile{typo-plc} % \loadmarkfile{anch-pos} diff --git a/tex/context/base/mkiv/driv-shp.lua b/tex/context/base/mkiv/driv-shp.lua index 569a1f8dc..471fa92f0 100644 --- a/tex/context/base/mkiv/driv-shp.lua +++ b/tex/context/base/mkiv/driv-shp.lua @@ -437,33 +437,41 @@ end -- t[k] = v -- return v -- end +-- +-- local dirstack = setmetatableindex(dirstackentry) +-- +-- local function reset_dir_stack() +-- dirstack = setmetatableindex(dirstackentry) +-- end ------ dirstack = { } -local dirstack = setmetatableindex(dirstackentry) +local dirstack = { } local function reset_dir_stack() - -- dirstack = setmetatableindex(dirstackentry) dirstack = { } end +local leaderlevel = 0 + local function flushlatelua(current,h,v) + -- Here we assume maganement by the lua function so currently we don't + -- check for leaderlevel. return backends.latelua(current,h,v) end local function flushwriteout(current) - if not doing_leaders then + if leaderlevel == 0 then backends.writeout(current) end end local function flushopenout(current) - if not doing_leaders then + if leaderlevel == 0 then backends.openout(current) end end local function flushcloseout(current) - if not doing_leaders then + if leaderlevel == 0 then backends.closeout(current) end end @@ -539,8 +547,6 @@ local hlist_out, vlist_out do -- check frequencies of nodes hlist_out = function(this_box,current) - local outer_doing_leaders = false - local ref_h = pos_h local ref_v = pos_v local ref_r = pos_r @@ -635,6 +641,7 @@ local hlist_out, vlist_out do end end local shift = getshift(leader) + leaderlevel = leaderlevel + 1 while cur_h + width <= edge do local basepoint_h = 0 -- local basepoint_v = shift @@ -649,16 +656,14 @@ local hlist_out, vlist_out do end pos_v = ref_v - shift -- synced - outer_doing_leaders = doing_leaders - doing_leaders = true if getid(leader) == vlist_code then vlist_out(leader,getlist(leader)) else hlist_out(leader,getlist(leader)) end - doing_leaders = outer_doing_leaders cur_h = cur_h + width + lx end + leaderlevel = leaderlevel - 1 cur_h = edge - 10 else cur_h = cur_h + gluewidth @@ -746,14 +751,6 @@ local hlist_out, vlist_out do end end cur_h = cur_h + width - elseif id == disc_code then - local replace, tail = getreplace(current) - if replace and subtype ~= select_disc then - -- we could flatten .. no gain - setlink(tail,getnext(current)) - setlink(current,replace) - setreplace(current) - end elseif id == kern_code then local kern, factor = getkern(current,true) if kern ~= 0 then @@ -865,11 +862,22 @@ local hlist_out, vlist_out do elseif subtype == openwhatsit_code then flushopenout(current) end + elseif id == disc_code then + local replace, tail = getreplace(current) + if replace and subtype ~= select_disc then + -- we could flatten .. no gain + setlink(tail,getnext(current)) + setlink(current,replace) + setreplace(current) + end -- elseif id == localpar_code and start_of_par(current) then -- local pardir = getdirection(current) or lefttoright_code -- if pardir == righttoleft_code then -- end -- end + else + -- penalty, boundary ... no dimensions + goto synced end -- There is no gain in skipping over this when we have zero progression -- and such. @@ -887,8 +895,6 @@ local hlist_out, vlist_out do end vlist_out = function(this_box,current) - local outer_doing_leaders = false - local ref_h = pos_h local ref_v = pos_v local ref_r = pos_r @@ -968,6 +974,7 @@ local hlist_out, vlist_out do end end local shift = getshift(leader) + leaderlevel = leaderlevel + 1 while cur_v + total <= edge do -- todo: <= edge - total -- synch_pos_with_cur(ref_h, ref_v, getshift(leader), cur_v + height) if pos_r == righttoleft_code then @@ -977,16 +984,14 @@ local hlist_out, vlist_out do end pos_v = ref_v - (cur_v + height) -- synced - outer_doing_leaders = doing_leaders - doing_leaders = true if getid(leader) == vlist_code then vlist_out(leader,getlist(leader)) else hlist_out(leader,getlist(leader)) end - doing_leaders = outer_doing_leaders cur_v = cur_v + total + ly end + leaderlevel = leaderlevel - 1 cur_v = edge - 10 else cur_v = cur_v + glueheight @@ -1005,13 +1010,17 @@ local hlist_out, vlist_out do if not orientation then -- local basepoint_h = shift -- local basepoint_v = height - if boxdir ~= pos_r then - shift = shift + width - end - if pos_r == righttoleft_code then - pos_h = ref_h - shift + if shift == 0 then + pos_h = ref_h else - pos_h = ref_h + shift + if boxdir ~= pos_r then + shift = shift + width + end + if pos_r == righttoleft_code then + pos_h = ref_h - shift + else + pos_h = ref_h + shift + end end pos_v = ref_v - (cur_v + height) -- synced @@ -1114,6 +1123,9 @@ local hlist_out, vlist_out do elseif subtype == openwhatsit_code then flushopenout(current) end + else + -- penalty + goto synced end if pos_r == righttoleft_code then pos_h = ref_h - cur_h diff --git a/tex/context/base/mkiv/lxml-ini.mkiv b/tex/context/base/mkiv/lxml-ini.mkiv index 1c7006f57..52514519a 100644 --- a/tex/context/base/mkiv/lxml-ini.mkiv +++ b/tex/context/base/mkiv/lxml-ini.mkiv @@ -130,7 +130,7 @@ \let\xmlposition \xmlindex -\unexpanded\def\xmlinfo#1{\hbox{\ttxx[\clf_xmlname{#1}]}} +\unexpanded\def\xmlinfo#1{\hbox{\ttxx[\xmlname{#1}]}} \unexpanded\def\xmlshow#1{\startpacked\ttx\xmlverbatim{#1}\stoppacked} % the next one is handy for mode runs because it enforces a consistent diff --git a/tex/context/base/mkiv/mult-ini.mkiv b/tex/context/base/mkiv/mult-ini.mkiv index 641c8a4f5..b589f38f2 100644 --- a/tex/context/base/mkiv/mult-ini.mkiv +++ b/tex/context/base/mkiv/mult-ini.mkiv @@ -21,6 +21,10 @@ \registerctxluafile{mult-ini}{} +% Todo: + +\def\c!placeholder{placeholder} + %D \macros %D [constanten,variabelen,commands] %D {v!,c!,k!,s!,e!,m!,l!,r!,f!,p!,x!,y!} diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index 0a33fc00a..9fdf72dde 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -271,6 +271,7 @@ return { "etoksapp", "etokspre", "exceptionpenalty", + "expand", "expandafterpars", "expandafterspaces", "expandcstoken", diff --git a/tex/context/base/mkiv/node-aux.lua b/tex/context/base/mkiv/node-aux.lua index d13db4bba..88acdf3c5 100644 --- a/tex/context/base/mkiv/node-aux.lua +++ b/tex/context/base/mkiv/node-aux.lua @@ -641,233 +641,3 @@ do end end - -if not nodes.count then - - local type = type - - local direct = node.direct - local todirect = direct.tovaliddirect - local tonode = direct.tonode - - local count = direct.count - local length = direct.length - local slide = direct.slide - - function node.count(id,first,last) - return count(id,first and todirect(first), last and todirect(last) or nil) - end - - function node.length(first,last) - return length(first and todirect(first), last and todirect(last) or nil) - end - - function node.slide(n) - if n then - n = slide(todirect(n)) - if n then - return tonode(n) - end - end - return nil - end - - local hyphenating = direct.hyphenating - local ligaturing = direct.ligaturing - local kerning = direct.kerning - - -- kind of inconsistent - - function node.hyphenating(first,last) - if first then - local h, t = hyphenating(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - function node.ligaturing(first,last) - if first then - local h, t = ligaturing(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - function node.kerning(first,last) - if first then - local h, t = kerning(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - local protect_glyph = direct.protect_glyph - local unprotect_glyph = direct.unprotect_glyph - local protect_glyphs = direct.protect_glyphs - local unprotect_glyphs = direct.unprotect_glyphs - - function node.protect_glyphs(first,last) - protect_glyphs(todirect(first), last and todirect(last) or nil) - end - - function node.unprotect_glyphs(first,last) - unprotect_glyphs(todirect(first), last and todirect(last) or nil) - end - - function node.protect_glyph(first) - protect_glyph(todirect(first)) - end - - function node.unprotect_glyph(first) - unprotect_glyph(todirect(first)) - end - - local flatten_discretionaries = direct.flatten_discretionaries - local check_discretionaries = direct.check_discretionaries - local check_discretionary = direct.check_discretionary - - function node.flatten_discretionaries(first) - local h, count = flatten_discretionaries(todirect(first)) - return tonode(h), count - end - - function node.check_discretionaries(n) - check_discretionaries(todirect(n)) - end - - function node.check_discretionary(n) - check_discretionary(todirect(n)) - end - - local hpack = direct.hpack - local vpack = direct.vpack - local list_to_hlist = direct.mlist_to_hlist - - function node.hpack(head,...) - local h, badness = hpack(head and todirect(head) or nil,...) - return tonode(h), badness - end - - function node.vpack(head,...) - local h, badness = vpack(head and todirect(head) or nil,...) - return tonode(h), badness - end - - function node.mlist_to_hlist(head,...) - return tonode(mlist_to_hlist(head and todirect(head) or nil,...)) - end - - local end_of_math = direct.end_of_math - local find_attribute = direct.find_attribute - local first_glyph = direct.first_glyph - - function node.end_of_math(n) - if n then - n = end_of_math(todirect(n)) - if n then - return tonode(n) - end - end - return nil - end - - function node.find_attribute(n,a) - if n then - local v, n = find_attribute(todirect(n),a) - if n then - return v, tonode(n) - end - end - return nil - end - - function node.first_glyph(first,last) - local n = first_glyph(todirect(first), last and todirect(last) or nil) - return n and tonode(n) or nil - end - - local dimensions = direct.dimensions - local rangedimensions = direct.rangedimensions - local effective_glue = direct.effective_glue - - function node.dimensions(a,b,c,d,e) - if type(a) == "userdata" then - a = todirect(a) - if type(b) == "userdata" then - b = todirect(b) - end - return dimensions(a,b) - else - d = todirect(d) - if type(e) == "userdata" then - e = todirect(e) - end - return dimensions(a,b,c,d,e) - end - return 0, 0, 0 - end - - function node.rangedimensions(parent,first,last) - return rangedimenensions(todirect(parent),todirect(first),last and todirect(last)) - end - - function node.effective_glue(list,parent) - return effective_glue(list and todirect(list) or nil,parent and todirect(parent) or nil) - end - - local uses_font = direct.uses_font - local has_glyph = direct.has_glyph - local protrusion_skippable = direct.protrusion_skippable - local prepend_prevdepth = direct.prepend_prevdepth - local make_extensible = direct.make_extensible - - function node.uses_font(n,f) - return uses_font(todirect(n),f) - end - - function node.has_glyph(n) - return has_glyph(todirect(n)) - end - - function node.protrusion_skippable(n) - return protrusion_skippable(todirect(n)) - end - - function node.prepend_prevdepth(n) - local n, d = prepend_prevdepth(todirect(n)) - return tonode(n), d - end - - function node.make_extensible(...) - local n = make_extensible(...) - return n and tonode(n) or nil - end - - local last_node = direct.last_node - - function node.last_node() - local n = last_node() - return n and tonode(n) or nil - end - - local is_zero_glue = direct.is_zero_glue - local getglue = direct.getglue - local setglue = direct.setglue - - function node.is_zero_glue(n) - return is_zero_glue(todirect(n)) - end - - function node.get_glue(n) - return get_glue(todirect(n)) - end - - function node.set_glue(n) - return set_glue(todirect(n)) - end - -end diff --git a/tex/context/base/mkiv/node-cmp.lua b/tex/context/base/mkiv/node-cmp.lua index e13e93d1f..18b939999 100644 --- a/tex/context/base/mkiv/node-cmp.lua +++ b/tex/context/base/mkiv/node-cmp.lua @@ -1,3 +1,14 @@ +if not modules then modules = { } end modules ['node-cmp'] = { + version = 1.001, + comment = "companion to node-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- This is a LuaTeX compatibility module. The code below is no longer +-- present node-met or node-aux. These functions are rarely used. + if node.count then return end diff --git a/tex/context/base/mkiv/node-fin.lua b/tex/context/base/mkiv/node-fin.lua index a848cef69..a67ec5905 100644 --- a/tex/context/base/mkiv/node-fin.lua +++ b/tex/context/base/mkiv/node-fin.lua @@ -375,6 +375,7 @@ local function selective(attribute,head,inheritance,default) -- two attributes else check = has_dimensions(stack) end + else end if check then local c = getattr(stack,attribute) @@ -637,97 +638,97 @@ end) -- -- -- -do - - local cleaners = { } - local trace = true -- false - - function attributes.cleanup() - if next(cleaners) then - local values = setmetatableindex("table") - - if trace then - starttiming(values) - end - - local function check(l) - for n, id in nextnode, l do - if id == hlist_code or id == vlist_code or id == glue_code then - local l = getlist(n) - if l then - check(l) - end - end - for a in next, cleaners do - local v = getattr(n,a) - if v then - -- values[a] = values[a] + 1 - values[a][v] = true - end - end - end - end - - local top = texgetnest("ptr") - for i=1,top do - local l = texgetnest(i) - if l then - check(tonut(l.head)) - end - end - - do local l - l = tonut(texlists.page_ins_head) if l then check(l) end - l = tonut(texlists.contrib_head) if l then check(l) end - l = tonut(texlists.page_discards_head) if l then check(l) end - l = tonut(texlists.split_discards_head) if l then check(l) end - l = tonut(texlists.page_head) if l then check(l) end - end - - -- todo: traverseboxes - - for i=0,65535 do - local b = getbox(i) - if b then - local l = getlist(b) - if l then - check(l) - end - end - end - - for a, t in next, values do - cleaners[a](a,t) - end - - if trace then - stoptiming(values) - local a = table.sortedkeys(values) - local t = statistics.elapsedtime(values) - local r = tex.getcount("realpageno") - if #a == 0 then - logs.report("attributes","cleaning up at page %i took %s seconds, no attributes",r,t) - else - logs.report("attributes","cleaning up at page %i took %s seconds, attributes: % t",r,t,a) - end - end - end - end - - -- not yet used but when we do ... delay a call till we enable it (attr-ini.mkiv) - - -- local function show(a,t) for k, v in next, t do print(a,k) end end - -- - -- attributes.registercleaner( 1, show) - -- attributes.registercleaner( 2, show) - - function attributes.registercleaner(a,f) - cleaners[a] = f - end - - implement { - name = "cleanupattributes", - actions = attributes.cleanup, - } - -end +-- do +-- +-- local cleaners = { } +-- local trace = true -- false +-- +-- function attributes.cleanup() +-- if next(cleaners) then +-- local values = setmetatableindex("table") +-- +-- if trace then +-- starttiming(values) +-- end +-- +-- local function check(l) +-- for n, id in nextnode, l do +-- if id == hlist_code or id == vlist_code or id == glue_code then +-- local l = getlist(n) +-- if l then +-- check(l) +-- end +-- end +-- for a in next, cleaners do +-- local v = getattr(n,a) +-- if v then +-- -- values[a] = values[a] + 1 +-- values[a][v] = true +-- end +-- end +-- end +-- end +-- +-- local top = texgetnest("ptr") +-- for i=1,top do +-- local l = texgetnest(i) +-- if l then +-- check(tonut(l.head)) +-- end +-- end +-- +-- do local l +-- l = tonut(texlists.page_ins_head) if l then check(l) end +-- l = tonut(texlists.contrib_head) if l then check(l) end +-- l = tonut(texlists.page_discards_head) if l then check(l) end +-- l = tonut(texlists.split_discards_head) if l then check(l) end +-- l = tonut(texlists.page_head) if l then check(l) end +-- end +-- +-- -- todo: traverseboxes +-- +-- for i=0,65535 do +-- local b = getbox(i) +-- if b then +-- local l = getlist(b) +-- if l then +-- check(l) +-- end +-- end +-- end +-- +-- for a, t in next, values do +-- cleaners[a](a,t) +-- end +-- +-- if trace then +-- stoptiming(values) +-- local a = table.sortedkeys(values) +-- local t = statistics.elapsedtime(values) +-- local r = tex.getcount("realpageno") +-- if #a == 0 then +-- logs.report("attributes","cleaning up at page %i took %s seconds, no attributes",r,t) +-- else +-- logs.report("attributes","cleaning up at page %i took %s seconds, attributes: % t",r,t,a) +-- end +-- end +-- end +-- end +-- +-- -- not yet used but when we do ... delay a call till we enable it (attr-ini.mkiv) +-- +-- -- local function show(a,t) for k, v in next, t do print(a,k) end end +-- -- +-- -- attributes.registercleaner(1, show) +-- -- attributes.registercleaner(2, show) +-- +-- function attributes.registercleaner(a,f) +-- cleaners[a] = f +-- end +-- +-- implement { +-- name = "cleanupattributes", +-- actions = attributes.cleanup, +-- } +-- +-- end diff --git a/tex/context/base/mkiv/node-met.lua b/tex/context/base/mkiv/node-met.lua index db079c116..f472d31a9 100644 --- a/tex/context/base/mkiv/node-met.lua +++ b/tex/context/base/mkiv/node-met.lua @@ -629,233 +629,3 @@ end nodes.keys = keys -- [id][subtype] nodes.fields = nodefields -- (n) - -if not nodes.count then - - local type = type - - local direct = node.direct - local todirect = direct.tovaliddirect - local tonode = direct.tonode - - local count = direct.count - local length = direct.length - local slide = direct.slide - - function node.count(id,first,last) - return count(id,first and todirect(first), last and todirect(last) or nil) - end - - function node.length(first,last) - return length(first and todirect(first), last and todirect(last) or nil) - end - - function node.slide(n) - if n then - n = slide(todirect(n)) - if n then - return tonode(n) - end - end - return nil - end - - local hyphenating = direct.hyphenating - local ligaturing = direct.ligaturing - local kerning = direct.kerning - - -- kind of inconsistent - - function node.hyphenating(first,last) - if first then - local h, t = hyphenating(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - function node.ligaturing(first,last) - if first then - local h, t = ligaturing(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - function node.kerning(first,last) - if first then - local h, t = kerning(todirect(first), last and todirect(last) or nil) - return h and tonode(h) or nil, t and tonode(t) or nil, true - else - return nil, false - end - end - - local protect_glyph = direct.protect_glyph - local unprotect_glyph = direct.unprotect_glyph - local protect_glyphs = direct.protect_glyphs - local unprotect_glyphs = direct.unprotect_glyphs - - function node.protect_glyphs(first,last) - protect_glyphs(todirect(first), last and todirect(last) or nil) - end - - function node.unprotect_glyphs(first,last) - unprotect_glyphs(todirect(first), last and todirect(last) or nil) - end - - function node.protect_glyph(first) - protect_glyph(todirect(first)) - end - - function node.unprotect_glyph(first) - unprotect_glyph(todirect(first)) - end - - local flatten_discretionaries = direct.flatten_discretionaries - local check_discretionaries = direct.check_discretionaries - local check_discretionary = direct.check_discretionary - - function node.flatten_discretionaries(first) - local h, count = flatten_discretionaries(todirect(first)) - return tonode(h), count - end - - function node.check_discretionaries(n) - check_discretionaries(todirect(n)) - end - - function node.check_discretionary(n) - check_discretionary(todirect(n)) - end - - local hpack = direct.hpack - local vpack = direct.vpack - local list_to_hlist = direct.mlist_to_hlist - - function node.hpack(head,...) - local h, badness = hpack(head and todirect(head) or nil,...) - return tonode(h), badness - end - - function node.vpack(head,...) - local h, badness = vpack(head and todirect(head) or nil,...) - return tonode(h), badness - end - - function node.mlist_to_hlist(head,...) - return tonode(mlist_to_hlist(head and todirect(head) or nil,...)) - end - - local end_of_math = direct.end_of_math - local find_attribute = direct.find_attribute - local first_glyph = direct.first_glyph - - function node.end_of_math(n) - if n then - n = end_of_math(todirect(n)) - if n then - return tonode(n) - end - end - return nil - end - - function node.find_attribute(n,a) - if n then - local v, n = find_attribute(todirect(n),a) - if n then - return v, tonode(n) - end - end - return nil - end - - function node.first_glyph(first,last) - local n = first_glyph(todirect(first), last and todirect(last) or nil) - return n and tonode(n) or nil - end - - local dimensions = direct.dimensions - local rangedimensions = direct.rangedimensions - local effective_glue = direct.effective_glue - - function node.dimensions(a,b,c,d,e) - if type(a) == "userdata" then - a = todirect(a) - if type(b) == "userdata" then - b = todirect(b) - end - return dimensions(a,b) - else - d = todirect(d) - if type(e) == "userdata" then - e = todirect(e) - end - return dimensions(a,b,c,d,e) - end - return 0, 0, 0 - end - - function node.rangedimensions(parent,first,last) - return rangedimenensions(todirect(parent),todirect(first),last and todirect(last)) - end - - function node.effective_glue(list,parent) - return effective_glue(list and todirect(list) or nil,parent and todirect(parent) or nil) - end - - local uses_font = direct.uses_font - local has_glyph = direct.has_glyph - local protrusion_skippable = direct.protrusion_skippable - local prepend_prevdepth = direct.prepend_prevdepth - local make_extensible = direct.make_extensible - - function node.uses_font(n,f) - return uses_font(todirect(n),f) - end - - function node.has_glyph(n) - return has_glyph(todirect(n)) - end - - function node.protrusion_skippable(n) - return protrusion_skippable(todirect(n)) - end - - function node.prepend_prevdepth(n) - local n, d = prepend_prevdepth(todirect(n)) - return tonode(n), d - end - - function node.make_extensible(...) - local n = make_extensible(...) - return n and tonode(n) or nil - end - - local last_node = direct.last_node - - function node.last_node() - local n = last_node() - return n and tonode(n) or nil - end - - local is_zero_glue = direct.is_zero_glue - local getglue = direct.getglue - local setglue = direct.setglue - - function node.is_zero_glue(n) - return is_zero_glue(todirect(n)) - end - - function node.get_glue(n) - return get_glue(todirect(n)) - end - - function node.set_glue(n) - return set_glue(todirect(n)) - end - -end diff --git a/tex/context/base/mkiv/node-shp.lua b/tex/context/base/mkiv/node-shp.lua index 306e38f6a..7af789b1b 100644 --- a/tex/context/base/mkiv/node-shp.lua +++ b/tex/context/base/mkiv/node-shp.lua @@ -66,59 +66,61 @@ local removables = { -- (like marks) is not saving much and removing empty boxes is even -- dangerous because we can rely on dimensions (e.g. in references). -local wipedisc = false -- we can use them in the export ... can be option - -local function cleanup_redundant(head) -- better name is: flatten_page - local start = head - while start do - local id = getid(start) - if id == disc_code then - if getsubtype(start) == discretionarydisc_code then - local _, _, replace, _, _ tail = getdisc(start,true) - if replace then - local prev, next = getboth(start) - setfield(start,"replace",nil) - if start == head then - remove_node(head,start,true) - head = replace - else - remove_node(head,start,true) - end - if next then - setlink(tail,next) - end - if prev then - setlink(prev,replace) - else - setprev(replace) -- to be sure - end - start = next - elseif wipedisc then - -- pre and post can have values - head, start = remove_node(head,start,true) - else - start = getnext(start) - end - else - start = getnext(start) - end - elseif id == hlist_code or id == vlist_code then - local sl = getlist(start) - if sl then - local rl = cleanup_redundant(sl) - if rl ~= sl then - setlist(start,rl) - end - end - start = getnext(start) - else - start = getnext(start) - end - end - return head -end - -handlers.cleanuppage = cleanup_redundant -- nut +-- local wipedisc = false -- we can use them in the export ... can be option +-- +-- local function cleanup_redundant(head) -- better name is: flatten_page +-- local start = head +-- while start do +-- local id = getid(start) +-- if id == disc_code then +-- if getsubtype(start) == discretionarydisc_code then +-- local _, _, replace, _, _ tail = getdisc(start,true) +-- if replace then +-- local prev, next = getboth(start) +-- setfield(start,"replace",nil) +-- if start == head then +-- remove_node(head,start,true) +-- head = replace +-- else +-- remove_node(head,start,true) +-- end +-- if next then +-- setlink(tail,next) +-- end +-- if prev then +-- setlink(prev,replace) +-- else +-- setprev(replace) -- to be sure +-- end +-- start = next +-- elseif wipedisc then +-- -- pre and post can have values +-- head, start = remove_node(head,start,true) +-- else +-- start = getnext(start) +-- end +-- else +-- start = getnext(start) +-- end +-- elseif id == hlist_code or id == vlist_code then +-- local sl = getlist(start) +-- if sl then +-- local rl = cleanup_redundant(sl) +-- if rl ~= sl then +-- setlist(start,rl) +-- end +-- end +-- start = getnext(start) +-- else +-- start = getnext(start) +-- end +-- end +-- return head +-- end +-- +-- handlers.cleanuppage = cleanup_redundant -- nut + +handlers.cleanuppage = nuts.flatten_discretionaries local function cleanup_flushed(head) -- rough local start = head diff --git a/tex/context/base/mkiv/spac-lin.mkiv b/tex/context/base/mkiv/spac-lin.mkiv index 870e85954..ef87536f2 100644 --- a/tex/context/base/mkiv/spac-lin.mkiv +++ b/tex/context/base/mkiv/spac-lin.mkiv @@ -74,6 +74,42 @@ \let\spac_lines_break \relax \let\spac_after_first_obeyed_line\relax +\let\spac_lines_indent \relax + +%D See \type {indentation-005.tex}: +%D +%D \starttyping +%D \setuplines[indentnext={0pt,10pt,15pt,20pt}] +%D +%D \setupindenting[yes,1em] +%D \setuplines[indentnext={0pt,*,*}] +%D +%D \setuplines[indentnext={0pt,1em,*}] +%D \starttyping + +\newcount\c_spac_lines_indent_cnt +\newcount\c_spac_lines_indent_max +\newdimen\d_spac_lines_indent + +\def\spac_lines_indent_indeed + {\ifnum\c_spac_lines_indent_cnt=\c_spac_lines_indent_max + \c_spac_lines_indent_cnt\plusone + \else + \advance\c_spac_lines_indent_cnt\plusone + \fi + \getfromcommacommand[\m_spac_lines_indentnext][\c_spac_lines_indent_cnt]% + \ifx\commalistelement\wildcardsymbol + \hskip\d_spac_lines_indent + \else + \scratchdimen\dimexpr\commalistelement\relax + \hskip\ifdim\scratchdimen=\zeropoint + \zeropoint + \else + \scratchdimen + \d_spac_lines_indent\scratchdimen + \fi + \fi + \relax} \def\spac_lines_start_indeed[#1]% new: optional second argument (WS) {\iffirstargument @@ -96,23 +132,39 @@ \typesettinglinestrue \setupwhitespace[\v!none]% todo use fast variant %\obeylines % move upwards to keep spaces in the first line due to optional argument + % + \edef\m_spac_lines_indentnext{\linesparameter\c!indentnext}% + \getcommacommandsize[\m_spac_lines_indentnext]% + \c_spac_lines_indent_max\commalistsize + \c_spac_lines_indent_cnt\zerocount + \ifnum\c_spac_lines_indent_max>\plusone + \letlinesparameter\c!indentnext\empty + \let\spac_lines_indent\spac_lines_indent_indeed + \d_spac_lines_indent\d_spac_indentation_par + \else + \let\spac_lines_indent\relax + \fi + % \ignorespaces \glet\spac_after_first_obeyed_line\spac_lines_after_first_obeyed_line_a \let\obeyedline\spac_lines_obeyed_line \activatespacehandler{\linesparameter\c!space}% \dostarttagged\t!line\empty - \ignorepars} % this will become a nice lowercased helper + \ignorepars} + % we could have states instead and handle option in there \def\spac_lines_after_first_obeyed_line_a % tzt two pass, like itemize {\linesparameter\c!command + \spac_lines_indent \linesparameter\c!left \glet\spac_after_first_obeyed_line\spac_lines_after_first_obeyed_line_b} \def\spac_lines_after_first_obeyed_line_b {\spac_lines_break \linesparameter\c!command + \spac_lines_indent \linesparameter\c!left} \def\spac_lines_obeyed_line diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 7d52b1dca..2b85fcc22 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index f800c7b59..b34a061e8 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-sec.mkiv b/tex/context/base/mkiv/strc-sec.mkiv index a1f02b740..4959ffc16 100644 --- a/tex/context/base/mkiv/strc-sec.mkiv +++ b/tex/context/base/mkiv/strc-sec.mkiv @@ -145,6 +145,7 @@ \xdef\currentstructureshownumber {\structureparameter\c!number}% \xdef\currentstructuresaveinlist {\structureparameter\c!saveinlist}% \xdef\currentstructureincrementnumber{\structureparameter\c!incrementnumber}% + \xdef\currentstructureplaceholder {\structureparameter\c!placeholder}% \ifx\currentstructureexpansion\s!xml \xmlstartraw \xdef\currentstructuretitle {\structureparameter\c!title}% @@ -997,12 +998,26 @@ \setfalse\c_strc_sectioning_ignore_page % ignorespaces prevents spaces creeping in when after=\dontleavehmode \dostarttagged\t!sectioncontent\empty - \ifconditional\headisdisplay - \expandafter\ignorespaces + \ifx\currentstructureplaceholder\empty + \ifconditional\headisdisplay + \doubleexpandafter\ignorespaces + \else + \doubleexpandafter\ignorepars + \fi \else - \expandafter\ignorepars + \expandafter\strc_sectioning_placeholder \fi} +%D \starttyping +%D \startsubject[placeholder=todo,title=one] +%D whatever one +%D \stopsubject +%D \stoptyping + +\def\strc_sectioning_placeholder + {\placeholder[\currentstructureplaceholder]% + \gobblenested{\e!start\currenthead}{\e!stop\currenthead}{\e!stop\currenthead}} + % typesetting (the getters are public) \unexpanded\def\strc_rendering_place_head_number_and_text diff --git a/tex/context/base/mkiv/syst-aux.lua b/tex/context/base/mkiv/syst-aux.lua index 09232488d..4d81c4140 100644 --- a/tex/context/base/mkiv/syst-aux.lua +++ b/tex/context/base/mkiv/syst-aux.lua @@ -936,3 +936,25 @@ if CONTEXTLMTXMODE > 0 then } end + +-- For the moment here: + +if CONTEXTLMTXMODE > 0 then + + local create = token.create + local gobble = token.gobble + + implement { + name = "gobblenested", + public = true, + protected = true, + arguments = "3 strings", + actions = function(start,stop,command) + gobble(create(start),create(stop)) + if command then + context[command]() + end + end + } + +end diff --git a/tex/context/base/mkiv/syst-aux.mkiv b/tex/context/base/mkiv/syst-aux.mkiv index 20716786d..43d9c6b31 100644 --- a/tex/context/base/mkiv/syst-aux.mkiv +++ b/tex/context/base/mkiv/syst-aux.mkiv @@ -4976,6 +4976,12 @@ \unexpanded\def\gobbleuntilrelax#1\relax {} +% experimental + +\unexpanded\def\gobblenested#1#2#3% + {\normalexpanded{\def\next##1\csname#2\endcsname}{\csname#3\endcsname}% + \next}% + %D The next one simply expands the pickup up tokens. %D %D \starttyping diff --git a/tex/context/base/mkiv/task-ini.lua b/tex/context/base/mkiv/task-ini.lua index 19fff66b8..366c7009e 100644 --- a/tex/context/base/mkiv/task-ini.lua +++ b/tex/context/base/mkiv/task-ini.lua @@ -68,9 +68,9 @@ appendaction("processors", "lists", "languages.visualizediscretionaries" appendaction("processors", "after", "typesetters.marksuspects", nil, "nut", "disabled" ) +appendaction("shipouts", "normalizers", "nodes.handlers.cleanuppage", nil, "nut", "production") appendaction("shipouts", "normalizers", "typesetters.showsuspects", nil, "nut", "disabled" ) appendaction("shipouts", "normalizers", "typesetters.margins.finalhandler", nil, "nut", "disabled" ) -------------("shipouts", "normalizers", "nodes.handlers.cleanuppage", nil, "nut", "disabled" ) appendaction("shipouts", "normalizers", "builders.paragraphs.expansion.trace", nil, "nut", "disabled" ) appendaction("shipouts", "normalizers", "typesetters.alignments.handler", nil, "nut", "disabled" ) appendaction("shipouts", "normalizers", "nodes.references.handler", nil, "nut", "production") diff --git a/tex/context/base/mkiv/toks-ini.lua b/tex/context/base/mkiv/toks-ini.lua index 184a17489..e0c093492 100644 --- a/tex/context/base/mkiv/toks-ini.lua +++ b/tex/context/base/mkiv/toks-ini.lua @@ -44,7 +44,7 @@ local scan_toks = token.scan_toks local scan_string = token.scan_string local scan_argument = token.scan_argument local scan_delimited = token.scan_delimited -local scan_tokenlist = token.scan_tokenlist +local scan_tokenlist = token.scan_tokenlist or scan_string local scan_int = token.scan_int local scan_code = token.scan_code local scan_token_code = token.scan_token_code diff --git a/tex/context/base/mkiv/typo-plc.mkiv b/tex/context/base/mkiv/typo-plc.mkiv new file mode 100644 index 000000000..dbc9f081d --- /dev/null +++ b/tex/context/base/mkiv/typo-plc.mkiv @@ -0,0 +1,39 @@ +%D \module +%D [ file=typo-plc, +%D version=2020.07.01, +%D title=\CONTEXT\ Typesetting Macros, +%D subtitle=Placeholders, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Typesetting Macros / Placeholders} + +\unprotect + +\installcorenamespace {placeholder} + +\installcommandhandler \??placeholder {placeholder} \??placeholder + +\unexpanded\def\placeholder[#1]% + {\begingroup + \edef\currentplaceholder{#1}% + \placeholderparameter\c!before + \useplaceholderstyleandcolor\c!style\c!color + \placeholderparameter\c!text + \placeholderparameter\c!after + \endgroup} + +\defineplaceholder + [todo] + %[\c!text={Still to be written!}, + [\c!text=todo, % labeltext ? + \c!style=\v!bold, + \c!before=\blank, + \c!after=\blank] + +\protect \endinput diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 0cb8301af..51ab6e32e 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2020-06-29 19:42 +-- merge date : 2020-07-02 16:03 do -- begin closure to overcome local limits and interference -- cgit v1.2.3