diff options
Diffstat (limited to 'tex')
30 files changed, 117 insertions, 81 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 340f7ad1b..4f1498f2d 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2020.01.09 11:17} +\newcontextversion{2020.01.13 14:52} %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 c167e30e3..9454bd5cd 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2020.01.09 11:17} +\edef\contextversion{2020.01.13 14:52} %D For those who want to use this: diff --git a/tex/context/base/mkiv/back-exp.lua b/tex/context/base/mkiv/back-exp.lua index ea047db0c..00c939b99 100644 --- a/tex/context/base/mkiv/back-exp.lua +++ b/tex/context/base/mkiv/back-exp.lua @@ -305,7 +305,7 @@ document, %namespace%div.document { font-size : %size% !important ; max-width : %width% !important ; - text-width : %align% !important ; + text-align : %align% !important ; hyphens : %hyphens% !important ; }]] @@ -334,7 +334,7 @@ local styletemplate = [[ namespace = contextns, -- cssnamespaceurl = usecssnamespace and cssnamespaceurl or cssnamespacenop, cssnamespaceurl = cssnamespaceurl, - }) } + },false,true) } -- local bodyfont = finetuning.bodyfont local width = finetuning.width @@ -438,7 +438,7 @@ local imagetemplate = [[ namespace = contextns, -- cssnamespaceurl = usecssnamespace and cssnamespaceurl or "", cssnamespaceurl = cssnamespaceurl, - }) } + },false,true) } for element, details in sortedhash(usedimages) do for detail, data in sortedhash(details) do local name = data.name @@ -3487,7 +3487,7 @@ local htmltemplate = [[ namespace = contextns, -- cssnamespaceurl = usecssnamespace and cssnamespaceurl or "", cssnamespaceurl = cssnamespaceurl, - }) } + },false,true) } for element, details in sortedhash(used) do if namespaces[element] then -- skip math diff --git a/tex/context/base/mkiv/colo-ini.lua b/tex/context/base/mkiv/colo-ini.lua index 7d946c729..6b3f515b9 100644 --- a/tex/context/base/mkiv/colo-ini.lua +++ b/tex/context/base/mkiv/colo-ini.lua @@ -1078,6 +1078,7 @@ colors.defineintermediatecolor = defineintermediatecolor -- for the moment downward compatible local patterns = { + CONTEXTLMTXMODE > 0 and "colo-imp-%s.mkxl" or "", "colo-imp-%s.mkiv", "colo-imp-%s.tex", -- obsolete: @@ -1086,13 +1087,7 @@ local patterns = { } local function action(name,foundname) - -- could be one command - context.startreadingfile() - context.startcolorset { name } - context.input(foundname) - context.showmessage("colors",4,name) - context.stopcolorset() - context.stopreadingfile() + context.loadfoundcolorsetfile(name,foundname) end local function failure(name) diff --git a/tex/context/base/mkiv/colo-ini.mkiv b/tex/context/base/mkiv/colo-ini.mkiv index bc4d1c82f..c489635de 100644 --- a/tex/context/base/mkiv/colo-ini.mkiv +++ b/tex/context/base/mkiv/colo-ini.mkiv @@ -107,6 +107,14 @@ \unexpanded\def\definetransparency {\dodoubleargument\colo_basics_define_transpancy} \unexpanded\def\defineglobaltransparency{\dodoubleargument\colo_basics_define_transpancy_global} +\unexpanded\def\loadfoundcolorsetfile#1#2% name foundname / not a user command + {\startreadingfile + \startcolorset[#1]% + \input{#2}% + \stopcolorset + \showmessage\m!colors4{#1}% + \stopreadingfile} + %D \macros %D {startcolor,stopcolor,color,graycolor} %D diff --git a/tex/context/base/mkiv/colo-ini.mkxl b/tex/context/base/mkiv/colo-ini.mkxl index 726e1c47b..e821fb7e2 100644 --- a/tex/context/base/mkiv/colo-ini.mkxl +++ b/tex/context/base/mkiv/colo-ini.mkxl @@ -107,6 +107,14 @@ \unexpanded\def\definetransparency {\dodoubleargument\colo_basics_define_transpancy} \unexpanded\def\defineglobaltransparency{\dodoubleargument\colo_basics_define_transpancy_global} +\unexpanded\def\loadfoundcolorsetfile#1#2% name foundname / not a user command + {\startreadingfile + \startcolorset[#1]% + \input{#2}% + \stopcolorset + \showmessage\m!colors4{#1}% + \stopreadingfile} + %D \macros %D {startcolor,stopcolor,color,graycolor} %D diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 00d450516..775d624a8 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2020.01.09 11:17} +\newcontextversion{2020.01.13 14:52} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index bb60e8ad3..95e6a2637 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.01.09 11:17} +\edef\contextversion{2020.01.13 14:52} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index a2e1ef4c5..f25c9b508 100644 --- a/tex/context/base/mkiv/context.mkxl +++ b/tex/context/base/mkiv/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.01.09 11:17} +\edef\contextversion{2020.01.13 14:52} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/export-example.css b/tex/context/base/mkiv/export-example.css index c39f0bec6..19a2a071e 100644 --- a/tex/context/base/mkiv/export-example.css +++ b/tex/context/base/mkiv/export-example.css @@ -78,13 +78,13 @@ context|div.document { font-family : "DejaVu Serif", "Lucida Bright", serif ; font-size : 12pt ; /* line-height : 14.4pt; */ - line-height : 2.8ex; + line-height : 2.8ex; max-width : 50em ; padding : 1em ; - /* text-align : justify ; */ - text-align : justify ; - /* hyphens : manual ; */ - /* text-justify : inter-word ; */ + /* text-align : justify ; */ + text-align : justify ; + /* hyphens : manual ; */ + /* text-justify : inter-word ; */ } document>metadata, @@ -124,7 +124,7 @@ context|div.document context|div.metadata context|div.metavariable.metaname-titl font-family : "DejaVu Serif", "Lucida Bright", serif ; font-weight : bold ; font-size : 3em ; - text-align : left ; + text-align : left ; margin-bottom : 2ex ; } @@ -183,7 +183,7 @@ context|div.section { sectioncaption, context|div.sectioncaption { display : block ; - text-align : left ; + text-align : left ; page-break-after : avoid ; margin-top : 3ex ; margin-bottom : 2ex ; @@ -343,7 +343,7 @@ context|div.section.summary context|div.sectioncaption context|div.sectiontitle border-bottom-style : solid ; border-color : rgb(50%,50%,100%) ; border-width : .15em; - text-align : left ; + text-align : left ; } section[detail="subsummary"]>sectioncaption>sectiontitle, @@ -355,7 +355,7 @@ context|div.section.subsummary context|div.sectioncaption context|div.sectiontit border-color : rgb(50%,50%,100%) ; border-bottom-style : dotted ; border-width : .15em ; - text-align : left ; + text-align : left ; } /* itemgroup : display */ @@ -367,13 +367,13 @@ context|div.section.subsummary context|div.sectioncaption context|div.sectiontit /* suffix : '.' ; */ @counter-style lower-greek { /* css 3 */ - type : non-repeating ; - glyphs : 'α' 'β' 'γ' 'δ' 'ε' 'ζ' 'η' 'θ' 'ι' 'κ' 'λ' 'μ' 'ν' 'ξ' 'ο' 'π' 'ρ' 'σ' 'τ' 'υ' 'φ' 'χ' 'ψ' 'ω' ; + type : non-repeating ; + glyphs : 'α' 'β' 'γ' 'δ' 'ε' 'ζ' 'η' 'θ' 'ι' 'κ' 'λ' 'μ' 'ν' 'ξ' 'ο' 'π' 'ρ' 'σ' 'τ' 'υ' 'φ' 'χ' 'ψ' 'ω' ; } @counter-style upper-greek { /* css 3 */ - type : non-repeating ; - glyphs : 'Α' 'B' 'Γ' 'Δ' 'Ε' 'Ζ' 'Η' 'Θ' 'Ι' 'Κ' 'Λ' 'Μ' 'Ν' 'Ξ' 'Ο' 'Π' 'Ρ' 'Σ' 'Τ' 'Υ' 'Φ' 'Χ' 'Ψ' 'Ω' ; + type : non-repeating ; + glyphs : 'Α' 'B' 'Γ' 'Δ' 'Ε' 'Ζ' 'Η' 'Θ' 'Ι' 'Κ' 'Λ' 'Μ' 'Ν' 'Ξ' 'Ο' 'Π' 'Ρ' 'Σ' 'Τ' 'Υ' 'Φ' 'Χ' 'Ψ' 'Ω' ; } itemgroup, @@ -428,11 +428,11 @@ context|div.description { descriptiontag, context|div.descriptiontag { display : inline ; - float : left ; - clear : left ; + float : left ; + clear : left ; margin-right : 1em ; - text-align : left ; - font-weight : bold ; + text-align : left ; + font-weight : bold ; } descriptioncontent, @@ -537,8 +537,8 @@ context|div.registerlocation:after { content : "\25B6\00A0\00A0" ; color : rgb(40%,40%,40%) ; font-size : x-small ; - line-height : 0 ; - padding-top : 0.5ex ; + line-height : 0 ; + padding-top : 0.5ex ; vertical-align : top ; } @@ -814,22 +814,22 @@ context|div.delimitedblock.quote:after { delimited, context|div.delimited { - display : inline + display : inline } delimitedcontent, context|div.delimitedcontent { - display : inline + display : inline } delimitedsymbol, context|div.delimitedsymbol { - display : inline + display : inline } delimitedblock, context|div.delimitedblock { - display : block + display : block } subsentence:before, @@ -841,17 +841,17 @@ context|div.subsentence:after { subsentence, context|div.subsentence { - display : inline + display : inline } subsentencecontent, context|div.subsentencecontent { - display : inline + display : inline } subsentencesymbol, context|div.subsentencesymbol { - display : inline + display : inline } /* label : mixed */ diff --git a/tex/context/base/mkiv/file-lib.lua b/tex/context/base/mkiv/file-lib.lua index 7fc599d00..9b0679e25 100644 --- a/tex/context/base/mkiv/file-lib.lua +++ b/tex/context/base/mkiv/file-lib.lua @@ -93,3 +93,25 @@ function resolvers.uselibrary(specification) -- todo: reporter end end end + +-- We keep these in the commands namespace even if it's not that logical +-- but this way we are compatible. + +function commands.loadlibrary(name,foundname,nointerference) + if not foundname then + foundname = name + end + if foundname and foundname ~= "" then + if nointerference then + context.startnointerference() + end + context.startreadingfile() + context.input(foundname) + context.stopreadingfile() + if nointerference then + context.stopnointerference() + end + end +end + +commands.uselibrary = resolvers.uselibrary diff --git a/tex/context/base/mkiv/font-lib.mkvi b/tex/context/base/mkiv/font-lib.mkvi index ac138da07..8953c9b32 100644 --- a/tex/context/base/mkiv/font-lib.mkvi +++ b/tex/context/base/mkiv/font-lib.mkvi @@ -53,7 +53,9 @@ \ifcase\contextlmtxmode \ifnum\luatexversion>111 - \registerctxluafile{font-ocm}{} % mkiv new + \doifelsefileexists{font-ocm.lua} + {\registerctxluafile{font-ocm}{}} % mkiv new + {\registerctxluafile{font-ocl}{}} \else \registerctxluafile{font-ocl}{} % generic (will become luatex-fonts-ocl) \fi diff --git a/tex/context/base/mkiv/java-ini.lua b/tex/context/base/mkiv/java-ini.lua index b41b065e8..ebe51d15e 100644 --- a/tex/context/base/mkiv/java-ini.lua +++ b/tex/context/base/mkiv/java-ini.lua @@ -199,6 +199,7 @@ function javascripts.flushpreambles() end local patterns = { + CONTEXTLMTXMODE > 0 and "java-imp-%s.mkxl" or "", "java-imp-%s.mkiv", "java-imp-%s.tex", -- obsolete: @@ -207,12 +208,8 @@ local patterns = { } local function action(name,foundname) - context.startnointerference() - context.startreadingfile() - context.input(foundname) + commands.loadlibrary(name,foundname,true) status_javascripts("loaded: library %a",name) - context.stopreadingfile() - context.stopnointerference() end local function failure(name) diff --git a/tex/context/base/mkiv/mlib-ctx.lua b/tex/context/base/mkiv/mlib-ctx.lua index 7641cc6e8..c913408cd 100644 --- a/tex/context/base/mkiv/mlib-ctx.lua +++ b/tex/context/base/mkiv/mlib-ctx.lua @@ -89,10 +89,8 @@ local patterns = { } local function action(name,foundname) + commands.loadlibrary(name,foundname,false) status_metapost("library %a is loaded",name) - context.startreadingfile() - context.input(foundname) - context.stopreadingfile() end local function failure(name) diff --git a/tex/context/base/mkiv/mult-mes.lua b/tex/context/base/mkiv/mult-mes.lua index 1eb429763..299f1a404 100644 --- a/tex/context/base/mkiv/mult-mes.lua +++ b/tex/context/base/mkiv/mult-mes.lua @@ -1169,6 +1169,10 @@ return { no = "leser inn symbolsett %a", ro = "se incarca setul de simboluri %a", }, + ["symbols:2"] = { + en = "symbolset %a is unknown", + nl = "symboolset %a is onbekend", + }, ["system:1"] = { cs = "nacteni pomocneho souboru odlozeno (typemode)", de = "Laden der Hilfsdatei aufgeschoben (Eingabe-Modus)", diff --git a/tex/context/base/mkiv/mult-prm.lua b/tex/context/base/mkiv/mult-prm.lua index 71479a3da..279de60e2 100644 --- a/tex/context/base/mkiv/mult-prm.lua +++ b/tex/context/base/mkiv/mult-prm.lua @@ -15,10 +15,6 @@ return { "detokenize", "dimexpr", "displaywidowpenalties", - "eTeXVersion", - "eTeXminorversion", - "eTeXrevision", - "eTeXversion", "everyeof", "firstmarks", "fontchardp", diff --git a/tex/context/base/mkiv/publ-ini.lua b/tex/context/base/mkiv/publ-ini.lua index 5a3a4ea21..da6c74b2e 100644 --- a/tex/context/base/mkiv/publ-ini.lua +++ b/tex/context/base/mkiv/publ-ini.lua @@ -1615,6 +1615,8 @@ end do local patterns = { + CONTEXTLMTXMODE > 0 and "symb-imp-%s.mklx" or "", + CONTEXTLMTXMODE > 0 and "symb-imp-%s.mkxl" or "", "publ-imp-%s.mkvi", "publ-imp-%s.mkiv", "publ-imp-%s.tex", @@ -1625,7 +1627,7 @@ do end local function action(name,foundname) - context.input(foundname) + context.loadfoundpublicationfile(name,foundname) end function publications.loaddefinitionfile(name) -- a more specific name diff --git a/tex/context/base/mkiv/publ-ini.mkiv b/tex/context/base/mkiv/publ-ini.mkiv index 8e70ec5a7..996b6d3ca 100644 --- a/tex/context/base/mkiv/publ-ini.mkiv +++ b/tex/context/base/mkiv/publ-ini.mkiv @@ -122,6 +122,9 @@ {\pop_macro_currentbtxspecification \protect} +\unexpanded\def\loadfoundpublicationfile#1#2% name foundname / not a user command + {\input{#2}} + \unexpanded\def\loadbtxdefinitionfile [#1]{\clf_btxloaddefinitionfile {#1}} \unexpanded\def\loadbtxreplacementfile[#1]{\clf_btxloadreplacementfile{#1}} diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex 9344f8692..5185623b7 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 11bf6a7cd..0908c5811 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/symb-ini.lua b/tex/context/base/mkiv/symb-ini.lua index 6a4a18825..588e5d2ab 100644 --- a/tex/context/base/mkiv/symb-ini.lua +++ b/tex/context/base/mkiv/symb-ini.lua @@ -21,6 +21,7 @@ local report_symbols = logs.reporter ("fonts","symbols") local status_symbols = logs.messenger("fonts","symbols") local patterns = { + CONTEXTLMTXMODE > 0 and "symb-imp-%s.mkxl" or "", "symb-imp-%s.mkiv", "symb-imp-%s.tex", -- obsolete: @@ -29,12 +30,8 @@ local patterns = { } local function action(name,foundname) - -- context.startnointerference() - context.startreadingfile() - context.input(foundname) + commands.loadlibrary(name,foundname,false) status_symbols("library %a loaded",name) - context.stopreadingfile() - -- context.stopnointerference() end local function failure(name) diff --git a/tex/context/base/mkiv/syst-ini.mkxl b/tex/context/base/mkiv/syst-ini.mkxl index 0ea381d07..baca0bb5c 100644 --- a/tex/context/base/mkiv/syst-ini.mkxl +++ b/tex/context/base/mkiv/syst-ini.mkxl @@ -679,6 +679,8 @@ % \chardef\definedifcode = 18 % \chardef\csnameifcode = 19 % \chardef\fontcharifcode = 20 +% +% % there are some more in luametatex %D Of course we want even bigger log files, so we copied this from the \ETEX\ %D source files. diff --git a/tex/context/base/mkiv/tabl-xtb.mkvi b/tex/context/base/mkiv/tabl-xtb.mkvi index 148304331..e82795892 100644 --- a/tex/context/base/mkiv/tabl-xtb.mkvi +++ b/tex/context/base/mkiv/tabl-xtb.mkvi @@ -498,9 +498,16 @@ \unexpanded\def\stopxcell {\tabl_x_stop_cell} +% \unexpanded\def\dummyxcell +% {\tabl_x_start_cell_nop +% \tabl_x_stop_cell} + \unexpanded\def\dummyxcell - {\tabl_x_start_cell_nop - \tabl_x_stop_cell} + {\begingroup + \let\inheritedxtableframed\relax + \tabl_x_start_cell_nop + \tabl_x_stop_cell + \endgroup} % \unexpanded\def\tabl_x_begin_of_cell % {%\inhibitblank % already in framed diff --git a/tex/context/base/mkiv/type-ini.lua b/tex/context/base/mkiv/type-ini.lua index 798b9a894..a2e19725e 100644 --- a/tex/context/base/mkiv/type-ini.lua +++ b/tex/context/base/mkiv/type-ini.lua @@ -25,14 +25,7 @@ local p_strip = Cs((P("type-") * (P("imp-")^0))^0/"" * P(1)^0) local report = logs.reporter("fonts","typescripts") local function action(name,foundname) - -- context.startreadingfile() - -- context.unprotect() - -- context.pushendofline() - -- context.input(foundname) - -- context.popendofline() - -- context.protect() - -- context.stopreadingfile() - context.loadfoundtypescriptfile(foundname) + context.loadfoundtypescriptfile(name,foundname) end local patterns = { diff --git a/tex/context/base/mkiv/type-ini.mklx b/tex/context/base/mkiv/type-ini.mklx index 67dbb7f6d..5470c9016 100644 --- a/tex/context/base/mkiv/type-ini.mklx +++ b/tex/context/base/mkiv/type-ini.mklx @@ -165,11 +165,11 @@ \clf_loadtypescriptfile{#1}% \pop_macro_typescriptstate} -\unexpanded\def\loadfoundtypescriptfile#1% +\unexpanded\def\loadfoundtypescriptfile#1#2% name foundname / not a user command {\startreadingfile \unprotect \pushendofline - \input{#1}% + \input{#2}% \popendofline \protect \stopreadingfile} diff --git a/tex/context/base/mkiv/type-ini.mkvi b/tex/context/base/mkiv/type-ini.mkvi index 6f0a9a9da..ff89c7a8f 100644 --- a/tex/context/base/mkiv/type-ini.mkvi +++ b/tex/context/base/mkiv/type-ini.mkvi @@ -192,11 +192,11 @@ \clf_loadtypescriptfile{#1}% \pop_macro_typescriptstate} -\unexpanded\def\loadfoundtypescriptfile#1% +\unexpanded\def\loadfoundtypescriptfile#1#2% name foundname / not a user command {\startreadingfile \unprotect \pushendofline - \input{#1}% + \input{#2}% \popendofline \protect \stopreadingfile} diff --git a/tex/context/base/mkiv/type-set.mkiv b/tex/context/base/mkiv/type-set.mkiv index c6b0c8841..68cd939d7 100644 --- a/tex/context/base/mkiv/type-set.mkiv +++ b/tex/context/base/mkiv/type-set.mkiv @@ -25,11 +25,13 @@ % but ... let's make sure that newlines are gone - \loadfoundtypescriptfile{type-def.mkiv} - \loadfoundtypescriptfile{type-lua.mkiv} - \loadfoundtypescriptfile{type-siz.mkiv} - \loadfoundtypescriptfile{type-fbk.mkiv} - \loadfoundtypescriptfile{type-imp-latinmodern.mkiv} + % beware: these are low level calls, so not user commands ! + + \loadfoundtypescriptfile\empty{type-def.mkiv} + \loadfoundtypescriptfile\empty{type-lua.mkiv} + \loadfoundtypescriptfile\empty{type-siz.mkiv} + \loadfoundtypescriptfile\empty{type-fbk.mkiv} + \loadfoundtypescriptfile\empty{type-imp-latinmodern.mkiv} % and not: diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex e8ccc0a93..7a794c838 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex af101f6ed..fed4f8288 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 0884d743b..92d798ff8 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 : 01/09/20 11:17:13 +-- merge date : 01/13/20 14:52:02 do -- begin closure to overcome local limits and interference |