summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2021-09-13 10:02:31 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2021-09-13 10:02:31 +0200
commita8c525cd14d77b94662021671ef8eb62d5a7fe50 (patch)
treede834dfbe0fbdf277ca206d59896cacc4f9840c9
parent0b177b615d126b85d1399fba3cc55bb0d3ddfbba (diff)
downloadcontext-a8c525cd14d77b94662021671ef8eb62d5a7fe50.tar.gz
2021-09-13 09:40:00
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua4
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties97
-rw-r--r--context/data/textadept/context/data/scite-context-data-tex.lua4
-rw-r--r--context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json2
-rw-r--r--doc/context/documents/general/manuals/lowlevel-alignments.pdfbin73590 -> 74011 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-boxes.pdfbin78543 -> 73060 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-characters.pdfbin52979 -> 48469 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-conditionals.pdfbin104674 -> 96046 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-expansion.pdfbin85769 -> 86301 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-grouping.pdfbin30762 -> 28200 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-inserts.pdfbin0 -> 38122 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-macros.pdfbin85117 -> 82764 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-marks.pdfbin62467 -> 62989 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-paragraphs.pdfbin266886 -> 268073 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-registers.pdfbin43435 -> 43739 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-scope.pdfbin46060 -> 44386 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel-security.pdfbin41760 -> 40571 bytes
-rw-r--r--doc/context/documents/general/manuals/lowlevel.pdfbin0 -> 657745 bytes
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex28
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex26
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex28
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-conditionals.tex212
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-expansion.tex24
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex38
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex202
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex58
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-marks.tex33
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex38
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex22
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex16
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex16
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel-style.tex39
-rw-r--r--doc/context/sources/general/manuals/lowlevel/lowlevel.tex39
-rw-r--r--scripts/context/lua/mtxrun.lua6
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua6
-rw-r--r--scripts/context/stubs/unix/mtxrun6
-rw-r--r--scripts/context/stubs/win64/mtxrun.lua6
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/font-ots.lua64
-rw-r--r--tex/context/base/mkiv/mult-prm.lua4
-rw-r--r--tex/context/base/mkiv/node-fin.lua2
-rw-r--r--tex/context/base/mkiv/node-tra.lua96
-rw-r--r--tex/context/base/mkiv/page-inj.mkvi10
-rw-r--r--tex/context/base/mkiv/page-mix.lua41
-rw-r--r--tex/context/base/mkiv/page-one.mkiv24
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin24895 -> 24888 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin251457 -> 251989 bytes
-rw-r--r--tex/context/base/mkiv/util-prs.lua4
-rw-r--r--tex/context/base/mkxl/buff-ver.mkxl2
-rw-r--r--tex/context/base/mkxl/cont-new.mkxl2
-rw-r--r--tex/context/base/mkxl/context.mkxl2
-rw-r--r--tex/context/base/mkxl/font-ots.lmt71
-rw-r--r--tex/context/base/mkxl/lpdf-img.lmt67
-rw-r--r--tex/context/base/mkxl/lpdf-lmt.lmt38
-rw-r--r--tex/context/base/mkxl/meta-imp-bitmaps.mkxl51
-rw-r--r--tex/context/base/mkxl/mlib-scn.lmt5
-rw-r--r--tex/context/base/mkxl/mult-aux.mkxl3
-rw-r--r--tex/context/base/mkxl/node-fin.lmt2
-rw-r--r--tex/context/base/mkxl/node-nut.lmt2
-rw-r--r--tex/context/base/mkxl/node-res.lmt18
-rw-r--r--tex/context/base/mkxl/node-tra.lmt91
-rw-r--r--tex/context/base/mkxl/page-ini.mkxl26
-rw-r--r--tex/context/base/mkxl/page-inj.mklx10
-rw-r--r--tex/context/base/mkxl/page-ins.mkxl25
-rw-r--r--tex/context/base/mkxl/page-mix.mkxl18
-rw-r--r--tex/context/base/mkxl/page-one.mkxl65
-rw-r--r--tex/context/base/mkxl/page-pcl.mkxl64
-rw-r--r--tex/context/base/mkxl/page-sid.mkxl63
-rw-r--r--tex/context/base/mkxl/spac-ver.lmt218
-rw-r--r--tex/context/base/mkxl/strc-mat.mkxl8
-rw-r--r--tex/context/base/mkxl/strc-not.mklx3
-rw-r--r--tex/context/base/mkxl/syst-ini.mkxl6
-rw-r--r--tex/context/base/mkxl/trac-vis.lmt23
-rw-r--r--tex/context/base/mkxl/typo-bld.lmt4
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua57
78 files changed, 1412 insertions, 735 deletions
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 82e0db1ea..da46c364a 100644
--- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua
+++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
@@ -1,9 +1,9 @@
return {
["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" },
["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracinglevels", "tracingnesting", "unexpanded", "unless", "widowpenalties" },
- ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbaseheight", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathextrasubpreshift", "Umathextrasubshift", "Umathextrasuppreshift", "Umathextrasupshift", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathvextensiblevariant", "Umathvoid", "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", "aliased", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentmarks", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontid", "fontmathcontrol", "fontspecifiedsize", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphyoffset", "glyphyscale", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmode", "insertmultiplier", "insertprogress", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastchkdim", "lastchknum", "lastnamedcs", "lastnodesubtype", "lastparcontext", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathcontrolmode", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathfontcontrol", "mathitalicsmode", "mathnolimitsmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscale", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "mugluespecdef", "mutable", "noaligned", "noboundary", "nohrule", "norelax", "normalizelinemode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "semiexpanded", "semiprotected", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingalignments", "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracingmarks", "tracingmath", "undent", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoksapp", "xtokspre" },
+ ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbaseheight", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathextrasubpreshift", "Umathextrasubshift", "Umathextrasuppreshift", "Umathextrasupshift", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathvextensiblevariant", "Umathvoid", "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", "aliased", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentmarks", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontid", "fontmathcontrol", "fontspecifiedsize", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphyoffset", "glyphyscale", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmode", "insertmultiplier", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastchkdim", "lastchknum", "lastnamedcs", "lastnodesubtype", "lastparcontext", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathcontrolmode", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathfontcontrol", "mathitalicsmode", "mathnolimitsmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscale", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "mugluespecdef", "mutable", "noaligned", "noboundary", "nohrule", "norelax", "normalizelinemode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "semiexpanded", "semiprotected", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingalignments", "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracinginserts", "tracingmarks", "tracingmath", "undent", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "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", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "beginsimplegroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "endsimplegroup", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "todimension", "tointeger", "toks", "toksdef", "tolerance", "topmark", "topskip", "toscaled", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
+ ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "beginsimplegroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "endsimplegroup", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "pagevsize", "par", "parfillleftskip", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "todimension", "tointeger", "toks", "toksdef", "tolerance", "topmark", "topskip", "toscaled", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
["xetex"]={ "XeTeXversion" },
} \ No newline at end of file
diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties
index bd6917036..e83bc62b6 100644
--- a/context/data/scite/context/scite-context-data-tex.properties
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -83,31 +83,32 @@ ifmathparameter ifmathstyle ifnumexpression ifnumval ifparameter \
ifparameters ifrelax iftok ignorearguments ignorepars \
immediate immutable initcatcodetable insertbox insertcopy \
insertdepth insertdistance insertheight insertheights insertlimit \
-insertmode insertmultiplier insertprogress insertunbox insertuncopy \
-insertwidth instance integerdef lastarguments lastchkdim \
-lastchknum lastnamedcs lastnodesubtype lastparcontext leftmarginkern \
-letcharcode letcsname letfrozen letprotected lettonothing \
-linedirection localbrokenpenalty localcontrol localcontrolled localinterlinepenalty \
-localleftbox localrightbox lpcode luabytecode luabytecodecall \
-luacopyinputnodes luadef luaescapestring luafunction luafunctioncall \
-luatexbanner luatexrevision luatexversion mathcontrolmode mathdelimitersmode \
-mathdirection mathdisplayskipmode matheqnogapstep mathflattenmode mathfontcontrol \
-mathitalicsmode mathnolimitsmode mathpenaltiesmode mathrulesfam mathrulesmode \
-mathrulethicknessmode mathscale mathscriptboxmode mathscriptcharmode mathscriptsmode \
-mathstyle mathsurroundmode mathsurroundskip mugluespecdef mutable \
-noaligned noboundary nohrule norelax normalizelinemode \
-nospaces novrule numericscale numexpression orelse \
-orunless outputbox overloaded overloadmode parametercount \
-parametermark parattribute pardirection permanent postexhyphenchar \
-posthyphenchar prebinoppenalty predisplaygapfactor preexhyphenchar prehyphenchar \
-prerelpenalty protrudechars protrusionboundary pxdimen quitvmode \
-retokenized rightmarginkern rpcode savecatcodetable scantextokens \
-semiexpanded semiprotected setfontid snapshotpar supmarkmode \
-swapcsvalues tabsize textdirection thewithoutunit tokenized \
-toksapp tokspre tolerant tpack tracingalignments \
-tracingexpressions tracingfonts tracinghyphenation tracingmarks tracingmath \
-undent unletfrozen unletprotected untraced vpack \
-wordboundary wrapuppar xdefcsname xtoksapp xtokspre
+insertmode insertmultiplier insertprogress insertstorage insertstoring \
+insertunbox insertuncopy insertwidth instance integerdef \
+lastarguments lastchkdim lastchknum lastnamedcs lastnodesubtype \
+lastparcontext leftmarginkern letcharcode letcsname letfrozen \
+letprotected lettonothing linedirection localbrokenpenalty localcontrol \
+localcontrolled localinterlinepenalty localleftbox localrightbox lpcode \
+luabytecode luabytecodecall luacopyinputnodes luadef luaescapestring \
+luafunction luafunctioncall luatexbanner luatexrevision luatexversion \
+mathcontrolmode mathdelimitersmode mathdirection mathdisplayskipmode matheqnogapstep \
+mathflattenmode mathfontcontrol mathitalicsmode mathnolimitsmode mathpenaltiesmode \
+mathrulesfam mathrulesmode mathrulethicknessmode mathscale mathscriptboxmode \
+mathscriptcharmode mathscriptsmode mathstyle mathsurroundmode mathsurroundskip \
+mugluespecdef mutable noaligned noboundary nohrule \
+norelax normalizelinemode nospaces novrule numericscale \
+numexpression orelse orunless outputbox overloaded \
+overloadmode parametercount parametermark parattribute pardirection \
+permanent postexhyphenchar posthyphenchar prebinoppenalty predisplaygapfactor \
+preexhyphenchar prehyphenchar prerelpenalty protrudechars protrusionboundary \
+pxdimen quitvmode retokenized rightmarginkern rpcode \
+savecatcodetable scantextokens semiexpanded semiprotected setfontid \
+snapshotpar supmarkmode swapcsvalues tabsize textdirection \
+thewithoutunit tokenized toksapp tokspre tolerant \
+tpack tracingalignments tracingexpressions tracingfonts tracinghyphenation \
+tracinginserts tracingmarks tracingmath undent unletfrozen \
+unletprotected untraced vpack wordboundary wrapuppar \
+xdefcsname xtoksapp xtokspre
keywordclass.tex.omega=\
Omegaminorversion Omegarevision Omegaversion
@@ -182,29 +183,29 @@ nulldelimiterspace nullfont number omit or \
outer output outputpenalty over overfullrule \
overline overshoot overwithdelims pagedepth pagefilllstretch \
pagefillstretch pagefilstretch pagegoal pageshrink pagestretch \
-pagetotal par parfillleftskip parfillskip parindent \
-parshape parskip patterns pausing penalty \
-postdisplaypenalty predisplaypenalty predisplaysize pretolerance prevdepth \
-prevgraf radical raise relax relpenalty \
-right righthyphenmin rightskip romannumeral scaledfontdimen \
-scriptfont scriptscriptfont scriptscriptstyle scriptspace scriptstyle \
-scrollmode setbox setlanguage sfcode shipout \
-show showbox showboxbreadth showboxdepth showlists \
-shownodedetails showthe skewchar skip skipdef \
-spacefactor spaceskip span splitbotmark splitfirstmark \
-splitmaxdepth splittopskip string tabskip textfont \
-textstyle the thickmuskip thinmuskip time \
-todimension tointeger toks toksdef tolerance \
-topmark topskip toscaled tracingcommands tracinglostchars \
-tracingmacros tracingonline tracingoutput tracingpages tracingparagraphs \
-tracingrestores tracingstats uccode uchyph underline \
-unhbox unhcopy unhpack unkern unpenalty \
-unskip unvbox unvcopy unvpack uppercase \
-vadjust valign vbadness vbox vcenter \
-vfil vfill vfilneg vfuzz vrule \
-vsize vskip vsplit vss vtop \
-wd widowpenalty xdef xleaders xspaceskip \
-year
+pagetotal pagevsize par parfillleftskip parfillskip \
+parindent parshape parskip patterns pausing \
+penalty postdisplaypenalty predisplaypenalty predisplaysize pretolerance \
+prevdepth prevgraf radical raise relax \
+relpenalty right righthyphenmin rightskip romannumeral \
+scaledfontdimen scriptfont scriptscriptfont scriptscriptstyle scriptspace \
+scriptstyle scrollmode setbox setlanguage sfcode \
+shipout show showbox showboxbreadth showboxdepth \
+showlists shownodedetails showthe skewchar skip \
+skipdef spacefactor spaceskip span splitbotmark \
+splitfirstmark splitmaxdepth splittopskip string tabskip \
+textfont textstyle the thickmuskip thinmuskip \
+time todimension tointeger toks toksdef \
+tolerance topmark topskip toscaled tracingcommands \
+tracinglostchars tracingmacros tracingonline tracingoutput tracingpages \
+tracingparagraphs tracingrestores tracingstats uccode uchyph \
+underline unhbox unhcopy unhpack unkern \
+unpenalty unskip unvbox unvcopy unvpack \
+uppercase vadjust valign vbadness vbox \
+vcenter vfil vfill vfilneg vfuzz \
+vrule vsize vskip vsplit vss \
+vtop wd widowpenalty xdef xleaders \
+xspaceskip year
keywordclass.tex.xetex=\
XeTeXversion
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 82e0db1ea..da46c364a 100644
--- a/context/data/textadept/context/data/scite-context-data-tex.lua
+++ b/context/data/textadept/context/data/scite-context-data-tex.lua
@@ -1,9 +1,9 @@
return {
["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" },
["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracinglevels", "tracingnesting", "unexpanded", "unless", "widowpenalties" },
- ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbaseheight", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathextrasubpreshift", "Umathextrasubshift", "Umathextrasuppreshift", "Umathextrasupshift", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathvextensiblevariant", "Umathvoid", "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", "aliased", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentmarks", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontid", "fontmathcontrol", "fontspecifiedsize", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphyoffset", "glyphyscale", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmode", "insertmultiplier", "insertprogress", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastchkdim", "lastchknum", "lastnamedcs", "lastnodesubtype", "lastparcontext", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathcontrolmode", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathfontcontrol", "mathitalicsmode", "mathnolimitsmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscale", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "mugluespecdef", "mutable", "noaligned", "noboundary", "nohrule", "norelax", "normalizelinemode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "semiexpanded", "semiprotected", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingalignments", "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracingmarks", "tracingmath", "undent", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "xtoksapp", "xtokspre" },
+ ["luatex"]={ "UUskewed", "UUskewedwithdelims", "Uabove", "Uabovewithdelims", "Uatop", "Uatopwithdelims", "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Uhextensible", "Uleft", "Umathaccent", "Umathaccentbaseheight", "Umathaccentvariant", "Umathadapttoleft", "Umathadapttoright", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathbotaccentvariant", "Umathchar", "Umathcharclass", "Umathchardef", "Umathcharfam", "Umathcharnum", "Umathcharnumdef", "Umathcharslot", "Umathclass", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathdegreevariant", "Umathdelimiterovervariant", "Umathdelimiterundervariant", "Umathdenominatorvariant", "Umathextrasubpreshift", "Umathextrasubshift", "Umathextrasuppreshift", "Umathextrasupshift", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathfractionvariant", "Umathhextensiblevariant", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathlimits", "Umathnoaxis", "Umathnolimits", "Umathnolimitsubfactor", "Umathnolimitsupfactor", "Umathnumeratorvariant", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathopenupdepth", "Umathopenupheight", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervariant", "Umathoverdelimitervgap", "Umathoverlayaccentvariant", "Umathoverlinevariant", "Umathphantom", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvariant", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathskewedfractionhgap", "Umathskewedfractionvgap", "Umathspaceafterscript", "Umathspacebeforescript", "Umathspacingmode", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvariant", "Umathstackvgap", "Umathsubscriptvariant", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsuperscriptvariant", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathtopaccentvariant", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervariant", "Umathunderdelimitervgap", "Umathunderlinevariant", "Umathvextensiblevariant", "Umathvoid", "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", "aliased", "alignmark", "aligntab", "atendofgroup", "atendofgrouped", "attribute", "attributedef", "automaticdiscretionary", "automatichyphenpenalty", "automigrationmode", "autoparagraphmode", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "currentmarks", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "flushmarks", "fontid", "fontmathcontrol", "fontspecifiedsize", "fonttextcontrol", "formatname", "frozen", "futurecsname", "futuredef", "futureexpand", "futureexpandis", "futureexpandisap", "gdefcsname", "gleaders", "glet", "gletcsname", "glettonothing", "gluespecdef", "glyphdatafield", "glyphoptions", "glyphscale", "glyphscriptfield", "glyphscriptscale", "glyphscriptscriptscale", "glyphstatefield", "glyphtextscale", "glyphxoffset", "glyphxscale", "glyphyoffset", "glyphyscale", "gtoksapp", "gtokspre", "hccode", "hjcode", "hpack", "hyphenationmin", "hyphenationmode", "ifabsdim", "ifabsnum", "ifarguments", "ifboolean", "ifchkdim", "ifchknum", "ifcmpdim", "ifcmpnum", "ifcondition", "ifcstok", "ifdimexpression", "ifdimval", "ifempty", "ifflags", "ifhaschar", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "ifnumexpression", "ifnumval", "ifparameter", "ifparameters", "ifrelax", "iftok", "ignorearguments", "ignorepars", "immediate", "immutable", "initcatcodetable", "insertbox", "insertcopy", "insertdepth", "insertdistance", "insertheight", "insertheights", "insertlimit", "insertmode", "insertmultiplier", "insertprogress", "insertstorage", "insertstoring", "insertunbox", "insertuncopy", "insertwidth", "instance", "integerdef", "lastarguments", "lastchkdim", "lastchknum", "lastnamedcs", "lastnodesubtype", "lastparcontext", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "localbrokenpenalty", "localcontrol", "localcontrolled", "localinterlinepenalty", "localleftbox", "localrightbox", "lpcode", "luabytecode", "luabytecodecall", "luacopyinputnodes", "luadef", "luaescapestring", "luafunction", "luafunctioncall", "luatexbanner", "luatexrevision", "luatexversion", "mathcontrolmode", "mathdelimitersmode", "mathdirection", "mathdisplayskipmode", "matheqnogapstep", "mathflattenmode", "mathfontcontrol", "mathitalicsmode", "mathnolimitsmode", "mathpenaltiesmode", "mathrulesfam", "mathrulesmode", "mathrulethicknessmode", "mathscale", "mathscriptboxmode", "mathscriptcharmode", "mathscriptsmode", "mathstyle", "mathsurroundmode", "mathsurroundskip", "mugluespecdef", "mutable", "noaligned", "noboundary", "nohrule", "norelax", "normalizelinemode", "nospaces", "novrule", "numericscale", "numexpression", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parametermark", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "retokenized", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "semiexpanded", "semiprotected", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "tabsize", "textdirection", "thewithoutunit", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingalignments", "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracinginserts", "tracingmarks", "tracingmath", "undent", "unletfrozen", "unletprotected", "untraced", "vpack", "wordboundary", "wrapuppar", "xdefcsname", "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", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "beginsimplegroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "endsimplegroup", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "par", "parfillleftskip", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "todimension", "tointeger", "toks", "toksdef", "tolerance", "topmark", "topskip", "toscaled", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
+ ["tex"]={ " ", "-", "/", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "aligncontent", "atop", "atopwithdelims", "badness", "baselineskip", "batchmode", "begingroup", "beginsimplegroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "botmark", "box", "boxmaxdepth", "brokenpenalty", "catcode", "char", "chardef", "cleaders", "clubpenalty", "copy", "count", "countdef", "cr", "crcr", "csname", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "dimen", "dimendef", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "edef", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "endsimplegroup", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "fam", "fi", "finalhyphendemerits", "firstmark", "floatingpenalty", "font", "fontdimen", "fontname", "fontspecifiedname", "futurelet", "gdef", "global", "globaldefs", "glyph", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifcase", "ifcat", "ifdim", "iffalse", "ifhbox", "ifhmode", "ifinner", "ifmmode", "ifnum", "ifodd", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "indent", "input", "inputlineno", "insert", "insertpenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastpenalty", "lastskip", "lccode", "leaders", "left", "lefthyphenmin", "leftskip", "leqno", "let", "limits", "linepenalty", "lineskip", "lineskiplimit", "long", "looseness", "lower", "lowercase", "mark", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "meaningfull", "meaningless", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "multiply", "muskip", "muskipdef", "newlinechar", "noalign", "noexpand", "noindent", "nolimits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "omit", "or", "outer", "output", "outputpenalty", "over", "overfullrule", "overline", "overshoot", "overwithdelims", "pagedepth", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageshrink", "pagestretch", "pagetotal", "pagevsize", "par", "parfillleftskip", "parfillskip", "parindent", "parshape", "parskip", "patterns", "pausing", "penalty", "postdisplaypenalty", "predisplaypenalty", "predisplaysize", "pretolerance", "prevdepth", "prevgraf", "radical", "raise", "relax", "relpenalty", "right", "righthyphenmin", "rightskip", "romannumeral", "scaledfontdimen", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showlists", "shownodedetails", "showthe", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "splitbotmark", "splitfirstmark", "splitmaxdepth", "splittopskip", "string", "tabskip", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "todimension", "tointeger", "toks", "toksdef", "tolerance", "topmark", "topskip", "toscaled", "tracingcommands", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingstats", "uccode", "uchyph", "underline", "unhbox", "unhcopy", "unhpack", "unkern", "unpenalty", "unskip", "unvbox", "unvcopy", "unvpack", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalty", "xdef", "xleaders", "xspaceskip", "year" },
["xetex"]={ "XeTeXversion" },
} \ No newline at end of file
diff --git a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
index f60c3726e..f71986cd5 100644
--- a/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
+++ b/context/data/vscode/extensions/context/syntaxes/context-syntax-tex.json
@@ -216,7 +216,7 @@
]
},
"primitive" : {
- "match" : "\u005C\u005C(year|xtokspre|xtoksapp|xspaceskip|xleaders|xdefcsname|xdef|wrapuppar|wordboundary|widowpenalty|widowpenalties|wd|vtop|vss|vsplit|vskip|vsize|vrule|vpack|vfuzz|vfilneg|vfill|vfil|vcenter|vbox|vbadness|valign|vadjust|uppercase|unvpack|unvcopy|unvbox|untraced|unskip|unpenalty|unletprotected|unletfrozen|unless|unkern|unhpack|unhcopy|unhbox|underline|undent|uchyph|uccode|tracingstats|tracingrestores|tracingparagraphs|tracingpages|tracingoutput|tracingonline|tracingnesting|tracingmath|tracingmarks|tracingmacros|tracinglostchars|tracinglevels|tracingifs|tracinghyphenation|tracinggroups|tracingfonts|tracingexpressions|tracingcommands|tracingassigns|tracingalignments|tpack|toscaled|topskip|topmarks|topmark|tolerant|tolerance|tokspre|toksdef|toksapp|toks|tokenized|tointeger|todimension|time|thinmuskip|thickmuskip|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|tabsize|swapcsvalues|supmarkmode|string|splittopskip|splitmaxdepth|splitfirstmarks|splitfirstmark|splitdiscards|splitbotmarks|splitbotmark|span|spaceskip|spacefactor|snapshotpar|skipdef|skip|skewchar|showtokens|showthe|shownodedetails|showlists|showifs|showgroups|showboxdepth|showboxbreadth|showbox|show|shipout|sfcode|setlanguage|setfontid|setbox|semiprotected|semiexpanded|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|scaledfontdimen|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|retokenized|relpenalty|relax|raise|radical|quitvmode|pxdimen|protrusionboundary|protrudechars|protected|prevgraf|prevdepth|pretolerance|prerelpenalty|prehyphenchar|preexhyphenchar|predisplaysize|predisplaypenalty|predisplaygapfactor|predisplaydirection|prebinoppenalty|posthyphenchar|postexhyphenchar|postdisplaypenalty|permanent|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|parattribute|parametermark|parametercount|par|pagetotal|pagestretch|pageshrink|pagegoal|pagefilstretch|pagefillstretch|pagefilllstretch|pagediscards|pagedepth|overwithdelims|overshoot|overloadmode|overloaded|overline|overfullrule|over|outputpenalty|outputbox|output|outer|orunless|orelse|or|omit|numexpression|numexpr|numericscale|number|nullfont|nulldelimiterspace|novrule|nospaces|normalyear|normalxtokspre|normalxtoksapp|normalxspaceskip|normalxleaders|normalxdefcsname|normalxdef|normalwrapuppar|normalwordboundary|normalwidowpenalty|normalwidowpenalties|normalwd|normalvtop|normalvss|normalvsplit|normalvskip|normalvsize|normalvrule|normalvpack|normalvfuzz|normalvfilneg|normalvfill|normalvfil|normalvcenter|normalvbox|normalvbadness|normalvalign|normalvadjust|normaluppercase|normalunvpack|normalunvcopy|normalunvbox|normaluntraced|normalunskip|normalunpenalty|normalunletprotected|normalunletfrozen|normalunless|normalunkern|normalunhpack|normalunhcopy|normalunhbox|normalunexpanded|normalunderline|normalundent|normaluchyph|normaluccode|normaltracingstats|normaltracingrestores|normaltracingparagraphs|normaltracingpages|normaltracingoutput|normaltracingonline|normaltracingnesting|normaltracingmath|normaltracingmarks|normaltracingmacros|normaltracinglostchars|normaltracinglevels|normaltracingifs|normaltracinghyphenation|normaltracinggroups|normaltracingfonts|normaltracingexpressions|normaltracingcommands|normaltracingassigns|normaltracingalignments|normaltpack|normaltoscaled|normaltopskip|normaltopmarks|normaltopmark|normaltolerant|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltokenized|normaltointeger|normaltodimension|normaltime|normalthinmuskip|normalthickmuskip|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|normaltabsize|normalswapcsvalues|normalsupmarkmode|normalstring|normalsplittopskip|normalsplitmaxdepth|normalsplitfirstmarks|normalsplitfirstmark|normalsplitdiscards|normalsplitbotmarks|normalsplitbotmark|normalspan|normalspaceskip|normalspacefactor|normalsnapshotpar|normalskipdef|normalskip|normalskewchar|normalshowtokens|normalshowthe|normalshownodedetails|normalshowlists|normalshowifs|normalshowgroups|normalshowboxdepth|normalshowboxbreadth|normalshowbox|normalshow|normalshipout|normalsfcode|normalsetlanguage|normalsetfontid|normalsetbox|normalsemiprotected|normalsemiexpanded|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalscaledfontdimen|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|normalretokenized|normalrelpenalty|normalrelax|normalraise|normalradical|normalquitvmode|normalpxdimen|normalprotrusionboundary|normalprotrudechars|normalprotected|normalprevgraf|normalprevdepth|normalpretolerance|normalprerelpenalty|normalprehyphenchar|normalpreexhyphenchar|normalpredisplaysize|normalpredisplaypenalty|normalpredisplaygapfactor|normalpredisplaydirection|normalprebinoppenalty|normalposthyphenchar|normalpostexhyphenchar|normalpostdisplaypenalty|normalpermanent|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|normalparfillleftskip|normalpardirection|normalparattribute|normalparametermark|normalparametercount|normalpar|normalpagetotal|normalpagestretch|normalpageshrink|normalpagegoal|normalpagefilstretch|normalpagefillstretch|normalpagefilllstretch|normalpagediscards|normalpagedepth|normaloverwithdelims|normalovershoot|normaloverloadmode|normaloverloaded|normaloverline|normaloverfullrule|normalover|normaloutputpenalty|normaloutputbox|normaloutput|normalouter|normalorunless|normalorelse|normalor|normalomit|normalnumexpression|normalnumexpr|normalnumericscale|normalnumber|normalnullfont|normalnulldelimiterspace|normalnovrule|normalnospaces|normalnormalizelinemode|normalnorelax|normalnonstopmode|normalnonscript|normalnolimits|normalnoindent|normalnohrule|normalnoexpand|normalnoboundary|normalnoaligned|normalnoalign|normalnewlinechar|normalmutoglue|normalmutable|normalmuskipdef|normalmuskip|normalmultiply|normalmugluespecdef|normalmuexpr|normalmskip|normalmoveright|normalmoveleft|normalmonth|normalmkern|normalmiddle|normalmessage|normalmedmuskip|normalmeaningless|normalmeaningfull|normalmeaning|normalmaxdepth|normalmaxdeadcycles|normalmathsurroundskip|normalmathsurroundmode|normalmathsurround|normalmathstyle|normalmathscriptsmode|normalmathscriptcharmode|normalmathscriptboxmode|normalmathscale|normalmathrulethicknessmode|normalmathrulesmode|normalmathrulesfam|normalmathrel|normalmathpunct|normalmathpenaltiesmode|normalmathord|normalmathopen|normalmathop|normalmathnolimitsmode|normalmathitalicsmode|normalmathinner|normalmathfontcontrol|normalmathflattenmode|normalmatheqnogapstep|normalmathdisplayskipmode|normalmathdirection|normalmathdelimitersmode|normalmathcontrolmode|normalmathcode|normalmathclose|normalmathchoice|normalmathchardef|normalmathchar|normalmathbin|normalmathaccent|normalmarks|normalmark|normalluatexversion|normalluatexrevision|normalluatexbanner|normalluafunctioncall|normalluafunction|normalluaescapestring|normalluadef|normalluacopyinputnodes|normalluabytecodecall|normalluabytecode|normallpcode|normallowercase|normallower|normallooseness|normallong|normallocalrightbox|normallocalleftbox|normallocalinterlinepenalty|normallocalcontrolled|normallocalcontrol|normallocalbrokenpenalty|normallineskiplimit|normallineskip|normallinepenalty|normallinedirection|normallimits|normallettonothing|normalletprotected|normalletfrozen|normalletcsname|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|normallastparcontext|normallastnodetype|normallastnodesubtype|normallastnamedcs|normallastlinefit|normallastkern|normallastchknum|normallastchkdim|normallastbox|normallastarguments|normallanguage|normalkern|normaljobname|normalizelinemode|normalinterlinepenalty|normalinterlinepenalties|normalinteractionmode|normalintegerdef|normalinstance|normalinsertwidth|normalinsertuncopy|normalinsertunbox|normalinsertprogress|normalinsertpenalties|normalinsertmultiplier|normalinsertmode|normalinsertlimit|normalinsertheights|normalinsertheight|normalinsertdistance|normalinsertdepth|normalinsertcopy|normalinsertbox|normalinsert|normalinputlineno|normalinput|normalinitcatcodetable|normalindent|normalimmutable|normalimmediate|normalignorespaces|normalignorepars|normalignorearguments|normalifx|normalifvoid|normalifvmode|normalifvbox|normaliftrue|normaliftok|normalifrelax|normalifpdfprimitive|normalifpdfabsnum|normalifpdfabsdim|normalifparameters|normalifparameter|normalifodd|normalifnumval|normalifnumexpression|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinsert|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normalifhaschar|normaliffontchar|normalifflags|normaliffalse|normalifempty|normalifdimval|normalifdimexpression|normalifdim|normalifdefined|normalifcstok|normalifcsname|normalifcondition|normalifcmpnum|normalifcmpdim|normalifchknum|normalifchkdim|normalifcat|normalifcase|normalifboolean|normalifarguments|normalifabsnum|normalifabsdim|normalif|normalhyphenpenalty|normalhyphenchar|normalhyphenationmode|normalhyphenationmin|normalhyphenation|normalht|normalhss|normalhskip|normalhsize|normalhrule|normalhpack|normalholdinginserts|normalhjcode|normalhfuzz|normalhfilneg|normalhfill|normalhfil|normalhccode|normalhbox|normalhbadness|normalhangindent|normalhangafter|normalhalign|normalgtokspre|normalgtoksapp|normalglyphyscale|normalglyphyoffset|normalglyphxscale|normalglyphxoffset|normalglyphtextscale|normalglyphstatefield|normalglyphscriptscriptscale|normalglyphscriptscale|normalglyphscriptfield|normalglyphscale|normalglyphoptions|normalglyphdatafield|normalglyph|normalgluetomu|normalgluestretchorder|normalgluestretch|normalgluespecdef|normalglueshrinkorder|normalglueshrink|normalglueexpr|normalglobaldefs|normalglobal|normalglettonothing|normalgletcsname|normalglet|normalgleaders|normalgdefcsname|normalgdef|normalfuturelet|normalfutureexpandisap|normalfutureexpandis|normalfutureexpand|normalfuturedef|normalfuturecsname|normalfrozen|normalformatname|normalfonttextcontrol|normalfontspecifiedsize|normalfontspecifiedname|normalfontname|normalfontmathcontrol|normalfontid|normalfontdimen|normalfontcharwd|normalfontcharic|normalfontcharht|normalfontchardp|normalfont|normalflushmarks|normalfloatingpenalty|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|normaleverybeforepar|normaletokspre|normaletoksapp|normalescapechar|normalerrorstopmode|normalerrorcontextlines|normalerrmessage|normalerrhelp|normaleqno|normalenforced|normalendsimplegroup|normalendlocalcontrol|normalendlinechar|normalendinput|normalendgroup|normalendcsname|normalend|normalemergencystretch|normalelse|normalefcode|normaledefcsname|normaledef|normaldump|normaldp|normaldoublehyphendemerits|normaldivide|normaldisplaywidth|normaldisplaywidowpenalty|normaldisplaywidowpenalties|normaldisplaystyle|normaldisplaylimits|normaldisplayindent|normaldiscretionary|normaldirectlua|normaldimexpression|normaldimexpr|normaldimensiondef|normaldimendef|normaldimen|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefcsname|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|normalcurrentmarks|normalcurrentiftype|normalcurrentiflevel|normalcurrentifbranch|normalcurrentgrouptype|normalcurrentgrouplevel|normalcsstring|normalcsname|normalcrcr|normalcrampedtextstyle|normalcrampedscriptstyle|normalcrampedscriptscriptstyle|normalcrampeddisplaystyle|normalcr|normalcountdef|normalcount|normalcopy|normalclubpenalty|normalclubpenalties|normalclearmarks|normalcleaders|normalchardef|normalchar|normalcatcodetable|normalcatcode|normalbrokenpenalty|normalboxyoffset|normalboxymove|normalboxxoffset|normalboxxmove|normalboxtotal|normalboxorientation|normalboxmaxdepth|normalboxdirection|normalboxattribute|normalbox|normalboundary|normalbotmarks|normalbotmark|normalbinoppenalty|normalbelowdisplayskip|normalbelowdisplayshortskip|normalbeginsimplegroup|normalbeginlocalcontrol|normalbegingroup|normalbegincsname|normalbatchmode|normalbaselineskip|normalbadness|normalautoparagraphmode|normalautomigrationmode|normalautomatichyphenpenalty|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|normalaligncontent|normalaliased|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|normalUmathvoid|normalUmathvextensiblevariant|normalUmathunderlinevariant|normalUmathunderdelimitervgap|normalUmathunderdelimitervariant|normalUmathunderdelimiterbgap|normalUmathunderbarvgap|normalUmathunderbarrule|normalUmathunderbarkern|normalUmathtopaccentvariant|normalUmathsupsubbottommax|normalUmathsupshiftup|normalUmathsupshiftdrop|normalUmathsuperscriptvariant|normalUmathsupbottommin|normalUmathsubtopmax|normalUmathsubsupvgap|normalUmathsubsupshiftdown|normalUmathsubshiftdrop|normalUmathsubshiftdown|normalUmathsubscriptvariant|normalUmathstackvgap|normalUmathstackvariant|normalUmathstacknumup|normalUmathstackdenomdown|normalUmathspacingmode|normalUmathspacebeforescript|normalUmathspaceafterscript|normalUmathskewedfractionvgap|normalUmathskewedfractionhgap|normalUmathrelrelspacing|normalUmathrelpunctspacing|normalUmathrelordspacing|normalUmathrelopspacing|normalUmathrelopenspacing|normalUmathrelinnerspacing|normalUmathrelclosespacing|normalUmathrelbinspacing|normalUmathradicalvgap|normalUmathradicalvariant|normalUmathradicalrule|normalUmathradicalkern|normalUmathradicaldegreeraise|normalUmathradicaldegreebefore|normalUmathradicaldegreeafter|normalUmathquad|normalUmathpunctrelspacing|normalUmathpunctpunctspacing|normalUmathpunctordspacing|normalUmathpunctopspacing|normalUmathpunctopenspacing|normalUmathpunctinnerspacing|normalUmathpunctclosespacing|normalUmathpunctbinspacing|normalUmathphantom|normalUmathoverlinevariant|normalUmathoverlayaccentvariant|normalUmathoverdelimitervgap|normalUmathoverdelimitervariant|normalUmathoverdelimiterbgap|normalUmathoverbarvgap|normalUmathoverbarrule|normalUmathoverbarkern|normalUmathordrelspacing|normalUmathordpunctspacing|normalUmathordordspacing|normalUmathordopspacing|normalUmathordopenspacing|normalUmathordinnerspacing|normalUmathordclosespacing|normalUmathordbinspacing|normalUmathoprelspacing|normalUmathoppunctspacing|normalUmathopordspacing|normalUmathopopspacing|normalUmathopopenspacing|normalUmathopinnerspacing|normalUmathoperatorsize|normalUmathopenupheight|normalUmathopenupdepth|normalUmathopenrelspacing|normalUmathopenpunctspacing|normalUmathopenordspacing|normalUmathopenopspacing|normalUmathopenopenspacing|normalUmathopeninnerspacing|normalUmathopenclosespacing|normalUmathopenbinspacing|normalUmathopclosespacing|normalUmathopbinspacing|normalUmathnumeratorvariant|normalUmathnolimitsupfactor|normalUmathnolimitsubfactor|normalUmathnolimits|normalUmathnoaxis|normalUmathlimits|normalUmathlimitbelowvgap|normalUmathlimitbelowkern|normalUmathlimitbelowbgap|normalUmathlimitabovevgap|normalUmathlimitabovekern|normalUmathlimitabovebgap|normalUmathinnerrelspacing|normalUmathinnerpunctspacing|normalUmathinnerordspacing|normalUmathinneropspacing|normalUmathinneropenspacing|normalUmathinnerinnerspacing|normalUmathinnerclosespacing|normalUmathinnerbinspacing|normalUmathhextensiblevariant|normalUmathfractionvariant|normalUmathfractionrule|normalUmathfractionnumvgap|normalUmathfractionnumup|normalUmathfractiondenomvgap|normalUmathfractiondenomdown|normalUmathfractiondelsize|normalUmathextrasupshift|normalUmathextrasuppreshift|normalUmathextrasubshift|normalUmathextrasubpreshift|normalUmathdenominatorvariant|normalUmathdelimiterundervariant|normalUmathdelimiterovervariant|normalUmathdegreevariant|normalUmathconnectoroverlapmin|normalUmathcodenum|normalUmathcode|normalUmathcloserelspacing|normalUmathclosepunctspacing|normalUmathcloseordspacing|normalUmathcloseopspacing|normalUmathcloseopenspacing|normalUmathcloseinnerspacing|normalUmathcloseclosespacing|normalUmathclosebinspacing|normalUmathclass|normalUmathcharslot|normalUmathcharnumdef|normalUmathcharnum|normalUmathcharfam|normalUmathchardef|normalUmathcharclass|normalUmathchar|normalUmathbotaccentvariant|normalUmathbinrelspacing|normalUmathbinpunctspacing|normalUmathbinordspacing|normalUmathbinopspacing|normalUmathbinopenspacing|normalUmathbininnerspacing|normalUmathbinclosespacing|normalUmathbinbinspacing|normalUmathaxis|normalUmathadapttoright|normalUmathadapttoleft|normalUmathaccentvariant|normalUmathaccentbaseheight|normalUmathaccent|normalUleft|normalUhextensible|normalUdelimiterunder|normalUdelimiterover|normalUdelimiter|normalUdelcodenum|normalUdelcode|normalUchar|normalUatopwithdelims|normalUatop|normalUabovewithdelims|normalUabove|normalUUskewedwithdelims|normalUUskewed|normalOmegaversion|normalOmegarevision|normalOmegaminorversion|normalAlephversion|normalAlephrevision|normalAlephminorversion|normal |norelax|nonstopmode|nonscript|nolimits|noindent|nohrule|noexpand|noboundary|noaligned|noalign|newlinechar|mutoglue|mutable|muskipdef|muskip|multiply|mugluespecdef|muexpr|mskip|moveright|moveleft|month|mkern|middle|message|medmuskip|meaningless|meaningfull|meaning|maxdepth|maxdeadcycles|mathsurroundskip|mathsurroundmode|mathsurround|mathstyle|mathscriptsmode|mathscriptcharmode|mathscriptboxmode|mathscale|mathrulethicknessmode|mathrulesmode|mathrulesfam|mathrel|mathpunct|mathpenaltiesmode|mathord|mathopen|mathop|mathnolimitsmode|mathitalicsmode|mathinner|mathfontcontrol|mathflattenmode|matheqnogapstep|mathdisplayskipmode|mathdirection|mathdelimitersmode|mathcontrolmode|mathcode|mathclose|mathchoice|mathchardef|mathchar|mathbin|mathaccent|marks|mark|luatexversion|luatexrevision|luatexbanner|luafunctioncall|luafunction|luaescapestring|luadef|luacopyinputnodes|luabytecodecall|luabytecode|lpcode|lowercase|lower|looseness|long|localrightbox|localleftbox|localinterlinepenalty|localcontrolled|localcontrol|localbrokenpenalty|lineskiplimit|lineskip|linepenalty|linedirection|limits|lettonothing|letprotected|letfrozen|letcsname|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|lastparcontext|lastnodetype|lastnodesubtype|lastnamedcs|lastlinefit|lastkern|lastchknum|lastchkdim|lastbox|lastarguments|language|kern|jobname|interlinepenalty|interlinepenalties|interactionmode|integerdef|instance|insertwidth|insertuncopy|insertunbox|insertprogress|insertpenalties|insertmultiplier|insertmode|insertlimit|insertheights|insertheight|insertdistance|insertdepth|insertcopy|insertbox|insert|inputlineno|input|initcatcodetable|indent|immutable|immediate|ignorespaces|ignorepars|ignorearguments|ifx|ifvoid|ifvmode|ifvbox|iftrue|iftok|ifrelax|ifpdfprimitive|ifpdfabsnum|ifpdfabsdim|ifparameters|ifparameter|ifodd|ifnumval|ifnumexpression|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinsert|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|ifhaschar|iffontchar|ifflags|iffalse|ifempty|ifdimval|ifdimexpression|ifdim|ifdefined|ifcstok|ifcsname|ifcondition|ifcmpnum|ifcmpdim|ifchknum|ifchkdim|ifcat|ifcase|ifboolean|ifarguments|ifabsnum|ifabsdim|if|hyphenpenalty|hyphenchar|hyphenationmode|hyphenationmin|hyphenation|ht|hss|hskip|hsize|hrule|hpack|holdinginserts|hjcode|hfuzz|hfilneg|hfill|hfil|hccode|hbox|hbadness|hangindent|hangafter|halign|gtokspre|gtoksapp|glyphyscale|glyphyoffset|glyphxscale|glyphxoffset|glyphtextscale|glyphstatefield|glyphscriptscriptscale|glyphscriptscale|glyphscriptfield|glyphscale|glyphoptions|glyphdatafield|glyph|gluetomu|gluestretchorder|gluestretch|gluespecdef|glueshrinkorder|glueshrink|glueexpr|globaldefs|global|glettonothing|gletcsname|glet|gleaders|gdefcsname|gdef|futurelet|futureexpandisap|futureexpandis|futureexpand|futuredef|futurecsname|frozen|formatname|fonttextcontrol|fontspecifiedsize|fontspecifiedname|fontname|fontmathcontrol|fontid|fontdimen|fontcharwd|fontcharic|fontcharht|fontchardp|font|flushmarks|floatingpenalty|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|everybeforepar|etokspre|etoksapp|escapechar|errorstopmode|errorcontextlines|errmessage|errhelp|eqno|enforced|endsimplegroup|endlocalcontrol|endlinechar|endinput|endgroup|endcsname|end|emergencystretch|else|efcode|edefcsname|edef|dump|dp|doublehyphendemerits|divide|displaywidth|displaywidowpenalty|displaywidowpenalties|displaystyle|displaylimits|displayindent|discretionary|directlua|dimexpression|dimexpr|dimensiondef|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defcsname|defaultskewchar|defaulthyphenchar|def|deadcycles|day|currentmarks|currentiftype|currentiflevel|currentifbranch|currentgrouptype|currentgrouplevel|csstring|csname|crcr|crampedtextstyle|crampedscriptstyle|crampedscriptscriptstyle|crampeddisplaystyle|cr|countdef|count|copy|clubpenalty|clubpenalties|clearmarks|cleaders|chardef|char|catcodetable|catcode|brokenpenalty|boxyoffset|boxymove|boxxoffset|boxxmove|boxtotal|boxorientation|boxmaxdepth|boxdirection|boxattribute|box|boundary|botmarks|botmark|binoppenalty|belowdisplayskip|belowdisplayshortskip|beginsimplegroup|beginlocalcontrol|begingroup|begincsname|batchmode|baselineskip|badness|autoparagraphmode|automigrationmode|automatichyphenpenalty|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|aligncontent|aliased|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|Umathvoid|Umathvextensiblevariant|Umathunderlinevariant|Umathunderdelimitervgap|Umathunderdelimitervariant|Umathunderdelimiterbgap|Umathunderbarvgap|Umathunderbarrule|Umathunderbarkern|Umathtopaccentvariant|Umathsupsubbottommax|Umathsupshiftup|Umathsupshiftdrop|Umathsuperscriptvariant|Umathsupbottommin|Umathsubtopmax|Umathsubsupvgap|Umathsubsupshiftdown|Umathsubshiftdrop|Umathsubshiftdown|Umathsubscriptvariant|Umathstackvgap|Umathstackvariant|Umathstacknumup|Umathstackdenomdown|Umathspacingmode|Umathspacebeforescript|Umathspaceafterscript|Umathskewedfractionvgap|Umathskewedfractionhgap|Umathrelrelspacing|Umathrelpunctspacing|Umathrelordspacing|Umathrelopspacing|Umathrelopenspacing|Umathrelinnerspacing|Umathrelclosespacing|Umathrelbinspacing|Umathradicalvgap|Umathradicalvariant|Umathradicalrule|Umathradicalkern|Umathradicaldegreeraise|Umathradicaldegreebefore|Umathradicaldegreeafter|Umathquad|Umathpunctrelspacing|Umathpunctpunctspacing|Umathpunctordspacing|Umathpunctopspacing|Umathpunctopenspacing|Umathpunctinnerspacing|Umathpunctclosespacing|Umathpunctbinspacing|Umathphantom|Umathoverlinevariant|Umathoverlayaccentvariant|Umathoverdelimitervgap|Umathoverdelimitervariant|Umathoverdelimiterbgap|Umathoverbarvgap|Umathoverbarrule|Umathoverbarkern|Umathordrelspacing|Umathordpunctspacing|Umathordordspacing|Umathordopspacing|Umathordopenspacing|Umathordinnerspacing|Umathordclosespacing|Umathordbinspacing|Umathoprelspacing|Umathoppunctspacing|Umathopordspacing|Umathopopspacing|Umathopopenspacing|Umathopinnerspacing|Umathoperatorsize|Umathopenupheight|Umathopenupdepth|Umathopenrelspacing|Umathopenpunctspacing|Umathopenordspacing|Umathopenopspacing|Umathopenopenspacing|Umathopeninnerspacing|Umathopenclosespacing|Umathopenbinspacing|Umathopclosespacing|Umathopbinspacing|Umathnumeratorvariant|Umathnolimitsupfactor|Umathnolimitsubfactor|Umathnolimits|Umathnoaxis|Umathlimits|Umathlimitbelowvgap|Umathlimitbelowkern|Umathlimitbelowbgap|Umathlimitabovevgap|Umathlimitabovekern|Umathlimitabovebgap|Umathinnerrelspacing|Umathinnerpunctspacing|Umathinnerordspacing|Umathinneropspacing|Umathinneropenspacing|Umathinnerinnerspacing|Umathinnerclosespacing|Umathinnerbinspacing|Umathhextensiblevariant|Umathfractionvariant|Umathfractionrule|Umathfractionnumvgap|Umathfractionnumup|Umathfractiondenomvgap|Umathfractiondenomdown|Umathfractiondelsize|Umathextrasupshift|Umathextrasuppreshift|Umathextrasubshift|Umathextrasubpreshift|Umathdenominatorvariant|Umathdelimiterundervariant|Umathdelimiterovervariant|Umathdegreevariant|Umathconnectoroverlapmin|Umathcodenum|Umathcode|Umathcloserelspacing|Umathclosepunctspacing|Umathcloseordspacing|Umathcloseopspacing|Umathcloseopenspacing|Umathcloseinnerspacing|Umathcloseclosespacing|Umathclosebinspacing|Umathclass|Umathcharslot|Umathcharnumdef|Umathcharnum|Umathcharfam|Umathchardef|Umathcharclass|Umathchar|Umathbotaccentvariant|Umathbinrelspacing|Umathbinpunctspacing|Umathbinordspacing|Umathbinopspacing|Umathbinopenspacing|Umathbininnerspacing|Umathbinclosespacing|Umathbinbinspacing|Umathaxis|Umathadapttoright|Umathadapttoleft|Umathaccentvariant|Umathaccentbaseheight|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|xdefcsname|xdef|wrapuppar|wordboundary|widowpenalty|widowpenalties|wd|vtop|vss|vsplit|vskip|vsize|vrule|vpack|vfuzz|vfilneg|vfill|vfil|vcenter|vbox|vbadness|valign|vadjust|uppercase|unvpack|unvcopy|unvbox|untraced|unskip|unpenalty|unletprotected|unletfrozen|unless|unkern|unhpack|unhcopy|unhbox|underline|undent|uchyph|uccode|tracingstats|tracingrestores|tracingparagraphs|tracingpages|tracingoutput|tracingonline|tracingnesting|tracingmath|tracingmarks|tracingmacros|tracinglostchars|tracinglevels|tracinginserts|tracingifs|tracinghyphenation|tracinggroups|tracingfonts|tracingexpressions|tracingcommands|tracingassigns|tracingalignments|tpack|toscaled|topskip|topmarks|topmark|tolerant|tolerance|tokspre|toksdef|toksapp|toks|tokenized|tointeger|todimension|time|thinmuskip|thickmuskip|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|tabsize|swapcsvalues|supmarkmode|string|splittopskip|splitmaxdepth|splitfirstmarks|splitfirstmark|splitdiscards|splitbotmarks|splitbotmark|span|spaceskip|spacefactor|snapshotpar|skipdef|skip|skewchar|showtokens|showthe|shownodedetails|showlists|showifs|showgroups|showboxdepth|showboxbreadth|showbox|show|shipout|sfcode|setlanguage|setfontid|setbox|semiprotected|semiexpanded|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|scaledfontdimen|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|retokenized|relpenalty|relax|raise|radical|quitvmode|pxdimen|protrusionboundary|protrudechars|protected|prevgraf|prevdepth|pretolerance|prerelpenalty|prehyphenchar|preexhyphenchar|predisplaysize|predisplaypenalty|predisplaygapfactor|predisplaydirection|prebinoppenalty|posthyphenchar|postexhyphenchar|postdisplaypenalty|permanent|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|parattribute|parametermark|parametercount|par|pagevsize|pagetotal|pagestretch|pageshrink|pagegoal|pagefilstretch|pagefillstretch|pagefilllstretch|pagediscards|pagedepth|overwithdelims|overshoot|overloadmode|overloaded|overline|overfullrule|over|outputpenalty|outputbox|output|outer|orunless|orelse|or|omit|numexpression|numexpr|numericscale|number|nullfont|nulldelimiterspace|novrule|nospaces|normalyear|normalxtokspre|normalxtoksapp|normalxspaceskip|normalxleaders|normalxdefcsname|normalxdef|normalwrapuppar|normalwordboundary|normalwidowpenalty|normalwidowpenalties|normalwd|normalvtop|normalvss|normalvsplit|normalvskip|normalvsize|normalvrule|normalvpack|normalvfuzz|normalvfilneg|normalvfill|normalvfil|normalvcenter|normalvbox|normalvbadness|normalvalign|normalvadjust|normaluppercase|normalunvpack|normalunvcopy|normalunvbox|normaluntraced|normalunskip|normalunpenalty|normalunletprotected|normalunletfrozen|normalunless|normalunkern|normalunhpack|normalunhcopy|normalunhbox|normalunexpanded|normalunderline|normalundent|normaluchyph|normaluccode|normaltracingstats|normaltracingrestores|normaltracingparagraphs|normaltracingpages|normaltracingoutput|normaltracingonline|normaltracingnesting|normaltracingmath|normaltracingmarks|normaltracingmacros|normaltracinglostchars|normaltracinglevels|normaltracinginserts|normaltracingifs|normaltracinghyphenation|normaltracinggroups|normaltracingfonts|normaltracingexpressions|normaltracingcommands|normaltracingassigns|normaltracingalignments|normaltpack|normaltoscaled|normaltopskip|normaltopmarks|normaltopmark|normaltolerant|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltokenized|normaltointeger|normaltodimension|normaltime|normalthinmuskip|normalthickmuskip|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|normaltabsize|normalswapcsvalues|normalsupmarkmode|normalstring|normalsplittopskip|normalsplitmaxdepth|normalsplitfirstmarks|normalsplitfirstmark|normalsplitdiscards|normalsplitbotmarks|normalsplitbotmark|normalspan|normalspaceskip|normalspacefactor|normalsnapshotpar|normalskipdef|normalskip|normalskewchar|normalshowtokens|normalshowthe|normalshownodedetails|normalshowlists|normalshowifs|normalshowgroups|normalshowboxdepth|normalshowboxbreadth|normalshowbox|normalshow|normalshipout|normalsfcode|normalsetlanguage|normalsetfontid|normalsetbox|normalsemiprotected|normalsemiexpanded|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalscaledfontdimen|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|normalretokenized|normalrelpenalty|normalrelax|normalraise|normalradical|normalquitvmode|normalpxdimen|normalprotrusionboundary|normalprotrudechars|normalprotected|normalprevgraf|normalprevdepth|normalpretolerance|normalprerelpenalty|normalprehyphenchar|normalpreexhyphenchar|normalpredisplaysize|normalpredisplaypenalty|normalpredisplaygapfactor|normalpredisplaydirection|normalprebinoppenalty|normalposthyphenchar|normalpostexhyphenchar|normalpostdisplaypenalty|normalpermanent|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|normalparfillleftskip|normalpardirection|normalparattribute|normalparametermark|normalparametercount|normalpar|normalpagevsize|normalpagetotal|normalpagestretch|normalpageshrink|normalpagegoal|normalpagefilstretch|normalpagefillstretch|normalpagefilllstretch|normalpagediscards|normalpagedepth|normaloverwithdelims|normalovershoot|normaloverloadmode|normaloverloaded|normaloverline|normaloverfullrule|normalover|normaloutputpenalty|normaloutputbox|normaloutput|normalouter|normalorunless|normalorelse|normalor|normalomit|normalnumexpression|normalnumexpr|normalnumericscale|normalnumber|normalnullfont|normalnulldelimiterspace|normalnovrule|normalnospaces|normalnormalizelinemode|normalnorelax|normalnonstopmode|normalnonscript|normalnolimits|normalnoindent|normalnohrule|normalnoexpand|normalnoboundary|normalnoaligned|normalnoalign|normalnewlinechar|normalmutoglue|normalmutable|normalmuskipdef|normalmuskip|normalmultiply|normalmugluespecdef|normalmuexpr|normalmskip|normalmoveright|normalmoveleft|normalmonth|normalmkern|normalmiddle|normalmessage|normalmedmuskip|normalmeaningless|normalmeaningfull|normalmeaning|normalmaxdepth|normalmaxdeadcycles|normalmathsurroundskip|normalmathsurroundmode|normalmathsurround|normalmathstyle|normalmathscriptsmode|normalmathscriptcharmode|normalmathscriptboxmode|normalmathscale|normalmathrulethicknessmode|normalmathrulesmode|normalmathrulesfam|normalmathrel|normalmathpunct|normalmathpenaltiesmode|normalmathord|normalmathopen|normalmathop|normalmathnolimitsmode|normalmathitalicsmode|normalmathinner|normalmathfontcontrol|normalmathflattenmode|normalmatheqnogapstep|normalmathdisplayskipmode|normalmathdirection|normalmathdelimitersmode|normalmathcontrolmode|normalmathcode|normalmathclose|normalmathchoice|normalmathchardef|normalmathchar|normalmathbin|normalmathaccent|normalmarks|normalmark|normalluatexversion|normalluatexrevision|normalluatexbanner|normalluafunctioncall|normalluafunction|normalluaescapestring|normalluadef|normalluacopyinputnodes|normalluabytecodecall|normalluabytecode|normallpcode|normallowercase|normallower|normallooseness|normallong|normallocalrightbox|normallocalleftbox|normallocalinterlinepenalty|normallocalcontrolled|normallocalcontrol|normallocalbrokenpenalty|normallineskiplimit|normallineskip|normallinepenalty|normallinedirection|normallimits|normallettonothing|normalletprotected|normalletfrozen|normalletcsname|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|normallastparcontext|normallastnodetype|normallastnodesubtype|normallastnamedcs|normallastlinefit|normallastkern|normallastchknum|normallastchkdim|normallastbox|normallastarguments|normallanguage|normalkern|normaljobname|normalizelinemode|normalinterlinepenalty|normalinterlinepenalties|normalinteractionmode|normalintegerdef|normalinstance|normalinsertwidth|normalinsertuncopy|normalinsertunbox|normalinsertstoring|normalinsertstorage|normalinsertprogress|normalinsertpenalties|normalinsertmultiplier|normalinsertmode|normalinsertlimit|normalinsertheights|normalinsertheight|normalinsertdistance|normalinsertdepth|normalinsertcopy|normalinsertbox|normalinsert|normalinputlineno|normalinput|normalinitcatcodetable|normalindent|normalimmutable|normalimmediate|normalignorespaces|normalignorepars|normalignorearguments|normalifx|normalifvoid|normalifvmode|normalifvbox|normaliftrue|normaliftok|normalifrelax|normalifpdfprimitive|normalifpdfabsnum|normalifpdfabsdim|normalifparameters|normalifparameter|normalifodd|normalifnumval|normalifnumexpression|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinsert|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normalifhaschar|normaliffontchar|normalifflags|normaliffalse|normalifempty|normalifdimval|normalifdimexpression|normalifdim|normalifdefined|normalifcstok|normalifcsname|normalifcondition|normalifcmpnum|normalifcmpdim|normalifchknum|normalifchkdim|normalifcat|normalifcase|normalifboolean|normalifarguments|normalifabsnum|normalifabsdim|normalif|normalhyphenpenalty|normalhyphenchar|normalhyphenationmode|normalhyphenationmin|normalhyphenation|normalht|normalhss|normalhskip|normalhsize|normalhrule|normalhpack|normalholdinginserts|normalhjcode|normalhfuzz|normalhfilneg|normalhfill|normalhfil|normalhccode|normalhbox|normalhbadness|normalhangindent|normalhangafter|normalhalign|normalgtokspre|normalgtoksapp|normalglyphyscale|normalglyphyoffset|normalglyphxscale|normalglyphxoffset|normalglyphtextscale|normalglyphstatefield|normalglyphscriptscriptscale|normalglyphscriptscale|normalglyphscriptfield|normalglyphscale|normalglyphoptions|normalglyphdatafield|normalglyph|normalgluetomu|normalgluestretchorder|normalgluestretch|normalgluespecdef|normalglueshrinkorder|normalglueshrink|normalglueexpr|normalglobaldefs|normalglobal|normalglettonothing|normalgletcsname|normalglet|normalgleaders|normalgdefcsname|normalgdef|normalfuturelet|normalfutureexpandisap|normalfutureexpandis|normalfutureexpand|normalfuturedef|normalfuturecsname|normalfrozen|normalformatname|normalfonttextcontrol|normalfontspecifiedsize|normalfontspecifiedname|normalfontname|normalfontmathcontrol|normalfontid|normalfontdimen|normalfontcharwd|normalfontcharic|normalfontcharht|normalfontchardp|normalfont|normalflushmarks|normalfloatingpenalty|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|normaleverybeforepar|normaletokspre|normaletoksapp|normalescapechar|normalerrorstopmode|normalerrorcontextlines|normalerrmessage|normalerrhelp|normaleqno|normalenforced|normalendsimplegroup|normalendlocalcontrol|normalendlinechar|normalendinput|normalendgroup|normalendcsname|normalend|normalemergencystretch|normalelse|normalefcode|normaledefcsname|normaledef|normaldump|normaldp|normaldoublehyphendemerits|normaldivide|normaldisplaywidth|normaldisplaywidowpenalty|normaldisplaywidowpenalties|normaldisplaystyle|normaldisplaylimits|normaldisplayindent|normaldiscretionary|normaldirectlua|normaldimexpression|normaldimexpr|normaldimensiondef|normaldimendef|normaldimen|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefcsname|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|normalcurrentmarks|normalcurrentiftype|normalcurrentiflevel|normalcurrentifbranch|normalcurrentgrouptype|normalcurrentgrouplevel|normalcsstring|normalcsname|normalcrcr|normalcrampedtextstyle|normalcrampedscriptstyle|normalcrampedscriptscriptstyle|normalcrampeddisplaystyle|normalcr|normalcountdef|normalcount|normalcopy|normalclubpenalty|normalclubpenalties|normalclearmarks|normalcleaders|normalchardef|normalchar|normalcatcodetable|normalcatcode|normalbrokenpenalty|normalboxyoffset|normalboxymove|normalboxxoffset|normalboxxmove|normalboxtotal|normalboxorientation|normalboxmaxdepth|normalboxdirection|normalboxattribute|normalbox|normalboundary|normalbotmarks|normalbotmark|normalbinoppenalty|normalbelowdisplayskip|normalbelowdisplayshortskip|normalbeginsimplegroup|normalbeginlocalcontrol|normalbegingroup|normalbegincsname|normalbatchmode|normalbaselineskip|normalbadness|normalautoparagraphmode|normalautomigrationmode|normalautomatichyphenpenalty|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|normalaligncontent|normalaliased|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|normalUmathvoid|normalUmathvextensiblevariant|normalUmathunderlinevariant|normalUmathunderdelimitervgap|normalUmathunderdelimitervariant|normalUmathunderdelimiterbgap|normalUmathunderbarvgap|normalUmathunderbarrule|normalUmathunderbarkern|normalUmathtopaccentvariant|normalUmathsupsubbottommax|normalUmathsupshiftup|normalUmathsupshiftdrop|normalUmathsuperscriptvariant|normalUmathsupbottommin|normalUmathsubtopmax|normalUmathsubsupvgap|normalUmathsubsupshiftdown|normalUmathsubshiftdrop|normalUmathsubshiftdown|normalUmathsubscriptvariant|normalUmathstackvgap|normalUmathstackvariant|normalUmathstacknumup|normalUmathstackdenomdown|normalUmathspacingmode|normalUmathspacebeforescript|normalUmathspaceafterscript|normalUmathskewedfractionvgap|normalUmathskewedfractionhgap|normalUmathrelrelspacing|normalUmathrelpunctspacing|normalUmathrelordspacing|normalUmathrelopspacing|normalUmathrelopenspacing|normalUmathrelinnerspacing|normalUmathrelclosespacing|normalUmathrelbinspacing|normalUmathradicalvgap|normalUmathradicalvariant|normalUmathradicalrule|normalUmathradicalkern|normalUmathradicaldegreeraise|normalUmathradicaldegreebefore|normalUmathradicaldegreeafter|normalUmathquad|normalUmathpunctrelspacing|normalUmathpunctpunctspacing|normalUmathpunctordspacing|normalUmathpunctopspacing|normalUmathpunctopenspacing|normalUmathpunctinnerspacing|normalUmathpunctclosespacing|normalUmathpunctbinspacing|normalUmathphantom|normalUmathoverlinevariant|normalUmathoverlayaccentvariant|normalUmathoverdelimitervgap|normalUmathoverdelimitervariant|normalUmathoverdelimiterbgap|normalUmathoverbarvgap|normalUmathoverbarrule|normalUmathoverbarkern|normalUmathordrelspacing|normalUmathordpunctspacing|normalUmathordordspacing|normalUmathordopspacing|normalUmathordopenspacing|normalUmathordinnerspacing|normalUmathordclosespacing|normalUmathordbinspacing|normalUmathoprelspacing|normalUmathoppunctspacing|normalUmathopordspacing|normalUmathopopspacing|normalUmathopopenspacing|normalUmathopinnerspacing|normalUmathoperatorsize|normalUmathopenupheight|normalUmathopenupdepth|normalUmathopenrelspacing|normalUmathopenpunctspacing|normalUmathopenordspacing|normalUmathopenopspacing|normalUmathopenopenspacing|normalUmathopeninnerspacing|normalUmathopenclosespacing|normalUmathopenbinspacing|normalUmathopclosespacing|normalUmathopbinspacing|normalUmathnumeratorvariant|normalUmathnolimitsupfactor|normalUmathnolimitsubfactor|normalUmathnolimits|normalUmathnoaxis|normalUmathlimits|normalUmathlimitbelowvgap|normalUmathlimitbelowkern|normalUmathlimitbelowbgap|normalUmathlimitabovevgap|normalUmathlimitabovekern|normalUmathlimitabovebgap|normalUmathinnerrelspacing|normalUmathinnerpunctspacing|normalUmathinnerordspacing|normalUmathinneropspacing|normalUmathinneropenspacing|normalUmathinnerinnerspacing|normalUmathinnerclosespacing|normalUmathinnerbinspacing|normalUmathhextensiblevariant|normalUmathfractionvariant|normalUmathfractionrule|normalUmathfractionnumvgap|normalUmathfractionnumup|normalUmathfractiondenomvgap|normalUmathfractiondenomdown|normalUmathfractiondelsize|normalUmathextrasupshift|normalUmathextrasuppreshift|normalUmathextrasubshift|normalUmathextrasubpreshift|normalUmathdenominatorvariant|normalUmathdelimiterundervariant|normalUmathdelimiterovervariant|normalUmathdegreevariant|normalUmathconnectoroverlapmin|normalUmathcodenum|normalUmathcode|normalUmathcloserelspacing|normalUmathclosepunctspacing|normalUmathcloseordspacing|normalUmathcloseopspacing|normalUmathcloseopenspacing|normalUmathcloseinnerspacing|normalUmathcloseclosespacing|normalUmathclosebinspacing|normalUmathclass|normalUmathcharslot|normalUmathcharnumdef|normalUmathcharnum|normalUmathcharfam|normalUmathchardef|normalUmathcharclass|normalUmathchar|normalUmathbotaccentvariant|normalUmathbinrelspacing|normalUmathbinpunctspacing|normalUmathbinordspacing|normalUmathbinopspacing|normalUmathbinopenspacing|normalUmathbininnerspacing|normalUmathbinclosespacing|normalUmathbinbinspacing|normalUmathaxis|normalUmathadapttoright|normalUmathadapttoleft|normalUmathaccentvariant|normalUmathaccentbaseheight|normalUmathaccent|normalUleft|normalUhextensible|normalUdelimiterunder|normalUdelimiterover|normalUdelimiter|normalUdelcodenum|normalUdelcode|normalUchar|normalUatopwithdelims|normalUatop|normalUabovewithdelims|normalUabove|normalUUskewedwithdelims|normalUUskewed|normalOmegaversion|normalOmegarevision|normalOmegaminorversion|normalAlephversion|normalAlephrevision|normalAlephminorversion|normal |norelax|nonstopmode|nonscript|nolimits|noindent|nohrule|noexpand|noboundary|noaligned|noalign|newlinechar|mutoglue|mutable|muskipdef|muskip|multiply|mugluespecdef|muexpr|mskip|moveright|moveleft|month|mkern|middle|message|medmuskip|meaningless|meaningfull|meaning|maxdepth|maxdeadcycles|mathsurroundskip|mathsurroundmode|mathsurround|mathstyle|mathscriptsmode|mathscriptcharmode|mathscriptboxmode|mathscale|mathrulethicknessmode|mathrulesmode|mathrulesfam|mathrel|mathpunct|mathpenaltiesmode|mathord|mathopen|mathop|mathnolimitsmode|mathitalicsmode|mathinner|mathfontcontrol|mathflattenmode|matheqnogapstep|mathdisplayskipmode|mathdirection|mathdelimitersmode|mathcontrolmode|mathcode|mathclose|mathchoice|mathchardef|mathchar|mathbin|mathaccent|marks|mark|luatexversion|luatexrevision|luatexbanner|luafunctioncall|luafunction|luaescapestring|luadef|luacopyinputnodes|luabytecodecall|luabytecode|lpcode|lowercase|lower|looseness|long|localrightbox|localleftbox|localinterlinepenalty|localcontrolled|localcontrol|localbrokenpenalty|lineskiplimit|lineskip|linepenalty|linedirection|limits|lettonothing|letprotected|letfrozen|letcsname|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|lastparcontext|lastnodetype|lastnodesubtype|lastnamedcs|lastlinefit|lastkern|lastchknum|lastchkdim|lastbox|lastarguments|language|kern|jobname|interlinepenalty|interlinepenalties|interactionmode|integerdef|instance|insertwidth|insertuncopy|insertunbox|insertstoring|insertstorage|insertprogress|insertpenalties|insertmultiplier|insertmode|insertlimit|insertheights|insertheight|insertdistance|insertdepth|insertcopy|insertbox|insert|inputlineno|input|initcatcodetable|indent|immutable|immediate|ignorespaces|ignorepars|ignorearguments|ifx|ifvoid|ifvmode|ifvbox|iftrue|iftok|ifrelax|ifpdfprimitive|ifpdfabsnum|ifpdfabsdim|ifparameters|ifparameter|ifodd|ifnumval|ifnumexpression|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinsert|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|ifhaschar|iffontchar|ifflags|iffalse|ifempty|ifdimval|ifdimexpression|ifdim|ifdefined|ifcstok|ifcsname|ifcondition|ifcmpnum|ifcmpdim|ifchknum|ifchkdim|ifcat|ifcase|ifboolean|ifarguments|ifabsnum|ifabsdim|if|hyphenpenalty|hyphenchar|hyphenationmode|hyphenationmin|hyphenation|ht|hss|hskip|hsize|hrule|hpack|holdinginserts|hjcode|hfuzz|hfilneg|hfill|hfil|hccode|hbox|hbadness|hangindent|hangafter|halign|gtokspre|gtoksapp|glyphyscale|glyphyoffset|glyphxscale|glyphxoffset|glyphtextscale|glyphstatefield|glyphscriptscriptscale|glyphscriptscale|glyphscriptfield|glyphscale|glyphoptions|glyphdatafield|glyph|gluetomu|gluestretchorder|gluestretch|gluespecdef|glueshrinkorder|glueshrink|glueexpr|globaldefs|global|glettonothing|gletcsname|glet|gleaders|gdefcsname|gdef|futurelet|futureexpandisap|futureexpandis|futureexpand|futuredef|futurecsname|frozen|formatname|fonttextcontrol|fontspecifiedsize|fontspecifiedname|fontname|fontmathcontrol|fontid|fontdimen|fontcharwd|fontcharic|fontcharht|fontchardp|font|flushmarks|floatingpenalty|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|everybeforepar|etokspre|etoksapp|escapechar|errorstopmode|errorcontextlines|errmessage|errhelp|eqno|enforced|endsimplegroup|endlocalcontrol|endlinechar|endinput|endgroup|endcsname|end|emergencystretch|else|efcode|edefcsname|edef|dump|dp|doublehyphendemerits|divide|displaywidth|displaywidowpenalty|displaywidowpenalties|displaystyle|displaylimits|displayindent|discretionary|directlua|dimexpression|dimexpr|dimensiondef|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defcsname|defaultskewchar|defaulthyphenchar|def|deadcycles|day|currentmarks|currentiftype|currentiflevel|currentifbranch|currentgrouptype|currentgrouplevel|csstring|csname|crcr|crampedtextstyle|crampedscriptstyle|crampedscriptscriptstyle|crampeddisplaystyle|cr|countdef|count|copy|clubpenalty|clubpenalties|clearmarks|cleaders|chardef|char|catcodetable|catcode|brokenpenalty|boxyoffset|boxymove|boxxoffset|boxxmove|boxtotal|boxorientation|boxmaxdepth|boxdirection|boxattribute|box|boundary|botmarks|botmark|binoppenalty|belowdisplayskip|belowdisplayshortskip|beginsimplegroup|beginlocalcontrol|begingroup|begincsname|batchmode|baselineskip|badness|autoparagraphmode|automigrationmode|automatichyphenpenalty|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|aligncontent|aliased|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|Umathvoid|Umathvextensiblevariant|Umathunderlinevariant|Umathunderdelimitervgap|Umathunderdelimitervariant|Umathunderdelimiterbgap|Umathunderbarvgap|Umathunderbarrule|Umathunderbarkern|Umathtopaccentvariant|Umathsupsubbottommax|Umathsupshiftup|Umathsupshiftdrop|Umathsuperscriptvariant|Umathsupbottommin|Umathsubtopmax|Umathsubsupvgap|Umathsubsupshiftdown|Umathsubshiftdrop|Umathsubshiftdown|Umathsubscriptvariant|Umathstackvgap|Umathstackvariant|Umathstacknumup|Umathstackdenomdown|Umathspacingmode|Umathspacebeforescript|Umathspaceafterscript|Umathskewedfractionvgap|Umathskewedfractionhgap|Umathrelrelspacing|Umathrelpunctspacing|Umathrelordspacing|Umathrelopspacing|Umathrelopenspacing|Umathrelinnerspacing|Umathrelclosespacing|Umathrelbinspacing|Umathradicalvgap|Umathradicalvariant|Umathradicalrule|Umathradicalkern|Umathradicaldegreeraise|Umathradicaldegreebefore|Umathradicaldegreeafter|Umathquad|Umathpunctrelspacing|Umathpunctpunctspacing|Umathpunctordspacing|Umathpunctopspacing|Umathpunctopenspacing|Umathpunctinnerspacing|Umathpunctclosespacing|Umathpunctbinspacing|Umathphantom|Umathoverlinevariant|Umathoverlayaccentvariant|Umathoverdelimitervgap|Umathoverdelimitervariant|Umathoverdelimiterbgap|Umathoverbarvgap|Umathoverbarrule|Umathoverbarkern|Umathordrelspacing|Umathordpunctspacing|Umathordordspacing|Umathordopspacing|Umathordopenspacing|Umathordinnerspacing|Umathordclosespacing|Umathordbinspacing|Umathoprelspacing|Umathoppunctspacing|Umathopordspacing|Umathopopspacing|Umathopopenspacing|Umathopinnerspacing|Umathoperatorsize|Umathopenupheight|Umathopenupdepth|Umathopenrelspacing|Umathopenpunctspacing|Umathopenordspacing|Umathopenopspacing|Umathopenopenspacing|Umathopeninnerspacing|Umathopenclosespacing|Umathopenbinspacing|Umathopclosespacing|Umathopbinspacing|Umathnumeratorvariant|Umathnolimitsupfactor|Umathnolimitsubfactor|Umathnolimits|Umathnoaxis|Umathlimits|Umathlimitbelowvgap|Umathlimitbelowkern|Umathlimitbelowbgap|Umathlimitabovevgap|Umathlimitabovekern|Umathlimitabovebgap|Umathinnerrelspacing|Umathinnerpunctspacing|Umathinnerordspacing|Umathinneropspacing|Umathinneropenspacing|Umathinnerinnerspacing|Umathinnerclosespacing|Umathinnerbinspacing|Umathhextensiblevariant|Umathfractionvariant|Umathfractionrule|Umathfractionnumvgap|Umathfractionnumup|Umathfractiondenomvgap|Umathfractiondenomdown|Umathfractiondelsize|Umathextrasupshift|Umathextrasuppreshift|Umathextrasubshift|Umathextrasubpreshift|Umathdenominatorvariant|Umathdelimiterundervariant|Umathdelimiterovervariant|Umathdegreevariant|Umathconnectoroverlapmin|Umathcodenum|Umathcode|Umathcloserelspacing|Umathclosepunctspacing|Umathcloseordspacing|Umathcloseopspacing|Umathcloseopenspacing|Umathcloseinnerspacing|Umathcloseclosespacing|Umathclosebinspacing|Umathclass|Umathcharslot|Umathcharnumdef|Umathcharnum|Umathcharfam|Umathchardef|Umathcharclass|Umathchar|Umathbotaccentvariant|Umathbinrelspacing|Umathbinpunctspacing|Umathbinordspacing|Umathbinopspacing|Umathbinopenspacing|Umathbininnerspacing|Umathbinclosespacing|Umathbinbinspacing|Umathaxis|Umathadapttoright|Umathadapttoleft|Umathaccentvariant|Umathaccentbaseheight|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/lowlevel-alignments.pdf b/doc/context/documents/general/manuals/lowlevel-alignments.pdf
index bbd187dfb..abeebfee9 100644
--- a/doc/context/documents/general/manuals/lowlevel-alignments.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-alignments.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-boxes.pdf b/doc/context/documents/general/manuals/lowlevel-boxes.pdf
index 0ee0f66a1..f0da0d506 100644
--- a/doc/context/documents/general/manuals/lowlevel-boxes.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-boxes.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-characters.pdf b/doc/context/documents/general/manuals/lowlevel-characters.pdf
index e3e130630..13867666b 100644
--- a/doc/context/documents/general/manuals/lowlevel-characters.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-characters.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-conditionals.pdf b/doc/context/documents/general/manuals/lowlevel-conditionals.pdf
index 6de0090b3..251ccc758 100644
--- a/doc/context/documents/general/manuals/lowlevel-conditionals.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-conditionals.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-expansion.pdf b/doc/context/documents/general/manuals/lowlevel-expansion.pdf
index 6f50c6d22..d9f2528bc 100644
--- a/doc/context/documents/general/manuals/lowlevel-expansion.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-expansion.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-grouping.pdf b/doc/context/documents/general/manuals/lowlevel-grouping.pdf
index a8d103236..316edda67 100644
--- a/doc/context/documents/general/manuals/lowlevel-grouping.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-grouping.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-inserts.pdf b/doc/context/documents/general/manuals/lowlevel-inserts.pdf
new file mode 100644
index 000000000..d305899c1
--- /dev/null
+++ b/doc/context/documents/general/manuals/lowlevel-inserts.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-macros.pdf b/doc/context/documents/general/manuals/lowlevel-macros.pdf
index 9894d0484..5f89d204f 100644
--- a/doc/context/documents/general/manuals/lowlevel-macros.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-macros.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-marks.pdf b/doc/context/documents/general/manuals/lowlevel-marks.pdf
index e4f600b5d..a00a7f2ae 100644
--- a/doc/context/documents/general/manuals/lowlevel-marks.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-marks.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf b/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf
index ab46092b2..ad6be78bb 100644
--- a/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-paragraphs.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-registers.pdf b/doc/context/documents/general/manuals/lowlevel-registers.pdf
index d00daa0cc..5c5400ec6 100644
--- a/doc/context/documents/general/manuals/lowlevel-registers.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-registers.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-scope.pdf b/doc/context/documents/general/manuals/lowlevel-scope.pdf
index 0a17a314c..d5b628396 100644
--- a/doc/context/documents/general/manuals/lowlevel-scope.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-scope.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel-security.pdf b/doc/context/documents/general/manuals/lowlevel-security.pdf
index b92f00ce3..d4c7d871c 100644
--- a/doc/context/documents/general/manuals/lowlevel-security.pdf
+++ b/doc/context/documents/general/manuals/lowlevel-security.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/lowlevel.pdf b/doc/context/documents/general/manuals/lowlevel.pdf
new file mode 100644
index 000000000..8290f2118
--- /dev/null
+++ b/doc/context/documents/general/manuals/lowlevel.pdf
Binary files differ
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
index bdc7fecf1..79fc86aae 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-alignments.tex
@@ -8,7 +8,7 @@
[title=alignments,
color=middlegreen]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
\TEX\ has a couple of subsystems and alignments is one of them. This mechanism is
used to construct tables or alike. Because alignments use low level primitives to
@@ -115,9 +115,9 @@ that relates to a parameter and alignment tab (and in \CONTEXT\ that is not the
case). The \TEX book has plenty alignment examples so if you really want to learn
about them, consult that must|-|have|-|book.
-\stopsection
+\stopsectionlevel
-\startsection[title=Between the lines]
+\startsectionlevel[title=Between the lines]
The individual rows of a horizontal alignment are treated as lines. This means that,
as we see in the previous section, the interline spacing is okay. However, that also
@@ -240,9 +240,9 @@ there.
A third overhaul of the code actually did lead to some adaptations in the way
alignments are constructed so let's move on to that.
-\stopsection
+\stopsectionlevel
-\startsection[title={Pre-, inter- and post-tab skips}]
+\startsectionlevel[title={Pre-, inter- and post-tab skips}]
The basic structure of a preamble and row is actually not that complex: it is
a mix of tab skip glue and cells (that are just boxes):
@@ -372,9 +372,9 @@ skips and it triggers a check later on when the rows are constructed. The \type
{<content>} is what get injected in the cell (represented by \type {\alignmark}).
The pseudo primitives are internal and not public.
-\stopsection
+\stopsectionlevel
-\startsection[title={Cell widths}]
+\startsectionlevel[title={Cell widths}]
Imagine this:
@@ -428,9 +428,9 @@ So, both the sparse skip and new \type {\tabsize} feature help to make these
extreme tables (spanning hundreds of pages) not consume irrelevant memory and
also make that later on we don't have to consult useless nodes.
-\stopsection
+\stopsectionlevel
-\startsection[title=Plugins]
+\startsectionlevel[title=Plugins]
Yet another \LUAMETATEX\ extension is a callback that kicks in between the
preamble preroll and finalizing the alignment. Initially as test and
@@ -556,9 +556,9 @@ instead?}
As always with such mechanisms, the question is \quotation {Where to stop?} But it
makes for nice demos and as long as little code is needed it doesn't hurt.
-\stopsection
+\stopsectionlevel
-\startsection[title=Pitfalls and tricks]
+\startsectionlevel[title=Pitfalls and tricks]
The next example mixes bidirectional typesetting. It might look weird at first
sight but the result conforms to what we discussed in previous paragraphs.
@@ -679,9 +679,9 @@ that it's a lot of work but by providing a set of helpers like here might change
that a bit. Keep in mind that much of the above is not new in the sense that we
could not achieve the same already, it's just a bit programmer friendly.
-\stopsection
+\stopsectionlevel
-\startsection[title=Remark]
+\startsectionlevel[title=Remark]
It can be that the way alignments are interfaced with respect to attributes is a bit
different between \LUATEX\ and \LUAMETATEX\ but because the former is frozen (in
@@ -692,7 +692,7 @@ In principle we can have hooks into the rows for pre and post material but it
doesn't really pay of as grouping will still interfere. So for now I decided not
to add these.
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
index 8fbd796b4..d5105fc8c 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-boxes.tex
@@ -9,7 +9,7 @@
[title=boxes,
color=middlered]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
An average \CONTEXT\ user will not use the low level box primitives but a basic
understanding of how \TEX\ works doesn't hurt. In fact, occasionally using a box
@@ -23,9 +23,9 @@ about all kind of glues, kerns and penalties, just boxes it is.
This explanation will be extended when I feel the need (or users have questions
that can be answered here).
-\stopsection
+\stopsectionlevel
-\startsection[title=Boxes]
+\startsectionlevel[title=Boxes]
This paragraph of text is made from lines that contain words that themselves
contain symbolic representations of characters. Each line is wrapped in a so
@@ -66,11 +66,9 @@ other hand wraps a linked list of so called nodes: glyphs, kerns, glue,
penalties, rules, boxes, etc. It is a container with properties like width,
height, depth and shift.
-\stopsection
+\stopsectionlevel
-\stopsection
-
-\startsection[title={\TEX\ primitives}]
+\startsectionlevel[title={\TEX\ primitives}]
The box model is reflected in \TEX's user interface but not by that many
commands, most noticeably \type {\hbox}, \type {\vbox} and \type {\vtop}. Here is
@@ -218,9 +216,9 @@ we use copy because it serves the examples.
\box \scratchbox
\stoptyping
-\stopsection
+\stopsectionlevel
-\startsection[title={\ETEX\ primitives}]
+\startsectionlevel[title={\ETEX\ primitives}]
The \ETEX\ extensions don't add something relevant for boxes, apart from that you
can use the expressions mechanism to mess around with their dimensions. There is
@@ -229,9 +227,9 @@ capabilities and doesn't change much as it's mostly a way to trick the backend
into outputting a stretch of text in the other direction. This feature is not
available in \LUATEX\ because it has an alternative direction mechanism.
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUATEX\ primitives}]
+\startsectionlevel[title={\LUATEX\ primitives}]
The concept of boxes is the same in \LUATEX\ as in its predecessors but there are
some aspects to keep in mind. When a box is typeset this happens in \LUATEX:
@@ -289,9 +287,9 @@ but because in \LUAMETATEX\ there are only two. Because this model has been upgr
it will be discusses in the next section. A \CONTEXT\ user is supposed to use the
official \CONTEXT\ interfaces in order to be downward compatible.
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUAMETATEX\ primitives}]
+\startsectionlevel[title={\LUAMETATEX\ primitives}]
There are two possible directions: left to right (the default) and right to left
for Hebrew and Arabic. Here is an example that shows how it'd done with low level
@@ -691,7 +689,7 @@ test\quad
\ruledhbox{\getbuffer}
\stoplinecorrection
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex
index c3d417e44..777182b84 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-characters.tex
@@ -6,15 +6,15 @@
[title=characters,
color=middlered]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
This explanation is part of the low level manuals because in practice users will
not have to deal with these matters in \MKIV\ and even less in \LMTX. You can
skip to the last section for commands.
-\stopsection
+\stopsectionlevel
-\startsection[title=History]
+\startsectionlevel[title=History]
If we travel back in time to when \TEX\ was written we end up in eight bit
character universe. In fact, the first versions assumed seven bits, but for
@@ -79,9 +79,9 @@ depending on the (local) language, referencing the relevant font. It permits
users to enter the text in their preferred input encoding and also get the words
properly hyphenated. But we can leave these \MKII\ details behind.
-\stopsection
+\stopsectionlevel
-\startsection[title=The heritage]
+\startsectionlevel[title=The heritage]
In \MKIV\ we got rid of input and font encodings, although one can still load
files in a specific code page. \footnote {I'm not sure if users ever depend on an
@@ -112,9 +112,9 @@ format file. \footnote {In \MKII\ we have an abstract front|-|end with respect t
encodings and also an abstract backend with respect to supported drivers but both
approaches no longer make sense today.}
-\stopsection
+\stopsectionlevel
-\startsection[title=The \LMTX\ approach]
+\startsectionlevel[title=The \LMTX\ approach]
In the process of tagging all (public) macros in \LMTX\ (which happened in
2020|-|2021) I wondered if we should keep these one character macros, the
@@ -220,19 +220,7 @@ We get this list:
Some combinations are special for \CONTEXT\ because \UNICODE\ doesn't specify
decomposition for all composed characters.
-\stopsection
-
-\startsubject[title=Colofon]
-
-\starttabulate
-\NC Author \NC Hans Hagen \NC \NR
-\NC \CONTEXT \NC \contextversion \NC \NR
-\NC \LUAMETATEX \NC \texengineversion \NC \NR
-\NC Support \NC www.pragma-ade.com \NC \NR
-\NC \NC contextgarden.net \NC \NR
-\stoptabulate
-
-\stopsubject
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-conditionals.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-conditionals.tex
index dfff4ac72..288521bdd 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-conditionals.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-conditionals.tex
@@ -8,9 +8,9 @@
\pushoverloadmode
-\startsection[title=Preamble]
+\startsectionlevel[title=Preamble]
-\startsubsection[title=Introduction]
+\startsectionlevel[title=Introduction]
You seldom need the low level conditionals because there are quite some so called
support macros available in \CONTEXT . For instance, when you want to compare two
@@ -53,9 +53,9 @@ The others are often wrapped into support macros that are more convenient.
In due time I might add more examples and explanations. Also, maybe some more
tests will show up as part of the \LUAMETATEX\ project.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={Number and dimensions}]
+\startsectionlevel[title={Number and dimensions}]
Numbers and dimensions are basic data types in \TEX. When you enter one, a number
is just that but a dimension gets a unit. Compare:
@@ -289,13 +289,13 @@ assuming that the fraction is within the maximum permitted) so these numbers the
are the same. Anyway, this is not different in other programming languages and
just something you need to be aware of.
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title={\TEX\ primitives}]
+\startsectionlevel[title={\TEX\ primitives}]
-\startsubsection[title={\tex{if}}]
+\startsectionlevel[title={\tex{if}}]
I seldom use this one. Internally \TEX\ stores (and thinks) in terms of tokens.
If you see for instance \type {\def} or \type {\dimen} or \type {\hbox} these all
@@ -330,9 +330,9 @@ We get: \inlinebuffer .
% protected macros
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcat}}]
+\startsectionlevel[title={\tex{ifcat}}]
In \TEX\ characters (in the input) get interpreted according to their so called
catcodes. The most common are letters (alphabetic) and and other (symbols) but
@@ -377,9 +377,9 @@ You can use \type {\noexpand} to prevent expansion:
We get: \inlinebuffer, so who still thinks that \TEX\ is easy to understand for a
novice user?
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifnum}}]
+\startsectionlevel[title={\tex{ifnum}}]
This condition compares its argument with another one, separated by an \type {<},
\type {=} or \type {>} character.
@@ -410,9 +410,9 @@ case the dimension is in scaled points.
Of course this equal treatment of a dimension and number is only true when the
dimension is a register or box property.
-\stopsubsection
+\stopsectionlevel
-\startsection[title={\tex{ifdim}}]
+\startsectionlevel[title={\tex{ifdim}}]
This condition compares one dimension with another one, separated by an \type {<},
\type {=} or \type {>} sign.
@@ -430,9 +430,9 @@ This condition compares one dimension with another one, separated by an \type {<
While when comparing numbers a dimension is a valid quantity but here you cannot
mix them: something with a unit is expected.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifodd}}]
+\startsectionlevel[title={\tex{ifodd}}]
This one can come in handy, although in \CONTEXT\ it is only used in checking for
an odd of even page number.
@@ -454,9 +454,9 @@ too, which is then interpreted as representing scaled points. Here we get:
\getbuffer
\stoplines
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifvmode}}]
+\startsectionlevel[title={\tex{ifvmode}}]
This is a rather trivial check. It takes no arguments and just is true when we're
in vertical mode. Here is an example:
@@ -470,9 +470,9 @@ in vertical mode. Here is an example:
We're always in horizontal mode and issuing a \type {\par} inside a horizontal
box doesn't change that, so we get: \ruledhbox{\inlinebuffer}.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifhmode}}]
+\startsectionlevel[title={\tex{ifhmode}}]
As with \type {\ifvmode} this one has no argument and just tells if we're in
vertical mode.
@@ -494,9 +494,9 @@ content (or command) is done more than once:
\ruledhbox{\inlinebuffer}
\stoplinecorrection
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifmmode}}]
+\startsectionlevel[title={\tex{ifmmode}}]
Math is something very \TEX\ so naturally you can check if you're in math mode.
here is an example of using this test:
@@ -507,9 +507,9 @@ here is an example of using this test:
Of course in reality macros that do such things are more advanced than this one.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifinner}}]
+\startsectionlevel[title={\tex{ifinner}}]
\startbuffer
\def\ShowMode
@@ -549,9 +549,9 @@ By the way, moving the \type {\ifinner} test outside the branches (to the top of
the macro) won't work because once the word \type {inner} is typeset we're no
longer in vertical mode, if we were at all.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifvoid}}]
+\startsectionlevel[title={\tex{ifvoid}}]
A box is one of the basic concepts in \TEX. In order to understand this primitive
we present four cases:
@@ -601,15 +601,15 @@ Setting a dimension of a void voix (empty) box doesn't make it less void:
\getbuffer
\stoplines
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifhbox}}]
+\startsectionlevel[title={\tex{ifhbox}}]
This test takes a box number and gives true when it is an hbox.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifvbox}}]
+\startsectionlevel[title={\tex{ifvbox}}]
This test takes a box number and gives true when it is an vbox. Both a \type
{\vbox} and \type {\vtop} are vboxes, the difference is in the height and depth
@@ -627,9 +627,9 @@ And in a \type {\vtop} the first line takes control:
but, once wrapped, both internally are just vlists.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifx}}]
+\startsectionlevel[title={\tex{ifx}}]
This test is actually used a lot in \CONTEXT: it compares two token(list)s:
@@ -651,29 +651,29 @@ that get compared, like in:
\edef\TempA{...}\edef\TempB{...}\ifx\TempA\TempB ...\else ...\fi
\stoptyping
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifeof}}]
+\startsectionlevel[title={\tex{ifeof}}]
This test checks if a the pointer in a given input channel has reached its end.
It is also true when the file is not present. The argument is a number which
relates to the \type {\openin} primitive that is used to open files for reading.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{iftrue}}]
+\startsectionlevel[title={\tex{iftrue}}]
It does what it says: always true.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{iffalse}}]
+\startsectionlevel[title={\tex{iffalse}}]
It does what it says: always false.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcase}}]
+\startsectionlevel[title={\tex{ifcase}}]
The general layout of an \type {\ifcase} tests is as follows:
@@ -693,13 +693,13 @@ The general layout of an \type {\ifcase} tests is as follows:
As in other places a number is a sequence of signs followed by one of more digits
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title={\ETEX\ primitives}]
+\startsectionlevel[title={\ETEX\ primitives}]
-\startsubsection[title={\tex{ifdefined}}]
+\startsectionlevel[title={\tex{ifdefined}}]
This primitive was introduced for checking the existence of a macro (or primitive)
and with good reason. Say that you want to know if \type {\MyMacro} is defined? One
@@ -736,9 +736,9 @@ In order to catch the last problem there is the option to test directly:
This (or course) results in: \inlinebuffer, but the macro is still sort of
defined (with no meaning). The next section shows how to get around this.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcsname}}]
+\startsectionlevel[title={\tex{ifcsname}}]
A macro is often defined using a ready made name, as in:
@@ -795,9 +795,9 @@ during this test, and in \LUAMETATEX\ that is default. This means that tests can
be made quite robust as it is pretty safe to assume that names that make sense
are constructed from regular characters and not boxes, font switches, etc.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{iffontchar}}]
+\startsectionlevel[title={\tex{iffontchar}}]
This test was also part of the \ETEX\ extensions and it can be used to see if
a font has a character.
@@ -824,9 +824,9 @@ In the perspective of \LUAMETATEX\ I considered also supporting \type {\fontid}
but it got a bit messy due to the fact that this primitive expands in a different
way so this extension was rejected.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{unless}}]
+\startsectionlevel[title={\tex{unless}}]
You can negate the results of a test by using the \type {\unless} prefix, so for
instance you can replace:
@@ -847,41 +847,41 @@ by:
\fi
\stoptyping
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUATEX\ primitives}]
+\startsectionlevel[title={\LUATEX\ primitives}]
-\startsubsection[title={\tex{ifincsname}}]
+\startsectionlevel[title={\tex{ifincsname}}]
As it had no real practical usage uit might get dropped in \LUAMETATEX, so it
will not be discussed here.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifprimitive}}]
+\startsectionlevel[title={\tex{ifprimitive}}]
As it had no real practical usage due to limitations, this one is not available
in \LUAMETATEX\ so it will not be discussed here.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifabsnum}}]
+\startsectionlevel[title={\tex{ifabsnum}}]
This test is inherited from \PDFTEX\ and behaves like \type {\ifnum} but first
turns a negative number into a positive one.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifabsdim}}]
+\startsectionlevel[title={\tex{ifabsdim}}]
This test is inherited from \PDFTEX\ and behaves like \type {\ifdim} but first
turns a negative dimension into a positive one.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcondition}}]
+\startsectionlevel[title={\tex{ifcondition}}]
This is not really a test but in order to unstand that you need to know how
\TEX\ internally deals with tests.
@@ -1061,13 +1061,13 @@ permits more complex arguments, like:
Another trick is that we use an integer division (the \type {:}) which is an
operator supported by \LUAMETATEX .
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUAMETATEX\ primitives}]
+\startsectionlevel[title={\LUAMETATEX\ primitives}]
-\startsubsection[title={\tex{ifcmpnum}}]
+\startsectionlevel[title={\tex{ifcmpnum}}]
This one is part of s set of three tests that all are a variant of a \type
{\ifcase} test. A simple example of the first test is this:
@@ -1080,9 +1080,9 @@ The test scans for two numbers, which of course can be registers or expressions,
and sets the case value to 0, 1 or 2, which means that you then use the normal
\type {\or} and \type {\else} primitives for follow up on the test.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifchknum}}]
+\startsectionlevel[title={\tex{ifchknum}}]
This test scans a number and when it's okay sets the case value to 1, and otherwise
to 2. So you can do the next:
@@ -1097,9 +1097,9 @@ recovery token, although in fact we just use the fast scanner mode that comes
with the \type {\ifcase}: because the result is 1 or 2, we never see invalid
tokens.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifnumval}}]
+\startsectionlevel[title={\tex{ifnumval}}]
A sort of combination of the previous two is \type {\ifnumval} which checks a
number but also if it's less, equal or more than zero:
@@ -1113,29 +1113,29 @@ You can decide to ignore the bad number or do something that makes more sense.
Often the to be checked value will be the content of a macro or an argument like
\type {#1}.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcmpdim}}]
+\startsectionlevel[title={\tex{ifcmpdim}}]
This test is like \type {\ifcmpnum} but for dimensions.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifchkdim}}]
+\startsectionlevel[title={\tex{ifchkdim}}]
This test is like \type {\ifchknum} but for dimensions. The last checked value is
available as \type {\lastchknum}.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifdimval}}]
+\startsectionlevel[title={\tex{ifdimval}}]
This test is like \type {\ifnumval} but for dimensions. The last checked value is
available as \type {\lastchkdim}
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{iftok}}]
+\startsectionlevel[title={\tex{iftok}}]
Although this test is still experimental it can be used. What happens is that
two to be compared \quote {things} get scanned for. For each we first gobble
@@ -1195,49 +1195,49 @@ Case one and four mixed:
The last case is more a catch: it will issue an error when no number is given.
Eventually that might become a bit more clever (depending on our needs.)
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifcstok}}]
+\startsectionlevel[title={\tex{ifcstok}}]
There is a subtle difference between this one and \type {iftok}: spaces
and \type {\relax} tokens are skipped but nothing gets expanded. So, when
we arrive at the to be compared \quote {things} we look at what is there,
as|-|is.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{iffrozen}}]
+\startsectionlevel[title={\tex{iffrozen}}]
{\em This is an experimental test.} Commands can be defined with the \type
{\frozen} prefix and this test can be used to check if that has been the case.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifprotected}}]
+\startsectionlevel[title={\tex{ifprotected}}]
Commands can be defined with the \type {\protected} prefix (or in \CONTEXT, for
historic reasons, with \type {\unexpanded}) and this test can be used to check if
that has been the case.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifusercmd}}]
+\startsectionlevel[title={\tex{ifusercmd}}]
{\em This is an experimental test.} It can be used to see if the command is
defined at the user level or is a build in one. This one might evolve.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{ifarguments}}]
+\startsectionlevel[title={\tex{ifarguments}}]
This conditional can be used to check how many arguments were matched. It only
makes sense when used with macros defined with the \type {\tolerant} prefix
and|/|or when the sentinel \type {\ignorearguments} after the arguments is used.
More details can be found in the lowlevel macros manual.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={\tex{orelse}}]
+\startsectionlevel[title={\tex{orelse}}]
This it not really a test primitive but it does act that way. Say that we have this:
@@ -1297,13 +1297,13 @@ This permits:
where, of course, the quitting normally is the result of some intermediate extra
test. But let me play safe here: beware of side effects.
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title={For the brave}]
+\startsectionlevel[title={For the brave}]
-\startsubsection[title={Full expansion}]
+\startsectionlevel[title={Full expansion}]
If you don't understand the following code, don't worry. There is seldom much
reason to go this complex but obscure \TEX\ code attracts some users so \unknown
@@ -1361,9 +1361,9 @@ different: they contain the assignments and the test for the character is
actually done when constructing the content of the \type {\edef}, but for the
current font. So, basically that test is now useless.
-\stopsubsection
+\stopsectionlevel
-\startsubsection[title={User defined if's}]
+\startsectionlevel[title={User defined if's}]
There is a \type {\newif} macro that defines three other macros:
@@ -1411,11 +1411,11 @@ This one is cheaper on the hash and doesn't need the two extra macros per test.
The price is the use of \type {\ifconditional}, which is {\em not} to confused
with \type {\ifcondition} (it has bitten me already a few times).
-\stopsubsection
+\stopsectionlevel
-\stopsection
+\stopsectionlevel
-\startsection[title=Relaxing]
+\startsectionlevel[title=Relaxing]
When \TEX\ scans for a number or dimension it has to check tokens one by one. On
the case of a number, the scanning stops when there is no digit, in the case of a
@@ -1532,19 +1532,7 @@ it acts as relax, but otherwise it just is ignored and disappears.
\typebuffer[c] \getbuffer[c,b]
-\stopsection
-
-\startsubject[title=Colofon]
-
-\starttabulate
-\NC Author \NC Hans Hagen \NC \NR
-\NC \CONTEXT \NC \contextversion \NC \NR
-\NC \LUAMETATEX \NC \texengineversion \NC \NR
-\NC Support \NC www.pragma-ade.com \NC \NR
-\NC \NC contextgarden.net \NC \NR
-\stoptabulate
-
-\stopsubject
+\stopsectionlevel
\popoverloadmode
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-expansion.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-expansion.tex
index 98f533859..6e9134914 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-expansion.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-expansion.tex
@@ -11,7 +11,7 @@
[title=expansion,
color=middleyellow]
-\startsection[title=Preamble]
+\startsectionlevel[title=Preamble]
This short manual demonstrates a couple of properties of the macro language. It
is not an in|-|depth philosophical expose about macro languages, tokens,
@@ -23,9 +23,9 @@ book does and although there is no way to avoid the word \quote {token} I will d
my best to not complicate matters by too much token speak. Examples show best
what we mean.
-\stopsection
+\stopsectionlevel
-\startsection[title={\TEX\ primitives}]
+\startsectionlevel[title={\TEX\ primitives}]
The \TEX\ language provides quite some commands and those built in are called
primitives. User defined commands are called macros. A macro is a shortcut to a
@@ -316,9 +316,9 @@ The first one gives \inlinebuffer[a], while the second gives \inlinebuffer[b].
% \afterassignment
% \aftergroup
-\stopsection
+\stopsectionlevel
-\startsection[title={\ETEX\ primitives}]
+\startsectionlevel[title={\ETEX\ primitives}]
In this engine a couple of extensions were added and later on \PDFTEX\ added some
more. We only discuss a few that relate to expansion. There is however a pitfall
@@ -439,9 +439,9 @@ letters. The next snippet shows these catcodes:
The result is \quotation {\tt\inlinebuffer}: two characters are marked as \quote
{letter} and two fall in the \quote {other} category.
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUATEX\ primitives}]
+\startsectionlevel[title={\LUATEX\ primitives}]
This engine adds a little to the expansion repertoire. First of all it offers a
way to extend token lists registers:
@@ -484,9 +484,9 @@ or token lists, simply because in the process \TEX\ has to create tokens lists
too, but sometimes they're just more convenient to use. In \CONTEXT\ we actually
do benefit from these.
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUAMETATEX\ primitives}]
+\startsectionlevel[title={\LUAMETATEX\ primitives}]
We already saw that macro's can be defined protected which means that
@@ -999,9 +999,9 @@ performance or bloating the source.
% tex.runlocal : function|number(register)|string(macro)|userdata(token) + expand + grouped
% mplib.expandtex : mpx + kind + string|userdata + [string|true|table|userdata|number]*
-\stopsection
+\stopsectionlevel
-\startsection[title=Dirty tricks]
+\startsectionlevel[title=Dirty tricks]
When I was updating this manual Hans vd Meer and I had some discussions about
expansion and tokenization related issues when combining of \XML\ processing with
@@ -1116,7 +1116,7 @@ so that we can do:
A companion macro of this is \type {\wipetoken} but for that one you need to look
into the source.
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex
index a3bfe79c9..12d12f7f4 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-grouping.tex
@@ -6,15 +6,15 @@
[title=grouping,
color=middlecyan]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
This is a rather short explanation. I decided to write it after presenting the
other topics at the 2019 \CONTEXT\ meeting where there was a question about
grouping.
-\stopsection
+\stopsectionlevel
-\startsection[title=\PASCAL]
+\startsectionlevel[title=\PASCAL]
In a language like \PASCAL, the language that \TEX\ has been written in, or
\MODULA, its successor, there is no concept of grouping like in \TEX. But we can
@@ -30,9 +30,9 @@ instance an assignment in \METAPOST\ uses \type {:=} too. However, the \type
can have local variables in a procedure or function but the block is just a way
to pack a sequence of statements.
-\stopsection
+\stopsectionlevel
-\startsection[title=\TEX]
+\startsectionlevel[title=\TEX]
In \TEX\ macros (or source code) the following can occur:
@@ -79,9 +79,9 @@ The bottomline is: if you want a value to persist after the group, you need to
explicitly change its value globally. This makes a lot of sense in the perspective
of \TEX.
-\stopsection
+\stopsectionlevel
-\startsection[title=\METAPOST]
+\startsectionlevel[title=\METAPOST]
The \METAPOST\ language also has a concept of grouping but in this case it's more like a
programming language.
@@ -110,9 +110,9 @@ implicit.
So, in \METAPOST\ all assignments are global, unless a variable is explicitly
saved inside a group.
-\stopsection
+\stopsectionlevel
-\startsection[title=\LUA]
+\startsectionlevel[title=\LUA]
In \LUA\ all assignments are global unless a variable is defines local:
@@ -132,9 +132,9 @@ some \METAPOST\ coding or using \type {end} instead of \type {endfor} in
\METAPOST\ which can make the library wait for more without triggering an error.
Proper syntax highlighting in an editor clearly helps.
-\stopsection
+\stopsectionlevel
-\startsection[title=\CCODE]
+\startsectionlevel[title=\CCODE]
The \LUA\ language is a mix between \PASCAL\ (which is one reason why I like it)
and \CCODE.
@@ -151,20 +151,6 @@ for (i=1; i<=10;i++) {
The semicolon is also used in \PASCAL\ but there it is a separator and not a
statement end, while in \METAPOST\ it does end a statement (expression).
-\stopsection
-
-\stopsection
-
-\startsubject[title=Colofon]
-
-\starttabulate
-\NC Author \NC Hans Hagen \NC \NR
-\NC \CONTEXT \NC \contextversion \NC \NR
-\NC \LUAMETATEX \NC \texengineversion \NC \NR
-\NC Support \NC www.pragma-ade.com \NC \NR
-\NC \NC contextgarden.net \NC \NR
-\stoptabulate
-
-\stopsubject
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex
new file mode 100644
index 000000000..4976ce564
--- /dev/null
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-inserts.tex
@@ -0,0 +1,202 @@
+% language=us runpath=texruns:manuals/lowlevel
+
+\environment lowlevel-style
+
+\startdocument
+ [title=inserts,
+ color=middlecyan]
+
+\startsectionlevel[title=Introduction]
+
+This document is a mixed bag. We do discuss inserts but also touch elements of
+the page builder because inserts and regular page content are handled there.
+Examples of mechanisms that use inserts are footnotes. These have an anchor in
+the running text and some content that ends up (normally) at the bottom of the
+page. When considering a page break the engine tries to make sure that the anchor
+(reference) and the content end up on the same page. When there is too much, it
+will distribute (split) the content over pages.
+
+We can discuss page breaks in a (pseudo) scientific way and explore how to
+optimize this process, taking into accounts also inserts that contain images but
+it doesn't make much sense to do that because in practice we can encounter all
+kind of interferences. Theory and practice are too different because a document
+can contain a wild mix of text, figures, formulas, notes, have backgrounds and
+location dependent processing. It get seven more complex when we are dealing with
+columns because \TEX\ doesn't really know that concept.
+
+I will therefore stick to some practical aspects and the main reason for this
+document is that I sort of document engine features and at the same time give an
+impression of what we deal with. I will do that in the perspective of
+\LUAMETATEX, which has a few more options and tracing than other engines.
+
+{\em Currently this document is mostly for myself to keep track of the state of
+inserts and the page builder in \LUAMETATEX\ and \CONTEXT\ \LMTX. The text is not
+yet corrected and can have errors.}
+
+\stopsectionlevel
+
+\startsectionlevel[title=The page builder]
+
+When your document is processed content eventually gets added to the so called
+main vertical list (mvl). Content first get appended to the list of contributions
+and at specific moments it will be handed over to the mvl. This process is called
+page building. There we can encounter the following elements (nodes):
+
+\starttabulate
+\NC \type {glue} \NC a vertical skip \NC \NR
+\NC \type {penalty} \NC a vertical penalty \NC \NR
+\NC \type {kern} \NC a vertical kern \NC \NR
+\NC \type {vlist} \NC a a vertical box \NC \NR
+\NC \type {hlist} \NC a horizontal box (often a line) \NC \NR
+\NC \type {rule} \NC a horizontal rule \NC \NR
+\NC \type {boundary} \NC a boundary node \NC \NR
+\NC \type {whatsit} \NC a node that is used by user code (often some extension) \NC \NR
+\NC \type {mark} \NC a token list (as used for running headers) \NC \NR
+\NC \type {insert} \NC a node list (as used for notes) \NC \NR
+\stoptabulate
+
+The engine itself will not insert anything other than this but \LUA\ code can
+mess up the contribution list and the mvl and that can trigger an error. Handing
+over the contributions is done by the page builder and that one kicks in in
+several places:
+
+\startitemize[packed]
+\startitem
+ When a penalty gets inserted it is part of evaluating if the output routine
+ should be triggered. This triggering can be enforced by values equal or below
+ 10.000 that then can be checked in the set routine.
+\stopitem
+\startitem
+ The builder is {\em not} exercised when a glue or kern is injected so there can
+ be multiple of them before another element triggers the builder.
+\stopitem
+\startitem
+ Adding a box triggers the builder as does the result of an alignment which can
+ be a list of boxes.
+\stopitem
+\startitem
+ When the output routine is finished the builder is executed because the
+ routine can have pushed back content.
+\stopitem
+\startitem
+ When a new paragraph is triggered by the \type {\par} command the builder kicks in
+ but only when the engine was able to enter vertical mode.
+\stopitem
+\startitem
+ When the job is finished the builder will make sure that pending content is handled.
+\stopitem
+\startitem
+ An insert and vadjust {\em can} trigger the builder but only at the nesting level zero
+ which normally is not the case (I need an example).
+\stopitem
+\startitem
+ At the beginning of a paragraph (like text), before display math is entered,
+ and when display math ends the builder is also activated.
+\stopitem
+\stopitemize
+
+At the \TEX\ the builder is triggered automatically in the mentioned cases but at
+the \LUA\ end you can use \type {tex.triggerbuildpage()} to flush the pending
+contributions.
+
+The properties that relate to the page look like counter and dimension registers ut
+they are not. These variables are global and managed differently.
+
+\starttabulate
+\NC \type {\pagegoal} \NC the available space \NC \NR
+\NC \type {\pagetotal} \NC the accumulated space \NC \NR
+\NC \type {\pagestretch} \NC the possible zero order stretch \NC \NR
+\NC \type {\pagefilstretch} \NC the possible one order stretch \NC \NR
+\NC \type {\pagefillstretch} \NC the possible second order stretch \NC \NR
+\NC \type {\pagefilllstretch} \NC the possible third order stretch \NC \NR
+\NC \type {\pageshrink} \NC the possible shrink \NC \NR
+\NC \type {\pagedepth} \NC the current page depth \NC \NR
+\NC \type {\pagevsize} \NC the initial page goal \NC \NR
+\stoptabulate
+
+When the first content is added to an empty page the \type {\pagegoal} gets the
+value of \type {\vsize} and gets frozen but the value is diminished by the space
+needed by left over inserts. These inserts are managed via a separate list so
+they don't interfere with the page that itself of course can have additional
+inserts. The \type {\pagevsize} is just a (\LUAMETATEX) status variable that hold
+the initial \type {\pagegoal} but it might play a role in future extensions.
+
+Another variable is \type {\deadcycles} that registers the number of times the
+output routine is called without returning result.
+
+\stopsectionlevel
+
+\startsectionlevel[title=Inserts]
+
+We now come to inserts. In traditional \TEX\ an insert is a data structure that
+runs on top of registers: a box, count, dimension and skip. An insert is accessed
+by a number so for instance insert 123 will use the four registers of that
+number. Because \TEX\ only offers a command alias mechanism for registers (like
+\type {\countdef}) a macro package will implement some allocator management
+subsystem (like \type {\newcount}). A \type {\newinsert} has to be defined in a
+way that the four registers are not clashing with other allocators. When you
+start with \TEX\ seeing code that deals with in (in plain \TEX) can be puzzling
+but it follows from the way \TEX\ is set up. But inserts are probably not what
+you start exploring right away away.
+
+In \LUAMETATEX\ you can set \type {\insertmode} to 1 and that is what we do in
+\CONTEXT. In that mode inserts are taken from a pool instead of registers. A side
+effect is that like the page properties the insert properties are global too but
+that is normally no problem and can be managed well by a macro package (that
+probably would assign register the values globally too). The insert pool will
+grow dynamically on demand so one can just start at 1; in \CONTEXT\ \MKIV\ we use
+the range 127 upto 255 in order to avoid a clash with registers. In \LMTX\ we start
+at 1 because there are no clashes.
+
+A consequence of this approach is that we use dedicated commands to set the insert
+properties:
+
+\starttabulate[|l|l|p|]
+\NC \type {\insertdistance} \NC glue \NC the space before the first instance (on a page) \NC \NR
+\NC \type {\insertmultiplier} \NC count \NC a factor that is used to calculate the height used \NC \NR
+\NC \type {\insertlimit} \NC dimen \NC the maximum amount of space on a page to be taken \NC \NR
+\NC \type {\insertpenalty} \NC count \NC the floating penalty (used when set) \NC \NR
+\NC \type {\insertmaxdepth} \NC dimen \NC the maximum split depth (used when set) \NC \NR
+\NC \type {\insertstorage} \NC count \NC signals that the insert has to be stored for later \NC \NR
+\NC \type {\insertheight} \NC dimen \NC the accumulated height of the inserts so far \NC \NR
+\NC \type {\insertdepth} \NC dimen \NC the current depth of the inserts so far \NC \NR
+\NC \type {\insertwidth} \NC dimen \NC the width of the inserts \NC \NR
+\stoptabulate
+
+These commands take a number and an integer, dimension or glue specification.
+They can be set and queried but setting the dimensions can have side effects. The
+accumulated height of the inserts is available in \type {\insertheights} (which
+can be set too). The \type {\floatingpenalty} variable determines the penalty
+applied when a split is needed.
+
+In the output routine the original \TEX\ variable \type {\insertpenalties} is a
+counter that keeps the number of insertions that didn't fit on the page while
+otherwise if has the accumulated penalties of the split insertions. When \type
+{\holdinginserts} is non zero the inserts in the list are not collected for
+output, which permits the list to be fed back for reprocessing.
+
+The \LUAMETATEX\ specific storage mode \type {\insertstoring} variable is
+explained in the next section.
+
+\stopsectionlevel
+
+\startsectionlevel[title=Storing]
+
+This feature is kind of special and still experimental. When \type
+{\insertstoring} is set 1, all inserts that have their storage flag set will be
+saved. Think of a multi column setup where inserts have to end up in the last
+column. If there are three columns, the first two will store inserts. Then when
+the last column is dealt with \type {\insertstoring} can be set to 2 and that
+will signal the builder that we will inject the inserts. In both cases, the value
+of this register will be set to zero so that it doesn't influence further
+processing.
+
+\stopsectionlevel
+
+\startsectionlevel[title=Callbacks]
+
+{\em Todo, nothing new there, so no hurry.}
+
+\stopsectionlevel
+
+\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
index a69eec797..200cd8650 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex
@@ -22,7 +22,7 @@
[title=macros,
color=middleorange]
-\startsection[title=Preamble]
+\startsectionlevel[title=Preamble]
This chapter overlaps with other chapters but brings together some extensions to
the macro definition and expansion parts. As these mechanisms were stepwise
@@ -33,9 +33,9 @@ have \TEX\ act like before. We keep the charm of the macro language but these
additions make for easier definitions, but (at least initially) none that could
not be done before using more code.
-\stopsection
+\stopsectionlevel
-\startsection[title=Definitions]
+\startsectionlevel[title=Definitions]
A macro definition normally looks like like this: \footnote {The \type
{\dontleavehmode} command make the examples stay on one line.}
@@ -563,9 +563,9 @@ when the matching quits.
Gobbling spaces versus pushing back is an interface design decision because it
has to do with consistency.
-\stopsection
+\stopsectionlevel
-\startsection[title=Runaway arguments]
+\startsectionlevel[title=Runaway arguments]
There is a particular troublesome case left: a runaway argument. The solution is
not pretty but it's the only way: we need to tell the parser that it can quit.
@@ -611,9 +611,9 @@ offset by some inefficient styling. Of course another gain of loosing some
indirectness is that error messages point to the macro that the user called for
and not to some follow up.
-\stopsection
+\stopsectionlevel
-\startsection[title=Introspection]
+\startsectionlevel[title=Introspection]
A macro has a meaning. You can serialize that meaning as follows:
@@ -659,9 +659,9 @@ macro is a special version of the online variant:
That one is always available and shows a similar list on the console. Again, users
normally don't want to know such details.
-\stopsection
+\stopsectionlevel
-\startsection[title=nesting]
+\startsectionlevel[title=nesting]
You can nest macros, as in:
@@ -760,9 +760,9 @@ sure I do know why I dislike some languages for it). The \TEX\ system is not the
only one where dollars, percent signs, ampersands and hashes have special
meaning.
-\stopsection
+\stopsectionlevel
-\startsection[title=Prefixes]
+\startsectionlevel[title=Prefixes]
Traditional \TEX\ has three prefixes that can be used with macros: \type {\global},
\type {\outer} and \type {\long}. The last two are no|-|op's in \LUAMETATEX\ and
@@ -903,24 +903,24 @@ The level of checking is controlled with the \type {\overloadmode} but I'm still
not sure about how many levels we need there. A zero value disables checking,
the values 1 and 3 give warnings and the values 2 and 4 trigger an error.
-\stopsection
+\stopsectionlevel
\stopdocument
-freezing pitfalls:
-
-- \futurelet : \overloaded needed
-- \let : \overloaded sometimes needed
-
-primitive protection:
-
-\newif\iffoo \footrue \foofalse : problem when we make iftrue and iffalse
-permanent ... they inherit, so we can't let them, we need a not permanent
-alias which is again tricky ... something native?
-
-immutable : still \count000 but we can consider blocking that, for instance
-by \def\count{some error}
-
-\defcsname
-\edefcsname
-\letcsname
+% freezing pitfalls:
+%
+% - \futurelet : \overloaded needed
+% - \let : \overloaded sometimes needed
+%
+% primitive protection:
+%
+% \newif\iffoo \footrue \foofalse : problem when we make iftrue and iffalse
+% permanent ... they inherit, so we can't let them, we need a not permanent
+% alias which is again tricky ... something native?
+%
+% immutable : still \count000 but we can consider blocking that, for instance
+% by \def\count{some error}
+%
+% \defcsname
+% \edefcsname
+% \letcsname
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-marks.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-marks.tex
index 6eef0dd01..0ea92f150 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-marks.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-marks.tex
@@ -1,14 +1,12 @@
% language=us runpath=texruns:manuals/lowlevel
-\startcomponent lowlevel-marks
-
\environment lowlevel-style
\startdocument
[title=marks,
color=middlemagenta]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
Marks are one of the subsystems of \TEX, as are for instance alignments and math
as well as inserts which they share some properties with. Both inserts and marks
@@ -50,9 +48,9 @@ In this document we discuss marks but assume that \LUAMETATEX\ is used with
a few \LUA\ mechanisms, but it is to be seen if that will be either a replacement
or an alternative.
-\stopsection
+\stopsectionlevel
-\startsection[title=The basics]
+\startsectionlevel[title=The basics]
Although the original \TEX\ primitives are there, the plural \ETEX\ mark commands
are to be used. Marks, signals with token lists, are set with:
@@ -117,9 +115,9 @@ The current, latest assigned, value of a mark is available too:
Using this value in for instance headers and footers makes no sense because the
last node set can be on a following page.
-\stopsection
+\stopsectionlevel
-\startsection[title=Migration]
+\startsectionlevel[title=Migration]
In the introduction we mentioned that \LUAMETATEX\ has migration built in. In
\MKIV\ we have this as option too, but there it is delegated to \LUA. It permits
@@ -306,9 +304,9 @@ Here \type {sm} means \quote {set mark} while \type {rm} would indicate a \quote
the box and thereby have become a a specific box property as can be seen in the
above trace.
-\stopsection
+\stopsectionlevel
-\startsection[title=Tracing]
+\startsectionlevel[title=Tracing]
The \LUAMETATEX\ engine has a dedicated tracing option for marks. The fact that
the traditional engine doesn't have this can be seen as indication that this is
@@ -355,9 +353,9 @@ When tracing is set to 2 you also get details we get a list of marks of the anal
1:9: ..bot {sample 9.1}
\stoptyping
-\stopsection
+\stopsectionlevel
-\startsection[title=High level commands]
+\startsectionlevel[title=High level commands]
I think that not that many users define their own marks. They are useful for
showing section related titles in headers and footers but the implementation of
@@ -493,14 +491,21 @@ The following three variants are (what is called) fully expandable:
% \resetsynchronizemarking[#1]%
% \synchronizemarking[#1][#2][#3]% (#3: options (no longer used))
-\stopsection
+\stopsectionlevel
-\startsection[title=Pitfalls]
+\startsectionlevel[title=Pitfalls]
The main pitfall is that a (re)setting a mark will inject a node which in
vertical mode can interfere with spacing. In for instance section commands we
wrap them with the title so there it should work out okay.
-\stopsection
+\stopsectionlevel
\stopdocument
+
+% Musical timestamp: videos showing up on YT with Nandi Bushell performing with
+% Dave Grohl (e.g. https://www.youtube.com/watch?v=_AVkGj41RuA) ... the highlight
+% of a nice and emotional thread of exchange between a young and capable energetic
+% drummer challenging an experienced musician. During the pandemic one could
+% witness quite some interesting musical experiments and Nandi and Yoyoka are some
+% inspiring discoveries.
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex
index 1c0264630..b4a3c5da3 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-paragraphs.tex
@@ -6,7 +6,7 @@
[title=paragraphs,
color=middlecyan]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
This manual is mostly discussing a few low level wrappers around low level \TEX\
features. Its writing is triggered by an update to the \METAFUN\ and \LUAMETAFUN\
@@ -29,9 +29,9 @@ they get enabled by default. \footnote {For this we have \type
them, make sure they don't interfere; they are not part of the updates, contrary
to \type {cont-new.mkxl}.}
-\stopsection
+\stopsectionlevel
-\startsection[title=Paragraphs]
+\startsectionlevel[title=Paragraphs]
Before we demonstrate some trickery, let's see what a paragraph is. Normally a
document source is formatted like this:
@@ -200,9 +200,9 @@ program it using macros: pickup a token, check and push it back when it's not a
par equivalent token. The primitive is is just nicer (and easier on the log when
tracing is enabled).
-\stopsection
+\stopsectionlevel
-\startsection[title=Properties]
+\startsectionlevel[title=Properties]
A paragraph is just a collection of lines that result from one input line that
got broken. This process of breaking into lines is influenced by quite some
@@ -319,9 +319,9 @@ this new mechanism has been active for a while. Actually, when you now change a
parameter inside the paragraph its new value will not be applied (unless you
prefix it with \type {\frozen} or snapshot it) but no one did that anyway.
-\stopsection
+\stopsectionlevel
-\startsection[title=Wrapping up]
+\startsectionlevel[title=Wrapping up]
In \CONTEXT\ \LMTX\ we have a mechanism to exercise macros (or content) before a
paragraph ends. This is implemented using the \type {\wrapuppar} primitive. The
@@ -343,9 +343,9 @@ question is: where do we apply it in old mechanisms and where not.
% $$x = \vcenter{vcenter : \wrapuppar{1}test\par x\wrapuppar{2}test}$$\blank
% x\vadjust{vadjust : \wrapuppar{1}test\par x\wrapuppar{2}test}x\blank
-\stopsection
+\stopsectionlevel
-\startsection[title=Hanging]
+\startsectionlevel[title=Hanging]
There are two mechanisms for getting a specific paragraph shape: rectangular
hanging and arbitrary shapes. Both mechanisms work top|-|down. The first
@@ -377,9 +377,9 @@ uses at the same time).
\stopcombination
\stopplacefigure
-\stopsection
+\stopsectionlevel
-\startsection[title=Shapes]
+\startsectionlevel[title=Shapes]
In \CONTEXT\ we don't use \type {\parshape} a lot. It is used in for instance
side floats but even there not in all cases. It's more meant for special
@@ -970,10 +970,10 @@ examples are visualized in \in {figure} [fig:flow].
\stopcombination
\stopplacefigure
-\stopsection
+\stopsectionlevel
-% \startsection[title=Linebreaks]
-\startsection[title=Modes]
+% \startsectionlevel[title=Linebreaks]
+\startsectionlevel[title=Modes]
% \ruledvbox{1\ifhmode\writestatus{!}{HMODE 1}\fi} % hsize
% \ruledvbox{\hbox{\strut 2}\ifhmode\writestatus{!}{HMODE 2}\fi} % fit
@@ -984,15 +984,15 @@ examples are visualized in \in {figure} [fig:flow].
{\em todo: some of the side effects of so called modes}
-\stopsection
+\stopsectionlevel
-\startsection[title=Normalization]
+\startsectionlevel[title=Normalization]
{\em todo: users don't need to bother about this but it might be interesting anyway}
-\stopsection
+\stopsectionlevel
-\startsection[title=Dirty tricks]
+\startsectionlevel[title=Dirty tricks]
{\em todo: explain example for combining paragraphs}
@@ -1008,7 +1008,7 @@ examples are visualized in \in {figure} [fig:flow].
%
% test
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex
index f24019f0d..4dbee67cd 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-registers.tex
@@ -6,7 +6,7 @@
[title=registers,
color=darkmagenta]
-\startsection[title=Preamble]
+\startsectionlevel[title=Preamble]
Registers are sets of variables that are accessed by index and a such resemble
registers in a processing unit. You can store a quantity in a register, retrieve
@@ -14,9 +14,9 @@ it, and also manipulate it.
There is hardly any need to use them in \CONTEXT\ so we keep it simple.
-\stopsection
+\stopsectionlevel
-\startsection[title={\TEX\ primitives}]
+\startsectionlevel[title={\TEX\ primitives}]
There are several categories:
@@ -105,9 +105,11 @@ but in a macro package you should not use that one but the higher level \type
Watch the difference:
+\pushoverloadmode
\startlines\tt
\getbuffer[1,2]
\stoplines
+\popoverloadmode
The first definition uses a yet free register so you won't get a clash. The
second one is just a shortcut using a macro and the third one too but again
@@ -182,9 +184,9 @@ If you want to know more about all these quantities, \quotation {\TEX\ By Topic}
provides a good summary of what \TEX\ has to offer, and there is no need to repeat
it here.
-\stopsection
+\stopsectionlevel
-\startsection[title={\ETEX\ primitives}]
+\startsectionlevel[title={\ETEX\ primitives}]
Apart from the ability to use expressions, the contribution to registers that
\ETEX\ brought was that suddenly we could use upto 65K of them, which is more
@@ -194,9 +196,9 @@ and later \LUATEX\ regular arrays were used, at the cost of more memory which in
the meantime has become cheap. As \CONTEXT\ moved to \ETEX\ rather early its
users never had to worry about it.
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUATEX\ primitives}]
+\startsectionlevel[title={\LUATEX\ primitives}]
The \LUATEX\ engine introduced attributes. These are numeric properties that are
bound to the nodes that are the result of typesetting operations. They are
@@ -239,13 +241,13 @@ Just be aware that defining attributes can have an impact on performance. As you
cannot access them at the \TEX\ end you seldom need them. If you do you can
better use the proper more high level definers (not discussed here).
-\stopsection
+\stopsectionlevel
-\startsection[title={\LUAMETATEX\ primitives}]
+\startsectionlevel[title={\LUAMETATEX\ primitives}]
{\em todo}
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex
index 484e80a0b..cfd9f9611 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-scope.tex
@@ -9,15 +9,15 @@
[title=scope,
color=middleblue]
-\startsection[title=Introduction]
+\startsectionlevel[title=Introduction]
When I visited the file where register allocations are implemented I wondered to
what extend it made sense to limit allocation to global instances only. This
chapter deals with this phenomena.
-\stopsection
+\stopsectionlevel
-\startsection[title=Registers]
+\startsectionlevel[title=Registers]
In \TEX\ definitions can be local or global. Most assignments are local within a
group. Registers and definitions can be assigned global by using the \type
@@ -108,9 +108,9 @@ here the dimension is \the\scratchdimen\par
\typebuffer[option=TEX] \startlines \getbuffer \stoplines
-\stopsection
+\stopsectionlevel
-\startsection[title=Allocation]
+\startsectionlevel[title=Allocation]
The plain \TEX\ format has set some standards and one of them is that registers
are allocated with \type {\new...} commands. So we can say:
@@ -252,9 +252,9 @@ So, again we get:
When used in the body of the macro there is of course a little overhead
involved in the repetitive allocation but normally that can be neglected.
-\stopsection
+\stopsectionlevel
-\startsection[title=Files]
+\startsectionlevel[title=Files]
When adding these new allocators I also wondered about the read and write
allocators. We don't use them in \CONTEXT\ but maybe users like them, so let's
@@ -334,7 +334,7 @@ SOME LINE 3
As you see in these examples, we an locally define a read channel without
getting a message about it already being defined.
-\stopsection
+\stopsectionlevel
\stopdocument
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex
index 0abc557b6..bdb3a5b87 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-security.tex
@@ -21,7 +21,7 @@
[title=security,
color=middleorange]
-\startsection[title=Preamble]
+\startsectionlevel[title=Preamble]
Here I will discuss a moderate security subsystem of \LUAMETATEX\ and therefore
\CONTEXT\ \LMTX. This is not about security in the sense of the typesetting
@@ -35,9 +35,9 @@ might take a few years before the security model is finalized and all files are
updated accordingly. There are lots of files and macros involved. In the process
the underlying features in the engine might evolve.
-\stopsection
+\stopsectionlevel
-\startsection[title=Flags]
+\startsectionlevel[title=Flags]
Before we go into the security levels we see what flags can be set. The \TEX\
language has a couple of so called prefixes that can be used when setting values
@@ -205,9 +205,9 @@ really want to avoid that you can set the overload mode to 255 after which it
cannot be set any more. However, it can be useful to set the mode to zero (or
some warning level) when foreign macro packages are used.
-\stopsection
+\stopsectionlevel
-\startsection[title=Complications]
+\startsectionlevel[title=Complications]
One side effect of all this is that all those prefixes can lead to more code. On
the other hand we save some due to the extended macro argument handling features.
@@ -220,9 +220,9 @@ about the same. \footnote {And if you wonder about memory, by compacting the use
(often scattered) token memory before dumping I manages to save some 512K on the
format file, so often the loss and gain are somewhere else.}
-\stopsection
+\stopsectionlevel
-\startsection[title=Introspection]
+\startsectionlevel[title=Introspection]
In case you want to get some details about the properties of a macro, you can
check its meaning. The full variant shows all of them.
@@ -241,7 +241,7 @@ check its meaning. The full variant shows all of them.
\startpacked \getbuffer \stoppacked
-\stopsection
+\stopsectionlevel
% In \CONTEXT:
% c! v! s! ??
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-style.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-style.tex
index 12ccee0b5..a8eba991e 100644
--- a/doc/context/sources/general/manuals/lowlevel/lowlevel-style.tex
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-style.tex
@@ -44,6 +44,10 @@
[style=\bfa,
color=darkgray]
+\setuplist
+ [chapter]
+ [style=bold]
+
\setupfootertexts
[section] % [\documentvariable{title}]
@@ -87,6 +91,15 @@
withcolor "white" ;
\stopuseMPgraphic
+\definesectionlevels
+ [default]
+ [%{chapter,title},
+ {section,subject},
+ {subsection,subsubject},
+ {subsubsection,subsubsubject},
+ {subsubsubsection,subsubsubject},
+ {subsubsubsubsection,subsubsubject}]
+
\startsetups document:start
\startMPpage
@@ -95,9 +108,29 @@
\page
- \startsubject[title=Contents]
- \placelist[section][criterium=previous]
- \stopsubject
+ \startsubjectlevel[title=Contents]
+ \placelist[chapter,section] [criterium=previous]
+ \stopsubjectlevel
+
+\stopsetups
+
+\startsetups document:stop
+
+\testpage[6]
+
+%startsubjectlevel[title=Colofon]
+\startsectionlevel[title=Colofon,number=no,saveinlist=no]
+
+ \starttabulate
+ \NC Author \NC Hans Hagen \NC \NR
+ \NC \CONTEXT \NC \contextversion \NC \NR
+ \NC \LUAMETATEX \NC \texengineversion \NC \NR
+ \NC Support \NC www.pragma-ade.com \NC \NR
+ \NC \NC contextgarden.net \NC \NR
+ \stoptabulate
+
+\stopsectionlevel
+%stopsubjectlevel
\stopsetups
diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel.tex
new file mode 100644
index 000000000..b958308a2
--- /dev/null
+++ b/doc/context/sources/general/manuals/lowlevel/lowlevel.tex
@@ -0,0 +1,39 @@
+% language=us runpath=texruns:manuals/lowlevel
+
+\environment lowlevel-style
+
+%D This is a bit if a cheat. The low level manuals are independent but I want an
+%D overview document on the website. Therefore we use sectionlevels in the documents
+%D that we we then overload here (we push the chapter level in front).
+
+\starttext
+
+ \definesectionlevels
+ [default]
+ [{chapter,title},
+ {section,subject},
+ {subsection,subsubject},
+ {subsubsection,subsubsubject},
+ {subsubsubsection,subsubsubject},
+ {subsubsubsubsection,subsubsubject}]
+
+ \startdocument[title=lowlevel,color=middlegray]
+ \stopdocument
+
+ \startsectionlevel[title=Conditionals] \component [lowlevel-conditionals] \stopsectionlevel
+ \startsectionlevel[title=Boxes] \component [lowlevel-boxes] \stopsectionlevel
+ \startsectionlevel[title=Expansion] \component [lowlevel-expansion] \stopsectionlevel
+ \startsectionlevel[title=Registers] \component [lowlevel-registers] \stopsectionlevel
+ \startsectionlevel[title=Macros] \component [lowlevel-macros] \stopsectionlevel
+ \startsectionlevel[title=Grouping] \component [lowlevel-grouping] \stopsectionlevel
+ \startsectionlevel[title=Security] \component [lowlevel-security] \stopsectionlevel
+ \startsectionlevel[title=Characters] \component [lowlevel-characters] \stopsectionlevel
+ \startsectionlevel[title=Scope] \component [lowlevel-scope] \stopsectionlevel
+ \startsectionlevel[title=Paragraphs] \component [lowlevel-paragraphs] \stopsectionlevel
+ \startsectionlevel[title=Alignments] \component [lowlevel-alignments] \stopsectionlevel
+ \startsectionlevel[title=Marks] \component [lowlevel-marks] \stopsectionlevel
+ \startsectionlevel[title=Inserts] \component [lowlevel-inserts] \stopsectionlevel
+
+\stoptext
+
+
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 199de001e..dc06a5f11 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -9233,7 +9233,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-prs"] = package.loaded["util-prs"] or true
--- original size: 24819, stripped down to: 16424
+-- original size: 24815, stripped down to: 16424
if not modules then modules={} end modules ['util-prs']={
version=1.001,
@@ -25932,8 +25932,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1027105
--- stripped bytes : 403441
+-- original bytes : 1027101
+-- stripped bytes : 403437
-- end library merge
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 199de001e..dc06a5f11 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -9233,7 +9233,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-prs"] = package.loaded["util-prs"] or true
--- original size: 24819, stripped down to: 16424
+-- original size: 24815, stripped down to: 16424
if not modules then modules={} end modules ['util-prs']={
version=1.001,
@@ -25932,8 +25932,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1027105
--- stripped bytes : 403441
+-- original bytes : 1027101
+-- stripped bytes : 403437
-- end library merge
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 199de001e..dc06a5f11 100644
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -9233,7 +9233,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-prs"] = package.loaded["util-prs"] or true
--- original size: 24819, stripped down to: 16424
+-- original size: 24815, stripped down to: 16424
if not modules then modules={} end modules ['util-prs']={
version=1.001,
@@ -25932,8 +25932,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1027105
--- stripped bytes : 403441
+-- original bytes : 1027101
+-- stripped bytes : 403437
-- end library merge
diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua
index 199de001e..dc06a5f11 100644
--- a/scripts/context/stubs/win64/mtxrun.lua
+++ b/scripts/context/stubs/win64/mtxrun.lua
@@ -9233,7 +9233,7 @@ do -- create closure to overcome 200 locals limit
package.loaded["util-prs"] = package.loaded["util-prs"] or true
--- original size: 24819, stripped down to: 16424
+-- original size: 24815, stripped down to: 16424
if not modules then modules={} end modules ['util-prs']={
version=1.001,
@@ -25932,8 +25932,8 @@ end -- of closure
-- used libraries : l-bit32.lua l-lua.lua l-macro.lua l-sandbox.lua l-package.lua l-lpeg.lua l-function.lua l-string.lua l-table.lua l-io.lua l-number.lua l-set.lua l-os.lua l-file.lua l-gzip.lua l-md5.lua l-sha.lua l-url.lua l-dir.lua l-boolean.lua l-unicode.lua l-math.lua util-str.lua util-tab.lua util-fil.lua util-sac.lua util-sto.lua util-prs.lua util-fmt.lua util-soc-imp-reset.lua util-soc-imp-socket.lua util-soc-imp-copas.lua util-soc-imp-ltn12.lua util-soc-imp-mime.lua util-soc-imp-url.lua util-soc-imp-headers.lua util-soc-imp-tp.lua util-soc-imp-http.lua util-soc-imp-ftp.lua util-soc-imp-smtp.lua trac-set.lua trac-log.lua trac-inf.lua trac-pro.lua util-lua.lua util-deb.lua util-tpl.lua util-sbx.lua util-mrg.lua util-env.lua luat-env.lua util-zip.lua lxml-tab.lua lxml-lpt.lua lxml-mis.lua lxml-aux.lua lxml-xml.lua trac-xml.lua data-ini.lua data-exp.lua data-env.lua data-tmp.lua data-met.lua data-res.lua data-pre.lua data-inp.lua data-out.lua data-fil.lua data-con.lua data-use.lua data-zip.lua data-tre.lua data-sch.lua data-lua.lua data-aux.lua data-tmf.lua data-lst.lua libs-ini.lua luat-sta.lua luat-fmt.lua
-- skipped libraries : -
--- original bytes : 1027105
--- stripped bytes : 403441
+-- original bytes : 1027101
+-- stripped bytes : 403437
-- end library merge
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 49c89aecc..98286f8e9 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2021.09.06 11:44}
+\newcontextversion{2021.09.13 09:37}
%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 cbe239ec2..a39318d4b 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.09.06 11:44}
+\edef\contextversion{2021.09.13 09:37}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index e26f62fa3..68a07fb83 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.09.06 11:44}
+\newcontextversion{2021.09.13 09:37}
%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 3ad868f86..159c8ebc7 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2021.09.06 11:44}
+\edef\contextversion{2021.09.13 09:37}
%D Kind of special:
diff --git a/tex/context/base/mkiv/font-ots.lua b/tex/context/base/mkiv/font-ots.lua
index 8e8be6f95..7de108d4c 100644
--- a/tex/context/base/mkiv/font-ots.lua
+++ b/tex/context/base/mkiv/font-ots.lua
@@ -163,6 +163,8 @@ local trace_testruns = false registertracker("otf.testruns", function
local forcediscretionaries = false
local forcepairadvance = false -- for testing
+local repeatablemultiples = context or false
+
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries = v
end)
@@ -648,16 +650,52 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop) -- what t
insertnodeafter(head,start,n)
start = n
end
- if what == true then
- -- we're ok
- elseif what > 1 then
- local m = multiple[nofmultiples]
- for i=2,what do
- local n = copy_node(start) -- ignore components
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start = n
+ if what ~= true and repeatablemultiples then
+ -- This is just some experimental code; we might introduce gsub_extensible
+ -- some day instead. Beware: when we have a feature that mixes alternates and
+ -- multiples we need to make sure we don't handle the alternate string values
+ -- here. This might eventually become an lmtx only feature.
+ local kind = type(what)
+ local m, f, l
+ if kind == "string" then
+ local what, n = string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what == "middle" then
+ m = tonumber(n)
+ elseif what == "first" then
+ f = tonumber(n)
+ elseif what == "last" then
+ l = tonumber(n)
+ end
+ elseif kind == "table" then
+ -- won't happen because currently we don't split these values
+ m = what.middle
+ f = what.first
+ l = what.last
+ end
+ if f or m or l then
+ if m and m > 1 and nofmultiples == 3 then
+ local middle = getnext(first)
+ for i=2,m do
+ local n = copynode(middle) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f > 1 then
+ for i=2,f do
+ local n = copynode(first) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l > 1 then
+ for i=2,l do
+ local n = copynode(start) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start = n
+ end
+ end
end
end
end
@@ -1052,7 +1090,7 @@ function handlers.gpos_mark2base(head,start,dataset,sequence,markanchors,rlmode,
end
return head, start, true
elseif trace_bugs then
- -- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ -- onetimemessage(currentfont,basechar,"no base anchors")
logwarning("%s: mark %s is not anchored to %s",pref(dataset,sequence),gref(markchar),gref(basechar))
end
elseif trace_bugs then
@@ -1118,7 +1156,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
elseif trace_bugs then
-- logwarning("%s: char %s is missing in font",pref(dataset,sequence),gref(basechar))
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -1858,7 +1896,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end
diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua
index 28a8f41de..288067563 100644
--- a/tex/context/base/mkiv/mult-prm.lua
+++ b/tex/context/base/mkiv/mult-prm.lua
@@ -401,6 +401,8 @@ return {
"insertmode",
"insertmultiplier",
"insertprogress",
+ "insertstorage",
+ "insertstoring",
"insertunbox",
"insertuncopy",
"insertwidth",
@@ -511,6 +513,7 @@ return {
"tracingexpressions",
"tracingfonts",
"tracinghyphenation",
+ "tracinginserts",
"tracingmarks",
"tracingmath",
"undent",
@@ -864,6 +867,7 @@ return {
"pageshrink",
"pagestretch",
"pagetotal",
+ "pagevsize",
"par",
"parfillleftskip",
"parfillskip",
diff --git a/tex/context/base/mkiv/node-fin.lua b/tex/context/base/mkiv/node-fin.lua
index 42c24378f..b9ba169dd 100644
--- a/tex/context/base/mkiv/node-fin.lua
+++ b/tex/context/base/mkiv/node-fin.lua
@@ -203,7 +203,7 @@ local function process(attribute,head,inheritance,default) -- one attribute
current = default
end
elseif current ~= outer then
- head = insertnodebefore(head,stack,copy_node(nsdata[c]))
+ head = insertnodebefore(head,stack,copy_node(nsdata[c])) -- hm, what is c ... bug
current = outer
end
elseif default and inheritance then
diff --git a/tex/context/base/mkiv/node-tra.lua b/tex/context/base/mkiv/node-tra.lua
index d3d35dae0..67435f1c7 100644
--- a/tex/context/base/mkiv/node-tra.lua
+++ b/tex/context/base/mkiv/node-tra.lua
@@ -77,6 +77,7 @@ local rule_code = nodecodes.rule
local dir_code = nodecodes.dir
local par_code = nodecodes.par
local whatsit_code = nodecodes.whatsit
+local passive_code = nodecodes.passive
local dimenfactors = number.dimenfactors
local formatters = string.formatters
@@ -303,57 +304,68 @@ end
nodes.showsimplelist = function(h,depth) showsimplelist(h,depth,0) end
local function listtoutf(h,joiner,textonly,last,nodisc)
- local w = { }
- local n = 0
- local g = formatters["<%i>"]
- local d = formatters["[%s|%s|%s]"]
- while h do
- local c, id = isglyph(h)
- if c then
- n = n + 1 ; w[n] = c >= 0 and utfchar(c) or g(c)
- if joiner then
- n = n + 1 ; w[n] = joiner
- end
- elseif id == disc_code then
- local pre, pos, rep = getdisc(h)
- if not nodisc then
- n = n + 1 ; w[n] = d(
- pre and listtoutf(pre,joiner,textonly) or "",
- pos and listtoutf(pos,joiner,textonly) or "",
- rep and listtoutf(rep,joiner,textonly) or ""
- )
- elseif rep then
- n = n + 1 ; w[n] = listtoutf(rep,joiner,textonly) or ""
- end
- if joiner then
- n = n + 1 ; w[n] = joiner
- end
- elseif textonly then
- if id == glue_code then
- if getwidth(h) > 0 then
- n = n + 1 ; w[n] = " "
+ if h then
+ local w = { }
+ local n = 0
+ local g = formatters["<%i>"]
+ local d = formatters["[%s|%s|%s]"]
+ while h do
+ local c, id = isglyph(h)
+ if c then
+ n = n + 1 ; w[n] = c >= 0 and utfchar(c) or g(c)
+ if joiner then
+ n = n + 1 ; w[n] = joiner
+ end
+ elseif id == disc_code then
+ local pre, pos, rep = getdisc(h)
+ if not nodisc then
+ n = n + 1 ; w[n] = d(
+ pre and listtoutf(pre,joiner,textonly) or "",
+ pos and listtoutf(pos,joiner,textonly) or "",
+ rep and listtoutf(rep,joiner,textonly) or ""
+ )
+ elseif rep then
+ n = n + 1 ; w[n] = listtoutf(rep,joiner,textonly) or ""
+ end
+ if joiner then
+ n = n + 1 ; w[n] = joiner
+ end
+ elseif id == passive_code then
+ -- smells like a bug in luatex
+ print("weird: passive node in listtoutf")
+ return ""
+ elseif textonly then
+ if id == glue_code then
+ if getwidth(h) > 0 then
+ n = n + 1 ; w[n] = " "
+ end
+ elseif id == hlist_code or id == vlist_code then
+ local l = getlist(h)
+ n = n + 1 ; w[n] = "["
+ if l then
+ n = n + 1 ; w[n] = listtoutf(l,joiner,textonly,last,nodisc)
+ end
+ n = n + 1 ; w[n] = "]"
end
- elseif id == hlist_code or id == vlist_code then
- n = n + 1 ; w[n] = "["
- n = n + 1 ; w[n] = listtoutf(getlist(h),joiner,textonly,last,nodisc)
- n = n + 1 ; w[n] = "]"
+ else
+ n = n + 1 ; w[n] = "[-]"
+ end
+ if h == last then
+ break
+ else
+ h = getnext(h)
end
- else
- n = n + 1 ; w[n] = "[-]"
- end
- if h == last then
- break
- else
- h = getnext(h)
end
+ return concat(w,"",1,(w[n] == joiner) and (n-1) or n)
+ else
+ return ""
end
- return concat(w,"",1,(w[n] == joiner) and (n-1) or n)
end
function nodes.listtoutf(h,joiner,textonly,last,nodisc)
if h then
local joiner = joiner == true and utfchar(0x200C) or joiner -- zwnj
- return listtoutf(tonut(h),joiner,textonly,last and tonut(last),nodisc)
+ return listtoutf(tonut(h),joiner,textonly,last and tonut(last) or nil,nodisc)
else
return ""
end
diff --git a/tex/context/base/mkiv/page-inj.mkvi b/tex/context/base/mkiv/page-inj.mkvi
index f1b520f5e..0adfca92d 100644
--- a/tex/context/base/mkiv/page-inj.mkvi
+++ b/tex/context/base/mkiv/page-inj.mkvi
@@ -33,8 +33,14 @@
\let\page_boxes_flush_after \clf_flushpageinjectionsafter
\def\page_injections_flush_indeed
- {\scrn_canvas_synchronize_set{\pageinjectionparameter\c!width}{\pageinjectionparameter\c!height}%
- \invokepagehandler\v!normal{\inheritedpageinjectionframed{\texsetup\p_page_injectionalternative_rederingsetup}}%
+ {\begingroup
+ \setbox\scratchbox\normalhpack
+ {\inheritedpageinjectionframed{\texsetup\p_page_injectionalternative_rederingsetup}}%
+ \printpaperwidth \wd\scratchbox
+ \printpaperheight\ht\scratchbox
+ \scrn_canvas_synchronize_only
+ \invokepagehandler\v!normal{\box\scratchbox}%
+ \endgroup
\scrn_canvas_synchronize_reset}
\def\page_injections_flush_saved#name#parameters%
diff --git a/tex/context/base/mkiv/page-mix.lua b/tex/context/base/mkiv/page-mix.lua
index 7828b7e56..a4e08063d 100644
--- a/tex/context/base/mkiv/page-mix.lua
+++ b/tex/context/base/mkiv/page-mix.lua
@@ -251,12 +251,19 @@ local function preparesplit(specification) -- a rather large function
report_state("fatal error, no list")
return
end
- local head = getlist(list) or specification.originalhead
+ local head = nil
+ if getid(list) == hlist_code then
+ head = list
+ else
+ head = getlist(list) or specification.originalhead
+ end
if not head then
report_state("fatal error, no head")
return
end
+
slidenodes(head) -- we can have set prev's to nil to prevent backtracking
+
local discarded = { }
local originalhead = head
local originalwidth = specification.originalwidth or getwidth(list)
@@ -441,6 +448,7 @@ local function preparesplit(specification) -- a rather large function
if column == nofcolumns then
column = 0 -- nicer in trace
rest = head
+-- rest = nil
return false, 0
else
local skipped
@@ -637,7 +645,6 @@ local function preparesplit(specification) -- a rather large function
end
local function process_list(current,nxt)
--- print(nuts.getpre(current),nuts.getpost(current))
local nxtid = nxt and getid(nxt)
line = line + 1
local inserts, insertskips, nextskips, inserttotal = nil, 0, 0, 0
@@ -773,7 +780,6 @@ local function preparesplit(specification) -- a rather large function
specification.rest = rest
specification.overflow = overflow
specification.discarded = discarded
-
setlist(getbox(specification.box))
return specification
@@ -900,6 +906,7 @@ local function getsplit(result,n)
end
setprev(h) -- move up
+
local strutht = result.strutht
local strutdp = result.strutdp
local lineheight = strutht + strutdp
@@ -908,6 +915,19 @@ local function getsplit(result,n)
local v = new_vlist()
setlist(v,h)
+ -- safeguard ... i need to figure this out some day
+
+ local c = r.head
+ while c do
+ if c == result.rest then
+ report_state("flush, column %s, %s",n,"suspicous rest")
+ result.rest = nil
+ break
+ else
+ c = getnext(c)
+ end
+ end
+
-- local v = vpack(h,"exactly",height)
if isglobal then -- option
@@ -1067,7 +1087,10 @@ implement {
arguments = "integer",
actions = function(n)
if result then
- context(tonode(getsplit(result,n)))
+ local list = getsplit(result,n)
+ if list then
+ context(tonode(list))
+ end
end
end,
}
@@ -1085,7 +1108,10 @@ implement {
name = "mixflushrest",
actions = function()
if result then
- context(tonode(getrest(result)))
+ local rest = getrest(result)
+ if rest then
+ context(tonode(rest))
+ end
end
end
}
@@ -1094,7 +1120,10 @@ implement {
name = "mixflushlist",
actions = function()
if result then
- context(tonode(getlist(result)))
+ local list = getlist(result)
+ if list then
+ context(tonode(list))
+ end
end
end
}
diff --git a/tex/context/base/mkiv/page-one.mkiv b/tex/context/base/mkiv/page-one.mkiv
index 54e53035f..dbed7429a 100644
--- a/tex/context/base/mkiv/page-one.mkiv
+++ b/tex/context/base/mkiv/page-one.mkiv
@@ -63,6 +63,22 @@
% \fi
% \fi}
+% \unexpanded\def\page_one_command_set_vsize
+% {\ifgridsnapping
+% \ifcase\layoutlines
+% \getrawnoflines\textheight
+% \else
+% \noflines\layoutlines
+% \fi
+% \global\vsize\noflines\openlineheight
+% \else
+% \global\vsize\textheight
+% \fi
+% \global\advance\vsize\d_page_adapts_delta
+% % alternatively we could set it in builders.buildpage_filter
+% % \ifdim\pagegoal<\maxdimen .. \fi
+% \pagegoal\dimexpr\vsize-\d_page_floats_inserted_top-\d_page_floats_inserted_bottom\relax}
+
\unexpanded\def\page_one_command_set_vsize
{\ifgridsnapping
\ifcase\layoutlines
@@ -75,10 +91,10 @@
\global\vsize\textheight
\fi
\global\advance\vsize\d_page_adapts_delta
- % alternatively we could set it in builders.buildpage_filter
- % \ifdim\pagegoal<\maxdimen .. \fi
- \pagegoal\dimexpr\vsize-\d_page_floats_inserted_top-\d_page_floats_inserted_bottom\relax}
-
+ % \pagegoal\dimexpr\vsize-\d_page_floats_inserted_top-\d_page_floats_inserted_bottom\relax}
+ % per 2021/9/9 : otherwise weird notes overlap with side floats
+ \settotalinsertionheight
+ \pagegoal\dimexpr\vsize-\totalinsertionheight\relax}
% 1 = partial page, 2 = whole page, 3 = partial page
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index 9c9066b38..2eaad3b9c 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 3812c41a2..05e942bc1 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/util-prs.lua b/tex/context/base/mkiv/util-prs.lua
index 6fcc66082..f74bc3b12 100644
--- a/tex/context/base/mkiv/util-prs.lua
+++ b/tex/context/base/mkiv/util-prs.lua
@@ -572,9 +572,9 @@ end
-- "1","2","3","4"
-- "5","6","7","8"
-- ]]
---
+
-- local mycsvsplitter = parsers.csvsplitter { numbers = true }
---
+
-- local list = mycsvsplitter(crap) inspect(list)
-- and this is a slightly patched version of a version posted by Philipp Gesang
diff --git a/tex/context/base/mkxl/buff-ver.mkxl b/tex/context/base/mkxl/buff-ver.mkxl
index 3cde23d5e..fd49bd421 100644
--- a/tex/context/base/mkxl/buff-ver.mkxl
+++ b/tex/context/base/mkxl/buff-ver.mkxl
@@ -149,7 +149,7 @@
\installcommandhandler \??type {type} \??type
\appendtoks
- \frozen\instance\setuevalue{\currenttype}{\buff_verbatim_type{\currenttype}}%
+ \frozen\instance\protected\edefcsname\currenttype\endcsname{\buff_verbatim_type{\currenttype}}%
\to \everydefinetype
\appendtoks
diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl
index 61a039f6b..c9e67279a 100644
--- a/tex/context/base/mkxl/cont-new.mkxl
+++ b/tex/context/base/mkxl/cont-new.mkxl
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2021.09.06 11:44}
+\newcontextversion{2021.09.13 09:37}
%D This file is loaded at runtime, thereby providing an excellent place for hacks,
%D patches, extensions and new features. There can be local overloads in cont-loc
diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl
index a923267f2..97035d34e 100644
--- a/tex/context/base/mkxl/context.mkxl
+++ b/tex/context/base/mkxl/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\immutable\edef\contextformat {\jobname}
-\immutable\edef\contextversion{2021.09.06 11:44}
+\immutable\edef\contextversion{2021.09.13 09:37}
%overloadmode 1 % check frozen / warning
%overloadmode 2 % check frozen / error
diff --git a/tex/context/base/mkxl/font-ots.lmt b/tex/context/base/mkxl/font-ots.lmt
index dcafac025..f83fd8776 100644
--- a/tex/context/base/mkxl/font-ots.lmt
+++ b/tex/context/base/mkxl/font-ots.lmt
@@ -162,6 +162,8 @@ local trace_testruns = false registertracker("otf.testruns", function
local forcediscretionaries = false
local forcepairadvance = false -- for testing
+local repeatlastmultiple = context and true
+
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries = v
end)
@@ -650,11 +652,12 @@ end
local function multiple_glyphs(head,start,multiple,skiphash,what,stop) -- what to do with skiphash matches here
local nofmultiples = #multiple
if nofmultiples > 0 then
+ local first = start
resetinjection(start)
setchar(start,multiple[1])
if nofmultiples > 1 then
- local sn = getnext(start)
- for k=2,nofmultiples do
+ -- local sn = getnext(start)
+ for i=2,nofmultiples do
-- untested:
--
-- while ignoremarks and marks[getchar(sn)] then
@@ -662,20 +665,56 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop) -- what t
-- end
local n = copynode(start) -- ignore components
resetinjection(n)
- setchar(n,multiple[k])
+ setchar(n,multiple[i])
insertnodeafter(head,start,n)
start = n
end
- if what == true then
- -- we're ok
- elseif what > 1 then
- local m = multiple[nofmultiples]
- for i=2,what do
- local n = copynode(start) -- ignore components
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start = n
+ end
+ if what ~= true then
+ -- This is just some experimental code; we might introduce gsub_extensible
+ -- some day instead. Beware: when we have a feature that mixes alternates and
+ -- multiples we need to make sure we don't handle the alternate string values
+ -- here.
+ local kind = type(what)
+ local m, f, l
+ if kind == "string" then
+ local what, n = string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what == "middle" then
+ m = tonumber(n)
+ elseif what == "first" then
+ f = tonumber(n)
+ elseif what == "last" then
+ l = tonumber(n)
+ end
+ elseif kind == "table" then
+ -- won't happen because currently we don't split these values
+ m = what.middle
+ f = what.first
+ l = what.last
+ end
+ if f or m or l then
+ if m and m > 1 and nofmultiples == 3 then
+ local middle = getnext(first)
+ for i=2,m do
+ local n = copynode(middle) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f > 1 then
+ for i=2,f do
+ local n = copynode(first) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l > 1 then
+ for i=2,l do
+ local n = copynode(start) -- ignore components
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start = n
+ end
end
end
end
@@ -1085,7 +1124,7 @@ function handlers.gpos_mark2base(head,start,dataset,sequence,markanchors,rlmode,
end
return head, start, true
elseif trace_bugs then
- -- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ -- onetimemessage(currentfont,basechar,"no base anchors")
logwarning("%s: mark %s is not anchored to %s",pref(dataset,sequence),gref(markchar),gref(basechar))
end
elseif trace_bugs then
@@ -1152,7 +1191,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
elseif trace_bugs then
-- logwarning("%s: char %s is missing in font",pref(dataset,sequence),gref(basechar))
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -1900,7 +1939,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end
diff --git a/tex/context/base/mkxl/lpdf-img.lmt b/tex/context/base/mkxl/lpdf-img.lmt
index ecd154bbf..8e7427ae6 100644
--- a/tex/context/base/mkxl/lpdf-img.lmt
+++ b/tex/context/base/mkxl/lpdf-img.lmt
@@ -1239,38 +1239,41 @@ do
s = - s
end
if s > 0 then
- if s == 1 then
- for i=1,y do
- local r = d[i]
- for j=1,x do
- n = n + 1 ; t[n] = chars[r[j]]
- end
- end
- elseif s == 2 then
- for i=1,y do
- local r = d[i]
- for j=1,x do
- local c = r[j]
- n = n + 1 ; t[n] = chars[c[1]]
- n = n + 1 ; t[n] = chars[c[2]]
- n = n + 1 ; t[n] = chars[c[3]]
- -- n = n + 1 ; t[n] = char(c[1],c[2],c[3]) -- test this
- end
- end
- elseif s == 3 then
- for i=1,y do
- local r = d[i]
- for j=1,x do
- local c = r[j]
- n = n + 1 ; t[n] = chars[c[1]]
- n = n + 1 ; t[n] = chars[c[2]]
- n = n + 1 ; t[n] = chars[c[3]]
- n = n + 1 ; t[n] = chars[c[4]]
- -- n = n + 1 ; t[n] = char(c[1],c[2],c[3],c[4]) -- test this
- end
- end
- end
- return concat(t)
+ -- if true then
+ return string.packrowscolumns(d)
+ -- end
+ -- if s == 1 then
+ -- for i=1,y do
+ -- local r = d[i]
+ -- for j=1,x do
+ -- n = n + 1 ; t[n] = chars[r[j]]
+ -- end
+ -- end
+ -- elseif s == 2 then
+ -- for i=1,y do
+ -- local r = d[i]
+ -- for j=1,x do
+ -- local c = r[j]
+ -- n = n + 1 ; t[n] = chars[c[1]]
+ -- n = n + 1 ; t[n] = chars[c[2]]
+ -- n = n + 1 ; t[n] = chars[c[3]]
+ -- -- n = n + 1 ; t[n] = char(c[1],c[2],c[3]) -- test this
+ -- end
+ -- end
+ -- elseif s == 3 then
+ -- for i=1,y do
+ -- local r = d[i]
+ -- for j=1,x do
+ -- local c = r[j]
+ -- n = n + 1 ; t[n] = chars[c[1]]
+ -- n = n + 1 ; t[n] = chars[c[2]]
+ -- n = n + 1 ; t[n] = chars[c[3]]
+ -- n = n + 1 ; t[n] = chars[c[4]]
+ -- -- n = n + 1 ; t[n] = char(c[1],c[2],c[3],c[4]) -- test this
+ -- end
+ -- end
+ -- end
+ -- return concat(t)
else
local z = d[0] and 0 or 1
if s == -1 then
diff --git a/tex/context/base/mkxl/lpdf-lmt.lmt b/tex/context/base/mkxl/lpdf-lmt.lmt
index 8d3fc7fde..e1637228a 100644
--- a/tex/context/base/mkxl/lpdf-lmt.lmt
+++ b/tex/context/base/mkxl/lpdf-lmt.lmt
@@ -47,6 +47,7 @@ local zlibcompresssize = xzip.compresssize
local nuts = nodes.nuts
local tonut = nodes.tonut
+local tonode = nuts.tonode
local pdfreference = lpdf.reference
local pdfdictionary = lpdf.dictionary
@@ -986,16 +987,18 @@ local localconverter = nil -- will be set
local flushimage do
- local rulecodes = nodes.rulecodes
- local newrule = nodes.pool.rule
+ local newimagerule = nuts.pool.imagerule
+ local newboxrule = nuts.pool.boxrule
local setprop = nuts.setprop
local getprop = nuts.getprop
+ local setattrlist = nuts.setattrlist
local getwhd = nuts.getwhd
local flushlist = nuts.flushlist
local getdata = nuts.getdata
+ local rulecodes = nodes.rulecodes
local normalrule_code = rulecodes.normal
local boxrule_code = rulecodes.box
local imagerule_code = rulecodes.image
@@ -1083,10 +1086,10 @@ local flushimage do
else
wd, ht, dp = l.width, l.height, l.depth
end
- local rule = newrule(wd,ht,dp) -- newboxrule
- rule.subtype = boxrule_code
- setprop(tonut(rule),"index",index)
- return rule, wd, ht, dp
+ local rule = newboxrule(wd,ht,dp)
+ setattrlist(rule,true)
+ setprop(rule,"index",index)
+ return tonode(rule), wd, ht, dp
else
report("no box resource %S",index)
end
@@ -2749,9 +2752,9 @@ do
local imagetypes = images.types -- pdf png jpg jp2 jbig2 stream
local img_none = imagetypes.none
- local rulecodes = nodes.rulecodes
-
- local setprop = nodes.nuts.setprop
+ local newimagerule = nuts.pool.imagerule
+ local setattrlist = nuts.setattrlist
+ local setprop = nuts.setprop
local report_images = logs.reporter("backend","images")
@@ -2759,7 +2762,6 @@ do
local indices = { }
local bpfactor = number.dimenfactors.bp
- local imagerule_code = rulecodes.image
function codeinjections.newimage(specification)
return specification
@@ -2849,14 +2851,14 @@ do
embedimage(specification)
end
--
- local width = specification.width or 0
- local height = specification.height or 0
- local depth = specification.depth or 0
- -- newimagerule
- local n = nodes.pool.rule(width,height,depth)
- n.subtype = imagerule_code
- setprop(tonut(n),"index",specification.index)
- return n
+ local n = newimagerule(
+ specification.width or 0,
+ specification.height or 0,
+ specification.depth or 0
+ )
+ setattrlist(n,true)
+ setprop(n,"index",specification.index)
+ return tonode(n)
end
pdfincludeimage = function(index)
diff --git a/tex/context/base/mkxl/meta-imp-bitmaps.mkxl b/tex/context/base/mkxl/meta-imp-bitmaps.mkxl
index e7846a1e8..069b74207 100644
--- a/tex/context/base/mkxl/meta-imp-bitmaps.mkxl
+++ b/tex/context/base/mkxl/meta-imp-bitmaps.mkxl
@@ -251,6 +251,21 @@
end
end
+ function graphics.bitmaps.manipulators.evening(b,m)
+ local xsize = b.xsize
+ local ysize = b.ysize
+ local data = b.data
+ local colorspace = b.colorspace
+ if colorspace == 1 then
+ for r=1,ysize do
+ local row = data[r]
+ for c=1,xsize do
+ row[c] = row[c] // 2
+ end
+ end
+ end
+ end
+
context.startTEXpage()
local b = graphics.bitmaps.load("hacker.jpg")
graphics.bitmaps.manipulators.myframe(b,20)
@@ -265,20 +280,34 @@
graphics.bitmaps.tocontext(b,50*65536,nil)
context.stopTEXpage()
- local m = table.setmetatableindex(function(t,k) local v = { k, k, k } t[k] = v return v end)
+ do
+
+ local m = table.setmetatableindex(function(t,k) local v = { k, k, k } t[k] = v return v end)
+
+ -- local c = { 255, 0, 0 } for i=0x00,0x1F do m[i] = c end
+ -- local c = { 0, 255, 0 } for i=0x20,0x3F do m[i] = c end
+ -- local c = { 0, 0, 255 } for i=0x40,0x5F do m[i] = c end
+ -- local c = { 255, 255, 0 } for i=0x60,0x7F do m[i] = c end
+ -- local c = { 255, 0, 255 } for i=0x80,0x9F do m[i] = c end
+ -- local c = { 0, 255, 255 } for i=0xA0,0xBF do m[i] = c end
+ -- local c = { 255, 255, 255 } for i=0xC0,0xDF do m[i] = c end
+ -- local c = { 0, 0, 0 } for i=0xE0,0xFF do m[i] = c end
--- local c = { 255, 0, 0 } for i=0x00,0x1F do m[i] = c end
--- local c = { 0, 255, 0 } for i=0x20,0x3F do m[i] = c end
- local c = { 0, 0, 255 } for i=0x40,0x5F do m[i] = c end
--- local c = { 255, 255, 0 } for i=0x60,0x7F do m[i] = c end
--- local c = { 255, 0, 255 } for i=0x80,0x9F do m[i] = c end
--- local c = { 0, 255, 255 } for i=0xA0,0xBF do m[i] = c end
--- local c = { 255, 255, 255 } for i=0xC0,0xDF do m[i] = c end
--- local c = { 0, 0, 0 } for i=0xE0,0xFF do m[i] = c end
+ local c = { 0, 0, 255 } for i=0x40,0x5F do m[i] = c end
+ local c = { 0, 255, 0 } for i=0x80,0x9F do m[i] = c end
+ local c = { 255, 0, 0 } for i=0xB0,0xCF do m[i] = c end
+
+ context.startTEXpage()
+ local b = graphics.bitmaps.load("mill.png")
+ graphics.bitmaps.manipulators.colorize(b,m)
+ graphics.bitmaps.tocontext(b,50*65536,nil)
+ context.stopTEXpage()
+
+ end
context.startTEXpage()
local b = graphics.bitmaps.load("mill.png")
- graphics.bitmaps.manipulators.colorize(b,m)
+ graphics.bitmaps.manipulators.evening(b)
graphics.bitmaps.tocontext(b,50*65536,nil)
context.stopTEXpage()
@@ -291,6 +320,8 @@
graphics.bitmaps.tocontext(b,50*65536,nil)
}}
+% This is inefficient because textext processes twice, so a "todo".
+
\startMPpage
picture p ; p := textext("\MyImage{mill.png}") ;
diff --git a/tex/context/base/mkxl/mlib-scn.lmt b/tex/context/base/mkxl/mlib-scn.lmt
index d92ef1385..33aa74ad2 100644
--- a/tex/context/base/mkxl/mlib-scn.lmt
+++ b/tex/context/base/mkxl/mlib-scn.lmt
@@ -658,6 +658,11 @@ local function getparameterpath()
end
if type(v) == "table" then
return injectpath(v,connector,close)
+ elseif type(v) == "string" then
+ local code = load("return " .. v)
+ if code then
+ return code()
+ end
else
return injectpair(0,0)
end
diff --git a/tex/context/base/mkxl/mult-aux.mkxl b/tex/context/base/mkxl/mult-aux.mkxl
index ba0572d15..64623efe6 100644
--- a/tex/context/base/mkxl/mult-aux.mkxl
+++ b/tex/context/base/mkxl/mult-aux.mkxl
@@ -957,6 +957,9 @@
\expandafter\firstofoneargument
\fi}
+\permanent\def\ifcommandhandler#1#2% namespace name
+ {\ifcsname#1#2:\s!parent\endcsname}
+
% another set of (fast) helpers (grep for usage):
\permanent\def\expandnamespaceparameter#1#2#3% \??xx \getp \c!xx \v!yy
diff --git a/tex/context/base/mkxl/node-fin.lmt b/tex/context/base/mkxl/node-fin.lmt
index 2e744a48a..4bf8663be 100644
--- a/tex/context/base/mkxl/node-fin.lmt
+++ b/tex/context/base/mkxl/node-fin.lmt
@@ -193,7 +193,7 @@ local function process(attribute,head,inheritance,default) -- one attribute
current = default
end
elseif current ~= outer then
- head = insertnodebefore(head,stack,copy_node(nsdata[c]))
+ head = insertnodebefore(head,stack,copy_node(nsdata[outer]))
current = outer
end
elseif default and inheritance then
diff --git a/tex/context/base/mkxl/node-nut.lmt b/tex/context/base/mkxl/node-nut.lmt
index f78e1add6..8675ba05e 100644
--- a/tex/context/base/mkxl/node-nut.lmt
+++ b/tex/context/base/mkxl/node-nut.lmt
@@ -263,6 +263,8 @@ local nuts = {
xscaled = direct.xscaled,
yscaled = direct.yscaled,
-- getxyoffsets = direct.getxyoffsets,
+ getspeciallist = direct.getspeciallist,
+ setspeciallist = direct.setspeciallist,
}
nodes.nuts = nuts
diff --git a/tex/context/base/mkxl/node-res.lmt b/tex/context/base/mkxl/node-res.lmt
index a1fa24bbd..4c456b263 100644
--- a/tex/context/base/mkxl/node-res.lmt
+++ b/tex/context/base/mkxl/node-res.lmt
@@ -183,6 +183,8 @@ local rule = register_nut(new_nut(rule_code)) --
local emptyrule = register_nut(new_nut(rule_code,rulecodes.empty)) -- setdirection(rule, lefttoright_code)
local userrule = register_nut(new_nut(rule_code,rulecodes.user)) -- setdirection(rule, lefttoright_code)
local outlinerule = register_nut(new_nut(rule_code,rulecodes.outline)) -- setdirection(rule, lefttoright_code)
+local imagerule = register_nut(new_nut(rule_code,rulecodes.image)) -- setdirection(rule, lefttoright_code)
+local boxrule = register_nut(new_nut(rule_code,rulecodes.box)) -- setdirection(rule, lefttoright_code)
local hlist = register_nut(new_nut(nodecodes.hlist)) setdirection(hlist,lefttoright_code)
local vlist = register_nut(new_nut(nodecodes.vlist)) setdirection(vlist,lefttoright_code)
@@ -374,6 +376,22 @@ function nutpool.outlinerule(width,height,depth,line) -- w/h/d == nil will let t
return n
end
+function nutpool.imagerule(width,height,depth) -- w/h/d == nil will let them adapt
+ local n = copy_nut(imagerule)
+ if width or height or depth then
+ setwhd(n,width,height,depth)
+ end
+ return n
+end
+
+function nutpool.boxrule(width,height,depth) -- w/h/d == nil will let them adapt
+ local n = copy_nut(boxrule)
+ if width or height or depth then
+ setwhd(n,width,height,depth)
+ end
+ return n
+end
+
function nutpool.leader(width,list)
local n = copy_nut(cleader)
if width then
diff --git a/tex/context/base/mkxl/node-tra.lmt b/tex/context/base/mkxl/node-tra.lmt
index 6fe2e2081..214c8a27c 100644
--- a/tex/context/base/mkxl/node-tra.lmt
+++ b/tex/context/base/mkxl/node-tra.lmt
@@ -307,57 +307,64 @@ end
nodes.showsimplelist = function(h,depth) showsimplelist(h,depth,0) end
local function listtoutf(h,joiner,textonly,last,nodisc)
- local w = { }
- local n = 0
- local g = formatters["<%i>"]
- local d = formatters["[%s|%s|%s]"]
- while h do
- local c, id = isglyph(h)
- if c then
- n = n + 1 ; w[n] = c >= 0 and utfchar(c) or g(c)
- if joiner then
- n = n + 1 ; w[n] = joiner
- end
- elseif id == disc_code then
- local pre, pos, rep = getdisc(h)
- if not nodisc then
- n = n + 1 ; w[n] = d(
- pre and listtoutf(pre,joiner,textonly) or "",
- pos and listtoutf(pos,joiner,textonly) or "",
- rep and listtoutf(rep,joiner,textonly) or ""
- )
- elseif rep then
- n = n + 1 ; w[n] = listtoutf(rep,joiner,textonly) or ""
- end
- if joiner then
- n = n + 1 ; w[n] = joiner
- end
- elseif textonly then
- if id == glue_code then
- if getwidth(h) > 0 then
- n = n + 1 ; w[n] = " "
+ if h then
+ local w = { }
+ local n = 0
+ local g = formatters["<%i>"]
+ local d = formatters["[%s|%s|%s]"]
+ while h do
+ local c, id = isglyph(h)
+ if c then
+ n = n + 1 ; w[n] = c >= 0 and utfchar(c) or g(c)
+ if joiner then
+ n = n + 1 ; w[n] = joiner
+ end
+ elseif id == disc_code then
+ local pre, pos, rep = getdisc(h)
+ if not nodisc then
+ n = n + 1 ; w[n] = d(
+ pre and listtoutf(pre,joiner,textonly) or "",
+ pos and listtoutf(pos,joiner,textonly) or "",
+ rep and listtoutf(rep,joiner,textonly) or ""
+ )
+ elseif rep then
+ n = n + 1 ; w[n] = listtoutf(rep,joiner,textonly) or ""
+ end
+ if joiner then
+ n = n + 1 ; w[n] = joiner
+ end
+ elseif textonly then
+ if id == glue_code then
+ if getwidth(h) > 0 then
+ n = n + 1 ; w[n] = " "
+ end
+ elseif id == hlist_code or id == vlist_code then
+ local l = getlist(h)
+ n = n + 1 ; w[n] = "["
+ if l then
+ n = n + 1 ; w[n] = listtoutf(l,joiner,textonly,last,nodisc)
+ end
+ n = n + 1 ; w[n] = "]"
end
- elseif id == hlist_code or id == vlist_code then
- n = n + 1 ; w[n] = "["
- n = n + 1 ; w[n] = listtoutf(getlist(h),joiner,textonly,last,nodisc)
- n = n + 1 ; w[n] = "]"
+ else
+ n = n + 1 ; w[n] = "[-]"
+ end
+ if h == last then
+ break
+ else
+ h = getnext(h)
end
- else
- n = n + 1 ; w[n] = "[-]"
- end
- if h == last then
- break
- else
- h = getnext(h)
end
+ return concat(w,"",1,(w[n] == joiner) and (n-1) or n)
+ else
+ return ""
end
- return concat(w,"",1,(w[n] == joiner) and (n-1) or n)
end
function nodes.listtoutf(h,joiner,textonly,last,nodisc)
if h then
local joiner = joiner == true and utfchar(0x200C) or joiner -- zwnj
- return listtoutf(tonut(h),joiner,textonly,last and tonut(last),nodisc)
+ return listtoutf(tonut(h),joiner,textonly,last and tonut(last) or nil,nodisc)
else
return ""
end
diff --git a/tex/context/base/mkxl/page-ini.mkxl b/tex/context/base/mkxl/page-ini.mkxl
index 71158e0a7..e179b6d03 100644
--- a/tex/context/base/mkxl/page-ini.mkxl
+++ b/tex/context/base/mkxl/page-ini.mkxl
@@ -353,18 +353,20 @@
\newconstant\c_page_force_strut_depth_trace_mode
-\installtextracker
- {otr.forcestrutdepth}
- {\c_page_force_strut_depth_trace_mode\plusone}
- {\c_page_force_strut_depth_trace_mode\zerocount}
-
-\installoutputroutine\forcestrutdepth
- {\clf_forcestrutdepth\normalpagebox\strutdp\c_page_force_strut_depth_trace_mode
- \unvbox\normalpagebox}
-
-\installoutputroutine\forcestrutdepthplus % experimental
- {\clf_forcestrutdepthplus\normalpagebox\strutdp\c_page_force_strut_depth_trace_mode
- \unvbox\normalpagebox}
+% \installtextracker
+% {otr.forcestrutdepth}
+% {\c_page_force_strut_depth_trace_mode\plusone}
+% {\c_page_force_strut_depth_trace_mode\zerocount}
+
+% todo: only in mvl!
+
+% \installoutputroutine\forcestrutdepth
+% {\clf_forcestrutdepth\normalpagebox\strutdp\c_page_force_strut_depth_trace_mode
+% \unvbox\normalpagebox}
+
+% \installoutputroutine\forcestrutdepthplus % experimental
+% {\clf_forcestrutdepthplus\normalpagebox\strutdp\c_page_force_strut_depth_trace_mode
+% \unvbox\normalpagebox}
% maybe better:
%
diff --git a/tex/context/base/mkxl/page-inj.mklx b/tex/context/base/mkxl/page-inj.mklx
index fda757dbe..8732e2628 100644
--- a/tex/context/base/mkxl/page-inj.mklx
+++ b/tex/context/base/mkxl/page-inj.mklx
@@ -33,8 +33,14 @@
\let\page_boxes_flush_after \clf_flushpageinjectionsafter
\def\page_injections_flush_indeed
- {\scrn_canvas_synchronize_set{\pageinjectionparameter\c!width}{\pageinjectionparameter\c!height}%
- \invokepagehandler\v!normal{\inheritedpageinjectionframed{\texsetup\p_page_injectionalternative_rederingsetup}}%
+ {\begingroup
+ \setbox\scratchbox\normalhpack
+ {\inheritedpageinjectionframed{\texsetup\p_page_injectionalternative_rederingsetup}}%
+ \printpaperwidth \wd\scratchbox
+ \printpaperheight\ht\scratchbox
+ \scrn_canvas_synchronize_only
+ \invokepagehandler\v!normal{\box\scratchbox}%
+ \endgroup
\scrn_canvas_synchronize_reset}
\def\page_injections_flush_saved#name#parameters%
diff --git a/tex/context/base/mkxl/page-ins.mkxl b/tex/context/base/mkxl/page-ins.mkxl
index 978f62f7c..b1e0d7bd7 100644
--- a/tex/context/base/mkxl/page-ins.mkxl
+++ b/tex/context/base/mkxl/page-ins.mkxl
@@ -60,7 +60,7 @@
\newtoks\t_page_inserts_list
-\mutable\let\doprocessinsert\relax % probably kind of obsolete now
+\mutable\let\doprocessinsert\gobbleoneargument % probably kind of obsolete now
%D Maybe some day we will move settings here.
@@ -87,14 +87,14 @@
\permanent\protected\def\processinsertions
{\the\t_page_inserts_list}
-\permanent\protected\def\synchronizeinsertions
- {\let\doprocessinsert\page_inserts_synchronize
- \processinsertions}
-
-\protected\def\page_inserts_synchronize#1% yes or no
- {\ifvoid#1\else
- \page_inserts_inject#1{\unvbox#1}%
- \fi}
+% \permanent\protected\def\synchronizeinsertions
+% {\let\doprocessinsert\page_inserts_synchronize
+% \processinsertions}
+%
+% \protected\def\page_inserts_synchronize#1% yes or no
+% {\ifvoid#1\else
+% \page_inserts_inject#1{\unvbox#1}%
+% \fi}
\permanent\protected\def\doifelseinsertion#1%
{\ifcsname\??insertionnumber#1\endcsname
@@ -180,9 +180,10 @@
number \currentinsertionnumber
}%
\relax
- \t_page_inserts_list\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter\t_page_inserts_list
- \expandafter\page_inserts_process\csname\??insertionnumber\currentinsertion\endcsname}%
+% \t_page_inserts_list\expandafter\expandafter\expandafter
+% {\expandafter\the\expandafter\t_page_inserts_list
+% \expandafter\page_inserts_process\csname\??insertionnumber\currentinsertion\endcsname}%
+ \xtoksapp\t_page_inserts_list{\page_inserts_process{\currentinsertion}}%
\page_inserts_set_multiplier\currentinsertionnumber\plusthousand
\page_inserts_set_distance \currentinsertionnumber\zeropoint
\page_inserts_set_limit \currentinsertionnumber\maxdimen
diff --git a/tex/context/base/mkxl/page-mix.mkxl b/tex/context/base/mkxl/page-mix.mkxl
index daafa4843..446185e43 100644
--- a/tex/context/base/mkxl/page-mix.mkxl
+++ b/tex/context/base/mkxl/page-mix.mkxl
@@ -31,6 +31,24 @@
% offsets (inner ones, so we change the hsize ... needed with backgrounds
% when no content we currently loose the page
+% nasty test case from mailing list (rest issue)
+%
+% \starttext
+% . \blank[32*big]
+% \startitemize
+% \item 0 \startchoice[text] \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice \blank[6*big]
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \item 0 \startchoice \item 0 \item 0 \item 0 \item 0 \stopchoice
+% \stopitemize
+% \stoptext
+
\registerctxluafile{page-mix}{}
\unprotect
diff --git a/tex/context/base/mkxl/page-one.mkxl b/tex/context/base/mkxl/page-one.mkxl
index 4a4ce6014..116f2146d 100644
--- a/tex/context/base/mkxl/page-one.mkxl
+++ b/tex/context/base/mkxl/page-one.mkxl
@@ -35,6 +35,39 @@
\protected\def\page_one_command_set_float_hsize
{\global\hsize\textwidth}
+%D It's complicated:
+
+\newconditional\c_page_one_set_vsize_tmp
+
+\installtextracker{otr.insertheights}
+ {\settrue\c_page_one_set_vsize_tmp}
+ {\setfalse\c_page_one_set_vsize_tmp}
+
+\def\page_one_command_set_vsize_tmp
+ {\settotalinsertionheight
+ \writestatus
+ {set vsize one}
+ {insert heights=\the\insertheights,
+ total insertion height=\the\totalinsertionheight,
+ delta=\the\dimexpr\insertheights-\totalinsertionheight}%
+ \page_one_command_set_vsize_new}
+
+\def\page_one_command_set_vsize_old
+ {\settotalinsertionheight
+ \pagegoal\dimexpr
+ \vsize
+ -\totalinsertionheight
+ \relax}
+
+\def\page_one_command_set_vsize_new
+ {\pagegoal\dimexpr
+ \vsize
+ -\d_page_floats_inserted_top
+ -\d_page_floats_inserted_bottom
+ -\insertheights
+ \relax
+ \insertheights\zeropoint}
+
\protected\def\page_one_command_set_vsize
{\ifgridsnapping
\ifcase\layoutlines
@@ -49,12 +82,14 @@
\global\advance\vsize\d_page_adapts_delta
% alternatively we could set it in builders.buildpage_filter
% \ifdim\pagegoal<\maxdimen .. \fi
- \pagegoal\dimexpr
- \vsize
- -\d_page_floats_inserted_top
- -\d_page_floats_inserted_bottom
- -\insertheights
- \relax}
+ % \writestatus{!!!!!!!!}{\the\vsize-> v:\the\pagevsize,g:\the\pagegoal,t:\the\pagetotal,i:\the\insertheights}%
+ \ifconditional\c_page_one_set_vsize_tmp
+ \page_one_command_set_vsize_tmp
+ \orelse\ifzeropt\insertheights
+ \page_one_command_set_vsize_old
+ \else
+ \page_one_command_set_vsize_new
+ \fi}
% 1 = partial page, 2 = whole page, 3 = partial page
@@ -581,14 +616,24 @@
% \page_floats_report_total
% \dohandlenextfloatindent}
+% \def\page_one_place_float_here_indeed
+% {\ifgridsnapping
+% % otherwise real bad outcome
+% \else
+% % this was not really applied (delayed)
+% % \baselinecorrection % this has to be done better (and definitely not in column mode)
+% % so we now use this:
+% \checkprevdepth
+% \fi
+% \doplacefloatbox
+% \page_floats_report_total
+% \dohandlenextfloatindent}
+
\def\page_one_place_float_here_indeed
{\ifgridsnapping
% otherwise real bad outcome
\else
- % this was not really applied (delayed)
- % \baselinecorrection % this has to be done better (and definitely not in column mode)
- % so we now use this:
- \checkprevdepth
+ \forcestrutdepth
\fi
\doplacefloatbox
\page_floats_report_total
diff --git a/tex/context/base/mkxl/page-pcl.mkxl b/tex/context/base/mkxl/page-pcl.mkxl
index 3ef07c9c5..b9838e771 100644
--- a/tex/context/base/mkxl/page-pcl.mkxl
+++ b/tex/context/base/mkxl/page-pcl.mkxl
@@ -100,20 +100,6 @@
%D \unknown
-\protected\def\page_col_command_set_vsize % \page_one_command_set_vsize minus the pagegoal setting
- {\ifgridsnapping
- \ifcase\layoutlines
- \getrawnoflines\textheight
- \else
- \noflines\layoutlines
- \fi
- \global\vsize\noflines\openlineheight
- \else
- \global\vsize\textheight
- \fi}
-
-%D \unknown
-
\def\page_col_registered_text_area_b#1%
{\begingroup
\makeupwidth\d_page_col_column_width
@@ -234,6 +220,8 @@
\global\advance\c_page_col_current\plusone
\fi
%
+ \page_col_notes_synchronize
+ %
\page_col_command_set_vsize
\page_col_command_set_hsize}
@@ -719,8 +707,8 @@
\c!direction=\v!normal]
\appendtoks % could become an option
- \frozen\instance\setuevalue{\e!start\currentpagecolumns}{\startpagecolumns[\currentpagecolumns]}%
- \frozen\instance\setuevalue{\e!stop \currentpagecolumns}{\stoppagecolumns}%
+ \frozen\instance\protected\edefcsname\e!start\currentpagecolumns\endcsname{\startpagecolumns[\currentpagecolumns]}%
+ \frozen\instance\protected\edefcsname\e!stop \currentpagecolumns\endcsname{\stoppagecolumns}%
\to \everydefinepagecolumns
\def\page_col_pickup_preceding
@@ -754,6 +742,47 @@
\endgroup
\fi}
+% \let\page_col_notes_initialize \relax
+% \let\page_col_notes_synchronize\relax
+% \let\page_col_notes_reset \relax
+%
+% \protected\def\page_col_command_set_vsize % \page_one_command_set_vsize minus the pagegoal setting
+% {\ifgridsnapping
+% \ifcase\layoutlines
+% \getrawnoflines\textheight
+% \else
+% \noflines\layoutlines
+% \fi
+% \global\vsize\noflines\openlineheight
+% \else
+% \global\vsize\textheight
+% \fi}
+
+\newconditional\c_page_col_notes_lastcolumn
+
+\def\page_col_notes_synchronize
+ {\insertstoring\zerocount
+ \ifnum\c_page_col_current=\c_page_col_n_of_columns\relax
+ \strc_notes_process\page_col_notes_inject
+ \ifconditional\c_page_col_notes_lastcolumn
+ \insertstoring\plusone
+ \fi
+ \else
+ \strc_notes_process\page_col_notes_delay
+ \ifconditional\c_page_col_notes_lastcolumn
+ \insertstoring\plustwo
+ \fi
+ \fi}
+
+\def\page_col_notes_delay {\setfalse\c_page_col_notes_lastcolumn\ifcstok{\noteparameter\c!location}\v!lastcolumn\settrue\c_page_col_notes_lastcolumn\insertstorage\currentnoteinsertionnumber\plusone \fi}
+\def\page_col_notes_inject{\setfalse\c_page_col_notes_lastcolumn\ifcstok{\noteparameter\c!location}\v!lastcolumn\settrue\c_page_col_notes_lastcolumn\insertstorage\currentnoteinsertionnumber\zerocount\fi}
+
+\def\page_col_notes_initialize {\insertstoring\zerocount\strc_notes_process\page_col_notes_delay}
+\def\page_col_notes_reset {\insertstoring\zerocount\strc_notes_process\page_col_notes_inject}
+
+\protected\def\page_col_command_set_vsize % different !
+ {\page_one_command_set_vsize}
+
\permanent\tolerant\protected\def\startpagecolumns[#1]%
{\begingroup
\begingroup
@@ -824,6 +853,8 @@
\setupfloats[\c!ntop=\plusthousand]%
% \setupfloats[\c!nbottom=\plusthousand]%
%
+ \page_col_notes_initialize
+ %
\page_col_command_set_vsize
\page_col_command_set_hsize
%
@@ -843,6 +874,7 @@
\page_otr_command_set_vsize
\page_otr_command_set_hsize
\page
+ \page_col_notes_reset
\endgroup}
\protected\def\page_col_stop_nop
diff --git a/tex/context/base/mkxl/page-sid.mkxl b/tex/context/base/mkxl/page-sid.mkxl
index dccfcbce9..20e92ad19 100644
--- a/tex/context/base/mkxl/page-sid.mkxl
+++ b/tex/context/base/mkxl/page-sid.mkxl
@@ -84,7 +84,7 @@
\newcount \c_page_sides_m_of_lines
\newconditional \c_page_sides_delayed
-\newconditional \c_page_sides_check_same_page
+%newconditional \c_page_sides_check_same_page
\newif \iftracesidefloats % public (might change)
@@ -397,24 +397,31 @@
%D preceding material has more depth than that already. This way anchoring
%D becomes predictable.
+% \protected\def\page_sides_force_depth
+% {\iftracesidefloats
+% \begingroup
+% \c_page_force_strut_depth_trace_mode\plusone
+% \ifconditional\c_page_sides_check_same_page
+% \forcestrutdepthplus
+% \else
+% \forcestrutdepth
+% \fi
+% \endgroup
+% \else
+% \ifconditional\c_page_sides_check_same_page
+% \forcestrutdepthplus
+% \else
+% \forcestrutdepth
+% \fi
+% \fi
+% \page_otr_command_set_vsize} % new
+
\protected\def\page_sides_force_depth
{\iftracesidefloats
- \begingroup
- \c_page_force_strut_depth_trace_mode\plusone
- \ifconditional\c_page_sides_check_same_page
- \forcestrutdepthplus
- \else
- \forcestrutdepth
- \fi
- \endgroup
- \else
- \ifconditional\c_page_sides_check_same_page
- \forcestrutdepthplus
- \else
- \forcestrutdepth
- \fi
+ \enabletrackers[otr.forcestrutdepth]% \c_page_force_strut_depth_trace_mode\plusone
\fi
- \page_otr_command_set_vsize} % new
+ \forcestrutdepth
+ \page_otr_command_set_vsize} % new, no longer really needed
\def\page_sides_flush_floats
{\par
@@ -781,18 +788,18 @@
\def\page_sides_analyse_space
{\page_sides_analyse_space_stage_one
- \ifconditional\c_page_sides_check_same_page
- \ifdim\d_spac_prevcontent>\zeropoint
- \ifdim\dimexpr\scratchdimenone+\d_spac_prevcontent>\scratchdimentwo
- \clf_pushatsame
- \setbox\scratchbox\vpack{\clf_popatsame}%
- \page
- \box\scratchbox
- \vskip-\lineskip
- \page_sides_analyse_space_stage_one
- \fi
- \fi
- \fi
+ % \ifconditional\c_page_sides_check_same_page
+ % \ifdim\d_spac_prevcontent>\zeropoint
+ % \ifdim\dimexpr\scratchdimenone+\d_spac_prevcontent>\scratchdimentwo
+ % \clf_pushatsame
+ % \setbox\scratchbox\vpack{\clf_popatsame}%
+ % \page
+ % \box\scratchbox
+ % \vskip-\lineskip
+ % \page_sides_analyse_space_stage_one
+ % \fi
+ % \fi
+ % \fi
\page_sides_analyse_space_stage_two}
%D As we have no clear end of one or more paragraphs we only have pre float
diff --git a/tex/context/base/mkxl/spac-ver.lmt b/tex/context/base/mkxl/spac-ver.lmt
index 26ad8e43a..cd6dd46ad 100644
--- a/tex/context/base/mkxl/spac-ver.lmt
+++ b/tex/context/base/mkxl/spac-ver.lmt
@@ -2331,14 +2331,14 @@ do
end
local trace = false
- local last = nil
+ -- local last = nil
local vmode_code = tex.modelevels.vertical
local temp_code = nodecodes.temp
local texgetnest = tex.getnest
local texgetlist = tex.getlist
local getnodetail = nodes.tail
- trackers.register("vspacing.forcestrutdepth",function(v) trace = v end)
+ -- trackers.register("vspacing.forcestrutdepth",function(v) trace = v end)
-- abs : negative is inner
@@ -2375,69 +2375,144 @@ do
actions = vspacing.checkstrutdepth,
}
- function vspacing.forcestrutdepth(n,depth,trace_mode,plus)
- local box = texgetbox(n)
- if box then
- box = tonut(box)
- local head = getlist(box)
- if head then
- local tail = find_node_tail(head)
- if tail then
- if getid(tail) == hlist_code then
- local dp = getdepth(tail)
- if dp < depth then
- setdepth(tail,depth)
- outer.prevdepth = depth
- if trace or trace_mode > 0 then
- nuts.setvisual(tail,"depth")
- end
- end
+ -- function vspacing.forcestrutdepth(n,depth,trace_mode,plus)
+ -- local box = texgetbox(n)
+ -- if box then
+ -- box = tonut(box)
+ -- local head = getlist(box)
+ -- if head then
+ -- local tail = find_node_tail(head)
+ -- if tail then
+ -- if getid(tail) == hlist_code then
+ -- local dp = getdepth(tail)
+ -- if dp < depth then
+ -- setdepth(tail,depth)
+ -- outer.prevdepth = depth
+ -- if trace or trace_mode > 0 then
+ -- nuts.setvisual(tail,"depth")
+ -- end
+ -- end
+ -- end
+ -- -- last = nil
+ -- -- if plus then
+ -- -- -- penalty / skip ...
+ -- -- local height = 0
+ -- -- local sofar = 0
+ -- -- local same = false
+ -- -- local seen = false
+ -- -- local list = { }
+ -- -- last = nil
+ -- -- while tail do
+ -- -- local id = getid(tail)
+ -- -- if id == hlist_code or id == vlist_code then
+ -- -- local w, h, d = getwhd(tail)
+ -- -- height = height + h + d + sofar
+ -- -- sofar = 0
+ -- -- last = tail
+ -- -- elseif id == kern_code then
+ -- -- sofar = sofar + getkern(tail)
+ -- -- elseif id == glue_code then
+ -- -- if seen then
+ -- -- sofar = sofar + getwidth(tail)
+ -- -- seen = false
+ -- -- else
+ -- -- break
+ -- -- end
+ -- -- elseif id == penalty_code then
+ -- -- local p = getpenalty(tail)
+ -- -- if p >= 10000 then
+ -- -- same = true
+ -- -- seen = true
+ -- -- else
+ -- -- break
+ -- -- end
+ -- -- else
+ -- -- break
+ -- -- end
+ -- -- tail = getprev(tail)
+ -- -- end
+ -- -- texsetdimen("global","d_spac_prevcontent",same and height or 0)
+ -- -- end
+ -- end
+ -- end
+ -- end
+ -- end
+
+ local hlist_code = nodes.nodecodes.hlist
+ local line_code = nodes.listcodes.line
+
+ local nuts = nodes.nuts
+ local getid = nuts.getid
+ local getsubtype = nuts.getsubtype
+ local getdepth = nuts.getdepth
+ local setdepth = nuts.setdepth
+ local gettotal = nuts.gettotal
+ local getspeciallist = nuts.getspeciallist
+ local setspeciallist = nuts.setspeciallist
+
+ local triggerbuildpage = tex.triggerbuildpage
+
+ local texgetdimen = tex.getdimen
+ local texsetdimen = tex.setdimen
+ local texgetnest = tex.getnest
+ local texget = tex.get
+ local texset = tex.set
+
+ local trace = false trackers.register("otr.forcestrutdepth", function(v)
+ trace = v and function(n)
+ nuts.setvisual(nuts.tonut(n),nodes.visualizers.modes.depth)
+ end
+ end)
+
+ function vspacing.forcestrutdepth()
+ -- check if in mvl
+ if texgetnest("ptr") == 0 then
+ triggerbuildpage() -- return true when mvl
+ local head, tail = getspeciallist("page_head")
+ if tail and getid(tail) == hlist_code and getsubtype(tail) == line_code then -- isline(tail)
+ local strutdp = texgetdimen("strutdp")
+ local delta = strutdp - getdepth(tail)
+ if delta > 0 then
+ setdepth(tail,strutdp)
+ texset("pagetotal",texget("pagetotal") + delta)
+ texset("pagedepth",strutdp)
+ if trace then
+ trace(tail)
end
- last = nil
- if plus then
- -- penalty / skip ...
- local height = 0
- local sofar = 0
- local same = false
- local seen = false
- local list = { }
- last = nil
- while tail do
- local id = getid(tail)
- if id == hlist_code or id == vlist_code then
- local w, h, d = getwhd(tail)
- height = height + h + d + sofar
- sofar = 0
- last = tail
- elseif id == kern_code then
- sofar = sofar + getkern(tail)
- elseif id == glue_code then
- if seen then
- sofar = sofar + getwidth(tail)
- seen = false
- else
- break
- end
- elseif id == penalty_code then
- local p = getpenalty(tail)
- if p >= 10000 then
- same = true
- seen = true
- else
- break
- end
- else
- break
- end
- tail = getprev(tail)
- end
- texsetdimen("global","d_spac_prevcontent",same and height or 0)
+ end
+ end
+ else
+ local nest = texgetnest()
+ -- if abs(nest.mode) == vmode_code and nest.head then
+ local tail = nest.tail
+ if tail.id == hlist_code and tail.subtype == line_code then
+ local strutdp = texgetdimen("strutdp")
+ if tail.depth < strutdp then
+ tail.depth = strutdp
+ end
+ nest.prevdepth = strutdp
+ if trace then
+ trace(tail)
end
end
- end
+ -- end
end
end
+ -- interfaces.implement {
+ -- name = "removelastline",
+ -- actions = function()
+ -- local h, t = getspeciallist("page_head")
+ -- if t and getid(t) == hlist_code and getsubtype(t) == line_code then
+ -- local total = gettotal(t)
+ -- h = remove_node(h,t,true)
+ -- setspeciallist(h)
+ -- texset("pagetotal",texget("pagetotal") - total)
+ -- -- set prevdepth
+ -- end
+ -- end
+ -- }
+
function vspacing.pushatsame()
-- needs better checking !
if last then -- setsplit
@@ -2488,18 +2563,25 @@ do
scope = "private"
}
- implement {
- name = "forcestrutdepth",
- arguments = { "integer", "dimension", "integer" },
- actions = vspacing.forcestrutdepth,
- scope = "private"
- }
+ -- implement {
+ -- name = "forcestrutdepth",
+ -- arguments = { "integer", "dimension", "integer" },
+ -- actions = vspacing.forcestrutdepth,
+ -- scope = "private"
+ -- }
+
+ -- implement {
+ -- name = "forcestrutdepthplus",
+ -- arguments = { "integer", "dimension", "integer", true },
+ -- actions = vspacing.forcestrutdepth,
+ -- scope = "private"
+ -- }
implement {
- name = "forcestrutdepthplus",
- arguments = { "integer", "dimension", "integer", true },
+ name = "forcestrutdepth",
+ public = true,
+ protected = true,
actions = vspacing.forcestrutdepth,
- scope = "private"
}
implement {
diff --git a/tex/context/base/mkxl/strc-mat.mkxl b/tex/context/base/mkxl/strc-mat.mkxl
index 94a273f80..5f929b5db 100644
--- a/tex/context/base/mkxl/strc-mat.mkxl
+++ b/tex/context/base/mkxl/strc-mat.mkxl
@@ -144,15 +144,15 @@
\definelist[\v!formula]
-\permanent\defcsname\e!start\v!formula\endcsname{\strc_formulas_start_formula{}}
-\permanent\defcsname\e!stop \v!formula\endcsname{\strc_formulas_stop_formula}
+\permanent\protected\defcsname\e!start\v!formula\endcsname{\strc_formulas_start_formula{}}
+\permanent\protected\defcsname\e!stop \v!formula\endcsname{\strc_formulas_stop_formula}
\let\strc_formulas_start_formula\relax % defined later
\let\strc_formulas_stop_formula \relax % defined later
\permanent\tolerant\protected\def\defineformulaalternative[#1]#*[#2]#*[#3]%
- {\frozen\instance\defcsname\e!start#1\v!formula\endcsname{#2}%
- \frozen\instance\defcsname\e!stop #1\v!formula\endcsname{#3}}
+ {\frozen\instance\protected\defcsname\e!start#1\v!formula\endcsname{#2}%
+ \frozen\instance\protected\defcsname\e!stop #1\v!formula\endcsname{#3}}
% sp = single line paragraph sd = single line display
% mp = multi line paragraph md = multy line display
diff --git a/tex/context/base/mkxl/strc-not.mklx b/tex/context/base/mkxl/strc-not.mklx
index 857e7ce24..3bc6bf581 100644
--- a/tex/context/base/mkxl/strc-not.mklx
+++ b/tex/context/base/mkxl/strc-not.mklx
@@ -419,7 +419,8 @@
\doifelseinsertion\currentnote
\donothing
{\defineinsertion[\currentnote]% could be an option
- \normalexpanded{\t_strc_notes{\the\t_strc_notes\noexpand\strc_notes_process_list{\currentnote}}}}%
+% \normalexpanded{\t_strc_notes{\the\t_strc_notes\noexpand\strc_notes_process_list{\currentnote}}}}%
+ \xtoksapp\t_strc_notes{\noexpand\strc_notes_process_list{\currentnote}}}%
\letnoteparameter\s!insert\currentnote
\definenotation[\currentnote][\c!type=\v!note]%
\else
diff --git a/tex/context/base/mkxl/syst-ini.mkxl b/tex/context/base/mkxl/syst-ini.mkxl
index 911d0144b..a873d15a3 100644
--- a/tex/context/base/mkxl/syst-ini.mkxl
+++ b/tex/context/base/mkxl/syst-ini.mkxl
@@ -779,6 +779,12 @@
\showboxbreadth \maxcount
\showboxdepth \maxcount}
+\permanent\protected\def\tracingless
+ {\tracingall
+ \tracingoutput \zerocount
+ \showboxbreadth \maxcount
+ \showboxdepth \plusten}
+
\permanent\protected\def\loggingall
{\tracingall
\tracingonline \zerocount}
diff --git a/tex/context/base/mkxl/trac-vis.lmt b/tex/context/base/mkxl/trac-vis.lmt
index 48e8ceeb8..3300d2f75 100644
--- a/tex/context/base/mkxl/trac-vis.lmt
+++ b/tex/context/base/mkxl/trac-vis.lmt
@@ -109,23 +109,6 @@ local a_layer = attributes.private("viewerlayer")
local enableaction = nodes.tasks.enableaction
--- local trace_hbox
--- local trace_vbox
--- local trace_vtop
--- local trace_kern
--- local trace_glue
--- local trace_penalty
--- local trace_fontkern
--- local trace_strut
--- local trace_whatsit
--- local trace_user
--- local trace_math
--- local trace_italic
--- local trace_discretionary
--- local trace_expansion
--- local trace_line
--- local trace_space
-
local report_visualize = logs.reporter("visualize")
local modes = {
@@ -161,6 +144,8 @@ local modes = {
insert = 0x4000000,
}
+visualizers.modes = modes
+
local usedfont, exheight, emwidth
local l_penalty, l_glue, l_kern, l_fontkern, l_hbox, l_vbox, l_vtop, l_strut, l_whatsit, l_glyph, l_user, l_math, l_marginkern, l_mathlistkern, l_italic, l_origin, l_discretionary, l_expansion, l_line, l_space, l_depth,
l_dir, l_whatsit, l_mark, l_insert
@@ -280,7 +265,7 @@ local function setvisual(n,a,what,list) -- this will become more efficient when
else
a = a | preset_all
end
- else
+ elseif type(n) == "string" then
for s in gmatch(n,"[a-z]+") do
local m = modes[s]
if not m then
@@ -291,6 +276,8 @@ local function setvisual(n,a,what,list) -- this will become more efficient when
a = a | m
end
end
+ elseif type(n) == "number" then
+ a = a | n
end
if not a or a == 0 or a == unsetvalue then
return unsetvalue
diff --git a/tex/context/base/mkxl/typo-bld.lmt b/tex/context/base/mkxl/typo-bld.lmt
index d9cd78385..31cc0bb59 100644
--- a/tex/context/base/mkxl/typo-bld.lmt
+++ b/tex/context/base/mkxl/typo-bld.lmt
@@ -259,8 +259,8 @@ function builders.buildpage_filter(groupcode)
end
end
-registercallback('vpack_filter', builders.vpack_filter, "vertical spacing etc")
-registercallback('buildpage_filter', builders.buildpage_filter, "vertical spacing etc (mvl)")
+registercallback('vpack_filter', builders.vpack_filter, "vertical spacing etc")
+registercallback('buildpage_filter', builders.buildpage_filter, "vertical spacing etc (mvl)")
statistics.register("v-node processing time", function()
return statistics.elapsedseconds(builders)
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index c83cc1320..66e8b627e 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 2021-09-06 11:44
+-- merge date : 2021-09-13 09:37
do -- begin closure to overcome local limits and interference
@@ -26899,6 +26899,7 @@ local trace_compruns=false registertracker("otf.compruns",function(v) trace_com
local trace_testruns=false registertracker("otf.testruns",function(v) trace_testruns=v end)
local forcediscretionaries=false
local forcepairadvance=false
+local repeatablemultiples=context or false
directives.register("otf.forcediscretionaries",function(v)
forcediscretionaries=v
end)
@@ -27277,15 +27278,47 @@ local function multiple_glyphs(head,start,multiple,skiphash,what,stop)
insertnodeafter(head,start,n)
start=n
end
- if what==true then
- elseif what>1 then
- local m=multiple[nofmultiples]
- for i=2,what do
- local n=copy_node(start)
- resetinjection(n)
- setchar(n,m)
- insertnodeafter(head,start,n)
- start=n
+ if what~=true and repeatablemultiples then
+ local kind=type(what)
+ local m,f,l
+ if kind=="string" then
+ local what,n=string.match(what,"^repeat(.-)[:=](%d+)$")
+ if what=="middle" then
+ m=tonumber(n)
+ elseif what=="first" then
+ f=tonumber(n)
+ elseif what=="last" then
+ l=tonumber(n)
+ end
+ elseif kind=="table" then
+ m=what.middle
+ f=what.first
+ l=what.last
+ end
+ if f or m or l then
+ if m and m>1 and nofmultiples==3 then
+ local middle=getnext(first)
+ for i=2,m do
+ local n=copynode(middle)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if f and f>1 then
+ for i=2,f do
+ local n=copynode(first)
+ resetinjection(n)
+ insertnodeafter(head,first,n)
+ end
+ end
+ if l and l>1 then
+ for i=2,l do
+ local n=copynode(start)
+ resetinjection(n)
+ insertnodeafter(head,start,n)
+ start=n
+ end
+ end
end
end
end
@@ -27699,7 +27732,7 @@ function handlers.gpos_mark2ligature(head,start,dataset,sequence,markanchors,rlm
end
end
elseif trace_bugs then
- onetimemessage(currentfont,basechar,"no base anchors",report_fonts)
+ onetimemessage(currentfont,basechar,"no base anchors")
end
elseif trace_bugs then
logwarning("%s: prev node is no char, case %i",pref(dataset,sequence),1)
@@ -28339,7 +28372,7 @@ function chainprocs.gpos_cursive(head,start,stop,dataset,sequence,currentlookup,
end
end
elseif trace_bugs then
- onetimemessage(currentfont,startchar,"no entry anchors",report_fonts)
+ onetimemessage(currentfont,startchar,"no entry anchors")
end
break
end