From a06e8a0d7325ee248138a327e1117139b71aeaba Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 16 Jul 2021 22:58:17 +0200 Subject: 2021-07-16 22:01:00 --- .../context/lexers/data/scite-context-data-tex.lua | 2 +- .../context/scite-context-data-tex.properties | 85 ++--- .../context/data/scite-context-data-tex.lua | 2 +- .../context/syntaxes/context-syntax-tex.json | 2 +- metapost/context/base/common/boxes.mp | 1 + metapost/context/base/common/hatching.mp | 10 + metapost/context/base/mpiv/mp-base.mpiv | 9 +- metapost/context/base/mpiv/mp-grph.mpiv | 6 +- metapost/context/base/mpiv/mp-tool.mpiv | 45 +++ metapost/context/base/mpiv/mp-xbox.mpiv | 293 +++++++++++++++++ metapost/context/base/mpxl/mp-base.mpxl | 5 +- metapost/context/base/mpxl/mp-grph.mpxl | 4 +- metapost/context/base/mpxl/mp-mlib.mpxl | 3 + metapost/context/base/mpxl/mp-tool.mpxl | 47 +++ metapost/context/base/mpxl/mp-xbox.mpxl | 292 +++++++++++++++++ scripts/context/lua/mtxrun.lua | 9 +- scripts/context/stubs/mswin/mtxrun.lua | 9 +- scripts/context/stubs/unix/mtxrun | 9 +- scripts/context/stubs/win64/mtxrun.lua | 9 +- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-pe.mkii | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/data-out.lua | 6 +- tex/context/base/mkiv/data-vir.lua | 5 + tex/context/base/mkiv/mlib-pdf.lua | 16 +- tex/context/base/mkiv/mult-prm.lua | 3 + tex/context/base/mkiv/status-files.pdf | Bin 23621 -> 23617 bytes tex/context/base/mkiv/status-lua.pdf | Bin 248500 -> 248519 bytes tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/libs-imp-zint.lmt | 5 + tex/context/base/mkxl/lpdf-mis.lmt | 2 +- tex/context/base/mkxl/meta-ini.mkxl | 4 +- tex/context/base/mkxl/mlib-fio.lmt | 11 +- tex/context/base/mkxl/mlib-pdf.lmt | 16 +- tex/context/base/mkxl/page-txt.mklx | 7 +- tex/context/interface/mkii/keys-pe.xml | 1 + tex/context/modules/mkiv/m-asymptote.lua | 2 +- tex/context/modules/mkiv/m-asymptote.mkiv | 2 +- tex/context/modules/mkiv/m-barcodes.mkiv | 7 + tex/context/modules/mkiv/m-escrito.lua | 361 +++++++++++++-------- tex/context/modules/mkiv/m-escrito.mkiv | 19 +- tex/context/modules/mkiv/m-gnuplot.mkxl | 97 ------ tex/context/modules/mkiv/m-pictex.mkiv | 11 +- tex/context/modules/mkiv/m-pstricks.mkiv | 11 + tex/context/modules/mkiv/m-tikz.mkiv | 90 ++--- tex/context/modules/mkiv/m-zint.mkiv | 8 +- tex/context/modules/mkxl/m-barcodes.mkxl | 40 +++ tex/context/modules/mkxl/m-gnuplot.mkxl | 97 ++++++ tex/context/modules/mkxl/m-tikz.mkxl | 112 +++++++ tex/context/sample/common/spider.eps | 6 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 54 files changed, 1387 insertions(+), 409 deletions(-) create mode 100644 metapost/context/base/common/boxes.mp create mode 100644 metapost/context/base/common/hatching.mp create mode 100644 metapost/context/base/mpiv/mp-xbox.mpiv create mode 100644 metapost/context/base/mpxl/mp-xbox.mpxl delete mode 100644 tex/context/modules/mkiv/m-gnuplot.mkxl create mode 100644 tex/context/modules/mkxl/m-barcodes.mkxl create mode 100644 tex/context/modules/mkxl/m-gnuplot.mkxl create mode 100644 tex/context/modules/mkxl/m-tikz.mkxl 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 883ece881..e5e6d011b 100644 --- a/context/data/scite/context/lexers/data/scite-context-data-tex.lua +++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua @@ -1,7 +1,7 @@ return { ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" }, ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingalignments", "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", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "defcsname", "dimensiondef", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "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", "ifdimval", "ifempty", "ifflags", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "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", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "linepar", "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", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "textdirection", "thewithoutunit", "thewithproperty", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingfonts", "tracinghyphenation", "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", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "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", "ifdimval", "ifempty", "ifflags", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "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", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "linepar", "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", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "textdirection", "thewithoutunit", "thewithproperty", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingexpressions", "tracingfonts", "tracinghyphenation", "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", "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" }, diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties index 9da62a7e1..3f931c094 100644 --- a/context/data/scite/context/scite-context-data-tex.properties +++ b/context/data/scite/context/scite-context-data-tex.properties @@ -63,48 +63,49 @@ automigrationmode begincsname beginlocalcontrol boundary boxattribute \ boxdirection boxorientation boxtotal boxxmove boxxoffset \ boxymove boxyoffset catcodetable clearmarks crampeddisplaystyle \ crampedscriptscriptstyle crampedscriptstyle crampedtextstyle csstring defcsname \ -dimensiondef directlua edefcsname efcode endlocalcontrol \ -enforced etoksapp etokspre everybeforepar everytab \ -exceptionpenalty expand expandafterpars expandafterspaces expandcstoken \ -expanded expandtoken explicitdiscretionary explicithyphenpenalty firstvalidlanguage \ -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 ifdimval ifempty ifflags ifhastok \ -ifhastoks ifhasxtoks ifincsname ifinsert ifmathparameter \ -ifmathstyle 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 leftmarginkern letcharcode letcsname letfrozen \ -letprotected lettonothing linedirection linepar 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 orelse orunless outputbox overloaded \ -overloadmode parametercount parattribute pardirection permanent \ -postexhyphenchar posthyphenchar prebinoppenalty predisplaygapfactor preexhyphenchar \ -prehyphenchar prerelpenalty protrudechars protrusionboundary pxdimen \ -quitvmode rightmarginkern rpcode savecatcodetable scantextokens \ -setfontid snapshotpar supmarkmode swapcsvalues textdirection \ -thewithoutunit thewithproperty tokenized toksapp tokspre \ -tolerant tpack tracingfonts tracinghyphenation tracingmath \ -undent unletfrozen unletprotected untraced vpack \ -wordboundary wrapuppar xdefcsname xtoksapp xtokspre +dimensiondef dimexpression directlua edefcsname efcode \ +endlocalcontrol enforced etoksapp etokspre everybeforepar \ +everytab exceptionpenalty expand expandafterpars expandafterspaces \ +expandcstoken expanded expandtoken explicitdiscretionary explicithyphenpenalty \ +firstvalidlanguage 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 ifdimval ifempty ifflags \ +ifhastok ifhastoks ifhasxtoks ifincsname ifinsert \ +ifmathparameter ifmathstyle 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 leftmarginkern letcharcode letcsname \ +letfrozen letprotected lettonothing linedirection linepar \ +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 parattribute \ +pardirection permanent postexhyphenchar posthyphenchar prebinoppenalty \ +predisplaygapfactor preexhyphenchar prehyphenchar prerelpenalty protrudechars \ +protrusionboundary pxdimen quitvmode rightmarginkern rpcode \ +savecatcodetable scantextokens setfontid snapshotpar supmarkmode \ +swapcsvalues textdirection thewithoutunit thewithproperty tokenized \ +toksapp tokspre tolerant tpack tracingexpressions \ +tracingfonts tracinghyphenation tracingmath undent unletfrozen \ +unletprotected untraced vpack wordboundary wrapuppar \ +xdefcsname xtoksapp xtokspre keywordclass.tex.omega=\ Omegaminorversion Omegarevision Omegaversion diff --git a/context/data/textadept/context/data/scite-context-data-tex.lua b/context/data/textadept/context/data/scite-context-data-tex.lua index 883ece881..e5e6d011b 100644 --- a/context/data/textadept/context/data/scite-context-data-tex.lua +++ b/context/data/textadept/context/data/scite-context-data-tex.lua @@ -1,7 +1,7 @@ return { ["aleph"]={ "Alephminorversion", "Alephrevision", "Alephversion" }, ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "everyeof", "firstmarks", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "ifcsname", "ifdefined", "iffontchar", "interactionmode", "interlinepenalties", "lastlinefit", "lastnodetype", "marks", "muexpr", "mutoglue", "numexpr", "pagediscards", "parshapedimen", "parshapeindent", "parshapelength", "predisplaydirection", "protected", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingalignments", "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", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "defcsname", "dimensiondef", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "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", "ifdimval", "ifempty", "ifflags", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "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", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "linepar", "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", "orelse", "orunless", "outputbox", "overloaded", "overloadmode", "parametercount", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "textdirection", "thewithoutunit", "thewithproperty", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingfonts", "tracinghyphenation", "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", "begincsname", "beginlocalcontrol", "boundary", "boxattribute", "boxdirection", "boxorientation", "boxtotal", "boxxmove", "boxxoffset", "boxymove", "boxyoffset", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "csstring", "defcsname", "dimensiondef", "dimexpression", "directlua", "edefcsname", "efcode", "endlocalcontrol", "enforced", "etoksapp", "etokspre", "everybeforepar", "everytab", "exceptionpenalty", "expand", "expandafterpars", "expandafterspaces", "expandcstoken", "expanded", "expandtoken", "explicitdiscretionary", "explicithyphenpenalty", "firstvalidlanguage", "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", "ifdimval", "ifempty", "ifflags", "ifhastok", "ifhastoks", "ifhasxtoks", "ifincsname", "ifinsert", "ifmathparameter", "ifmathstyle", "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", "leftmarginkern", "letcharcode", "letcsname", "letfrozen", "letprotected", "lettonothing", "linedirection", "linepar", "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", "parattribute", "pardirection", "permanent", "postexhyphenchar", "posthyphenchar", "prebinoppenalty", "predisplaygapfactor", "preexhyphenchar", "prehyphenchar", "prerelpenalty", "protrudechars", "protrusionboundary", "pxdimen", "quitvmode", "rightmarginkern", "rpcode", "savecatcodetable", "scantextokens", "setfontid", "snapshotpar", "supmarkmode", "swapcsvalues", "textdirection", "thewithoutunit", "thewithproperty", "tokenized", "toksapp", "tokspre", "tolerant", "tpack", "tracingexpressions", "tracingfonts", "tracinghyphenation", "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", "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" }, 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 d4b20efc2..03fc4f909 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|tracingmacros|tracinglostchars|tracinglevels|tracingifs|tracinghyphenation|tracinggroups|tracingfonts|tracingcommands|tracingassigns|tracingalignments|tpack|toscaled|topskip|topmarks|topmark|tolerant|tolerance|tokspre|toksdef|toksapp|toks|tokenized|tointeger|todimension|time|thinmuskip|thickmuskip|thewithproperty|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|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|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|scaledfontdimen|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|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|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|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|normaltracingmacros|normaltracinglostchars|normaltracinglevels|normaltracingifs|normaltracinghyphenation|normaltracinggroups|normaltracingfonts|normaltracingcommands|normaltracingassigns|normaltracingalignments|normaltpack|normaltoscaled|normaltopskip|normaltopmarks|normaltopmark|normaltolerant|normaltolerance|normaltokspre|normaltoksdef|normaltoksapp|normaltoks|normaltokenized|normaltointeger|normaltodimension|normaltime|normalthinmuskip|normalthickmuskip|normalthewithproperty|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|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|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalscaledfontdimen|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|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|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|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|normallinepar|normallinedirection|normallimits|normallettonothing|normalletprotected|normalletfrozen|normalletcsname|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|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|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinsert|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normaliffontchar|normalifflags|normaliffalse|normalifempty|normalifdimval|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|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|normaldimexpr|normaldimensiondef|normaldimendef|normaldimen|normaldetokenize|normaldelimitershortfall|normaldelimiterfactor|normaldelimiter|normaldelcode|normaldefcsname|normaldefaultskewchar|normaldefaulthyphenchar|normaldef|normaldeadcycles|normalday|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|normalautomigrationmode|normalautomatichyphenpenalty|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|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|linepar|linedirection|limits|lettonothing|letprotected|letfrozen|letcsname|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|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|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinsert|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|iffontchar|ifflags|iffalse|ifempty|ifdimval|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|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|dimexpr|dimensiondef|dimendef|dimen|detokenize|delimitershortfall|delimiterfactor|delimiter|delcode|defcsname|defaultskewchar|defaulthyphenchar|def|deadcycles|day|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|automigrationmode|automatichyphenpenalty|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|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|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|thewithproperty|thewithoutunit|the|textstyle|textfont|textdirection|tabskip|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|scrollmode|scriptstyle|scriptspace|scriptscriptstyle|scriptscriptfont|scriptfont|scantokens|scantextokens|scaledfontdimen|savingvdiscards|savinghyphcodes|savecatcodetable|rpcode|romannumeral|rightskip|rightmarginkern|righthyphenmin|right|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|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|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|normalthewithproperty|normalthewithoutunit|normalthe|normaltextstyle|normaltextfont|normaltextdirection|normaltabskip|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|normalscrollmode|normalscriptstyle|normalscriptspace|normalscriptscriptstyle|normalscriptscriptfont|normalscriptfont|normalscantokens|normalscantextokens|normalscaledfontdimen|normalsavingvdiscards|normalsavinghyphcodes|normalsavecatcodetable|normalrpcode|normalromannumeral|normalrightskip|normalrightmarginkern|normalrighthyphenmin|normalright|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|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|normallinepar|normallinedirection|normallimits|normallettonothing|normalletprotected|normalletfrozen|normalletcsname|normalletcharcode|normallet|normalleqno|normalleftskip|normalleftmarginkern|normallefthyphenmin|normalleft|normalleaders|normallccode|normallastskip|normallastpenalty|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|normalifnum|normalifmmode|normalifmathstyle|normalifmathparameter|normalifinsert|normalifinner|normalifincsname|normalifhmode|normalifhbox|normalifhasxtoks|normalifhastoks|normalifhastok|normaliffontchar|normalifflags|normaliffalse|normalifempty|normalifdimval|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|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|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|normalautomigrationmode|normalautomatichyphenpenalty|normalautomaticdiscretionary|normalattributedef|normalattribute|normalatopwithdelims|normalatop|normalatendofgrouped|normalatendofgroup|normalaligntab|normalalignmark|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|linepar|linedirection|limits|lettonothing|letprotected|letfrozen|letcsname|letcharcode|let|leqno|leftskip|leftmarginkern|lefthyphenmin|left|leaders|lccode|lastskip|lastpenalty|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|ifnum|ifmmode|ifmathstyle|ifmathparameter|ifinsert|ifinner|ifincsname|ifhmode|ifhbox|ifhasxtoks|ifhastoks|ifhastok|iffontchar|ifflags|iffalse|ifempty|ifdimval|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|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|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|automigrationmode|automatichyphenpenalty|automaticdiscretionary|attributedef|attribute|atopwithdelims|atop|atendofgrouped|atendofgroup|aligntab|alignmark|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/metapost/context/base/common/boxes.mp b/metapost/context/base/common/boxes.mp new file mode 100644 index 000000000..f9cb4a5bb --- /dev/null +++ b/metapost/context/base/common/boxes.mp @@ -0,0 +1 @@ +scantokens("input mp-xbox.mp" & (if metapostversion > 2 : "xl" else : "iv" fi)) ; diff --git a/metapost/context/base/common/hatching.mp b/metapost/context/base/common/hatching.mp new file mode 100644 index 000000000..ae63b676e --- /dev/null +++ b/metapost/context/base/common/hatching.mp @@ -0,0 +1,10 @@ +% This is placeholder for Bogluslaw Jackowski's hatching.mp file which can be found in +% the public domain and dates from 2000. It provides: +% +% draw hatched (fullcircle scaled 10cm) (45, 4, 1) withcolor "red" ; +% +% interim hatch_match := 1; +% +% This macro is not in mp-tool so this is a placeholder. The hatching macro doesn't fit +% into metafun because it assume withcolor to behave in a certain way. Also, we use more +% efficient path constructor. diff --git a/metapost/context/base/mpiv/mp-base.mpiv b/metapost/context/base/mpiv/mp-base.mpiv index 9b85d5ffd..c5f69fbda 100644 --- a/metapost/context/base/mpiv/mp-base.mpiv +++ b/metapost/context/base/mpiv/mp-base.mpiv @@ -928,14 +928,21 @@ string extra_beginfig, extra_endfig ; extra_beginfig := "" ; extra_endfig := "" ; -def beginfig(expr c) = +boolean makingfigure ; makingfigure := false ; +numeric stacking ; stacking := 0 ; + +def beginfig(expr c) = % redefined in mp-grph ! begingroup + save makingfigure ; boolean makingfigure ; + save stacking ; numeric stacking; charcode := c ; clearxy ; clearit ; clearpen ; pickup defaultpen ; drawoptions() ; + stacking := 0 ; + makingfigure := true; scantokens extra_beginfig ; enddef ; diff --git a/metapost/context/base/mpiv/mp-grph.mpiv b/metapost/context/base/mpiv/mp-grph.mpiv index d4316eb91..6e980fd0d 100644 --- a/metapost/context/base/mpiv/mp-grph.mpiv +++ b/metapost/context/base/mpiv/mp-grph.mpiv @@ -49,8 +49,10 @@ def resetfig = interim linecap := linecap ; interim linejoin := linejoin ; interim miterlimit := miterlimit ; - save _background_ ; color _background_ ; _background_ := background ; - save background ; color background ; background := _background_ ; + save stacking ; numeric stacking ; stacking := 0 ; + save makingfigure ; boolean makingfigure ; makingfigure := true ; + save _background_ ; color _background_ ; _background_ := background ; + save background ; color background ; background := _background_ ; drawoptions () ; enddef ; diff --git a/metapost/context/base/mpiv/mp-tool.mpiv b/metapost/context/base/mpiv/mp-tool.mpiv index fc983d5a8..611eafe77 100644 --- a/metapost/context/base/mpiv/mp-tool.mpiv +++ b/metapost/context/base/mpiv/mp-tool.mpiv @@ -3683,3 +3683,48 @@ def yslanted primary s = t endgroup enddef ; + +% By Bogluslaw Jackowski (public domain): +% +% draw hatched (fullcircle scaled 10cm) (45, 4, 1) withcolor "red" ; + +newinternal hatch_match; hatch_match := 1; + +vardef hatched(expr o) primary c = + save a_, b_, d_, l_, i_, r_, za_, zb_, zc_, zd_; + path b_; picture r_; pair za_, zb_, zc_, zd_; + r_ := image ( + a_ := redpart(c) mod 180 ; + l_ := greenpart(c) ; + d_ := -bluepart(c) ; + b_ := o rotated -a_ ; + b_ := + if a_ >= 90 : + (lrcorner b_ -- llcorner b_ -- ulcorner b_ -- urcorner b_ -- cycle) + else : + (llcorner b_ -- lrcorner b_ -- urcorner b_ -- ulcorner b_ -- cycle) + fi + rotated a_ ; + za_ := point 0 of b_ ; + zb_ := point 1 of b_ ; + zc_ := point 2 of b_ ; + zd_ := point 3 of b_ ; + if hatch_match > 0 : + n_ := round(length(zd_-za_) / l_) ; + if n_ < 2: + n_ := 2 ; + fi ; + l_ := length(zd_-za_) / n_ ; + else : + n_ := length(zd_-za_) / l_ ; + fi + save currentpen; pen currentpen ; pickup pencircle scaled d_; + % we use a single path instead: + for i_ := if hatch_match > 0 : 1 else : 0 fi upto ceiling n_ - 1 : + nodraw (i_/n_)[zd_,za_] -- (i_/n_)[zc_,zb_] ; + endfor + dodraw origin ; + ) ; + clip r_ to o; + r_ +enddef; diff --git a/metapost/context/base/mpiv/mp-xbox.mpiv b/metapost/context/base/mpiv/mp-xbox.mpiv new file mode 100644 index 000000000..4b4c4c3cd --- /dev/null +++ b/metapost/context/base/mpiv/mp-xbox.mpiv @@ -0,0 +1,293 @@ +% This file is a variant of "macros for boxes":: +% +% author : Taco Hoekwater +% version : $Id: boxes.mp,v 1.5 2005/02/25 11:28:56 taco Exp $ +% copyright : Public domain +% patched : Hans Hagen +% +% The code is the same but I've added s boxes_ namespace for soem so that we don't +% clash with metafun. + +if known metafun_loaded_xbox : endinput ; fi ; + +boolean metafun_loaded_xbox ; metafun_loaded_xbox := true ; + +% Find the length of the prefix of string s for which cond is true for each character +% c of the prefix. Loading and initialization is now under metafun control. Only the +% mpxl variant will be adapted. When needed this file will be adapted. + +vardef boxes_str_prefix (expr s) (text cond) = + save i_, c; string c; i_ = 0; + forever: + c := substring (i_, i_ + 1) of s; + exitunless cond; + exitif incr i_ = length s; + endfor + i_ +enddef; + +% Take a string returned by the str operator and return the same string with explicit +% numeric subscripts replaced by generic subscript symbols [] (fixed by Eddie Kohler). + +vardef generisize (expr ss) = + save r, s, l; string r, s; + r = ""; % result so far + s = ss; % left to process + forever: + exitif s = ""; + l := boxes_str_prefix(s, (c<>"[") and ((c<"0") or (c>"9"))); + r := r & substring (0,l) of s; + s := substring (l, infinity) of s; + if s <> "" : + if (s >= "[") and (length s > 1) : + if (substring (1,2) of s) = "[" : + l := 2; + r := r & "[["; + else : + l := 1 + boxes_str_prefix(s, c <> "]"); + r := r & "[]"; + fi + else : + r := r & "[]"; + l := boxes_str_prefix(s, (c = ".") or ("0" <= c) and (c <= "9")); + fi + s := substring(l, infinity) of s; + fi + endfor + r +enddef; + +% Make sure the string boxes_n_gen is generisize(_n_): + +string boxes_n, boxes_n_cur, boxes_n_gen; boxes_n_cur := "]"; % this won't match _n_ + +vardef boxes_set_n_gen = + if boxes_n <> boxes_n_cur: + boxes_n_cur := boxes_n; + boxes_n_gen := generisize(boxes_n); + fi +enddef; + +% Given a type t and list of variable names vars, make sure that they are of type t +% and redeclare them as necessary. In the vars list _n represents scantokens boxes_n, +% a suffix that might contain numeric subscripts. This suffix needs to be replaced +% by scantokens boxes_n_gen in order to get a variable that can be declared to be of +% type t. + +vardef boxes_declare(text t) text vars = + boxes_set_n_gen; + forsuffixes v_ = vars : + if forsuffixes _n = scantokens boxes_n : not t v_ endfor : + def boxes_gdmac text _n = t v_ enddef; + expandafter boxes_gdmac scantokens boxes_n_gen; + fi + endfor +enddef; + +% Here is another version that redeclares the vars even if they are already of the +% right type. + +vardef boxes_redeclare(text t) text vars = + boxes_set_n_gen; + def boxes_gdmac text _n = t vars enddef; + expandafter boxes_gdmac scantokens boxes_n_gen; +enddef; + +% pp should be a string giving the name of a macro that finds the boundary path and +% sp should be a string that names a macro for fixing the size and shape. The suffix +% $ is the name of the box. The text t gives the box contents: either empty, a +% picture, or a string to typeset. + +def boxes_begin (expr pp, sp) (suffix $) (text t) = + boxes_n := str $; + boxes_declare (pair) _n.off, _n.c; + boxes_declare (string) boxes_pproc._n, boxes_sproc._n; + boxes_declare (picture) boxes_pic._n; + boxes_pproc$ := pp; + boxes_sproc$ := sp; + boxes_pic$ := nullpicture; + for _p_ = t : + % boxes_pic$ := if picture _p_: _p_ else: _p_ infont defaultfont scaled defaultscale fi; + boxes_pic$ := if picture _p_: _p_ else: textext(_p_) fi; + endfor + $c = $off + .5[llcorner boxes_pic$, urcorner boxes_pic$] +enddef; + +% The suffix cl names a vardef macro that clears box-related variables. The suffix $ +% is the name of the box being ended. + +def boxes_end(suffix cl, $) = + if known boxes_pic.boxes_prevbox: + boxes_dojoin(boxes_prevbox,$); + fi + def boxes_prevbox = $ enddef; + expandafter def expandafter boxes_clear_all expandafter = + boxes_clear_all cl($); + enddef +enddef; + +% Text t gives equations for joining box a to box b. + +def boxes_boxjoin(text t) = + def boxes_prevbox = _ enddef; + def boxes_dojoin(suffix a,b) = t enddef; +enddef ; + +def boxes_clear_all = enddef; + +% Given a list of box names, give whatever default values are necessary +% in order to fix the size and shape of each box. + +vardef boxes_fixsize(text t) = + forsuffixes $ = t : scantokens boxes_sproc$($); endfor +enddef; + +% Given a list of box names, give default values for any unknown positioning offsets. + +vardef boxes_fixpos(text t) = + forsuffixes $=t: + if unknown xpart $.off : xpart $.off = 0; fi + if unknown ypart $.off : ypart $.off = 0; fi + endfor +enddef; + +% Return the boundary path for the given box + +vardef bpath suffix $ = + boxes_fixsize($); + boxes_fixpos($); + scantokens boxes_pproc$($) +enddef; + +% Return the contents of the given box. First define a private version that the user can't +% accidently clobber. + +vardef boxes_pic_mac suffix $ = + boxes_fixsize($); + boxes_fixpos($); + boxes_pic$ shifted $off +enddef; + +vardef pic suffix $ = boxes_pic_mac $ enddef; + +% Draw each box: + +def drawboxed(text t) = + boxes_fixsize(t); + boxes_fixpos(t); + forsuffixes s = t: draw boxes_pic_mac.s; draw bpath.s; endfor +enddef; + +% Draw contents of each box: + +def drawunboxed(text t) = + boxes_fixsize(t); + boxes_fixpos(t); + forsuffixes s = t : + draw boxes_pic_mac.s; + endfor +enddef; + +% Draw boundary path for each box: + +def drawboxes(text t) = + forsuffixes s = t : + draw bpath.s; + endfor +enddef; + +% Rectangular boxes + +newinternal defaultdx, defaultdy; defaultdx := defaultdy := 3bp; + +vardef boxit@#(text tt) = + boxes_begin("boxes_path","boxes_size",@#,tt); + boxes_declare (pair) _n.sw, _n.s, _n.se, _n.e, _n.ne, _n.n, _n.nw, _n.w; + 0 = xpart(@#nw - @#sw) = ypart(@#se - @#sw); + 0 = xpart(@#ne - @#se) = ypart(@#ne - @#nw); + @#w = .5[@#nw,@#sw]; + @#s = .5[@#sw,@#se]; + @#e = .5[@#ne,@#se]; + @#n = .5[@#ne,@#nw]; + @#ne - @#c = @#c - @#sw = (@#dx,@#dy) + .5*(urcorner boxes_pic@# - llcorner boxes_pic@#); + boxes_end(boxes_clear,@#); +enddef; + +def boxes_path(suffix $) = + $.sw -- $.se -- $.ne -- $.nw -- cycle +enddef; + +def boxes_size(suffix $) = + if unknown $.dx : $.dx = defaultdx; fi + if unknown $.dy : $.dy = defaultdy; fi +enddef; + +vardef boxes_clear(suffix $) = + boxes_n := str $; + boxes_redeclare(numeric) _n.sw, _n.s, _n.se, _n.e, _n.ne, _n.n, _n.nw, _n.w, _n.c, _n.off, _n.dx, _n.dy; +enddef; + +% Circular and oval boxes + +newinternal circmargin; circmargin := 2bp; % default clearance for picture corner + +vardef circleit@#(text tt) = + boxes_begin("boxes_the_circle","boxes_size_circle",@#,tt); + boxes_generic_declare(pair) _n.n, _n.s, _n.e, _n.w; + @#e - @#c = @#c - @#w = (@#dx,0) + .5*(lrcorner boxes_pic@# - llcorner boxes_pic@#); + @#n - @#c = @#c - @#s = (0,@#dy) + .5*(ulcorner boxes_pic@# - llcorner boxes_pic@#); + boxes_end(boxes_clear_circle,@#); +enddef; + +def boxes_the_circle (suffix $) = + $.e{up} ... $.n{left} ... $.w{down} ... $.s{right} ... cycle +enddef; + +vardef boxes_clear_circle (suffix $) = + boxes_n := str $; + boxes_redeclare(numeric) _n.n, _n.s, _n.e, _n.w, _n.c, _n.off, _n.dx, _n.dy; +enddef; + +vardef boxes_size_circle (suffix $) = + save a_, b_; + (a_,b_) = .5*(urcorner boxes_pic$ - llcorner boxes_pic$); + if unknown $dx : + if unknown $dy : + if unknown($dy-$dx) : + a_ + $dx = b_ + $dy; + fi + if a_ + $dx = b_ + $dy : + a_ + $dx = a_ ++ b_ + circmargin; + else : + $dx = boxes_select(max(a_,b_ + $dx - $dy), (a_ + d_,0){up} ... (0,b_ + d_ + $dy - $dx){left}); + fi + else : + $dx = boxes_select(a_, (a_ + d_,0){up}...(0,b_ + $dy){left}); + fi + elseif unknown $dy : + $dy = boxes_select(b_, (a_ + $dx,0){up}...(0,b_ + d_){left}); + fi +enddef; + +vardef boxes_select(expr dhi)(text tt) = + save f_, p_; path p_; + p_ = origin .. (a_,b_) + circmargin * unitvector(a_,b_); + vardef f_ (expr d_) = + xpart((tt) intersectiontimes p_) >= 0 + enddef; + solve f_(0, dhi + 1.5circmargin) +enddef; + +def boxes_init_all = + boxes_boxjoin(); + save boxes_pic, boxes_sproc, boxes_pproc; + def boxes_clear_all = enddef; +enddef ; + +extra_beginfig := extra_beginfig & "boxes_init_all;"; +extra_endfig := "boxes_clear_all;" & extra_endfig; + +if makingfigure : + boxes_init_all; +fi ; + diff --git a/metapost/context/base/mpxl/mp-base.mpxl b/metapost/context/base/mpxl/mp-base.mpxl index 4cb44d69f..afdcda1ed 100644 --- a/metapost/context/base/mpxl/mp-base.mpxl +++ b/metapost/context/base/mpxl/mp-base.mpxl @@ -993,7 +993,9 @@ string extra_beginfig, extra_endfig ; extra_beginfig := "" ; extra_endfig := "" ; -def beginfig(expr c) = +newinternal boolean makingfigure ; makingfigure := false ; + +def beginfig(expr c) = % redefined in mp-grph ! begingroup charcode := c ; clearxy ; @@ -1002,6 +1004,7 @@ def beginfig(expr c) = pickup defaultpen ; drawoptions() ; interim stacking := 0 ; + interim makingfigure := true; scantokens extra_beginfig ; enddef ; diff --git a/metapost/context/base/mpxl/mp-grph.mpxl b/metapost/context/base/mpxl/mp-grph.mpxl index 8517293aa..7dca4e935 100644 --- a/metapost/context/base/mpxl/mp-grph.mpxl +++ b/metapost/context/base/mpxl/mp-grph.mpxl @@ -47,10 +47,10 @@ def resetfig = interim linecap := linecap ; interim linejoin := linejoin ; interim miterlimit := miterlimit ; - % not really needed: + interim stacking := 0 ; + interim makingfigure := true; save temp_b ; color temp_b ; temp_b := background ; save background ; color background ; background := temp_b ; - % drawoptions () ; enddef ; diff --git a/metapost/context/base/mpxl/mp-mlib.mpxl b/metapost/context/base/mpxl/mp-mlib.mpxl index c81b4fe39..35854a987 100644 --- a/metapost/context/base/mpxl/mp-mlib.mpxl +++ b/metapost/context/base/mpxl/mp-mlib.mpxl @@ -1413,6 +1413,9 @@ def withproperties expr p = if length (dashpart p) > 0 : dashed dashpart p fi + if stackingpart p <> 0 : + withstacking stackingpart p + fi withprescript prescriptpart p withpostscript postscriptpart p enddef ; diff --git a/metapost/context/base/mpxl/mp-tool.mpxl b/metapost/context/base/mpxl/mp-tool.mpxl index 9c469b03a..a6f931fbd 100644 --- a/metapost/context/base/mpxl/mp-tool.mpxl +++ b/metapost/context/base/mpxl/mp-tool.mpxl @@ -3839,3 +3839,50 @@ vardef processpath (expr p) (text pp) = enddef ; permanent processpath ; + +% By Bogluslaw Jackowski (public domain): +% +% draw hatched (fullcircle scaled 10cm) (45, 4, 1) withcolor "red" ; + +newinternal hatch_match; hatch_match := 1; + +vardef hatched(expr o) primary c = + save a_, b_, d_, l_, i_, r_, za_, zb_, zc_, zd_; + path b_; picture r_; pair za_, zb_, zc_, zd_; + r_ := image ( + a_ := redpart(c) mod 180 ; + l_ := greenpart(c) ; + d_ := -bluepart(c) ; + b_ := o rotated -a_ ; + b_ := + if a_ >= 90 : + (lrcorner b_ -- llcorner b_ -- ulcorner b_ -- urcorner b_ -- cycle) + else : + (llcorner b_ -- lrcorner b_ -- urcorner b_ -- ulcorner b_ -- cycle) + fi + rotated a_ ; + za_ := point 0 of b_ ; + zb_ := point 1 of b_ ; + zc_ := point 2 of b_ ; + zd_ := point 3 of b_ ; + if hatch_match > 0 : + n_ := round(length(zd_-za_) / l_) ; + if n_ < 2: + n_ := 2 ; + fi ; + l_ := length(zd_-za_) / n_ ; + else : + n_ := length(zd_-za_) / l_ ; + fi + save currentpen; pen currentpen ; pickup pencircle scaled d_; + % we use a single path instead: + for i_ := if hatch_match > 0 : 1 else : 0 fi upto ceiling n_ - 1 : + nodraw (i_/n_)[zd_,za_] -- (i_/n_)[zc_,zb_] ; + endfor + dodraw origin ; + ) ; + clip r_ to o; + r_ +enddef; + +permanent hatched ; diff --git a/metapost/context/base/mpxl/mp-xbox.mpxl b/metapost/context/base/mpxl/mp-xbox.mpxl new file mode 100644 index 000000000..65a3da775 --- /dev/null +++ b/metapost/context/base/mpxl/mp-xbox.mpxl @@ -0,0 +1,292 @@ +% This file is a variant of "macros for boxes":: +% +% author : Taco Hoekwater +% version : $Id: boxes.mp,v 1.5 2005/02/25 11:28:56 taco Exp $ +% copyright : Public domain +% patched : Hans Hagen +% +% The code is the same but I've added s boxes_ namespace for soem so that we don't +% clash with metafun. Loading and initialization is now under metafun control. + +if known metafun_loaded_xbox : endinput ; fi ; + +newinternal boolean metafun_loaded_xbox ; metafun_loaded_xbox := true ; immutable metafun_loaded_xbox ; + +% Find the length of the prefix of string s for which cond is true for each character +% c of the prefix. + +vardef boxes_str_prefix (expr s) (text cond) = + save i_, c; string c; i_ = 0; + forever: + c := substring (i_, i_ + 1) of s; + exitunless cond; + exitif incr i_ = length s; + endfor + i_ +enddef; + +% Take a string returned by the str operator and return the same string with explicit +% numeric subscripts replaced by generic subscript symbols [] (fixed by Eddie Kohler). + +vardef generisize (expr ss) = + save r, s, l; string r, s; + r = ""; % result so far + s = ss; % left to process + forever: + exitif s = ""; + l := boxes_str_prefix(s, (c<>"[") and ((c<"0") or (c>"9"))); + r := r & substring (0,l) of s; + s := substring (l, infinity) of s; + if s <> "" : + if (s >= "[") and (length s > 1) : + if (substring (1,2) of s) = "[" : + l := 2; + r := r & "[["; + else : + l := 1 + boxes_str_prefix(s, c <> "]"); + r := r & "[]"; + fi + else : + r := r & "[]"; + l := boxes_str_prefix(s, (c = ".") or ("0" <= c) and (c <= "9")); + fi + s := substring(l, infinity) of s; + fi + endfor + r +enddef; + +% Make sure the string boxes_n_gen is generisize(_n_): + +string boxes_n, boxes_n_cur, boxes_n_gen; boxes_n_cur := "]"; % this won't match _n_ + +vardef boxes_set_n_gen = + if boxes_n <> boxes_n_cur: + boxes_n_cur := boxes_n; + boxes_n_gen := generisize(boxes_n); + fi +enddef; + +% Given a type t and list of variable names vars, make sure that they are of type t +% and redeclare them as necessary. In the vars list _n represents scantokens boxes_n, +% a suffix that might contain numeric subscripts. This suffix needs to be replaced +% by scantokens boxes_n_gen in order to get a variable that can be declared to be of +% type t. + +vardef boxes_declare(text t) text vars = + boxes_set_n_gen; + forsuffixes v_ = vars : + if forsuffixes _n = scantokens boxes_n : not t v_ endfor : + def boxes_gdmac text _n = t v_ enddef; + expandafter boxes_gdmac scantokens boxes_n_gen; + fi + endfor +enddef; + +% Here is another version that redeclares the vars even if they are already of the +% right type. + +vardef boxes_redeclare(text t) text vars = + boxes_set_n_gen; + def boxes_gdmac text _n = t vars enddef; + expandafter boxes_gdmac scantokens boxes_n_gen; +enddef; + +% pp should be a string giving the name of a macro that finds the boundary path and +% sp should be a string that names a macro for fixing the size and shape. The suffix +% $ is the name of the box. The text t gives the box contents: either empty, a +% picture, or a string to typeset. + +def boxes_begin (expr pp, sp) (suffix $) (text t) = + boxes_n := str $; + boxes_declare (pair) _n.off, _n.c; + boxes_declare (string) boxes_pproc._n, boxes_sproc._n; + boxes_declare (picture) boxes_pic._n; + boxes_pproc$ := pp; + boxes_sproc$ := sp; + boxes_pic$ := nullpicture; + for _p_ = t : + % boxes_pic$ := if picture _p_: _p_ else: _p_ infont defaultfont scaled defaultscale fi; + boxes_pic$ := if picture _p_: _p_ else: textext(_p_) fi; + endfor + $c = $off + .5[llcorner boxes_pic$, urcorner boxes_pic$] +enddef; + +% The suffix cl names a vardef macro that clears box-related variables. The suffix $ +% is the name of the box being ended. + +def boxes_end(suffix cl, $) = + if known boxes_pic.boxes_prevbox: + boxes_dojoin(boxes_prevbox,$); + fi + def boxes_prevbox = $ enddef; + expandafter def expandafter boxes_clear_all expandafter = + boxes_clear_all cl($); + enddef +enddef; + +% Text t gives equations for joining box a to box b. + +def boxes_boxjoin(text t) = + def boxes_prevbox = _ enddef; + def boxes_dojoin(suffix a,b) = t enddef; +enddef ; + +def boxes_clear_all = enddef; + +% Given a list of box names, give whatever default values are necessary +% in order to fix the size and shape of each box. + +vardef boxes_fixsize(text t) = + forsuffixes $ = t : scantokens boxes_sproc$($); endfor +enddef; + +% Given a list of box names, give default values for any unknown positioning offsets. + +vardef boxes_fixpos(text t) = + forsuffixes $=t: + if unknown xpart $.off : xpart $.off = 0; fi + if unknown ypart $.off : ypart $.off = 0; fi + endfor +enddef; + +% Return the boundary path for the given box + +vardef bpath suffix $ = + boxes_fixsize($); + boxes_fixpos($); + scantokens boxes_pproc$($) +enddef; + +% Return the contents of the given box. First define a private version that the user can't +% accidently clobber. + +vardef boxes_pic_mac suffix $ = + boxes_fixsize($); + boxes_fixpos($); + boxes_pic$ shifted $off +enddef; + +vardef pic suffix $ = boxes_pic_mac $ enddef; + +% Draw each box: + +def drawboxed(text t) = + boxes_fixsize(t); + boxes_fixpos(t); + forsuffixes s = t: draw boxes_pic_mac.s; draw bpath.s; endfor +enddef; + +% Draw contents of each box: + +def drawunboxed(text t) = + boxes_fixsize(t); + boxes_fixpos(t); + forsuffixes s = t : + draw boxes_pic_mac.s; + endfor +enddef; + +% Draw boundary path for each box: + +def drawboxes(text t) = + forsuffixes s = t : + draw bpath.s; + endfor +enddef; + +% Rectangular boxes + +newinternal defaultdx, defaultdy; defaultdx := defaultdy := 3bp; + +vardef boxit@#(text tt) = + boxes_begin("boxes_path","boxes_size",@#,tt); + boxes_declare (pair) _n.sw, _n.s, _n.se, _n.e, _n.ne, _n.n, _n.nw, _n.w; + 0 = xpart(@#nw - @#sw) = ypart(@#se - @#sw); + 0 = xpart(@#ne - @#se) = ypart(@#ne - @#nw); + @#w = .5[@#nw,@#sw]; + @#s = .5[@#sw,@#se]; + @#e = .5[@#ne,@#se]; + @#n = .5[@#ne,@#nw]; + @#ne - @#c = @#c - @#sw = (@#dx,@#dy) + .5*(urcorner boxes_pic@# - llcorner boxes_pic@#); + boxes_end(boxes_clear,@#); +enddef; + +def boxes_path(suffix $) = + $.sw -- $.se -- $.ne -- $.nw -- cycle +enddef; + +def boxes_size(suffix $) = + if unknown $.dx : $.dx = defaultdx; fi + if unknown $.dy : $.dy = defaultdy; fi +enddef; + +vardef boxes_clear(suffix $) = + boxes_n := str $; + boxes_redeclare(numeric) _n.sw, _n.s, _n.se, _n.e, _n.ne, _n.n, _n.nw, _n.w, _n.c, _n.off, _n.dx, _n.dy; +enddef; + +% Circular and oval boxes + +newinternal circmargin; circmargin := 2bp; % default clearance for picture corner + +vardef circleit@#(text tt) = + boxes_begin("boxes_the_circle","boxes_size_circle",@#,tt); + boxes_generic_declare(pair) _n.n, _n.s, _n.e, _n.w; + @#e - @#c = @#c - @#w = (@#dx,0) + .5*(lrcorner boxes_pic@# - llcorner boxes_pic@#); + @#n - @#c = @#c - @#s = (0,@#dy) + .5*(ulcorner boxes_pic@# - llcorner boxes_pic@#); + boxes_end(boxes_clear_circle,@#); +enddef; + +def boxes_the_circle (suffix $) = + $.e{up} ... $.n{left} ... $.w{down} ... $.s{right} ... cycle +enddef; + +vardef boxes_clear_circle (suffix $) = + boxes_n := str $; + boxes_redeclare(numeric) _n.n, _n.s, _n.e, _n.w, _n.c, _n.off, _n.dx, _n.dy; +enddef; + +vardef boxes_size_circle (suffix $) = + save a_, b_; + (a_,b_) = .5*(urcorner boxes_pic$ - llcorner boxes_pic$); + if unknown $dx : + if unknown $dy : + if unknown($dy-$dx) : + a_ + $dx = b_ + $dy; + fi + if a_ + $dx = b_ + $dy : + a_ + $dx = a_ ++ b_ + circmargin; + else : + $dx = boxes_select(max(a_,b_ + $dx - $dy), (a_ + d_,0){up} ... (0,b_ + d_ + $dy - $dx){left}); + fi + else : + $dx = boxes_select(a_, (a_ + d_,0){up}...(0,b_ + $dy){left}); + fi + elseif unknown $dy : + $dy = boxes_select(b_, (a_ + $dx,0){up}...(0,b_ + d_){left}); + fi +enddef; + +vardef boxes_select(expr dhi)(text tt) = + save f_, p_; path p_; + p_ = origin .. (a_,b_) + circmargin * unitvector(a_,b_); + vardef f_ (expr d_) = + xpart((tt) intersectiontimes p_) >= 0 + enddef; + solve f_(0, dhi + 1.5circmargin) +enddef; + +def boxes_init_all = + boxes_boxjoin(); + save boxes_pic, boxes_sproc, boxes_pproc; + def boxes_clear_all = enddef; +enddef ; + +extra_beginfig := extra_beginfig & "boxes_init_all;"; +extra_endfig := "boxes_clear_all;" & extra_endfig; + +if makingfigure : + boxes_init_all; +fi ; + diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua index 3450c38ac..997e26845 100644 --- a/scripts/context/lua/mtxrun.lua +++ b/scripts/context/lua/mtxrun.lua @@ -23896,7 +23896,7 @@ do -- create closure to overcome 200 locals limit package.loaded["data-out"] = package.loaded["data-out"] or true --- original size: 551, stripped down to: 470 +-- original size: 682, stripped down to: 579 if not modules then modules={} end modules ['data-out']={ version=1.001, @@ -23910,7 +23910,10 @@ local resolvers=resolvers local registermethod=resolvers.registermethod local savers=allocate { helpers={} } resolvers.savers=savers +local cleaners=allocate { helpers={} } +resolvers.cleaners=cleaners registermethod("savers",savers,"uri") +registermethod("cleaners",cleaners,"uri") end -- of closure @@ -25892,8 +25895,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 : 1024489 --- stripped bytes : 402065 +-- original bytes : 1024620 +-- stripped bytes : 402087 -- end library merge diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua index 3450c38ac..997e26845 100644 --- a/scripts/context/stubs/mswin/mtxrun.lua +++ b/scripts/context/stubs/mswin/mtxrun.lua @@ -23896,7 +23896,7 @@ do -- create closure to overcome 200 locals limit package.loaded["data-out"] = package.loaded["data-out"] or true --- original size: 551, stripped down to: 470 +-- original size: 682, stripped down to: 579 if not modules then modules={} end modules ['data-out']={ version=1.001, @@ -23910,7 +23910,10 @@ local resolvers=resolvers local registermethod=resolvers.registermethod local savers=allocate { helpers={} } resolvers.savers=savers +local cleaners=allocate { helpers={} } +resolvers.cleaners=cleaners registermethod("savers",savers,"uri") +registermethod("cleaners",cleaners,"uri") end -- of closure @@ -25892,8 +25895,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 : 1024489 --- stripped bytes : 402065 +-- original bytes : 1024620 +-- stripped bytes : 402087 -- end library merge diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun index 3450c38ac..997e26845 100644 --- a/scripts/context/stubs/unix/mtxrun +++ b/scripts/context/stubs/unix/mtxrun @@ -23896,7 +23896,7 @@ do -- create closure to overcome 200 locals limit package.loaded["data-out"] = package.loaded["data-out"] or true --- original size: 551, stripped down to: 470 +-- original size: 682, stripped down to: 579 if not modules then modules={} end modules ['data-out']={ version=1.001, @@ -23910,7 +23910,10 @@ local resolvers=resolvers local registermethod=resolvers.registermethod local savers=allocate { helpers={} } resolvers.savers=savers +local cleaners=allocate { helpers={} } +resolvers.cleaners=cleaners registermethod("savers",savers,"uri") +registermethod("cleaners",cleaners,"uri") end -- of closure @@ -25892,8 +25895,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 : 1024489 --- stripped bytes : 402065 +-- original bytes : 1024620 +-- stripped bytes : 402087 -- end library merge diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua index 3450c38ac..997e26845 100644 --- a/scripts/context/stubs/win64/mtxrun.lua +++ b/scripts/context/stubs/win64/mtxrun.lua @@ -23896,7 +23896,7 @@ do -- create closure to overcome 200 locals limit package.loaded["data-out"] = package.loaded["data-out"] or true --- original size: 551, stripped down to: 470 +-- original size: 682, stripped down to: 579 if not modules then modules={} end modules ['data-out']={ version=1.001, @@ -23910,7 +23910,10 @@ local resolvers=resolvers local registermethod=resolvers.registermethod local savers=allocate { helpers={} } resolvers.savers=savers +local cleaners=allocate { helpers={} } +resolvers.cleaners=cleaners registermethod("savers",savers,"uri") +registermethod("cleaners",cleaners,"uri") end -- of closure @@ -25892,8 +25895,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 : 1024489 --- stripped bytes : 402065 +-- original bytes : 1024620 +-- stripped bytes : 402087 -- end library merge diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index f40536141..5f88118e5 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.07.10 21:47} +\newcontextversion{2021.07.16 21:58} %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 2b275f541..f82269d66 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.07.10 21:47} +\edef\contextversion{2021.07.16 21:58} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-pe.mkii b/tex/context/base/mkii/mult-pe.mkii index 4eed24cd9..49abd76c3 100644 --- a/tex/context/base/mkii/mult-pe.mkii +++ b/tex/context/base/mkii/mult-pe.mkii @@ -1236,6 +1236,7 @@ \setinterfaceconstant{splitoffset}{شکافتن‌آفست} \setinterfaceconstant{spot}{لکه} \setinterfaceconstant{stack}{توده} +\setinterfaceconstant{stacking}{stacking} \setinterfaceconstant{stackname}{stackname} \setinterfaceconstant{start}{شروع} \setinterfaceconstant{starter}{starter} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 2e8e2ac4c..f805e1f8d 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.07.10 21:47} +\newcontextversion{2021.07.16 21:58} %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 be8e09179..11f827ce2 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.07.10 21:47} +\edef\contextversion{2021.07.16 21:58} %D Kind of special: diff --git a/tex/context/base/mkiv/data-out.lua b/tex/context/base/mkiv/data-out.lua index 6cd02a22e..cc20f50b3 100644 --- a/tex/context/base/mkiv/data-out.lua +++ b/tex/context/base/mkiv/data-out.lua @@ -14,4 +14,8 @@ local registermethod = resolvers.registermethod local savers = allocate { helpers = { } } resolvers.savers = savers -registermethod("savers", savers, "uri") +local cleaners = allocate { helpers = { } } +resolvers.cleaners = cleaners + +registermethod("savers", savers, "uri") +registermethod("cleaners", cleaners, "uri") diff --git a/tex/context/base/mkiv/data-vir.lua b/tex/context/base/mkiv/data-vir.lua index 4b19ee537..b78211fc9 100644 --- a/tex/context/base/mkiv/data-vir.lua +++ b/tex/context/base/mkiv/data-vir.lua @@ -17,6 +17,7 @@ trackers.register("resolvers.virtual", function(v) trace_virtual = v end) local resolvers = resolvers local savers = resolvers.savers +local cleaners = resolvers.cleaners local data = { } local n = 0 -- hm, number can be query @@ -37,6 +38,10 @@ function savers.virtual(specification,content,suffix) return filename end +function cleaners.virtual(filename) + data[filename] = nil +end + local finders = resolvers.finders local notfound = finders.notfound diff --git a/tex/context/base/mkiv/mlib-pdf.lua b/tex/context/base/mkiv/mlib-pdf.lua index 7566d9310..5c1dc88b8 100644 --- a/tex/context/base/mkiv/mlib-pdf.lua +++ b/tex/context/base/mkiv/mlib-pdf.lua @@ -214,7 +214,7 @@ local function flushnormalpath(path, t, open) return t end -local function flushconcatpath(path, t, open) +local function flushconcatpath(path, t, open, transform) local pth, ith, nt local length = #path if t then @@ -223,8 +223,10 @@ local function flushconcatpath(path, t, open) t = { } nt = 0 end - nt = nt + 1 - t[nt] = f_cm(sx,rx,ry,sy,tx,ty) + if transform then + nt = nt + 1 + t[nt] = f_cm(sx,rx,ry,sy,tx,ty) + end for i=1,length do nt = nt + 1 pth = path[i] @@ -599,7 +601,7 @@ function metapost.flush(specification,result) for i=1,#savedpath do local path = savedpath[i] if transformed then - flushconcatpath(path,result,open) + flushconcatpath(path,result,open,i==1) else flushnormalpath(path,result,open) end @@ -609,7 +611,7 @@ function metapost.flush(specification,result) if flush then -- ignore this path elseif transformed then - flushconcatpath(path,result,open) + flushconcatpath(path,result,open,true) else flushnormalpath(path,result,open) end @@ -639,7 +641,7 @@ function metapost.flush(specification,result) for i=1,#savedhtap do local path = savedhtap[i] if transformed then - flushconcatpath(path,result,open) + flushconcatpath(path,result,open,i==1) else flushnormalpath(path,result,open) end @@ -648,7 +650,7 @@ function metapost.flush(specification,result) evenodd = true end if transformed then - flushconcatpath(path,result,open) + flushconcatpath(path,result,open,true) else flushnormalpath(path,result,open) end diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index ae2b58a2a..05ab7bcf0 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -300,6 +300,7 @@ return { "csstring", "defcsname", "dimensiondef", + "dimexpression", "directlua", "edefcsname", "efcode", @@ -460,6 +461,7 @@ return { "nospaces", "novrule", "numericscale", + "numexpression", "orelse", "orunless", "outputbox", @@ -496,6 +498,7 @@ return { "tokspre", "tolerant", "tpack", + "tracingexpressions", "tracingfonts", "tracinghyphenation", "tracingmath", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 4b9018dc7..751c819da 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 44e5059a7..0737a3f55 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 974b7c4df..8c029b2e4 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.07.10 21:47} +\newcontextversion{2021.07.16 21:58} %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 efba80182..9b1e70180 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.07.10 21:47} +\immutable\edef\contextversion{2021.07.16 21:58} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/libs-imp-zint.lmt b/tex/context/base/mkxl/libs-imp-zint.lmt index a3ac97584..a7646c436 100644 --- a/tex/context/base/mkxl/libs-imp-zint.lmt +++ b/tex/context/base/mkxl/libs-imp-zint.lmt @@ -104,6 +104,11 @@ local function execute(specification) if okay() then local code = specification.code local text = specification.text + -- + if lower(code) == "isbn" then + specification.text = text and gsub(text,"[^%d]","") or "" + end + -- if code then local id = mapping[code] if id then diff --git a/tex/context/base/mkxl/lpdf-mis.lmt b/tex/context/base/mkxl/lpdf-mis.lmt index bd1d9990e..bf1a736c0 100644 --- a/tex/context/base/mkxl/lpdf-mis.lmt +++ b/tex/context/base/mkxl/lpdf-mis.lmt @@ -354,7 +354,7 @@ local pagespecs = { [v_doublesided] = { mode = "UseNone", layout = "TwoColumnRight", - fit = true, + fit = true, }, [v_singlesided] = { mode = "UseNone" diff --git a/tex/context/base/mkxl/meta-ini.mkxl b/tex/context/base/mkxl/meta-ini.mkxl index 8fca5d503..8abd1339a 100644 --- a/tex/context/base/mkxl/meta-ini.mkxl +++ b/tex/context/base/mkxl/meta-ini.mkxl @@ -686,7 +686,7 @@ \begincsname\??mpgraphic#2\endcsname\empty \meta_end_graphic_group} -\def\meta_uniquempgraphic_nop#=#*#=% +\tolerant\def\meta_uniquempgraphic_nop#=#*#=% {\meta_begin_graphic_group{#1}% \checkmpcategoryparent \let\currentmpcategory\currentMPgraphicname @@ -788,7 +788,7 @@ \fi \meta_end_graphic_group} -\def\meta_usempgraphic_nop#=#*#=% +\tolerant\def\meta_usempgraphic_nop#=#*#=% {\meta_begin_graphic_group{#1}% \ifcsname\??mpgraphic#1\endcsname \edef\currentmpcategory{#1}% diff --git a/tex/context/base/mkxl/mlib-fio.lmt b/tex/context/base/mkxl/mlib-fio.lmt index 8235fdbec..d51b222cf 100644 --- a/tex/context/base/mkxl/mlib-fio.lmt +++ b/tex/context/base/mkxl/mlib-fio.lmt @@ -62,11 +62,16 @@ end -- We can have a list! +local findtexfile = resolvers.findtexfile +local opentexfile = resolvers.opentexfile +local splitlines = string.splitlines + local suffixlist = { "mpxl", "mpiv", "mp" } -- no "mf" local function findmpfile(name,ftype) local validtyp = validftype(ftype) - local fullname = findfile(name,validtyp) + -- local fullname = findfile(name,validtyp) + local fullname = findtexfile(name,validtyp) if fullname and fullname ~= "" then return fullname elseif suffix(name) == "" then @@ -97,10 +102,6 @@ local function finder(name,mode,kind) -- fake message for mpost.map and metafun. return found end -local findtexfile = resolvers.findtexfile -local opentexfile = resolvers.opentexfile -local splitlines = string.splitlines - local function writetoterminal(terminaldata,maxterm,d) local t = type(d) local n = 0 diff --git a/tex/context/base/mkxl/mlib-pdf.lmt b/tex/context/base/mkxl/mlib-pdf.lmt index 58a1129eb..ec13ef289 100644 --- a/tex/context/base/mkxl/mlib-pdf.lmt +++ b/tex/context/base/mkxl/mlib-pdf.lmt @@ -193,7 +193,7 @@ local function flushnormalpath(path, t, open, tolerance) return t end -local function flushconcatpath(path, t, open, tolerance) +local function flushconcatpath(path, t, open, tolerance, transform) local pth, ith, nt local length = #path if t then @@ -202,8 +202,10 @@ local function flushconcatpath(path, t, open, tolerance) t = { } nt = 0 end - nt = nt + 1 - t[nt] = f_cm(sx,rx,ry,sy,tx,ty) + if transform then + nt = nt + 1 + t[nt] = f_cm(sx,rx,ry,sy,tx,ty) + end for i=1,length do nt = nt + 1 pth = path[i] @@ -565,7 +567,7 @@ function metapost.flush(specification,result) for i=1,#savedpath do local path = savedpath[i] if transformed then - flushconcatpath(path,result,open,tolerance) + flushconcatpath(path,result,open,tolerance,i==1) else flushnormalpath(path,result,open,tolerance) end @@ -575,7 +577,7 @@ function metapost.flush(specification,result) if flush then -- ignore this path elseif transformed then - flushconcatpath(path,result,open,tolerance) + flushconcatpath(path,result,open,tolerance,true) else flushnormalpath(path,result,open,tolerance) end @@ -605,7 +607,7 @@ function metapost.flush(specification,result) for i=1,#savedhtap do local path = savedhtap[i] if transformed then - flushconcatpath(path,result,open,tolerance) + flushconcatpath(path,result,open,tolerance,i==1) else flushnormalpath(path,result,open,tolerance) end @@ -614,7 +616,7 @@ function metapost.flush(specification,result) evenodd = true end if transformed then - flushconcatpath(path,result,open,tolerance) + flushconcatpath(path,result,open,tolerance,true) else flushnormalpath(path,result,open,tolerance) end diff --git a/tex/context/base/mkxl/page-txt.mklx b/tex/context/base/mkxl/page-txt.mklx index 3b46d42f9..969f0a447 100644 --- a/tex/context/base/mkxl/page-txt.mklx +++ b/tex/context/base/mkxl/page-txt.mklx @@ -478,13 +478,13 @@ \page_layouts_left_edge_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth \fi \ifdim\leftmarginwidth>\zeropoint - \page_layouts_left_margin_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth\zerocount + \page_layouts_left_margin_element\c!righttext\c!rightstyle\c!rightcolor\c!rightwidth\plusone \fi \ifdim\makeupwidth>\zeropoint \page_layouts_text_body_element_e_r_m_l \fi \ifdim\rightmarginwidth>\zeropoint - \page_layouts_right_margin_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth\plusone + \page_layouts_right_margin_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth\zerocount \fi \ifdim\rightedgewidth>\zeropoint \page_layouts_right_edge_element\c!lefttext\c!leftstyle\c!leftcolor\c!leftwidth @@ -526,6 +526,9 @@ % margin needs checking! +% \hbox to \leftmarginwidth{\hss\layoutelementparameter\c!margintext}% +% \hbox to \rightmarginwidth{\layoutelementparameter\c!margintext\hss}% + \def\page_layouts_left_margin_element_indeed#text#style#color#width#margintoo% {\letfromlayoutelementparameter\p_text#text% \ifempty\p_text diff --git a/tex/context/interface/mkii/keys-pe.xml b/tex/context/interface/mkii/keys-pe.xml index 691b93919..f41ba8cae 100644 --- a/tex/context/interface/mkii/keys-pe.xml +++ b/tex/context/interface/mkii/keys-pe.xml @@ -1242,6 +1242,7 @@ + diff --git a/tex/context/modules/mkiv/m-asymptote.lua b/tex/context/modules/mkiv/m-asymptote.lua index 31a81433f..9a93e166d 100644 --- a/tex/context/modules/mkiv/m-asymptote.lua +++ b/tex/context/modules/mkiv/m-asymptote.lua @@ -29,7 +29,7 @@ sandbox.registerrunner { checkers = { filename = "readable" }, } -function moduledata.asympote.process(name,type) +function moduledata.asymptote.process(name,type) if type == "prc" then local result = buffers.run(name,false,"asymptote prc","prc") local jsdata = { js = replacesuffix(result,"js") } diff --git a/tex/context/modules/mkiv/m-asymptote.mkiv b/tex/context/modules/mkiv/m-asymptote.mkiv index 9cd4037fb..6317fc072 100644 --- a/tex/context/modules/mkiv/m-asymptote.mkiv +++ b/tex/context/modules/mkiv/m-asymptote.mkiv @@ -51,7 +51,7 @@ {\iffirstargument \begingroup \getdummyparameters[#2]% - \edef\lasttypesetbuffer{\ctxlua{moduledata.asympote.process("asymptote:#1","\dummyparameter\c!type")}}% + \edef\lasttypesetbuffer{\ctxlua{moduledata.asymptote.process("asymptote:#1","\dummyparameter\c!type")}}% \externalfigure [\lasttypesetbuffer]% [\c!controls=\lasttypesetbuffer,#2]% diff --git a/tex/context/modules/mkiv/m-barcodes.mkiv b/tex/context/modules/mkiv/m-barcodes.mkiv index 84f093c56..17afb5753 100644 --- a/tex/context/modules/mkiv/m-barcodes.mkiv +++ b/tex/context/modules/mkiv/m-barcodes.mkiv @@ -1,3 +1,5 @@ +% engine=luatex + %D \module %D [ file=m-barcodes, %D version=2010.03.14, @@ -20,6 +22,11 @@ \unexpanded\def\barcode[#1]% {\normalbarcode[\c!text=\dummyparameter\c!code,\c!alternative=\dummyparameter\c!type,#1]} +%D We keep the following for historic reasons to show progress over years. The +%D original idea was to use escrito fro the code below but it never happened as +%D we went zint. I'll look into that when users really want to use pstricks but I +%D never had requests and the chemical mpoduel also moved on. + \iffalse % \startTEXpage diff --git a/tex/context/modules/mkiv/m-escrito.lua b/tex/context/modules/mkiv/m-escrito.lua index 0d7a04741..8a45f1a2c 100644 --- a/tex/context/modules/mkiv/m-escrito.lua +++ b/tex/context/modules/mkiv/m-escrito.lua @@ -48,6 +48,24 @@ if not modules then modules = { } end modules ['m-escrito'] = { -- of the VM calls (in direct mode they are no-ops anyway). We can also share some -- more code here and there. +-- Notes: +-- +-- -- all modules are checked / adapted to lmtx but how about this one ... i noticed +-- that a file in the test suite failed +-- +-- -- the idea was to use this for the m4all eps files but we swichted the format +-- there; nevertheless i patched a littl but it's still not ok (cold winter work) +-- +-- -- for instance some ppor mans fancy shading doesn't show up (not that efficient +-- either so ...) +-- +-- -- let's see what the new fast ps->pdf lib from artifact brings ... makes more +-- sense in the perspective of ps 2 and 3 .. but there is some sentiment involved +-- +-- -- room for implification (like no integer / real distinction needed) +-- +-- -- so for now this is not part of the mkiv/lmtx code split (then also go Lua 5.4) + local type, unpack, tonumber, tostring, next = type, unpack, tonumber, tostring, next local format = string.format @@ -78,7 +96,7 @@ local log10 = math.log10 local random = math.random local setranseed = math.randomseed -local bitand = bit32.band +local bitand = bit32.band -- when lmtx: Lua 5.4 local bitor = bit32.bor local bitxor = bit32.bxor local bitrshift = bit32.rshift @@ -133,7 +151,7 @@ initializers[#initializers+1] = function() VM = { } end -local directvm = true +local directvm = false -- true (but then we ned to patch more VM[..] local add_VM, get_VM @@ -245,6 +263,9 @@ end local opstack local opstackptr +local b_true = { 'boolean', 'unlimited', 'literal', true } +local b_false = { 'boolean', 'unlimited', 'literal', false } + initializers[#initializers+1] = function() opstack = { } opstackptr = 0 @@ -489,7 +510,7 @@ function operators.exch() if opstackptr < 2 then return ps_error('stackunderflow') end - local prv = opstackptr-1 + local prv = opstackptr - 1 opstack[opstackptr], opstack[prv] = opstack[prv], opstack[opstackptr] return true end @@ -498,7 +519,7 @@ function operators.dup() if opstackptr < 1 then return ps_error('stackunderflow') end - local nxt = opstackptr+1 + local nxt = opstackptr + 1 opstack[nxt] = opstack[opstackptr] opstackptr = nxt return true @@ -1835,10 +1856,10 @@ function operators.anchorsearch() local post = sub(thestring,#thesearch+1) push_opstack { 'string', 'unlimited', 'literal', add_VM(post), 1, #post } push_opstack { 'string', 'unlimited', 'literal', add_VM(prefix), 1, #prefix } - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack (b_true) else push_opstack(a) - push_opstack { 'boolean', 'unlimited', 'literal', false } + push_opstack (b_false) end return true end @@ -1884,10 +1905,10 @@ function operators.search() push_opstack { 'string', 'unlimited', 'literal', add_VM(post), 1, #post } push_opstack { 'string', 'unlimited', 'literal', add_VM(thesearch), 1, #thesearch } push_opstack { 'string', 'unlimited', 'literal', add_VM(prefix), 1, #prefix } - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack (b_true) else push_opstack(a) - push_opstack { 'boolean', 'unlimited', 'literal', false } + push_opstack(b_false) end return true end @@ -1913,7 +1934,7 @@ function operators.token() if not v then pop_execstack() pop_execstack() - push_opstack { 'boolean', 'unlimited', 'literal', false } + push_opstack(b_false) else local q = pop_execstack() if execstack[execstackptr][1] == '.token' then @@ -1933,7 +1954,7 @@ function operators.token() end push_opstack { ta, aa, a[3], add_VM(substring), 1, #substring} push_opstack(v) - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack(b_true) end else -- file if a[7] ~= 'r' then @@ -1945,7 +1966,7 @@ function operators.token() if not v then pop_execstack() pop_execstack() - push_opstack { 'boolean', 'unlimited', 'literal', false } + push_opstack(b_false) else local q = pop_execstack() -- the file a[5] = q[5] @@ -1953,7 +1974,7 @@ function operators.token() pop_execstack() end push_opstack(v) - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack(b_true) end end return true @@ -1994,7 +2015,7 @@ end function operators.eq() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a == b } + push_opstack(a == b and b_true or b_false) return true else return a @@ -2004,7 +2025,7 @@ end function operators.ne() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a ~= b } + push_opstack(a ~= b and b_true or b_false) return true else return a @@ -2040,7 +2061,7 @@ end function operators.ge() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a >= b } + push_opstack(a >= b and b_true or b_false) return true else return a @@ -2050,7 +2071,7 @@ end function operators.gt() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a > b } + push_opstack(a > b and b_true or b_false) return true else return a @@ -2060,7 +2081,7 @@ end function operators.le() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a <= b } + push_opstack(a <= b and b_true or b_false) return true else return a @@ -2070,7 +2091,7 @@ end function operators.lt() local ok, a, b = both() if ok then - push_opstack { 'boolean', 'unlimited', 'literal', a < b } + push_opstack(a < b and b_true or b_false) return true else return a @@ -2104,7 +2125,7 @@ end operators["and"]= function() local ok, a, b = both() if ok == 'boolean' then - push_opstack { 'boolean', 'unlimited', 'literal', a[1] and b[1] } + push_opstack((a[1] and b[1]) and b_true or b_false) return true elseif ok == 'integer' then push_opstack { 'integer', 'unlimited', 'literal', bitand(a[1],b[1]) } @@ -2117,7 +2138,7 @@ end operators["or"] = function() local ok, a, b = both() if ok == 'boolean' then - push_opstack {'boolean', 'unlimited', 'literal', a[1] or b[1] } + push_opstack((a[1] or b[1]) and b_true or b_false) return true elseif ok == 'integer' then push_opstack {'integer', 'unlimited', 'literal', bitor(a[1],b[1]) } @@ -2130,7 +2151,7 @@ end function operators.xor() local ok, a, b = both() if ok == 'boolean' then - push_opstack {'boolean', 'unlimited', 'literal', a[1] ~= b[1] } + push_opstack ((a[1] ~= b[1]) and b_true or b_false) -- hm, unequal ? return true elseif ok == 'integer' then push_opstack {'integer', 'unlimited', 'literal', bitxor(a[1],b[1]) } @@ -2151,7 +2172,7 @@ operators["not"] = function() return ps_error('invalidaccess') end if ta == 'boolean' then - push_opstack { 'boolean', 'unlimited', 'literal', not a[4] } + push_opstack ((not a[4]) and b_true or b_false) elseif ta == 'integer' then push_opstack { 'integer', 'unlimited', 'literal', -a[4] - 1 } else @@ -2516,7 +2537,7 @@ function operators.xcheck() if not a then return ps_error('stackunderflow') end - push_opstack { 'boolean', 'unlimited', 'literal', a[3] == 'executable' } + push_opstack((a[3] == 'executable') and b_true or b_false) return true end @@ -2602,7 +2623,7 @@ function operators.rcheck() else return ps_error('typecheck') end - push_opstack { 'boolean', 'unlimited', 'literal', aa == 'unlimited' or aa == 'read-only' } + push_opstack((aa == 'unlimited' or aa == 'read-only') and p_true or p_false) return true end @@ -2621,7 +2642,7 @@ function operators.wcheck() else return ps_error('typecheck') end - push_opstack { 'boolean', 'unlimited', 'literal', aa == 'unlimited' } + push_opstack((aa == 'unlimited') and p_true or p_false) return true end @@ -2906,10 +2927,10 @@ function operators.read() end if b then push_opstack { 'integer', 'unlimited', 'literal', byte(b) } - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack (p_true) else f:close() - push_opstack { 'boolean', 'unlimited', 'literal', false} + push_opstack (p_false) end return true end @@ -3042,7 +3063,7 @@ do end if not va then push_opstack { 'string', 'unlimited', 'literal', add_VM(''), 0, 0 } - push_opstack { 'boolean', 'unlimited', 'literal', false } + push_opstack (p_false) else local n = #va if n > b[6] then @@ -3051,7 +3072,7 @@ do local thestring = get_VM(b[4]) VM[b[4]] = va .. sub(thestring,#va+1, -1) push_opstack { 'string', 'unlimited', 'literal', add_VM(va), n, n } - push_opstack { 'boolean', 'unlimited', 'literal', true } + push_opstack (p_true) end return true end @@ -3100,7 +3121,7 @@ do local n = #va VM[b[4]] = repl .. sub(thestring,n+1,-1) push_opstack { b[1], b[2], b[3], add_VM(va), n, n } - push_opstack { 'boolean', 'unlimited', 'literal', n == b[6] } + push_opstack ((n == b[6]) and p_true or p_false) return true end @@ -3335,8 +3356,8 @@ local function commonstack(seperator) for n=1,opstackptr do push_opstack { 'string', 'unlimited', 'literal', add_VM(seperator), 1 ,1 } push_opstack(opstack[n]) - push_execstack { 'operator','unlimited','executable', operators.print, 'print'} - push_execstack { 'operator','unlimited','executable', operators.equal, '=='} + push_execstack { 'operator','unlimited','executable', operators.print, 'print' } + push_execstack { 'operator','unlimited','executable', operators.equal, '==' } end return true end @@ -3377,15 +3398,21 @@ end function operators.save() local saved_VM = { } - for k1, v1 in next, VM do +-- for k1, v1 in next, VM do + for k1 = 1, #VM do + local v1 = VM[k1] if type(v1) == "table" then local t1 = { } saved_VM[k1] = t1 - for k2, v2 in next, t1 do +-- for k2, v2 in next, v1 do + for k2=1,#v1 do + local v2 = v1[k2] if type(v2) == "table" then local t2 = { } t1[k2] = t2 - for k3, v3 in next, v2 do +-- for k3, v3 in next, v2 do + for k3=1,#v2 do + local v3 = v2[k3] t2[k3] = v3 end else @@ -3401,6 +3428,13 @@ function operators.save() push_opstack { 'save', 'unlimited', 'executable', add_VM(saved_VM) } end +function operators.save() + local saved_VM = table.copy(VM) + push_gsstack { 'save', copy_gsstate() } + savelevel = savelevel + 1 + push_opstack { 'save', 'unlimited', 'executable', add_VM(saved_VM) } +end + do local function validstack(stack,index,saved_VM) @@ -3532,6 +3566,9 @@ end function operators.gsave() push_gsstack { 'gsave', copy_gsstate() } + currentpage[#currentpage+1] = { + type = 'gsave', + } return true end @@ -3543,6 +3580,9 @@ function operators.grestore() gsstate = g[2] end end + currentpage[#currentpage+1] = { + type = 'grestore', + } return true end @@ -4183,7 +4223,7 @@ function operators.setmatrix() if i > 6 then return ps_error('rangecheck') end - matrix[i] = va + matrix[i] = tv end return true end @@ -4856,7 +4896,7 @@ local function commonarc(action) if not a then return ps_error('stackunderflow') end - local ta, tb, tc, td, te = a[1], b[1], c[1], d[1], e[1], f[1] + local ta, tb, tc, td, te = a[1], b[1], c[1], d[1], e[1] if not (ta == 'real' or ta == 'integer') then return ps_error('typecheck') end if not (tb == 'real' or tb == 'integer') then return ps_error('typecheck') end if not (tc == 'real' or tc == 'integer') then return ps_error('typecheck') end @@ -5058,6 +5098,7 @@ function operators.rcurveto() if #position == 0 then return ps_error('nocurrentpoint') end + local matrix = gsstate.matrix local x, y = do_transform(matrix, e[4], f[4]) local ax, ay = do_transform(matrix, a[4], b[4]) local bx, by = do_transform(matrix, c[4], d[4]) @@ -5485,6 +5526,17 @@ end ------------------------------------------------------------------ +function operators.pathbbox() + print("todo: pathbbox") + push_opstack { "real", 'unlimited', 'literal', 0 } + push_opstack { "real", 'unlimited', 'literal', 0 } + push_opstack { "real", 'unlimited', 'literal', 1 } + push_opstack { "real", 'unlimited', 'literal', 1 } + return true +end + +------------------------------------------------------------------ + -- most time is spend in calculating the boundingbox -- NULL output @@ -5537,113 +5589,136 @@ function pdf.showpage(page) local object = page[i] local path = object.path local otyp = object.type - if otype ~= "clip" and otype ~= "eoclip" then - local colortype = object.colortype - local color = object.color - if colortype == "gray" then - local v = formatters["%f g %f G"](color,color) - if g_color ~= v then - g_colortype = "gray" - g_color = v - n = n + 1 ; t[n] = v + if otyp == "gsave" then + n = n + 1 ; t[n] = "q" + -- todo push / pop +g_colortype = "notacolor" +g_color = "" +g_miterlimit = -1 +g_linejoin = -1 +g_linecap = -1 +g_linewidth = -1 +g_dashpattern = nil +g_dashoffset = -1 + elseif otyp == "grestore" then +g_colortype = "notacolor" +g_color = "" +g_miterlimit = -1 +g_linejoin = -1 +g_linecap = -1 +g_linewidth = -1 +g_dashpattern = nil +g_dashoffset = -1 + n = n + 1 ; t[n] = "Q" + else + if otyp ~= "clip" and otyp ~= "eoclip" then + local colortype = object.colortype + local color = object.color + if colortype == "gray" then + local v = formatters["%f g %f G"](color,color) + if g_color ~= v then + g_colortype = "gray" + g_color = v + n = n + 1 ; t[n] = v + end + elseif colortype == "rgb" then + local r, g, b = color[1], color[2], color[3] + local v = formatters["%f %f %f rg %f %f %f RG"](r,g,b,r,g,b) + if g_color ~= v then + g_colortype = "rgb" + g_color = v + n = n + 1 ; t[n] = v + end + elseif colortype == "cmyk" then + local c, m, y, k = color[1], color[2], color[3], color[4] + local v = formatters["%f %f %f %f k %f %f %f %f K"](c,m,y,k,c,m,y,k) + if g_color ~= v then + g_colortype = "cmyk" + g_color = v + n = n + 1 ; t[n] = v + end + elseif colortype == "hsb" then + local r, g, b = hsv_to_rgb(color[1],color[2],color[3]) + local v = formatters["%f %f %f rg %f %f %f RG"](r,g,b,r,g,b) + if g_color ~= v then + g_colortype = "rgb" + g_color = v + n = n + 1 ; t[n] = v + end end - elseif colortype == "rgb" then - local r, g, b = color[1], color[2], color[3] - local v = formatters["%f %f %f rg %f %f %f RG"](r,g,b,r,g,b) - if g_color ~= v then - g_colortype = "rgb" - g_color = v - n = n + 1 ; t[n] = v + end + if otyp == "stroke" then + local miterlimit = object.miterlimit + if g_miterlimit ~= miterlimit then + g_miterlimit = miterlimit + n = n + 1 ; t[n] = formatters["%f M"](miterlimit) end - elseif colortype == "cmyk" then - local c, m, y, k = color[1], color[2], color[3], color[4] - local v = formatters["%f %f %f %f k %f %f %f %f K"](c,m,y,k,c,m,y,k) - if g_color ~= v then - g_colortype = "cmyk" - g_color = v - n = n + 1 ; t[n] = v + local linejoin = object.linejoin + if g_linejoin ~= linejoin then + g_linejoin = linejoin + n = n + 1 ; t[n] = formatters["%d j"](linejoin) end - elseif colortype == "hsb" then - local r, g, b = hsv_to_rgb(color[1],color[2],color[3]) - local v = formatters["%f %f %f rg %f %f %f RG"](r,g,b,r,g,b) - if g_color ~= v then - g_colortype = "rgb" - g_color = v - n = n + 1 ; t[n] = v + local linecap = object.linecap + if g_linecap ~= linecap then + g_linecap = linecap + n = n + 1 ; t[n] = formatters["%d J"](linecap) end - end - end - if otype == "stroke" then - local miterlimit = object.miterlimit - if g_miterlimit ~= miterlimit then - g_miterlimit = miterlimit - n = n + 1 ; t[n] = formatters["%f M"](miterlimit) - end - local linejoin = object.linejoin - if g_linejoin ~= linejoin then - g_linejoin = linejoin - n = n + 1 ; t[n] = formatters["%d j"](linejoin) - end - local linecap = object.linecap - if g_linecap ~= linecap then - g_linecap = linecap - n = n + 1 ; t[n] = formatters["%d J"](linecap) - end - local linewidth = object.linewidth - if g_linewidth ~= linewidth then - g_linewidth = linewidth - n = n + 1 ; t[n] = formatters["%f w"](linewidth) - end - local dashpattern = object.dashpattern - local dashoffset = object.dashoffset - if g_dashpattern ~= dashpattern or g_dashoffset ~= dashoffset then - g_dashpattern = dashpattern - g_dashoffset = dashoffset - local l = #dashpattern - if l == 0 then - n = n + 1 ; t[n] = "[] 0 d" - else - n = n + 1 ; t[n] = formatters["[% t] %d d"](dashpattern,dashoffset) + local linewidth = object.linewidth + if g_linewidth ~= linewidth then + g_linewidth = linewidth + n = n + 1 ; t[n] = formatters["%f w"](linewidth) + end + local dashpattern = object.dashpattern + local dashoffset = object.dashoffset + if g_dashpattern ~= dashpattern or g_dashoffset ~= dashoffset then + g_dashpattern = dashpattern + g_dashoffset = dashoffset + local l = #dashpattern + if l == 0 then + n = n + 1 ; t[n] = "[] 0 d" + else + n = n + 1 ; t[n] = formatters["[% t] %d d"](dashpattern,dashoffset) + end end end - end - if path then - for i=1,#path do - local segment = path[i] - local styp = segment[1] - if styp == "moveto" then - n = n + 1 ; t[n] = formatters["%f %f m"](segment[2],segment[3]) - elseif styp == "lineto" then - n = n + 1 ; t[n] = formatters["%f %f l"](segment[2],segment[3]) - elseif styp == "curveto" then - n = n + 1 ; t[n] = formatters["%f %f %f %f %f %f c"](segment[2],segment[3],segment[4],segment[5],segment[6],segment[7]) - elseif styp == "closepath" then - n = n + 1 ; t[n] = "h" - else - report("unknown path segment type %a",styp) + if path then + for i=1,#path do + local segment = path[i] + local styp = segment[1] + if styp == "moveto" then + n = n + 1 ; t[n] = formatters["%f %f m"](segment[2],segment[3]) + elseif styp == "lineto" then + n = n + 1 ; t[n] = formatters["%f %f l"](segment[2],segment[3]) + elseif styp == "curveto" then + n = n + 1 ; t[n] = formatters["%f %f %f %f %f %f c"](segment[2],segment[3],segment[4],segment[5],segment[6],segment[7]) + elseif styp == "closepath" then + n = n + 1 ; t[n] = "h" + else + report("unknown path segment type %a",styp) + end end end - end - if otyp == "stroke" then - n = n + 1 ; t[n] = "S" - elseif otyp == "fill" then - n = n + 1 ; t[n] = "f" - elseif otyp == "eofill" then - n = n + 1 ; t[n] = "f*" - elseif otyp == "clip" then - n = n + 1 ; t[n] = "W n" - elseif otyp == "eoclip" then - n = n + 1 ; t[n] = "W* n" - elseif otyp == "show" then - if showfont then - if n > 0 then - flushpage(concat(t,"\n")) - n = 0 ; t = { } + if otyp == "stroke" then + n = n + 1 ; t[n] = "S" + elseif otyp == "fill" then + n = n + 1 ; t[n] = "f" + elseif otyp == "eofill" then + n = n + 1 ; t[n] = "f*" + elseif otyp == "clip" then + n = n + 1 ; t[n] = "W n" + elseif otyp == "eoclip" then + n = n + 1 ; t[n] = "W* n" + elseif otyp == "show" then + if showfont then + if n > 0 then + flushpage(concat(t,"\n")) + n = 0 ; t = { } + end + showfont(object) end - showfont(object) + else + -- nothing to do end - else - -- nothing to do end end n = n + 1 ; t[n] = "Q" @@ -6198,7 +6273,7 @@ function operators.kshow() local entry = execstack[execstackptr] if entry[1] == '.exit' and entry[4] == true then pop_execstack() - return true; + return true end do_show(fontdict,w) v = w @@ -6332,6 +6407,7 @@ initializers[#initializers+1] = function(reset) ['cleartomark'] = { 'operator', 'unlimited', 'executable', operators.cleartomark, 'cleartomark' }, ['clip'] = { 'operator', 'unlimited', 'executable', operators.clip, 'clip' }, ['clippath'] = { 'operator', 'unlimited', 'executable', operators.clippath, 'clippath' }, + ['pathbbox'] = { 'operator', 'unlimited', 'executable', operators.pathbbox, 'pathbbox' }, ['closefile'] = { 'operator', 'unlimited', 'executable', operators.closefile, 'closefile' }, ['closepath'] = { 'operator', 'unlimited', 'executable', operators.closepath, 'closepath' }, ['concat'] = { 'operator', 'unlimited', 'executable', operators.concat, 'concat' }, @@ -6535,7 +6611,7 @@ initializers[#initializers+1] = function(reset) size = 1, maxsize = 40, dict = { - newerror = { 'boolean', 'unlimited', 'literal', false } + newerror = p_false }, } -- @@ -6638,7 +6714,7 @@ do local sign = S('+-')^-1 local digit = R('09') local period = P('.') - local letters = R('!~') - S('[]<>{}()%') + local letters = R('!~') - S('[]<>{}()%/') local hexdigit = R('09','af','AF') local radixdigit = R('09','az','AZ') @@ -6732,7 +6808,12 @@ do object[5] = position end if not value then - return false -- handle_error('syntaxerror') + if tokentype == "eof" then + -- pop_execstack() + return true + else + return false -- handle_error('syntaxerror') + end elseif tokentype == 'integer' or tokentype == 'real' then if push { tokentype, 'unlimited', 'literal', value } then return true @@ -6759,6 +6840,8 @@ do end elseif tokentype == 'bounding' then specials.boundingbox = value + else + -- comment end end return position >= length @@ -6833,7 +6916,7 @@ do return false end local otyp = object[1] - if DEBUG then + if false then -- debugging if otyp == 'operator' then report_exec("%s %s %s",otyp,object[3],object[5]) elseif otyp == 'dict' then diff --git a/tex/context/modules/mkiv/m-escrito.mkiv b/tex/context/modules/mkiv/m-escrito.mkiv index 704108cee..94251d843 100644 --- a/tex/context/modules/mkiv/m-escrito.mkiv +++ b/tex/context/modules/mkiv/m-escrito.mkiv @@ -14,12 +14,16 @@ \registerctxluafile{m-escrito}{} %D This is a fun project and not meant for production (yet). It's a follow up on a -%D project by Taco presented at a Bacho\TeX\ meeting years ago. I probably messed up +%D project by Taco presented at a Bacho\TEX\ meeting years ago. I probably messed up %D the code so much that some things don't work but then, fonts are not really %D supported well anyway. However for simple \POSTSCRIPT\ things work out ok. %D %D I (Hans) will occasionally have a look at the code. Who knows what our trips to -%D \TeX\ meetings lead to. +%D \TEX\ meetings lead to. + +%D Ecause the (already split) barcode modules don't need this I'll postpone the +%D splitting of this one till later. It's more fun project anyway and there are +%D buglets as well as no support for tricky features. \unprotect @@ -78,15 +82,6 @@ \startluacode - local literal = nodes.pool.register(node.new("whatsit",nodes.whatsitcodes.pdfliteral)) - literal.mode = 0 - - local function newliteral(result) - local l = nodes.copy(literal) - l.data = result - return l - end - local p = escrito.devices.pdf function p.startpage(llx,lly,urx,ury) @@ -98,7 +93,7 @@ end function p.flushpage(result) - context.(newliteral(result)) + context.pdfliteral(result) -- LMTX save (test suite reported issue) end -- todo diff --git a/tex/context/modules/mkiv/m-gnuplot.mkxl b/tex/context/modules/mkiv/m-gnuplot.mkxl deleted file mode 100644 index e844edd1b..000000000 --- a/tex/context/modules/mkiv/m-gnuplot.mkxl +++ /dev/null @@ -1,97 +0,0 @@ -%D \module -%D [ file=m-gnuplot, -%D version=2020.02.10, -%D title=\CONTEXT\ Extra Modules, -%D subtitle=Gnuplot, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -%D This is a variant on the \GNUPLOT\ terminal code. At some point (when there is a -%D reason) I will make a proper environment that can be used for embedded code. - -\permanent\protected\def\includegnuplotsvgfile[#1]% - {\hbox\bgroup - \ctxlua{metapost.startsvghashing()}% - \includesvgfile[#1]% - \ctxlua{metapost.stopsvghashing()}% - \egroup} - -\startluacode - -local modificationtime = lfs.modification -local longtostring = string.longtostring -local formatters = string.formatters -local expandfilename = dir.expandname -local isfile = lfs.isfile - -local runner = sandbox.registerrunner { - name = "gnuplot to svg", - program = "gnuplot", - template = longtostring [[ - -e "set output '%newname%'; set terminal svg" - "%oldname%" - ]], - checkers = { - oldname = "readable", - newname = "writable", - }, -} - -figures.programs.gnuplot = { - runner = runner, -} - -local function remap(specification) - local oldname = specification.fullname - if oldname then - local newname = file.replacesuffix(oldname,"svg") - local oldtime = modificationtime(oldname) or 0 - local newtime = modificationtime(newname) or 0 - if newtime == 0 or oldtime > newtime then - runner { - newname = expandfilename(newname), - oldname = expandfilename(oldname), - } - end - if isfile(newname) then - local only = file.nameonly(newname) - local name = formatters["svg-%s-inclusion"](only) - local code = formatters["\\includegnuplotsvgfile[%s]\\resetbuffer[%s]"](newname,name) - buffers.assign(name,code) - specification.format = "buffer" - specification.fullname = name - end - end - return specification -end - -figures.remappers.gp = { svg = remap } - -\stopluacode - -\continueifinputfile{m-gnuplot.mkxl} - -\startluacode -io.savedata("m-gnuplot-demo.gp", [[ -set format xy "$%g$" - -set title 'This is a plot of $y=\\sin(x)$' -set xlabel 'This is the $x$ axis' -set ylabel 'This is the $y$ axis' - -plot [0:6.28] [0:1] sin(x) -]]) -\stopluacode - -\starttext - - \externalfigure[m-gnuplot-demo.gp][conversion=svg,width=4cm] - - \externalfigure[m-gnuplot-demo.gp][conversion=svg,width=8cm] - -\stoptext diff --git a/tex/context/modules/mkiv/m-pictex.mkiv b/tex/context/modules/mkiv/m-pictex.mkiv index 73aad3f57..8843ac4ce 100644 --- a/tex/context/modules/mkiv/m-pictex.mkiv +++ b/tex/context/modules/mkiv/m-pictex.mkiv @@ -11,7 +11,16 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -%D Just in case someone still uses \PICTEX: +%D Just in case someone still uses \PICTEX\ we provide a loader. However, because it +%D expect some plain helpers to be present (like \type {\newhelp} and because it +%D defined some already used dimensions, we'd either need to adapt or add some +%D push|/|pop here. Because \CONTEXT\ users have \METAPOST\ support we no longer +%D support \PICTEX\ in \LMTX. + +\ifcase\contextlmtxmode \else + \writestatus{modules}{the PicTeX graphic system is not supported in LMTX} + \expandafter \endinput +\fi \ifdefined\beginpicture \else diff --git a/tex/context/modules/mkiv/m-pstricks.mkiv b/tex/context/modules/mkiv/m-pstricks.mkiv index 421607aaf..c3c6f769b 100644 --- a/tex/context/modules/mkiv/m-pstricks.mkiv +++ b/tex/context/modules/mkiv/m-pstricks.mkiv @@ -11,6 +11,17 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +%D We don't support \PSTRICKS\ in \LMTX. In \MKIV\ it was already doen by calling +%D \PDFTEX\ and going the \POSTSCRIPT\ route. We could actually support it sort of +%D integrated if it were just graphics but I suppose fonts will make it a mess not +%D worth the trouble. One can always use \MKII\ directly if needed to make graphics +%D that get included as \PDF. + +\ifcase\contextlmtxmode \else + \writestatus{modules}{the PStricks graphic system is not supported in LMTX} + \expandafter \endinput +\fi + \registerctxluafile{m-pstricks}{} \unprotect diff --git a/tex/context/modules/mkiv/m-tikz.mkiv b/tex/context/modules/mkiv/m-tikz.mkiv index ed9cb914f..536ab554a 100644 --- a/tex/context/modules/mkiv/m-tikz.mkiv +++ b/tex/context/modules/mkiv/m-tikz.mkiv @@ -1,4 +1,19 @@ -%D A fixed variant if the t-tikz module distributed with tikz. +%D \module +%D [ file=m-tikz, +%D version=2021.07.12, +%D title=\CONTEXT\ Extra Modules, +%D subtitle=TIKZ support, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D A fixed variant of the t-tikz module distributed with tikz. For +%D practical reasons per 2021 we split the module for \MKIV\ and +%D \LMTX. (Maybe some day I'll optimize TIKZ a bit.) \ifdefined\pdflastxpos \else \unprotect @@ -7,70 +22,35 @@ \protect \fi +\pushcatcodetable -\pushoverloadmode + \setcatcodetable\texcatcodes - \pushcatcodetable + \catcode`\@=11 + \catcode`\|=12 + \catcode`\!=12 - \setcatcodetable\texcatcodes + \input t-pgf.tex + \input t-pgffor.tex + \input tikz.code.tex - \catcode`\@=11 - \catcode`\|=12 - \catcode`\!=12 - - \input t-pgf.tex - \input t-pgffor.tex - \input tikz.code.tex - - \popcatcodetable - -\popoverloadmode +\popcatcodetable \permanent\protected\def\tikzerrormessage#1#2#3% {\writestatus{#1}{#2}} -\ifcase\contextlmtxmode - - \let\starttikzsettings\relax - \let\stoptikzsettings \relax - - \protected\def\starttikzpicture - {% \dontleavehmode - \begingroup - \ifdefined\PackageError\else \let\PackageError\tikzerrormessage \fi - \tikzpicture} - - \protected\def\stoptikzpicture - {\endtikzpicture - \endgroup} +\let\starttikzsettings\relax +\let\stoptikzsettings \relax -\else +\protected\def\starttikzpicture + {% \dontleavehmode + \begingroup + \ifdefined\PackageError\else \let\PackageError\tikzerrormessage \fi + \tikzpicture} - % for now: - - \overloadmode\zerocount - - % but this will be mandate for settings outside the start .. stop - - \permanent\protected\def\starttikzsettings - {\pushoverloadmode} - - \permanent\protected\def\stoptikzsettings - {\popoverloadmode} - - \permanent\protected\def\starttikzpicture - {\dontleavehmode - \hcontainer\bgroup - % \pushoverloadmode - \ifdefined\PackageError\else \let\PackageError\tikzerrormessage \fi - \tikzpicture} - - \permanent\protected\def\stoptikzpicture - {\endtikzpicture - % \popoverloadmode - \egroup} - -\fi +\protected\def\stoptikzpicture + {\endtikzpicture + \endgroup} % \input t-pgf.tex diff --git a/tex/context/modules/mkiv/m-zint.mkiv b/tex/context/modules/mkiv/m-zint.mkiv index 4957c8461..7fe9f761c 100644 --- a/tex/context/modules/mkiv/m-zint.mkiv +++ b/tex/context/modules/mkiv/m-zint.mkiv @@ -11,16 +11,14 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -%D Using \type {zint} seems to be the easiest way to generate -%D (PDF417) barcodes so therefore we now have this module. There -%D are proper (also windows) binaries at: +%D Using \type {zint} seems to be the easiest way to generate (PDF417) barcodes so +%D therefore we now have this module. There are proper (also windows) binaries at: %D %D \starttyping %D http://www.zint.org.uk %D \stoptyping %D -%D There is a bit more code than needed as we want to be able to -%D feed names. +%D There is a bit more code than needed as we want to be able to feed names. \startluacode diff --git a/tex/context/modules/mkxl/m-barcodes.mkxl b/tex/context/modules/mkxl/m-barcodes.mkxl new file mode 100644 index 000000000..43540e457 --- /dev/null +++ b/tex/context/modules/mkxl/m-barcodes.mkxl @@ -0,0 +1,40 @@ +%D \module +%D [ file=m-barcodes, +%D version=2010.03.14, +%D title=\CONTEXT\ Extra Modules, +%D subtitle=Barcodes, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{barcodes}{the 'zint' module is a better choice} + +\usemodule[zint] + +\unprotect + +\pushoverloadmode + +\let\normalbarcode\barcode + +\permanent\protected\def\barcode[#1]% + {\normalbarcode[\c!text=\dummyparameter{code},\c!alternative=\dummyparameter{type},#1]} + +\popoverloadmode + +\protect + +\continueifinputfile{m-barcodes.mkxl} + +\starttext + \startTEXpage + \barcode[type=isbn,text=978-9490688011] + \blank + \barcode[type=isbn,text=9780500518724] + \stopTEXpage +\stoptext + diff --git a/tex/context/modules/mkxl/m-gnuplot.mkxl b/tex/context/modules/mkxl/m-gnuplot.mkxl new file mode 100644 index 000000000..e844edd1b --- /dev/null +++ b/tex/context/modules/mkxl/m-gnuplot.mkxl @@ -0,0 +1,97 @@ +%D \module +%D [ file=m-gnuplot, +%D version=2020.02.10, +%D title=\CONTEXT\ Extra Modules, +%D subtitle=Gnuplot, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D This is a variant on the \GNUPLOT\ terminal code. At some point (when there is a +%D reason) I will make a proper environment that can be used for embedded code. + +\permanent\protected\def\includegnuplotsvgfile[#1]% + {\hbox\bgroup + \ctxlua{metapost.startsvghashing()}% + \includesvgfile[#1]% + \ctxlua{metapost.stopsvghashing()}% + \egroup} + +\startluacode + +local modificationtime = lfs.modification +local longtostring = string.longtostring +local formatters = string.formatters +local expandfilename = dir.expandname +local isfile = lfs.isfile + +local runner = sandbox.registerrunner { + name = "gnuplot to svg", + program = "gnuplot", + template = longtostring [[ + -e "set output '%newname%'; set terminal svg" + "%oldname%" + ]], + checkers = { + oldname = "readable", + newname = "writable", + }, +} + +figures.programs.gnuplot = { + runner = runner, +} + +local function remap(specification) + local oldname = specification.fullname + if oldname then + local newname = file.replacesuffix(oldname,"svg") + local oldtime = modificationtime(oldname) or 0 + local newtime = modificationtime(newname) or 0 + if newtime == 0 or oldtime > newtime then + runner { + newname = expandfilename(newname), + oldname = expandfilename(oldname), + } + end + if isfile(newname) then + local only = file.nameonly(newname) + local name = formatters["svg-%s-inclusion"](only) + local code = formatters["\\includegnuplotsvgfile[%s]\\resetbuffer[%s]"](newname,name) + buffers.assign(name,code) + specification.format = "buffer" + specification.fullname = name + end + end + return specification +end + +figures.remappers.gp = { svg = remap } + +\stopluacode + +\continueifinputfile{m-gnuplot.mkxl} + +\startluacode +io.savedata("m-gnuplot-demo.gp", [[ +set format xy "$%g$" + +set title 'This is a plot of $y=\\sin(x)$' +set xlabel 'This is the $x$ axis' +set ylabel 'This is the $y$ axis' + +plot [0:6.28] [0:1] sin(x) +]]) +\stopluacode + +\starttext + + \externalfigure[m-gnuplot-demo.gp][conversion=svg,width=4cm] + + \externalfigure[m-gnuplot-demo.gp][conversion=svg,width=8cm] + +\stoptext diff --git a/tex/context/modules/mkxl/m-tikz.mkxl b/tex/context/modules/mkxl/m-tikz.mkxl new file mode 100644 index 000000000..5b1f6e76c --- /dev/null +++ b/tex/context/modules/mkxl/m-tikz.mkxl @@ -0,0 +1,112 @@ +%D \module +%D [ file=m-tikz, +%D version=2021.07.12, +%D title=\CONTEXT\ Extra Modules, +%D subtitle=TIKZ support, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +%D A fixed variant of the t-tikz module distributed with tikz. For +%D practical reasons per 2021 we split the module for \MKIV\ and +%D \LMTX. (Maybe some day I'll optimize TIKZ a bit.) + +\ifdefined\pdflastxpos \else + \unprotect + \frozen\overloaded\protected\def\pdflastxpos{\numexpr\clf_lastxpos\relax} + \frozen\overloaded\protected\def\pdflastypos{\numexpr\clf_lastypos\relax} + \protect +\fi + + +\pushoverloadmode + + \pushcatcodetable + + \setcatcodetable\texcatcodes + + \catcode`\@=11 + \catcode`\|=12 + \catcode`\!=12 + + \input t-pgf.tex + \input t-pgffor.tex + \input tikz.code.tex + + \popcatcodetable + +\popoverloadmode + +\permanent\protected\def\tikzerrormessage#1#2#3% + {\writestatus{#1}{#2}} + +% For now we need this but we need to educate the user to wrap settings +% in the wrappers. So some day the next line will go. I need to check what +% commands are possible outside a picture. + +\overloadmode\zerocount + +\permanent\protected\def\starttikzsettings + {\pushoverloadmode} + +\permanent\protected\def\stoptikzsettings + {\popoverloadmode} + +\permanent\protected\def\starttikzpicture + {\dontleavehmode + \hcontainer\bgroup + % \pushoverloadmode + \ifdefined\PackageError\else \let\PackageError\tikzerrormessage \fi + \tikzpicture} + +\permanent\protected\def\stoptikzpicture + {\endtikzpicture + % \popoverloadmode + \egroup} + +% \input t-pgf.tex + +\ifx\pgfdefined\undefined + + \let\pgfdefined\relax + + % \input t-pgfcor.tex + + \ifx\pgfcoredefined\undefined + + \let\pgfcoredefined=\relax + + \input t-pgfsys.tex + + \edef\pgfcoreatcode {\the\catcode`\@} + \edef\pgfcorebarcode {\the\catcode`\|} + \edef\pgfcoreexclaimcode{\the\catcode`\!} + + \catcode`\@=11 + \catcode`\|=12 + \catcode`\!=12 + + \input pgfcore.code.tex + + \catcode`\@=\pgfcoreatcode + \catcode`\|=\pgfcorebarcode + \catcode`\!=\pgfcoreexclaimcode + + \let\startpgfpicture \pgfpicture \let\stoppgfpicture \endpgfpicture + \let\startpgfscope \pgfscope \let\stoppgfscope \endpgfscope + \let\startpgflowlevelscope \pgflowlevelscope \let\stoppgflowlevelscope \endpgflowlevelscope + \let\startpgfinterruptpath \pgfinterruptpath \let\stoppgfinterruptpath \endpgfinterruptpath + \let\startpgfinterruptpicture \pgfinterruptpicture \let\stoppgfinterruptpicture \endpgfinterruptpicture + \let\startpgfinterruptboundingbox\pgfinterruptboundinbox \let\stoppgfinterruptboudingbox\endpgfinterruptboundingbox + + \fi + + \usepgfmodule[shapes,plot] + +\fi + +\stopmodule diff --git a/tex/context/sample/common/spider.eps b/tex/context/sample/common/spider.eps index ecaafb847..b9745ee22 100644 --- a/tex/context/sample/common/spider.eps +++ b/tex/context/sample/common/spider.eps @@ -1,11 +1,11 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%BoundingBox: 250 352 362 440 +%%BoundingBox: 250 352 362 440 %%Creator: CorelDRAW! %%Title: SPIN016.EPS %%CreationDate: Thu Feb 16 13:27:54 1995 -%%DocumentFonts: -%%DocumentProcessColors: Magenta Yellow Black +%%DocumentFonts: +%%DocumentProcessColors: Magenta Yellow Black %%EndComments %%BeginProlog /AutoFlatness false def diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 4b3932b1e..85fbc6b48 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-07-10 21:47 +-- merge date : 2021-07-16 21:58 do -- begin closure to overcome local limits and interference -- cgit v1.2.3