diff options
Diffstat (limited to 'tex')
-rw-r--r-- | tex/context/base/attr-ini.mkiv | 5 | ||||
-rw-r--r-- | tex/context/base/char-def.lua | 1 | ||||
-rw-r--r-- | tex/context/base/cont-new.mkii | 2 | ||||
-rw-r--r-- | tex/context/base/cont-new.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/context-version.pdf | bin | 4089 -> 4090 bytes | |||
-rw-r--r-- | tex/context/base/context-version.png | bin | 106228 -> 105346 bytes | |||
-rw-r--r-- | tex/context/base/context.mkii | 2 | ||||
-rw-r--r-- | tex/context/base/context.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/math-map.lua | 9 | ||||
-rw-r--r-- | tex/context/base/mult-def.lua | 56 | ||||
-rw-r--r-- | tex/context/base/mult-low.lua | 129 | ||||
-rw-r--r-- | tex/context/base/mult-mps.lua | 12 | ||||
-rw-r--r-- | tex/context/base/mult-prm.lua | 6 | ||||
-rw-r--r-- | tex/context/base/mult-prm.mkiv | 7 | ||||
-rw-r--r-- | tex/context/base/node-res.lua | 2 | ||||
-rw-r--r-- | tex/context/base/status-files.pdf | bin | 23942 -> 23926 bytes | |||
-rw-r--r-- | tex/context/base/status-lua.pdf | bin | 162348 -> 162348 bytes | |||
-rw-r--r-- | tex/context/base/syst-aux.mkiv | 394 | ||||
-rw-r--r-- | tex/context/base/syst-ini.mkiv | 163 | ||||
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 2 |
20 files changed, 443 insertions, 351 deletions
diff --git a/tex/context/base/attr-ini.mkiv b/tex/context/base/attr-ini.mkiv index 578d02c27..38038e743 100644 --- a/tex/context/base/attr-ini.mkiv +++ b/tex/context/base/attr-ini.mkiv @@ -43,9 +43,8 @@ \def\dodefineattribute[#1][#2]% alternatively we can let lua do the housekeeping {\expandafter\newattribute\csname @attr@#1\endcsname \expandafter\newconstant \csname :attr:#1\endcsname - \csname :attr:#1\endcsname\lastallocatedattribute - \ctxcommand{defineattribute("#1",\number\lastallocatedattribute)}% - %\writestatus\m!system{defining attribute #1 with number \number\lastallocatedattribute}% + \csname :attr:#1\endcsname\last_allocated_attribute + \ctxcommand{defineattribute("#1",\number\last_allocated_attribute)}% \doifnotinset\s!global{#2}{\appendetoks\csname @attr@#1\endcsname\attributeunsetvalue\to\attributesresetlist}% \doifinset \s!public{#2}{\expandafter\let\csname#1attribute\expandafter\endcsname\csname :attr:#1\endcsname}} diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua index 7d16f193e..28d46ee93 100644 --- a/tex/context/base/char-def.lua +++ b/tex/context/base/char-def.lua @@ -186695,3 +186695,4 @@ characters.data={ unicodeslot=0xE01EF, }, } + diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index abd0357f8..9804622e2 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.09.14 12:21} +\newcontextversion{2011.09.15 09:08} %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/cont-new.mkiv b/tex/context/base/cont-new.mkiv index d80c38ea8..7495bc69e 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2011.09.14 12:21} +\newcontextversion{2011.09.15 09:08} %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/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex f28a6957c..569c409bf 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png Binary files differindex b421b99a0..1c500d943 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index ce28c02a6..f01740290 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.09.14 12:21} +\edef\contextversion{2011.09.15 09:08} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index f52f46334..6ba54096d 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2011.09.14 12:21} +\edef\contextversion{2011.09.15 09:08} %D For those who want to use this: diff --git a/tex/context/base/math-map.lua b/tex/context/base/math-map.lua index b21bbc027..cd1673611 100644 --- a/tex/context/base/math-map.lua +++ b/tex/context/base/math-map.lua @@ -19,6 +19,15 @@ if not modules then modules = { } end modules ['math-map'] = { -- todo: alphabets namespace -- maybe: script/scriptscript dynamic, +-- to be looked into once the fonts are ready (will become font +-- goodie): +-- +-- (U+2202,U+1D715) : upright +-- (U+2202,U+1D715) : italic +-- (U+2202,U+1D715) : upright +-- +-- plus add them to the regular vectors below so that they honor \it etc + local type, next = type, next local floor, div = math.floor, math.div local merged = table.merged diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua index 7e0ed0bf1..1144dba22 100644 --- a/tex/context/base/mult-def.lua +++ b/tex/context/base/mult-def.lua @@ -7,62 +7,6 @@ if not modules then modules = { } end modules ['mult-def'] = { } return { - ["helpers"]={ -- for syntax highlighters, only the ones that are for users (boring to collect them) - -- - "doif", "doifnot", "doifelse", - "doifinset", "doifnotinset", "doifinsetelse", - "doifnextcharelse", "doifnextoptionalelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", - "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", - "doifelsevalue", "doifvalue", "doifnotvalue", - "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", - "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", - "doifdimensionelse", - -- - "tracingall", "tracingnone", "loggingall", - -- - "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", - -- - "endgraf", "empty", "null", "space", "obeyspaces", "obeylines", - -- - "executeifdefined", - -- - "dontleavehmode", - -- - "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "measure", - -- - "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", - "resetvalue", "undefinevalue", "ignorevalue", - "setuvalue", "setuevalue", "setugvalue", "setuxvalue", - "globallet", "glet", - "getparameters", "geteparameters", - -- - "processcommalist", "processcommacommand", "quitcommalist", - "processaction", "processallactions", - -- - "startsetups", "stopsetups", - "startxmlsetups", "stopxmlsetups", - "starttexdefinition", "stoptexdefinition", - -- - "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", - -- - "firstofoneargument", - "firstoftwoarguments", "secondoftwoarguments", - "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", - "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", - "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", - "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", - -- - "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", - "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", - -- - "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", - -- - "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", - -- - "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", - "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", - -- - }, ["commands"]={ ["CAPPED"]={ ["cs"]="KAP", diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua new file mode 100644 index 000000000..2084b9ad7 --- /dev/null +++ b/tex/context/base/mult-low.lua @@ -0,0 +1,129 @@ +if not modules then modules = { } end modules ['mult-low'] = { + version = 1.001, + comment = "companion to mult-ini.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +-- for syntax highlighters, only the ones that are for users (boring to collect them) + +return { + ["constants"] = { + -- + "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", + "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", + "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", + "zeropoint", "onepoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", + "zeroskip", + "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", + -- + "endoflinetoken", "outputnewlinechar", + -- + "emptytoks", "empty", "undefined", + -- + "voidbox", "emptybox", "emptyvbox", "emptyhbox", + -- + "bigskipamount", "medskipamount", "smallskipamount", + -- + "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", + "luatexengine", "pdftexengine", "xetexengine", "unknownengine", + "etexversion", "pdftexversion", "xetexversion", "xetexrevision", + -- + "activecatcode", + -- + "bgroup", "egroup", + "endline", + -- + "attributeunsetvalue", + -- + "uprotationangle", "rightrotatioangle", "downrotatioangle", "leftrotatioangle", + -- + }, + ["helpers"] = { + -- + "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", + "newlanguage", "newfamily", "newfam", "newhelp", -- not used + -- + "htdp", + "unvoidbox", + -- + "scratchcounter", "globalscratchcounter", + "scratchdimen", "globalscratchdimen", + "scratchskip", "globalscratchskip", + "scratchmuskip", "globalscratchmuskip", + "scratchtoks", "globalscratchtoks", + "scratchbox", "globalscratchbox", + -- + "scratchwidth", "scratchheight", "scratchdepth", + -- + "scratchcounterone", "scratchcountertwo", "scratchcounterthree", + "scratchdimenone", "scratchdimentwo", "scratchdimenthree", + "scratchskipone", "scratchskiptwo", "scratchskipthree", + "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", + "scratchtoksone", "scratchtokstwo", "scratchtoksthree", + "scratchboxone", "scratchboxtwo", "scratchboxthree", + -- + "doif", "doifnot", "doifelse", + "doifinset", "doifnotinset", "doifinsetelse", + "doifnextcharelse", "doifnextoptionalelse", "doifnextparenthesiselse", "doiffastoptionalcheckelse", + "doifundefinedelse", "doifdefinedelse", "doifundefined", "doifdefined", + "doifelsevalue", "doifvalue", "doifnotvalue", + "doifnothing", "doifsomething", "doifelsenothing", "doifsomethingelse", + "doifvaluenothing", "doifvaluesomething", "doifelsevaluenothing", + "doifdimensionelse", "doifnumberelse", + "doifcommonelse", "doifcommon", "doifnotcommon", + "doifinstring", "doifnotinstring", "doifinstringelse", + -- + "tracingall", "tracingnone", "loggingall", + -- + "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", + -- + "endgraf", "empty", "null", "space", "obeyspaces", "obeylines", "normalspace", + -- + "executeifdefined", + -- + "dontleavehmode", + -- + "wait", "writestatus", "define", "redefine", + -- + "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "measure", + -- + "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", + "resetvalue", "undefinevalue", "ignorevalue", + "setuvalue", "setuevalue", "setugvalue", "setuxvalue", + "globallet", "glet", + "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", + -- + "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", + "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", + -- + "startsetups", "stopsetups", + "startxmlsetups", "stopxmlsetups", + "starttexdefinition", "stoptexdefinition", + "starttexcode", "stoptexcode", + -- + "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "protect", "unprotect", + -- + "firstofoneargument", + "firstoftwoarguments", "secondoftwoarguments", + "firstofthreearguments", "secondofthreearguments", "thirdofthreearguments", + "firstoffourarguments", "secondoffourarguments", "thirdoffourarguments", "fourthoffourarguments", + "firstoffivearguments", "secondoffivearguments", "thirdoffivearguments", "fourthoffivearguments", "fifthoffivearguments", + "firstofsixarguments", "secondofsixarguments", "thirdofsixarguments", "fourthofsixarguments", "fifthofsixarguments", "sixthofsixarguments", + -- + "gobbleoneargument", "gobbletwoarguments", "gobblethreearguments", "gobblefourarguments", "gobblefivearguments", "gobblesixarguments", "gobblesevenarguments", "gobbleeightarguments", "gobbleninearguments", "gobbletenarguments", + "gobbleoneoptional", "gobbletwooptionals", "gobblethreeoptionals", "gobblefouroptionals", "gobblefiveoptionals", + -- + "dorecurse", "doloop", "exitloop", "dostepwiserecurse", "recurselevel", "recursedepth", + -- + "newconstant", "setnewconstant", "newconditional", "settrue", "setfalse", + -- + "dosingleempty", "dodoubleempty", "dotripleempty", "doquadrupleempty", "doquintupleempty", "dosixtupleempty", "doseventupleempty", + "dosinglegroupempty", "dodoublegroupempty", "dotriplegroupempty", "doquadruplegroupempty", "doquintuplegroupempty", + -- + "nopdfcompression", "maximumpdfcompression", "normalpdfcompression", + -- + "modulonumber", "dividenumber", + } +} diff --git a/tex/context/base/mult-mps.lua b/tex/context/base/mult-mps.lua index f382433de..d596fd518 100644 --- a/tex/context/base/mult-mps.lua +++ b/tex/context/base/mult-mps.lua @@ -20,6 +20,7 @@ return { "addto", "clip", "input", "interim", "let", "newinternal", "save", "setbounds", "shipout", "show", "showdependencies", "showtoken", "showvariable", "special", + "rgbcolor", "cmykcolor", "graycolor", "begingroup", "endgroup", "of", "curl", "tension", "and", "controls", "reflectedabout", "rotatedaround", "interpath", "on", "off", "beginfig", "endfig", "def", "vardef", "enddef", "expr", "suffix", "text", "primary", "secondary", @@ -62,23 +63,30 @@ return { "define_whole_blacker_pixels", "define_whole_pixels", "define_whole_vertical_blacker_pixels", "define_whole_vertical_pixels", "endchar", "extra_beginchar", - "extra_endchar", "extra_setup", "font_coding_scheme", + "extra_endchar", "extra_setup", "font_coding_scheme", "clearxy", "font_extra_space", }, metafun = { + "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", + "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", + "invsin", "invcos", "acosh", "asinh", "sinh", "cosh", + "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "halfcircle", "quartercircle", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", - "smoothed", "cornered", "superellipsed", "randomized", "squeezed", + "smoothed", "cornered", "superellipsed", "randomized", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", + "crossed", "laddered", "randomshifted", "interpolated", "paralleled", "cutends", + "rightarrow", "leftarrow", "centerarrow", "boundingbox", "innerboundingbox", "outerboundingbox", "bottomboundary", "leftboundary", "topboundary", "rightboundary", "xsized", "ysized", "xysized", + "bbwidth", "bbheight", "cmyk", "transparent", "withshade", "spotcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", diff --git a/tex/context/base/mult-prm.lua b/tex/context/base/mult-prm.lua index 61ba38199..feeeb3332 100644 --- a/tex/context/base/mult-prm.lua +++ b/tex/context/base/mult-prm.lua @@ -153,7 +153,6 @@ return { "badness", "baselineskip", "batchmode", - "bodydir", "botmark", "botmarks", "box", @@ -256,6 +255,7 @@ return { "hfil", "hfill", "hfilneg", + "hoffset", "holdinginserts", "hrule", "hsize", @@ -316,7 +316,6 @@ return { "lineskiplimit", "localbrokenpenalty", "localinterlinepenalty", - "localleftbox", "localrightbox", "long", "lowercase", @@ -364,6 +363,7 @@ return { "nonscript", "nullfont", "number", + "numexpr", "odelcode", "odelimiter", "omathaccent", @@ -506,6 +506,7 @@ return { "rpcode", "savecatcodetable", "savinghyphcodes", + "savingvdiscards", "scantextokens", "scriptfont", "scriptscriptfont", @@ -584,6 +585,7 @@ return { "vfill", "vfilneg", "vfuzz", + "voffset", "vrule", "vsize", "vss", diff --git a/tex/context/base/mult-prm.mkiv b/tex/context/base/mult-prm.mkiv index ab0c91b8e..af9773b6a 100644 --- a/tex/context/base/mult-prm.mkiv +++ b/tex/context/base/mult-prm.mkiv @@ -10,7 +10,12 @@ tex.extraprimitives('luatex'), tex.extraprimitives('aleph'), tex.extraprimitives('omega'), - { "def", "catcode", "futurelet", "chardef", } + { + "def", "catcode", "futurelet", "chardef", + "voffset", "hoffset", "savingvdiscards", + "numexpr", "dimexpr", + "write", "dump", "skipdef," + } ) ) table.sort(primitives) diff --git a/tex/context/base/node-res.lua b/tex/context/base/node-res.lua index 9e17155f2..3247e153a 100644 --- a/tex/context/base/node-res.lua +++ b/tex/context/base/node-res.lua @@ -372,7 +372,7 @@ function pool.usertokens(id,tokens) end statistics.register("cleaned up reserved nodes", function() - return format("%s nodes, %s lists of %s", pool.cleanup(tex.count["lastallocatedbox"])) + return format("%s nodes, %s lists of %s", pool.cleanup(tex.count["last_allocated_box"])) end) -- \topofboxstack statistics.register("node memory usage", function() -- comes after cleanup ! diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex 2abcef338..6c93547e2 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf Binary files differindex e89a371d1..6c9d6852c 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index 796f3321e..4b26388b2 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -226,16 +226,16 @@ {\let\charactertoken=#1% = needed here \def\!!stringa{#2}% \def\!!stringb{#3}% - \futurelet\nexttoken\inspectnextcharacter} + \futurelet\nexttoken\inspect_next_character} -\def\inspectnextcharacter +\def\inspect_next_character {\ifx\nexttoken\blankspace - \@EA\reinspectnextcharacter + \@EA\reinspect_next_character \else - \@EA\inspectnextcharacterindeed + \@EA\inspect_next_character_indeed \fi} -\def\inspectnextcharacterindeed +\def\inspect_next_character_indeed {\ifx\nexttoken\charactertoken \@EA\!!stringa \else @@ -248,87 +248,87 @@ %D test in a run. Of course it also is more convenient to read a %D trace then. -\newif\ifnextblankspacetoken +\newif\if_next_blank_space_token -\let\nextoptionalcharactertoken=[ +\let\next_optional_character_token=[ \long\def\doifnextoptionalelse#1#2% - {\def\nextoptionalcommandyes{#1}% - \def\nextoptionalcommandnop{#2}% - \let\ifnextblankspacetoken\iffalse - \futurelet\nexttoken\inspectnextoptionalcharacter} + {\def\next_optional_command_yes{#1}% + \def\next_optional_command_nop{#2}% + \let\if_next_blank_space_token\iffalse + \futurelet\nexttoken\inspect_next_optional_character} -\def\inspectnextoptionalcharacter +\def\inspect_next_optional_character {\ifx\nexttoken\blankspace - \@EA\reinspectnextoptionalcharacter + \@EA\reinspect_next_optional_character \else - \@EA\inspectnextoptionalcharacterindeed + \@EA\inspect_next_optional_character_indeed \fi} -\def\inspectnextoptionalcharacterindeed - {\ifx\nexttoken\nextoptionalcharactertoken - \@EA\nextoptionalcommandyes +\def\inspect_next_optional_character_indeed + {\ifx\nexttoken\next_optional_character_token + \@EA\next_optional_command_yes \else - \@EA\nextoptionalcommandnop + \@EA\next_optional_command_nop \fi} -\let\nextbgroupcharactertoken\bgroup +\let\next_bgroup_character_token\bgroup \long\def\doifnextbgroupelse#1#2% - {\def\nextbgroupcommandyes{#1}% - \def\nextbgroupcommandnop{#2}% - \let\ifnextblankspacetoken\iffalse - \futurelet\nexttoken\inspectnextbgroupcharacter} + {\def\next_bgroup_command_yes{#1}% + \def\next_bgroup_command_nop{#2}% + \let\if_next_blank_space_token\iffalse + \futurelet\nexttoken\inspect_next_bgroup_character} -\def\inspectnextbgroupcharacter +\def\inspect_next_bgroup_character {\ifx\nexttoken\blankspace - \@EA\reinspectnextbgroupcharacter + \@EA\reinspect_next_bgroup_character \else - \@EA\inspectnextbgroupcharacterindeed + \@EA\inspect_next_bgroup_character_indeed \fi} -\def\inspectnextbgroupcharacterindeed - {\ifx\nexttoken\nextbgroupcharactertoken - \@EA\nextbgroupcommandyes +\def\inspect_next_bgroup_character_indeed + {\ifx\nexttoken\next_bgroup_character_token + \@EA\next_bgroup_command_yes \else - \@EA\nextbgroupcommandnop + \@EA\next_bgroup_command_nop \fi} -\let\nextparenthesischaractertoken( +\let\next_parenthesis_character_token( \long\def\doifnextparenthesiselse#1#2% - {\def\nextparenthesiscommandyes{#1}% - \def\nextparenthesiscommandnop{#2}% - \let\ifnextblankspacetoken\iffalse - \futurelet\nexttoken\inspectnextparenthesischaracter} + {\def\next_parenthesis_command_yes{#1}% + \def\next_parenthesis_command_nop{#2}% + \let\if_next_blank_space_token\iffalse + \futurelet\nexttoken\inspect_next_parenthesis_character} -\def\inspectnextparenthesischaracter +\def\inspect_next_parenthesis_character {\ifx\nexttoken\blankspace - \@EA\reinspectnextparenthesischaracter + \@EA\reinspect_next_parenthesis_character \else - \@EA\inspectnextparenthesischaracterindeed + \@EA\inspect_next_parenthesis_character_indeed \fi} -\def\inspectnextparenthesischaracterindeed - {\ifx\nexttoken\nextparenthesischaractertoken - \@EA\nextparenthesiscommandyes +\def\inspect_next_parenthesis_character_indeed + {\ifx\nexttoken\next_parenthesis_character_token + \@EA\next_parenthesis_command_yes \else - \@EA\nextparenthesiscommandnop + \@EA\next_parenthesis_command_nop \fi} %D The next one is handy in predictable situations: \long\def\doiffastoptionalcheckelse#1#2% - {\def\nextoptionalcommandyes{#1}% - \def\nextoptionalcommandnop{#2}% - \let\ifnextblankspacetoken\iffalse % not needed - \futurelet\nexttoken\dodoiffastoptionalcheckelse} + {\def\next_optional_command_yes{#1}% + \def\next_optional_command_nop{#2}% + \let\if_next_blank_space_token\iffalse % not needed + \futurelet\nexttoken\do_if_fast_optional_check_else} -\def\dodoiffastoptionalcheckelse - {\ifx\nexttoken\nextoptionalcharactertoken - \expandafter\nextoptionalcommandyes +\def\do_if_fast_optional_check_else + {\ifx\nexttoken\next_optional_character_token + \expandafter\next_optional_command_yes \else - \expandafter\nextoptionalcommandnop + \expandafter\next_optional_command_nop \fi} %D This macro uses some auxiliary macros. Although we were able @@ -350,14 +350,14 @@ \def\:{\let\blankspace= } \: -\def\:{\reinspectnextcharacter} -\expandafter\def\: {\let\ifnextblankspacetoken\iftrue\futurelet\nexttoken\inspectnextcharacter} +\def\:{\reinspect_next_character} +\expandafter\def\: {\let\if_next_blank_space_token\iftrue\futurelet\nexttoken\inspect_next_character} -\def\:{\reinspectnextoptionalcharacter} -\expandafter\def\: {\let\ifnextblankspacetoken\iftrue\futurelet\nexttoken\inspectnextoptionalcharacter} +\def\:{\reinspect_next_optional_character} +\expandafter\def\: {\let\if_next_blank_space_token\iftrue\futurelet\nexttoken\inspect_next_optional_character} -\def\:{\reinspectnextbgroupcharacter} -\expandafter\def\: {\let\ifnextblankspacetoken\iftrue\futurelet\nexttoken\inspectnextbgroupcharacter} +\def\:{\reinspect_next_bgroup_character} +\expandafter\def\: {\let\if_next_blank_space_token\iftrue\futurelet\nexttoken\inspect_next_bgroup_character} \let\:\next @@ -525,21 +525,22 @@ %D was due to this grouping subtilities. We therefore decided %D to use \type{\begingroup} instead of \type{\bgroup}. -\def\docheckonedefined#1% - {\ifcsname#1\endcsname\else - \donefalse - \expandafter\quitcommalist % added - \fi} - \def\doifalldefinedelse#1% {\begingroup - \donetrue \processcommalist[#1]\docheckonedefined + \donetrue + \processcommalist[#1]\do_if_all_defined_else \ifdone \endgroup\expandafter\firstoftwoarguments \else \endgroup\expandafter\secondoftwoarguments \fi} +\def\do_if_all_defined_else#1% + {\ifcsname#1\endcsname\else + \donefalse + \expandafter\quitcommalist % added + \fi} + %D \macros %D {doif,doifelse,doifnot} %D @@ -560,7 +561,8 @@ %D \stoptyping \long\def\doif#1#2% - {\edef\!!stringa{#1}\edef\!!stringb{#2}% + {\edef\!!stringa{#1}% + \edef\!!stringb{#2}% \ifx\!!stringa\!!stringb \expandafter\firstofoneargument \else @@ -568,7 +570,8 @@ \fi} \long\def\doifnot#1#2% - {\edef\!!stringa{#1}\edef\!!stringb{#2}% + {\edef\!!stringa{#1}% + \edef\!!stringb{#2}% \ifx\!!stringa\!!stringb \expandafter\gobbleoneargument \else @@ -576,7 +579,8 @@ \fi} \long\def\doifelse#1#2% - {\edef\!!stringa{#1}\edef\!!stringb{#2}% + {\edef\!!stringa{#1}% + \edef\!!stringb{#2}% \ifx\!!stringa\!!stringb \expandafter\firstoftwoarguments \else @@ -662,28 +666,28 @@ \def\rightoptionalbracket{]} -\long\def\doquitifiteminsetelse#1],\relax{\firstoftwoarguments} -\long\def\doquitifiteminset #1],\relax{\firstofoneargument} -\long\def\doquitifitemnotinset #1],\relax{\gobbleoneargument} +\long\def\do_quit_if_item_in_set_else#1],\relax{\firstoftwoarguments} +\long\def\do_quit_if_item_in_set #1],\relax{\firstofoneargument} +\long\def\do_quit_if_item_not_in_set #1],\relax{\gobbleoneargument} -\long\def\redoifinsetelse{\expandafter\docheckifiteminsetelse\!!stringb,],\relax} -\long\def\redoifinset {\expandafter\docheckifiteminset \!!stringb,],\relax} -\long\def\redoifnotinset {\expandafter\docheckifitemnotinset \!!stringb,],\relax} +\long\def\redo_if_in_set_else{\expandafter\do_check_if_item_in_set_else\!!stringb,],\relax} +\long\def\redo_if_in_set {\expandafter\do_check_if_item_in_set \!!stringb,],\relax} +\long\def\redo_if_not_in_set {\expandafter\do_check_if_item_not_in_set \!!stringb,],\relax} \long\def\doifinsetelse#1% make this two step too {\edef\!!stringa{#1}% \ifx\!!stringa\empty \expandafter\thirdofthreearguments \else - \expandafter\dodoifinsetelse + \expandafter\do_if_in_set_else \fi} -\long\def\dodoifinsetelse#1% +\long\def\do_if_in_set_else#1% {\edef\!!stringb{#1}% \ifx\!!stringb\empty \expandafter\secondoftwoarguments \else - \expandafter\redoifinsetelse + \expandafter\redo_if_in_set_else \fi} \long\def\doifinset#1% @@ -691,15 +695,15 @@ \ifx\!!stringa\empty \expandafter\gobbletwoarguments \else - \expandafter\dodoifinset + \expandafter\do_if_in_set \fi} -\long\def\dodoifinset#1% +\long\def\do_if_in_set#1% {\edef\!!stringb{#1}% \ifx\!!stringb\empty \expandafter\gobbleoneargument \else - \expandafter\redoifinset + \expandafter\redo_if_in_set \fi} \long\def\doifnotinset#1% @@ -707,81 +711,81 @@ \ifx\!!stringa\empty \expandafter\secondoftwoarguments \else - \expandafter\dodoifnotinset + \expandafter\do_if_not_in_set \fi} -\long\def\dodoifnotinset#1% +\long\def\do_if_not_in_set#1% {\edef\!!stringb{#1}% \ifx\!!stringb\empty \expandafter\firstofoneargument \else - \expandafter\redoifnotinset % ...]{true} + \expandafter\redo_if_not_in_set % ...]{true} \fi} -\def\docheckifiteminsetelse#1,#2% #2 eats up preceding space +\def\do_check_if_item_in_set_else#1,#2% #2 eats up preceding space {\edef\!!stringb{#1}% \ifx\!!stringb\empty - \expandafter\docheckifiteminsetelse + \expandafter\do_check_if_item_in_set_else \else - \expandafter\dodocheckifiteminsetelse + \expandafter\do_do_check_if_item_in_set_else \fi#2} -\def\dodocheckifiteminsetelse +\def\do_do_check_if_item_in_set_else {\ifx\!!stringb\rightoptionalbracket \expandafter\thirdofthreearguments \else - \expandafter\dododocheckifiteminsetelse + \expandafter\do_do_do_check_if_item_in_set_else \fi} -\def\dododocheckifiteminsetelse +\def\do_do_do_check_if_item_in_set_else {\ifx\!!stringa\!!stringb - \expandafter\doquitifiteminsetelse + \expandafter\do_quit_if_item_in_set_else \else - \expandafter\docheckifiteminsetelse + \expandafter\do_check_if_item_in_set_else \fi} -\def\docheckifiteminset#1,#2% #2 eats up preceding space +\def\do_check_if_item_in_set#1,#2% #2 eats up preceding space {\edef\!!stringb{#1}% \ifx\!!stringb\empty - \expandafter\docheckifiteminset + \expandafter\do_check_if_item_in_set \else - \expandafter\dodocheckifiteminset + \expandafter\do_do_check_if_item_in_set \fi#2} -\def\dodocheckifiteminset +\def\do_do_check_if_item_in_set {\ifx\!!stringb\rightoptionalbracket \expandafter\gobbletwoarguments \else - \expandafter\dododocheckifiteminset + \expandafter\do_do_do_check_if_item_in_set \fi} -\def\dododocheckifiteminset +\def\do_do_do_check_if_item_in_set {\ifx\!!stringa\!!stringb - \expandafter\doquitifiteminset + \expandafter\do_quit_if_item_in_set \else - \expandafter\docheckifiteminset + \expandafter\do_check_if_item_in_set \fi} -\def\docheckifitemnotinset#1,#2% #2 eats up preceding space +\def\do_check_if_item_not_in_set#1,#2% #2 eats up preceding space {\edef\!!stringb{#1}% \ifx\!!stringb\empty - \expandafter\docheckifitemnotinset + \expandafter\do_check_if_item_not_in_set \else - \expandafter\dodocheckifitemnotinset + \expandafter\do_do_check_if_item_not_in_set \fi#2} -\def\dodocheckifitemnotinset +\def\do_do_check_if_item_not_in_set {\ifx\!!stringb\rightoptionalbracket \expandafter\secondoftwoarguments \else - \expandafter\dododocheckifitemnotinset + \expandafter\do_do_do_check_if_item_not_in_set \fi} -\def\dododocheckifitemnotinset +\def\do_do_do_check_if_item_not_in_set {\ifx\!!stringa\!!stringb - \expandafter\doquitifitemnotinset + \expandafter\do_quit_if_item_not_in_set \else - \expandafter\docheckifitemnotinset + \expandafter\do_check_if_item_not_in_set \fi} %D \macros @@ -812,43 +816,41 @@ % !9yes=\doifcommonelse{,a,}{,,,a,}{yes}{nop} % !9yes=\doifcommonelse{,,a,}{,,,a,}{yes}{nop} -\long\def\doquitifcommonelse#1],\relax#2],\relax{\firstoftwoarguments} +\long\def\do_quit_if_common_else#1],\relax#2],\relax{\firstoftwoarguments} -\long\def\doquitifcommonelsenop{\secondoftwoarguments} - -\def\docheckifcommonelseone#1,#2% +\def\do_check_if_common_else_one#1,#2% {\edef\!!stringc{#1}% \ifx\!!stringc\rightoptionalbracket \expandafter\thirdofthreearguments \else - \expandafter\p!docommoncheck + \expandafter\do_common_check \fi#2} -\def\docheckifcommonelsetwo#1,#2% we can do an empty #1 check too +\def\do_check_if_common_else_two#1,#2% we can do an empty #1 check too {\edef\commalistelement{#1}% \ifx\commalistelement\rightoptionalbracket - \expandafter\redocheckifcommonelseone + \expandafter\re_do_check_if_common_else_one \else - \expandafter\dodocheckifcommonelsetwo + \expandafter\do_do_check_if_common_else_two \fi#2} -\def\dodocheckifcommonelsetwo +\def\do_do_check_if_common_else_two {\ifx\commalistelement\empty - \expandafter\docheckifcommonelsetwo + \expandafter\do_check_if_common_else_two \else - \expandafter\dododocheckifcommonelsetwo + \expandafter\do_do_do_check_if_common_else_two \fi} -\def\dododocheckifcommonelsetwo +\def\do_do_do_check_if_common_else_two {\ifx\!!stringc\commalistelement - \expandafter\doquitifcommonelse + \expandafter\do_quit_if_common_else \else - \expandafter\docheckifcommonelsetwo + \expandafter\do_check_if_common_else_two \fi} -\def\redocheckifcommonelseone#1{\docheckifcommonelseone} +\def\re_do_check_if_common_else_one#1{\do_check_if_common_else_one} -\def\p!doifcommonelse#1#2#3#4% +\def\do_do_if_common_else#1#2#3#4% {\edef\!!stringa{#3}% \edef\!!stringb{#4}% \ifx\!!stringa\empty @@ -856,17 +858,17 @@ \else\ifx\!!stringb\empty \expandafter\expandafter\expandafter\secondoftwoarguments \else - \expandafter\expandafter\expandafter\pp!doifcommonelse + \expandafter\expandafter\expandafter\do_do_do_if_common_else \fi\fi #1#2} -\def\pp!doifcommonelse - {\def\p!docommoncheck{\expandafter\docheckifcommonelsetwo\!!stringb,],\relax}% - \expandafter\docheckifcommonelseone\!!stringa,],\relax} +\def\do_do_do_if_common_else + {\def\do_common_check{\expandafter\do_check_if_common_else_two\!!stringb,],\relax}% + \expandafter\do_check_if_common_else_one\!!stringa,],\relax} -\def\doifcommonelse{\p!doifcommonelse\firstoftwoarguments\secondoftwoarguments} -\def\doifcommon {\p!doifcommonelse\firstofoneargument \gobbleoneargument } -\def\doifnotcommon {\p!doifcommonelse\gobbleoneargument \firstofoneargument } +\def\doifcommonelse{\do_do_if_common_else\firstoftwoarguments\secondoftwoarguments} +\def\doifcommon {\do_do_if_common_else\firstofoneargument \gobbleoneargument } +\def\doifnotcommon {\do_do_if_common_else\gobbleoneargument \firstofoneargument } %D \macros %D {processcommalist,processcommacommand,quitcommalist, @@ -2034,7 +2036,7 @@ % {\let\charactertoken=#1% % \def\!!stringa{\noshowargumenterror#3\dodogetargument}% % \def\!!stringb{\doshowargumenterror#4\dodogetargument#1#2}% -% \futurelet\nexttoken\inspectnextcharacter} +% \futurelet\nexttoken\inspect_next_character} % \def\getsingleempty#1#2#3% % {\def\dodogetargument% @@ -2244,7 +2246,7 @@ \def\dodoubleemptyNOPtwo {\secondargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dodoubleemptyonespaced \else \expandafter\dodoubleemptyonenormal @@ -2282,7 +2284,7 @@ \def\dotripleemptyNOPtwo {\secondargumentfalse \thirdargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dotripleemptytwospaced \else \expandafter\dotripleemptytwonormal @@ -2290,7 +2292,7 @@ \def\dotripleemptyNOPthree {\thirdargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dotripleemptythreespaced \else \expandafter\dotripleemptythreenormal @@ -2338,7 +2340,7 @@ {\secondargumentfalse \thirdargumentfalse \fourthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquadrupleemptytwospaced \else \expandafter\doquadrupleemptytwonormal @@ -2347,7 +2349,7 @@ \def\doquadrupleemptyNOPthree {\thirdargumentfalse \fourthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquadrupleemptythreespaced \else \expandafter\doquadrupleemptythreenormal @@ -2355,7 +2357,7 @@ \def\doquadrupleemptyNOPfour {\fourthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquadrupleemptyfourspaced \else \expandafter\doquadrupleemptyfournormal @@ -2413,7 +2415,7 @@ \thirdargumentfalse \fourthargumentfalse \fifthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquintupleemptytwospaced \else \expandafter\doquintupleemptytwonormal @@ -2423,7 +2425,7 @@ {\thirdargumentfalse \fourthargumentfalse \fifthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquintupleemptythreespaced \else \expandafter\doquintupleemptythreenormal @@ -2432,7 +2434,7 @@ \def\doquintupleemptyNOPfour {\fourthargumentfalse \fifthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquintupleemptyfourspaced \else \expandafter\doquintupleemptyfournormal @@ -2440,7 +2442,7 @@ \def\doquintupleemptyNOPfive {\fifthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\doquintupleemptyfivespaced \else \expandafter\doquintupleemptyfivenormal @@ -2508,7 +2510,7 @@ \fourthargumentfalse \fifthargumentfalse \sixthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosixemptytwospaced \else \expandafter\dosixemptytwonormal @@ -2519,7 +2521,7 @@ \fourthargumentfalse \fifthargumentfalse \sixthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosixemptythreespaced \else \expandafter\dosixemptythreenormal @@ -2529,7 +2531,7 @@ {\fourthargumentfalse \fifthargumentfalse \sixthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosixemptyfourspaced \else \expandafter\dosixemptyfournormal @@ -2538,7 +2540,7 @@ \def\dosixtupleemptyNOPfive {\fifthargumentfalse \sixthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosixemptyfivespaced \else \expandafter\dosixemptyfivenormal @@ -2546,7 +2548,7 @@ \def\dosixtupleemptyNOPsix {\sixthargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosixemptysixspaced \else \expandafter\dosixemptysixnormal @@ -2624,7 +2626,7 @@ \fifthargumentfalse \sixthargumentfalse \seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptytwospaced \else \expandafter\dosevenemptytwonormal @@ -2636,7 +2638,7 @@ \fifthargumentfalse \sixthargumentfalse \seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptythreespaced \else \expandafter\dosevenemptythreenormal @@ -2647,7 +2649,7 @@ \fifthargumentfalse \sixthargumentfalse \seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptyfourspaced \else \expandafter\dosevenemptyfournormal @@ -2657,7 +2659,7 @@ {\fifthargumentfalse \sixthargumentfalse \seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptyfivespaced \else \expandafter\dosevenemptyfivenormal @@ -2666,7 +2668,7 @@ \def\doseventupleemptyNOPsix {\sixthargumentfalse \seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptysixspaced \else \expandafter\dosevenemptysixnormal @@ -2674,7 +2676,7 @@ \def\doseventupleemptyNOPseven {\seventhargumentfalse - \ifnextblankspacetoken + \if_next_blank_space_token \expandafter\dosevenemptysevenspaced \else \expandafter\dosevenemptysevennormal @@ -3297,26 +3299,20 @@ %D Nowadays we don't mind a few more tokens if we can gain a %D bit of speed. -\def\doincrement#1% - {\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+\plusone \relax}} -\def\dodecrement#1% - {\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+\minusone\relax}} +\def\do_increment#1{\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+\plusone \relax}} +\def\do_decrement#1{\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+\minusone\relax}} -\def\dododoincrement#1,#2)% - {\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+#2\relax}} -\def\dodododecrement#1,#2)% - {\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi-#2\relax}} +\def\do_do_do_increment#1,#2){\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi+#2\relax}} +\def\do_do_do_decrement#1,#2){\dodoglobal\edef#1{\the\numexpr\ifdefined#1\ifx#1\relax\else#1\fi\fi-#2\relax}} -\def\dodoincrement(#1% - {\doifnextcharelse,{\dododoincrement#1}{\dododoincrement#1,\plusone}} -\def\dododecrement(#1% - {\doifnextcharelse,{\dodododecrement#1}{\dodododecrement#1,\plusone}} +\def\do_do_increment(#1{\doifnextcharelse,{\do_do_do_increment#1}{\do_do_do_increment#1,\plusone}} +\def\do_do_decrement(#1{\doifnextcharelse,{\do_do_do_decrement#1}{\do_do_do_decrement#1,\plusone}} \def\fastincrement#1{\dodoglobal\edef#1{\the\numexpr#1+\plusone \relax}} \def\fastdecrement#1{\dodoglobal\edef#1{\the\numexpr#1+\minusone\relax}} -\def\increment{\doifnextcharelse(\dodoincrement\doincrement} -\def\decrement{\doifnextcharelse(\dododecrement\dodecrement} +\def\increment{\doifnextcharelse(\do_do_increment\do_increment} +\def\decrement{\doifnextcharelse(\do_do_decrement\do_decrement} \def\incrementvalue#1{\expandafter\increment\csname#1\endcsname} \def\decrementvalue#1{\expandafter\decrement\csname#1\endcsname} @@ -5497,22 +5493,17 @@ %D \type {\doifallcommonelse}, where the first two %D arguments are sets. -\def\@@doifallcommonelse#1#2#3#4% slow - {\def\p!docommoncheck##1% +\def\do_if_all_common_else#1#2#3#4% slow + {\def\do_common_check##1% {\doifnotinset{##1}{#4}\donefalse \ifdone\else\expandafter\quitcommalist\fi}% \donetrue - \processcommalist[#3]\p!docommoncheck + \processcommalist[#3]\do_common_check \ifdone\expandafter#1\else\expandafter#2\fi} -\def\doifallcommonelse - {\@@doifallcommonelse\firstoftwoarguments\secondoftwoarguments} - -\def\doifallcommon - {\@@doifallcommonelse\firstofonearguments\gobbleoneargument} - -\def\doifnotallcommon - {\@@doifallcommonelse\gobbleoneargument\firstofonearguments} +\def\doifallcommonelse{\do_if_all_common_else\firstoftwoarguments\secondoftwoarguments} +\def\doifallcommon {\do_if_all_common_else\firstofonearguments\gobbleoneargument } +\def\doifnotallcommon {\do_if_all_common_else\gobbleoneargument \firstofonearguments } %D \macros %D {DOIF,DOIFELSE,DOIFNOT} @@ -5531,38 +5522,38 @@ %D We have to use a two||step implementation, because the %D expansion has to take place outside \type{\uppercase}. -\unexpanded\def\DOIF#1#2% +\unexpanded\def\DO_IF#1#2% {\uppercase{{$#1$}{$#2$}}% \expandafter\firstofoneargument \else \expandafter\gobbleoneargument \fi} -\unexpanded\def\DOIFNOT#1#2% +\unexpanded\def\DO_IF_NOT#1#2% {\uppercase{{$#1$}{$#2$}}% \expandafter\gobbleoneargument \else \expandafter\firstofoneargument \fi} -\unexpanded\def\DOIFELSE#1#2% +\unexpanded\def\DO_IF_ELSE#1#2% {\uppercase{{$#1$}{$#2$}}% \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments \fi} -\unexpanded\def\DOIFINSTRINGELSE#1#2% +\unexpanded\def\DO_IF_INSTRING_ELSE#1#2% {\uppercase{{$#1$}{$#2$}}% \expandafter\firstoftwoarguments \else \expandafter\secondoftwoarguments \fi} -\def\DOIF #1#2{\normalexpanded{\p!DOIF {#1}{#2}}} -\def\DOIFNOT #1#2{\normalexpanded{\p!DOIFNOT {#1}{#2}}} -\def\DOIFELSE #1#2{\normalexpanded{\p!DOIFELSE {#1}{#2}}} -\def\DOIFINSTRINGELSE #1#2{\normalexpanded{\p!DOIFINSTRINGELSE{#1}{#2}}} +\unexpanded\def\DOIF #1#2{\normalexpanded{\DO_IF {#1}{#2}}} +\unexpanded\def\DOIFNOT #1#2{\normalexpanded{\DO_IF_NOT {#1}{#2}}} +\unexpanded\def\DOIFELSE #1#2{\normalexpanded{\DO_IF_ELSE {#1}{#2}}} +\unexpanded\def\DOIFINSTRINGELSE #1#2{\normalexpanded{\DO_IF_INSTRING_ELSE{#1}{#2}}} %D \macros %D {dosingleargumentwithset, @@ -6224,19 +6215,24 @@ %D macro rounds a real number to two digits. It takes one %D argument and only works in \ETEX. -\def\dointegerrounding #1.#2\relax {#1} -\def\doonedigitrounding #1.#2#3\relax {\ifx#2*#1\else#1.#2\fi} -\def\dotwodigitrounding #1.#2#3#4\relax {\ifx#2*#1\else#1.#2#3\fi} -\def\dothreedigitrounding#1.#2#3#4#5\relax{\ifx#2*#1\else#1.#2#3#4\fi} +% \def\dointegerrounding #1.#2\relax {#1} +% \def\doonedigitrounding #1.#2#3\relax {\ifx#2*#1\else#1.#2\fi} +% \def\dotwodigitrounding #1.#2#3#4\relax {\ifx#2*#1\else#1.#2#3\fi} +% \def\dothreedigitrounding#1.#2#3#4#5\relax{\ifx#2*#1\else#1.#2#3#4\fi} +% +% \def\integerrounding#1% +% {\@EA\@EA\@EA\dointegerrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.5\points \relax .\relax} +% \def\onedigitrounding#1% +% {\@EA\@EA\@EA\doonedigitrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.05\points \relax 00.*0\relax} +% \def\twodigitrounding#1% +% {\@EA\@EA\@EA\dotwodigitrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.005\points \relax 000.*00\relax} +% \def\threedigitrounding#1% +% {\@EA\@EA\@EA\dothreedigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+.0005\points\relax0000.*00\relax} -\def\integerrounding#1% - {\@EA\@EA\@EA\dointegerrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.5\points \relax .\relax} -\def\onedigitrounding#1% - {\@EA\@EA\@EA\doonedigitrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.05\points \relax 00.*0\relax} -\def\twodigitrounding#1% - {\@EA\@EA\@EA\dotwodigitrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.005\points \relax 000.*00\relax} -\def\threedigitrounding#1% - {\@EA\@EA\@EA\dothreedigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+.0005\points\relax0000.*00\relax} +\def\integerrounding #1{\cldcontext{"\letterpercent 0.0f",#1}} +\def\onedigitrounding #1{\cldcontext{"\letterpercent 0.1f",#1}} +\def\twodigitrounding #1{\cldcontext{"\letterpercent 0.2f",#1}} +\def\threedigitrounding#1{\cldcontext{"\letterpercent 0.3f",#1}} %D \macros %D {processcontent} @@ -6422,9 +6418,9 @@ %D %D This one if for Taco's bibliography module: -\let\normalinspectnextcharacter\inspectnextcharacter +\let\normal_inspect_next_character\inspect_next_character -\def\strictinspectnextcharacter% no user macro ! +\def\strict_inspect_next_character% no user macro ! {\ifx\nexttoken\charactertoken \expandafter\!!stringa \else @@ -6434,10 +6430,10 @@ % better: push/pop \unexpanded\def\startstrictinspectnextcharacter - {\let\inspectnextcharacter\strictinspectnextcharacter} + {\let\inspect_next_character\strict_inspect_next_character} \unexpanded\def\stopstrictinspectnextcharacter - {\let\inspectnextcharacter\normalinspectnextcharacter} + {\let\inspect_next_character\normal_inspect_next_character} \def\strictdoifnextoptionalelse#1#2% {\startstrictinspectnextcharacter diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv index 7ff0c5575..46f08854c 100644 --- a/tex/context/base/syst-ini.mkiv +++ b/tex/context/base/syst-ini.mkiv @@ -126,14 +126,13 @@ \long\def\gobbleoneargument#1{} % will be defined later on anyway -\mathchardef\etexversion = - \numexpr\eTeXversion*100+\expandafter\gobbleoneargument\eTeXrevision\relax +\mathchardef\etexversion = \numexpr\eTeXversion*100+\expandafter\gobbleoneargument\eTeXrevision\relax %D First we define a simplified version of the \CONTEXT\ %D protection mechanism. -\def\unprotect{\catcode`@=11 } -\def\protect {\catcode`@=12 } +\def\protect {\catcode`@=\the\catcode`@ \catcode`_=\the\catcode`_} +\def\unprotect{\catcode`@=11 \catcode`_=11 } \unprotect @@ -163,34 +162,34 @@ % 255 : page % 256 - : user -\countdef \minallocatedregister = 52 \minallocatedregister = 256 % can change -\countdef \maxallocatedregister = 53 \maxallocatedregister = 32767 -\countdef \minallocatediochannel = 54 \minallocatediochannel = -1 -\countdef \maxallocatediochannel = 55 \maxallocatediochannel = 16 -\countdef \minallocatedlanguage = 56 \minallocatedlanguage = 0 -\countdef \maxallocatedlanguage = 57 \maxallocatedlanguage = 255 -\countdef \maxallocatedinsert = 58 \maxallocatedinsert = 254 -\countdef \minallocatedinsert = 59 \minallocatedinsert = 128 -\countdef \minallocatedfamily = 60 \minallocatedfamily = 128 -\countdef \maxallocatedfamily = 61 \maxallocatedfamily = 255 -\countdef \minallocatedattribute = 62 \minallocatedattribute = 1024 % 127-1023 : private - -\countdef \lastallocatedcount = 32 \lastallocatedcount = \minallocatedregister -\countdef \lastallocateddimen = 33 \lastallocateddimen = \minallocatedregister -\countdef \lastallocatedskip = 34 \lastallocatedskip = \minallocatedregister -\countdef \lastallocatedmuskip = 35 \lastallocatedmuskip = \minallocatedregister -\countdef \lastallocatedbox = 36 \lastallocatedbox = \minallocatedregister -\countdef \lastallocatedtoks = 37 \lastallocatedtoks = \minallocatedregister -\countdef \lastallocatedread = 38 \lastallocatedread = \minallocatediochannel -\countdef \lastallocatedwrite = 39 \lastallocatedwrite = \minallocatediochannel -\countdef \lastallocatedmarks = 40 \lastallocatedmarks = \minallocatedregister -\countdef \lastallocatedlanguage = 41 \lastallocatedlanguage = \minallocatedlanguage % not used in context -\countdef \lastallocatedinsertion = 42 \lastallocatedinsertion = \minallocatedinsert -\countdef \lastallocatedfamily = 43 \lastallocatedfamily = \minallocatedfamily % not used in context -\countdef \lastallocatedattribute = 44 \lastallocatedattribute = \minallocatedattribute - -\countdef \mincountervalue = 125 \mincountervalue = -"7FFFFFFF % beware, we use index 125 at the lua end -\countdef \maxcountervalue = 126 \maxcountervalue = "7FFFFFFF % beware, we use index 126 at the lua end +\countdef \min_allocated_register = 52 \min_allocated_register = 256 % can change +\countdef \max_allocated_register = 53 \max_allocated_register = 32767 +\countdef \min_allocated_iochannel = 54 \min_allocated_iochannel = -1 +\countdef \max_allocated_iochannel = 55 \max_allocated_iochannel = 16 +\countdef \min_allocated_language = 56 \min_allocated_language = 0 +\countdef \max_allocated_language = 57 \max_allocated_language = 255 +\countdef \max_allocated_insert = 58 \max_allocated_insert = 254 +\countdef \min_allocated_insert = 59 \min_allocated_insert = 128 +\countdef \min_allocated_family = 60 \min_allocated_family = 128 +\countdef \max_allocated_family = 61 \max_allocated_family = 255 +\countdef \min_allocated_attribute = 62 \min_allocated_attribute = 1024 % 127-1023 : private + +\countdef \last_allocated_count = 32 \last_allocated_count = \min_allocated_register +\countdef \last_allocated_dimen = 33 \last_allocated_dimen = \min_allocated_register +\countdef \last_allocated_skip = 34 \last_allocated_skip = \min_allocated_register +\countdef \last_allocated_muskip = 35 \last_allocated_muskip = \min_allocated_register +\countdef \last_allocated_box = 36 \last_allocated_box = \min_allocated_register +\countdef \last_allocated_toks = 37 \last_allocated_toks = \min_allocated_register +\countdef \last_allocated_read = 38 \last_allocated_read = \min_allocated_iochannel +\countdef \last_allocated_write = 39 \last_allocated_write = \min_allocated_iochannel +\countdef \last_allocated_marks = 40 \last_allocated_marks = \min_allocated_register +\countdef \last_allocated_language = 41 \last_allocated_language = \min_allocated_language % not used in context +\countdef \last_allocated_insertion = 42 \last_allocated_insertion = \min_allocated_insert +\countdef \last_allocated_family = 43 \last_allocated_family = \min_allocated_family % not used in context +\countdef \last_allocated_attribute = 44 \last_allocated_attribute = \min_allocated_attribute + +\countdef \min_counter_value = 125 \min_counter_value = -"7FFFFFFF % beware, we use index 125 at the lua end +\countdef \max_counter_value = 126 \max_counter_value = "7FFFFFFF % beware, we use index 126 at the lua end %countdef \minusone = 127 \minusone = -1 %chardef \zerocount = 0 @@ -220,29 +219,29 @@ %D The allocators share a common helper macro. -\def\newcount {\allocateregister\lastallocatedcount \count \countdef \maxallocatedregister} -\def\newdimen {\allocateregister\lastallocateddimen \dimen \dimendef \maxallocatedregister} -\def\newskip {\allocateregister\lastallocatedskip \skip \skipdef \maxallocatedregister} -\def\newmuskip {\allocateregister\lastallocatedmuskip \muskip \muskipdef \maxallocatedregister} -\def\newbox {\allocateregister\lastallocatedbox \box \mathchardef\maxallocatedregister} -\def\newtoks {\allocateregister\lastallocatedtoks \toks \toksdef \maxallocatedregister} -\def\newread {\allocateregister\lastallocatedread \read \chardef \maxallocatediochannel} -\def\newwrite {\allocateregister\lastallocatedwrite \write \chardef \maxallocatediochannel} -\def\newmarks {\allocateregister\lastallocatedmarks \marks \mathchardef\maxallocatedregister} -\def\newinsert {\allocateregister\lastallocatedinsertion\insert \chardef \maxallocatedinsert} +\normalprotected\def\newcount {\allocate_register\last_allocated_count \count \countdef \max_allocated_register} +\normalprotected\def\newdimen {\allocate_register\last_allocated_dimen \dimen \dimendef \max_allocated_register} +\normalprotected\def\newskip {\allocate_register\last_allocated_skip \skip \skipdef \max_allocated_register} +\normalprotected\def\newmuskip {\allocate_register\last_allocated_muskip \muskip \muskipdef \max_allocated_register} +\normalprotected\def\newbox {\allocate_register\last_allocated_box \box \mathchardef\max_allocated_register} +\normalprotected\def\newtoks {\allocate_register\last_allocated_toks \toks \toksdef \max_allocated_register} +\normalprotected\def\newread {\allocate_register\last_allocated_read \read \chardef \max_allocated_iochannel} +\normalprotected\def\newwrite {\allocate_register\last_allocated_write \write \chardef \max_allocated_iochannel} +\normalprotected\def\newmarks {\allocate_register\last_allocated_marks \marks \mathchardef\max_allocated_register} +\normalprotected\def\newinsert {\allocate_register\last_allocated_insertion\insert \chardef \max_allocated_insert} %D We don't need these in \CONTEXT: -\def\newlanguage{\allocateregister\lastallocatedlanguage \language\chardef \maxallocatedlanguage} -\def\newfamily {\allocateregister\lastallocatedfamily \fam \chardef \maxallocatedfamily} +\normalprotected\def\newlanguage{\allocate_register\last_allocated_language \language\chardef \max_allocated_language} +\normalprotected\def\newfamily {\allocate_register\last_allocated_family \fam \chardef \max_allocated_family} \let\newfam\newfamily % Watch out, for the moment we disable the check for already being defined % later we will revert this but first all chardefs must be replaced. -\def\newconstant #1{\ifdefined#1\let#1\undefined\fi\newcount#1} -\def\setnewconstant#1{\ifdefined#1\let#1\undefined\fi\newcount#1#1} % just a number +\normalprotected\def\newconstant #1{\ifdefined#1\let#1\undefined\fi\newcount#1} +\normalprotected\def\setnewconstant#1{\ifdefined#1\let#1\undefined\fi\newcount#1#1} % just a number % maybe setconstant with check @@ -259,10 +258,10 @@ %D now provide many registers we removed all traces. \ifdefined\writestatus \else - \def\writestatus#1#2{\immediate\write16{#1: #2}} + \normalprotected\def\writestatus#1#2{\immediate\write16{#1: #2}} \fi -\def\allocateregisteryes#1#2#3#4#5% last class method max name +\def\allocate_register_yes#1#2#3#4#5% last class method max name {\ifnum#1<#4\relax \global\advance#1\plusone \global#3#5=#1\relax @@ -270,16 +269,16 @@ \writestatus{warning}{no room for \string#2\space \string#5\space (max: \number#4)}% \fi} -\def\allocateregisternop#1#2#3#4#5% last class method max name +\def\allocate_register_nop#1#2#3#4#5% last class method max name {\writestatus{warning}{\string#2 \string#5 is already defined (\string\relax\space it first)}} -\def\allocateregister#1#2#3#4#5% last class method max name +\def\allocate_register#1#2#3#4#5% last class method max name {\ifx#5\undefined - \expandafter\allocateregisteryes + \expandafter\allocate_register_yes \else\ifx#5\relax - \expandafter\expandafter\expandafter\allocateregisteryes + \expandafter\expandafter\expandafter\allocate_register_yes \else - \expandafter\expandafter\expandafter\allocateregisternop + \expandafter\expandafter\expandafter\allocate_register_nop \fi\fi #1#2#3#4#5} @@ -287,8 +286,8 @@ %D {\chardef} instead of the more limited \type {\mathchardef}. \ifnum\texengine>\pdftexengine - \def\newbox {\allocateregister\lastallocatedbox \box \chardef\maxallocatedregister} - \def\newmarks{\allocateregister\lastallocatedmarks\marks\chardef\maxallocatedregister} + \normalprotected\def\newbox {\allocate_register\last_allocated_box \box \chardef\max_allocated_register} + \normalprotected\def\newmarks{\allocate_register\last_allocated_marks\marks\chardef\max_allocated_register} \fi %D Attributes are something very \LUATEX. In \CONTEXT\ you are not @@ -298,15 +297,15 @@ %D and should not be touched. \ifnum\texengine=\luatexengine - \let\attributeunsetvalue\mincountervalue % used to be \minusone - \def\newattribute{\allocateregister\minallocatedattribute\attribute\attributedef\maxallocatedregister} + \let\attributeunsetvalue\min_counter_value % used to be \minusone + \normalprotected\def\newattribute{\allocate_register\min_allocated_attribute\attribute\attributedef\max_allocated_register} \fi %D Not used by \CONTEXT\ but for instance \PICTEX\ needs it. It's a %D trick to force strings instead of tokens that take more memory. %D It's a trick to trick to force strings. -\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\normalprotected\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} %D \macros %D {scratchcounter, @@ -317,12 +316,12 @@ %D We now define a few scratch registers, so that successive %D loads at least have some available. -\newcount \scratchcounter \newcount \globalscratchcounter -\newdimen \scratchdimen \newdimen \globalscratchdimen -\newskip \scratchskip \newskip \globalscratchskip -\newmuskip \scratchmuskip \newmuskip \globalscratchmuskip -\newtoks \scratchtoks \newtoks \globalscratchtoks -\newbox \scratchbox \newbox \globalscratchbox +\newcount \scratchcounter \newcount \globalscratchcounter +\newdimen \scratchdimen \newdimen \globalscratchdimen +\newskip \scratchskip \newskip \globalscratchskip +\newmuskip\scratchmuskip \newmuskip\globalscratchmuskip +\newtoks \scratchtoks \newtoks \globalscratchtoks +\newbox \scratchbox \newbox \globalscratchbox \newcount\scratchcounterone \newcount\scratchcountertwo \newcount\scratchcounterthree \newdimen \scratchdimenone \newdimen \scratchdimentwo \newdimen \scratchdimenthree @@ -415,7 +414,7 @@ \let \@ne \plusone \let \tw@ \plustwo \let \thr@@ \plusthree -\let \sixt@@n \sixteen +\let \sixt@@n \plussixteen \let \@cclv \pluscclv \let \@cclvi \pluscclvi \newbox \voidb@x @@ -435,7 +434,7 @@ %D with \type {\iffoo}. %D \stopnarrower -\def\newif#1% +\normalprotected\def\newif#1% {\count@\escapechar \escapechar\minusone \expandafter\expandafter\expandafter\def\@if #1{true}{\let#1\iftrue }% @@ -653,8 +652,8 @@ \normaleveryjob{\the\everyjob} -\def\appendtotoks #1{\def\temp{#1}\afterassignment\doappendtotoks \scratchtoks=} -\def\prependtotoks#1{\def\temp{#1}\afterassignment\doprependtotoks\scratchtoks=} +\normalprotected\def\appendtotoks #1{\def\temp{#1}\afterassignment\doappendtotoks \scratchtoks=} +\normalprotected\def\prependtotoks#1{\def\temp{#1}\afterassignment\doprependtotoks\scratchtoks=} \def\doappendtotoks {\expandafter\expandafter\expandafter{\expandafter\the\expandafter\temp\the\scratchtoks}} \def\doprependtotoks{\expandafter\expandafter\expandafter{\expandafter\the\expandafter\scratchtoks\the\temp}} @@ -749,7 +748,7 @@ \lineskip = 1pt \lineskiplimit = 0pt -%D Again a few kind-of-extensions the core: +%D Again a few kind-of-extensions the core: (might go away) \newskip \hideskip \hideskip = -1000pt plus 1fill \newskip \centering \centering = 0pt plus 1000pt minus 1000pt @@ -855,9 +854,9 @@ \ifdefined\pdfgentounicode \else \newcount\pdfgentounicode \fi \pdfgentounicode \plusone \ifdefined\pdfinclusioncopyfonts\else \newcount\pdfinclusioncopyfonts \fi \pdfinclusioncopyfonts\plusone - \def\nopdfcompression {\pdfobjcompresslevel\zerocount \pdfcompresslevel\zerocount} - \def\maximumpdfcompression{\pdfobjcompresslevel\plusnine \pdfcompresslevel\plusnine } - \def\normalpdfcompression {\pdfobjcompresslevel\plusthree \pdfcompresslevel\plusthree} + \normalprotected\def\nopdfcompression {\pdfobjcompresslevel\zerocount \pdfcompresslevel\zerocount} + \normalprotected\def\maximumpdfcompression{\pdfobjcompresslevel\plusnine \pdfcompresslevel\plusnine } + \normalprotected\def\normalpdfcompression {\pdfobjcompresslevel\plusthree \pdfcompresslevel\plusthree} \normalpdfcompression @@ -888,12 +887,12 @@ \ifx\fmtname \undefined \def\fmtname {ConTeXt Minimized Plain TeX} \fi \ifx\fmtversion\undefined \def\fmtversion{3.1415926} \fi -\let\normalfmtversion\fmtversion +\let\normalfmtversion\fmtversion % still needed ? %D A few bonus macros: \def\modulonumber#1#2{\the\numexpr#2-((((#2+(#1/2))/#1)-1)*#1)\relax} -\def\dividonumber#1#2{\the\numexpr(#2-(#1/2))/#1\relax} +\def\dividenumber#1#2{\the\numexpr(#2-(#1/2))/#1\relax} \ifnum\texengine=\xetexengine \edef\xetexversion {\numexpr\XeTeXversion*100+(\expandafter\gobbleoneargument\XeTeXrevision-5)/10\relax} @@ -901,19 +900,19 @@ \fi \ifcase\texengine - \def\texenginename {impossible} + \def \texenginename {impossible} \edef\texengineversion{0} \or - \def\texenginename {pdfTeX} - \edef\texengineversion{\dividonumber{100}\pdftexversion.\modulonumber{100}\pdftexversion.\pdftexrevision} + \def \texenginename {pdfTeX} + \edef\texengineversion{\dividenumber{100}\pdftexversion.\modulonumber{100}\pdftexversion.\pdftexrevision} \or - \def\texenginename {XeTeX} - \edef\texengineversion{\dividonumber{100}\xetexversion .\modulonumber{100}\xetexversion .\xetexrevision} + \def \texenginename {XeTeX} + \edef\texengineversion{\dividenumber{100}\xetexversion .\modulonumber{100}\xetexversion .\xetexrevision} \or - \def\texenginename {LuaTeX} - \edef\texengineversion{\dividonumber{100}\luatexversion.\modulonumber{100}\luatexversion.\luatexrevision} + \def \texenginename {LuaTeX} + \edef\texengineversion{\dividenumber{100}\luatexversion.\modulonumber{100}\luatexversion.\luatexrevision} \else - \def\texenginename {impossible} + \def \texenginename {impossible} \edef\texengineversion{0} \fi diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 18d88e815..04bf9675b 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 09/14/11 12:21:17 +-- merge date : 09/15/11 09:08:43 do -- begin closure to overcome local limits and interference |