diff options
author | Marius <mariausol@gmail.com> | 2012-07-26 21:20:16 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2012-07-26 21:20:16 +0300 |
commit | f09b2aabeeebefd483622c018ae170e37397308d (patch) | |
tree | 6835400206e98ff028450e631d2cd8418831a3b2 /tex | |
parent | 0d565456a826f94f3d8a7d8f9bb28982737615cd (diff) | |
download | context-f09b2aabeeebefd483622c018ae170e37397308d.tar.gz |
beta 2012.07.26 19:37
Diffstat (limited to 'tex')
139 files changed, 5829 insertions, 4838 deletions
diff --git a/tex/context/base/anch-pgr.lua b/tex/context/base/anch-pgr.lua index aabf018fc..aba61794b 100644 --- a/tex/context/base/anch-pgr.lua +++ b/tex/context/base/anch-pgr.lua @@ -8,6 +8,8 @@ if not modules then modules = { } end modules ['anch-pgr'] = { -- todo: we need to clean up lists (of previous pages) +local commands, context = commands, context + local format = string.format local abs = math.abs local concat, sort = table.concat, table.sort diff --git a/tex/context/base/anch-pos.lua b/tex/context/base/anch-pos.lua index 5d01a6e46..6fa916291 100644 --- a/tex/context/base/anch-pos.lua +++ b/tex/context/base/anch-pos.lua @@ -17,6 +17,8 @@ more efficient.</p> -- maybe replace texsp by our own converter (stay at the lua end) -- eventually mp will have large numbers so we can use sp there too +local commands, context = commands, context + local tostring, next, rawget, setmetatable = tostring, next, rawget, setmetatable local concat, sort = table.concat, table.sort local format, gmatch, match = string.format, string.gmatch, string.match @@ -969,35 +971,35 @@ function commands.MPxywhd(id) end end --- is testcase already defined? if so, then local +local doif, doifelse = commands.doif, commands.doifelse function commands.doifpositionelse(name) - commands.doifelse(collected[name]) + doifelse(collected[name]) end function commands.doifposition(name) - commands.doif(collected[name]) + doif(collected[name]) end function commands.doifpositiononpage(name,page) -- probably always realpageno local c = collected[name] - commands.testcase(c and c.p == page) + doifelse(c and c.p == page) end function commands.doifoverlappingelse(one,two,overlappingmargin) - commands.testcase(overlapping(one,two,overlappingmargin)) + doifelse(overlapping(one,two,overlappingmargin)) end function commands.doifpositionsonsamepageelse(list,page) - commands.testcase(onsamepage(list)) + doifelse(onsamepage(list)) end function commands.doifpositionsonthispageelse(list) - commands.testcase(onsamepage(list,tostring(tex.count.realpageno))) + doifelse(onsamepage(list,tostring(tex.count.realpageno))) end function commands.doifelsepositionsused() - commands.testcase(next(collected)) + doifelse(next(collected)) end commands.markcolumnbox = jobpositions.markcolumnbox diff --git a/tex/context/base/attr-col.lua b/tex/context/base/attr-col.lua index c592d1dc1..18182ba85 100644 --- a/tex/context/base/attr-col.lua +++ b/tex/context/base/attr-col.lua @@ -15,8 +15,11 @@ if not modules then modules = { } end modules ['attr-col'] = { local type = type local format = string.format local concat = table.concat +local min, max, floor = math.min, math.max, math.floor -local attributes, nodes = attributes, nodes +local attributes, nodes, utilities, logs, backends, storage = attributes, nodes, utilities, logs, backends, storage +local commands, context, interfaces = commands, context, interfaces +local tex = tex local allocate = utilities.storage.allocate local setmetatableindex = table.setmetatableindex @@ -31,11 +34,13 @@ local report_transparencies = logs.reporter("transparencies","support") -- nb: attributes: color etc is much slower than normal (marks + literals) but ... -- nb. too many "0 g"s -local states = attributes.states -local tasks = nodes.tasks -local nodeinjections = backends.nodeinjections -local registrations = backends.registrations -local unsetvalue = attributes.unsetvalue +local states = attributes.states +local tasks = nodes.tasks +local nodeinjections = backends.nodeinjections +local registrations = backends.registrations +local unsetvalue = attributes.unsetvalue + +local registerstorage = storage.register -- We can distinguish between rules and glyphs but it's not worth the trouble. A -- first implementation did that and while it saves a bit for glyphs and rules, it @@ -63,7 +68,7 @@ local unsetvalue = attributes.unsetvalue -- colors.strings[color] = "return colors." .. colorspace .. "(" .. concat({...},",") .. ")" -- end -- --- storage.register("attributes/colors/data", colors.strings, "attributes.colors.data") -- evaluated +-- registerstorage("attributes/colors/data", colors.strings, "attributes.colors.data") -- evaluated -- -- We assume that only processcolors are defined in the format. @@ -83,9 +88,17 @@ colors.default = 1 colors.main = nil colors.triggering = true colors.supported = true +colors.model = "all" + +local data = colors.data +local values = colors.values +local registered = colors.registered -storage.register("attributes/colors/values", colors.values, "attributes.colors.values") -storage.register("attributes/colors/registered", colors.registered, "attributes.colors.registered") +local numbers = attributes.numbers +local list = attributes.list + +registerstorage("attributes/colors/values", values, "attributes.colors.values") +registerstorage("attributes/colors/registered", registered, "attributes.colors.registered") local templates = { rgb = "r:%s:%s:%s", @@ -104,17 +117,6 @@ local models = { cmyk = 4, } -colors.model = "all" - -local data = colors.data -local values = colors.values -local registered = colors.registered - -local numbers = attributes.numbers -local list = attributes.list - -local min, max, floor = math.min, math.max, math.floor - local function rgbtocmyk(r,g,b) -- we could reduce return 1-r, 1-g, 1-b, 0 end @@ -125,9 +127,9 @@ end local function rgbtogray(r,g,b) if colors.weightgray then - return .30*r+.59*g+.11*b + return .30*r + .59*g + .11*b else - return r/3+g/3+b/3 + return r/3 + g/3 + b/3 end end @@ -135,6 +137,17 @@ local function cmyktogray(c,m,y,k) return rgbtogray(cmyktorgb(c,m,y,k)) end +-- not critical so not needed: +-- +-- local function cmyktogray(c,m,y,k) +-- local r, g, b = 1.0 - min(1.0,c+k), 1.0 - min(1.0,m+k), 1.0 - min(1.0,y+k) +-- if colors.weightgray then +-- return .30*r + .59*g + .11*b +-- else +-- return r/3 + g/3 + b/3 +-- end +-- end + -- http://en.wikipedia.org/wiki/HSI_color_space -- http://nl.wikipedia.org/wiki/HSV_(kleurruimte) @@ -363,15 +376,15 @@ transparencies.triggering = true transparencies.attribute = a_transparency transparencies.supported = true -storage.register("attributes/transparencies/registered", transparencies.registered, "attributes.transparencies.registered") -storage.register("attributes/transparencies/values", transparencies.values, "attributes.transparencies.values") +local registered = transparencies.registered -- we could use a 2 dimensional table instead +local data = transparencies.data +local values = transparencies.values +local template = "%s:%s" -local registered = transparencies.registered -- we could use a 2 dimensional table instead -local data = transparencies.data -local values = transparencies.values -local template = "%s:%s" +registerstorage("attributes/transparencies/registered", registered, "attributes.transparencies.registered") +registerstorage("attributes/transparencies/values", values, "attributes.transparencies.values") -local function inject_transparency (...) +local function inject_transparency(...) inject_transparency = nodeinjections.transparency return inject_transparency(...) end diff --git a/tex/context/base/attr-eff.lua b/tex/context/base/attr-eff.lua index 64a620bad..60e0c08ac 100644 --- a/tex/context/base/attr-eff.lua +++ b/tex/context/base/attr-eff.lua @@ -8,7 +8,9 @@ if not modules then modules = { } end modules ['attr-eff'] = { local format = string.format -local attributes, nodes = attributes, nodes +local commands, interfaces = commands, interfaces +local attributes, nodes, backends, utilities = attributes, nodes, backends, utilities +local tex = tex local states = attributes.states local tasks = nodes.tasks @@ -30,14 +32,14 @@ effects.values = effects.values or { } effects.registered = effects.registered or { } effects.attribute = a_effect -storage.register("attributes/effects/registered", effects.registered, "attributes.effects.registered") -storage.register("attributes/effects/values", effects.values, "attributes.effects.values") +local data = effects.data +local registered = effects.registered +local values = effects.values -local template = "%s:%s:%s" +local template = "%s:%s:%s" -local data = effects.data -local registered = effects.registered -local values = effects.values +storage.register("attributes/effects/registered", registered, "attributes.effects.registered") +storage.register("attributes/effects/values", values, "attributes.effects.values") -- valid effects: normal inner outer both hidden (stretch,rulethickness,effect) diff --git a/tex/context/base/attr-ini.lua b/tex/context/base/attr-ini.lua index f3714fcb4..5a3bafce3 100644 --- a/tex/context/base/attr-ini.lua +++ b/tex/context/base/attr-ini.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['attr-ini'] = { license = "see context related readme files" } +local commands, context, nodes, storage = commands, context, nodes, storage + local next, type = next, type --[[ldx-- @@ -13,11 +15,10 @@ local next, type = next, type symbolic names later on.</p> --ldx]]-- -attributes = attributes or { } - -local attributes, nodes = attributes, nodes +attributes = attributes or { } +local attributes = attributes --- todo: local and then gobals ... first loaded anyway +local sharedstorage = storage.shared attributes.names = attributes.names or { } attributes.numbers = attributes.numbers or { } @@ -26,15 +27,14 @@ attributes.states = attributes.states or { } attributes.handlers = attributes.handlers or { } attributes.unsetvalue = -0x7FFFFFFF -local names, numbers, list = attributes.names, attributes.numbers, attributes.list +local names = attributes.names +local numbers = attributes.numbers +local list = attributes.list storage.register("attributes/names", names, "attributes.names") storage.register("attributes/numbers", numbers, "attributes.numbers") storage.register("attributes/list", list, "attributes.list") -names [0] = "fontdynamic" -numbers["fontdynamic"] = 0 - function attributes.define(name,number) -- at the tex end if not numbers[name] then numbers[name] = number @@ -44,12 +44,18 @@ function attributes.define(name,number) -- at the tex end end --[[ldx-- +<p>We reserve this one as we really want it to be always set (faster).</p> +--ldx]]-- + +names[0], numbers["fontdynamic"] = "fontdynamic", 0 + +--[[ldx-- <p>We can use the attributes in the range 127-255 (outside user space). These are only used when no attribute is set at the \TEX\ end which normally happens in <l n='context'/>.</p> --ldx]]-- -storage.shared.attributes_last_private = storage.shared.attributes_last_private or 127 +sharedstorage.attributes_last_private = sharedstorage.attributes_last_private or 127 -- to be considered (so that we can use an array access): -- @@ -57,10 +63,10 @@ storage.shared.attributes_last_private = storage.shared.attributes_last_private -- -- setmetatable(private, { -- __index = function(t,name) --- local number = storage.shared.attributes_last_private or 127 +-- local number = sharedstorage.attributes_last_private -- if number < 1023 then -- tex.count.minallocatedattribute - 1 -- number = number + 1 --- storage.shared.attributes_last_private = number +-- sharedstorage.attributes_last_private = number -- end -- numbers[name], names[number], list[number] = number, name, { } -- private[name] = number @@ -74,12 +80,12 @@ storage.shared.attributes_last_private = storage.shared.attributes_last_private function attributes.private(name) -- at the lua end (hidden from user) local number = numbers[name] if not number then - local last = storage.shared.attributes_last_private or 127 + local last = sharedstorage.attributes_last_private if last < 1023 then -- tex.count.minallocatedattribute - 1 last = last + 1 - storage.shared.attributes_last_private = last + sharedstorage.attributes_last_private = last else - report_attribute("no more room for private attributes") -- fatal + report_attribute("no more room for private attributes") os.exit() end number = last @@ -88,7 +94,7 @@ function attributes.private(name) -- at the lua end (hidden from user) return number end --- new (actually a tracer) +-- tracers local report_attribute = logs.reporter("attributes") diff --git a/tex/context/base/attr-lay.lua b/tex/context/base/attr-lay.lua index bb5cce4e2..8046a43a7 100644 --- a/tex/context/base/attr-lay.lua +++ b/tex/context/base/attr-lay.lua @@ -10,10 +10,16 @@ if not modules then modules = { } end modules ['attr-lay'] = { -- but when we need it stacked layers might show up too; the next function based -- approach can be replaced by static (metatable driven) resolvers +-- maybe use backends.registrations here too + local type = type local format = string.format local insert, remove, concat = table.insert, table.remove, table.concat +local attributes, nodes, utilities, logs, backends = attributes, nodes, utilities, logs, backends +local commands, context, interfaces = commands, context, interfaces +local tex = tex + local allocate = utilities.storage.allocate local setmetatableindex = table.setmetatableindex @@ -26,7 +32,6 @@ local report_viewerlayers = logs.reporter("viewerlayers") -- nb. too many "0 g"s -- nb: more local tables -local attributes, nodes = attributes, nodes attributes.viewerlayers = attributes.viewerlayers or { } local viewerlayers = attributes.viewerlayers @@ -59,16 +64,17 @@ local unsetvalue = attributes.unsetvalue local nodepool = nodes.pool -storage.register("attributes/viewerlayers/registered", viewerlayers.registered, "attributes.viewerlayers.registered") -storage.register("attributes/viewerlayers/values", viewerlayers.values, "attributes.viewerlayers.values") -storage.register("attributes/viewerlayers/scopes", viewerlayers.scopes, "attributes.viewerlayers.scopes") +local data = viewerlayers.data +local values = viewerlayers.values +local listwise = viewerlayers.listwise +local registered = viewerlayers.registered +local scopes = viewerlayers.scopes -local data = viewerlayers.data -local values = viewerlayers.values -local listwise = viewerlayers.listwise -local registered = viewerlayers.registered -local scopes = viewerlayers.scopes -local template = "%s" +local template = "%s" + +storage.register("attributes/viewerlayers/registered", registered, "attributes.viewerlayers.registered") +storage.register("attributes/viewerlayers/values", values, "attributes.viewerlayers.values") +storage.register("attributes/viewerlayers/scopes", scopes, "attributes.viewerlayers.scopes") local layerstacker = utilities.stacker.new("layers") -- experiment @@ -86,9 +92,12 @@ end -- stacked +local function startlayer(...) startlayer = nodeinjections.startlayer return startlayer(...) end +local function stoplayer (...) stoplayer = nodeinjections.stoplayer return stoplayer (...) end + local function extender(viewerlayers,key) if viewerlayers.supported and key == "none" then - local d = nodeinjections.stoplayer() + local d = stoplayer() viewerlayers.none = d return d end @@ -98,7 +107,7 @@ local function reviver(data,n) if viewerlayers.supported then local v = values[n] if v then - local d = nodeinjections.startlayer(v) + local d = startlayer(v) data[n] = d return d else @@ -110,38 +119,9 @@ end setmetatableindex(viewerlayers, extender) setmetatableindex(viewerlayers.data, reviver) -function layerstacker.start(s,t,first,last) -- move to lpdf-ren.lua - local r = { } - for i=first,last do - r[#r+1] = codeinjections.startlayer(values[t[i]]) - end - r = concat(r," ") --- print("start",r) - return nodepool.pdfliteral(r) -end - -function layerstacker.stop(s,t,first,last) -- move to lpdf-ren.lua - local r = { } - for i=last,first,-1 do - r[#r+1] = codeinjections.stoplayer() - end - r = concat(r," ") --- print("stop",r) - return nodepool.pdfliteral(r) -end - -function layerstacker.change(s,t1,first1,last1,t2,first2,last2) -- move to lpdf-ren.lua - local r = { } - for i=last1,first1,-1 do - r[#r+1] = codeinjections.stoplayer() - end - for i=first2,last2 do - r[#r+1] = codeinjections.startlayer(values[t2[i]]) - end - r = concat(r," ") --- print("change",r) - return nodepool.pdfliteral(r) -end +-- layerstacker.start = function(...) local f = nodeinjections.startstackedlayer layerstacker.start = f return f(...) end +-- layerstacker.stop = function(...) local f = nodeinjections.stopstackedlayer layerstacker.stop = f return f(...) end +-- layerstacker.change = function(...) local f = nodeinjections.changestackedlayer layerstacker.change = f return f(...) end local function initializer(...) return states.initialize(...) @@ -152,7 +132,7 @@ attributes.viewerlayers.handler = nodes.installattributehandler { namespace = viewerlayers, initializer = initializer, finalizer = states.finalize, --- processor = states.stacked, + -- processor = states.stacked, processor = states.stacker, } diff --git a/tex/context/base/attr-neg.lua b/tex/context/base/attr-neg.lua index 4d89cb49b..c32cec956 100644 --- a/tex/context/base/attr-neg.lua +++ b/tex/context/base/attr-neg.lua @@ -11,8 +11,9 @@ if not modules then modules = { } end modules ['attr-neg'] = { local format = string.format - -local attributes, nodes = attributes, nodes +local attributes, nodes, utilities, logs, backends = attributes, nodes, utilities, logs, backends +local commands, context, interfaces = commands, context, interfaces +local tex = tex local states = attributes.states local tasks = nodes.tasks diff --git a/tex/context/base/back-ini.lua b/tex/context/base/back-ini.lua index 0c02e201a..f76b85438 100644 --- a/tex/context/base/back-ini.lua +++ b/tex/context/base/back-ini.lua @@ -93,9 +93,9 @@ tables.vfspecials = allocate { stopslant = comment, } --- -- experimental code -- +-- experimental code -- -function commands.pdfrotation(a) +function commands.pdfrotation(a) -- somewhat weird here local s, c = sind(a), cosd(a) context("%s %s %s %s",c,s,-s,c) end diff --git a/tex/context/base/back-swf.mkiv b/tex/context/base/back-swf.mkiv index 595f4aa15..09745e0f9 100644 --- a/tex/context/base/back-swf.mkiv +++ b/tex/context/base/back-swf.mkiv @@ -11,9 +11,11 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -% This is only a placeholder that demonstrates the usage of swf resources. -% There is no need to include this file. - +%D This is only a placeholder that demonstrates the usage of swf resources. +%D There is no need to include this file into the format. The module was +%D tested by Luigi and Willi and based on their suggestions the functionality +%D was improved. +%D %D \starttyping %D \enabletrackers[graphics.locating] %D \enabletrackers[backend.swf] diff --git a/tex/context/base/back-u3d.mkiv b/tex/context/base/back-u3d.mkiv index dfe8a90c2..89d26ee41 100644 --- a/tex/context/base/back-u3d.mkiv +++ b/tex/context/base/back-u3d.mkiv @@ -11,10 +11,9 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -% This is only a placeholder that demonstrates the usage of u3d -% resources. The user interface is rather messy an might be -% improved. The files and setup is derived from an example by -% Michael Vidiassov. +%D This is only a placeholder that demonstrates the usage of u3d resources. The +%D user interface is rather messy an might be improved. The files and setup is +%D derived from an example by Michael Vidiassov. \endinput diff --git a/tex/context/base/bibl-tra.lua b/tex/context/base/bibl-tra.lua index 3436ac88c..ca6403c44 100644 --- a/tex/context/base/bibl-tra.lua +++ b/tex/context/base/bibl-tra.lua @@ -115,7 +115,7 @@ function hacks.registerplaced(str) end function hacks.doifalreadyplaced(str) - commands.testcase(used[str]) + commands.doifelse(used[str]) end -- we ask for <n>:tag but when we can't find it we go back diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua index ab386a950..e5763267f 100644 --- a/tex/context/base/buff-ini.lua +++ b/tex/context/base/buff-ini.lua @@ -18,11 +18,13 @@ local type, next = type, next local sub, format, match, find = string.sub, string.format, string.match, string.find local count, splitlines, validstring = string.count, string.splitlines, string.valid -local variables = interfaces.variables +local variables = interfaces.variables local settings_to_array = utilities.parsers.settings_to_array -local ctxcatcodes = tex.ctxcatcodes -local txtcatcodes = tex.txtcatcodes +local catcodenumbers = catcodes.numbers + +local ctxcatcodes = catcodenumbers.ctxcatcodes +local txtcatcodes = catcodenumbers.txtcatcodes buffers = { } @@ -184,7 +186,7 @@ function commands.grabbuffer(name,begintag,endtag,bufferdata,catcodes) -- maybe end end assign(name,dn,catcodes) - commands.testcase(more) + commands.doifelse(more) end -- The optional prefix hack is there for the typesetbuffer feature and @@ -265,7 +267,7 @@ function commands.getbufferctxlua(name) end function commands.doifelsebuffer(name) - commands.testcase(exists(name)) + commands.doifelse(exists(name)) end -- This only used for mp buffers and is a kludge. Don't change the diff --git a/tex/context/base/buff-par.lua b/tex/context/base/buff-par.lua index 58ae5a268..bcdcc851e 100644 --- a/tex/context/base/buff-par.lua +++ b/tex/context/base/buff-par.lua @@ -175,5 +175,5 @@ commands.placeparallel = parallel.place commands.resetparallel = parallel.reset function commands.doifelseparallel(category,tags) - commands.testcase(parallel.hassomecontent(category,tags)) + commands.doifelse(parallel.hassomecontent(category,tags)) end diff --git a/tex/context/base/buff-ver.lua b/tex/context/base/buff-ver.lua index 004d89858..06adfe4a6 100644 --- a/tex/context/base/buff-ver.lua +++ b/tex/context/base/buff-ver.lua @@ -688,7 +688,7 @@ local getlines = buffers.getlines -- interface function commands.doifelsevisualizer(name) - commands.testcase(specifications[lower(name)]) + commands.doifelse(specifications[lower(name)]) end commands.loadvisualizer = visualizers.load diff --git a/tex/context/base/catc-ini.lua b/tex/context/base/catc-ini.lua index b2c793a6a..d4f9b65af 100644 --- a/tex/context/base/catc-ini.lua +++ b/tex/context/base/catc-ini.lua @@ -6,8 +6,6 @@ if not modules then modules = { } end modules ['catc-ini'] = { license = "see context related readme files" } --- todo: everywhere replace tex.ctxcatcodes -> catcodes.numbers.ctxcatcodes - catcodes = catcodes or { } catcodes.numbers = catcodes.numbers or { } catcodes.names = catcodes.names or { } @@ -15,26 +13,29 @@ catcodes.names = catcodes.names or { } storage.register("catcodes/numbers", catcodes.numbers, "catcodes.numbers") storage.register("catcodes/names", catcodes.names, "catcodes.names") +local numbers = catcodes.numbers +local names = catcodes.names + -- this only happens at initime function catcodes.register(name,number) - catcodes.numbers[name] = number - local cnn = catcodes.names[number] + numbers[name] = number + local cnn = names[number] if cnn then cnn[#cnn+1] = name else - catcodes.names[number] = { name } + names[number] = { name } end - tex[name] = number + tex[name] = number -- downward compatible end -- this only happens at runtime -for k, v in next, catcodes.numbers do - tex[k] = v +for k, v in next, numbers do + tex[k] = v -- downward compatible end -- nasty -table.setmetatableindex(catcodes.numbers,function(t,k) if type(k) == "number" then t[k] = k return k end end) -table.setmetatableindex(catcodes.names, function(t,k) if type(k) == "string" then t[k] = k return k end end) +table.setmetatableindex(numbers,function(t,k) if type(k) == "number" then t[k] = k return k end end) +table.setmetatableindex(names, function(t,k) if type(k) == "string" then t[k] = k return k end end) diff --git a/tex/context/base/char-cjk.lua b/tex/context/base/char-cjk.lua index b077f4a3e..6232ebcad 100644 --- a/tex/context/base/char-cjk.lua +++ b/tex/context/base/char-cjk.lua @@ -226,24 +226,6 @@ local hangul_syllable_basetable = { linebreak = "h2", } ---~ local hangul_syllable_metatable = { ---~ __index = function(t,k) ---~ local u = t.unicodeslot ---~ if k == "fscode" then ---~ -- no need to cache this as we normally use fscodes ---~ return leadconsonant(u) ---~ elseif k == "shcode" then ---~ return { decomposed(u) } ---~ elseif k == "specials" then ---~ return { "char", decomposed(u) } ---~ elseif k == "description" then ---~ return description(u) ---~ else ---~ return hangul_syllable_basetable[k] ---~ end ---~ end ---~ } - local hangul_syllable_metatable = { __index = function(t,k) local u = t.unicodeslot diff --git a/tex/context/base/char-enc.lua b/tex/context/base/char-enc.lua index 19955ad84..048837eec 100644 --- a/tex/context/base/char-enc.lua +++ b/tex/context/base/char-enc.lua @@ -4,6 +4,7 @@ if not modules then modules = { } end modules ['char-enc'] = { author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", copyright = "PRAGMA ADE / ConTeXt Development Team", license = "see context related readme files" + -- dataonly = true, } -- Thanks to tex4ht for these mappings. @@ -144,25 +145,25 @@ characters.synonyms = allocate { -- afm mess Yen = 0x00A5, } ---~ if not characters.enccodes then ---~ ---~ local enccodes = { } characters.enccodes = enccodes ---~ ---~ for unicode, data in next, characters.data do ---~ local encname = data.adobename or data.contextname ---~ if encname then ---~ enccodes[encname] = unicode ---~ end ---~ end ---~ ---~ for name, unicode in next, characters.synonyms do ---~ if not enccodes[name] then enccodes[name] = unicode end ---~ end ---~ ---~ ---~ end ---~ ---~ storage.register("characters.enccodes", characters.enccodes, "characters.enccodes") +-- if not characters.enccodes then +-- +-- local enccodes = { } characters.enccodes = enccodes +-- +-- for unicode, data in next, characters.data do +-- local encname = data.adobename or data.contextname +-- if encname then +-- enccodes[encname] = unicode +-- end +-- end +-- +-- for name, unicode in next, characters.synonyms do +-- if not enccodes[name] then enccodes[name] = unicode end +-- end +-- +-- +-- end +-- +-- storage.register("characters.enccodes", characters.enccodes, "characters.enccodes") -- As this table is seldom used, we can delay its definition. Beware, this means -- that table.print would not work on this file unless it is accessed once. This diff --git a/tex/context/base/char-ent.lua b/tex/context/base/char-ent.lua index 65dbdf992..ef55be7e4 100644 --- a/tex/context/base/char-ent.lua +++ b/tex/context/base/char-ent.lua @@ -9,8 +9,6 @@ if not modules then modules = { } end modules ['char-ent'] = { -- http://www.w3.org/2003/entities/2007/w3centities-f.ent -- http://www.w3.org/2003/entities/2007/htmlmathml-f.ent --- this might go into char-def - local entities = utilities.storage.allocate { ["AElig"] = "Æ", -- U+000C6 ["AMP"] = "&", -- U+00026 diff --git a/tex/context/base/char-ini.lua b/tex/context/base/char-ini.lua index 90e36bc7b..778035ff4 100644 --- a/tex/context/base/char-ini.lua +++ b/tex/context/base/char-ini.lua @@ -11,10 +11,9 @@ if not modules then modules = { } end modules ['char-ini'] = { -- we can remove the tag range starting at 0xE0000 (special applications) local tex = tex -local utf = unicode.utf8 local utfchar, utfbyte, utfvalues = utf.char, utf.byte, string.utfvalues -local ustring = unicode.ustring +local ustring, utf = unicode.ustring, unicode.utf8 local concat, unpack, tohash = table.concat, table.unpack, table.tohash local next, tonumber, type, rawget, rawset = next, tonumber, type, rawget, rawset local format, lower, gsub, match, gmatch = string.format, string.lower, string.gsub, string.match, string.match, string.gmatch @@ -28,8 +27,8 @@ local texsetsfcode = tex.setsfcode local texsetcatcode = tex.setcatcode local contextsprint = context.sprint -local ctxcatcodes = tex.ctxcatcodes -local texcatcodes = tex.texcatcodes +local ctxcatcodes = catcodes.numbers.ctxcatcodes +local texcatcodes = catcodes.numbers.texcatcodes local setmetatableindex = table.setmetatableindex @@ -48,7 +47,6 @@ loaded!</p> characters = characters or { } local characters = characters - local data = characters.data if data then @@ -461,10 +459,12 @@ if not characters.fallbacks then for k, d in next, data do local specials = d.specials - if specials and specials[1] == "compat" and specials[2] == 0x0020 and specials[3] then + if specials and specials[1] == "compat" and specials[2] == 0x0020 then local s = specials[3] - fallbacks[k] = s - fallbacks[s] = k + if s then + fallbacks[k] = s + fallbacks[s] = k + end end end @@ -497,7 +497,7 @@ which is rather specific to <l n='context'/>.</p> use the table. After all, we have this information available anyway.</p> --ldx]]-- -function characters.makeactive(n,name) -- let ? +function characters.makeactive(n,name) -- contextsprint(ctxcatcodes,format("\\catcode%s=13\\unexpanded\\def %s{\\%s}",n,utfchar(n),name)) -- context("\\catcode%s=13\\unexpanded\\def %s{\\%s}",n,utfchar(n),name) end @@ -512,7 +512,7 @@ function tex.uprint(c,n) end end -local temphack = tohash { +local forbidden = tohash { -- at least now 0x00A0, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B, 0x200C, 0x200D, 0x202F, @@ -548,12 +548,10 @@ function characters.define(tobelettered, tobeactivated) -- catcodetables else contextsprint(ctxcatcodes,format("\\def\\%s{%s}",contextname,utfchar(u))) -- has no s end - elseif is_command[category] then -if not temphack[u] then + elseif is_command[category] and not forbidden[u] then contextsprint("{\\catcode",u,"=13\\unexpanded\\gdef ",utfchar(u),"{\\"..contextname,"}}") a = a + 1 activated[a] = u -end end end end @@ -641,15 +639,17 @@ function characters.setcodes() end else local lc, uc = chr.lccode, chr.uccode - if not lc then chr.lccode, lc = code, code end - if not uc then chr.uccode, uc = code, code end - texsetcatcode(code,11) -- letter - if type(lc) == "table" then + if not lc then + chr.lccode, lc = code, code + elseif type(lc) == "table" then lc = code end - if type(uc) == "table" then + if not uc then + chr.uccode, uc = code, code + elseif type(uc) == "table" then uc = code end + texsetcatcode(code,11) -- letter texsetlccode(code,lc,uc) if cc == "lu" then texsetsfcode(code,999) @@ -824,8 +824,7 @@ function characters.unicodechar(asked) if n then return n elseif type(asked) == "string" then - asked = gsub(asked," ","") - return descriptions[asked] + return descriptions[asked] or descriptions[gsub(asked," ","")] end end @@ -891,17 +890,21 @@ end function characters.uccode(n) return uccodes[n] end -- obsolete function characters.lccode(n) return lccodes[n] end -- obsolete -function characters.flush(n,direct) +function characters.safechar(n) local c = data[n] if c and c.contextname then - c = "\\" .. c.contextname + return "\\" .. c.contextname else - c = utfchar(n) + return utfchar(n) end - if direct then - return c +end + +function commands.safechar(n) + local c = data[n] + if c and c.contextname then + contextsprint("\\" .. c.contextname) -- context[c.contextname]() else - contextsprint(c) + contextsprint(utfchar(n)) end end diff --git a/tex/context/base/char-utf.lua b/tex/context/base/char-utf.lua index a411c2d82..cefaca4e3 100644 --- a/tex/context/base/char-utf.lua +++ b/tex/context/base/char-utf.lua @@ -76,6 +76,7 @@ local decomposed = allocate { ["ﬖ"] = "վն", ["ﬗ"] = "մխ", } + characters.decomposed = decomposed local function initialize() -- maybe only 'mn' diff --git a/tex/context/base/chem-ini.lua b/tex/context/base/chem-ini.lua index 4d47982a2..192953ec9 100644 --- a/tex/context/base/chem-ini.lua +++ b/tex/context/base/chem-ini.lua @@ -17,8 +17,8 @@ local report_chemistry = logs.reporter("chemistry") local context = context -chemicals = chemicals or { } -local chemicals = chemicals +chemistry = chemistry or { } +local chemistry = chemistry --[[ <p>The next code is an adaptation of code from Wolfgang Schuster @@ -62,9 +62,9 @@ local high = Cc("\\high{%s}") * superscript * content local justtext = (1 - somescript)^1 local parser = Cs((csname + lowhigh + highlow + low + high + sign + any)^0) -chemicals.moleculeparser = parser -- can be used to avoid functioncall +chemistry.moleculeparser = parser -- can be used to avoid functioncall -function chemicals.molecule(str) +function chemistry.molecule(str) return lpegmatch(parser,str) end diff --git a/tex/context/base/chem-str.lua b/tex/context/base/chem-str.lua index b56525e3f..2cd6effc9 100644 --- a/tex/context/base/chem-str.lua +++ b/tex/context/base/chem-str.lua @@ -29,12 +29,12 @@ local P, R, S, C, Cs, Ct, Cc = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cs, lpeg.Ct, local variables = interfaces.variables local context = context -chemicals = chemicals or { } -local chemicals = chemicals +chemistry = chemistry or { } +local chemistry = chemistry -chemicals.instance = "metafun" -- "ppchtex" -chemicals.format = "metafun" -chemicals.structures = 0 +chemistry.instance = "metafun" -- "ppchtex" +chemistry.format = "metafun" +chemistry.structures = 0 local remapper = { ["+"] = "p", @@ -151,11 +151,11 @@ local syntax = { local definitions = { } -function chemicals.undefine(name) +function chemistry.undefine(name) definitions[lower(name)] = nil end -function chemicals.define(name,spec,text) +function chemistry.define(name,spec,text) name = lower(name) local dn = definitions[name] if not dn then dn = { } definitions[name] = dn end @@ -166,7 +166,7 @@ function chemicals.define(name,spec,text) end local metacode, variant, keys, bonds, max, txt, textsize, rot, pstack -local molecule = chemicals.molecule -- or use lpegmatch(chemicals.moleculeparser,...) +local molecule = chemistry.molecule -- or use lpegmatch(chemistry.moleculeparser,...) local function fetch(txt) local st = stack[txt] @@ -392,8 +392,8 @@ end -- -- rulethickness in points -function chemicals.start(settings) - chemicals.structures = chemicals.structures + 1 +function chemistry.start(settings) + chemistry.structures = chemistry.structures + 1 local textsize, rulethickness, rulecolor = settings.size, settings.rulethickness, settings.rulecolor local width, height, scale, offset = settings.width or 0, settings.height or 0, settings.scale or "medium", settings.offset or 0 local l, r, t, b = settings.left or 0, settings.right or 0, settings.top or 0, settings.bottom or 0 @@ -449,7 +449,7 @@ function chemicals.start(settings) scale = 0.75 * scale/625 -- metacode[#metacode+1] = format("chem_start_structure(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ;", - chemicals.structures, + chemistry.structures, l/25, r/25, t/25, b/25, scale, tostring(settings.axis == variables.on), tostring(width), tostring(height), tostring(offset) ) @@ -457,18 +457,18 @@ function chemicals.start(settings) variant, keys, bonds, stack, rot, pstack = "six", { }, 6, { }, 1, { } end -function chemicals.stop() +function chemistry.stop() metacode[#metacode+1] = "chem_stop_structure ;" -- local mpcode = concat(metacode,"\n") if trace_structure then report_chemistry("metapost code:\n%s", mpcode) end - metapost.graphic(chemicals.instance,chemicals.format,mpcode) + metapost.graphic(chemistry.instance,chemistry.format,mpcode) metacode = nil end -function chemicals.component(spec,text,settings) +function chemistry.component(spec,text,settings) rulethickness, rulecolor, offset = settings.rulethickness, settings.rulecolor local spec = settings_to_array(lower(spec)) local text = settings_to_array(text) @@ -477,6 +477,22 @@ function chemicals.component(spec,text,settings) metacode[#metacode+1] = "chem_stop_component ;" end +statistics.register("chemical formulas", function() + if chemistry.structures > 0 then + return format("%s chemical structure formulas",chemistry.structures) -- no timing needed, part of metapost + end +end) + +-- interfaces + +commands.undefinechemical = chemistry.undefine +commands.definechemical = chemistry.define +commands.startchemical = chemistry.start +commands.stopchemical = chemistry.stop +commands.chemicalcomponent = chemistry.component + +-- todo: top / bottom + local inline = { ["single"] = "\\chemicalsinglebond", ["-"] = "\\chemicalsinglebond", ["double"] = "\\chemicaldoublebond", ["--"] = "\\chemicaldoublebond", -- also =? and unicode triple? @@ -489,23 +505,15 @@ local inline = { ["space"] = "\\chemicalspace", } --- todo: top / bottom - -function chemicals.inline(spec) +function commands.inlinechemical(spec) local spec = settings_to_array(spec) for i=1,#spec do local s = spec[i] local inl = inline[lower(s)] if inl then - context(inl) + context(inl) -- could be a fast context.sprint else context.chemicalinline(molecule(s)) end end end - -statistics.register("chemical formulas", function() - if chemicals.structures > 0 then - return format("%s chemical structure formulas",chemicals.structures) -- no timing needed, part of metapost - end -end) diff --git a/tex/context/base/chem-str.mkiv b/tex/context/base/chem-str.mkiv index 183eeb181..eca3b1b40 100644 --- a/tex/context/base/chem-str.mkiv +++ b/tex/context/base/chem-str.mkiv @@ -79,7 +79,7 @@ {\startnointerference \edef\currentdefinedchemical{#1}% \let\chemical\chem_chemical_nested - \ctxlua{chemicals.undefine("#1")}% + \ctxcommand{undefinechemical("#1")}% #2% flush \stopnointerference} @@ -87,7 +87,7 @@ {\dodoubleempty\chem_chemical_nested_indeed} \def\chem_chemical_nested_indeed[#1][#2]% - {\ctxlua{chemicals.define("\currentdefinedchemical",\!!bs#1\!!es,\!!bs\detokenize{#2}\!!es)}} + {\ctxcommand{definechemical("\currentdefinedchemical",\!!bs#1\!!es,\!!bs\detokenize{#2}\!!es)}} % chemical symbols @@ -150,7 +150,7 @@ \fi\fi \the\everystructurechemical \setbox\b_chem_result\hbox\bgroup - \ctxlua{chemicals.start { + \ctxcommand{startchemical { width = "\chemicalparameter\c!width", height = "\chemicalparameter\c!height", left = \chemicalparameter\c!left, @@ -165,7 +165,7 @@ \unexpanded\def\stopchemical {\stopnointerference - \ctxlua{chemicals.stop()}% + \ctxcommand{stopchemical()}% \egroup \d_chem_width \wd\b_chem_result \d_chem_height\ht\b_chem_result @@ -204,14 +204,14 @@ \def\strc_chem_indeed_three[#1][#2][#3]% {\writestatus\m!chemicals{hyperlinked chemicals not yet supported}% todo reference, for the moment ignored - \ctxlua{chemicals.component(\!!bs#2\!!es, \!!bs\detokenize{#3}\!!es, { % maybe also pass first two args this way + \ctxcommand{chemicalcomponent(\!!bs#2\!!es, \!!bs\detokenize{#3}\!!es, { % maybe also pass first two args this way rulethickness = "\the\dimexpr\chemicalparameter\c!rulethickness\relax", % todo: scaled points rulecolor = "\MPcolor{\chemicalparameter\c!rulecolor}" % we can precalculate this for speedup } ) }% \ignorespaces} \def\strc_chem_indeed_two[#1][#2]% - {\ctxlua{chemicals.component(\!!bs#1\!!es,\!!bs\detokenize{#2}\!!es, { % maybe also pass first two args this way + {\ctxcommand{chemicalcomponent(\!!bs#1\!!es,\!!bs\detokenize{#2}\!!es, { % maybe also pass first two args this way rulethickness = "\the\dimexpr\chemicalparameter\c!rulethickness\relax", % todo: scaled points rulecolor = "\MPcolor{\chemicalparameter\c!rulecolor}" % we can precalculate this for speedup } ) }% @@ -293,8 +293,8 @@ \def\chem_arrow_construct#1#2#3% {\enspace \mathematics{#1% - {\strut\hbox \s!spread 2\emwidth{\hss\ctxlua{chemicals.inline(\!!bs#2\!!es)}\hss}}% {\strut\hbox \s!spread 2em{\hss#2\hss}}% - {\strut\hbox \s!spread 2\emwidth{\hss\ctxlua{chemicals.inline(\!!bs#3\!!es)}\hss}}}% {\strut\hbox \s!spread 2em{\hss#3\hss}}}% + {\strut\hbox \s!spread 2\emwidth{\hss\ctxcommand{inlinechemical(\!!bs#2\!!es)}\hss}}% {\strut\hbox \s!spread 2em{\hss#2\hss}}% + {\strut\hbox \s!spread 2\emwidth{\hss\ctxcommand{inlinechemical(\!!bs#3\!!es)}\hss}}}% {\strut\hbox \s!spread 2em{\hss#3\hss}}}% \enspace} % special macros (probably needs some more work) @@ -444,7 +444,7 @@ \unexpanded\def\inlinechemical#1% {\dontleavehmode - \hbox{\usechemicalstyleandcolor\c!style\c!color\ctxlua{chemicals.inline(\!!bs#1\!!es)}}} + \hbox{\usechemicalstyleandcolor\c!style\c!color\ctxcommand{inlinechemical(\!!bs#1\!!es)}}} \unexpanded\def\chemicalbondrule {\hbox{\vrule\s!height.75\exheight\s!depth-\dimexpr.75\exheight-\linewidth\relax\s!width\emwidth\relax}} diff --git a/tex/context/base/cldf-bas.lua b/tex/context/base/cldf-bas.lua index a9d72630a..dd6c575bf 100644 --- a/tex/context/base/cldf-bas.lua +++ b/tex/context/base/cldf-bas.lua @@ -22,6 +22,8 @@ if not modules then modules = { } end modules ['cldf-bas'] = { -- flush(ctxcatcodes,"}") -- end +-- maybe use context.generics + local type = type local format = string.format local utfchar = utf.char @@ -35,10 +37,12 @@ local new_rule = nodes.pool.rule function context.char(k) -- used as escape too, so don't change to utf if type(k) == "table" then - -- for i=1,#k do - -- context(format([[\char%s\relax]],k[i])) - -- end - context([[\char%s\relax]],concat(k,[[\relax\char]])) + local n = #k + if n == 1 then + context([[\char%s\relax]],k[1]) + elseif n > 0 then + context([[\char%s\relax]],concat(k,[[\relax\char]])) + end elseif k then context([[\char%s\relax]],k) end @@ -98,22 +102,22 @@ context.vrule = context.hrule -- not yet used ... but will get variant at the tex end as well -function context.sethboxregister (n) context("\\setbox %s\\hbox",n) end -function context.setvboxregister (n) context("\\setbox %s\\vbox",n) end +function context.sethboxregister(n) context([[\setbox %s\hbox]],n) end +function context.setvboxregister(n) context([[\setbox %s\vbox]],n) end function context.starthboxregister(n) if type(n) == "number" then - context("\\setbox%s\\hbox\\bgroup",n) + context([[\setbox%s\hbox{]],n) else - context("\\setbox\\%s\\hbox\\bgroup",n) + context([[\setbox\%s\hbox{]],n) end end function context.startvboxregister(n) if type(n) == "number" then - context("\\setbox%s\\vbox\\bgroup",n) + context([[\setbox%s\vbox{]],n) else - context("\\setbox\\%s\\vbox\\bgroup",n) + context([[\setbox\%s\vbox{]],n) end end @@ -122,18 +126,18 @@ context.stopvboxregister = context.egroup function context.flushboxregister(n) if type(n) == "number" then - context("\\box%s ",n) + context([[\box%s ]],n) else - context("\\box\\%s",n) + context([[\box\%s]],n) end end function context.beginvbox() - context("\\vbox\\bgroup") -- we can do \bvbox ... \evbox (less tokens) + context([[\vbox{]]) -- we can do \bvbox ... \evbox (less tokens) end function context.beginhbox() - context("\\hbox\\bgroup") -- todo: use fast one + context([[\hbox{]]) -- todo: use fast one end context.endvbox = context.egroup diff --git a/tex/context/base/cldf-com.lua b/tex/context/base/cldf-com.lua index bacbbeafd..d9062594e 100644 --- a/tex/context/base/cldf-com.lua +++ b/tex/context/base/cldf-com.lua @@ -11,8 +11,8 @@ local context = context local generics = context.generics -- needs documentation local variables = interfaces.variables -generics.starttabulate = "start" .. variables.tabulate -- todo: e!start -generics.stoptabulate = "stop" .. variables.tabulate -- todo: e!stop +generics.starttabulate = "starttabulate" -- "start" .. variables.tabulate -- todo: e!start +generics.stoptabulate = "stoptabulate" -- "stop" .. variables.tabulate -- todo: e!stop local NC, NR = context.NC, context.NR diff --git a/tex/context/base/cldf-ini.lua b/tex/context/base/cldf-ini.lua index 4d693ab91..ad5f14855 100644 --- a/tex/context/base/cldf-ini.lua +++ b/tex/context/base/cldf-ini.lua @@ -40,12 +40,14 @@ local isnode = node.is_node -- after 0.65 just node.type local writenode = node.write local copynodelist = node.copy_list -local ctxcatcodes = tex.ctxcatcodes -local prtcatcodes = tex.prtcatcodes -local texcatcodes = tex.texcatcodes -local txtcatcodes = tex.txtcatcodes -local vrbcatcodes = tex.vrbcatcodes -local xmlcatcodes = tex.xmlcatcodes +local catcodenumbers = catcodes.numbers + +local ctxcatcodes = catcodenumbers.ctxcatcodes +local prtcatcodes = catcodenumbers.prtcatcodes +local texcatcodes = catcodenumbers.texcatcodes +local txtcatcodes = catcodenumbers.txtcatcodes +local vrbcatcodes = catcodenumbers.vrbcatcodes +local xmlcatcodes = catcodenumbers.xmlcatcodes local flush = texsprint local flushdirect = texprint diff --git a/tex/context/base/cldf-int.lua b/tex/context/base/cldf-int.lua index b554dabc7..6cbfd666f 100644 --- a/tex/context/base/cldf-int.lua +++ b/tex/context/base/cldf-int.lua @@ -14,9 +14,12 @@ if not modules then modules = { } end modules ['cldf-int'] = { local format, insert, remove, concat = string.format, table.insert, table.remove, table.concat local unpack = unpack or table.unpack -local contextsprint = context.sprint -local ctxcatcodes = tex.ctxcatcodes -local vrbcatcodes = tex.vrbcatcodes +local catcodenumbers = catcodes.numbers + +local ctxcatcodes = catcodenumbers.ctxcatcodes +local vrbcatcodes = catcodenumbers.vrbcatcodes + +local contextsprint = context.sprint local trace_define = false trackers.register("context.define", function(v) trace_define = v end) diff --git a/tex/context/base/cldf-ver.lua b/tex/context/base/cldf-ver.lua index 237078157..9b1b82806 100644 --- a/tex/context/base/cldf-ver.lua +++ b/tex/context/base/cldf-ver.lua @@ -6,6 +6,10 @@ if not modules then modules = { } end modules ['cldf-ver'] = { license = "see context related readme files" } +-- We have better verbatim: context.verbatim so that needs to be looked +-- into. We can also directly store in buffers although this variant works +-- better when used mixed with other code (synchronization issue). + local concat, tohandle = table.concat, table.tohandle local find, splitlines = string.find, string.splitlines local tostring, type = tostring, type diff --git a/tex/context/base/colo-ini.lua b/tex/context/base/colo-ini.lua index 747e2116f..253027238 100644 --- a/tex/context/base/colo-ini.lua +++ b/tex/context/base/colo-ini.lua @@ -16,7 +16,8 @@ local trace_define = false trackers.register("colors.define",function(v) trace_ local report_colors = logs.reporter("colors","defining") -local attributes, context, commands = attributes, context, commands +local attributes, backends, storage = attributes, backends, storage +local context, commands = context, commands local settings_to_hash_strict = utilities.parsers.settings_to_hash_strict @@ -666,83 +667,51 @@ function colors.defineintermediatecolor(name,fraction,c_one,c_two,a_one,a_two,sp end end ---~ local function f(one,two,i,fraction_one,fraction_two) ---~ local otf = fraction_one * one[i] + fraction_two * two[i] ---~ if otf > 1 then ---~ otf = 1 ---~ end ---~ return otf ---~ end - ---~ function colors.defineduocolor(name,fraction_one,c_one,fraction_two,c_two,global,freeze) ---~ local one, two = colorvalues[c_one], colorvalues[c_two] ---~ if one and two then ---~ fraction_one = tonumber(fraction_one) or 1 ---~ fraction_two = tonumber(fraction_two) or 1 ---~ local csone, cstwo = one[1], two[1] ---~ local ca ---~ if csone == 2 then ---~ ca = register_color(name,'gray',f(one,two,2,fraction_one,fraction_two)) ---~ elseif csone == 3 then ---~ ca = register_color(name,'rgb', f(one,two,3,fraction_one,fraction_two), ---~ f(one,two,4,fraction_one,fraction_two), ---~ f(one,two,5,fraction_one,fraction_two)) ---~ elseif csone == 4 then ---~ ca = register_color(name,'cmyk',f(one,two,6,fraction_one,fraction_two), ---~ f(one,two,7,fraction_one,fraction_two), ---~ f(one,two,8,fraction_one,fraction_two), ---~ f(one,two,9,fraction_one,fraction_two)) ---~ else ---~ ca = register_color(name,'gray',f(one,two,2,fraction_one,fraction_two)) ---~ end ---~ definecolor(name,ca,global,freeze) ---~ end ---~ end - - local function f(i,colors,fraction) - local otf = 0 - for c=1,#colors do - otf = otf + (tonumber(fraction[c]) or 1) * colors[c][i] - end - if otf > 1 then - otf = 1 - end - return otf +local function f(i,colors,fraction) + local otf = 0 + for c=1,#colors do + otf = otf + (tonumber(fraction[c]) or 1) * colors[c][i] end + if otf > 1 then + otf = 1 + end + return otf +end - function colors.definemixcolor(name,fractions,cs,global,freeze) - local values = { } - for i=1,#cs do -- do fraction in here - local v = colorvalues[cs[i]] - if not v then - return - end - values[i] = v - end - local csone = values[1][1] - local ca - if csone == 2 then - ca = register_color(name,'gray',f(2,values,fractions)) - elseif csone == 3 then - ca = register_color(name,'rgb', f(3,values,fractions), - f(4,values,fractions), - f(5,values,fractions)) - elseif csone == 4 then - ca = register_color(name,'cmyk',f(6,values,fractions), - f(7,values,fractions), - f(8,values,fractions), - f(9,values,fractions)) - else - ca = register_color(name,'gray',f(2,values,fractions)) +function colors.definemixcolor(name,fractions,cs,global,freeze) + local values = { } + for i=1,#cs do -- do fraction in here + local v = colorvalues[cs[i]] + if not v then + return end - definecolor(name,ca,global,freeze) + values[i] = v end + local csone = values[1][1] + local ca + if csone == 2 then + ca = register_color(name,'gray',f(2,values,fractions)) + elseif csone == 3 then + ca = register_color(name,'rgb', f(3,values,fractions), + f(4,values,fractions), + f(5,values,fractions)) + elseif csone == 4 then + ca = register_color(name,'cmyk',f(6,values,fractions), + f(7,values,fractions), + f(8,values,fractions), + f(9,values,fractions)) + else + ca = register_color(name,'gray',f(2,values,fractions)) + end + definecolor(name,ca,global,freeze) +end -- for the moment downward compatible local patterns = { "colo-imp-%s.mkiv", "colo-imp-%s.tex", "colo-%s.mkiv", "colo-%s.tex" } local function action(name,foundname) + -- could be one command context.startreadingfile() context.startcolorset { name } context.input(foundname) diff --git a/tex/context/base/colo-run.lua b/tex/context/base/colo-run.lua index 4f1916d5a..27f7c6b12 100644 --- a/tex/context/base/colo-run.lua +++ b/tex/context/base/colo-run.lua @@ -6,8 +6,10 @@ if not modules then modules = { } end modules ['colo-run'] = { license = "see context related readme files" } --- For historic reasons the core has a couple of tracing --- features. Nowadays these would end up in modules. +-- For historic reasons the core has a couple of tracing features. Nowadays +-- these would end up in modules. + +local colors, commands, context, utilities = colors, commands, context, utilities local colors= attributes.colors diff --git a/tex/context/base/colo-run.mkiv b/tex/context/base/colo-run.mkiv index c41a133d3..5084fdd35 100644 --- a/tex/context/base/colo-run.mkiv +++ b/tex/context/base/colo-run.mkiv @@ -42,9 +42,9 @@ %D Palets \unexpanded\gdef\showpalet - {\dodoubleargument\doshowpalet} + {\dodoubleargument\colo_show_palet} -\gdef\doshowpalet[#1][#2]% +\gdef\colo_show_palet[#1][#2]% {\ifcsname\??colorpalet#1\endcsname \doifinsetelse\v!vertical{#2} \colo_palets_show_vertical \colo_palets_show_horizontal [#1][#2]% \fi} diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index 0264366e6..8e6af22c4 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{2012.07.24 15:58} +\newcontextversion{2012.07.26 19:37} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 904539237..221df96d6 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{2012.07.24 15:58} +\newcontextversion{2012.07.26 19:37} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 57a38d2e2..cab5577dc 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 0cccb425b..35f343c2c 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 4ae4bbc2a..efa88f262 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{2012.07.24 15:57} +\edef\contextversion{2012.07.26 19:37} %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 5df05ac69..3ba054e33 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2012.07.24 15:58} +\edef\contextversion{2012.07.26 19:37} %D For those who want to use this: @@ -352,6 +352,7 @@ \loadmarkfile{font-pre} \loadmarkfile{font-unk} \loadmarkfile{font-tra} +\loadmarkfile{font-chk} \loadmarkfile{font-uni} \loadmkvifile{font-col} \loadmkvifile{font-gds} diff --git a/tex/context/base/context.rme b/tex/context/base/context.rme index 1ce6b25c0..ff9ffb8ac 100644 --- a/tex/context/base/context.rme +++ b/tex/context/base/context.rme @@ -14,7 +14,10 @@ real problem as the engines don't change much either. Early 2011 the code base between MkII and MkIV got split completely and there is no shared code any longer, apart from some styles and -modules. +modules. From the perspective of ConteXt we now consider XeTeX to be +obsolete although we will keep supporting it in MkII. As pdftex is +still used in older workflows we will support that as long as it's +around. The main files context.mkii and context.mkiv are normally not used directly but instead we use the interface specific formats: @@ -76,4 +79,4 @@ Don't hesitate to ask questions. ConTeXt can do a lot, but the manuals always lag behind and can be incomplete. ------------------------- -Hans Hagen, pragma@wxs.nl +Hans Hagen, pragma @ wxs . nl diff --git a/tex/context/base/context.todo b/tex/context/base/context.todo deleted file mode 100644 index 27d914a7b..000000000 --- a/tex/context/base/context.todo +++ /dev/null @@ -1,6 +0,0 @@ -% marginrules - -% consistently use label/name/tag -% consistently use type/kind - -% option vs options diff --git a/tex/context/base/core-con.lua b/tex/context/base/core-con.lua index e4b516e3b..1271c92a6 100644 --- a/tex/context/base/core-con.lua +++ b/tex/context/base/core-con.lua @@ -14,6 +14,8 @@ slower but look nicer this way.</p> <p>Some code may move to a module in the language namespace.</p> --ldx]]-- +local command, context = commands, context + local utf = unicode.utf8 local floor, date, time, concat = math.floor, os.date, os.time, table.concat @@ -45,7 +47,7 @@ function commands.number(n) context(n) end -- to be reconsidered ... languages namespace here, might become local plus a register command local counters = allocate { - ['**'] = { + ['default'] = { 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, @@ -125,6 +127,12 @@ local counters = allocate { }, } +table.setmetatableindex(counters,function(t,k) + local v = t.default + t[k] = v + return v +end) + languages.counters = counters counters['ar'] = counters['arabic'] @@ -135,7 +143,7 @@ counters['kr'] = counters['korean'] counters['kr-p'] = counters['korean-parent'] counters['kr-c'] = counters['korean-circle'] -local fallback = utf.byte('0') +local fallback = utfbyte('0') local function chr(n,m) return (n > 0 and n < 27 and utfchar(n+m)) or "" @@ -197,32 +205,28 @@ local function do_alphabetic(n,mapping,mapper,t) end end -local function alphabetic(n,code) - return do_alphabetic(n,counters[code] or counters['**'],lowercharacter) +function converters.alphabetic(n,code) + return do_alphabetic(n,counters[code],lowercharacter) end -local function Alphabetic(n,code) - return do_alphabetic(n,counters[code] or counters['**'],uppercharacter) +function converters.Alphabetic(n,code) + return do_alphabetic(n,counters[code],uppercharacter) end -local function character (n) return chr (n,96) end -local function Character (n) return chr (n,64) end -local function characters(n) return chrs(n,96) end -local function Characters(n) return chrs(n,64) end - -converters.alphabetic = alphabetic -converters.Alphabetic = Alphabetic -converters.character = character -converters.Character = Character -converters.characters = characters -converters.Characters = Characters - -function commands.alphabetic(n,c) context(alphabetic(n,c)) end -function commands.Alphabetic(n,c) context(Alphabetic(n,c)) end -function commands.character (n) context(character (n)) end -function commands.Character (n) context(Character (n)) end -function commands.characters(n) context(characters(n)) end -function commands.Characters(n) context(Characters(n)) end +local lower_offset = 96 +local upper_offset = 64 + +function converters.character (n) return chr (n,lower_offset) end +function converters.Character (n) return chr (n,upper_offset) end +function converters.characters(n) return chrs(n,lower_offset) end +function converters.Characters(n) return chrs(n,upper_offset) end + +function commands.alphabetic(n,c) context(do_alphabetic(n,counters[c],lowercharacter)) end +function commands.Alphabetic(n,c) context(do_alphabetic(n,counters[c],uppercharacter)) end +function commands.character (n) context(chr (n,lower_offset)) end +function commands.Character (n) context(chr (n,upper_offset)) end +function commands.characters(n) context(chrs(n,lower_offset)) end +function commands.Characters(n) context(chrs(n,upper_offset)) end local days = { [false] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, @@ -245,52 +249,35 @@ local function nofdays(year,month) return days[isleapyear(year)][month] end -local function year () return date("%Y") end -local function month () return date("%m") end -local function hour () return date("%H") end -local function minute() return date("%M") end -local function second() return date("%S") end - local function textime() return tonumber(date("%H")) * 60 + tonumber(date("%M")) end +function converters.year () return date("%Y") end +function converters.month () return date("%m") end +function converters.hour () return date("%H") end +function converters.minute() return date("%M") end +function converters.second() return date("%S") end + converters.weekday = weekday converters.isleapyear = isleapyear converters.leapyear = leapyear converters.nofdays = nofdays -converters.year = year -converters.month = month -converters.hour = hour -converters.minute = minute -converters.second = second converters.textime = textime -function commands.weekday(day,month,year) - context(weekday(day,month,year)) -end +function commands.weekday (day,month,year) context(weekday (day,month,year)) end +function commands.leapyear(year) context(leapyear(year)) end -- rather useless +function commands.nofdays (year,month) context(nofdays (year,month)) end -function commands.isleapyear(year) - context(isleapyear(year)) -end - -function commands.leapyear(year) - context(leapyear(year)) -end - -function commands.nofdays(year,month) - context(nofdays(year,month)) -end - -function commands.year () context(year ()) end -function commands.month () context(month ()) end -function commands.hour () context(hour ()) end -function commands.minute () context(minute ()) end -function commands.second () context(second ()) end +function commands.year () context(date("%Y")) end +function commands.month () context(date("%m")) end +function commands.hour () context(date("%H")) end +function commands.minute () context(date("%M")) end +function commands.second () context(date("%S")) end function commands.textime() context(textime()) end function commands.doifleapyearelse(year) - commands.testcase(leapyear(year)) + commands.doifelse(isleapyear(year)) end local roman = { @@ -307,13 +294,9 @@ local function toroman(n) end end -local Romannumerals = toroman - -local function romannumerals(n) return lower(toroman(n)) end - converters.toroman = toroman converters.Romannumerals = toroman -converters.romannumerals = romannumerals +converters.romannumerals = function(n) return lower(toroman(n)) end function commands.romannumerals(n) context(lower(toroman(n))) end function commands.Romannumerals(n) context( toroman(n)) end @@ -366,11 +349,8 @@ end converters.toabjad = toabjad -local function abjadnumerals (n) return toabjad(n,false) end -local function abjadnodotnumerals(n) return toabjad(n,true ) end - -converters.abjadnumerals = abjadnumerals -converters.abjadnodotnumerals = abjadnodotnumerals +function converters.abjadnumerals (n) return toabjad(n,false) end +function converters.abjadnodotnumerals(n) return toabjad(n,true ) end function commands.abjadnumerals (n) context(toabjad(n,false)) end function commands.abjadnodotnumerals(n) context(toabjad(n,true )) end @@ -515,13 +495,9 @@ end converters.tochinese = tochinese -local function chinesenumerals (n) return tochinese(n,"normal") end -local function chinesecapnumerals(n) return tochinese(n,"cap" ) end -local function chineseallnumerals(n) return tochinese(n,"all" ) end - -converters.chinesenumerals = chinesenumerals -converters.chinesecapnumerals = chinesecapnumerals -converters.chineseallnumerals = chineseallnumerals +function converters.chinesenumerals (n) return tochinese(n,"normal") end +function converters.chinesecapnumerals(n) return tochinese(n,"cap" ) end +function converters.chineseallnumerals(n) return tochinese(n,"all" ) end function commands.chinesenumerals (n) context(tochinese(n,"normal")) end function commands.chinesecapnumerals(n) context(tochinese(n,"cap" )) end @@ -683,7 +659,7 @@ end -- context(escapes[n] or utfchar(n)) -- end -- --- local lccodes, uccodes = characters.lccode, characters.uccode +-- local lccodes, uccodes, safechar = characters.lccode, characters.uccode, commands.safechar -- -- local function do_alphabetic(n,mapping,chr) -- local max = #mapping @@ -691,7 +667,7 @@ end -- do_alphabetic(floor((n-1)/max),mapping,chr) -- n = (n-1)%max+1 -- end --- characters.flush(chr(n,mapping)) +-- safechar(chr(n,mapping)) -- end -- -- local function lowercased(n,mapping) return characters.lccode(mapping[n] or fallback) end @@ -705,8 +681,6 @@ end -- do_alphabetic(n,counters[code] or counters['**'],uppercased) -- end --- -- - local ordinals = { english = function(n) local two = n % 100 diff --git a/tex/context/base/core-env.lua b/tex/context/base/core-env.lua index c31df929e..cd4284a7d 100644 --- a/tex/context/base/core-env.lua +++ b/tex/context/base/core-env.lua @@ -122,12 +122,15 @@ local types = { function tex.isdimen(name) return lookuptoken(name)[1] == dimencode end + function tex.iscount(name) return lookuptoken(name)[1] == countcode end + function tex.istoken(name) return lookuptoken(name)[1] == tokencode end + function tex.isskip(name) return lookuptoken(name)[1] == skipcode end diff --git a/tex/context/base/core-two.lua b/tex/context/base/core-two.lua index f94b102bc..d6e006e04 100644 --- a/tex/context/base/core-two.lua +++ b/tex/context/base/core-two.lua @@ -153,5 +153,5 @@ commands.savetwopassdata = jobpasses.save commands.savetaggedtwopassdata = jobpasses.savetagged function commands.doifelseintwopassdata(id,str) - commands.testcase(inlist(id,str)) + commands.doifelse(inlist(id,str)) end diff --git a/tex/context/base/core-uti.lua b/tex/context/base/core-uti.lua index 1657a75e2..ab64b99af 100644 --- a/tex/context/base/core-uti.lua +++ b/tex/context/base/core-uti.lua @@ -20,6 +20,7 @@ saves much runtime but at the cost of more memory usage.</p> local format, match = string.format, string.match local next, type, tostring = next, type, tostring local concat = table.concat +local texcount = tex.count local definetable = utilities.tables.definetable local accesstable = utilities.tables.accesstable @@ -146,9 +147,7 @@ function job.save(filename) -- we could return a table but it can get pretty lar for c=1,#comment do f:write("-- ",comment[c],"\n") end - f:write("\n") - f:write("local utilitydata = { }\n") - f:write("\n") + f:write("\nlocal utilitydata = { }\n\n") for l=1,#savelist do local list = savelist[l] local target = format("utilitydata.%s",list[1]) @@ -160,16 +159,13 @@ function job.save(filename) -- we could return a table but it can get pretty lar if job.pack then packers.pack(data,jobpacker,true) end - f:write(definetable(target),"\n") - f:write(serialize(data,target,true,true),"\n") + f:write(definetable(target),"\n",serialize(data,target,true,true),"\n") end if job.pack then packers.strip(jobpacker) f:write(serialize(jobpacker,"utilitydata.job.packed",true,true),"\n") end - f:write("\n") - f:write("return utilitydata\n") - f:write("\n") + f:write("\nreturn utilitydata\n\n") f:close() end statistics.stoptiming(_save_) @@ -252,7 +248,7 @@ end) statistics.register("callbacks", function() local total, indirect = status.callbacks or 0, status.indirect_callbacks or 0 - local pages = tex.count['realpageno'] - 1 + local pages = texcount['realpageno'] - 1 if pages > 1 then return format("direct: %s, indirect: %s, total: %s (%i per page)", total-indirect, indirect, total, total/pages) else @@ -268,8 +264,8 @@ end) function statistics.formatruntime(runtime) if not environment.initex then -- else error when testing as not counters yet - local shipped = tex.count['nofshipouts'] - local pages = tex.count['realpageno'] - 1 + local shipped = texcount['nofshipouts'] + local pages = texcount['realpageno'] - 1 if shipped > 0 or pages > 0 then local persecond = shipped / runtime if pages == 0 then pages = shipped end diff --git a/tex/context/base/file-ini.lua b/tex/context/base/file-ini.lua index 4f8b5b6e3..1872ed3d3 100644 --- a/tex/context/base/file-ini.lua +++ b/tex/context/base/file-ini.lua @@ -7,9 +7,8 @@ if not modules then modules = { } end modules ['file-ini'] = { } --[[ldx-- -<p>It's more convenient to manipulate filenames (paths) in -<l n='lua'/> than in <l n='tex'/>. These methods have counterparts -at the <l n='tex'/> side.</p> +<p>It's more convenient to manipulate filenames (paths) in <l n='lua'/> than in +<l n='tex'/>. These methods have counterparts at the <l n='tex'/> end.</p> --ldx]]-- resolvers.jobs = resolvers.jobs or { } diff --git a/tex/context/base/file-lib.lua b/tex/context/base/file-lib.lua index 92dacbf5c..c99c2ac41 100644 --- a/tex/context/base/file-lib.lua +++ b/tex/context/base/file-lib.lua @@ -33,6 +33,7 @@ function commands.uselibrary(specification) -- todo; reporter local failure = specification.failure or defaultfailure local onlyonce = specification.onlyonce local files = utilities.parsers.settings_to_array(name) + local truename = environment.truefilename local done = false for i=1,#files do local filename = files[i] @@ -42,9 +43,9 @@ function commands.uselibrary(specification) -- todo; reporter end for i=1,#patterns do local somename = format(patterns[i],filename) -if environment.truefilename then - somename = environment.truefilename(somename) -end + if truename then + somename = truename(somename) + end local foundname = resolvers.getreadfilename("any",".",somename) or "" if foundname ~= "" then action(name,foundname) diff --git a/tex/context/base/file-mod.lua b/tex/context/base/file-mod.lua index e6592f0f0..1bbe657e0 100644 --- a/tex/context/base/file-mod.lua +++ b/tex/context/base/file-mod.lua @@ -20,14 +20,14 @@ at the <l n='tex'/> side.</p> local format, concat, tonumber = string.format, table.concat, tonumber -local trace_modules = false trackers.register("modules.loading", function(v) trace_modules = v end) +local trace_modules = false trackers.register("modules.loading", function(v) trace_modules = v end) local report_modules = logs.reporter("resolvers","modules") -commands = commands or { } -local commands = commands +commands = commands or { } +local commands = commands -local findbyscheme = resolvers.finders.byscheme -- use different one +local findbyscheme = resolvers.finders.byscheme -- use different one -- modules can have a specific suffix or can specify one @@ -144,8 +144,8 @@ statistics.register("loaded tex modules", function() t[nt] = k end end - local ts = (nt>0 and format(" (%s)",concat(t," "))) or "" - local fs = (nf>0 and format(" (%s)",concat(f," "))) or "" + local ts = nt > 0 and format(" (%s)",concat(t," ")) or "" + local fs = nf > 0 and format(" (%s)",concat(f," ")) or "" return format("%s requested, %s found%s, %s missing%s",nt+nf,nt,ts,nf,fs) else return nil @@ -166,5 +166,5 @@ function commands.doifolderversionelse(one,two) -- one >= two two = lpeg.match(splitter,two) one = (one[1] or 0) * 10000 + (one[2] or 0) * 100 + (one[3] or 0) two = (two[1] or 0) * 10000 + (two[2] or 0) * 100 + (two[3] or 0) - commands.testcase(one>=two) + commands.doifelse(one>=two) end diff --git a/tex/context/base/file-syn.lua b/tex/context/base/file-syn.lua index 1be9fb4b1..8d913bb37 100644 --- a/tex/context/base/file-syn.lua +++ b/tex/context/base/file-syn.lua @@ -11,6 +11,9 @@ local report_files = logs.reporter("files") environment.filesynonyms = environment.filesynonyms or { } local filesynonyms = environment.filesynonyms +local settings_to_array = utilities.parsers.settings_to_array +local findfile = resolvers.findfile + storage.register("environment/filesynonyms", filesynonyms, "environment.filesynonyms") local function truefilename(name) @@ -37,9 +40,9 @@ function commands.definefilesynonym(name,realname) end function commands.definefilefallback(name,alternatives) - local names = utilities.parser.settings_to_array(alternatives) + local names = settings_to_array(alternatives) for i=1,#names do - local realname = resolvers.findfile(names[i]) + local realname = findfile(names[i]) if realname ~= "" then filesynonyms[name] = realname break diff --git a/tex/context/base/font-afk.lua b/tex/context/base/font-afk.lua new file mode 100644 index 000000000..2674cb233 --- /dev/null +++ b/tex/context/base/font-afk.lua @@ -0,0 +1,199 @@ +if not modules then modules = { } end modules ['font-afk'] = { + version = 1.001, + comment = "companion to font-afm.lua", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files", + dataonly = true, +} + +--[[ldx-- +<p>For ligatures, only characters with a code smaller than 128 make sense, +anything larger is encoding dependent. An interesting complication is that a +character can be in an encoding twice but is hashed once.</p> +--ldx]]-- + + +fonts.handlers.afm.helpdata = { + ligatures = { -- okay, nowadays we could parse the name but type 1 fonts + ['f'] = { -- don't have that many ligatures anyway + { 'f', 'ff' }, + { 'i', 'fi' }, + { 'l', 'fl' }, + }, + ['ff'] = { + { 'i', 'ffi' } + }, + ['fi'] = { + { 'i', 'fii' } + }, + ['fl'] = { + { 'i', 'fli' } + }, + ['s'] = { + { 't', 'st' } + }, + ['i'] = { + { 'j', 'ij' } + }, + }, + texligatures = { + -- ['space'] = { + -- { 'L', 'Lslash' }, + -- { 'l', 'lslash' } + -- }, + -- ['question'] = { + -- { 'quoteleft', 'questiondown' } + -- }, + -- ['exclam'] = { + -- { 'quoteleft', 'exclamdown' } + -- }, + ['quoteleft'] = { + { 'quoteleft', 'quotedblleft' } + }, + ['quoteright'] = { + { 'quoteright', 'quotedblright' } + }, + ['hyphen'] = { + { 'hyphen', 'endash' } + }, + ['endash'] = { + { 'hyphen', 'emdash' } + } + }, + leftkerned = { + AEligature = "A", aeligature = "a", + OEligature = "O", oeligature = "o", + IJligature = "I", ijligature = "i", + AE = "A", ae = "a", + OE = "O", oe = "o", + IJ = "I", ij = "i", + Ssharp = "S", ssharp = "s", + }, + rightkerned = { + AEligature = "E", aeligature = "e", + OEligature = "E", oeligature = "e", + IJligature = "J", ijligature = "j", + AE = "E", ae = "e", + OE = "E", oe = "e", + IJ = "J", ij = "j", + Ssharp = "S", ssharp = "s", + }, + bothkerned = { + Acircumflex = "A", acircumflex = "a", + Ccircumflex = "C", ccircumflex = "c", + Ecircumflex = "E", ecircumflex = "e", + Gcircumflex = "G", gcircumflex = "g", + Hcircumflex = "H", hcircumflex = "h", + Icircumflex = "I", icircumflex = "i", + Jcircumflex = "J", jcircumflex = "j", + Ocircumflex = "O", ocircumflex = "o", + Scircumflex = "S", scircumflex = "s", + Ucircumflex = "U", ucircumflex = "u", + Wcircumflex = "W", wcircumflex = "w", + Ycircumflex = "Y", ycircumflex = "y", + + Agrave = "A", agrave = "a", + Egrave = "E", egrave = "e", + Igrave = "I", igrave = "i", + Ograve = "O", ograve = "o", + Ugrave = "U", ugrave = "u", + Ygrave = "Y", ygrave = "y", + + Atilde = "A", atilde = "a", + Itilde = "I", itilde = "i", + Otilde = "O", otilde = "o", + Utilde = "U", utilde = "u", + Ntilde = "N", ntilde = "n", + + Adiaeresis = "A", adiaeresis = "a", Adieresis = "A", adieresis = "a", + Ediaeresis = "E", ediaeresis = "e", Edieresis = "E", edieresis = "e", + Idiaeresis = "I", idiaeresis = "i", Idieresis = "I", idieresis = "i", + Odiaeresis = "O", odiaeresis = "o", Odieresis = "O", odieresis = "o", + Udiaeresis = "U", udiaeresis = "u", Udieresis = "U", udieresis = "u", + Ydiaeresis = "Y", ydiaeresis = "y", Ydieresis = "Y", ydieresis = "y", + + Aacute = "A", aacute = "a", + Cacute = "C", cacute = "c", + Eacute = "E", eacute = "e", + Iacute = "I", iacute = "i", + Lacute = "L", lacute = "l", + Nacute = "N", nacute = "n", + Oacute = "O", oacute = "o", + Racute = "R", racute = "r", + Sacute = "S", sacute = "s", + Uacute = "U", uacute = "u", + Yacute = "Y", yacute = "y", + Zacute = "Z", zacute = "z", + + Dstroke = "D", dstroke = "d", + Hstroke = "H", hstroke = "h", + Tstroke = "T", tstroke = "t", + + Cdotaccent = "C", cdotaccent = "c", + Edotaccent = "E", edotaccent = "e", + Gdotaccent = "G", gdotaccent = "g", + Idotaccent = "I", idotaccent = "i", + Zdotaccent = "Z", zdotaccent = "z", + + Amacron = "A", amacron = "a", + Emacron = "E", emacron = "e", + Imacron = "I", imacron = "i", + Omacron = "O", omacron = "o", + Umacron = "U", umacron = "u", + + Ccedilla = "C", ccedilla = "c", + Kcedilla = "K", kcedilla = "k", + Lcedilla = "L", lcedilla = "l", + Ncedilla = "N", ncedilla = "n", + Rcedilla = "R", rcedilla = "r", + Scedilla = "S", scedilla = "s", + Tcedilla = "T", tcedilla = "t", + + Ohungarumlaut = "O", ohungarumlaut = "o", + Uhungarumlaut = "U", uhungarumlaut = "u", + + Aogonek = "A", aogonek = "a", + Eogonek = "E", eogonek = "e", + Iogonek = "I", iogonek = "i", + Uogonek = "U", uogonek = "u", + + Aring = "A", aring = "a", + Uring = "U", uring = "u", + + Abreve = "A", abreve = "a", + Ebreve = "E", ebreve = "e", + Gbreve = "G", gbreve = "g", + Ibreve = "I", ibreve = "i", + Obreve = "O", obreve = "o", + Ubreve = "U", ubreve = "u", + + Ccaron = "C", ccaron = "c", + Dcaron = "D", dcaron = "d", + Ecaron = "E", ecaron = "e", + Lcaron = "L", lcaron = "l", + Ncaron = "N", ncaron = "n", + Rcaron = "R", rcaron = "r", + Scaron = "S", scaron = "s", + Tcaron = "T", tcaron = "t", + Zcaron = "Z", zcaron = "z", + + dotlessI = "I", dotlessi = "i", + dotlessJ = "J", dotlessj = "j", + + AEligature = "AE", aeligature = "ae", AE = "AE", ae = "ae", + OEligature = "OE", oeligature = "oe", OE = "OE", oe = "oe", + IJligature = "IJ", ijligature = "ij", IJ = "IJ", ij = "ij", + + Lstroke = "L", lstroke = "l", Lslash = "L", lslash = "l", + Ostroke = "O", ostroke = "o", Oslash = "O", oslash = "o", + + Ssharp = "SS", ssharp = "ss", + + Aumlaut = "A", aumlaut = "a", + Eumlaut = "E", eumlaut = "e", + Iumlaut = "I", iumlaut = "i", + Oumlaut = "O", oumlaut = "o", + Uumlaut = "U", uumlaut = "u", + } +} diff --git a/tex/context/base/font-afm.lua b/tex/context/base/font-afm.lua index 9d3d8ddd7..a27a6a236 100644 --- a/tex/context/base/font-afm.lua +++ b/tex/context/base/font-afm.lua @@ -17,12 +17,7 @@ where we handles font encodings. Eventually font encoding goes away.</p> --ldx]]-- -local trace_features = false trackers.register("afm.features", function(v) trace_features = v end) -local trace_indexing = false trackers.register("afm.indexing", function(v) trace_indexing = v end) -local trace_loading = false trackers.register("afm.loading", function(v) trace_loading = v end) -local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end) - -local report_afm = logs.reporter("fonts","afm loading") +local fonts, logs, trackers, containers, resolvers = fonts, logs, trackers, containers, resolvers local next, type, tonumber = next, type, tonumber local format, match, gmatch, lower, gsub, strip = string.format, string.match, string.gmatch, string.lower, string.gsub, string.strip @@ -30,25 +25,34 @@ local abs = math.abs local P, S, C, R, lpegmatch, patterns = lpeg.P, lpeg.S, lpeg.C, lpeg.R, lpeg.match, lpeg.patterns local derivetable = table.derive -local fonts = fonts +local trace_features = false trackers.register("afm.features", function(v) trace_features = v end) +local trace_indexing = false trackers.register("afm.indexing", function(v) trace_indexing = v end) +local trace_loading = false trackers.register("afm.loading", function(v) trace_loading = v end) +local trace_defining = false trackers.register("fonts.defining", function(v) trace_defining = v end) + +local report_afm = logs.reporter("fonts","afm loading") + +local definers = fonts.definers +local readers = fonts.readers +local constructors = fonts.constructors +local handlers = fonts.handlers + local afm = { } local pfb = { } -fonts.handlers.afm = afm -fonts.handlers.pfb = pfb + +handlers.afm = afm +handlers.pfb = pfb afm.version = 1.410 -- incrementing this number one up will force a re-cache afm.cache = containers.define("fonts", "afm", afm.version, true) afm.autoprefixed = true -- this will become false some day (catches texnansi-blabla.*) +afm.helpdata = { } -- set later on so no local for this afm.syncspace = true -- when true, nicer stretch values afm.addligatures = true -- best leave this set to true afm.addtexligatures = true -- best leave this set to true afm.addkerns = true -- best leave this set to true -local definers = fonts.definers -local readers = fonts.readers -local constructors = fonts.constructors - local findbinfile = resolvers.findbinfile local afmfeatures = constructors.newfeatures("afm") @@ -429,79 +433,26 @@ end and extra kerns. This saves quite some lookups later.</p> --ldx]]-- ---[[ldx-- -<p>Only characters with a code smaller than 128 make sense, -anything larger is encoding dependent. An interesting complication -is that a character can be in an encoding twice but is hashed -once.</p> ---ldx]]-- - -local ligatures = { -- okay, nowadays we could parse the name but type 1 fonts - ['f'] = { -- don't have that many ligatures anyway - { 'f', 'ff' }, - { 'i', 'fi' }, - { 'l', 'fl' }, - }, - ['ff'] = { - { 'i', 'ffi' } - }, - ['fi'] = { - { 'i', 'fii' } - }, - ['fl'] = { - { 'i', 'fli' } - }, - ['s'] = { - { 't', 'st' } - }, - ['i'] = { - { 'j', 'ij' } - }, -} - -local texligatures = { - -- ['space'] = { - -- { 'L', 'Lslash' }, - -- { 'l', 'lslash' } - -- }, - -- ['question'] = { - -- { 'quoteleft', 'questiondown' } - -- }, - -- ['exclam'] = { - -- { 'quoteleft', 'exclamdown' } - -- }, - ['quoteleft'] = { - { 'quoteleft', 'quotedblleft' } - }, - ['quoteright'] = { - { 'quoteright', 'quotedblright' } - }, - ['hyphen'] = { - { 'hyphen', 'endash' } - }, - ['endash'] = { - { 'hyphen', 'emdash' } - } -} - local addthem = function(rawdata,ligatures) - local descriptions = rawdata.descriptions - local resources = rawdata.resources - local unicodes = resources.unicodes - local names = resources.names - for ligname, ligdata in next, ligatures do - local one = descriptions[unicodes[ligname]] - if one then - for _, pair in next, ligdata do - local two, three = unicodes[pair[1]], unicodes[pair[2]] - if two and three then - local ol = one.ligatures - if ol then - if not ol[two] then - ol[two] = three + if ligatures then + local descriptions = rawdata.descriptions + local resources = rawdata.resources + local unicodes = resources.unicodes + local names = resources.names + for ligname, ligdata in next, ligatures do + local one = descriptions[unicodes[ligname]] + if one then + for _, pair in next, ligdata do + local two, three = unicodes[pair[1]], unicodes[pair[2]] + if two and three then + local ol = one.ligatures + if ol then + if not ol[two] then + ol[two] = three + end + else + one.ligatures = { [two] = three } end - else - one.ligatures = { [two] = three } end end end @@ -509,8 +460,8 @@ local addthem = function(rawdata,ligatures) end end -addligatures = function(rawdata) addthem(rawdata,ligatures ) end -addtexligatures = function(rawdata) addthem(rawdata,texligatures) end +addligatures = function(rawdata) addthem(rawdata,afm.helpdata.ligatures ) end +addtexligatures = function(rawdata) addthem(rawdata,afm.helpdata.texligatures) end --[[ldx-- <p>We keep the extra kerns in separate kerning tables so that we can use @@ -524,208 +475,71 @@ them selectively.</p> -- we don't use the character database. (Ok, we can have a context specific -- variant). --- we can make them numbers - -local left = { - AEligature = "A", aeligature = "a", - OEligature = "O", oeligature = "o", - IJligature = "I", ijligature = "i", - AE = "A", ae = "a", - OE = "O", oe = "o", - IJ = "I", ij = "i", - Ssharp = "S", ssharp = "s", -} - -local right = { - AEligature = "E", aeligature = "e", - OEligature = "E", oeligature = "e", - IJligature = "J", ijligature = "j", - AE = "E", ae = "e", - OE = "E", oe = "e", - IJ = "J", ij = "j", - Ssharp = "S", ssharp = "s", -} - -local both = { - Acircumflex = "A", acircumflex = "a", - Ccircumflex = "C", ccircumflex = "c", - Ecircumflex = "E", ecircumflex = "e", - Gcircumflex = "G", gcircumflex = "g", - Hcircumflex = "H", hcircumflex = "h", - Icircumflex = "I", icircumflex = "i", - Jcircumflex = "J", jcircumflex = "j", - Ocircumflex = "O", ocircumflex = "o", - Scircumflex = "S", scircumflex = "s", - Ucircumflex = "U", ucircumflex = "u", - Wcircumflex = "W", wcircumflex = "w", - Ycircumflex = "Y", ycircumflex = "y", - - Agrave = "A", agrave = "a", - Egrave = "E", egrave = "e", - Igrave = "I", igrave = "i", - Ograve = "O", ograve = "o", - Ugrave = "U", ugrave = "u", - Ygrave = "Y", ygrave = "y", - - Atilde = "A", atilde = "a", - Itilde = "I", itilde = "i", - Otilde = "O", otilde = "o", - Utilde = "U", utilde = "u", - Ntilde = "N", ntilde = "n", - - Adiaeresis = "A", adiaeresis = "a", Adieresis = "A", adieresis = "a", - Ediaeresis = "E", ediaeresis = "e", Edieresis = "E", edieresis = "e", - Idiaeresis = "I", idiaeresis = "i", Idieresis = "I", idieresis = "i", - Odiaeresis = "O", odiaeresis = "o", Odieresis = "O", odieresis = "o", - Udiaeresis = "U", udiaeresis = "u", Udieresis = "U", udieresis = "u", - Ydiaeresis = "Y", ydiaeresis = "y", Ydieresis = "Y", ydieresis = "y", - - Aacute = "A", aacute = "a", - Cacute = "C", cacute = "c", - Eacute = "E", eacute = "e", - Iacute = "I", iacute = "i", - Lacute = "L", lacute = "l", - Nacute = "N", nacute = "n", - Oacute = "O", oacute = "o", - Racute = "R", racute = "r", - Sacute = "S", sacute = "s", - Uacute = "U", uacute = "u", - Yacute = "Y", yacute = "y", - Zacute = "Z", zacute = "z", - - Dstroke = "D", dstroke = "d", - Hstroke = "H", hstroke = "h", - Tstroke = "T", tstroke = "t", - - Cdotaccent = "C", cdotaccent = "c", - Edotaccent = "E", edotaccent = "e", - Gdotaccent = "G", gdotaccent = "g", - Idotaccent = "I", idotaccent = "i", - Zdotaccent = "Z", zdotaccent = "z", - - Amacron = "A", amacron = "a", - Emacron = "E", emacron = "e", - Imacron = "I", imacron = "i", - Omacron = "O", omacron = "o", - Umacron = "U", umacron = "u", - - Ccedilla = "C", ccedilla = "c", - Kcedilla = "K", kcedilla = "k", - Lcedilla = "L", lcedilla = "l", - Ncedilla = "N", ncedilla = "n", - Rcedilla = "R", rcedilla = "r", - Scedilla = "S", scedilla = "s", - Tcedilla = "T", tcedilla = "t", - - Ohungarumlaut = "O", ohungarumlaut = "o", - Uhungarumlaut = "U", uhungarumlaut = "u", - - Aogonek = "A", aogonek = "a", - Eogonek = "E", eogonek = "e", - Iogonek = "I", iogonek = "i", - Uogonek = "U", uogonek = "u", - - Aring = "A", aring = "a", - Uring = "U", uring = "u", - - Abreve = "A", abreve = "a", - Ebreve = "E", ebreve = "e", - Gbreve = "G", gbreve = "g", - Ibreve = "I", ibreve = "i", - Obreve = "O", obreve = "o", - Ubreve = "U", ubreve = "u", - - Ccaron = "C", ccaron = "c", - Dcaron = "D", dcaron = "d", - Ecaron = "E", ecaron = "e", - Lcaron = "L", lcaron = "l", - Ncaron = "N", ncaron = "n", - Rcaron = "R", rcaron = "r", - Scaron = "S", scaron = "s", - Tcaron = "T", tcaron = "t", - Zcaron = "Z", zcaron = "z", - - dotlessI = "I", dotlessi = "i", - dotlessJ = "J", dotlessj = "j", - - AEligature = "AE", aeligature = "ae", AE = "AE", ae = "ae", - OEligature = "OE", oeligature = "oe", OE = "OE", oe = "oe", - IJligature = "IJ", ijligature = "ij", IJ = "IJ", ij = "ij", - - Lstroke = "L", lstroke = "l", Lslash = "L", lslash = "l", - Ostroke = "O", ostroke = "o", Oslash = "O", oslash = "o", - - Ssharp = "SS", ssharp = "ss", - - Aumlaut = "A", aumlaut = "a", - Eumlaut = "E", eumlaut = "e", - Iumlaut = "I", iumlaut = "i", - Oumlaut = "O", oumlaut = "o", - Uumlaut = "U", uumlaut = "u", - -} - addkerns = function(rawdata) -- using shcodes is not robust here local descriptions = rawdata.descriptions local resources = rawdata.resources local unicodes = resources.unicodes local function do_it_left(what) - for unicode, description in next, descriptions do - local kerns = description.kerns - if kerns then - local extrakerns - for complex, simple in next, what do - complex = unicodes[complex] - simple = unicodes[simple] - if complex and simple then - local ks = kerns[simple] - if ks and not kerns[complex] then - if extrakerns then - extrakerns[complex] = ks - else - extrakerns = { [complex] = ks } + if what then + for unicode, description in next, descriptions do + local kerns = description.kerns + if kerns then + local extrakerns + for complex, simple in next, what do + complex = unicodes[complex] + simple = unicodes[simple] + if complex and simple then + local ks = kerns[simple] + if ks and not kerns[complex] then + if extrakerns then + extrakerns[complex] = ks + else + extrakerns = { [complex] = ks } + end end end end - end - if extrakerns then - description.extrakerns = extrakerns + if extrakerns then + description.extrakerns = extrakerns + end end end end end local function do_it_copy(what) - for complex, simple in next, what do - complex = unicodes[complex] - simple = unicodes[simple] - if complex and simple then - local complexdescription = descriptions[complex] - if complexdescription then -- optional - local simpledescription = descriptions[complex] - if simpledescription then - local extrakerns - local kerns = simpledescription.kerns - if kerns then - for unicode, kern in next, kerns do - if extrakerns then - extrakerns[unicode] = kern - else - extrakerns = { [unicode] = kern } + if what then + for complex, simple in next, what do + complex = unicodes[complex] + simple = unicodes[simple] + if complex and simple then + local complexdescription = descriptions[complex] + if complexdescription then -- optional + local simpledescription = descriptions[complex] + if simpledescription then + local extrakerns + local kerns = simpledescription.kerns + if kerns then + for unicode, kern in next, kerns do + if extrakerns then + extrakerns[unicode] = kern + else + extrakerns = { [unicode] = kern } + end end end - end - local extrakerns = simpledescription.extrakerns - if extrakerns then - for unicode, kern in next, extrakerns do - if extrakerns then - extrakerns[unicode] = kern - else - extrakerns = { [unicode] = kern } + local extrakerns = simpledescription.extrakerns + if extrakerns then + for unicode, kern in next, extrakerns do + if extrakerns then + extrakerns[unicode] = kern + else + extrakerns = { [unicode] = kern } + end end end - end - if extrakerns then - complexdescription.extrakerns = extrakerns + if extrakerns then + complexdescription.extrakerns = extrakerns + end end end end @@ -733,11 +547,11 @@ addkerns = function(rawdata) -- using shcodes is not robust here end end -- add complex with values of simplified when present - do_it_left(left) - do_it_left(both) + do_it_left(afm.helpdata.leftkerned) + do_it_left(afm.helpdata.bothkerned) -- copy kerns from simple char to complex char unless set - do_it_copy(both) - do_it_copy(right) + do_it_copy(afm.helpdata.bothkerned) + do_it_copy(afm.helpdata.rightkerned) end --[[ldx-- diff --git a/tex/context/base/font-agl.lua b/tex/context/base/font-agl.lua index 6c1f387ba..ca7fb61cb 100644 --- a/tex/context/base/font-agl.lua +++ b/tex/context/base/font-agl.lua @@ -271,7 +271,7 @@ for a, u in next, extras do end end --- We load this table only when needed. We coul duse a loading mechanism +-- We load this table only when needed. We could use a loading mechanism -- return the table but there are no more vectors like this so why bother. fonts.encodings = fonts.encodings or { } diff --git a/tex/context/base/font-chk.lua b/tex/context/base/font-chk.lua index 04b49b02c..7536a3e09 100644 --- a/tex/context/base/font-chk.lua +++ b/tex/context/base/font-chk.lua @@ -149,7 +149,7 @@ local package = "q %0.6f 0 0 %0.6f 0 0 cm %s %s %s rg %s %s %s RG 10 M 1 j 1 J 0 local cache = { } -- saves some tables but not that impressive -local function addmissingsymbols(tfmdata) +local function addmissingsymbols(tfmdata) -- we can have an alternative with rules local characters = tfmdata.characters local size = tfmdata.parameters.size local privates = tfmdata.properties.privates diff --git a/tex/context/base/font-chk.mkiv b/tex/context/base/font-chk.mkiv new file mode 100644 index 000000000..d436388de --- /dev/null +++ b/tex/context/base/font-chk.mkiv @@ -0,0 +1,22 @@ +%D \module +%D [ file=font-chk, +%D version=2009.01.02, % moved from font-tra +%D title=\CONTEXT\ Font Macros, +%D subtitle=Checking, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Font Macros / Checking} + +\registerctxluafile{font-chk}{1.001} + +\unexpanded\def\checkcharactersinfont {\ctxcommand{checkcharactersinfont()}} +\unexpanded\def\removemissingcharacters {\ctxcommand{removemissingcharacters()}} +\unexpanded\def\replacemissingcharacters{\ctxcommand{replacemissingcharacters()}} + +\endinput diff --git a/tex/context/base/font-cid.lua b/tex/context/base/font-cid.lua index 4a4c4d209..bf186d885 100644 --- a/tex/context/base/font-cid.lua +++ b/tex/context/base/font-cid.lua @@ -10,17 +10,17 @@ local format, match, lower = string.format, string.match, string.lower local tonumber = tonumber local P, S, R, C, V, lpegmatch = lpeg.P, lpeg.S, lpeg.R, lpeg.C, lpeg.V, lpeg.match -local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end) +local fonts, logs, trackers = fonts, logs, trackers -local report_otf = logs.reporter("fonts","otf loading") +local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end) -local fonts = fonts +local report_otf = logs.reporter("fonts","otf loading") -local cid = { } -fonts.cid = cid +local cid = { } +fonts.cid = cid -local cidmap = { } -local cidmax = 10 +local cidmap = { } +local cidmax = 10 -- original string parser: 0.109, lpeg parser: 0.036 seconds for Adobe-CNS1-4.cidmap -- @@ -79,8 +79,7 @@ local function loadcidfile(filename) end end -cid.loadfile = loadcidfile -- we use the frozen variant - +cid.loadfile = loadcidfile -- we use the frozen variant local template = "%s-%s-%s.cidmap" local function locate(registry,ordering,supplement) diff --git a/tex/context/base/font-col.lua b/tex/context/base/font-col.lua index f8add1e4e..849ade5d8 100644 --- a/tex/context/base/font-col.lua +++ b/tex/context/base/font-col.lua @@ -8,32 +8,40 @@ if not modules then modules = { } end modules ['font-col'] = { -- possible optimization: delayed initialization of vectors -local gmatch, type = string.gmatch, type -local traverse_id = node.traverse_id -local lpegmatch = lpeg.match +local context, commands, trackers, logs = context, commands, trackers, logs +local node, nodes, fonts, characters = node, nodes, fonts, characters +local file, lpeg, table, string = file, lpeg, table, string + +local type, next, toboolean = type, next, toboolean +local gmatch = string.gmatch local fastcopy = table.fastcopy -local settings_to_hash = utilities.parsers.settings_to_hash +----- P, Cc, lpegmatch = lpeg.P, lpeg.Cc, lpeg.match + +local traverse_id = node.traverse_id +local settings_to_hash = utilities.parsers.settings_to_hash -local trace_collecting = false trackers.register("fonts.collecting", function(v) trace_collecting = v end) +local trace_collecting = false trackers.register("fonts.collecting", function(v) trace_collecting = v end) -local report_fonts = logs.reporter("fonts","collections") +local report_fonts = logs.reporter("fonts","collections") -local fonts, context = fonts, context +fonts.collections = fonts.collections or { } +local collections = fonts.collections -fonts.collections = fonts.collections or { } -local collections = fonts.collections +collections.definitions = collections.definitions or { } +local definitions = collections.definitions -collections.definitions = collections.definitions or { } -local definitions = collections.definitions +collections.vectors = collections.vectors or { } +local vectors = collections.vectors -collections.vectors = collections.vectors or { } -local vectors = collections.vectors +local fontdata = fonts.hashes.identifiers -local fontdata = fonts.hashes.identifiers +local glyph_code = nodes.nodecodes.glyph -local glyph = node.id('glyph') +local fontpatternhassize = fonts.helpers.fontpatternhassize -local list, current, active = { }, 0, false +local list = { } +local current = 0 +local enabled = false -- maybe also a copy @@ -145,17 +153,19 @@ function collections.clonevector(name) if trace_collecting then report_fonts("def: activating collection %s for font %s",name,current) end - active = true + if not enabled then + nodes.tasks.enableaction("processors","fonts.collections.process") + enabled = true + end statistics.stoptiming(fonts) end -- we already have this parser - -local P, Cc = lpeg.P, lpeg.Cc -local spec = (P("sa") + P("at") + P("scaled") + P("at") + P("mo")) * P(" ")^1 * (1-P(" "))^1 * P(" ")^0 * -1 -local okay = ((1-spec)^1 * spec * Cc(true)) + Cc(false) - --- todo: check for already done +-- +-- local spec = (P("sa") + P("at") + P("scaled") + P("at") + P("mo")) * P(" ")^1 * (1-P(" "))^1 * P(" ")^0 * -1 +-- local okay = ((1-spec)^1 * spec * Cc(true)) + Cc(false) +-- +-- if lpegmatch(okay,name) then function collections.prepare(name) current = font.current() @@ -175,7 +185,7 @@ function collections.prepare(name) local f = d[i] local name = f.font local scale = f.rscale or 1 - if lpegmatch(okay,name) then + if fontpatternhassize(name) then context.font_fallbacks_clone_unique(name,scale) else context.font_fallbacks_clone_inherited(name,scale) @@ -198,32 +208,28 @@ function collections.report(message) end function collections.process(head) -- this way we keep feature processing - if active then - local done = false - for n in traverse_id(glyph,head) do - local v = vectors[n.font] - if v then - local id = v[n.char] - if id then - if type(id) == "table" then - local newid, newchar = id[1], id[2] - if trace_collecting then - report_fonts("lst: remapping character %s in font %s to character %s in font %s",n.char,n.font,newchar,newid) - end - n.font, n.char = newid, newchar - else - if trace_collecting then - report_fonts("lst: remapping font %s to %s for character %s",n.font,id,n.char) - end - n.font = id + local done = false + for n in traverse_id(glyph,head) do + local v = vectors[n.font] + if v then + local id = v[n.char] + if id then + if type(id) == "table" then + local newid, newchar = id[1], id[2] + if trace_collecting then + report_fonts("lst: remapping character %s in font %s to character %s in font %s",n.char,n.font,newchar,newid) end + n.font, n.char = newid, newchar + else + if trace_collecting then + report_fonts("lst: remapping font %s to %s for character %s",n.font,id,n.char) + end + n.font = id end end end - return head, done - else - return head, false end + return head, done end -- interface diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua index a7dcd6edd..8fdb42c7d 100644 --- a/tex/context/base/font-ctx.lua +++ b/tex/context/base/font-ctx.lua @@ -790,6 +790,18 @@ local scale_scaled = P("scaled") * Cc(4) * spaces * dimension -- value local sizepattern = spaces * (scale_at + scale_sa + scale_mo + scale_scaled + scale_none) local splitpattern = spaces * value * spaces * rest +function helpers.splitfontpattern(str) + local name, size = lpegmatch(splitpattern,str) + local kind, size = lpegmatch(sizepattern,size) + return name, kind, size +end + +function helpers.fontpatternhassize(str) + local name, size = lpegmatch(splitpattern,str) + local kind, size = lpegmatch(sizepattern,size) + return size or false +end + local specification -- still needed as local ? local getspecification = definers.getspecification diff --git a/tex/context/base/font-ldr.lua b/tex/context/base/font-ldr.lua index ca4e3f98a..175b4d0cc 100644 --- a/tex/context/base/font-ldr.lua +++ b/tex/context/base/font-ldr.lua @@ -6,8 +6,8 @@ if not modules then modules = { } end modules ['font-ldr'] = { license = "see context related readme files" } --- This module provides a replacement for fontloader.to_table --- and will be loaded in due time. +-- This module provides an experimental replacement for fontloader.to_table +-- but is not used that much. local fields = fontloader.fields diff --git a/tex/context/base/font-lib.mkvi b/tex/context/base/font-lib.mkvi index d9c04f0a2..6b3d76567 100644 --- a/tex/context/base/font-lib.mkvi +++ b/tex/context/base/font-lib.mkvi @@ -27,6 +27,7 @@ \registerctxluafile{font-tfm}{1.001} \registerctxluafile{font-afm}{1.001} +\registerctxluafile{font-afk}{1.001} \registerctxluafile{font-oti}{1.001} % otf initialization \registerctxluafile{font-ott}{1.001} % otf tables (first) @@ -56,7 +57,6 @@ \registerctxluafile{font-ext}{1.001} \registerctxluafile{font-fbk}{1.001} -\registerctxluafile{font-chk}{1.001} \registerctxluafile{font-aux}{1.001} diff --git a/tex/context/base/font-sol.lua b/tex/context/base/font-sol.lua index e97e627b4..d77a990b5 100644 --- a/tex/context/base/font-sol.lua +++ b/tex/context/base/font-sol.lua @@ -24,16 +24,18 @@ local insert, remove = table.insert, table.remove local utfchar = utf.char local random = math.random -local trace_split = false trackers.register("builders.paragraphs.solutions.splitters.splitter", function(v) trace_split = v end) -local trace_optimize = false trackers.register("builders.paragraphs.solutions.splitters.optimizer", function(v) trace_optimize = v end) -local trace_colors = false trackers.register("builders.paragraphs.solutions.splitters.colors", function(v) trace_colors = v end) -local trace_goodies = false trackers.register("fonts.goodies", function(v) trace_goodies = v end) +local utilities, logs, statistics, fonts, trackers = utilities, logs, statistics, fonts, trackers +local interfaces, commands, attributes = interfaces, commands, attributes +local nodes, node, tex = nodes, node, tex -local report_solutions = logs.reporter("fonts","solutions") -local report_splitters = logs.reporter("fonts","splitters") -local report_optimizers = logs.reporter("fonts","optimizers") +local trace_split = false trackers.register("builders.paragraphs.solutions.splitters.splitter", function(v) trace_split = v end) +local trace_optimize = false trackers.register("builders.paragraphs.solutions.splitters.optimizer", function(v) trace_optimize = v end) +local trace_colors = false trackers.register("builders.paragraphs.solutions.splitters.colors", function(v) trace_colors = v end) +local trace_goodies = false trackers.register("fonts.goodies", function(v) trace_goodies = v end) -local nodes, node = nodes, node +local report_solutions = logs.reporter("fonts","solutions") +local report_splitters = logs.reporter("fonts","splitters") +local report_optimizers = logs.reporter("fonts","optimizers") local variables = interfaces.variables @@ -87,41 +89,42 @@ local starttiming = statistics.starttiming local stoptiming = statistics.stoptiming local process_characters = nodes.handlers.characters local inject_kerns = nodes.injections.handler -local fontdata = fonts.hashes.identifiers -local setfontdynamics = fonts.hashes.setdynamics -local fontprocesses = fonts.hashes.processes + +local fonthashes = fonts.hashes +local fontdata = fonthashes.identifiers +local setfontdynamics = fonthashes.setdynamics +local fontprocesses = fonthashes.processes local texsetattribute = tex.setattribute local unsetvalue = attributes.unsetvalue -local parbuilders = builders.paragraphs -parbuilders.solutions = parbuilders.solutions or { } -parbuilders.solutions.splitters = parbuilders.solutions.splitters or { } - -local splitters = parbuilders.solutions.splitters +local parbuilders = builders.paragraphs +parbuilders.solutions = parbuilders.solutions or { } +local parsolutions = parbuilders.solutions +parsolutions.splitters = parsolutions.splitters or { } +local splitters = parsolutions.splitters -local solutions = { } -- attribute sets -local registered = { } -- backmapping +local solutions = { } -- attribute sets +local registered = { } -- backmapping +splitters.registered = registered -local a_split = attributes.private('splitter') +local a_split = attributes.private('splitter') -local preroll = true -local criterium = 0 -local randomseed = nil -local optimize = nil -- set later -local variant = v_normal -local splitwords = true +local preroll = true +local criterium = 0 +local randomseed = nil +local optimize = nil -- set later +local variant = v_normal +local splitwords = true -local cache = { } -local variants = { } -local max_less = 0 -local max_more = 0 +local cache = { } +local variants = { } +local max_less = 0 +local max_more = 0 -splitters.registered = registered +local stack = { } -local stack = { } - -local dummy = { +local dummy = { attribute = unsetvalue, randomseed = 0, criterium = 0, @@ -409,8 +412,6 @@ end -- we could avoid a hpack but hpack is not that slow - - local function doit(word,list,best,width,badness,line,set,listdir) local changed = 0 local n = word[1] @@ -769,7 +770,6 @@ function splitters.reset() end end - -- interface commands.definefontsolution = splitters.define @@ -777,4 +777,3 @@ commands.startfontsolution = splitters.start commands.stopfontsolution = splitters.stop commands.setfontsolution = splitters.set commands.resetfontsolution = splitters.reset - diff --git a/tex/context/base/font-tra.mkiv b/tex/context/base/font-tra.mkiv index 06b861378..d0a562fbd 100644 --- a/tex/context/base/font-tra.mkiv +++ b/tex/context/base/font-tra.mkiv @@ -13,6 +13,8 @@ \unprotect +\writestatus{loading}{ConTeXt Font Macros / Tracing} + %D \macros %D {showbodyfont} %D @@ -82,10 +84,8 @@ \fetchruntimecommand \showcharratio {\f!fontprefix\s!run} \fetchruntimecommand \showfontparameters {\f!fontprefix\s!run} -\unexpanded\def\checkcharactersinfont {\ctxcommand{checkcharactersinfont()}} -\unexpanded\def\removemissingcharacters{\ctxcommand{removemissingcharacters()}} -\unexpanded\def\showchardata #1{\ctxcommand{showchardata("#1")}} -\unexpanded\def\showfontdata {\ctxcommand{showfontparameters()}} +\unexpanded\def\showchardata #1{\ctxcommand{showchardata("#1")}} +\unexpanded\def\showfontdata {\ctxcommand{showfontparameters()}} %D \macros %D {doiffontpresentelse} @@ -95,7 +95,7 @@ %D \doiffontpresentelse{adam-lindsay-modern-serif}{YES}{NO} %D \stoptyping -\def\doiffontpresentelse#1{\ctxcommand{doifelse(fonts.names.exists("#1"))}} +\unexpanded\def\doiffontpresentelse#1{\ctxcommand{doifelse(fonts.names.exists("#1"))}} % experimental, maybe this becomes a module @@ -103,24 +103,24 @@ \unexpanded\def\startotfcollecting{\ctxlua{nodes.tracers.steppers.start()}} \unexpanded\def\stopotfcollecting {\ctxlua{nodes.tracers.steppers.stop()}} -\def\resetotfcollecting{\ctxlua{nodes.tracers.steppers.reset()}} +\unexpanded\def\resetotfcollecting{\ctxlua{nodes.tracers.steppers.reset()}} % Rather experimental: % % \page \showotfcomposition{arabtype*arab-default at 48pt}{-1}{الضَّرَّ} \page % \page \showotfcomposition{arabtype*arab-default at 48pt}{-1}{لِلّٰهِ} \page -\def\showotfstepglyphs#1% +\unexpanded\def\showotfstepglyphs#1% {\ctxlua{nodes.tracers.steppers.glyphs(\number\otfcollector,#1)}% \unhbox\otfcollector} -\def\otfstepcharcommand#1#2#3% font char class +\unexpanded\def\otfstepcharcommand#1#2#3% font char class {\removeunwantedspaces \hskip.5em plus .125em\relax \doif{#3}{mark}{\underbar}{U+\hexnumber{#2}}:\ruledhbox{\ctxlua{nodes.tracers.fontchar(#1,#2)}}% \hskip.5em plus .125em\relax} -\def\otfstepmessagecommand#1#2% +\unexpanded\def\otfstepmessagecommand#1#2% {\begingroup \tttf\language\minusone \veryraggedright @@ -133,16 +133,16 @@ \endgroup \blank} -\def\showotfstepchars#1% +\unexpanded\def\showotfstepchars#1% {\ctxlua{nodes.tracers.steppers.codes(#1,"otfstepcharcommand")}} -\def\showotfstepmessages#1% +\unexpanded\def\showotfstepmessages#1% {\ctxlua{nodes.tracers.steppers.messages(#1,"otfstepmessagecommand",true)}} -\def\showotfstepfeatures +\unexpanded\def\showotfstepfeatures {\ctxlua{nodes.tracers.steppers.features()}} -\def\showotfsteps +\unexpanded\def\showotfsteps {\begingroup \veryraggedright \forgetparindent @@ -186,7 +186,7 @@ \newbox\otfcompositionbox -\def\showotfcomposition#1#2#3% {font*features at size}, rl=-1, text +\unexpanded\def\showotfcomposition#1#2#3% {font*features at size}, rl=-1, text {\begingroup \veryraggedright \forgetparindent diff --git a/tex/context/base/java-ini.lua b/tex/context/base/java-ini.lua index 1e98de717..b431a965c 100644 --- a/tex/context/base/java-ini.lua +++ b/tex/context/base/java-ini.lua @@ -8,9 +8,10 @@ if not modules then modules = { } end modules ['java-ini'] = { local format = string.format local concat = table.concat -local lpegmatch, lpegP, lpegR, lpegS, lpegC, lpegCarg = lpeg.match, lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Carg +local lpegmatch, P, S, C, Carg, Cc = lpeg.match, lpeg.P, lpeg.S, lpeg.C, lpeg.Carg, lpeg.Cc local allocate = utilities.storage.allocate +local settings_to_array = utilities.parsers.settings_to_array local variables = interfaces.variables -- todo: don't flush scripts if no JS key @@ -38,24 +39,24 @@ local function storefunction(s,preamble) functions[s] = preamble end -local uses = lpegP("uses") -local used = lpegP("used") -local left = lpegP("{") -local right = lpegP("}") -local space = lpegS(" \r\n") +local uses = P("uses") +local used = P("used") +local left = P("{") +local right = P("}") +local space = S(" \r\n") local spaces = space^0 -local braced = left * lpegC((1-right-space)^1) * right -local unbraced = lpegC((1-space)^1) +local braced = left * C((1-right-space)^1) * right +local unbraced = C((1-space)^1) local name = spaces * (braced + unbraced) * spaces -local any = lpegP(1) -local script = lpegC(any^1) -local funct = lpegP("function") -local leftp = lpegP("(") -local rightp = lpegP(")") -local fname = spaces * funct * spaces * (lpegC((1-space-left-leftp)^1) * lpegCarg(1) / storefunction) * spaces * leftp - -local parsecode = name * ((uses * name) + lpeg.Cc("")) * spaces * script -local parsepreamble = name * ((used * name) + lpeg.Cc("")) * spaces * script +local any = P(1) +local script = C(any^1) +local funct = P("function") +local leftp = P("(") +local rightp = P(")") +local fname = spaces * funct * spaces * (C((1-space-left-leftp)^1) * Carg(1) / storefunction) * spaces * leftp + +local parsecode = name * ((uses * name) + Cc("")) * spaces * script +local parsepreamble = name * ((used * name) + Cc("")) * spaces * script local parsefunctions = (fname + any)^0 function javascripts.storecode(str) @@ -112,7 +113,7 @@ end function javascripts.usepreamblenow(name) -- now later if name and name ~= "" and name ~= variables.reset then -- todo: reset - local names = utilities.parsers.settings_to_array(name) + local names = settings_to_array(name) for i=1,#names do local somename = names[i] if not preambled[somename] then diff --git a/tex/context/base/lang-def.lua b/tex/context/base/lang-def.lua index 8fcd7a621..c6bbcf3ae 100644 --- a/tex/context/base/lang-def.lua +++ b/tex/context/base/lang-def.lua @@ -7,10 +7,12 @@ if not modules then modules = { } end modules ['lang-def'] = { -- dataonly = true, -- saves 10K } +local rawget = rawget local lower = string.lower languages = languages or { } local languages = languages +languages.data = languages.data or { } local data = languages.data local allocate = utilities.storage.allocate @@ -377,50 +379,54 @@ local contexts = { } data.contexts = contexts local records = { } data.records = records for k=1,#specifications do - local v = specifications[k] - if v.variant then - variants[v.variant] = v + local specification = specifications[k] + local variant = specification.variant + if variant then + variants[lower(variant)] = specification end - if v.opentype then - opentypes[v.opentype] = v + local opentype = specification.opentype + if opentype then + opentypes[lower(opentype)] = specification end - local vc = v.context - if vc then - if type(vc) == "table" then - for k=1,#vc do - contexts[v] = vc[k] + local context = context + if context then + if type(context) == "table" then + for k=1,#context do + contexts[context[k]] = specification end else - contexts[vc] = v + contexts[context] = specification end end end +local defaultvariant = variants["en-us"] + setmetatableindex(variants, function(t,k) - str = lower(str) - local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant.en).language + k = lower(k) + local v = (rawget(variants,k) or rawget(opentypes,k) or rawget(contexts,k) or defaultvariant).language t[k] = v return v end) setmetatableindex(opentypes, function(t,k) - str = lower(str) - local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant.en).opentype + k = lower(k) + local v = (rawget(variants,k) or rawget(opentypes,k) or rawget(contexts,k) or defaultvariant).opentype t[k] = v return v end) setmetatableindex(contexts, function(t,k) - str = lower(str) - local v = (l_variant[str] or l_opentype[str] or l_context[str] or l_variant[languages.default]).context + k = lower(str) + local v = (rawget(variants,k) or rawget(opentypes,k) or rawget(contexts,k) or defaultvariant).context v = (type(v) == "table" and v[1]) or v t[k] = v return v end) setmetatableindex(records, function(t,k) -- how useful is this one? - str = lower(str) - local v = variants[str] or opentypes[str] or contexts[str] or variants.en + k = lower(k) + local v = rawget(variants,k) or rawget(opentypes,k) or rawget(contexts,k) or defaultvariant t[k] = v return v end) diff --git a/tex/context/base/lang-ini.lua b/tex/context/base/lang-ini.lua index 97528097f..eaedcd69a 100644 --- a/tex/context/base/lang-ini.lua +++ b/tex/context/base/lang-ini.lua @@ -29,12 +29,14 @@ local trace_patterns = false trackers.register("languages.patterns", function(v local report_initialization = logs.reporter("languages","initialization") -local prehyphenchar = lang.prehyphenchar -- global per language +local prehyphenchar = lang.prehyphenchar -- global per language local posthyphenchar = lang.posthyphenchar -- global per language local lefthyphenmin = lang.lefthyphenmin local righthyphenmin = lang.righthyphenmin +local lang = lang lang.exceptions = lang.hyphenation +local new_langage = lang.new languages = languages or {} local languages = languages @@ -65,7 +67,7 @@ local function resolve(tag) if data then instance = data.instance if not instance then - instance = lang.new(data.number) + instance = new_langage(data.number) data.instance = instance end end @@ -78,7 +80,7 @@ local function tolang(what) -- returns lang object if data then local instance = data.lang if not instance then - instance = lang.new(data.number) + instance = new_langage(data.number) data.instance = instance end return instance @@ -100,34 +102,34 @@ local function loaddefinitions(tag,specification) local dataused, ok = data.used, false for i=1,#definitions do local definition = definitions[i] - if definition ~= "" then - if definition == "reset" then -- interfaces.variables.reset + if definition == "" then + -- error + elseif definition == "reset" then -- interfaces.variables.reset + if trace_patterns then + report_initialization("clearing patterns for language '%s'",tag) + end + instance:clear_patterns() + elseif not dataused[definition] then + dataused[definition] = definition + local filename = "lang-" .. definition .. ".lua" + local fullname = resolvers.findfile(filename) or "" + if fullname ~= "" then if trace_patterns then - report_initialization("clearing patterns for language '%s'",tag) + report_initialization("loading definition '%s' for language '%s' from '%s'",definition,tag,fullname) end - instance:clear_patterns() - elseif not dataused[definition] then - dataused[definition] = definition - local filename = "lang-" .. definition .. ".lua" - local fullname = resolvers.findfile(filename) or "" - if fullname ~= "" then - if trace_patterns then - report_initialization("loading definition '%s' for language '%s' from '%s'",definition,tag,fullname) - end - local defs = dofile(fullname) -- use regular loader instead - if defs then -- todo: version test - ok, nofloaded = true, nofloaded + 1 - instance:patterns (defs.patterns and defs.patterns.data or "") - instance:hyphenation(defs.exceptions and defs.exceptions.data or "") - else - report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename) - end - elseif trace_patterns then + local defs = dofile(fullname) -- use regular loader instead + if defs then -- todo: version test + ok, nofloaded = true, nofloaded + 1 + instance:patterns (defs.patterns and defs.patterns .data or "") + instance:hyphenation(defs.exceptions and defs.exceptions.data or "") + else report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename) end elseif trace_patterns then - report_initialization("definition '%s' for language '%s' already loaded",definition,tag) + report_initialization("invalid definition '%s' for language '%s' in '%s'",definition,tag,filename) end + elseif trace_patterns then + report_initialization("definition '%s' for language '%s' already loaded",definition,tag) end end return ok @@ -161,7 +163,7 @@ function languages.define(tag,parent) storage.shared.noflanguages = noflanguages end -function languages.synonym(synonym,tag) -- convenience function +function languages.setsynonym(synonym,tag) -- convenience function local l = registered[tag] if l then l.synonyms[synonym] = true -- maybe some day more info @@ -169,7 +171,7 @@ function languages.synonym(synonym,tag) -- convenience function end function languages.installed(separator) - context(concat(sortedkeys(registered),separator or ",")) + return concat(sortedkeys(registered),separator or ",") end function languages.current(n) @@ -187,8 +189,6 @@ function languages.association(tag) -- not yet used local lat = tag and associated[tag] if lat then return lat[1], lat[2] - else - return nil, nil end end @@ -204,7 +204,7 @@ end -- a bit messy, we will do all language setting in lua as we can now assign -- and 'patterns' will go away here. -function languages.setdirty(tag) +function languages.unload(tag) local l = registered[tag] if l then l.dirty = true @@ -217,13 +217,9 @@ if environment.initex then return 0 end - function commands.languagenumber() - context(0) - end - else - local function getnumber(tag,default,patterns) + function languages.getnumber(tag,default,patterns) local l = registered[tag] if l then if l.dirty then @@ -264,12 +260,6 @@ else end end - languages.getnumber = getnumber - - function commands.languagenumber(tag,default,patterns) - context(getnumber(tag,default,patterns)) - end - end -- not that usefull, global values @@ -294,7 +284,7 @@ function languages.loadwords(tag,filename) end end -function languages.exceptions(tag,str) +function languages.setexceptions(tag,str) local data, instance = resolve(tag) if data then instance:hyphenation(string.strip(str)) -- we need to strip leading spaces @@ -404,3 +394,20 @@ end) --~ function hyphenation.loadexceptions(tag, exceptions) --~ return loadthem(tag, exceptions, filterexceptions, "exceptions") --~ end + +-- interface + +local getnumber = languages.getnumber + +function commands.languagenumber(tag,default,patterns) + context(getnumber(tag,default,patterns)) +end + +function commands.installedlanguages(separator) + context(languages.installed(separator)) +end + +commands.definelanguage = languages.define +commands.setlanguagesynonym = languages.setsynonym +commands.unloadlanguage = languages.unload +commands.setlanguageexceptions = languages.setexceptions diff --git a/tex/context/base/lang-ini.mkiv b/tex/context/base/lang-ini.mkiv index 150b68f70..4f560ce9d 100644 --- a/tex/context/base/lang-ini.mkiv +++ b/tex/context/base/lang-ini.mkiv @@ -174,7 +174,7 @@ \newtoks \everysetuplanguage -\def\installedlanguages{\ctxlua{languages.installed()}} +\def\installedlanguages{\ctxcommand{installedlanguages()}} \unexpanded\def\doiflanguageelse#1% {\ifcsname\??language#1\c!state\endcsname @@ -199,10 +199,10 @@ \lang_basics_install_indeed{#1}{#1}% \getparameters[\??language#1][\c!state=\v!start,#2]}% \edef\currentsetuplanguage{#1}% - \ctxlua{languages.define("#1","\specificlanguageparameter{#1}\s!default")}% + \ctxcommand{definelanguage("#1","\specificlanguageparameter{#1}\s!default")}% \the\everysetuplanguage} {\setvalue{\??languagelinked#1}{#2}% - \ctxlua{languages.synonym("#1","#2")}% + \ctxcommand{setlanguagesynonym("#1","#2")}% \lang_basics_install_indeed{#1}{#2}}} \def\lang_basics_install_indeed#1#2% @@ -254,7 +254,7 @@ \lang_basics_synchronize} \appendtoks - \ctxlua{languages.setdirty("\currentsetuplanguage")}% + \ctxcommand{unloadlanguage("\currentsetuplanguage")}% \to \everysetuplanguage \setuplanguage @@ -570,15 +570,15 @@ \let\stopexceptions\relax \unexpanded\def\startexceptions - {\dosingleempty\dostartexceptions} + {\dosingleempty\lang_basics_start_exceptions} -\def\dostartexceptions[#1]#2\stopexceptions % multilingual or not? +\def\lang_basics_start_exceptions[#1]#2\stopexceptions % multilingual or not? {\begingroup \edef\askedlanguage{\reallanguagetag{#1}}% \ifx\askedlanguage\empty \let\askedlanguage\currentlanguage \fi - \ctxlua{languages.exceptions("\askedlanguage",\!!bs#2\!!es)}% + \ctxcommand{setlanguageexceptions("\askedlanguage",\!!bs#2\!!es)}% \endgroup} %D For the moment here: diff --git a/tex/context/base/lang-lab.lua b/tex/context/base/lang-lab.lua index a217cd50d..893e1554d 100644 --- a/tex/context/base/lang-lab.lua +++ b/tex/context/base/lang-lab.lua @@ -61,9 +61,10 @@ if not modules then modules = { } end modules ['lang-lab'] = { local format, find = string.format, string.find local next, rawget, type = next, rawget, type -local prtcatcodes = tex.prtcatcodes local lpegmatch = lpeg.match +local prtcatcodes = catcodes.numbers.prtcatcodes -- todo: use different method + local trace_labels = false trackers.register("languages.labels", function(v) trace_labels = v end) local report_labels = logs.reporter("languages","labels") @@ -81,17 +82,19 @@ end labels.split = split -local function definelanguagelabels(data,command,tag,rawtag) +local contextsprint = context.sprint + +local function definelanguagelabels(data,class,tag,rawtag) for language, text in next, data.labels do if text == "" then -- skip elseif type(text) == "table" then - context("\\%s[%s][%s={{%s},{%s}}]",command,language,tag,text[1],text[2]) + contextsprint(prtcatcodes,"\\setlabeltextpair{",class,"}{",language,"}{",tag,"}{",text[1],"}{",text[2],"}") if trace_labels then report_labels("language '%s', defining label '%s' as '%s' and '%s'",language,rawtag,text[1],text[2]) end else - context("\\%s[%s][%s={{%s},}]",command,language,tag,text) + contextsprint(prtcatcodes,"\\setlabeltextpair{",class,"}{",language,"}{",tag,"}{",text,"}{}") if trace_labels then report_labels("language '%s', defining label '%s' as '%s'",language,rawtag,text) end @@ -99,11 +102,10 @@ local function definelanguagelabels(data,command,tag,rawtag) end end -function labels.define(command,name,prefixed) +function labels.define(class,name,prefixed) local list = languages.data.labels[name] if list then report_labels("defining label set '%s'",name) - context.pushcatcodes(prtcatcodes) -- context.unprotect for tag, data in next, list do if data.hidden then -- skip @@ -112,25 +114,24 @@ function labels.define(command,name,prefixed) if second then if rawget(variables,first) then if rawget(variables,second) then - definelanguagelabels(data,command,format("\\v!%s:\\v!%s",first,second),tag) + definelanguagelabels(data,class,format("\\v!%s:\\v!%s",first,second),tag) else - definelanguagelabels(data,command,format("\\v!%s:%s",first,second),tag) + definelanguagelabels(data,class,format("\\v!%s:%s",first,second),tag) end elseif rawget(variables,second) then - definelanguagelabels(data,command,format("%s:\\v!%s",first,second),tag) + definelanguagelabels(data,class,format("%s:\\v!%s",first,second),tag) else - definelanguagelabels(data,command,format("%s:%s",first,second),tag) + definelanguagelabels(data,class,format("%s:%s",first,second),tag) end elseif rawget(variables,rawtag) then - definelanguagelabels(data,command,format("\\v!%s",tag),tag) + definelanguagelabels(data,class,format("\\v!%s",tag),tag) else - definelanguagelabels(data,command,tag,tag) + definelanguagelabels(data,class,tag,tag) end else - definelanguagelabels(data,command,tag,tag) + definelanguagelabels(data,class,tag,tag) end end - context.popcatcodes() -- context.protect else report_labels("unknown label set '%s'",name) end @@ -151,11 +152,16 @@ end --~ --~ labels.check() + +-- interface + +commands.definelabels = labels.define + -- function commands.setstrippedtextprefix(str) -- context(string.strip(str)) -- end -function commands.concatcommalist(settings) +function commands.concatcommalist(settings) -- it's too easy to forget that this one is there local list = settings_to_array(settings.text or "") local size = #list if size > 1 then diff --git a/tex/context/base/lang-lab.mkiv b/tex/context/base/lang-lab.mkiv index 68458e069..285a03315 100644 --- a/tex/context/base/lang-lab.mkiv +++ b/tex/context/base/lang-lab.mkiv @@ -231,17 +231,18 @@ \def\lang_labels_text_prefix_assign_dumb#1[#2,#3]% {\expandafter\def\csname\??label\currenttextprefixclass:\currenttextprefixtag:#1\endcsname{#2}} +\unexpanded\def\setlabeltextpair#1#2#3#4#5% a fast one for usage at the Lua end + {\expandafter\def\csname\??label#1:\reallanguagetag{#2}:#3\endcsname{{#4}{#5}}} % class tag key left right + \definelabelclass [head] [0] % titles \definelabelclass [label] [0] % texts \definelabelclass [mathlabel] [0] % functions \definelabelclass [taglabel] [2] % tags -\ctxlua{ - languages.labels.define("setupheadtext","titles",true)% - languages.labels.define("setuplabeltext","texts",true)% - languages.labels.define("setupmathlabeltext","functions",false)% - languages.labels.define("setuptaglabeltext","tags",false)% -} +\ctxcommand{definelabels("head", "titles", true )} +\ctxcommand{definelabels("label","texts", true )} +\ctxcommand{definelabels("math", "functions",false)} +\ctxcommand{definelabels("tag", "tags", false)} %D \macros %D {translate} diff --git a/tex/context/base/lang-url.lua b/tex/context/base/lang-url.lua index 09a4e5d90..1817fc280 100644 --- a/tex/context/base/lang-url.lua +++ b/tex/context/base/lang-url.lua @@ -72,7 +72,8 @@ hyphenatedurl.lefthyphenmin = 2 hyphenatedurl.righthyphenmin = 3 hyphenatedurl.discretionary = nil --- more fun is to write nodes +-- more fun is to write nodes .. maybe it's nicer to do this +-- in an attribute handler anyway local function action(hyphenatedurl,str,left,right,disc) local n = 0 diff --git a/tex/context/base/lang-wrd.lua b/tex/context/base/lang-wrd.lua index e23345040..c5bc75ca2 100644 --- a/tex/context/base/lang-wrd.lua +++ b/tex/context/base/lang-wrd.lua @@ -90,76 +90,11 @@ function words.found(id, str) end end --- The following code is an adaption of experimental code for --- hyphenating and spell checking. +-- The following code is an adaption of experimental code for hyphenating and +-- spell checking. -- there is an n=1 problem somewhere in nested boxes ---~ local function mark_words(head,whenfound) -- can be optimized and shared ---~ local current, start, str, language, n, done = head, nil, "", nil, 0, false ---~ local function action() ---~ if #str > 0 then ---~ local f = whenfound(language,str) ---~ if f then ---~ done = true ---~ for i=1,n do ---~ f(start) ---~ start = start.next ---~ end ---~ end ---~ end ---~ str, start, n = "", nil, 0 ---~ end ---~ while current do ---~ local id = current.id ---~ if id == glyph_code then ---~ local a = current.lang ---~ if a then ---~ if a ~= language then ---~ if start then ---~ action() ---~ end ---~ language = a ---~ end ---~ elseif start then ---~ action() ---~ language = a ---~ end ---~ local components = current.components ---~ if components then ---~ start = start or current ---~ n = n + 1 ---~ for g in traverse_nodes(components) do ---~ str = str .. utfchar(g.char) ---~ end ---~ else ---~ local code = current.char ---~ local data = chardata[code] ---~ if is_letter[data.category] then ---~ start = start or current ---~ n = n + 1 ---~ str = str .. utfchar(code) -- slow, maybe str should be a table (and given max) ---~ elseif start then ---~ action() ---~ end ---~ end ---~ elseif id == disc_code then ---~ if n > 0 then ---~ n = n + 1 ---~ end ---~ elseif id == kern_code and current.subtype == kerning_code and start then ---~ -- ok ---~ elseif start then ---~ action() ---~ end ---~ current = current.next ---~ end ---~ if start then ---~ action() ---~ end ---~ return head, done ---~ end - local function mark_words(head,whenfound) -- can be optimized and shared local current, language, done = head, nil, nil, 0, false local str, s, nds, n = { }, 0, { }, 0 -- n could also be a table, saves calls @@ -263,21 +198,19 @@ end local cache = { } -- can also be done with method 1 -- frozen colors once used -setmetatable(cache, { - __index = function(t,k) -- k == language, numbers[k] == tag - local c - if type(k) == "string" then - c = colist[k] - elseif k < 0 then - c = colist["word:unset"] - else - c = colist["word:" .. (numbers[k] or "unset")] or colist["word:unknown"] - end - local v = c and function(n) set_attribute(n,a_color,c) end or false - t[k] = v - return v +table.setmetatableindex(cache, function(t,k) -- k == language, numbers[k] == tag + local c + if type(k) == "string" then + c = colist[k] + elseif k < 0 then + c = colist["word:unset"] + else + c = colist["word:" .. (numbers[k] or "unset")] or colist["word:unknown"] end -} ) + local v = c and function(n) set_attribute(n,a_color,c) end or false + t[k] = v + return v +end) -- method 1 diff --git a/tex/context/base/lpdf-ren.lua b/tex/context/base/lpdf-ren.lua index 6ffdf8110..6362d12fe 100644 --- a/tex/context/base/lpdf-ren.lua +++ b/tex/context/base/lpdf-ren.lua @@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['lpdf-ren'] = { -- rendering local tostring, tonumber, next = tostring, tonumber, next -local format = string.format +local format, rep = string.format, string.rep local settings_to_array = utilities.parsers.settings_to_array local backends, lpdf, nodes, node = backends, lpdf, nodes, node @@ -60,49 +60,6 @@ local lpdf_usage = pdfdictionary { Print = pdfdictionary { PrintState = pdf_off -- hide and vide actions. This is why we need to be able to force usage of layers -- at several moments. --- injection - -local cache = { } - -function codeinjections.startlayer(name) - if not name then - name = "unknown" - end - codeinjections.useviewerlayer(name) - return format("/OC /%s BDC",name) -end - -function codeinjections.stoplayer(name) - return "EMC" -end - -function nodeinjections.startlayer(name) - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("/OC /%s BDC",name))) - cache[name] = c - end - return copy_node(c) -end - -local stop = register(pdfliteral("EMC")) - -function nodeinjections.stoplayer() - return copy_node(stop) -end - -local cache = { } - -function nodeinjections.switchlayer(name) -- not used, optimization - local c = cache[name] - if not c then - codeinjections.useviewerlayer(name) - c = register(pdfliteral(format("EMC /OC /%s BDC",name))) - end - return copy_node(c) -end - -- management local pdfln, pdfld = { }, { } @@ -240,6 +197,72 @@ function executers.hidelayer (arguments) return setlayer(pdf_off, arguments) function executers.videlayer (arguments) return setlayer(pdf_on, arguments) end function executers.togglelayer(arguments) return setlayer(pdf_toggle,arguments) end +-- injection + +function codeinjections.startlayer(name) -- used in mp + if not name then + name = "unknown" + end + useviewerlayer(name) + return format("/OC /%s BDC",name) +end + +function codeinjections.stoplayer(name) -- used in mp + return "EMC" +end + +local cache = { } + +function nodeinjections.startlayer(name) + local c = cache[name] + if not c then + useviewerlayer(name) + c = register(pdfliteral(format("/OC /%s BDC",name))) + cache[name] = c + end + return copy_node(c) +end + +local stop = register(pdfliteral("EMC")) + +function nodeinjections.stoplayer() + return copy_node(stop) +end + +-- experimental stacker code (slow, can be optimized): +-- +-- local values = viewerlayers.values +-- +-- function nodeinjections.startstackedlayer(s,t,first,last) +-- local r = { } +-- for i=first,last do +-- r[#r+1] = startlayer(values[t[i]]) +-- end +-- r = concat(r," ") +-- return pdfliteral(r) +-- end +-- +-- function nodeinjections.stopstackedlayer(s,t,first,last) +-- local r = { } +-- for i=last,first,-1 do +-- r[#r+1] = stoplayer() +-- end +-- r = concat(r," ") +-- return pdfliteral(r) +-- end +-- +-- function nodeinjections.changestackedlayer(s,t1,first1,last1,t2,first2,last2) +-- local r = { } +-- for i=last1,first1,-1 do +-- r[#r+1] = stoplayer() +-- end +-- for i=first2,last2 do +-- r[#r+1] = startlayer(values[t2[i]]) +-- end +-- r = concat(r," ") +-- return pdfliteral(r) +-- end + -- transitions local pagetransitions = { diff --git a/tex/context/base/luat-cod.lua b/tex/context/base/luat-cod.lua index 6960f2811..815d7f92c 100644 --- a/tex/context/base/luat-cod.lua +++ b/tex/context/base/luat-cod.lua @@ -39,11 +39,10 @@ function lua.registercode(filename,version) if not bytedone[barename] then local code = environment.luafilechunk(filename) if code then --- assert(code)() bytedone[barename] = true if environment.initex then local n = lua.lastbytecode + 1 - bytedata[n] = { barename, version } + bytedata[n] = { barename, version or "0.000" } bytecode[n] = code lua.lastbytecode = n end diff --git a/tex/context/base/luat-cod.mkiv b/tex/context/base/luat-cod.mkiv index 930532df9..034ab0613 100644 --- a/tex/context/base/luat-cod.mkiv +++ b/tex/context/base/luat-cod.mkiv @@ -15,12 +15,6 @@ \unprotect -%D We have this one for a rather long time now but nowadays \ETEX\ -%D provides a command with the same name and different meaning. That -%D one is available as \type {\normalexpanded}. - -\long\def\expanded#1{\long\xdef\lastexpanded{\noexpand#1}\lastexpanded} - %D We cannot use the following due to the fact that existing usage %D demanded duplicating hashes. %D diff --git a/tex/context/base/lxml-ctx.mkiv b/tex/context/base/lxml-ctx.mkiv index 530c29aa7..58807339d 100644 --- a/tex/context/base/lxml-ctx.mkiv +++ b/tex/context/base/lxml-ctx.mkiv @@ -20,9 +20,6 @@ \unprotect -% The \let|=letterbar is a messy hack and is needed for the tabulate. We now use -% \detokenize. - \settrue \xmllshowbuffer \setfalse\xmllshowtitle \settrue \xmllshowwarning diff --git a/tex/context/base/lxml-tex.lua b/tex/context/base/lxml-tex.lua index 7cabe22a8..80dd77874 100644 --- a/tex/context/base/lxml-tex.lua +++ b/tex/context/base/lxml-tex.lua @@ -25,9 +25,10 @@ local lowerchars, upperchars, lettered = characters.lower, characters.upper, cha lxml = lxml or { } local lxml = lxml -local ctxcatcodes, notcatcodes = tex.ctxcatcodes, tex.notcatcodes - -local contextsprint = context.sprint -- with catcodes (here we use fast variants, but with option for tracing) +local catcodenumbers = catcodes.numbers +local ctxcatcodes = catcodenumbers.ctxcatcodes -- todo: use different method +local notcatcodes = catcodenumbers.notcatcodes -- todo: use different method +local contextsprint = context.sprint -- with catcodes (here we use fast variants, but with option for tracing) local xmlelements, xmlcollected, xmlsetproperty = xml.elements, xml.collected, xml.setproperty local xmlwithelements = xml.withelements diff --git a/tex/context/base/m-barcodes.mkiv b/tex/context/base/m-barcodes.mkiv index 0282f706d..e4c43b376 100644 --- a/tex/context/base/m-barcodes.mkiv +++ b/tex/context/base/m-barcodes.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -%D You can best use m-zint instead of this one. +\writestatus{barcodes}{the 'zint' module is a better choice} % \startTEXpage % \startPSTRICKS @@ -106,15 +106,13 @@ end } \stopsetups -\def\barcode[#1]% +\unexpanded\def\barcode[#1]% {\bgroup \setvariables[barcode][type=isbn,#1]% \directsetup{barcode:\getvariable{barcode}{type}}% \egroup} -% \usemodule[barcodes] - -\doifnotmode{demo}{\endinput} +\continueifinputfile{m-barcodes.mkiv} \starttext \startTEXpage diff --git a/tex/context/base/m-chart.mkvi b/tex/context/base/m-chart.mkvi index e94adeba2..be9890239 100644 --- a/tex/context/base/m-chart.mkvi +++ b/tex/context/base/m-chart.mkvi @@ -30,19 +30,33 @@ % todo: figure out a nice way to define the lot: share current and % support current as name (nb: we need to set parent then) -\def\??flch{@@flch} % chart -\def\??flln{@@flln} % line -\def\??flsh{@@flsh} % shape -\def\??flfc{@@flfc} % focus -\def\??flst{@@flst} % sets -\def\??flsp{@@flsp} % split - -\installsimplecommandhandler \??flch {FLOWchart} \??flch -\installsimplecommandhandler \??flln {FLOWline} \??flln -\installsimplecommandhandler \??flsh {FLOWshape} \??flsh -\installsimplecommandhandler \??flfc {FLOWfocus} \??flfc -\installsimplecommandhandler \??flst {FLOWsets} \??flst -\installsimplecommandhandler \??flsp {FLOWsplit} \??flsp +% \def\??flch{@@flch} % chart +% \def\??flln{@@flln} % line +% \def\??flsh{@@flsh} % shape +% \def\??flfc{@@flfc} % focus +% \def\??flst{@@flst} % sets +% \def\??flsp{@@flsp} % split + +% \installsimplecommandhandler \??flch {FLOWchart} \??flch +% \installsimplecommandhandler \??flln {FLOWline} \??flln +% \installsimplecommandhandler \??flsh {FLOWshape} \??flsh +% \installsimplecommandhandler \??flfc {FLOWfocus} \??flfc +% \installsimplecommandhandler \??flst {FLOWsets} \??flst +% \installsimplecommandhandler \??flsp {FLOWsplit} \??flsp + +\installcorenamespace {flowchart} % \def\??flch{@@flch} % chart +\installcorenamespace {flowline} % \def\??flln{@@flln} % line +\installcorenamespace {flowshape} % \def\??flsh{@@flsh} % shape +\installcorenamespace {flowfocus} % \def\??flfc{@@flfc} % focus +\installcorenamespace {flowsets} % \def\??flst{@@flst} % sets +\installcorenamespace {flowsplit} % \def\??flsp{@@flsp} % split + +\installsimplecommandhandler \??flowchart {FLOWchart} \??flowchart % maybe just a setuphandler +\installsimplecommandhandler \??flowline {FLOWline} \??flowline % maybe just a setuphandler +\installsimplecommandhandler \??flowshape {FLOWshape} \??flowshape % maybe just a setuphandler +\installsimplecommandhandler \??flowfocus {FLOWfocus} \??flowfocus % maybe just a setuphandler +\installsimplecommandhandler \??flowsets {FLOWsets} \??flowsets % maybe just a setuphandler +\installsimplecommandhandler \??flowsplit {FLOWsplit} \??flowsplit % maybe just a setuphandler \let\setupFLOWcharts\setupFLOWchart \let\setupFLOWlines \setupFLOWline diff --git a/tex/context/base/m-database.mkiv b/tex/context/base/m-database.mkiv index 91da78879..01f84482a 100644 --- a/tex/context/base/m-database.mkiv +++ b/tex/context/base/m-database.mkiv @@ -93,7 +93,7 @@ \protect -\doifnotmode{demo}{\endinput} +\continueifinputfile{m-database.mkiv} \starttext diff --git a/tex/context/base/m-morse.mkvi b/tex/context/base/m-morse.mkvi index aba83bb2d..6082d588a 100644 --- a/tex/context/base/m-morse.mkvi +++ b/tex/context/base/m-morse.mkvi @@ -228,16 +228,16 @@ end \def\MorseSpace {\hskip7\dimexpr\MorseWidth\relax} \def\MorseUnknown #text{[\detokenize{#text}]} -\def\MorseCode #text{\ctxlua{moduledata.morse.tomorse(\!!bs#text\!!es,true)}} -\def\MorseString #text{\ctxlua{moduledata.morse.tomorse(\!!bs#text\!!es)}} -\def\MorseFile #text{\ctxlua{moduledata.morse.filetomorse("#text")}} -\def\MorseTable {\ctxlua{moduledata.morse.showtable()}} +\unexpanded\def\MorseCode #text{\ctxlua{moduledata.morse.tomorse(\!!bs#text\!!es,true)}} +\unexpanded\def\MorseString#text{\ctxlua{moduledata.morse.tomorse(\!!bs#text\!!es)}} +\unexpanded\def\MorseFile #text{\ctxlua{moduledata.morse.filetomorse("#text")}} +\unexpanded\def\MorseTable {\ctxlua{moduledata.morse.showtable()}} -\let\Morse \MorseString +\let\Morse \MorseString \protect -\doifnotmode{demo}{\endinput} +\continueifinputfile{m-morse.mkiv} \starttext diff --git a/tex/context/base/m-spreadsheet.lua b/tex/context/base/m-spreadsheet.lua index 04b87c879..5ed44646d 100644 --- a/tex/context/base/m-spreadsheet.lua +++ b/tex/context/base/m-spreadsheet.lua @@ -206,7 +206,7 @@ end function spreadsheets.doifelsecell(name,r,c) if name == "" then name = current if name == "" then name = defaultname end end local d = data[name] - commands.testcase(d and d.data[c][r]) + commands.doifelse(d and d.data[c][r]) end function spreadsheets.show(name) diff --git a/tex/context/base/m-timing.mkiv b/tex/context/base/m-timing.mkiv index e5413ddb1..62d2ad91b 100644 --- a/tex/context/base/m-timing.mkiv +++ b/tex/context/base/m-timing.mkiv @@ -54,7 +54,7 @@ end \ctxlua{luatex.registerstopactions(function() moduledata.progress.save() end)} \stopnotmode -\def\ShowNamedUsage#1#2#3% +\unexpanded\def\ShowNamedUsage#1#2#3% {\setbox\scratchbox\vbox\bgroup\startMPcode begingroup ; save p, q, b, h, w ; path p, q, b ; numeric h, w ; @@ -92,9 +92,9 @@ end \stoplinecorrection \fi} -\def\LoadUsage #1{\ctxlua{moduledata.progress.convert("#1")}} -\def\ShowUsage #1{\ctxlua{moduledata.progress.show("#1",nil,nil,"elapsed_time")}} -\def\ShowMemoryUsage#1{\ctxlua{moduledata.progress.show("#1",nil,{}, "elapsed_time")}} -\def\ShowNodeUsage #1{\ctxlua{moduledata.progress.show("#1",{},nil, "elapsed_time")}} +\unexpanded\def\LoadUsage #1{\ctxlua{moduledata.progress.convert("#1")}} +\unexpanded\def\ShowUsage #1{\ctxlua{moduledata.progress.show("#1",nil,nil,"elapsed_time")}} +\unexpanded\def\ShowMemoryUsage#1{\ctxlua{moduledata.progress.show("#1",nil,{}, "elapsed_time")}} +\unexpanded\def\ShowNodeUsage #1{\ctxlua{moduledata.progress.show("#1",{},nil, "elapsed_time")}} \endinput diff --git a/tex/context/base/m-translate.mkiv b/tex/context/base/m-translate.mkiv index ae4f3899d..da5e14d62 100644 --- a/tex/context/base/m-translate.mkiv +++ b/tex/context/base/m-translate.mkiv @@ -65,22 +65,29 @@ \unprotect -\def\translateinput{\dodoubleargument\dotranslateinput} +\unexpanded\def\translateinput + {\dodoubleargument\module_translate_input} -\def\dotranslateinput[#1][#2]{\ctxlua{moduledata.translators.register(\!!bs#1\!!es,\!!bs#2\!!es)}} +\def\module_translate_input[#1][#2]% + {\ctxlua{moduledata.translators.register(\!!bs#1\!!es,\!!bs#2\!!es)}} -\def\resetinputtranslation {\ctxlua{moduledata.translators.reset()}} -\def\enableinputtranslation {\ctxlua{moduledata.translators.enable()}} -\def\disableinputtranslation{\ctxlua{moduledata.translators.disable()}} +\unexpanded\def\resetinputtranslation + {\ctxlua{moduledata.translators.reset()}} -\def\readtranslatedfile#1% +\unexpanded\def\enableinputtranslation + {\ctxlua{moduledata.translators.enable()}} + +\unexpanded\def\disableinputtranslation + {\ctxlua{moduledata.translators.disable()}} + +\unexpanded\def\readtranslatedfile#1% {\enableinputtranslation \readfile{#1}\donothing\donothing \disableinputtranslation} \protect -\doifnotmode{demo}{\endinput} +\continueifinputfile{m-translate.mkiv} \starttext diff --git a/tex/context/base/math-act.lua b/tex/context/base/math-act.lua index 278d323c6..9894fa172 100644 --- a/tex/context/base/math-act.lua +++ b/tex/context/base/math-act.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['math-act'] = { license = "see context related readme files" } +-- Here we tweak some font properties (if needed). + local trace_defining = false trackers.register("math.defining", function(v) trace_defining = v end) local report_math = logs.reporter("mathematics","initializing") diff --git a/tex/context/base/math-dim.lua b/tex/context/base/math-dim.lua index a5d7c3963..f4fc7905e 100644 --- a/tex/context/base/math-dim.lua +++ b/tex/context/base/math-dim.lua @@ -128,9 +128,9 @@ function mathematics.dimensions(dimens) -- beware, dimens get spoiled return table.fastcopy(dimens), { } elseif dimens.AxisHeight or dimens.axis_height then local t = { } - local math_x_height = dimens.x_height or 10*65526 - local math_quad = dimens.quad or 10*65526 - local default_rule_thickness = dimens.FractionDenominatorGapMin or dimens.default_rule_thickness or 0.4*65526 + local math_x_height = dimens.x_height or 10*65536 + local math_quad = dimens.quad or 10*65536 + local default_rule_thickness = dimens.FractionDenominatorGapMin or dimens.default_rule_thickness or 0.4*65536 dimens["0"] = 0 dimens["60"] = 60 dimens["0.25*default_rule_thickness"] = default_rule_thickness / 4 diff --git a/tex/context/base/math-ini.lua b/tex/context/base/math-ini.lua index f96c4d091..c84a92aee 100644 --- a/tex/context/base/math-ini.lua +++ b/tex/context/base/math-ini.lua @@ -110,33 +110,43 @@ classes.number = classes.alphabetic local function delcode(target,family,slot) return format('\\Udelcode%s="%X "%X ',target,family,slot) end + local function mathchar(class,family,slot) return format('\\Umathchar "%X "%X "%X ',class,family,slot) end + local function mathaccent(class,family,slot) return format('\\Umathaccent "%X "%X "%X ',0,family,slot) -- no class end + local function delimiter(class,family,slot) return format('\\Udelimiter "%X "%X "%X ',class,family,slot) end + local function radical(family,slot) return format('\\Uradical "%X "%X ',family,slot) end + local function mathchardef(name,class,family,slot) return format('\\Umathchardef\\%s "%X "%X "%X ',name,class,family,slot) end + local function mathcode(target,class,family,slot) return format('\\Umathcode%s="%X "%X "%X ',target,class,family,slot) end + local function mathtopaccent(class,family,slot) return format('\\Umathaccent "%X "%X "%X ',0,family,slot) -- no class end + local function mathbotaccent(class,family,slot) return format('\\Umathaccent bottom "%X "%X "%X ',0,family,slot) -- no class end + local function mathtopdelimiter(class,family,slot) return format('\\Udelimiterover "%X "%X ',family,slot) -- no class end + local function mathbotdelimiter(class,family,slot) return format('\\Udelimiterunder "%X "%X ',family,slot) -- no class end @@ -167,72 +177,75 @@ if setmathcode then setmathsymbol = function(name,class,family,slot) -- hex is nicer for tracing if class == classes.accent then - contextsprint(format([[\unexpanded\gdef\%s{\Umathaccent 0 "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Umathaccent 0 "%X "%X }]],name,family,slot)) elseif class == classes.topaccent then - contextsprint(format([[\unexpanded\gdef\%s{\Umathaccent 0 "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Umathaccent 0 "%X "%X }]],name,family,slot)) elseif class == classes.botaccent then - contextsprint(format([[\unexpanded\gdef\%s{\Umathbotaccent 0 "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Umathbotaccent 0 "%X "%X }]],name,family,slot)) elseif class == classes.over then - contextsprint(format([[\unexpanded\gdef\%s{\Udelimiterover "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Udelimiterover "%X "%X }]],name,family,slot)) elseif class == classes.under then - contextsprint(format([[\unexpanded\gdef\%s{\Udelimiterunder "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Udelimiterunder "%X "%X }]],name,family,slot)) elseif class == classes.open or class == classes.close then setdelcode(slot,{family,slot,0,0}) - contextsprint(format([[\unexpanded\gdef\%s{\Udelimiter "%X "%X "%X }]],name,class,family,slot)) + contextsprint(format([[\ugdef\%s{\Udelimiter "%X "%X "%X }]],name,class,family,slot)) elseif class == classes.delimiter then setdelcode(slot,{family,slot,0,0}) - contextsprint(format([[\unexpanded\gdef\%s{\Udelimiter 0 "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Udelimiter 0 "%X "%X }]],name,family,slot)) elseif class == classes.radical then - contextsprint(format([[\unexpanded\gdef\%s{\Uradical "%X "%X }]],name,family,slot)) + contextsprint(format([[\ugdef\%s{\Uradical "%X "%X }]],name,family,slot)) else -- beware, open/close and other specials should not end up here --- contextsprint(format([[\unexpanded\gdef\%s{\Umathchar "%X "%X "%X }]],name,class,family,slot)) + -- contextsprint(format([[\ugdef\%s{\Umathchar "%X "%X "%X }]],name,class,family,slot)) contextsprint(format([[\Umathchardef\%s "%X "%X "%X ]],name,class,family,slot)) end end - else - setmathcharacter = function(class,family,slot,unicode) - if class <= 7 then - contextsprint(mathcode(slot,class,family,unicode or slot)) - end - end - - setmathsynonym = function(class,family,slot,unicode,setcode) - if setcode and class <= 7 then - contextsprint(mathcode(slot,class,family,unicode)) - end - if class == classes.open or class == classes.close then - contextsprint(delcode(slot,family,unicode)) - end - end - - setmathsymbol = function(name,class,family,slot) - if class == classes.accent then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathaccent(class,family,slot))) - elseif class == classes.topaccent then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathtopaccent(class,family,slot))) - elseif class == classes.botaccent then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathbotaccent(class,family,slot))) - elseif class == classes.over then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathtopdelimiter(class,family,slot))) - elseif class == classes.under then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathbotdelimiter(class,family,slot))) - elseif class == classes.open or class == classes.close then - contextsprint(delcode(slot,family,slot)) - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,delimiter(class,family,slot))) - elseif class == classes.delimiter then - contextsprint(delcode(slot,family,slot)) - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,delimiter(0,family,slot))) - elseif class == classes.radical then - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,radical(family,slot))) - else - -- beware, open/close and other specials should not end up here - contextsprint(format([[\unexpanded\xdef\%s{%s}]],name,mathchar(class,family,slot))) - end - end + report_math("your version of luatex is to old") + + os.exit() + + -- setmathcharacter = function(class,family,slot,unicode) + -- if class <= 7 then + -- contextsprint(mathcode(slot,class,family,unicode or slot)) + -- end + -- end + -- + -- setmathsynonym = function(class,family,slot,unicode,setcode) + -- if setcode and class <= 7 then + -- contextsprint(mathcode(slot,class,family,unicode)) + -- end + -- if class == classes.open or class == classes.close then + -- contextsprint(delcode(slot,family,unicode)) + -- end + -- end + -- + -- setmathsymbol = function(name,class,family,slot) + -- if class == classes.accent then + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathaccent(class,family,slot))) + -- elseif class == classes.topaccent then + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathtopaccent(class,family,slot))) + -- elseif class == classes.botaccent then + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathbotaccent(class,family,slot))) + -- elseif class == classes.over then + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathtopdelimiter(class,family,slot))) + -- elseif class == classes.under then + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathbotdelimiter(class,family,slot))) + -- elseif class == classes.open or class == classes.close then + -- contextsprint(delcode(slot,family,slot)) + -- contextsprint(format([[\uxdef\%s{%s}]],name,delimiter(class,family,slot))) + -- elseif class == classes.delimiter then + -- contextsprint(delcode(slot,family,slot)) + -- contextsprint(format([[\uxdef\%s{%s}]],name,delimiter(0,family,slot))) + -- elseif class == classes.radical then + -- contextsprint(format([[\uxdef\%s{%s}]],name,radical(family,slot))) + -- else + -- -- beware, open/close and other specials should not end up here + -- contextsprint(format([[\uxdef\%s{%s}]],name,mathchar(class,family,slot))) + -- end + -- end end diff --git a/tex/context/base/meta-ini.lua b/tex/context/base/meta-ini.lua index bac1429ae..8b6fd22a2 100644 --- a/tex/context/base/meta-ini.lua +++ b/tex/context/base/meta-ini.lua @@ -9,6 +9,8 @@ if not modules then modules = { } end modules ['meta-ini'] = { local tonumber = tonumber local format, gmatch, match, gsub = string.format, string.gmatch, string.match, string.gsub +local context = context + metapost = metapost or { } -- for the moment downward compatible diff --git a/tex/context/base/meta-pdf.lua b/tex/context/base/meta-pdf.lua index 13d39e445..c68350a96 100644 --- a/tex/context/base/meta-pdf.lua +++ b/tex/context/base/meta-pdf.lua @@ -9,6 +9,9 @@ if not modules then modules = { } end modules ['meta-pdf'] = { -- Finally we used an optimized version. The test code can be found in -- meta-pdh.lua but since we no longer want to overload functione we use -- more locals now. This module keeps changing as it is also a testbed. +-- +-- We can make it even more efficient if needed, but as we don't use this +-- code often in \MKIV\ it makes no sense. local concat, format, gsub, find, byte, gmatch, match = table.concat, string.format, string.gsub, string.find, string.byte, string.gmatch, string.match local lpegmatch = lpeg.match @@ -50,8 +53,8 @@ end resetall() --- -- this does not work as expected (displacement of text) --- -- beware, needs another comment hack +-- -- this does not work as expected (displacement of text) beware, needs another +-- -- comment hack -- -- local function pdfcode(str) -- context(pdfliteral(str)) diff --git a/tex/context/base/meta-tex.lua b/tex/context/base/meta-tex.lua index 872e8154c..c29498ad1 100644 --- a/tex/context/base/meta-tex.lua +++ b/tex/context/base/meta-tex.lua @@ -31,7 +31,7 @@ if not modules then modules = { } end modules ['meta-tex'] = { local P, Cs, lpegmatch = lpeg.P, lpeg.Cs, lpeg.match -local pattern = Cs((P([[\"]]) + P([["]])/"\\quotedbl{}" + P(1))^0) +local pattern = Cs((P([[\"]]) + P([["]])/"\\quotedbl{}" + P(1))^0) -- or \char function metapost.escaped(str) context(lpegmatch(pattern,str)) diff --git a/tex/context/base/mlib-ctx.lua b/tex/context/base/mlib-ctx.lua index 493a45248..a8ef84b80 100644 --- a/tex/context/base/mlib-ctx.lua +++ b/tex/context/base/mlib-ctx.lua @@ -97,9 +97,11 @@ local environments = { } function metapost.tex.set(str) environments[#environments+1] = str end + function metapost.tex.reset() environments = { } end + function metapost.tex.get() return concat(environments,"\n") end diff --git a/tex/context/base/mlib-pdf.lua b/tex/context/base/mlib-pdf.lua index 7a23ba947..88f26e755 100644 --- a/tex/context/base/mlib-pdf.lua +++ b/tex/context/base/mlib-pdf.lua @@ -11,26 +11,41 @@ local abs, sqrt, round = math.abs, math.sqrt, math.round local setmetatable = setmetatable local Cf, C, Cg, Ct, P, S, lpegmatch = lpeg.Cf, lpeg.C, lpeg.Cg, lpeg.Ct, lpeg.P, lpeg.S, lpeg.match -local allocate = utilities.storage.allocate - local report_metapost = logs.reporter("metapost") local mplib, context = mplib, context -local copy_node = node.copy -local write_node = node.write +local allocate = utilities.storage.allocate + +local copy_node = node.copy +local write_node = node.write + +metapost = metapost or { } +local metapost = metapost + +metapost.flushers = metapost.flushers or { } +local pdfflusher = { } +metapost.flushers.pdf = pdfflusher -metapost = metapost or { } -local metapost = metapost +metapost.multipass = false +metapost.n = 0 +metapost.optimize = true -- false -metapost.multipass = false -metapost.n = 0 -metapost.optimize = true -- false +local experiment = true -- uses context(node) that already does delayed nodes + +local savedliterals = nil -- needs checking +local mpsliteral = nodes.pool.register(node.new("whatsit",nodes.whatsitcodes.pdfliteral)) -- pdfliteral.mode = 1 + +local pdfliteral = function(s) + local literal = copy_node(mpsliteral) + literal.data = s + return literal +end ---~ Because in MKiV we always have two passes, we save the objects. When an extra ---~ mp run is done (due to for instance texts identifier in the parse pass), we ---~ get a new result table and the stored objects are forgotten. Otherwise they ---~ are reused. +-- Because in MKiV we always have two passes, we save the objects. When an extra +-- mp run is done (due to for instance texts identifier in the parse pass), we +-- get a new result table and the stored objects are forgotten. Otherwise they +-- are reused. local function getobjects(result,figure,f) if metapost.optimize then @@ -64,23 +79,6 @@ function metapost.convert(result, trialrun, flusher, multipass, askedfig) return true -- done end -metapost.flushers = { } -metapost.flushers.pdf = { } - --- \def\MPLIBtoPDF#1{\ctxlua{metapost.flushliteral(#1)}} - -local savedliterals = nil -- needs checking - -local mpsliteral = nodes.pool.register(node.new("whatsit",8)) -- pdfliteral - -local pdfliteral = function(s) - local literal = copy_node(mpsliteral) - literal.data = s - return literal -end - -local experiment = true -- uses context(node) that already does delayed nodes - function metapost.flushliteral(d) if savedliterals then local literal = copy_node(mpsliteral) @@ -95,7 +93,7 @@ function metapost.flushreset() -- will become obsolete and internal savedliterals = nil end -function metapost.flushers.pdf.comment(message) +function pdfflusher.comment(message) if message then message = format("%% mps graphic %s: %s", metapost.n, message) if experiment then @@ -113,20 +111,20 @@ function metapost.flushers.pdf.comment(message) end end -function metapost.flushers.pdf.startfigure(n,llx,lly,urx,ury,message) +function pdfflusher.startfigure(n,llx,lly,urx,ury,message) savedliterals = nil metapost.n = metapost.n + 1 context.startMPLIBtoPDF(llx,lly,urx,ury) - if message then metapost.flushers.pdf.comment(message) end + if message then pdfflusher.comment(message) end end -function metapost.flushers.pdf.stopfigure(message) - if message then metapost.flushers.pdf.comment(message) end +function pdfflusher.stopfigure(message) + if message then pdfflusher.comment(message) end context.stopMPLIBtoPDF() context.MPLIBflushreset() -- maybe just at the beginning end -function metapost.flushers.pdf.flushfigure(pdfliterals) -- table +function pdfflusher.flushfigure(pdfliterals) -- table if #pdfliterals > 0 then pdfliterals = concat(pdfliterals,"\n") if experiment then @@ -144,7 +142,7 @@ function metapost.flushers.pdf.flushfigure(pdfliterals) -- table end end -function metapost.flushers.pdf.textfigure(font,size,text,width,height,depth) -- we could save the factor +function pdfflusher.textfigure(font,size,text,width,height,depth) -- we could save the factor text = gsub(text,".","\\hbox{%1}") -- kerning happens in metapost (i have to check if this is true for mplib) context.MPtextext(font,size,text,0,-number.dimenfactors.bp*depth) end @@ -273,7 +271,7 @@ function metapost.flush(result,flusher,askedfig) if result then local figures = result.fig if figures then - flusher = flusher or metapost.flushers.pdf + flusher = flusher or pdfflusher local resetplugins = metapost.resetplugins or ignore -- before figure local processplugins = metapost.processplugins or ignore -- each object local synchronizeplugins = metapost.synchronizeplugins or ignore @@ -290,7 +288,7 @@ function metapost.flush(result,flusher,askedfig) local t = { } local miterlimit, linecap, linejoin, dashed = -1, -1, -1, false local bbox = figure:boundingbox() - local llx, lly, urx, ury = bbox[1], bbox[2], bbox[3], bbox[4] -- faster than unpack + local llx, lly, urx, ury = bbox[1], bbox[2], bbox[3], bbox[4] metapost.llx = llx metapost.lly = lly metapost.urx = urx @@ -451,24 +449,17 @@ function metapost.parse(result,askedfig) local figures = result.fig if figures then local analyzeplugins = metapost.analyzeplugins -- each object - for f=1, #figures do + for f=1,#figures do local figure = figures[f] local fignum = figure:charcode() or 0 if askedfig == "direct" or askedfig == "all" or askedfig == fignum then local bbox = figure:boundingbox() - local llx, lly, urx, ury = bbox[1], bbox[2], bbox[3], bbox[4] -- faster than unpack - metapost.llx = llx - metapost.lly = lly - metapost.urx = urx - metapost.ury = ury + metapost.llx = bbox[1] + metapost.lly = bbox[2] + metapost.urx = bbox[3] + metapost.ury = bbox[4] local objects = getobjects(result,figure,f) if objects then - -- for o=1,#objects do - -- local object = objects[o] - -- local prescript = object.prescript - -- if prescript then - -- analyzeplugins(object) - -- end for o=1,#objects do analyzeplugins(objects[o]) end diff --git a/tex/context/base/mlib-run.lua b/tex/context/base/mlib-run.lua index 59dc88b90..813b35399 100644 --- a/tex/context/base/mlib-run.lua +++ b/tex/context/base/mlib-run.lua @@ -145,99 +145,103 @@ end if mplibone then - local preamble = [[ - boolean mplib ; mplib := true ; - string mp_parent_version ; mp_parent_version := "%s" ; - input "%s" ; dump ; - ]] - - metapost.parameters = { - hash_size = 100000, - main_memory = 4000000, - max_in_open = 50, - param_size = 100000, - } - - function metapost.make(name, target, version) - starttiming(mplib) - target = file.replacesuffix(target or name, "mem") -- redundant - local mpx = mplib.new ( table.merged ( - metapost.parameters, - { - ini_version = true, - find_file = finder, - job_name = file.removesuffix(target), - } - ) ) - if mpx then - starttiming(metapost.exectime) - local result = mpx:execute(format(preamble,version or "unknown",name)) - stoptiming(metapost.exectime) - mpx:finish() - end - stoptiming(mplib) - end - - function metapost.load(name) - starttiming(mplib) - local mpx = mplib.new ( table.merged ( - metapost.parameters, - { - ini_version = false, - mem_name = file.replacesuffix(name,"mem"), - find_file = finder, - -- job_name = "mplib", - } - ) ) - local result - if not mpx then - result = { status = 99, error = "out of memory"} - end - stoptiming(mplib) - return mpx, result - end - - function metapost.checkformat(mpsinput) - local mpsversion = environment.version or "unset version" - local mpsinput = file.addsuffix(mpsinput or "metafun", "mp") - local mpsformat = file.removesuffix(file.basename(texconfig.formatname or (tex and tex.formatname) or mpsinput)) - local mpsbase = file.removesuffix(file.basename(mpsinput)) - if mpsbase ~= mpsformat then - mpsformat = mpsformat .. "-" .. mpsbase - end - mpsformat = file.addsuffix(mpsformat, "mem") - local mpsformatfullname = caches.getfirstreadablefile(mpsformat,"formats") or "" - if mpsformatfullname ~= "" then - report_metapost("loading '%s' from '%s'", mpsinput, mpsformatfullname) - local mpx, result = metapost.load(mpsformatfullname) - if mpx then - local result = mpx:execute("show mp_parent_version ;") - if not result.log then - metapost.reporterror(result) - else - local version = match(result.log,">> *(.-)[\n\r]") or "unknown" - version = gsub(version,"[\'\"]","") - if version ~= mpsversion then - report_metapost("version mismatch: %s <> %s", version or "unknown", mpsversion) - else - return mpx - end - end - else - report_metapost("error in loading '%s' from '%s'", mpsinput, mpsformatfullname) - metapost.reporterror(result) - end - end - local mpsformatfullname = caches.setfirstwritablefile(mpsformat,"formats") - report_metapost("making '%s' into '%s'", mpsinput, mpsformatfullname) - metapost.make(mpsinput,mpsformatfullname,mpsversion) -- somehow return ... fails here - if lfs.isfile(mpsformatfullname) then - report_metapost("loading '%s' from '%s'", mpsinput, mpsformatfullname) - return metapost.load(mpsformatfullname) - else - report_metapost("problems with '%s' from '%s'", mpsinput, mpsformatfullname) - end - end + report_metapost("fatal error: mplib is too old") + + os.exit() + + -- local preamble = [[ + -- boolean mplib ; mplib := true ; + -- string mp_parent_version ; mp_parent_version := "%s" ; + -- input "%s" ; dump ; + -- ]] + -- + -- metapost.parameters = { + -- hash_size = 100000, + -- main_memory = 4000000, + -- max_in_open = 50, + -- param_size = 100000, + -- } + -- + -- function metapost.make(name, target, version) + -- starttiming(mplib) + -- target = file.replacesuffix(target or name, "mem") -- redundant + -- local mpx = mplib.new ( table.merged ( + -- metapost.parameters, + -- { + -- ini_version = true, + -- find_file = finder, + -- job_name = file.removesuffix(target), + -- } + -- ) ) + -- if mpx then + -- starttiming(metapost.exectime) + -- local result = mpx:execute(format(preamble,version or "unknown",name)) + -- stoptiming(metapost.exectime) + -- mpx:finish() + -- end + -- stoptiming(mplib) + -- end + -- + -- function metapost.load(name) + -- starttiming(mplib) + -- local mpx = mplib.new ( table.merged ( + -- metapost.parameters, + -- { + -- ini_version = false, + -- mem_name = file.replacesuffix(name,"mem"), + -- find_file = finder, + -- -- job_name = "mplib", + -- } + -- ) ) + -- local result + -- if not mpx then + -- result = { status = 99, error = "out of memory"} + -- end + -- stoptiming(mplib) + -- return mpx, result + -- end + -- + -- function metapost.checkformat(mpsinput) + -- local mpsversion = environment.version or "unset version" + -- local mpsinput = file.addsuffix(mpsinput or "metafun", "mp") + -- local mpsformat = file.removesuffix(file.basename(texconfig.formatname or (tex and tex.formatname) or mpsinput)) + -- local mpsbase = file.removesuffix(file.basename(mpsinput)) + -- if mpsbase ~= mpsformat then + -- mpsformat = mpsformat .. "-" .. mpsbase + -- end + -- mpsformat = file.addsuffix(mpsformat, "mem") + -- local mpsformatfullname = caches.getfirstreadablefile(mpsformat,"formats") or "" + -- if mpsformatfullname ~= "" then + -- report_metapost("loading '%s' from '%s'", mpsinput, mpsformatfullname) + -- local mpx, result = metapost.load(mpsformatfullname) + -- if mpx then + -- local result = mpx:execute("show mp_parent_version ;") + -- if not result.log then + -- metapost.reporterror(result) + -- else + -- local version = match(result.log,">> *(.-)[\n\r]") or "unknown" + -- version = gsub(version,"[\'\"]","") + -- if version ~= mpsversion then + -- report_metapost("version mismatch: %s <> %s", version or "unknown", mpsversion) + -- else + -- return mpx + -- end + -- end + -- else + -- report_metapost("error in loading '%s' from '%s'", mpsinput, mpsformatfullname) + -- metapost.reporterror(result) + -- end + -- end + -- local mpsformatfullname = caches.setfirstwritablefile(mpsformat,"formats") + -- report_metapost("making '%s' into '%s'", mpsinput, mpsformatfullname) + -- metapost.make(mpsinput,mpsformatfullname,mpsversion) -- somehow return ... fails here + -- if lfs.isfile(mpsformatfullname) then + -- report_metapost("loading '%s' from '%s'", mpsinput, mpsformatfullname) + -- return metapost.load(mpsformatfullname) + -- else + -- report_metapost("problems with '%s' from '%s'", mpsinput, mpsformatfullname) + -- end + -- end else @@ -350,8 +354,9 @@ function metapost.process(mpx, data, trialrun, flusher, multipass, isextrapass, if trace_graphics then if not mp_inp[mpx] then mp_tag = mp_tag + 1 - mp_inp[mpx] = io.open(format("%s-mplib-run-%03i.mp", tex.jobname,mp_tag),"w") - mp_log[mpx] = io.open(format("%s-mplib-run-%03i.log",tex.jobname,mp_tag),"w") + local jobname = tex.jobname + mp_inp[mpx] = io.open(format("%s-mplib-run-%03i.mp", jobname,mp_tag),"w") + mp_log[mpx] = io.open(format("%s-mplib-run-%03i.log",jobname,mp_tag),"w") end local banner = format("%% begin graphic: n=%s, trialrun=%s, multipass=%s, isextrapass=%s\n\n", metapost.n, tostring(trialrun), tostring(multipass), tostring(isextrapass)) mp_inp[mpx]:write(banner) diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index a2ebf6e2c..dc6aca920 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -2,7 +2,7 @@ %D [ file=mult-aux, %D version=2010.08.2, %D title=\CONTEXT\ Multilingual Macros, -%D subtitle=helpers, +%D subtitle=Helpers, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] diff --git a/tex/context/base/mult-chk.lua b/tex/context/base/mult-chk.lua index 43e7c5121..e3908ad40 100644 --- a/tex/context/base/mult-chk.lua +++ b/tex/context/base/mult-chk.lua @@ -9,9 +9,10 @@ if not modules then modules = { } end modules ['mult-chk'] = { local format = string.format local lpegmatch = lpeg.match local type = type -local make_settings_to_hash_pattern, settings_to_set = utilities.parsers.make_settings_to_hash_pattern, utilities.parsers.settings_to_set -local allocate = utilities.storage.allocate +local make_settings_to_hash_pattern = utilities.parsers.make_settings_to_hash_pattern +local settings_to_set = utilities.parsers.settings_to_set +local allocate = utilities.storage.allocate local report_interface = logs.reporter("interface","checking") diff --git a/tex/context/base/mult-fun.lua b/tex/context/base/mult-fun.lua new file mode 100644 index 000000000..48c148dad --- /dev/null +++ b/tex/context/base/mult-fun.lua @@ -0,0 +1,95 @@ +return { + internals = { + -- + "nocolormodel", "greycolormodel", "graycolormodel", "rgbcolormodel", "cmykcolormodel", + "shadefactor", + "textextoffset", + "normaltransparent", "multiplytransparent", "screentransparent", "overlaytransparent", "softlighttransparent", + "hardlighttransparent", "colordodgetransparent", "colorburntransparent", "darkentransparent", "lightentransparent", + "differencetransparent", "exclusiontransparent", "huetransparent", "saturationtransparent", "colortransparent", "luminositytransparent", +-- "originlength", "tickstep ", "ticklength", +-- "autoarrows", "ahfactor", +-- "angleoffset", anglelength", anglemethod", + }, + commands = { + -- + "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", "fullsquare", + -- "halfcircle", "quartercircle", + "llcircle", "lrcircle", "urcircle", "ulcircle", + "tcircle", "bcircle", "lcircle", "rcircle", + "lltriangle", "lrtriangle", "urtriangle", "ultriangle", + "smoothed", "cornered", "superellipsed", "randomized", "squeezed", "enlonged", "shortened", + "punked", "curved", "unspiked", "simplified", "blownup", "stretched", + "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", + "crossed", "laddered", "randomshifted", "interpolated", "paralleled", "cutends", "peepholed", + "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", + "llmoved", "lrmoved", "urmoved", "ulmoved", + "rightarrow", "leftarrow", "centerarrow", + "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", + "bottomboundary", "leftboundary", "topboundary", "rightboundary", + "xsized", "ysized", "xysized", "sized", "xyscaled", + "intersection_point", "intersection_found", "penpoint", + "bbwidth", "bbheight", + "withshade", "withlinearshading", "withcircularshading", "withfromshadecolor", "withtoshadecolor", "withshading", "shadedinto", + "withcircularshade", "withlinearshade", + "cmyk", "spotcolor", "multitonecolor", "namedcolor", + "drawfill", "undrawfill", + "inverted", "uncolored", "softened", "grayed", "greyed", + "onlayer", + "along", + "graphictext", "loadfigure", "externalfigure", "withmask", "figure", "register", "bitmapimage", + "colordecimals", "ddecimal", "dddecimal", "ddddecimal", + "textext", "thetextext", "rawtextext", "textextoffset", "verbatim", "thelabel", "label", + "transparent", "withtransparency", + "asgroup", + "infont", -- redefined usign textext + -- "property", "withproperties", "properties", -- not yet + "set_linear_vector", "linear_shade", "define_linear_shade", "define_circular_linear_shade", "define_sampled_linear_shade", + "set_circular_vector", "circular_shade", "define_circular_shade", "define_circular_linear_shade", "define_sampled_circular_shade", + "space", "CRLF", + "grayscale", "greyscale", "withgray", "withgrey", "colorpart", + "readfile", + "clearxy", "unitvector", "center", -- redefined + "epsed", "anchored", + "originpath", "infinite", + "break", + "xstretched", "ystretched", "snapped", + -- + "pathconnectors", "function", "constructedpath", "constructedpairs", + "punkedfunction", "curvedfunction", "tightfunction", + "punkedpath", "curvedpath", "tightpath", + "punkedpairs", "curvedpairs", "tightpairs", + -- + "evenly", "oddly", + -- + "condition", + -- + "pushcurrentpicture", "popcurrentpicture", + -- + "arrowpath", +-- "colorlike", "dowithpath", "rangepath", "straightpath", "addbackground", +-- "cleanstring", "asciistring", "setunstringed", "getunstringed", "unstringed", +-- "showgrid", +-- "phantom", +-- "xshifted", "yshifted", +-- "drawarrowpath", "midarrowhead", "arrowheadonpath", +-- "drawxticks", "drawyticks", "drawticks", +-- "pointarrow", +-- "thefreelabel", "freelabel", "freedotlabel", +-- "anglebetween", "colorcircle", +-- "remapcolors", "normalcolors", "resetcolormap", "remapcolor", "remappedcolor", +-- "recolor", "refill", "redraw", "retext", "untext", "restroke", "reprocess", "repathed", + "tensecircle", "roundedsquare", + "colortype", "whitecolor", "blackcolor", + -- +-- "swappointlabels", + "normalfill", "normaldraw", "visualizepaths", "naturalizepaths", + "drawboundary", "drawwholepath", "visualizeddraw", "visualizedfill", "draworigin", "drawboundingbox", + "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", + "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", + }, +} diff --git a/tex/context/base/mult-ini.lua b/tex/context/base/mult-ini.lua index 8d0d34ba4..59eed7d83 100644 --- a/tex/context/base/mult-ini.lua +++ b/tex/context/base/mult-ini.lua @@ -10,12 +10,13 @@ local format, gmatch, gsub, match = string.format, string.gmatch, string.gsub, s local lpegmatch = lpeg.match local serialize = table.serialize -local allocate = utilities.storage.allocate -local mark = utilities.storage.mark -local contextsprint = context.sprint -local setmetatableindex = table.setmetatableindex +local allocate = utilities.storage.allocate +local mark = utilities.storage.mark +local prtcatcodes = catcodes.numbers.prtcatcodes +local contextsprint = context.sprint +local setmetatableindex = table.setmetatableindex -local report_interface = logs.reporter("interface","initialization") +local report_interface = logs.reporter("interface","initialization") interfaces = interfaces or { } interfaces.constants = mark(interfaces.constants or { }) @@ -25,22 +26,33 @@ interfaces.formats = mark(interfaces.formats or { }) interfaces.translations = mark(interfaces.translations or { }) interfaces.corenamespaces = mark(interfaces.corenamespaces or { }) -storage.register("interfaces/constants", interfaces.constants, "interfaces.constants") -storage.register("interfaces/variables", interfaces.variables, "interfaces.variables") -storage.register("interfaces/elements", interfaces.elements, "interfaces.elements") -storage.register("interfaces/formats", interfaces.formats, "interfaces.formats") -storage.register("interfaces/translations", interfaces.translations, "interfaces.translations") -storage.register("interfaces/corenamespaces", interfaces.corenamespaces, "interfaces.corenamespaces") +local registerstorage = storage.register +local sharedstorage = storage.shared + +local constants = interfaces.constants +local variables = interfaces.variables +local elements = interfaces.elements +local formats = interfaces.formats +local translations = interfaces.translations +local corenamespaces = interfaces.corenamespaces +local reporters = { } -- just an optimization + +registerstorage("interfaces/constants", constants, "interfaces.constants") +registerstorage("interfaces/variables", variables, "interfaces.variables") +registerstorage("interfaces/elements", elements, "interfaces.elements") +registerstorage("interfaces/formats", formats, "interfaces.formats") +registerstorage("interfaces/translations", translations, "interfaces.translations") +registerstorage("interfaces/corenamespaces", corenamespaces, "interfaces.corenamespaces") interfaces.interfaces = { "cs", "de", "en", "fr", "it", "nl", "ro", "pe", } -storage.shared.currentinterface = storage.shared.currentinterface or "en" -storage.shared.currentresponse = storage.shared.currentresponse or "en" +sharedstorage.currentinterface = sharedstorage.currentinterface or "en" +sharedstorage.currentresponse = sharedstorage.currentresponse or "en" -local currentinterface = storage.shared.currentinterface -local currentresponse = storage.shared.currentresponse +local currentinterface = sharedstorage.currentinterface +local currentresponse = sharedstorage.currentresponse local complete = allocate() interfaces.complete = complete @@ -56,14 +68,6 @@ end setmetatableindex(complete, resolve) -local constants = interfaces.constants -local variables = interfaces.variables -local elements = interfaces.elements -local formats = interfaces.formats -local translations = interfaces.translations -local corenamespaces = interfaces.corenamespaces -local reporters = { } -- just an optimization - local function valueiskey(t,k) -- will be helper t[k] = k return k @@ -75,7 +79,7 @@ setmetatableindex(elements, valueiskey) setmetatableindex(formats, valueiskey) setmetatableindex(translations, valueiskey) -function commands.registernamespace(n,namespace) +function interfaces.registernamespace(n,namespace) corenamespaces[n] = namespace end @@ -85,19 +89,7 @@ local function resolve(t,k) return v end -function commands.showassignerror(namespace,key,value,line) - local ns, instance = match(namespace,"^(%d+)[^%a]+(%a+)") - if ns then - namespace = corenamespaces[tonumber(ns)] or ns - end - if instance then - context.writestatus("setup",format("error in line %s, namespace %q, instance %q, key %q",line,namespace,instance,key)) - else - context.writestatus("setup",format("error in line %s, namespace %q, key %q",line,namespace,key)) - end -end - -setmetatableindex(reporters, resolve) +setmetatableindex(reporters,resolve) for category, _ in next, translations do -- We pre-create reporters for already defined messages @@ -158,7 +150,7 @@ function interfaces.getmessage(category,tag,default) end function interfaces.doifelsemessage(category,tag) - return commands.testcase(formats[fulltag(category,tag)]) + return formats[fulltag(category,tag)] end local splitter = lpeg.splitat(",") @@ -196,45 +188,38 @@ end logs.setmessenger(context.verbatim.ctxreport) --- status - -function commands.writestatus(category,message,...) - local r = reporters[category] - r(message,...) -end - -- initialization function interfaces.setuserinterface(interface,response) - storage.shared.currentinterface, currentinterface = interface, interface - storage.shared.currentresponse, currentresponse = response, response + sharedstorage.currentinterface, currentinterface = interface, interface + sharedstorage.currentresponse, currentresponse = response, response if environment.initex then local nofconstants = 0 for given, constant in next, complete.constants do constant = constant[interface] or constant.en or given constants[constant] = given -- breedte -> width - contextsprint("\\do@sicon{",given,"}{",constant,"}") + contextsprint(prtcatcodes,"\\ui_c{",given,"}{",constant,"}") -- user interface constant nofconstants = nofconstants + 1 end local nofvariables = 0 for given, variable in next, complete.variables do variable = variable[interface] or variable.en or given variables[given] = variable -- ja -> yes - contextsprint("\\do@sivar{",given,"}{",variable,"}") + contextsprint(prtcatcodes,"\\ui_v{",given,"}{",variable,"}") -- user interface variable nofvariables = nofvariables + 1 end local nofelements = 0 for given, element in next, complete.elements do element = element[interface] or element.en or given elements[element] = given - contextsprint("\\do@siele{",given,"}{",element,"}") + contextsprint(prtcatcodes,"\\ui_e{",given,"}{",element,"}") -- user interface element nofelements = nofelements + 1 end local nofcommands = 0 for given, command in next, complete.commands do command = command[interface] or command.en or given if command ~= given then - contextsprint("\\do@sicom{",given,"}{",command,"}") + contextsprint(prtcatcodes,"\\ui_m{",given,"}{",command,"}") -- user interface macro end nofcommands = nofcommands + 1 end @@ -256,12 +241,12 @@ end interfaces.cachedsetups = interfaces.cachedsetups or { } interfaces.hashedsetups = interfaces.hashedsetups or { } -storage.register("interfaces/cachedsetups", interfaces.cachedsetups, "interfaces.cachedsetups") -storage.register("interfaces/hashedsetups", interfaces.hashedsetups, "interfaces.hashedsetups") - local cachedsetups = interfaces.cachedsetups local hashedsetups = interfaces.hashedsetups +storage.register("interfaces/cachedsetups", cachedsetups, "interfaces.cachedsetups") +storage.register("interfaces/hashedsetups", hashedsetups, "interfaces.hashedsetups") + function interfaces.cachesetup(t) local hash = serialize(t) local done = hashedsetups[hash] @@ -283,3 +268,40 @@ function interfaces.interfacedcommand(name) local command = complete.commands[name] return command and command[currentinterface] or name end + +-- interface + +function commands.writestatus(category,message,...) + local r = reporters[category] + if r then + r(message,...) + end +end + +commands.registernamespace = interfaces.registernamespace +commands.setinterfaceconstant = interfaces.setconstant +commands.setinterfacevariable = interfaces.setvariable +commands.setinterfaceelement = interfaces.setelement +commands.setinterfacemessage = interfaces.setmessage +commands.setinterfacemessages = interfaces.setmessages +commands.showmessage = interfaces.showmessage + +function commands.doifelsemessage(category,tag) + commands.doifelse(interfaces.doifelsemessage(category,tag)) +end + +function commands.getmessage(category,tag,default) + context(interfaces.getmessage(category,tag,default)) +end + +function commands.showassignerror(namespace,key,value,line) + local ns, instance = match(namespace,"^(%d+)[^%a]+(%a+)") + if ns then + namespace = corenamespaces[tonumber(ns)] or ns + end + if instance then + context.writestatus("setup",format("error in line %s, namespace %q, instance %q, key %q",line,namespace,instance,key)) + else + context.writestatus("setup",format("error in line %s, namespace %q, key %q",line,namespace,key)) + end +end diff --git a/tex/context/base/mult-ini.mkiv b/tex/context/base/mult-ini.mkiv index 29fa8390e..d01000f2a 100644 --- a/tex/context/base/mult-ini.mkiv +++ b/tex/context/base/mult-ini.mkiv @@ -364,7 +364,7 @@ \doifinsetelse{#1}{\currentresponses,all}\mult_messages_start_yes\mult_messages_start_nop{#2}} \def\mult_messages_start_yes#1#2\stopmessages - {\ctxlua{interfaces.setmessages("#1",\!!bs#2\!!es)}% + {\ctxcommand{setinterfacemessages("#1",\!!bs#2\!!es)}% \egroup} \def\mult_messages_start_nop#1#2\stopmessages @@ -374,12 +374,12 @@ \unexpanded\def\setinterfacemessage#1#2#3% {\ifcsname\m!prefix!#1\endcsname\else\setgvalue{\m!prefix!#1}{#1}\fi - \ctxlua{interfaces.setmessage("#1","#2",\!!bs#3\!!es)}} + \ctxcommand{setinterfacemessage("#1","#2",\!!bs#3\!!es)}} -\unexpanded\def\setmessagetext #1#2{\edef\currentmessagetext{\cldcontext{interfaces.getmessage("#1","#2")}}} -\unexpanded\def\getmessage #1#2{\cldcontext{interfaces.getmessage("#1","#2")}} -\unexpanded\def\doifelsemessage #1#2{\ctxlua{interfaces.doifelsemessage("#1","#2")}} -\unexpanded\def\showmessage #1#2#3{\ctxlua{interfaces.showmessage("#1","#2",\!!bs#3\!!es)}} +\unexpanded\def\setmessagetext #1#2{\edef\currentmessagetext{\ctxcommand{getmessage("#1","#2")}}} +\unexpanded\def\getmessage #1#2{\ctxcommand{getmessage("#1","#2")}} +\unexpanded\def\doifelsemessage #1#2{\ctxcommand{doifelsemessage("#1","#2")}} +\unexpanded\def\showmessage #1#2#3{\ctxcommand{showmessage("#1","#2",\!!bs#3\!!es)}} \unexpanded\def\writestatus #1#2{\ctxcommand{writestatus("#1",\!!bs#2\!!es)}} %D \macros @@ -726,11 +726,11 @@ % temporary mkiv hack (we can best just store the whole table in memory) \unexpanded\def\setinterfaceconstant#1#2% - {\ctxlua{interfaces.setconstant("#1","#2")}% + {\ctxcommand{setinterfaceconstant("#1","#2")}% \expandafter\def\csname\c!prefix!#1\endcsname{#1}} \unexpanded\def\setinterfacevariable#1#2% - {\ctxlua{interfaces.setvariable("#1","#2")}% + {\ctxcommand{setinterfacevariable("#1","#2")}% \expandafter\def\csname\v!prefix!#1\endcsname{#2}} %D \macros @@ -759,7 +759,7 @@ %D part is needed, we use a \type{-}: \unexpanded\def\setinterfaceelement#1#2% - {\ctxlua{interfaces.setelement("#1","#2")}% + {\ctxcommand{setinterfaceelement("#1","#2")}% \ifcsname\e!prefix!#1\endcsname \doifnotvalue{\e!prefix!#1}{#2}{\setvalue{\e!prefix!#1}{#2}}% \else @@ -779,15 +779,27 @@ %D For at the \LUA\ end (experiment): -\def\do@sicon#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}% - \expandafter\gdef\csname\k!prefix!#2\endcsname{#1}} % backmapping from non english -\def\do@sivar#1#2{\expandafter\gdef\csname\v!prefix!#1\endcsname{#2}} -\def\do@siele#1#2{\expandafter\gdef\csname\e!prefix!#1\endcsname{#2}} -\def\do@sicom#1#2{\expandafter\gdef\csname#2\expandafter\endcsname\expandafter{\csname#1\endcsname}} +% \def\do@sicon#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}% +% \expandafter\gdef\csname\k!prefix!#2\endcsname{#1}} % backmapping from non english +% \def\do@sivar#1#2{\expandafter\gdef\csname\v!prefix!#1\endcsname{#2}} +% \def\do@siele#1#2{\expandafter\gdef\csname\e!prefix!#1\endcsname{#2}} +% \def\do@sicom#1#2{\expandafter\gdef\csname#2\expandafter\endcsname\expandafter{\csname#1\endcsname}} +% +% \startinterface english +% +% \def\do@sicon#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}} +% +% \stopinterface + +\def\ui_c#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}% + \expandafter\gdef\csname\k!prefix!#2\endcsname{#1}} % backmapping from non english +\def\ui_v#1#2{\expandafter\gdef\csname\v!prefix!#1\endcsname{#2}} +\def\ui_e#1#2{\expandafter\gdef\csname\e!prefix!#1\endcsname{#2}} +\def\ui_m#1#2{\expandafter\gdef\csname#2\expandafter\endcsname\expandafter{\csname#1\endcsname}} \startinterface english - \def\do@sicon#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}} + \def\ui_c#1#2{\expandafter\gdef\csname\c!prefix!#1\endcsname{#1}} \stopinterface diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua index 4246eca2c..6376e7d89 100644 --- a/tex/context/base/mult-low.lua +++ b/tex/context/base/mult-low.lua @@ -228,7 +228,9 @@ return { "getvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", - "globallet", "glet", + -- + "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", + -- "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", -- "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", diff --git a/tex/context/base/mult-prm.mkiv b/tex/context/base/mult-prm.mkiv index 7e5bc1edd..8c9179a16 100644 --- a/tex/context/base/mult-prm.mkiv +++ b/tex/context/base/mult-prm.mkiv @@ -1,3 +1,18 @@ +%D \module +%D [ file=mult-prm, +%D version=2011.09.18, % actually older +%D title=\CONTEXT\ Multilingual Macros, +%D subtitle=Primitives, +%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 therefore +%C copyrighted by \PRAGMA. See mreadme.pdf for details. + +%D This file is only a helper for generating files that can be used in an +%D editor for syntax highlighting. + \startluacode context.starttext() diff --git a/tex/context/base/norm-ctx.mkiv b/tex/context/base/norm-ctx.mkiv index ff1676743..4b0027332 100644 --- a/tex/context/base/norm-ctx.mkiv +++ b/tex/context/base/norm-ctx.mkiv @@ -1,8 +1,8 @@ %D \module %D [ file=norm-ctx, %D version=2009.03.19, -%D title=\CONTEXT\ Norm Macros, -%D subtitle=\ALEPH\ and \OMEGA, +%D title=\CONTEXT\ Normal Macros, +%D subtitle=\CONTEXT, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] @@ -11,8 +11,10 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +\unprotect + %D A few more might end up here (like the weird ones in syst-ini). \let\normalreqno\normaleqno -\endinput +\protect \endinput diff --git a/tex/context/base/pack-obj.lua b/tex/context/base/pack-obj.lua index a54a48d22..1e4e0f59e 100644 --- a/tex/context/base/pack-obj.lua +++ b/tex/context/base/pack-obj.lua @@ -11,6 +11,8 @@ if not modules then modules = { } end modules ['pack-obj'] = { reusable components.</p> --ldx]]-- +local commands, context = commands, context + local texcount = tex.count local allocate = utilities.storage.allocate @@ -70,6 +72,6 @@ function commands.objectpage(tag,default) end function commands.doifobjectreferencefoundelse(tag) - commands.testcase(collected[tag] or tobesaved[tag]) + commands.doifelse(collected[tag] or tobesaved[tag]) end diff --git a/tex/context/base/regi-ini.lua b/tex/context/base/regi-ini.lua index 3440dd52d..7076c3e7a 100644 --- a/tex/context/base/regi-ini.lua +++ b/tex/context/base/regi-ini.lua @@ -12,12 +12,13 @@ if not modules then modules = { } end modules ['regi-ini'] = { runtime.</p> --ldx]]-- +local commands, context = commands, context + local utfchar, utfgsub = utf.char, utf.gsub local char, gsub, format = string.char, string.gsub, string.format local next = next local insert, remove = table.insert, table.remove - local allocate = utilities.storage.allocate local sequencers = utilities.sequencers local textlineactions = resolvers.openers.helpers.textlineactions @@ -186,14 +187,14 @@ function regimes.process(str,filename,currentline,noflines,coding) return str end -function regimes.push() +local function push() level = level + 1 if trace_translating then report_translating("pushing level: %s",level) end end -function regimes.pop() +local function pop() if level > 0 then if trace_translating then report_translating("popping level: %s",level) @@ -202,6 +203,9 @@ function regimes.pop() end end +regimes.push = push +regimes.pop = pop + sequencers.prependaction(textlineactions,"system","regimes.process") sequencers.disableaction(textlineactions,"regimes.process") @@ -210,6 +214,9 @@ sequencers.disableaction(textlineactions,"regimes.process") commands.enableregime = enable commands.disableregime = disable +commands.pushregime = push +commands.popregime = pop + function commands.currentregime() context(currentregime) end @@ -234,9 +241,6 @@ function commands.stopregime() end end -commands.pushregime = regimes.push -commands.popregime = regimes.pop - -- obsolete: -- -- function regimes.setsynonym(synonym,target) diff --git a/tex/context/base/s-fnt-10.mkiv b/tex/context/base/s-fnt-10.mkiv index 0d4a608a4..0edb19120 100644 --- a/tex/context/base/s-fnt-10.mkiv +++ b/tex/context/base/s-fnt-10.mkiv @@ -135,7 +135,7 @@ end \page \egroup} -\doifnotmode{demo} {\endinput} +\continueifinputfile{s-fnt-10.mkiv} \starttext diff --git a/tex/context/base/s-fnt-28.mkiv b/tex/context/base/s-fnt-28.mkiv index 039cc6ca8..778a4c390 100644 --- a/tex/context/base/s-fnt-28.mkiv +++ b/tex/context/base/s-fnt-28.mkiv @@ -35,7 +35,7 @@ end \stopluacode -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-fnt-28.mkiv} \starttext diff --git a/tex/context/base/s-fnt-29.mkiv b/tex/context/base/s-fnt-29.mkiv index 0378550e8..f9e0a1658 100644 --- a/tex/context/base/s-fnt-29.mkiv +++ b/tex/context/base/s-fnt-29.mkiv @@ -48,7 +48,7 @@ \stopluacode -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-fnt-29.mkiv} \setupbodyfont[dejavu,tt,9pt] diff --git a/tex/context/base/s-fnt-32.mkiv b/tex/context/base/s-fnt-32.mkiv index 5ffbb2ac5..20a939a97 100644 --- a/tex/context/base/s-fnt-32.mkiv +++ b/tex/context/base/s-fnt-32.mkiv @@ -30,7 +30,7 @@ end \stopluacode -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-fnt-32.mkiv} \setupbodyfont[dejavu,10pt] diff --git a/tex/context/base/s-inf-01.mkvi b/tex/context/base/s-inf-01.mkvi index 51d3cbac8..b3f44e908 100644 --- a/tex/context/base/s-inf-01.mkvi +++ b/tex/context/base/s-inf-01.mkvi @@ -226,7 +226,7 @@ \stopTEXpage \stoptexdefinition -% \doifnotmode{demo}{\endinput} +% \continueifinputfile{s-inf-01.mkvi} \starttext \Show diff --git a/tex/context/base/s-lan-04.mkiv b/tex/context/base/s-lan-04.mkiv index 80283bfd4..c04be9466 100644 --- a/tex/context/base/s-lan-04.mkiv +++ b/tex/context/base/s-lan-04.mkiv @@ -138,7 +138,7 @@ \definecolor[hyphenation:de] [g=.8] \definecolor[hyphenation:nl] [b=.8] -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-lan-04.mkiv} \starttext diff --git a/tex/context/base/s-pre-69.mkiv b/tex/context/base/s-pre-69.mkiv index c87bcd537..cc6af9ad3 100644 --- a/tex/context/base/s-pre-69.mkiv +++ b/tex/context/base/s-pre-69.mkiv @@ -311,7 +311,7 @@ \setelementexporttag[paragraphs][nature][display] \setelementexporttag[paragraph] [nature][mixed] -\doifnotmode{demo}{\endinput} +\continueifinputfile{s-pre-69.mkiv} % finetuning: \StartText{\TEX\ and Reality\vskip2exClashing Mindsets?\vskip1ex}{Bacho\TEX, May 1, 2010} diff --git a/tex/context/base/scrn-fld.lua b/tex/context/base/scrn-fld.lua index 275fb4a9b..9836cbebe 100644 --- a/tex/context/base/scrn-fld.lua +++ b/tex/context/base/scrn-fld.lua @@ -73,13 +73,13 @@ function commands.setformsmethod(method) end function commands.doiffieldcategoryelse(name) - commands.testcase(codeinjections.validfieldcategory(name)) + commands.doifelse(codeinjections.validfieldcategory(name)) end function commands.doiffieldsetelse(tag) - commands.testcase(codeinjections.validfieldset(name)) + commands.doifelse(codeinjections.validfieldset(name)) end function commands.doiffieldelse(name) - commands.testcase(codeinjections.validfield(name)) + commands.doifelse(codeinjections.validfield(name)) end diff --git a/tex/context/base/scrp-cjk.lua b/tex/context/base/scrp-cjk.lua index 3463a8eb5..ab09ce9c8 100644 --- a/tex/context/base/scrp-cjk.lua +++ b/tex/context/base/scrp-cjk.lua @@ -6,6 +6,9 @@ if not modules then modules = { } end modules ['scrp-cjk'] = { license = "see context related readme files" } +-- We can speed this up by preallocating nodes and copying them but the +-- gain is not that large. + local utfchar = utf.char local has_attribute = node.has_attribute diff --git a/tex/context/base/scrp-ini.lua b/tex/context/base/scrp-ini.lua index e55dc0780..9b0e9fc21 100644 --- a/tex/context/base/scrp-ini.lua +++ b/tex/context/base/scrp-ini.lua @@ -47,142 +47,152 @@ local hash = scripts.hash local handlers = allocate() scripts.handlers = handlers -storage.register("scripts/hash", hash, "scripts.hash") - -if not next(hash) then -- this might move to char-def - - hash = { -- no local - -- - -- half width opening parenthesis - [0x0028] = "half_width_open", - [0x005B] = "half_width_open", - [0x007B] = "half_width_open", - [0x2018] = "half_width_open", -- ‘ - [0x201C] = "half_width_open", -- “ - -- - -- full width opening parenthesis - -- - [0x3008] = "full_width_open", -- 〈 Left book quote - [0x300A] = "full_width_open", -- 《 Left double book quote - [0x300C] = "full_width_open", -- 「 left quote - [0x300E] = "full_width_open", -- 『 left double quote - [0x3010] = "full_width_open", -- 【 left double book quote - [0x3014] = "full_width_open", -- 〔 left book quote - [0x3016] = "full_width_open", --〖 left double book quote - [0x3018] = "full_width_open", -- left tortoise bracket - [0x301A] = "full_width_open", -- left square bracket - [0x301D] = "full_width_open", -- reverse double prime qm - [0xFF08] = "full_width_open", -- ( left parenthesis - [0xFF3B] = "full_width_open", -- [ left square brackets - [0xFF5B] = "full_width_open", -- { left curve bracket - -- - -- half width closing parenthesis - [0x0029] = "half_width_close", - [0x005D] = "half_width_close", - [0x007D] = "half_width_close", - [0x2019] = "half_width_close", -- ’ right quote, right - [0x201D] = "half_width_close", -- ” right double quote - -- - -- full width closing parenthesis - -- - [0x3009] = "full_width_close", -- 〉 book quote - [0x300B] = "full_width_close", -- 》 double book quote - [0x300D] = "full_width_close", -- 」 right quote, right - [0x300F] = "full_width_close", -- 』 right double quote - [0x3011] = "full_width_close", -- 】 right double book quote - [0x3015] = "full_width_close", -- 〕 right book quote - [0x3017] = "full_width_close", -- 〗 right double book quote - [0x3019] = "full_width_close", -- right tortoise bracket - [0x301B] = "full_width_close", -- right square bracket - [0x301E] = "full_width_close", -- double prime qm - [0x301F] = "full_width_close", -- low double prime qm - [0xFF09] = "full_width_close", -- ) right parenthesis - [0xFF3D] = "full_width_close", -- ] right square brackets - [0xFF5D] = "full_width_close", -- } right curve brackets - - [0xFF62] = "half_width_open", -- left corner bracket - [0xFF63] = "half_width_close", -- right corner bracket - -- - -- vertical opening vertical - -- - -- 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, - -- - -- vertical closing - -- - -- 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, - -- - -- half width opening punctuation - -- - -- <empty> - -- - -- full width opening punctuation - -- - -- 0x2236, -- ∶ - -- 0xFF0C, -- , - -- - -- half width closing punctuation_hw - -- - [0x0021] = "half_width_close", -- ! - [0x002C] = "half_width_close", -- , - [0x002E] = "half_width_close", -- . - [0x003A] = "half_width_close", -- : - [0x003B] = "half_width_close", -- ; - [0x003F] = "half_width_close", -- ? - [0xFF61] = "half_width_close", -- hw full stop - -- - -- full width closing punctuation - [0x3001] = "full_width_close", -- 、 - [0x3002] = "full_width_close", -- 。 - [0xFF0C] = "full_width_close", -- , - [0xFF0E] = "full_width_close", -- . - -- depends on font - [0xFF01] = "full_width_close", -- ! - [0xFF1F] = "full_width_close", -- ? - -- - [0xFF1A] = "full_width_punct", -- : - [0xFF1B] = "full_width_punct", -- ; - -- non starter - -- - [0x3005] = "non_starter", [0x3041] = "non_starter", [0x3043] = "non_starter", [0x3045] = "non_starter", [0x3047] = "non_starter", - [0x3049] = "non_starter", [0x3063] = "non_starter", [0x3083] = "non_starter", [0x3085] = "non_starter", [0x3087] = "non_starter", - [0x308E] = "non_starter", [0x3095] = "non_starter", [0x3096] = "non_starter", [0x309B] = "non_starter", [0x309C] = "non_starter", - [0x309D] = "non_starter", [0x309E] = "non_starter", [0x30A0] = "non_starter", [0x30A1] = "non_starter", [0x30A3] = "non_starter", - [0x30A5] = "non_starter", [0x30A7] = "non_starter", [0x30A9] = "non_starter", [0x30C3] = "non_starter", [0x30E3] = "non_starter", - [0x30E5] = "non_starter", [0x30E7] = "non_starter", [0x30EE] = "non_starter", [0x30F5] = "non_starter", [0x30F6] = "non_starter", - [0x30FC] = "non_starter", [0x30FD] = "non_starter", [0x30FE] = "non_starter", [0x31F0] = "non_starter", [0x31F1] = "non_starter", - [0x30F2] = "non_starter", [0x30F3] = "non_starter", [0x30F4] = "non_starter", [0x31F5] = "non_starter", [0x31F6] = "non_starter", - [0x30F7] = "non_starter", [0x30F8] = "non_starter", [0x30F9] = "non_starter", [0x31FA] = "non_starter", [0x31FB] = "non_starter", - [0x30FC] = "non_starter", [0x30FD] = "non_starter", [0x30FE] = "non_starter", [0x31FF] = "non_starter", - -- - -- hyphenation - -- - [0x2026] = "hyphen", -- … ellipsis - [0x2014] = "hyphen", -- — hyphen - } - - for i=0x03040,0x030FF do if not hash[i] then hash[i] = "katakana" end end -- had tag 'chinese' - for i=0x031F0,0x031FF do if not hash[i] then hash[i] = "katakana" end end -- had tag 'chinese' - for i=0x032D0,0x032FE do if not hash[i] then hash[i] = "katakana" end end -- had tag 'chinese' - for i=0x03400,0x04DFF do if not hash[i] then hash[i] = "chinese" end end - for i=0x04E00,0x09FFF do if not hash[i] then hash[i] = "chinese" end end - for i=0x0F900,0x0FAFF do if not hash[i] then hash[i] = "chinese" end end - for i=0x0FF00,0x0FFEF do if not hash[i] then hash[i] = "katakana" end end -- had tag 'chinese' - for i=0x20000,0x2A6DF do if not hash[i] then hash[i] = "chinese" end end - for i=0x2F800,0x2FA1F do if not hash[i] then hash[i] = "chinese" end end - for i=0x0AC00,0x0D7A3 do if not hash[i] then hash[i] = "korean" end end - for i=0x01100,0x0115F do if not hash[i] then hash[i] = "jamo_initial" end end - for i=0x01160,0x011A7 do if not hash[i] then hash[i] = "jamo_medial" end end - for i=0x011A8,0x011FF do if not hash[i] then hash[i] = "jamo_final" end end - - for i=0x01200,0x0139F do hash[i] = "ethiopic_syllable" end - - hash[0x01361] = "ethiopic_word" - hash[0x01362] = "ethiopic_sentence" - - scripts.hash = hash +local hash = { -- we could put these presets in char-def.lua + -- + -- half width opening parenthesis + -- + [0x0028] = "half_width_open", + [0x005B] = "half_width_open", + [0x007B] = "half_width_open", + [0x2018] = "half_width_open", -- ‘ + [0x201C] = "half_width_open", -- “ + -- + -- full width opening parenthesis + -- + [0x3008] = "full_width_open", -- 〈 Left book quote + [0x300A] = "full_width_open", -- 《 Left double book quote + [0x300C] = "full_width_open", -- 「 left quote + [0x300E] = "full_width_open", -- 『 left double quote + [0x3010] = "full_width_open", -- 【 left double book quote + [0x3014] = "full_width_open", -- 〔 left book quote + [0x3016] = "full_width_open", --〖 left double book quote + [0x3018] = "full_width_open", -- left tortoise bracket + [0x301A] = "full_width_open", -- left square bracket + [0x301D] = "full_width_open", -- reverse double prime qm + [0xFF08] = "full_width_open", -- ( left parenthesis + [0xFF3B] = "full_width_open", -- [ left square brackets + [0xFF5B] = "full_width_open", -- { left curve bracket + -- + -- half width closing parenthesis + -- + [0x0029] = "half_width_close", + [0x005D] = "half_width_close", + [0x007D] = "half_width_close", + [0x2019] = "half_width_close", -- ’ right quote, right + [0x201D] = "half_width_close", -- ” right double quote + -- + -- full width closing parenthesis + -- + [0x3009] = "full_width_close", -- 〉 book quote + [0x300B] = "full_width_close", -- 》 double book quote + [0x300D] = "full_width_close", -- 」 right quote, right + [0x300F] = "full_width_close", -- 』 right double quote + [0x3011] = "full_width_close", -- 】 right double book quote + [0x3015] = "full_width_close", -- 〕 right book quote + [0x3017] = "full_width_close", -- 〗 right double book quote + [0x3019] = "full_width_close", -- right tortoise bracket + [0x301B] = "full_width_close", -- right square bracket + [0x301E] = "full_width_close", -- double prime qm + [0x301F] = "full_width_close", -- low double prime qm + [0xFF09] = "full_width_close", -- ) right parenthesis + [0xFF3D] = "full_width_close", -- ] right square brackets + [0xFF5D] = "full_width_close", -- } right curve brackets + -- + [0xFF62] = "half_width_open", -- left corner bracket + [0xFF63] = "half_width_close", -- right corner bracket + -- + -- vertical opening vertical + -- + -- 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, + -- + -- vertical closing + -- + -- 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, + -- + -- half width opening punctuation + -- + -- <empty> + -- + -- full width opening punctuation + -- + -- 0x2236, -- ∶ + -- 0xFF0C, -- , + -- + -- half width closing punctuation_hw + -- + [0x0021] = "half_width_close", -- ! + [0x002C] = "half_width_close", -- , + [0x002E] = "half_width_close", -- . + [0x003A] = "half_width_close", -- : + [0x003B] = "half_width_close", -- ; + [0x003F] = "half_width_close", -- ? + [0xFF61] = "half_width_close", -- hw full stop + -- + -- full width closing punctuation + -- + [0x3001] = "full_width_close", -- 、 + [0x3002] = "full_width_close", -- 。 + [0xFF0C] = "full_width_close", -- , + [0xFF0E] = "full_width_close", -- + -- + -- depends on font + -- + [0xFF01] = "full_width_close", -- ! + [0xFF1F] = "full_width_close", -- ? + -- + [0xFF1A] = "full_width_punct", -- : + [0xFF1B] = "full_width_punct", -- ; + -- + -- non starter + -- + [0x3005] = "non_starter", [0x3041] = "non_starter", [0x3043] = "non_starter", [0x3045] = "non_starter", [0x3047] = "non_starter", + [0x3049] = "non_starter", [0x3063] = "non_starter", [0x3083] = "non_starter", [0x3085] = "non_starter", [0x3087] = "non_starter", + [0x308E] = "non_starter", [0x3095] = "non_starter", [0x3096] = "non_starter", [0x309B] = "non_starter", [0x309C] = "non_starter", + [0x309D] = "non_starter", [0x309E] = "non_starter", [0x30A0] = "non_starter", [0x30A1] = "non_starter", [0x30A3] = "non_starter", + [0x30A5] = "non_starter", [0x30A7] = "non_starter", [0x30A9] = "non_starter", [0x30C3] = "non_starter", [0x30E3] = "non_starter", + [0x30E5] = "non_starter", [0x30E7] = "non_starter", [0x30EE] = "non_starter", [0x30F5] = "non_starter", [0x30F6] = "non_starter", + [0x30FC] = "non_starter", [0x30FD] = "non_starter", [0x30FE] = "non_starter", [0x31F0] = "non_starter", [0x31F1] = "non_starter", + [0x30F2] = "non_starter", [0x30F3] = "non_starter", [0x30F4] = "non_starter", [0x31F5] = "non_starter", [0x31F6] = "non_starter", + [0x30F7] = "non_starter", [0x30F8] = "non_starter", [0x30F9] = "non_starter", [0x31FA] = "non_starter", [0x31FB] = "non_starter", + [0x30FC] = "non_starter", [0x30FD] = "non_starter", [0x30FE] = "non_starter", [0x31FF] = "non_starter", + -- + -- hyphenation + -- + [0x2026] = "hyphen", -- … ellipsis + [0x2014] = "hyphen", -- — hyphen + -- + [0x1361] = "ethiopic_word", + [0x1362] = "ethiopic_sentence", + -- +} +local function provide(t,k) + local v + if not tonumber(k) then v = false + elseif (k >= 0x03040 and k <= 0x030FF) + or (k >= 0x031F0 and k <= 0x031FF) + or (k >= 0x032D0 and k <= 0x032FE) + or (k >= 0x0FF00 and k <= 0x0FFEF) then v = "katakana" + elseif (k >= 0x03400 and k <= 0x04DFF) + or (k >= 0x04E00 and k <= 0x09FFF) + or (k >= 0x0F900 and k <= 0x0FAFF) + or (k >= 0x20000 and k <= 0x2A6DF) + or (k >= 0x2F800 and k <= 0x2FA1F) then v = "chinese" + elseif (k >= 0x0AC00 and k <= 0x0D7A3) then v = "korean" + elseif (k >= 0x01100 and k <= 0x0115F) then v = "jamo_initial" + elseif (k >= 0x01160 and k <= 0x011A7) then v = "jamo_medial" + elseif (k >= 0x011A8 and k <= 0x011FF) then v = "jamo_final" + elseif (k >= 0x01200 and k <= 0x0139F) then v = "ethiopic_syllable" + else v = false + end + t[k] = v + return v end +table.setmetatableindex(hash,provide) + +scripts.hash = hash + local numbertodataset = allocate() local numbertohandler = allocate() diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf Binary files differindex 248a43a00..851eb356f 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 9074b1d3f..83167d9d2 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua index b2663d298..cdea874a6 100644 --- a/tex/context/base/status-mkiv.lua +++ b/tex/context/base/status-mkiv.lua @@ -1,5111 +1,5791 @@ return { - ["core"]={ + main = { { - ["category"]="mkiv", - ["filename"]="context", - ["status"]="okay", + category = "mkiv", + filename = "context", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="syst-ini", - ["status"]="okay", + category = "lus", + comment = "stub file for context", + filename = "context", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="norm-ctx", - ["status"]="okay", + category = "tex", + filename = "metatex", + loading = "parent", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="syst-pln", - ["status"]="okay", + category = "lus", + comment = "stub file for metatex", + filename = "metatex", + loading = "parent", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="syst-mes", - ["status"]="okay", + category = "mkiv", + filename = "cont-cs", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="luat-cod", - ["status"]="okay", + category = "mkiv", + filename = "cont-de", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe combine (3)", - ["filename"]="luat-bas", - ["status"]="okay", + category = "mkiv", + filename = "cont-en", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe combine (3)", - ["filename"]="luat-lib", - ["status"]="okay", + category = "mkiv", + filename = "cont-fr", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="catc-ini", - ["status"]="okay", + category = "mkiv", + filename = "cont-gb", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="forward dependency", - ["filename"]="catc-act", - ["status"]="okay", + category = "mkiv", + filename = "cont-it", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="catc-def", - ["status"]="okay", + category = "mkiv", + filename = "cont-nl", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="catc-ctx", - ["status"]="okay", + category = "mkiv", + filename = "cont-pe", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="catc-sym", - ["status"]="okay", + category = "mkiv", + filename = "cont-ro", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe combine (1)", - ["filename"]="cldf-ini", - ["status"]="okay", + category = "mpiv", + comment = "maybe more delayed loading", + filename = "metafun", + loading = "parent", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="syst-aux", - ["status"]="okay", - }, - { - ["category"]="mkiv", - ["comment"]="maybe combine (1)", - ["filename"]="syst-lua", - ["status"]="okay", + category = "mkiv", + comment = "we keep this around for historic reasons", + filename = "ppchtex", + loading = "never", + status = "okay", }, + }, + core = { { - ["category"]="mkiv", - ["comment"]="maybe combine (1)", - ["filename"]="syst-con", - ["status"]="okay", + category = "mkiv", + filename = "syst-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe combine (1)", - ["filename"]="syst-fnt", - ["status"]="okay", + category = "mkiv", + filename = "norm-ctx", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe combine (1)", - ["filename"]="syst-rtp", - ["status"]="okay", + category = "mkiv", + filename = "syst-pln", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="maybe combine (2)", - ["filename"]="file-ini", - ["status"]="okay", + category = "mkiv", + filename = "syst-mes", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="maybe combine (2)", - ["filename"]="file-res", - ["status"]="okay", + category = "mkiv", + filename = "luat-cod", + loading = "luat-cod", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="file-lib", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (3)", + filename = "luat-bas", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="supp-dir", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (3)", + filename = "luat-lib", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="char-ini", - ["status"]="okay", + category = "mkiv", + filename = "catc-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="char-utf", - ["status"]="okay", + category = "mkiv", + comment = "forward dependency", + filename = "catc-act", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="forward dependency", - ["filename"]="char-act", - ["status"]="okay", + category = "mkiv", + filename = "catc-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mult-ini", - ["status"]="okay", + category = "mkiv", + filename = "catc-ctx", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mult-sys", - ["status"]="okay", + category = "mkiv", + filename = "catc-sym", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mult-aux", - ["status"]="okay", + category = "mkiv", + filename = "catc-xml", + loading = "module", + status = "okay", + comment = "only needed for mkii xml parser", }, { - ["category"]="mkiv", - ["filename"]="mult-def", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (1)", + filename = "cldf-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mult-chk", - ["status"]="okay", + category = "mkiv", + filename = "syst-aux", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="mult-dim", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (1)", + filename = "syst-lua", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cldf-int", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (1)", + filename = "syst-con", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="luat-ini", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (1)", + filename = "syst-fnt", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe this becomes a runtime module", - ["filename"]="toks-ini", - ["status"]="okay", + category = "mkiv", + comment = "maybe combine (1)", + filename = "syst-rtp", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="attr-ini", - ["status"]="okay", + category = "mkvi", + comment = "maybe combine (2)", + filename = "file-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="code might move from here", - ["filename"]="core-ini", - ["status"]="okay", + category = "mkvi", + comment = "maybe combine (2)", + filename = "file-res", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might need more redoing", - ["filename"]="core-env", - ["status"]="okay", + category = "mkvi", + filename = "file-lib", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="in due time more might move to here", - ["filename"]="layo-ini", - ["status"]="okay", + category = "mkiv", + filename = "supp-dir", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe this becomes a runtime module", - ["filename"]="node-ini", - ["status"]="okay", + category = "mkiv", + filename = "char-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cldf-bas", - ["status"]="okay", + category = "mkiv", + filename = "char-utf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might need more redoing", - ["filename"]="node-fin", - ["status"]="okay", + category = "mkiv", + comment = "forward dependency", + filename = "char-act", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs integration and configuration", - ["filename"]="node-mig", - ["status"]="okay", + category = "mkiv", + filename = "mult-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-bld", - ["status"]="okay", + category = "mkiv", + filename = "mult-sys", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="back-ini", - ["status"]="okay", + category = "mkiv", + filename = "mult-aux", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="attr-col", - ["status"]="okay", + category = "mkiv", + filename = "mult-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="attr-lay", - ["status"]="okay", + category = "mkiv", + filename = "mult-chk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="attr-neg", - ["status"]="okay", + category = "mkvi", + filename = "mult-dim", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="attr-eff", - ["status"]="okay", + category = "mkiv", + filename = "cldf-int", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs more usage", - ["filename"]="trac-tex", - ["status"]="okay", + category = "mkiv", + filename = "luat-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="trac-deb", - ["status"]="okay", + category = "mkiv", + comment = "maybe this becomes a runtime module", + filename = "toks-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="trac-ctx", - ["status"]="okay", + category = "mkiv", + filename = "attr-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="supp-box", - ["status"]="okay", + category = "mkiv", + comment = "code might move from here", + filename = "core-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="supp-ran", - ["status"]="okay", + category = "mkiv", + comment = "might need more redoing", + filename = "core-env", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be moved to the math-* modules", - ["filename"]="supp-mat", - ["status"]="okay", + category = "mkiv", + comment = "in due time more might move to here", + filename = "layo-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will grow", - ["filename"]="typo-ini", - ["status"]="okay", + category = "mkiv", + comment = "maybe this becomes a runtime module", + filename = "node-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="file-syn", - ["status"]="okay", + category = "mkiv", + comment = "maybe use context.generics/context.sprint here", + filename = "cldf-bas", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="file-mod", - ["status"]="okay", + category = "mkiv", + comment = "might need more redoing", + filename = "node-fin", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="core-con", - ["status"]="okay", + category = "mkiv", + comment = "needs integration and configuration", + filename = "node-mig", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cont-fil", - ["status"]="okay", + category = "mkiv", + filename = "typo-bld", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cont-nop", - ["status"]="okay", + category = "mkiv", + filename = "node-pag", + loading = "never", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cont-yes", - ["status"]="okay", + category = "mkiv", + filename = "back-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="regi-ini", - ["status"]="okay", + category = "mkiv", + filename = "attr-col", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="enco-ini", - ["status"]="okay", + category = "mkiv", + filename = "attr-lay", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="hand-ini", - ["status"]="okay", + category = "mkiv", + filename = "attr-neg", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lang-ini", - ["status"]="okay", + category = "mkiv", + filename = "attr-eff", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="namespace should be languages", - ["filename"]="lang-lab", - ["status"]="okay", + category = "mkiv", + comment = "needs more usage", + filename = "trac-tex", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="unic-ini", - ["status"]="okay", + category = "mkiv", + filename = "trac-deb", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="core-uti", - ["status"]="okay", + category = "mkiv", + filename = "trac-ctx", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe rename to core-two", - ["filename"]="core-two", - ["status"]="okay", + category = "mkiv", + filename = "supp-box", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="core-dat", - ["status"]="okay", + category = "mkiv", + filename = "supp-ran", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-ini", - ["status"]="okay", + category = "mkiv", + comment = "will be moved to the math-* modules", + filename = "supp-mat", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-ext", - ["status"]="okay", + category = "mkiv", + comment = "will grow", + filename = "typo-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-grp", - ["status"]="okay", + category = "mkvi", + filename = "file-syn", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="node-bck", - ["status"]="okay", + category = "mkvi", + filename = "file-mod", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-cut", - ["status"]="okay", + category = "mkiv", + filename = "core-con", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lang-mis", - ["status"]="okay", + category = "mkiv", + filename = "cont-fil", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lang-url", - ["status"]="okay", + category = "mkiv", + filename = "cont-nop", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lang-def", - ["status"]="okay", + category = "mkiv", + filename = "cont-yes", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lang-wrd", - ["status"]="okay", + category = "mkiv", + filename = "regi-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="might need more redoing", - ["filename"]="file-job", - ["status"]="okay", + category = "mkiv", + filename = "enco-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-ini", - ["status"]="okay", + category = "mkiv", + filename = "hand-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="sort-ini", - ["status"]="okay", + category = "mkiv", + filename = "lang-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="pack-mis", - ["status"]="okay", + category = "mkiv", + comment = "namespace should be languages", + filename = "lang-lab", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-rul", - ["status"]="okay", + category = "mkiv", + filename = "unic-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="endpar experimental code", - ["filename"]="pack-mrl", - ["status"]="okay", + category = "mkiv", + filename = "core-uti", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="pack-bck", - ["status"]="okay", + category = "mkiv", + comment = "maybe rename to core-two", + filename = "core-two", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-fen", - ["status"]="okay", + category = "mkiv", + filename = "core-dat", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lxml-ini", - ["status"]="okay", + category = "mkiv", + filename = "colo-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="lxml-sor", - ["status"]="okay", + category = "mkiv", + filename = "colo-ext", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="typo-prc", - ["status"]="okay", + category = "mkiv", + filename = "colo-grp", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="strc-ini", - ["status"]="okay", + category = "mkiv", + filename = "node-bck", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-tag", - ["status"]="okay", + category = "mkiv", + filename = "pack-cut", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this module migh tgo away when code has been moved", - ["filename"]="strc-doc", - ["status"]="okay", + category = "mkiv", + filename = "lang-mis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="still some rough edges", - ["filename"]="strc-num", - ["status"]="okay", + category = "mkiv", + filename = "lang-url", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-mar", - ["status"]="okay", + category = "mkiv", + filename = "lang-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-sbe", - ["status"]="okay", + category = "mkiv", + filename = "lang-wrd", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-lst", - ["status"]="okay", + category = "mkvi", + comment = "might need more redoing", + filename = "file-job", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="some of the local current and synchronization macros will be renamed", - ["filename"]="strc-sec", - ["status"]="okay", + category = "mkiv", + filename = "symb-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-pag", - ["status"]="okay", + category = "mkiv", + filename = "sort-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="(support for) setups might get improved", - ["filename"]="strc-ren", - ["status"]="okay", + category = "mkvi", + filename = "pack-mis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this module might go away", - ["filename"]="strc-xml", - ["status"]="okay", + category = "mkiv", + filename = "pack-rul", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-def", - ["status"]="okay", + category = "mkiv", + comment = "endpar experimental code", + filename = "pack-mrl", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="some more low level names might change", - ["filename"]="strc-ref", - ["status"]="okay", + category = "mkvi", + filename = "pack-bck", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="use setups for rendering", - ["filename"]="strc-reg", - ["status"]="okay", + category = "mkiv", + filename = "pack-fen", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="strc-lev", - ["status"]="okay", + category = "mkiv", + filename = "lxml-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe some tuning is needed / will happen", - ["filename"]="spac-ali", - ["status"]="okay", + category = "mkiv", + filename = "lxml-sor", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="probably needs some more work", - ["filename"]="spac-hor", - ["status"]="okay", + category = "mkvi", + filename = "typo-prc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe some changes will happen", - ["filename"]="spac-ver", - ["status"]="okay", + category = "mkvi", + filename = "strc-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="could be improved if needed", - ["filename"]="spac-lin", - ["status"]="okay", + category = "mkiv", + filename = "strc-tag", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this needs to be checked occasionally", - ["filename"]="spac-pag", - ["status"]="okay", + category = "mkiv", + comment = "this module migh tgo away when code has been moved", + filename = "strc-doc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="spac-par", - ["status"]="okay", + category = "mkiv", + comment = "still some rough edges", + filename = "strc-num", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="spac-def", - ["status"]="todo", + category = "mkiv", + filename = "strc-mar", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs thinking and redoing", - ["filename"]="spac-grd", - ["status"]="todo", + category = "mkiv", + filename = "strc-sbe", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="in transition", - ["filename"]="anch-pos", - ["status"]="okay", + category = "mkvI", + filename = "strc-lst", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="maybe change locationattribute names", - ["filename"]="scrn-ini", - ["status"]="okay", + category = "mkiv", + comment = "some of the local current and synchronization macros will be renamed", + filename = "strc-sec", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-ref", - ["status"]="okay", + category = "mkiv", + filename = "strc-pag", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will change when we have objects at lua end", - ["filename"]="pack-obj", - ["status"]="okay", + category = "mkiv", + comment = "(support for) setups might get improved", + filename = "strc-ren", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="strc-itm", - ["status"]="okay", + category = "mkiv", + comment = "this module might go away", + filename = "strc-xml", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe more common counter code here and setups need to be improved", - ["filename"]="strc-con", - ["status"]="okay", + category = "mkiv", + filename = "strc-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-des", - ["status"]="okay", + category = "mkvi", + comment = "some more low level names might change", + filename = "strc-ref", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="(interactive) coupling is not yet working", - ["filename"]="strc-enu", - ["status"]="okay", + category = "mkiv", + comment = "use setups for rendering", + filename = "strc-reg", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-ind", - ["status"]="okay", + category = "mkvi", + filename = "strc-lev", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs to be adapted when strc-con/des/enu changes", - ["filename"]="strc-lab", - ["status"]="okay", + category = "mkiv", + comment = "maybe some tuning is needed / will happen", + filename = "spac-ali", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="a funny mix", - ["filename"]="core-sys", - ["status"]="okay", + category = "mkiv", + comment = "probably needs some more work", + filename = "spac-hor", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-var", - ["status"]="okay", + category = "mkiv", + comment = "maybe some changes will happen", + filename = "spac-ver", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="page-otr", - ["status"]="okay", + category = "mkiv", + comment = "could be improved if needed", + filename = "spac-lin", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="code might end up elsewhere", - ["filename"]="page-ini", - ["status"]="okay", + category = "mkiv", + comment = "this needs to be checked occasionally", + filename = "spac-pag", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="dealing with insertions might change", - ["filename"]="page-ins", - ["status"]="okay", + category = "mkiv", + filename = "spac-par", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-fac", - ["status"]="okay", + category = "mkiv", + filename = "spac-def", + loading = "always", + status = "todo", }, { - ["category"]="mkiv", - ["comment"]="otr commands will be redone", - ["filename"]="page-brk", - ["status"]="okay", + category = "mkiv", + comment = "needs thinking and redoing", + filename = "spac-grd", + loading = "always", + status = "todo", }, { - ["category"]="mkiv", - ["comment"]="helpers for columns", - ["filename"]="page-col", - ["status"]="okay", + category = "mkiv", + comment = "in transition", + filename = "anch-pos", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="room for improvement and extension", - ["filename"]="page-inf", - ["status"]="okay", + category = "mkvi", + comment = "maybe change locationattribute names", + filename = "scrn-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-grd", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-ref", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be extended when columns are redone", - ["filename"]="page-flt", - ["status"]="okay", + category = "mkiv", + comment = "will change when we have objects at lua end", + filename = "pack-obj", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-bck", - ["status"]="okay", + category = "mkvi", + filename = "strc-itm", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-not", - ["status"]="todo", + category = "mkvi", + comment = "maybe more common counter code here and setups need to be improved", + filename = "strc-con", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="can probably be improved", - ["filename"]="page-one", - ["status"]="okay", + category = "mkvi", + filename = "strc-des", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-lay", - ["status"]="okay", + category = "mkvi", + comment = "(interactive) coupling is not yet working", + filename = "strc-enu", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="page-box", - ["status"]="okay", + category = "mkiv", + filename = "strc-ind", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="a few things left", - ["filename"]="page-txt", - ["status"]="okay", + category = "mkiv", + comment = "needs to be adapted when strc-con/des/enu changes", + filename = "strc-lab", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-sid", - ["status"]="okay", + category = "mkiv", + filename = "strc-syn", + loading = "always", + status = "todo", }, { - ["category"]="mkvi", - ["comment"]="in due time we need a further cleanup", - ["filename"]="strc-flt", - ["status"]="okay", + category = "mkiv", + comment = "a funny mix", + filename = "core-sys", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-pst", - ["status"]="okay", + category = "mkiv", + filename = "page-var", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="might be extended", - ["filename"]="page-mbk", - ["status"]="okay", + category = "mkvi", + filename = "page-otr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be reimplemented", - ["filename"]="page-mul", - ["status"]="todo", + category = "mkiv", + comment = "code might end up elsewhere", + filename = "page-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="work in progress", - ["filename"]="page-mix", - ["status"]="todo", + category = "mkiv", + comment = "dealing with insertions might change", + filename = "page-ins", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be reimplemented", - ["filename"]="page-set", - ["status"]="todo", + category = "mkiv", + filename = "page-fac", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-lyr", - ["status"]="okay", + category = "mkiv", + comment = "otr commands will be redone", + filename = "page-brk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-pos", - ["status"]="okay", + category = "mkiv", + comment = "helpers for columns", + filename = "page-col", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="page-mak", - ["status"]="okay", + category = "mkiv", + comment = "room for improvement and extension", + filename = "page-inf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will probably be overhauled some day", - ["filename"]="page-lin", - ["status"]="okay", + category = "mkiv", + filename = "page-grd", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might get extended", - ["filename"]="page-par", - ["status"]="okay", + category = "mkiv", + comment = "will be extended when columns are redone", + filename = "page-flt", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-pag", - ["status"]="okay", + category = "mkiv", + filename = "page-bck", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-mar", - ["status"]="okay", + category = "mkiv", + filename = "page-not", + loading = "always", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="typo-itm", - ["status"]="okay", + category = "mkiv", + comment = "can probably be improved", + filename = "page-one", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="check other modules for buffer usage", - ["filename"]="buff-ini", - ["status"]="okay", + category = "mkiv", + filename = "page-lay", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="check obsolete processbuffer", - ["filename"]="buff-ver", - ["status"]="okay", + category = "mkvi", + filename = "page-box", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="experimental code", - ["filename"]="buff-par", - ["status"]="okay", + category = "mkvi", + comment = "a few things left", + filename = "page-txt", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-tex", - ["status"]="okay", + category = "mkiv", + filename = "page-sid", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-mp", - ["status"]="okay", + category = "mkvi", + comment = "in due time we need a further cleanup", + filename = "strc-flt", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-lua", - ["status"]="okay", + category = "mkiv", + filename = "page-pst", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-xml", - ["status"]="okay", + category = "mkvi", + comment = "might be extended", + filename = "page-mbk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-parsed-xml", - ["status"]="okay", + category = "mkiv", + comment = "will be reimplemented", + filename = "page-mul", + loading = "always", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="strc-blk", - ["status"]="okay", + category = "mkiv", + comment = "work in progress", + filename = "page-mix", + loading = "always", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="page-imp", - ["status"]="okay", + category = "mkiv", + comment = "will be reimplemented", + filename = "page-set", + loading = "always", + status = "todo", }, { - ["category"]="mkvi", - ["comment"]="maybe some extensions and maybe delayed loading, needs checking", - ["filename"]="page-sel", - ["status"]="okay", + category = "mkiv", + filename = "pack-lyr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-com", - ["status"]="okay", + category = "mkiv", + filename = "pack-pos", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-pag", - ["status"]="okay", + category = "mkvi", + filename = "page-mak", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="functionality needs checking", - ["filename"]="scrn-wid", - ["status"]="okay", + category = "mkiv", + comment = "will probably be overhauled some day", + filename = "page-lin", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-but", - ["status"]="okay", + category = "mkiv", + comment = "might get extended", + filename = "page-par", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-bar", - ["status"]="okay", + category = "mkiv", + filename = "typo-pag", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-bkm", - ["status"]="okay", + category = "mkiv", + filename = "typo-mar", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="somewhat weird", - ["filename"]="tabl-com", - ["status"]="okay", + category = "mkiv", + filename = "typo-itm", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="unchecked", - ["filename"]="tabl-pln", - ["status"]="okay", + category = "mkiv", + comment = "check other modules for buffer usage", + filename = "buff-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="tabl-tab", - ["status"]="delayed", + category = "mkiv", + comment = "check obsolete processbuffer", + filename = "buff-ver", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="can probably be improved (names and such)", - ["filename"]="tabl-tbl", - ["status"]="okay", + category = "mkvi", + comment = "experimental code", + filename = "buff-par", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="frozen functionaly so no drastic cleanup", - ["filename"]="tabl-ntb", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-tex", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="tabl-mis", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-mp", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="tabl-nte", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-lua", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be redone when needed", - ["filename"]="tabl-ltb", - ["status"]="delayed", + category = "mkiv", + filename = "buff-imp-xml", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be adapted when needed (and rest is done)", - ["filename"]="tabl-tsp", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-parsed-xml", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="tabl-xtb", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-default", + loading = "indirect", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="java-ini", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-escaped", + loading = "indirect", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-fld", - ["status"]="okay", + category = "mkiv", + filename = "buff-imp-nested", + loading = "indirect", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="namespace needs checking", - ["filename"]="scrn-hlp", - ["status"]="okay", + category = "mkiv", + filename = "strc-blk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="char-enc", - ["status"]="okay", + category = "mkiv", + filename = "page-imp", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-lib", - ["status"]="okay", + category = "mkvi", + comment = "maybe some extensions and maybe delayed loading, needs checking", + filename = "page-sel", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-fil", - ["status"]="okay", + category = "mkiv", + filename = "page-com", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-fea", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-pag", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-mat", - ["status"]="okay", + category = "mkvi", + comment = "functionality needs checking", + filename = "scrn-wid", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="needs occasional checking and upgrading", - ["filename"]="font-ini", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-but", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-sym", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-bar", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-sty", - ["status"]="okay", + category = "mkiv", + filename = "strc-bkm", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-set", - ["status"]="okay", + category = "mkiv", + comment = "somewhat weird", + filename = "tabl-com", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-emp", - ["status"]="okay", + category = "mkiv", + comment = "unchecked", + filename = "tabl-pln", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-col", - ["status"]="okay", + category = "mkiv", + filename = "tabl-tab", + loading = "always", + status = "pending", }, { - ["category"]="mkiv", - ["filename"]="font-pre", - ["status"]="okay", + category = "mkiv", + comment = "can probably be improved (names and such)", + filename = "tabl-tbl", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="font-unk", - ["status"]="okay", + category = "mkiv", + comment = "frozen functionaly so no drastic cleanup", + filename = "tabl-ntb", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="likely this will become a module", - ["filename"]="font-tra", - ["status"]="okay", + category = "mkiv", + filename = "tabl-mis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this one might be merged", - ["filename"]="font-uni", - ["status"]="okay", + category = "mkiv", + filename = "tabl-nte", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-col", - ["status"]="okay", + category = "mkiv", + comment = "will be redone when needed", + filename = "tabl-ltb", + loading = "always", + status = "pending", }, { - ["category"]="mkvi", - ["filename"]="font-gds", - ["status"]="okay", + category = "mkiv", + comment = "will be adapted when needed (and rest is done)", + filename = "tabl-tsp", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="font-aux", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "tabl-xtb", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this is work in progress", - ["filename"]="lxml-css", - ["status"]="okay", + category = "mkvi", + filename = "tabl-xnt", + loading = "module", + status = "okay", + loading = "always", + comment = "only when natural tables need a replacement", }, { - ["category"]="mkiv", - ["filename"]="spac-chr", - ["status"]="okay", + category = "mkiv", + filename = "java-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="spac-cha", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-fld", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="work in progress", - ["filename"]="blob-ini", - ["status"]="okay", + category = "mkvi", + comment = "namespace needs checking", + filename = "scrn-hlp", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="trac-vis", - ["status"]="okay", + category = "mkiv", + filename = "char-enc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-cln", - ["status"]="okay", + category = "mkvi", + filename = "font-lib", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-spa", - ["status"]="okay", + category = "mkvi", + filename = "font-fil", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="do we keep the style and color or not", - ["filename"]="typo-krn", - ["status"]="okay", + category = "mkvi", + filename = "font-var", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="typo-itc", - ["status"]="okay", + category = "mkvi", + filename = "font-fea", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe singular setup", - ["filename"]="typo-dir", - ["status"]="okay", + category = "mkvi", + filename = "font-mat", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-brk", - ["status"]="okay", + category = "mkvi", + comment = "needs occasional checking and upgrading", + filename = "font-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-cap", - ["status"]="okay", + category = "mkvi", + filename = "font-sym", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-dig", - ["status"]="okay", + category = "mkvi", + filename = "font-sty", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-rep", - ["status"]="okay", + category = "mkvi", + filename = "font-set", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="maybe there will be a nicer interface", - ["filename"]="typo-txt", - ["status"]="okay", + category = "mkvi", + filename = "font-emp", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might get extended", - ["filename"]="typo-par", - ["status"]="okay", + category = "mkvi", + filename = "font-col", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="type-ini", - ["status"]="okay", + category = "mkiv", + filename = "font-pre", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-set", - ["status"]="okay", + category = "mkiv", + filename = "font-unk", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="scrp-ini", - ["status"]="okay", + category = "mkiv", + comment = "likely this will become a module", + filename = "font-tra", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this module is obsolete", - ["filename"]="prop-ini", - ["status"]="okay", + category = "mkiv", + comment = "this could become a module", + filename = "font-chk", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mlib-ctx", - ["status"]="okay", + category = "mkiv", + comment = "this one might be merged", + filename = "font-uni", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="metapost code is always evolving", - ["filename"]="meta-ini", - ["status"]="okay", + category = "mkvi", + filename = "font-col", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-tex", - ["status"]="okay", + category = "mkvi", + filename = "font-gds", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe this one will be merged", - ["filename"]="meta-fun", - ["status"]="okay", + category = "mkvi", + filename = "font-aux", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might get updated when mp code gets cleaned up", - ["filename"]="meta-pag", - ["status"]="okay", + category = "mkiv", + comment = "this is work in progress", + filename = "lxml-css", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-grd", - ["status"]="okay", + category = "mkiv", + filename = "spac-chr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-mrk", - ["status"]="okay", + category = "mkiv", + filename = "spac-cha", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-flw", - ["status"]="okay", + category = "mkiv", + comment = "work in progress", + filename = "blob-ini", + loading = "always", + status = "pending", }, { - ["category"]="mkiv", - ["filename"]="page-spr", - ["status"]="okay", + category = "mkiv", + filename = "trac-vis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be made better", - ["filename"]="page-plg", - ["status"]="okay", + category = "mkvi", + filename = "trac-vis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs more work (and thinking)", - ["filename"]="page-str", - ["status"]="okay", + category = "mkiv", + filename = "typo-cln", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="in transition", - ["filename"]="anch-pgr", - ["status"]="okay", + category = "mkiv", + filename = "typo-spa", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["comment"]="in transition", - ["filename"]="anch-bck", - ["status"]="okay", + category = "mkiv", + comment = "do we keep the style and color or not", + filename = "typo-krn", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will stay experimental for a while", - ["filename"]="anch-tab", - ["status"]="okay", + category = "mkvi", + filename = "typo-itc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="anch-bar", - ["status"]="okay", + category = "mkiv", + comment = "maybe singular setup", + filename = "typo-dir", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="interesting old mechanism to keep around (module?)", - ["filename"]="anch-snc", - ["status"]="delayed", + category = "mkiv", + filename = "typo-brk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="math-ini", - ["status"]="okay", + category = "mkiv", + filename = "typo-cap", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="this file might merge into others", - ["filename"]="math-pln", - ["status"]="okay", + category = "mkiv", + filename = "typo-dig", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="math-for", - ["status"]="okay", + category = "mkiv", + filename = "typo-rep", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="eventually this will be split and spread", - ["filename"]="math-def", - ["status"]="okay", + category = "mkvi", + comment = "maybe there will be a nicer interface", + filename = "typo-txt", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["commend"]="will be checked and improved", - ["filename"]="math-ali", - ["status"]="okay", + category = "mkiv", + comment = "might get extended", + filename = "typo-par", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs testing", - ["filename"]="math-arr", - ["status"]="okay", + category = "mkvi", + filename = "type-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="at least for the moment", - ["filename"]="math-frc", - ["status"]="okay", + category = "mkiv", + filename = "type-set", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="math-scr", - ["status"]="okay", + category = "mkiv", + filename = "type-def", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="math-int", - ["status"]="okay", + category = "mkiv", + filename = "type-fbk", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="code get replaced (by autodelimiters)", - ["filename"]="math-del", - ["status"]="okay", + category = "mkiv", + filename = "type-lua", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="code might move to here", - ["filename"]="math-inl", - ["status"]="okay", + category = "mkiv", + filename = "type-one", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="code might move to here", - ["filename"]="math-dis", - ["status"]="okay", + category = "mkiv", + filename = "type-otf", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="phys-dim", - ["status"]="okay", + category = "mkiv", + filename = "type-siz", + loading = "type-set", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="some more functionality will end up here", - ["filename"]="strc-mat", - ["status"]="okay", + category = "mkiv", + filename = "type-tmf", + loading = "never", + status = "okay", + comment = "placeholder to prevent other loading", }, { - ["category"]="mkiv", - ["filename"]="chem-ini", - ["status"]="okay", + category = "mkiv", + filename = "scrp-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="chem-str", - ["status"]="okay", + category = "mkiv", + comment = "this module is obsolete", + filename = "prop-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-scr", - ["status"]="okay", + category = "mkiv", + filename = "mlib-ctx", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="maybe some cleanup is needed", - ["filename"]="node-rul", - ["status"]="okay", + category = "mkiv", + comment = "metapost code is always evolving", + filename = "meta-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="needs testing", - ["filename"]="font-sol", - ["status"]="okay", + category = "mkiv", + filename = "meta-tex", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="strc-not", - ["status"]="todo", + category = "mkiv", + comment = "maybe this one will be merged", + filename = "meta-fun", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will be extended as part of crited", - ["filename"]="strc-lnt", - ["status"]="okay", + category = "mkiv", + comment = "might get updated when mp code gets cleaned up", + filename = "meta-pag", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-com", - ["status"]="okay", + category = "mkiv", + filename = "meta-grd", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="typo-del", - ["status"]="okay", + category = "mkiv", + filename = "page-mrk", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="grph-trf", - ["status"]="okay", + category = "mkiv", + filename = "page-flw", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="grph-inc", - ["status"]="okay", + category = "mkiv", + filename = "page-spr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="grph-fig", - ["status"]="okay", + category = "mkiv", + comment = "will be made better", + filename = "page-plg", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="grph-raw", - ["status"]="okay", + category = "mkiv", + comment = "needs more work (and thinking)", + filename = "page-str", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-box", - ["status"]="okay", + category = "mkiv", + comment = "in transition", + filename = "anch-pgr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="pack-bar", - ["status"]="okay", + category = "mkvi", + comment = "in transition", + filename = "anch-bck", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="page-app", - ["status"]="okay", + category = "mkiv", + comment = "will stay experimental for a while", + filename = "anch-tab", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-fig", - ["status"]="okay", + category = "mkiv", + filename = "anch-bar", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="more or less obsolete", - ["filename"]="lang-spa", - ["status"]="okay", + category = "mkiv", + comment = "interesting old mechanism to keep around (module?)", + filename = "anch-snc", + loading = "always", + status = "pending", }, { - ["category"]="mkiv", - ["filename"]="bibl-bib", - ["status"]="delayed", + category = "mkiv", + filename = "math-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="bibl-tra", - ["status"]="delayed", + category = "mkiv", + comment = "this file might merge into others", + filename = "math-pln", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="not needed", - ["filename"]="meta-xml", - ["status"]="okay", + category = "mkiv", + filename = "math-for", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cont-log", - ["status"]="okay", + category = "mkiv", + comment = "eventually this will be split and spread", + filename = "math-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="task-ini", - ["status"]="okay", + category = "mkiv", + comment = "will be checked and improved", + filename = "math-ali", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cldf-ver", - ["status"]="okay", + category = "mkiv", + comment = "needs testing", + filename = "math-arr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cldf-com", - ["status"]="okay", + category = "mkiv", + comment = "at least for the moment", + filename = "math-frc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="core-ctx", - ["status"]="okay", + category = "mkiv", + filename = "math-scr", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="will always be messy", - ["filename"]="core-def", - ["status"]="okay", + category = "mkiv", + filename = "math-int", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="object related code might move or change", - ["filename"]="back-pdf", - ["status"]="okay", + category = "mkiv", + comment = "code get replaced (by autodelimiters)", + filename = "math-del", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mlib-pdf", - ["status"]="okay", + category = "mkiv", + comment = "code might move to here", + filename = "math-inl", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="mlib-pps", - ["status"]="okay", + category = "mkiv", + comment = "code might move to here", + filename = "math-dis", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-pdf", - ["status"]="okay", + category = "mkiv", + filename = "phys-dim", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="might need more work", - ["filename"]="grph-epd", - ["status"]="okay", + category = "mkiv", + comment = "some more functionality will end up here", + filename = "strc-mat", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["comment"]="some parameters might move from export to backend", - ["filename"]="back-exp", - ["status"]="okay", + category = "mkiv", + filename = "chem-ini", + loading = "always", + status = "okay", }, - }, - ["extras"]={ { - ["category"]="tex", - ["filename"]="mtx-context-arrange", - ["status"]="todo", + category = "mkiv", + filename = "chem-str", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-combine", - ["status"]="todo", + category = "mkiv", + filename = "typo-scr", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-common", - ["status"]="todo", + category = "mkiv", + comment = "maybe some cleanup is needed", + filename = "node-rul", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-ideas", - ["status"]="todo", + category = "mkiv", + comment = "needs testing", + filename = "font-sol", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-listing", - ["status"]="todo", + category = "mkvI", + filename = "strc-not", + loading = "always", + status = "todo", }, { - ["category"]="tex", - ["filename"]="mtx-context-markdown", - ["status"]="todo", + category = "mkvi", + comment = "will be extended as part of crited", + filename = "strc-lnt", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-select", - ["status"]="todo", + category = "mkiv", + filename = "pack-com", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="mtx-context-timing", - ["status"]="todo", + category = "mkiv", + filename = "typo-del", + loading = "always", + status = "okay", }, - }, - ["implementations"]={ { - ["category"]="mkiv", - ["filename"]="buff-imp-default", - ["status"]="todo", + category = "mkiv", + filename = "grph-trf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-escaped", - ["status"]="todo", + category = "mkiv", + filename = "grph-inc", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="buff-imp-nested", - ["status"]="todo", + category = "mkiv", + filename = "grph-fig", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-imp-dem", - ["status"]="todo", + category = "mkiv", + filename = "grph-raw", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-imp-ema", - ["status"]="todo", + category = "mkiv", + filename = "pack-box", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-imp-rgb", - ["status"]="todo", + category = "mkiv", + filename = "pack-bar", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-imp-x11", - ["status"]="todo", + category = "mkiv", + filename = "page-app", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="colo-imp-xwi", - ["status"]="todo", + category = "mkiv", + filename = "meta-fig", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="java-imp-exa", - ["status"]="todo", + category = "mkiv", + comment = "more or less obsolete", + filename = "lang-spa", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="java-imp-fil", - ["status"]="todo", + category = "mkiv", + filename = "bibl-bib", + loading = "always", + status = "pending", }, { - ["category"]="mkiv", - ["filename"]="java-imp-fld", - ["status"]="todo", + category = "mkiv", + filename = "bibl-tra", + loading = "always", + status = "pending", }, { - ["category"]="mkiv", - ["filename"]="java-imp-rhh", - ["status"]="todo", + category = "mkiv", + comment = "not needed", + filename = "meta-xml", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="java-imp-stp", - ["status"]="todo", + category = "mkiv", + filename = "cont-log", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-clp", - ["status"]="todo", + category = "mkiv", + filename = "task-ini", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-dum", - ["status"]="todo", + category = "mkiv", + filename = "cldf-ver", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-fen", - ["status"]="todo", + category = "mkiv", + filename = "cldf-com", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-mis", - ["status"]="todo", + category = "mkiv", + filename = "core-ctx", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-nav", - ["status"]="todo", + category = "mkiv", + comment = "will always be messy", + filename = "core-def", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-pre", - ["status"]="todo", + category = "mkiv", + comment = "object related code might move or change", + filename = "back-pdf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-imp-txt", - ["status"]="todo", + category = "mkiv", + filename = "back-swf", + loading = "never", + status = "okay", + comment = "no code, just an example of usage", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-cow", - ["status"]="todo", + category = "mkiv", + filename = "back-u3d", + loading = "never", + status = "okay", + comment = "no code, just an example of usage", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-eur", - ["status"]="todo", + category = "mkiv", + filename = "mlib-pdf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-jmn", - ["status"]="todo", + category = "mkiv", + filename = "mlib-pps", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-mis", - ["status"]="todo", + category = "mkiv", + filename = "meta-pdf", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-mvs", - ["status"]="todo", + category = "mkiv", + comment = "might need more work", + filename = "grph-epd", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-imp-nav", - ["status"]="todo", + category = "mkiv", + comment = "some parameters might move from export to backend", + filename = "back-exp", + loading = "always", + status = "okay", }, + }, + extras = { { - ["category"]="mkiv", - ["filename"]="type-imp-antykwa", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-arrange", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-antykwapoltawskiego", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-combine", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-asana", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-common", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-averia", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-ideas", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-buy", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-listing", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-cambria", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-markdown", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-charter", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-select", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-cleartype", - ["status"]="todo", + category = "tex", + comment = "add-on for mtx-context", + filename = "mtx-context-timing", + loading = "on demand", + status = "okay", }, + }, + implementations = { { - ["category"]="mkiv", - ["filename"]="type-imp-computer-modern-unicode", - ["status"]="todo", + category = "mkiv", + filename = "colo-imp-dem", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-cow", - ["status"]="todo", + category = "mkiv", + filename = "colo-imp-ema", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-dejavu", - ["status"]="todo", + category = "mkiv", + filename = "colo-imp-rgb", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-euler", - ["status"]="todo", + category = "mkiv", + filename = "colo-imp-x11", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-ghz", - ["status"]="todo", + category = "mkiv", + filename = "colo-imp-xwi", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-hgz", - ["status"]="todo", + category = "mkiv", + filename = "java-imp-exa", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-husayni", - ["status"]="todo", + category = "mkiv", + filename = "java-imp-fil", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-hvmath", - ["status"]="todo", + category = "mkiv", + filename = "java-imp-fld", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-inconsolata", - ["status"]="todo", + category = "mkiv", + filename = "java-imp-rhh", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-informal", - ["status"]="todo", + category = "mkiv", + filename = "java-imp-stp", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-iwona", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-clp", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-kurier", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-dum", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-latinmodern", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-fen", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-liberation", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-mis", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-libertine", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-nav", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-lmnames", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-pre", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-lucida-opentype", - ["status"]="todo", + category = "mkiv", + filename = "meta-imp-txt", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-lucida-typeone", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-cow", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-mathdesign", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-eur", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-mathtimes", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-jmn", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-mscore", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-mis", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-osx", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-mvs", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-postscript", - ["status"]="todo", + category = "mkiv", + filename = "symb-imp-nav", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-punknova", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-antykwa", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-texgyre", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-antykwapoltawskiego", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-unfonts", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-asana", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-xits", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-averia", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-imp-xitsbidi", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-buy", + loading = "on demand", + status = "okay", }, - }, - ["lua"]={ { - ["category"]="lua", - ["filename"]="anch-pgr", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-cambria", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="anch-pos", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-charter", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="attr-col", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-cleartype", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="attr-eff", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-computer-modern-unicode", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="attr-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-cow", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="attr-lay", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-dejavu", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="attr-neg", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-euler", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="back-exp", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-ghz", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="back-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-hgz", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="back-pdf", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-husayni", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="bibl-bib", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-hvmath", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="bibl-tra", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-inconsolata", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="bibl-tst", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-informal", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="blob-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-iwona", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-default", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-kurier", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-escaped", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-latinmodern", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-lua", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-liberation", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-mp", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-libertine", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-nested", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-lmnames", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-parsed-xml", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-lucida-opentype", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-tex", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-lucida-typeone", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-imp-xml", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-mathdesign", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-mathtimes", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-par", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-mscore", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="buff-ver", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-osx", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="catc-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-postscript", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-cjk", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-punknova", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-def", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-texgyre", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-enc", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-unfonts", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-ent", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-xits", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-ini", - ["status"]="todo", + category = "mkiv", + filename = "type-imp-xitsbidi", + loading = "on demand", + status = "okay", }, + }, + lua = { { - ["category"]="lua", - ["filename"]="char-map", - ["status"]="todo", + category = "lua", + filename = "anch-pgr", + loading = "anch-pgr", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-tex", - ["status"]="todo", + category = "lua", + filename = "anch-pos", + loading = "anch-pos", + status = "okay", }, { - ["category"]="lua", - ["filename"]="char-utf", - ["status"]="todo", + category = "lua", + filename = "attr-col", + loading = "attr-col", + status = "okay", }, { - ["category"]="lua", - ["filename"]="chem-ini", - ["status"]="todo", + category = "lua", + filename = "attr-eff", + loading = "attr-eff", + status = "okay", }, { - ["category"]="lua", - ["filename"]="chem-str", - ["status"]="todo", + category = "lua", + filename = "attr-ini", + loading = "attr-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="cldf-bas", - ["status"]="todo", + category = "lua", + filename = "attr-lay", + loading = "attr-lay", + status = "okay", }, { - ["category"]="lua", - ["filename"]="cldf-com", - ["status"]="todo", + category = "lua", + filename = "attr-neg", + loading = "attr-neg", + status = "okay", }, { - ["category"]="lua", - ["filename"]="cldf-ini", - ["status"]="todo", + category = "lua", + comment = "experimental code, maybe some will move elsewhere", + filename = "back-exp", + loading = "back-exp", + status = "pending", }, { - ["category"]="lua", - ["filename"]="cldf-int", - ["status"]="todo", + category = "lua", + filename = "back-ini", + loading = "back-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="cldf-ver", - ["status"]="todo", + category = "lua", + filename = "back-pdf", + loading = "back-pdf", + status = "okay", }, { - ["category"]="lua", - ["filename"]="colo-icc", - ["status"]="todo", + category = "lua", + filename = "bibl-bib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="colo-ini", - ["status"]="todo", + category = "lua", + filename = "bibl-tra", + status = "todo", }, { - ["category"]="lua", - ["filename"]="colo-run", - ["status"]="todo", + category = "lua", + filename = "bibl-tst", + status = "todo", }, { - ["category"]="lua", - ["filename"]="core-con", - ["status"]="todo", + category = "lua", + filename = "blob-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="core-ctx", - ["status"]="todo", + category = "lua", + filename = "buff-imp-default", + loading = "buff-imp-default", + status = "okay", }, { - ["category"]="lua", - ["filename"]="core-dat", - ["status"]="todo", + category = "lua", + filename = "buff-imp-escaped", + loading = "buff-imp-escaped", + status = "okay", }, { - ["category"]="lua", - ["filename"]="core-env", - ["status"]="todo", + category = "lua", + filename = "buff-imp-lua", + loading = "buff-imp-lua", + status = "okay", }, { - ["category"]="lua", - ["filename"]="core-sys", - ["status"]="todo", + category = "lua", + filename = "buff-imp-mp", + loading = "buff-imp-mp", + status = "okay", }, { - ["category"]="lua", - ["filename"]="core-two", - ["status"]="todo", + category = "lua", + filename = "buff-imp-nested", + loading = "buff-imp-nested", + status = "okay", }, { - ["category"]="lua", - ["filename"]="core-uti", - ["status"]="todo", + category = "lua", + filename = "buff-imp-parsed-xml", + loading = "buff-imp-parsed-xml", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-aux", - ["status"]="todo", + category = "lua", + filename = "buff-imp-tex", + loading = "buff-imp-tex", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-bin", - ["status"]="todo", + category = "lua", + filename = "buff-imp-xml", + loading = "buff-imp-xml", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-con", - ["status"]="todo", + category = "lua", + filename = "buff-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="data-crl", - ["status"]="todo", + category = "lua", + filename = "buff-par", + status = "todo", }, { - ["category"]="lua", - ["filename"]="data-ctx", - ["status"]="todo", + category = "lua", + filename = "buff-ver", + status = "todo", }, { - ["category"]="lua", - ["filename"]="data-env", - ["status"]="todo", + category = "lua", + filename = "catc-ini", + loading = "catc-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-exp", - ["status"]="todo", + category = "lua", + filename = "char-cjk", + loading = "char-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-fil", - ["status"]="todo", + category = "lua", + filename = "char-def", + loading = "char-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-gen", - ["status"]="todo", + category = "lua", + comment = "maybe dataonly", + filename = "char-enc", + loading = "char-enc", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-ini", - ["status"]="todo", + category = "lua", + filename = "char-ent", + loading = "char-ent", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-inp", - ["status"]="todo", + category = "lua", + comment = "maybe move blocks table to separate (dataonly) file", + filename = "char-ini", + loading = "char-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-lst", - ["status"]="todo", + category = "lua", + filename = "char-map", + loading = "char-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-lua", - ["status"]="todo", + category = "lua", + filename = "char-tex", + loading = "char-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-met", - ["status"]="todo", + category = "lua", + filename = "char-utf", + loading = "char-utf", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-out", - ["status"]="todo", + category = "lua", + filename = "chem-ini", + loading = "chem-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-pre", - ["status"]="todo", + category = "lua", + filename = "chem-str", + loading = "chem-str", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-res", - ["status"]="todo", + category = "lua", + comment = "will be extended and can be optimized if needed", + filename = "cldf-bas", + loading = "cldf-bas", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-sch", - ["status"]="todo", + category = "lua", + comment = "might change or even go away", + filename = "cldf-com", + loading = "cldf-com", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-tex", - ["status"]="todo", + category = "lua", + filename = "cldf-ini", + loading = "cldf-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-tmf", - ["status"]="todo", + category = "lua", + filename = "cldf-int", + loading = "cldf-int", + status = "pending", }, { - ["category"]="lua", - ["filename"]="data-tmp", - ["status"]="todo", + category = "lua", + comment = "maybe this code can be redone more efficiently/robust", + filename = "cldf-ver", + loading = "cldf-ver", + status = "pending", }, { - ["category"]="lua", - ["filename"]="data-tre", - ["status"]="todo", + category = "lua", + comment = "also used in mtx-*", + filename = "colo-icc", + loading = "colo-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-use", - ["status"]="todo", + category = "lua", + filename = "colo-ini", + loading = "colo-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-vir", - ["status"]="todo", + category = "lua", + comment = "this code might move to a module", + filename = "colo-run", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="data-zip", - ["status"]="todo", + category = "lua", + filename = "core-con", + loading = "core-con", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-ini", - ["status"]="todo", + category = "lua", + filename = "core-ctx", + loading = "core-ctx", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-job", - ["status"]="todo", + category = "lua", + filename = "core-dat", + loading = "core-dat", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-lib", - ["status"]="todo", + category = "lua", + comment = "maybe abusing the tex namespace is wrong", + filename = "core-env", + loading = "core-env", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-mod", - ["status"]="todo", + category = "lua", + filename = "core-sys", + loading = "core-sys", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-res", - ["status"]="todo", + category = "lua", + commands = "this is in fact replaced by core-dat", + filename = "core-two", + loading = "core-two", + status = "okay", }, { - ["category"]="lua", - ["filename"]="file-syn", - ["status"]="todo", + category = "lua", + comment = "some code will move to better places", + filename = "core-uti", + loading = "core-uti", + status = "pending", }, { - ["category"]="lua", - ["filename"]="font-afm", - ["status"]="todo", + category = "lua", + filename = "data-aux", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-age", - ["status"]="todo", + category = "lua", + filename = "data-bin", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-agl", - ["status"]="todo", + category = "lua", + filename = "data-con", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-aux", - ["status"]="todo", + category = "lua", + filename = "data-crl", + loading = "never", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-chk", - ["status"]="todo", + category = "lua", + filename = "data-ctx", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-cid", - ["status"]="todo", + category = "lua", + filename = "data-env", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-col", - ["status"]="todo", + category = "lua", + filename = "data-exp", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-con", - ["status"]="todo", + category = "lua", + filename = "data-fil", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-ctx", - ["status"]="todo", + category = "lua", + filename = "data-gen", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-def", - ["status"]="todo", + category = "lua", + filename = "data-ini", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-enc", - ["status"]="todo", + category = "lua", + filename = "data-inp", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-enh", - ["status"]="todo", + category = "lua", + filename = "data-lst", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-ext", - ["status"]="todo", + category = "lua", + filename = "data-lua", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-fbk", - ["status"]="todo", + category = "lua", + filename = "data-met", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-gds", - ["status"]="todo", + category = "lua", + filename = "data-out", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-ini", - ["status"]="todo", + category = "lua", + filename = "data-pre", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-ldr", - ["status"]="todo", + category = "lua", + filename = "data-res", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-log", - ["status"]="todo", + category = "lua", + filename = "data-sch", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-lua", - ["status"]="todo", + category = "lua", + filename = "data-tex", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-map", - ["status"]="todo", + category = "lua", + filename = "data-tmf", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-mis", - ["status"]="todo", + category = "lua", + filename = "data-tmp", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-ota", - ["status"]="todo", + category = "lua", + filename = "data-tre", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-otb", - ["status"]="todo", + category = "lua", + filename = "data-use", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-otc", - ["status"]="todo", + category = "lua", + filename = "data-vir", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-otd", - ["status"]="todo", + category = "lua", + filename = "data-zip", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="font-otf", - ["status"]="todo", + category = "lua", + filename = "file-ini", + loading = "file-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-oth", - ["status"]="todo", + category = "lua", + filename = "file-job", + loading = "file-job", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-oti", - ["status"]="todo", + category = "lua", + filename = "file-lib", + loading = "file-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-otn", - ["status"]="todo", + category = "lua", + filename = "file-mod", + loading = "file-mod", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-otp", - ["status"]="todo", + category = "lua", + filename = "file-res", + loading = "file-res", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-ott", - ["status"]="todo", + category = "lua", + filename = "file-syn", + loading = "file-syn", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-pat", - ["status"]="todo", + category = "lua", + filename = "font-afm", + loading = "font-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-sol", - ["status"]="todo", + category = "lua", + filename = "font-afk", + loading = "font-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-syn", - ["status"]="todo", + category = "lua", + comment = "only used in luatex-fonts", + filename = "font-age", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-tfm", - ["status"]="todo", + category = "lua", + filename = "font-agl", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="font-vf", - ["status"]="todo", + category = "lua", + filename = "font-aux", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="grph-epd", - ["status"]="todo", + category = "lua", + comment = "move more to the commands namespace", + filename = "font-chk", + loading = "font-chk", + status = "okay", }, { - ["category"]="lua", - ["filename"]="grph-fil", - ["status"]="todo", + category = "lua", + filename = "font-cid", + loading = "font-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="grph-inc", - ["status"]="todo", + category = "lua", + filename = "font-col", + loading = "font-col", + status = "okay", }, { - ["category"]="lua", - ["filename"]="grph-raw", - ["status"]="todo", + category = "lua", + filename = "font-con", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="grph-swf", - ["status"]="todo", + category = "lua", + filename = "font-ctx", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="grph-u3d", - ["status"]="todo", + category = "lua", + filename = "font-def", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="grph-wnd", - ["status"]="todo", + category = "lua", + comment = "part of this code is obsolete", + filename = "font-enc", + loading = "font-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="java-ini", - ["status"]="todo", + category = "lua", + filename = "font-enh", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-boolean", - ["status"]="todo", + category = "lua", + filename = "font-ext", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-dir", - ["status"]="todo", + category = "lua", + filename = "font-fbk", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-file", - ["status"]="todo", + category = "lua", + filename = "font-gds", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-io", - ["status"]="todo", + category = "lua", + filename = "font-ini", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-lpeg", - ["status"]="todo", + category = "lua", + filename = "font-ldr", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="l-math", - ["status"]="todo", + category = "lua", + filename = "font-log", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-md5", - ["status"]="todo", + category = "lua", + filename = "font-lua", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-number", - ["status"]="todo", + category = "lua", + filename = "font-map", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-os", - ["status"]="todo", + category = "lua", + filename = "font-mis", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="l-pdfview", - ["status"]="todo", + category = "lua", + filename = "font-ota", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-set", - ["status"]="todo", + category = "lua", + filename = "font-otb", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-string", - ["status"]="todo", + category = "lua", + filename = "font-otc", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-table", - ["status"]="todo", + category = "lua", + filename = "font-otd", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-unicode", - ["status"]="todo", + category = "lua", + filename = "font-otf", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-url", - ["status"]="todo", + category = "lua", + filename = "font-oth", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="l-xml", - ["status"]="todo", + category = "lua", + filename = "font-oti", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lang-def", - ["status"]="todo", + category = "lua", + filename = "font-otn", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lang-ini", - ["status"]="todo", + category = "lua", + filename = "font-otp", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lang-lab", - ["status"]="todo", + category = "lua", + filename = "font-ott", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lang-txt", - ["status"]="todo", + category = "lua", + filename = "font-pat", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lang-url", - ["status"]="todo", + category = "lua", + filename = "font-sol", + loading = "font-sol", + status = "okay", }, { - ["category"]="lua", - ["filename"]="lang-wrd", - ["status"]="todo", + category = "lua", + filename = "font-syn", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="layo-ini", - ["status"]="todo", + category = "lua", + filename = "font-tfm", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-ano", - ["status"]="todo", + category = "lua", + filename = "font-vf", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-col", - ["status"]="todo", + category = "lua", + filename = "grph-epd", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-enc", - ["status"]="todo", + category = "lua", + filename = "grph-fil", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-epa", - ["status"]="todo", + category = "lua", + filename = "grph-inc", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-epd", - ["status"]="todo", + category = "lua", + filename = "grph-raw", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-fld", - ["status"]="todo", + category = "lua", + filename = "grph-swf", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-fmt", - ["status"]="todo", + category = "lua", + filename = "grph-u3d", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-grp", - ["status"]="todo", + category = "lua", + filename = "grph-wnd", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-ini", - ["status"]="todo", + category = "lua", + filename = "java-ini", + loading = "java-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="lpdf-mis", - ["status"]="todo", + category = "lua", + filename = "l-boolean", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-mov", - ["status"]="todo", + category = "lua", + filename = "l-dir", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-nod", - ["status"]="todo", + category = "lua", + filename = "l-file", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-ren", - ["status"]="todo", + category = "lua", + filename = "l-io", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-swf", - ["status"]="todo", + category = "lua", + filename = "l-lpeg", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-tag", - ["status"]="todo", + category = "lua", + filename = "l-math", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-u3d", - ["status"]="todo", + category = "lua", + filename = "l-md5", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-wid", - ["status"]="todo", + category = "lua", + filename = "l-number", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lpdf-xmp", - ["status"]="todo", + category = "lua", + filename = "l-os", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-bwc", - ["status"]="todo", + category = "lua", + filename = "l-pdfview", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-cbk", - ["status"]="todo", + category = "lua", + filename = "l-set", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-cnf", - ["status"]="todo", + category = "lua", + filename = "l-string", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-cod", - ["status"]="todo", + category = "lua", + filename = "l-table", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-env", - ["status"]="todo", + category = "lua", + filename = "l-unicode", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-exe", - ["status"]="todo", + category = "lua", + filename = "l-url", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-fio", - ["status"]="todo", + category = "lua", + filename = "l-xml", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-fmt", - ["status"]="todo", + category = "lua", + filename = "lang-def", + loading = "lang-def", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-ini", - ["status"]="todo", + category = "lua", + filename = "lang-ini", + loading = "lang-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-iop", - ["status"]="todo", + category = "lua", + filename = "lang-lab", + loading = "lang-lab", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-lua", - ["status"]="todo", + category = "lua", + filename = "lang-txt", + loading = "lang-lab", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-mac", - ["status"]="todo", + category = "lua", + comment = "maybe another approach is nicer", + filename = "lang-url", + loading = "lang-url", + status = "pending", }, { - ["category"]="lua", - ["filename"]="luat-run", - ["status"]="todo", + category = "lua", + filename = "lang-wrd", + loading = "lang-wrd", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-soc", - ["status"]="todo", + category = "lua", + comment = "more will end up here", + filename = "layo-ini", + loading = "layo-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="luat-sta", - ["status"]="todo", + category = "lua", + filename = "lpdf-ano", + status = "todo", }, { - ["category"]="lua", - ["filename"]="luat-sto", - ["status"]="todo", + category = "lua", + filename = "lpdf-col", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-aux", - ["status"]="todo", + category = "lua", + filename = "lpdf-enc", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-css", - ["status"]="todo", + category = "lua", + filename = "lpdf-epa", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-ctx", - ["status"]="todo", + category = "lua", + filename = "lpdf-epd", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-dir", - ["status"]="todo", + category = "lua", + filename = "lpdf-fld", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-ent", - ["status"]="todo", + category = "lua", + filename = "lpdf-fmt", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-inf", - ["status"]="todo", + category = "lua", + filename = "lpdf-grp", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-lpt", - ["status"]="todo", + category = "lua", + filename = "lpdf-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-mis", - ["status"]="todo", + category = "lua", + filename = "lpdf-mis", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-sor", - ["status"]="todo", + category = "lua", + filename = "lpdf-mov", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-tab", - ["status"]="todo", + category = "lua", + filename = "lpdf-nod", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-tex", - ["status"]="todo", + category = "lua", + filename = "lpdf-ren", + status = "todo", }, { - ["category"]="lua", - ["filename"]="lxml-xml", - ["status"]="todo", + category = "lua", + filename = "lpdf-swf", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-chart", - ["status"]="todo", + category = "lua", + filename = "lpdf-tag", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-database", - ["status"]="todo", + category = "lua", + filename = "lpdf-u3d", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-markdown", - ["status"]="todo", + category = "lua", + filename = "lpdf-wid", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-pstricks", - ["status"]="todo", + category = "lua", + filename = "lpdf-xmp", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-spreadsheet", - ["status"]="todo", + category = "lua", + filename = "luat-bwc", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="m-steps", - ["status"]="todo", + category = "lua", + filename = "luat-cbk", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-act", - ["status"]="todo", + category = "lua", + filename = "luat-cnf", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-dim", - ["status"]="todo", + category = "lua", + comment = "maybe some code should move", + filename = "luat-cod", + loading = "luat-cod", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-ext", - ["status"]="todo", + category = "lua", + filename = "luat-env", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-fbk", - ["status"]="todo", + category = "lua", + filename = "luat-exe", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-ini", - ["status"]="todo", + category = "lua", + filename = "luat-fio", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-map", - ["status"]="todo", + category = "lua", + filename = "luat-fmt", + loading = "on demand", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-noa", - ["status"]="todo", + category = "lua", + filename = "luat-ini", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-ren", - ["status"]="todo", + category = "lua", + filename = "luat-iop", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-tag", - ["status"]="todo", + category = "lua", + filename = "luat-lua", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-ttv", - ["status"]="todo", + category = "lua", + filename = "luat-mac", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="math-vfu", - ["status"]="todo", + category = "lua", + filename = "luat-run", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="meta-fun", - ["status"]="todo", + category = "lua", + filename = "luat-soc", + loading = "on demand", + status = "todo", }, { - ["category"]="lua", - ["filename"]="meta-ini", - ["status"]="todo", + category = "lua", + filename = "luat-sta", + loading = "on demand", + status = "todo", }, { - ["category"]="lua", - ["filename"]="meta-pdf", - ["status"]="todo", + category = "lua", + filename = "luat-sto", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="meta-pdh", - ["status"]="todo", + category = "lua", + filename = "lxml-aux", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="meta-tex", - ["status"]="todo", + category = "lua", + filename = "lxml-css", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mlib-ctx", - ["status"]="todo", + category = "lua", + filename = "lxml-ctx", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mlib-pdf", - ["status"]="todo", + category = "lua", + filename = "lxml-dir", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mlib-pps", - ["status"]="todo", + category = "lua", + filename = "lxml-ent", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mlib-run", - ["status"]="todo", + category = "lua", + filename = "lxml-inf", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-aux", - ["status"]="todo", + category = "lua", + filename = "lxml-lpt", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-chk", - ["status"]="todo", + category = "lua", + filename = "lxml-mis", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-def", - ["status"]="todo", + category = "lua", + filename = "lxml-sor", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-ini", - ["status"]="todo", + category = "lua", + filename = "lxml-tab", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-low", - ["status"]="todo", + category = "lua", + filename = "lxml-tex", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-mes", - ["status"]="todo", + category = "lua", + filename = "lxml-xml", + loading = "luat-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-mps", - ["status"]="todo", + category = "lua", + filename = "m-chart", + status = "todo", }, { - ["category"]="lua", - ["filename"]="mult-prm", - ["status"]="todo", + category = "lua", + filename = "m-database", + status = "todo", }, { - ["category"]="lua", - ["filename"]="node-acc", - ["status"]="todo", + category = "lua", + filename = "m-markdown", + status = "todo", }, { - ["category"]="lua", - ["filename"]="node-aux", - ["status"]="todo", + category = "lua", + filename = "m-pstricks", + status = "todo", }, { - ["category"]="lua", - ["filename"]="node-bck", - ["status"]="todo", + category = "lua", + filename = "m-spreadsheet", + status = "todo", }, { - ["category"]="lua", - ["filename"]="node-dir", - ["status"]="todo", + category = "lua", + filename = "m-steps", + status = "todo", }, { - ["category"]="lua", - ["filename"]="node-ext", - ["status"]="todo", + category = "lua", + filename = "math-act", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-fin", - ["status"]="todo", + category = "lua", + comment = "could be made look nicer, but who cares", + filename = "math-dim", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-fnt", - ["status"]="todo", + category = "lua", + comment = "the code is related to math-vfu", + filename = "math-ext", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-ini", - ["status"]="todo", + category = "lua", + filename = "math-fbk", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-inj", - ["status"]="todo", + category = "lua", + comment = "okay, but we might have a few more low level definers some day", + filename = "math-ini", + loading = "math-ini", + status = "pending", }, { - ["category"]="lua", - ["filename"]="node-mig", - ["status"]="todo", + category = "lua", + filename = "math-map", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-pag", - ["status"]="todo", + category = "lua", + filename = "math-noa", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-pro", - ["status"]="todo", + category = "lua", + filename = "math-ren", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-ref", - ["status"]="todo", + category = "lua", + filename = "math-tag", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-res", - ["status"]="todo", + category = "lua", + filename = "math-ttv", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-rul", - ["status"]="todo", + category = "lua", + filename = "math-vfu", + loading = "math-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-ser", - ["status"]="todo", + category = "lua", + comment = "this is just a first version", + filename = "meta-fun", + loading = "meta-fun", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-shp", - ["status"]="todo", + category = "lua", + filename = "meta-ini", + loading = "meta-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-tex", - ["status"]="todo", + category = "lua", + comment = "could be done nicer nowadays but who needs it", + filename = "meta-pdf", + loading = "meta-pdf", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-tra", - ["status"]="todo", + category = "lua", + filename = "meta-pdh", + loading = "meta-pdh", + status = "okay", + loading = "never", + comment = "this is historic code that we keep around", }, { - ["category"]="lua", - ["filename"]="node-tsk", - ["status"]="todo", + category = "lua", + filename = "meta-tex", + loading = "meta-tex", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-tst", - ["status"]="todo", + category = "lua", + filename = "mlib-ctx", + loading = "mlib-ctx", + status = "okay", }, { - ["category"]="lua", - ["filename"]="node-typ", - ["status"]="todo", + category = "lua", + filename = "mlib-pdf", + loading = "mlib-pdf", + status = "okay", }, { - ["category"]="lua", - ["filename"]="pack-obj", - ["status"]="todo", + category = "lua", + filename = "mlib-pps", + loading = "mlib-pdf", + status = "okay", }, { - ["category"]="lua", - ["filename"]="pack-rul", - ["status"]="todo", + category = "lua", + filename = "mlib-run", + loading = "mlib-ctx", + status = "okay", }, { - ["category"]="lua", - ["filename"]="page-flt", - ["status"]="todo", + category = "lua", + comment = "this is an experiment, namespaces need to be dealt with properly", + filename = "mult-aux", + loading = "mult-aux", + status = "pending", }, { - ["category"]="lua", - ["filename"]="page-ins", - ["status"]="todo", + category = "lua", + comment = "this is an experiment", + filename = "mult-chk", + loading = "mult-chk", + status = "pending", }, { - ["category"]="lua", - ["filename"]="page-lin", - ["status"]="todo", + category = "lua", + filename = "mult-def", + loading = "mult-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="page-mix", - ["status"]="todo", + category = "lua", + comment = "used for generating editor lexing files", + filename = "mult-fun", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="page-pst", - ["status"]="todo", + category = "lua", + filename = "mult-ini", + loading = "mult-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="page-str", - ["status"]="todo", + category = "lua", + comment = "used for generating editor lexing files", + filename = "mult-low", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="phys-dim", - ["status"]="todo", + category = "lua", + comment = "all messages need to be checked", + filename = "mult-mes", + loading = "mult-ini", + status = "pending", }, { - ["category"]="lua", - ["filename"]="regi-8859-1", - ["status"]="todo", + category = "lua", + comment = "used for generating editor lexing files", + filename = "mult-mps", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="regi-8859-10", - ["status"]="todo", + category = "lua", + comment = "used for generating editor lexing files", + filename = "mult-prm", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="regi-8859-11", - ["status"]="todo", + category = "lua", + filename = "node-acc", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-13", - ["status"]="todo", + category = "lua", + filename = "node-aux", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-14", - ["status"]="todo", + category = "lua", + filename = "node-bck", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-15", - ["status"]="todo", + category = "lua", + filename = "node-dir", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-16", - ["status"]="todo", + category = "lua", + filename = "node-ext", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-2", - ["status"]="todo", + category = "lua", + filename = "node-fin", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-3", - ["status"]="todo", + category = "lua", + filename = "node-fnt", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-4", - ["status"]="todo", + category = "lua", + filename = "node-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-5", - ["status"]="todo", + category = "lua", + filename = "node-inj", + loading = "font-lib", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-6", - ["status"]="todo", + category = "lua", + filename = "node-mig", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-7", - ["status"]="todo", + category = "lua", + filename = "node-pag", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-8", - ["status"]="todo", + category = "lua", + filename = "node-pro", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-8859-9", - ["status"]="todo", + category = "lua", + filename = "node-ref", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1250", - ["status"]="todo", + category = "lua", + filename = "node-res", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1251", - ["status"]="todo", + category = "lua", + filename = "node-rul", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1252", - ["status"]="todo", + category = "lua", + filename = "node-ser", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1253", - ["status"]="todo", + category = "lua", + filename = "node-shp", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1254", - ["status"]="todo", + category = "lua", + filename = "node-tex", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1255", - ["status"]="todo", + category = "lua", + filename = "node-tra", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1256", - ["status"]="todo", + category = "lua", + filename = "node-tsk", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1257", - ["status"]="todo", + category = "lua", + filename = "node-tst", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-cp1258", - ["status"]="todo", + category = "lua", + filename = "node-typ", + status = "todo", }, { - ["category"]="lua", - ["filename"]="regi-demo", - ["status"]="todo", + category = "lua", + comment = "will be extended when we have opened up pdf objects", + filename = "pack-obj", + loading = "pack-obj", + status = "okay", }, { - ["category"]="lua", - ["filename"]="regi-ini", - ["status"]="todo", + category = "lua", + filename = "pack-rul", + loading = "pack-rul", + status = "okay", }, { - ["category"]="lua", - ["filename"]="s-fonts-tables", - ["status"]="todo", + category = "lua", + filename = "page-flt", + status = "todo", }, { - ["category"]="lua", - ["filename"]="s-pre-71", - ["status"]="todo", + category = "lua", + filename = "page-ins", + status = "todo", }, { - ["category"]="lua", - ["filename"]="scrn-but", - ["status"]="todo", + category = "lua", + filename = "page-lin", + status = "todo", }, { - ["category"]="lua", - ["filename"]="scrn-fld", - ["status"]="todo", + category = "lua", + filename = "page-mix", + status = "todo", }, { - ["category"]="lua", - ["filename"]="scrn-hlp", - ["status"]="todo", + category = "lua", + filename = "page-pst", + status = "todo", }, { - ["category"]="lua", - ["filename"]="scrn-ini", - ["status"]="todo", + category = "lua", + filename = "page-str", + status = "todo", }, { - ["category"]="lua", - ["filename"]="scrn-pag", - ["status"]="todo", + category = "lua", + filename = "phys-dim", + loading = "phys-dim", + status = "okay", }, { - ["category"]="lua", - ["filename"]="scrn-ref", - ["status"]="todo", + category = "lua", + filename = "regi-8859-1", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="scrn-wid", - ["status"]="todo", + category = "lua", + filename = "regi-8859-10", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="scrp-cjk", - ["status"]="todo", + category = "lua", + filename = "regi-8859-11", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="scrp-eth", - ["status"]="todo", + category = "lua", + filename = "regi-8859-13", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="scrp-ini", - ["status"]="todo", + category = "lua", + filename = "regi-8859-14", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="sort-ini", - ["status"]="todo", + category = "lua", + filename = "regi-8859-15", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="sort-lan", - ["status"]="todo", + category = "lua", + filename = "regi-8859-16", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="spac-adj", - ["status"]="todo", + category = "lua", + filename = "regi-8859-2", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="spac-ali", - ["status"]="todo", + category = "lua", + filename = "regi-8859-3", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="spac-chr", - ["status"]="todo", + category = "lua", + filename = "regi-8859-4", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="spac-hor", - ["status"]="todo", + category = "lua", + filename = "regi-8859-5", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="spac-ver", - ["status"]="todo", + category = "lua", + filename = "regi-8859-6", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="status-mkiv", - ["status"]="todo", + category = "lua", + filename = "regi-8859-7", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-bkm", - ["status"]="todo", + category = "lua", + filename = "regi-8859-8", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-blk", - ["status"]="todo", + category = "lua", + filename = "regi-8859-9", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-con", - ["status"]="todo", + category = "lua", + filename = "regi-cp1250", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-doc", - ["status"]="todo", + category = "lua", + filename = "regi-cp1251", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-flt", - ["status"]="todo", + category = "lua", + filename = "regi-cp1252", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-ini", - ["status"]="todo", + category = "lua", + filename = "regi-cp1253", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-itm", - ["status"]="todo", + category = "lua", + filename = "regi-cp1254", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-lev", - ["status"]="todo", + category = "lua", + filename = "regi-cp1255", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-lst", - ["status"]="todo", + category = "lua", + filename = "regi-cp1256", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-mar", - ["status"]="todo", + category = "lua", + filename = "regi-cp1257", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-mat", - ["status"]="todo", + category = "lua", + filename = "regi-cp1258", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-not", - ["status"]="todo", + category = "lua", + comment = "just a demo file", + filename = "regi-demo", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-num", - ["status"]="todo", + category = "lua", + filename = "regi-ini", + loading = "regi-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="strc-pag", - ["status"]="todo", + category = "lua", + filename = "s-fonts-tables", + status = "todo", }, { - ["category"]="lua", - ["filename"]="strc-ref", - ["status"]="todo", + category = "lua", + filename = "s-pre-71", + status = "todo", }, { - ["category"]="lua", - ["filename"]="strc-reg", - ["status"]="todo", + category = "lua", + filename = "scrn-but", + status = "todo", }, { - ["category"]="lua", - ["filename"]="strc-rsc", - ["status"]="todo", + category = "lua", + filename = "scrn-fld", + status = "todo", }, { - ["category"]="lua", - ["filename"]="strc-syn", - ["status"]="todo", + category = "lua", + filename = "scrn-hlp", + status = "todo", }, { - ["category"]="lua", - ["filename"]="strc-tag", - ["status"]="todo", + category = "lua", + filename = "scrn-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="supp-box", - ["status"]="todo", + category = "lua", + filename = "scrn-pag", + status = "todo", }, { - ["category"]="lua", - ["filename"]="supp-ran", - ["status"]="todo", + category = "lua", + filename = "scrn-ref", + status = "todo", }, { - ["category"]="lua", - ["filename"]="symb-ini", - ["status"]="todo", + category = "lua", + filename = "scrn-wid", + status = "todo", }, { - ["category"]="lua", - ["filename"]="syst-aux", - ["status"]="todo", + category = "lua", + comment = "we can speed this up", + filename = "scrp-cjk", + loading = "scrp-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="syst-con", - ["status"]="todo", + category = "lua", + comment = "we can speed this up", + filename = "scrp-eth", + loading = "scrp-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="syst-lua", - ["status"]="todo", + category = "lua", + filename = "scrp-ini", + loading = "scrp-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="tabl-tbl", - ["status"]="todo", + category = "lua", + filename = "sort-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="tabl-xtb", - ["status"]="todo", + category = "lua", + filename = "sort-lan", + status = "todo", }, { - ["category"]="lua", - ["filename"]="task-ini", - ["status"]="todo", + category = "lua", + filename = "spac-adj", + status = "todo", }, { - ["category"]="lua", - ["filename"]="toks-ini", - ["status"]="todo", + category = "lua", + filename = "spac-ali", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-ctx", - ["status"]="todo", + category = "lua", + filename = "spac-chr", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-deb", - ["status"]="todo", + category = "lua", + filename = "spac-hor", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-fil", - ["status"]="todo", + category = "lua", + filename = "spac-ver", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-inf", - ["status"]="todo", + category = "lua", + filename = "status-mkiv", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-lmx", - ["status"]="todo", + category = "lua", + filename = "strc-bkm", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-log", - ["status"]="todo", + category = "lua", + filename = "strc-blk", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-pro", - ["status"]="todo", + category = "lua", + filename = "strc-con", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-set", - ["status"]="todo", + category = "lua", + filename = "strc-doc", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-tex", - ["status"]="todo", + category = "lua", + filename = "strc-flt", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-tim", - ["status"]="todo", + category = "lua", + filename = "strc-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="trac-vis", - ["status"]="todo", + category = "lua", + filename = "strc-itm", + status = "todo", }, { - ["category"]="lua", - ["filename"]="type-ini", - ["status"]="todo", + category = "lua", + filename = "strc-lev", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-bld", - ["status"]="todo", + category = "lua", + filename = "strc-lst", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-brk", - ["status"]="todo", + category = "lua", + filename = "strc-mar", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-cap", - ["status"]="todo", + category = "lua", + filename = "strc-mat", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-cln", - ["status"]="todo", + category = "lua", + filename = "strc-not", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-dig", - ["status"]="todo", + category = "lua", + filename = "strc-num", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-dir", - ["status"]="todo", + category = "lua", + filename = "strc-pag", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-ini", - ["status"]="todo", + category = "lua", + filename = "strc-ref", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-itc", - ["status"]="todo", + category = "lua", + filename = "strc-reg", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-krn", - ["status"]="todo", + category = "lua", + filename = "strc-rsc", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-mar", - ["status"]="todo", + category = "lua", + filename = "strc-syn", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-pag", - ["status"]="todo", + category = "lua", + filename = "strc-tag", + status = "todo", }, { - ["category"]="lua", - ["filename"]="typo-par", - ["status"]="todo", + category = "lua", + filename = "supp-box", + loading = "supp-box", + status = "okay", }, { - ["category"]="lua", - ["filename"]="typo-prc", - ["status"]="todo", + category = "lua", + filename = "supp-ran", + loading = "supp-ran", + status = "okay", }, { - ["category"]="lua", - ["filename"]="typo-rep", - ["status"]="todo", + category = "lua", + filename = "symb-ini", + loading = "symb-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="typo-spa", - ["status"]="todo", + category = "lua", + comment = "there will be more in here", + filename = "syst-aux", + loading = "syst-aux", + status = "okay", }, { - ["category"]="lua", - ["filename"]="unic-ini", - ["status"]="todo", + category = "lua", + comment = "do some tests with speedups (sprint)", + filename = "syst-con", + loading = "syst-con", + status = "pending", }, { - ["category"]="lua", - ["filename"]="util-deb", - ["status"]="todo", + category = "lua", + comment = "do some tests with speedups (less tokens)", + filename = "syst-lua", + loading = "syst-lua", + status = "pending", }, { - ["category"]="lua", - ["filename"]="util-dim", - ["status"]="todo", + category = "lua", + filename = "tabl-tbl", + loading = "tabl-tbl", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-fmt", - ["status"]="todo", + category = "lua", + comment = "work in progress", + filename = "tabl-xtb", + loading = "tabl-xtb", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-lua", - ["status"]="todo", + category = "lua", + comment = "we need a well defined defintion moment", + filename = "task-ini", + loading = "task-ini", + status = "pending", }, { - ["category"]="lua", - ["filename"]="util-mrg", - ["status"]="todo", + category = "lua", + filename = "toks-ini", + status = "todo", }, { - ["category"]="lua", - ["filename"]="util-pck", - ["status"]="todo", + category = "lua", + comment = "must be applied in more places", + filename = "trac-ctx", + loading = "trac-ctx", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-prs", - ["status"]="todo", + category = "lua", + filename = "trac-deb", + loading = "trac-deb", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-seq", - ["status"]="todo", + category = "lua", + comment = "for the moment somewhat private", + filename = "trac-fil", + loading = "never", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-sta", - ["status"]="todo", + category = "lua", + filename = "trac-inf", + loading = "luat-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-sto", - ["status"]="todo", + category = "lua", + comment = "will be redone and extended", + filename = "trac-lmx", + loading = "trac-lmx", + status = "pending", }, { - ["category"]="lua", - ["filename"]="util-str", - ["status"]="todo", + category = "lua", + filename = "trac-log", + loading = "luat-lib", + status = "okay", }, { - ["category"]="lua", - ["filename"]="util-tab", - ["status"]="todo", + category = "lua", + comment = "experimental code, will be redone when lua 5.2", + filename = "trac-pro", + loading = "luat-lib", + status = "pending", }, { - ["category"]="lua", - ["filename"]="x-asciimath", - ["status"]="todo", + category = "lua", + comment = "some code can better be in util-set", + filename = "trac-set", + loading = "luat-lib", + status = "pending", }, { - ["category"]="lua", - ["filename"]="x-calcmath", - ["status"]="todo", + category = "lua", + filename = "trac-tex", + loading = "trac-tex", + status = "okay", }, { - ["category"]="lua", - ["filename"]="x-cals", - ["status"]="todo", + category = "lua", + filename = "trac-tim", + loading = "on demand", + status = "okay", }, { - ["category"]="lua", - ["filename"]="x-chemml", - ["status"]="todo", + category = "lua", + filename = "trac-vis", + loading = "trac-vis", + status = "okay", }, { - ["category"]="lua", - ["filename"]="x-ct", - ["status"]="todo", + category = "lua", + filename = "type-ini", + loading = "type-ini", + status = "okay", }, { - ["category"]="lua", - ["filename"]="x-ldx", - ["status"]="todo", + category = "lua", + filename = "typo-bld", + status = "todo", }, { - ["category"]="lua", - ["filename"]="x-mathml", - ["status"]="todo", + category = "lua", + filename = "typo-brk", + status = "todo", }, - }, - ["metafun"]={ { - ["category"]="mpiv", - ["comment"]="maybe more delayed loading", - ["filename"]="metafun", - ["status"]="okay", + category = "lua", + filename = "typo-cap", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-base", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-cln", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-tool", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-dig", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-mlib", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-dir", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="sort of obsolete", - ["filename"]="mp-core", - ["status"]="okay", + category = "lua", + filename = "typo-ini", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="maybe some nicer synonyms", - ["filename"]="mp-page", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-itc", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-butt", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-krn", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-shap", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-mar", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-grph", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-pag", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-grid", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-par", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="a hack anyway", - ["filename"]="mp-form", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-prc", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-figs", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-rep", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-func", - ["loading"]="always", - ["status"]="okay", + category = "lua", + filename = "typo-spa", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-text", - ["loading"]="demand", - ["status"]="todo", + category = "lua", + filename = "unic-ini", + loading = "unic-ini", + status = "okay", }, { - ["category"]="mpiv", - ["filename"]="mp-crop", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-deb", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="follows m-chart", - ["filename"]="mp-char", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-dim", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="follows m-steps", - ["filename"]="mp-step", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-fmt", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["filename"]="mp-chem", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-lua", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="maybe some namespace changes", - ["filename"]="mp-abck", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-mrg", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="maybe some namespace changes", - ["filename"]="mp-apos", - ["loading"]="demand", - ["status"]="okay", + category = "lua", + filename = "util-pck", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mpiv", - ["comment"]="will be done when needed", - ["filename"]="mp-asnc", - ["loading"]="demand", - ["status"]="todo", + category = "lua", + filename = "util-prs", + loading = "luat-lib", + status = "todo", }, - }, - ["modules"]={ { - ["category"]="mkiv", - ["filename"]="m-barcodes", - ["status"]="todo", + category = "lua", + filename = "util-seq", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="m-chart", - ["status"]="todo", + category = "lua", + filename = "util-sta", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-chemic", - ["status"]="todo", + category = "lua", + filename = "util-sto", + loading = "luat-lib", + status = "todo", }, { - ["category"]="tex", - ["filename"]="m-cweb", - ["status"]="todo", + category = "lua", + filename = "util-str", + loading = "luat-lib", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-database", - ["status"]="todo", + category = "lua", + filename = "util-tab", + loading = "luat-lib", + status = "todo", }, { - ["category"]="tex", - ["filename"]="m-datastrc", - ["status"]="todo", + category = "lua", + filename = "x-asciimath", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-directives", - ["status"]="todo", + category = "lua", + filename = "x-calcmath", + status = "todo", }, { - ["category"]="tex", - ["filename"]="m-educat", - ["status"]="todo", + category = "lua", + filename = "x-cals", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-fields", - ["status"]="todo", + category = "lua", + filename = "x-chemml", + status = "todo", }, { - ["category"]="tex", - ["filename"]="m-format", - ["status"]="todo", + category = "lua", + filename = "x-ct", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-graph", - ["status"]="todo", + category = "lua", + filename = "x-ldx", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-ipsum", - ["status"]="todo", + category = "lua", + filename = "x-mathml", + status = "todo", }, + }, + metafun = { { - ["category"]="tex", - ["filename"]="m-layout", - ["status"]="todo", + category = "mpiv", + filename = "mp-base", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-logcategories", - ["status"]="todo", + category = "mpiv", + filename = "mp-tool", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-markdown", - ["status"]="todo", + category = "mpiv", + filename = "mp-mlib", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-mathcrap", - ["status"]="todo", + category = "mpiv", + comment = "sort of obsolete", + filename = "mp-core", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-mkii", - ["status"]="todo", + category = "mpiv", + comment = "maybe some nicer synonyms", + filename = "mp-page", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-mkivhacks", - ["status"]="todo", + category = "mpiv", + filename = "mp-butt", + loading = "always", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="m-morse", - ["status"]="todo", + category = "mpiv", + filename = "mp-shap", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="m-narrowtt", - ["status"]="todo", + category = "mpiv", + filename = "mp-grph", + loading = "always", + status = "okay", }, { - ["category"]="tex", - ["filename"]="m-newmat", - ["status"]="todo", + category = "mpiv", + filename = "mp-grid", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-ntb-to-xtb", - ["status"]="todo", + category = "mpiv", + comment = "a hack anyway", + filename = "mp-form", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-obsolete", - ["status"]="todo", + category = "mpiv", + filename = "mp-figs", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-oldfun", - ["status"]="todo", + category = "mpiv", + filename = "mp-func", + loading = "always", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-oldnum", - ["status"]="todo", + category = "mpiv", + filename = "mp-text", + loading = "on demand", + status = "todo", }, { - ["category"]="tex", - ["filename"]="m-pictex", - ["status"]="todo", + category = "mpiv", + filename = "mp-crop", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-pstricks", - ["status"]="todo", + category = "mpiv", + comment = "follows m-chart", + filename = "mp-char", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-punk", - ["status"]="todo", + category = "mpiv", + comment = "follows m-steps", + filename = "mp-step", + loading = "on demand", + status = "okay", }, { - ["category"]="tex", - ["filename"]="m-r", - ["status"]="todo", + category = "mpiv", + filename = "mp-chem", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-spreadsheet", - ["status"]="todo", + category = "mpiv", + comment = "maybe some namespace changes", + filename = "mp-abck", + loading = "on demand", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="m-steps", - ["status"]="todo", + category = "mpiv", + comment = "maybe some namespace changes", + filename = "mp-apos", + loading = "on demand", + status = "okay", }, { - ["category"]="tex", - ["filename"]="m-streams", - ["status"]="todo", + category = "mpiv", + comment = "will be done when needed", + filename = "mp-asnc", + loading = "on demand", + status = "todo", }, + }, + modules = { { - ["category"]="tex", - ["filename"]="m-subsub", - ["status"]="todo", + category = "mkiv", + comment = "best use m-zint instead", + filename = "m-barcodes", + loading = "module", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-timing", - ["status"]="todo", + category = "mkvi", + filename = "m-chart", + loading = "module", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-trackers", - ["status"]="todo", + category = "mkiv", + comment = "this is a placeholder (chemistry is built-in)", + filename = "m-chemic", + loading = "never", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="m-translate", - ["status"]="todo", + category = "tex", + filename = "m-cweb", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-units", - ["status"]="todo", + category = "mkiv", + filename = "m-database", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-visual", - ["status"]="todo", + category = "tex", + filename = "m-datastrc", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="m-zint", - ["status"]="todo", + category = "mkiv", + comment = "add-on for mtx-context", + filename = "m-directives", + loading = "on demand", + status = "okay", }, { - ["category"]="tex", - ["filename"]="s-abr-01", - ["status"]="todo", + category = "tex", + filename = "m-educat", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-abr-02", - ["status"]="todo", + category = "mkiv", + filename = "m-fields", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-abr-03", - ["status"]="todo", + category = "tex", + filename = "m-format", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-abr-04", - ["status"]="todo", + category = "mkiv", + filename = "m-graph", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-art-01", - ["status"]="todo", + category = "mkiv", + filename = "m-ipsum", + loading = "module", + status = "okay", }, { - ["category"]="tex", - ["filename"]="s-cdr-01", - ["status"]="todo", + category = "tex", + filename = "m-layout", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-def-01", - ["status"]="todo", + category = "mkiv", + comment = "add-on for mtx-context", + filename = "m-logcategories", + loading = "on demand", + status = "okay", }, { - ["category"]="tex", - ["filename"]="s-faq-00", - ["status"]="todo", + category = "mkiv", + filename = "m-markdown", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-faq-01", - ["status"]="todo", + category = "mkiv", + filename = "m-mathcrap", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-faq-02", - ["status"]="todo", + category = "mkiv", + filename = "m-mkii", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-faq-03", - ["status"]="todo", + category = "mkiv", + filename = "m-mkivhacks", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-10", - ["status"]="todo", + category = "mkvi", + filename = "m-morse", + loading = "module", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-11", - ["status"]="todo", + category = "tex", + filename = "m-narrowtt", + loading = "module", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-20", - ["status"]="todo", + category = "tex", + filename = "m-newmat", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-21", - ["status"]="todo", + category = "mkiv", + filename = "m-ntb-to-xtb", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-23", - ["status"]="todo", + category = "mkiv", + filename = "m-obsolete", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-24", - ["status"]="todo", + category = "mkiv", + filename = "m-oldfun", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-26", - ["status"]="todo", + category = "mkiv", + filename = "m-oldnum", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-28", - ["status"]="todo", + category = "tex", + filename = "m-pictex", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-29", - ["status"]="todo", + category = "mkiv", + filename = "m-pstricks", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-30", - ["status"]="todo", + category = "mkiv", + comment = "keep an eye on changes in lua code", + filename = "m-punk", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-31", - ["status"]="todo", + category = "tex", + filename = "m-r", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fnt-32", - ["status"]="todo", + category = "mkiv", + filename = "m-spreadsheet", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-fonts-missing", - ["status"]="todo", + category = "mkvi", + filename = "m-steps", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-fonts-tables", - ["status"]="todo", + category = "tex", + filename = "m-streams", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="s-inf-01", - ["status"]="todo", + category = "tex", + filename = "m-subsub", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-inf-02", - ["status"]="todo", + category = "mkiv", + filename = "m-timing", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-inf-03", - ["status"]="todo", + category = "mkiv", + comment = "add-on for mtx-context", + filename = "m-trackers", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-inf-04", - ["status"]="todo", + category = "mkiv", + filename = "m-translate", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-lan-03", - ["status"]="todo", + category = "mkiv", + filename = "m-units", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-lan-04", - ["status"]="todo", + category = "mkiv", + filename = "m-visual", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-mag-01", - ["status"]="todo", + category = "mkiv", + filename = "m-zint", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="s-map-10", - ["status"]="todo", + category = "tex", + filename = "s-abr-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mat-10", - ["status"]="todo", + category = "tex", + filename = "s-abr-02", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mat-11", - ["status"]="todo", + category = "tex", + filename = "s-abr-03", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mat-12", - ["status"]="todo", + category = "tex", + filename = "s-abr-04", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mod-00", - ["status"]="todo", + category = "mkiv", + filename = "s-art-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mod-01", - ["status"]="todo", + category = "tex", + filename = "s-cdr-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-mod-02", - ["status"]="todo", + category = "mkiv", + filename = "s-def-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-phy-01", - ["status"]="todo", + category = "tex", + filename = "s-faq-00", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-00", - ["status"]="todo", + category = "tex", + filename = "s-faq-01", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-01", - ["status"]="todo", + category = "tex", + filename = "s-faq-02", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-02", - ["status"]="todo", + category = "tex", + filename = "s-faq-03", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-03", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-10", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-04", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-11", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-05", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-20", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-06", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-21", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-07", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-23", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-08", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-24", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-09", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-26", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-10", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-28", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-11", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-29", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-12", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-30", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-13", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-31", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-14", - ["status"]="todo", + category = "mkiv", + filename = "s-fnt-32", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-15", - ["status"]="todo", + category = "mkiv", + filename = "s-fonts-missing", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-16", - ["status"]="todo", + category = "mkiv", + filename = "s-fonts-tables", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-17", - ["status"]="todo", + category = "mkvi", + filename = "s-inf-01", + status = "okay", }, { - ["category"]="tex", - ["filename"]="s-pre-18", - ["status"]="todo", + category = "mkiv", + filename = "s-inf-02", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-19", - ["status"]="todo", + category = "mkiv", + filename = "s-inf-03", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-22", - ["status"]="todo", + category = "mkiv", + filename = "s-inf-04", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-23", - ["status"]="todo", + category = "mkiv", + filename = "s-lan-03", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-26", - ["status"]="todo", + category = "mkiv", + filename = "s-lan-04", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-27", - ["status"]="todo", + category = "tex", + filename = "s-mag-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-pre-30", - ["status"]="todo", + category = "mkiv", + filename = "s-map-10", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-50", - ["status"]="todo", + category = "mkiv", + filename = "s-mat-10", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-pre-60", - ["status"]="todo", + category = "mkiv", + filename = "s-mat-11", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-61", - ["status"]="todo", + category = "mkiv", + filename = "s-mat-12", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-62", - ["status"]="todo", + category = "mkiv", + filename = "s-mod-00", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-63", - ["status"]="todo", + category = "mkiv", + filename = "s-mod-01", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-64", - ["status"]="todo", + category = "mkiv", + filename = "s-mod-02", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-66", - ["status"]="todo", + category = "mkiv", + filename = "s-phy-01", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-67", - ["status"]="todo", + category = "tex", + filename = "s-pre-00", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-68", - ["status"]="todo", + category = "tex", + filename = "s-pre-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-pre-69", - ["status"]="todo", + category = "tex", + filename = "s-pre-02", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-pre-70", - ["status"]="todo", + category = "tex", + filename = "s-pre-03", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-pre-71", - ["status"]="todo", + category = "tex", + filename = "s-pre-04", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-93", - ["status"]="todo", + category = "tex", + filename = "s-pre-05", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-pre-96", - ["status"]="todo", + category = "tex", + filename = "s-pre-06", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-ptj-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-07", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-reg-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-08", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="s-set-31", - ["status"]="todo", + category = "tex", + filename = "s-pre-09", + status = "todo", }, { - ["category"]="tex", - ["filename"]="s-syn-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-10", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-asciimath", - ["status"]="todo", + category = "tex", + filename = "s-pre-11", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-calcmath", - ["status"]="todo", + category = "tex", + filename = "s-pre-12", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-cals", - ["status"]="todo", + category = "tex", + filename = "s-pre-13", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-chemml", - ["status"]="todo", + category = "tex", + filename = "s-pre-14", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-ct", - ["status"]="todo", + category = "tex", + filename = "s-pre-15", + status = "todo", }, { - ["category"]="tex", - ["filename"]="x-dir-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-16", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-dir-05", - ["status"]="todo", + category = "tex", + filename = "s-pre-17", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-entities", - ["status"]="todo", + category = "tex", + filename = "s-pre-18", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-foxet", - ["status"]="todo", + category = "tex", + filename = "s-pre-19", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-ldx", - ["status"]="todo", + category = "tex", + filename = "s-pre-22", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-mathml", - ["status"]="todo", + category = "tex", + filename = "s-pre-23", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-newmml", - ["status"]="todo", + category = "tex", + filename = "s-pre-26", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-pfs-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-27", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-physml", - ["status"]="todo", + category = "mkiv", + filename = "s-pre-30", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-res-01", - ["status"]="todo", + category = "tex", + filename = "s-pre-50", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-res-50", - ["status"]="todo", + category = "mkiv", + filename = "s-pre-60", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-set-11", - ["status"]="todo", + category = "tex", + filename = "s-pre-61", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-set-12", - ["status"]="todo", + category = "tex", + filename = "s-pre-62", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-udhr", - ["status"]="todo", + category = "tex", + filename = "s-pre-63", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="x-xtag", - ["status"]="todo", + category = "tex", + filename = "s-pre-64", + status = "todo", }, - }, - ["optional"]={ { - ["category"]="mkvi", - ["filename"]="tabl-xnt", - ["status"]="okay", + category = "tex", + filename = "s-pre-66", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="back-swf", - ["status"]="todo", + category = "tex", + filename = "s-pre-67", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="back-u3d", - ["status"]="todo", + category = "tex", + filename = "s-pre-68", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="bxml-apa", - ["status"]="todo", + category = "mkiv", + filename = "s-pre-69", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="catc-xml", - ["status"]="todo", + category = "mkiv", + filename = "s-pre-70", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="colo-run", - ["status"]="todo", + category = "mkiv", + filename = "s-pre-71", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-cs", - ["status"]="todo", + category = "tex", + filename = "s-pre-93", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-de", - ["status"]="todo", + category = "tex", + filename = "s-pre-96", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-en", - ["status"]="todo", + category = "tex", + filename = "s-ptj-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-fr", - ["status"]="todo", + category = "mkiv", + filename = "s-reg-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-gb", - ["status"]="todo", + category = "mkiv", + filename = "s-set-31", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-it", - ["status"]="todo", + category = "tex", + filename = "s-syn-01", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-new", - ["status"]="todo", + category = "mkiv", + filename = "x-asciimath", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="cont-nl", - ["status"]="todo", + category = "mkiv", + filename = "x-calcmath", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-pe", - ["status"]="todo", + category = "mkiv", + filename = "x-cals", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="cont-ro", - ["status"]="todo", + category = "mkiv", + filename = "x-chemml", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="font-run", - ["status"]="todo", + category = "mkiv", + filename = "x-ct", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="font-sol", - ["status"]="todo", + category = "tex", + filename = "x-dir-01", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="font-var", - ["status"]="todo", + category = "mkiv", + filename = "x-dir-05", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="lxml-ctx", - ["status"]="todo", + category = "mkiv", + filename = "x-entities", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="meta-pdh", - ["status"]="todo", + category = "mkiv", + filename = "x-foxet", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="mult-prm", - ["status"]="todo", + category = "mkiv", + filename = "x-ldx", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="node-pag", - ["status"]="todo", + category = "mkiv", + filename = "x-mathml", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="page-run", - ["status"]="todo", + category = "mkiv", + filename = "x-newmml", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="ppchtex", - ["status"]="todo", + category = "mkiv", + comment = "pfsense xml configuration rendering", + filename = "x-pfs-01", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="spac-adj", - ["status"]="todo", + category = "mkiv", + filename = "x-physml", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="strc-con", - ["status"]="todo", + category = "mkiv", + filename = "x-res-01", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="strc-des", - ["status"]="todo", + category = "mkiv", + filename = "x-res-50", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="strc-enu", - ["status"]="todo", + category = "mkiv", + filename = "x-set-11", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="strc-lnt", - ["status"]="todo", + category = "mkiv", + filename = "x-set-12", + status = "todo", }, { - ["category"]="mkvi", - ["filename"]="strc-lst", - ["status"]="todo", + category = "mkiv", + filename = "x-udhr", + status = "okay", }, { - ["category"]="mkvi", - ["filename"]="strc-not", - ["status"]="todo", + category = "mkiv", + filename = "x-xtag", + status = "todo", }, + }, + optional = { { - ["category"]="mkiv", - ["filename"]="strc-syn", - ["status"]="todo", + category = "mkiv", + filename = "bxml-apa", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="supp-vis", - ["status"]="todo", + category = "mkiv", + filename = "colo-run", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="symb-run", - ["status"]="todo", + category = "mkiv", + comment = "always needs some work", + filename = "cont-new", + loading = "runtime", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="trac-vis", - ["status"]="todo", + category = "mkiv", + filename = "font-run", + loading = "on demand", + status = "todo", }, { - ["category"]="mkiv", - ["filename"]="type-def", - ["status"]="todo", + category = "mkiv", + filename = "lxml-ctx", + status = "okay", + comment = "this is an experimental module", }, { - ["category"]="mkiv", - ["filename"]="type-fbk", - ["status"]="todo", + category = "mkiv", + filename = "meta-pdh", + loading = "never", + status = "okay", + comment = "this is historic code that we keep around", }, { - ["category"]="mkiv", - ["filename"]="type-lua", - ["status"]="todo", + category = "mkiv", + filename = "mult-prm", + loading = "never", + status = "okay", + comment = "this is just a helper for generating files", }, { - ["category"]="mkiv", - ["filename"]="type-one", - ["status"]="todo", + category = "mkiv", + filename = "page-run", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-otf", - ["status"]="todo", + category = "mkiv", + filename = "spac-adj", + loading = "never", + status = "obsolete", }, { - ["category"]="mkiv", - ["filename"]="type-run", - ["status"]="todo", + category = "mkiv", + filename = "supp-vis", + loading = "never", + status = "obsolete", + comment = "replaced by a more modern variant", }, { - ["category"]="mkiv", - ["filename"]="type-siz", - ["status"]="todo", + category = "mkiv", + filename = "symb-run", + loading = "on demand", + status = "okay", }, { - ["category"]="mkiv", - ["filename"]="type-tmf", - ["status"]="todo", + category = "mkiv", + filename = "type-run", + loading = "on demand", + status = "todo", }, }, - ["resources"]={ - { - ["category"]="ori", - ["filename"]="cont-sys", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-base", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-characters", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-debug", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-error", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-fonttest", - ["status"]="todo", - }, - { - ["category"]="lmx", - ["filename"]="context-help", - ["status"]="todo", - }, + resources = { { - ["category"]="lmx", - ["filename"]="context-timing", - ["status"]="todo", + category = "ori", + comment = "template for a user configuration file (with suffix mkiv)", + filename = "cont-sys", + loading = "runtime", + status = "okay", }, { - ["category"]="pdf", - ["filename"]="context-version", - ["status"]="todo", + category = "lmx", + filename = "context-base", + status = "todo", }, { - ["category"]="png", - ["filename"]="context-version", - ["status"]="todo", + category = "lmx", + filename = "context-characters", + status = "todo", }, { - ["category"]="css", - ["filename"]="context", - ["status"]="todo", + category = "lmx", + filename = "context-debug", + status = "todo", }, { - ["category"]="lus", - ["filename"]="context", - ["status"]="todo", + category = "lmx", + filename = "context-error", + status = "todo", }, { - ["category"]="rme", - ["filename"]="context", - ["status"]="todo", + category = "lmx", + filename = "context-fonttest", + status = "todo", }, { - ["category"]="todo", - ["filename"]="context", - ["status"]="todo", + category = "lmx", + filename = "context-help", + status = "todo", }, { - ["category"]="ctx", - ["filename"]="core-ctx", - ["status"]="todo", + category = "lmx", + filename = "context-timing", + status = "todo", }, { - ["category"]="css", - ["filename"]="export-example", - ["status"]="todo", + category = "pdf", + filename = "context-version", + status = "todo", }, { - ["category"]="rng", - ["filename"]="export-example", - ["status"]="todo", + category = "png", + filename = "context-version", + status = "todo", }, { - ["category"]="tex", - ["filename"]="export-example", - ["status"]="todo", + category = "css", + comment = "layout specification for debug and error pages and web services", + filename = "context", + status = "okay", }, { - ["category"]="xml", - ["filename"]="lang-all", - ["status"]="todo", + category = "rme", + comment = "readme file", + filename = "context", + status = "okay", }, { - ["category"]="xml", - ["filename"]="lpdf-pda", - ["status"]="todo", + category = "ctx", + comment = "example of a ctx file (for mtx-context)", + filename = "core-ctx", + status = "okay", }, { - ["category"]="xml", - ["filename"]="lpdf-pdx", - ["status"]="todo", + category = "css", + filename = "export-example", + status = "todo", }, { - ["category"]="lus", - ["filename"]="metatex", - ["status"]="todo", + category = "rng", + filename = "export-example", + status = "todo", }, { - ["category"]="tex", - ["filename"]="metatex", - ["status"]="todo", + category = "tex", + filename = "export-example", + status = "todo", }, { - ["category"]="rlx", - ["filename"]="rlxcache", - ["status"]="todo", + category = "xml", + comment = "this file is auto-generated by mtx-language", + filename = "lang-all", + status = "okay", }, { - ["category"]="rlx", - ["filename"]="rlxtools", - ["status"]="todo", + category = "xml", + filename = "lpdf-pda", + status = "todo", }, { - ["category"]="ctx", - ["filename"]="s-mod", - ["status"]="todo", + category = "xml", + filename = "lpdf-pdx", + status = "todo", }, { - ["category"]="pdf", - ["filename"]="status-files", - ["status"]="todo", + category = "rlx", + filename = "rlxcache", + status = "todo", }, { - ["category"]="pdf", - ["filename"]="status-lua", - ["status"]="todo", + category = "rlx", + filename = "rlxtools", + status = "todo", }, { - ["category"]="tex", - ["filename"]="status-mkiv", - ["status"]="todo", + category = "ctx", + filename = "s-mod", + status = "todo", }, { - ["category"]="tex", - ["filename"]="supp-mis", - ["status"]="todo", + category = "pdf", + filename = "status-files", + status = "todo", }, { - ["category"]="tex", - ["filename"]="supp-mpe", - ["status"]="todo", + category = "pdf", + filename = "status-lua", + status = "todo", }, { - ["category"]="tex", - ["filename"]="supp-pdf", - ["status"]="todo", + category = "tex", + filename = "status-mkiv", + status = "todo", }, { - ["category"]="xsd", - ["filename"]="x-chemml", - ["status"]="todo", + category = "xsd", + filename = "x-chemml", + status = "todo", }, { - ["category"]="xsd", - ["filename"]="x-contml", - ["status"]="todo", + category = "xsd", + filename = "x-contml", + status = "todo", }, { - ["category"]="rng", - ["filename"]="x-corres", - ["status"]="todo", + category = "rng", + filename = "x-corres", + status = "todo", }, { - ["category"]="dtd", - ["filename"]="x-fig-00", - ["status"]="todo", + category = "dtd", + filename = "x-fig-00", + status = "todo", }, { - ["category"]="xsd", - ["filename"]="x-fig-00", - ["status"]="todo", + category = "xsd", + filename = "x-fig-00", + status = "todo", }, { - ["category"]="ctx", - ["filename"]="x-ldx", - ["status"]="todo", + category = "ctx", + filename = "x-ldx", + status = "todo", }, { - ["category"]="xsd", - ["filename"]="x-mathml", - ["status"]="todo", + category = "xsd", + filename = "x-mathml", + status = "todo", }, { - ["category"]="xsl", - ["filename"]="x-om2cml", - ["status"]="todo", + category = "xsl", + filename = "x-om2cml", + status = "todo", }, { - ["category"]="xsl", - ["filename"]="x-openmath", - ["status"]="todo", + category = "xsl", + filename = "x-openmath", + status = "todo", }, { - ["category"]="ctx", - ["filename"]="x-pfsense", - ["status"]="todo", + category = "ctx", + comment = "runner for x-pfs-01", + filename = "x-pfsense", + status = "okay", }, { - ["category"]="xsd", - ["filename"]="x-physml", - ["status"]="todo", + category = "xsd", + filename = "x-physml", + status = "todo", }, { - ["category"]="xsl", - ["filename"]="x-sm2om", - ["status"]="todo", + category = "xsl", + filename = "x-sm2om", + status = "todo", }, }, } diff --git a/tex/context/base/status-mkiv.tex b/tex/context/base/status-mkiv.tex index 6e27a931a..c221b1d55 100644 --- a/tex/context/base/status-mkiv.tex +++ b/tex/context/base/status-mkiv.tex @@ -1,3 +1,5 @@ +\usemodule[abr-02] + \setupbodyfont [dejavu,9pt] @@ -7,8 +9,8 @@ \setuplayout [width=middle, height=middle, - backspace=1cm, - topspace=1cm, + backspace=.5cm, + topspace=.5cm, footer=0pt, header=1.25cm] @@ -28,6 +30,8 @@ \starttext +% logs.report (immediate) versus logs.messenger (in flow) + \starttitle[title=Todo] \startitemize[packed] @@ -35,8 +39,6 @@ will be done when we're satisfied with one scheme \stopitem \startitem there will be additional columns in the table, like for namespace so we need another round of checking then \stopitem - \startitem the imp modules are not in the list and need checking too \stopitem - \startitem the s, x, m modules will be checked, redone and reorganized \stopitem \startitem the lua code will be cleaned up upgraded as some is quite old and experimental \stopitem \startitem we need a proper dependency tree and better defined loading order \stopitem @@ -44,7 +46,6 @@ \startitem we need to check what messages are gone (i.e.\ clean up mult-mes) \stopitem \startitem some commands can go from mult-def (and the xml file) \stopitem \startitem check for setuphandler vs simplesetuphandler \stopitem - \startitem all showcomposition etc can go (we can redo that in lua if needed) \stopitem \startitem for the moment we will go for \type {xxxx_} namespaces that (mostly) match the filename but later we can replace these by longer names (via a script) so module writers should {\bf not} use the core commands with \type{_} in the @@ -54,14 +55,37 @@ \startitem consider moving setups directly to lua end (e.g. in characterspacing, breakpoint, bitmaps etc.) \stopitem \startitem more local temporary \type {\temp...} will become \type {\p_...} \stopitem \startitem check all ctxlua calls for ctxcommand \stopitem - \startitem rename all those \type {\current<whatever>}s in strc. + \startitem rename all those \type {\current<whatever>}s in strc \stopitem + \startitem check \type {option} vs \type {options} \stopitem + \startitem check \type {type} vs \type {kind} \stopitem + \startitem check \type {label} vs \type {name} vs \type {tag} \stopitem + \startitem check \type {limop}, different limops should should be classes \stopitem + \startitem too many positions in simple files (itemize etc) \stopitem + \startitem math domains/dictionaries \stopitem + \startitem xtables don't span vertically with multilines (yet) \stopitem + \startitem notes in mixed columns \stopitem + \startitem floats in mixed columns \stopitem + \startitem check return values \type {os.execute} \stopitem + \startitem more r, d, k in xml code \stopitem + \startitem mathml, more in \LUA \stopitem + \startitem style: font-size, font, color handling in \HTML\ (lxml-css) \stopitem + \startitem a \type {\name {A.B.C DEF}} auto-nobreakspace \stopitem + \startitem redo \CWEB\ module with \LUA \stopitem + \startitem maybe move characters.blocks to its own file \stopitem + \startitem more local context = context in \LUA\ files \stopitem + \startitem check and optimize all storage.register and locals (cosmetics) \stopitem + \startitem check all used modules in \LUA\ (and local them) \stopitem + \startitem environment and basic lua helpers are now spread over too many files \stopitem + \startitem isolate tracers and showers \stopitem + \startitem check all possible usage of ctxcommand \stopitem \stopitemize \stoptitle -\definehighlight[notabenered] [color=darkred, style=bold] -\definehighlight[notabeneblue] [color=darkblue, style=bold] -\definehighlight[notabeneyellow][color=darkyellow,style=bold] +\definehighlight[notabenered] [color=darkred, style=bold] +\definehighlight[notabeneblue] [color=darkblue, style=bold] +\definehighlight[notabeneyellow] [color=darkyellow, style=bold] +\definehighlight[notabenemagenta][color=darkmagenta,style=bold] \startluacode @@ -73,7 +97,7 @@ "symb", "grph", "anch", "luat", "mult", "back", "node", "meta", "norm", "catc", "cldf", "file", "char", "core", "layo", "trac", "cont", "regi", "enco", "hand", "unic", "sort", "blob", "type", "scrp", "prop", "chem", "bibl", "task", - "module", "mp", + "whatever", "mp", "s", "x", "m", "mtx", } local specialcategories = { @@ -81,19 +105,42 @@ } local what = { - "core", "lua", "optional", "implementations", "extra", "extras", "metafun", "modules", "resources" + "main", "core", "lua", "optional", "implementations", "extra", "extras", "metafun", "modules", "resources" } + local totaltodo = 0 + local totalpending = 0 + local totalobsolete = 0 + local totalloaded = 0 + + local function summary(nofloaded,noftodo,nofpending,nofobsolete) + + local nofdone = nofloaded - noftodo - nofpending - nofobsolete + + context.starttabulate { "|B|r|" } + context.HL() + context.NC() context("done") context.NC() context(nofdone) context.NC() context.NR() + context.NC() context("todo") context.NC() context(noftodo) context.NC() context.NR() + context.NC() context("pending") context.NC() context(nofpending) context.NC() context.NR() + context.NC() context("obsolete") context.NC() context(nofobsolete) context.NC() context.NR() + context.HL() + context.NC() context("loaded") context.NC() context(nofloaded) context.NC() context.NR() + context.HL() + context.stoptabulate() + + end + if coremodules then local function tabelize(loaded,what) if loaded then - local noftodo = 0 - local nofdelayed = 0 - local nofloaded = #loaded - local categories = { } + local noftodo = 0 + local nofpending = 0 + local nofobsolete = 0 + local nofloaded = #loaded + local categories = { } for k, v in next, valid do categories[k] = { } @@ -102,7 +149,7 @@ for i=1,nofloaded do local l = loaded[i] l.order = i - local category = string.match(l.filename,"([^%-]+)%-") or "module" + local category = string.match(l.filename,"([^%-]+)%-") or "whatever" local c = categories[category] if c then c[#c+1] = l @@ -119,10 +166,11 @@ context.starttitle { title = string.format("%s: %s",what,k) } - context.starttabulate { "|Tr|Tlw(12em)|Tl|Tlw(6em)|l|l|l|p|" } + context.starttabulate { "|Tr|Tlw(3em)|Tlw(12em)|Tlw(12em)|Tlw(4em)|Tl|Tl|Tl|Tp|" } context.NC() context.bold("order") + context.NC() context.bold("kind") context.NC() context.bold("file") - context.NC() context.bold("mark") + context.NC() context.bold("loading") context.NC() context.bold("status") context.NC() context.bold("reference") context.NC() context.bold("manual") @@ -134,8 +182,9 @@ local module = loaded[i] local status = module.status local category = module.category - context.NC() context(module.order) - context.NC() context(module.filename) + local filename = module.filename + context.NC() + context(module.order) context.NC() if specialcategories[category] then context.notabeneblue(category) @@ -143,12 +192,23 @@ context(category) end context.NC() + if #filename>20 then + context(string.sub(filename,1,18) .. "..") + else + context(filename) + end + context.NC() + context(module.loading) + context.NC() if status == "todo" then context.notabenered(status) noftodo = noftodo + 1 - elseif status == "delayed" then + elseif status == "pending" then context.notabeneyellow(status) - nofdelayed = nofdelayed + 1 + nofpending = nofpending + 1 + elseif status == "obsolete" then + context.notabenemagenta(status) + nofobsolete = nofobsolete + 1 else context(status) end @@ -168,20 +228,15 @@ context.starttitle { title = string.format("summary of %s modules",what) } - local nofdone = nofloaded - noftodo - nofdelayed - - context.starttabulate { "|B|r|" } - context.HL() - context.NC() context("done") context.NC() context(nofdone) context.NC() context.NR() - context.NC() context("todo") context.NC() context(noftodo) context.NC() context.NR() - context.NC() context("delayed") context.NC() context(nofdelayed) context.NC() context.NR() - context.HL() - context.NC() context("loaded") context.NC() context(nofloaded) context.NC() context.NR() - context.HL() - context.stoptabulate() + summary(nofloaded,noftodo,nofpending,nofobsolete) context.stoptitle() + totaltodo = totaltodo + noftodo + totalpending = totalpending + nofpending + totalobsolete = totalobsolete + nofobsolete + totalloaded = totalloaded + nofloaded + end end @@ -203,6 +258,12 @@ -- -- context.stoptitle() + context.starttitle { title = string.format("summary of all",what) } + + summary(totalloaded,totaltodo,totalpending,totalobsolete) + + context.stoptitle() + context.starttitle { title = "messy namespaces" } local namespaces = dofile("status-namespaces.lua") diff --git a/tex/context/base/strc-doc.lua b/tex/context/base/strc-doc.lua index 758c7f0e9..618be1146 100644 --- a/tex/context/base/strc-doc.lua +++ b/tex/context/base/strc-doc.lua @@ -22,7 +22,7 @@ local max, min = math.max, math.min local allocate, mark, accesstable = utilities.storage.allocate, utilities.storage.mark, utilities.tables.accesstable local catcodenumbers = catcodes.numbers -local ctxcatcodes = tex.ctxcatcodes +local ctxcatcodes = catcodenumbers.ctxcatcodes local variables = interfaces.variables local v_last = variables.last diff --git a/tex/context/base/strc-ini.lua b/tex/context/base/strc-ini.lua index 78efcad81..0973c8db7 100644 --- a/tex/context/base/strc-ini.lua +++ b/tex/context/base/strc-ini.lua @@ -27,10 +27,12 @@ local type, next, tonumber = type, next, tonumber local settings_to_array, settings_to_hash = utilities.parsers.settings_to_array, utilities.parsers.settings_to_hash local allocate = utilities.storage.allocate -local ctxcatcodes = tex.ctxcatcodes -local xmlcatcodes = tex.xmlcatcodes -local notcatcodes = tex.notcatcodes -local txtcatcodes = tex.txtcatcodes +local catcodenumbers = catcodes.numbers -- better use the context(...) way to switch + +local ctxcatcodes = catcodenumbers.ctxcatcodes +local xmlcatcodes = catcodenumbers.xmlcatcodes +local notcatcodes = catcodenumbers.notcatcodes +local txtcatcodes = catcodenumbers.txtcatcodes local trace_processors = false local report_processors = logs.reporter("processors","structure") diff --git a/tex/context/base/strc-mar.lua b/tex/context/base/strc-mar.lua index 89fc66b01..c7ef2d4e1 100644 --- a/tex/context/base/strc-mar.lua +++ b/tex/context/base/strc-mar.lua @@ -692,6 +692,6 @@ commands.fetchtwomarks = marks.fetchtwomarks commands.fetchallmarks = marks.fetchallmarks function commands.doifelsemarking(str) -- can be shortcut - commands.testcase(marks.exists(str)) + commands.doifelse(marks.exists(str)) end diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua index 16cb91373..626328b6d 100644 --- a/tex/context/base/strc-ref.lua +++ b/tex/context/base/strc-ref.lua @@ -416,7 +416,9 @@ function references.urls.define(name,url,file,description) end end -local pushcatcodes, popcatcodes, txtcatcodes = context.pushcatcodes, context.popcatcodes, tex.txtcatcodes +local pushcatcodes = context.pushcatcodes +local popcatcodes = context.popcatcodes +local txtcatcodes = catcodes.numbers.txtcatcodes -- or just use "txtcatcodes" function references.urls.get(name) local u = urls[name] diff --git a/tex/context/base/strc-syn.mkiv b/tex/context/base/strc-syn.mkiv index 535eab04b..e0087d450 100644 --- a/tex/context/base/strc-syn.mkiv +++ b/tex/context/base/strc-syn.mkiv @@ -65,8 +65,8 @@ %\c!headcolor=, %\c!criterium=, \c!location=\v!left, - \c!width=5em, - \c!distance=0pt, + \c!width=5\emwidth, + \c!distance=\zeropoint, %\c!sample=, %\c!hang=, %\c!align=, diff --git a/tex/context/base/supp-box.lua b/tex/context/base/supp-box.lua index 853de4cbe..c7382834a 100644 --- a/tex/context/base/supp-box.lua +++ b/tex/context/base/supp-box.lua @@ -10,6 +10,9 @@ if not modules then modules = { } end modules ['supp-box'] = { local report_hyphenation = logs.reporter("languages","hyphenation") +local tex, node = tex, node +local context, commands, nodes = context, commands, nodes + local nodecodes = nodes.nodecodes local disc_code = nodecodes.disc @@ -19,6 +22,7 @@ local glue_code = nodecodes.glue local glyph_code = nodecodes.glyph local new_penalty = nodes.pool.penalty + local free_node = node.free local copynodelist = node.copy_list local copynode = node.copy @@ -65,10 +69,9 @@ local function applytochars(list,what,nested) while current do local id = current.id if nested and (id == hlist_code or id == vlist_code) then - context.hbox() - context.bgroup() + context.beginhbox() applytochars(current.list,what,nested) - context.egroup() + context.endhbox() elseif id ~= glyph_code then noaction(copynode(current)) else @@ -92,8 +95,7 @@ local function applytowords(list,what,nested) end noaction(copynode(current)) elseif nested and (id == hlist_code or id == vlist_code) then - context.hbox() - context.bgroup() + context.beginhbox() applytowords(current.list,what,nested) context.egroup() elseif not start then diff --git a/tex/context/base/supp-ran.lua b/tex/context/base/supp-ran.lua index 75202f696..7997db8f6 100644 --- a/tex/context/base/supp-ran.lua +++ b/tex/context/base/supp-ran.lua @@ -6,32 +6,34 @@ if not modules then modules = { } end modules ['supp-ran'] = { license = "see context related readme files" } --- We cannot ask for the current seed, so we need some messy hack --- here. +-- We cannot ask for the current seed, so we need some messy hack here. local report_system = logs.reporter("system","randomizer") -commands = commands or { } -local commands = commands - local math = math +local context, commands = context, commands + local random, randomseed, round, seed, last = math.random, math.randomseed, math.round, false, 1 -function math.setrandomseedi(n,comment) +local maxcount = 2^30-1 -- 1073741823 + +local function setrandomseedi(n,comment) if not n then ---~ n = 0.5 -- hack + -- n = 0.5 -- hack end if n <= 1 then - n = n*1073741823 -- maxcount + n = n * maxcount end n = round(n) if false then report_system("setting seed to %s (%s)",n,comment or "normal") end randomseed(n) - last = random(0,1073741823) -- we need an initial value + last = random(0,maxcount) -- we need an initial value end +math.setrandomseedi = setrandomseedi + function commands.getrandomcounta(min,max) last = random(min,max) context(last) @@ -44,7 +46,7 @@ end function commands.setrandomseed(n) last = n - math.setrandomseedi(n) + setrandomseedi(n) end function commands.getrandomseed(n) @@ -54,10 +56,9 @@ end -- maybe stack function commands.freezerandomseed(n) - -- print("<<<<",seed,last) if seed == false or seed == nil then seed = last - math.setrandomseedi(seed,"freeze",seed) + setrandomseedi(seed,"freeze",seed) end if n then randomseed(n) @@ -65,9 +66,8 @@ function commands.freezerandomseed(n) end function commands.defrostrandomseed() - -- print(">>>>",seed,last) if seed ~= false then - math.setrandomseedi(seed,"defrost",seed) -- was last (bug) + setrandomseedi(seed,"defrost",seed) -- was last (bug) seed = false end end diff --git a/tex/context/base/symb-run.mkiv b/tex/context/base/symb-run.mkiv index 4bd2cecca..e5bac89d9 100644 --- a/tex/context/base/symb-run.mkiv +++ b/tex/context/base/symb-run.mkiv @@ -44,10 +44,10 @@ \unprotect -\gdef\doshowsymbolset[#1]% - {\ctxcommand{showsymbolset("#1","\symbolset{#1}")}} - -\gdef\showsymbolset +\unexpanded\gdef\symb_show_set {\dosingleargument\doshowsymbolset} +\gdef\symb_show_set[#1]% + {\ctxcommand{showsymbolset("#1","\symbolset{#1}")}} + \protect \endinput diff --git a/tex/context/base/syst-aux.lua b/tex/context/base/syst-aux.lua index 7fd25d6ab..b5dd4e7e2 100644 --- a/tex/context/base/syst-aux.lua +++ b/tex/context/base/syst-aux.lua @@ -6,19 +6,31 @@ if not modules then modules = { } end modules ['syst-aux'] = { license = "see context related readme files" } +-- slower than lpeg: +-- +-- utfmatch(str,"(.?)(.*)$") +-- utf.sub(str,1,1) + +local commands = commands + local settings_to_array = utilities.parsers.settings_to_array local concat = table.concat +local P, C, lpegmatch, utf8char = lpeg.P, lpeg.C, lpeg.match, lpeg.patterns.utf8char local setvalue = context.setvalue +local pattern = C(utf8char^-1) * C(P(1)^0) + function commands.getfirstcharacter(str) - local first, rest = utf.match(str,"(.?)(.*)$") + local first, rest = lpegmatch(pattern,str) setvalue("firstcharacter",first) setvalue("remainingcharacters",rest) end +local pattern = C(utf8char^-1) + function commands.doiffirstcharelse(chr,str) - commands.doifelse(utf.sub(str,1,1) == chr) + commands.doifelse(lpegmatch(pattern,str) == chr) end -- function commands.addtocommalist(list,item) diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index c09608f8d..1c4ab089d 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -161,22 +161,21 @@ \let\@NX \noexpand \def\@EAEA {\expandafter\expandafter} % can often be avoided -%D Sometimes we pass macros as arguments to commands that -%D don't expand them before interpretation. Such commands can -%D be enclosed with \type{\expanded}, like: +%D Sometimes we pass macros as arguments to commands that don't expand them +%D before interpretation. Such commands can be enclosed with \type {\expanded}, +%D like: %D %D \starttyping %D \expanded{\setupsomething[\alfa]} %D \stoptyping %D -%D Such situations occur for instance when \type{\alfa} is a -%D commalist or when data stored in macros is fed to index of -%D list commands. If needed, one should use \type{\noexpand} -%D inside the argument. Later on we will meet some more clever -%D alternatives to this command. Beware, only the simple one -%D has \type {\noexpand} before its argument. +%D Such situations occur for instance when \type{\alfa} is a commalist or when data +%D stored in macros is fed to index of list commands. If needed, one should use +%D \type{\noexpand} inside the argument. Later on we will meet some more clever +%D alternatives to this command. Beware, only the simple one has \type {\noexpand} +%D before its argument. -\let\m_syst_helpers_expanded\empty % always long and global (less restores) +\let\m_syst_helpers_expanded\empty \unexpanded\def\expanded#1% {\xdef\m_syst_helpers_expanded{\noexpand#1}\m_syst_helpers_expanded} @@ -186,9 +185,8 @@ \let\stopexpanded\relax -%D Recent \TEX\ engines have a primitive \type {\expanded} and we will -%D use that when possible. After all, we can make not expandable macros -%D now. +%D Recent \TEX\ engines have a primitive \type {\expanded} and we will use that when +%D possible. After all, we can make not expandable macros now. % We cannot use the next variant as first we need to adapt \type {##}'s % in callers: @@ -202,8 +200,8 @@ %D \macros %D {gobbleoneargument,gobble...arguments} %D -%D The next set of macros just do nothing, except that they -%D get rid of a number of arguments. +%D The next set of macros just do nothing, except that they get rid of a number of +%D arguments. \def\gobbleoneargument #1{} \def\gobbletwoarguments #1#2{} @@ -462,9 +460,9 @@ %D %D In \CONTEXT\ of May 2000 using \type {\globallet} instead of the two %D tokens will save us some $300\times4=1200$ bytes of format file on a 32~bit -%D system. Not that it matters much today. Anyway: +%D system. Not that it matters much today. This shortcut is already defined: -\def\globallet{\global\let} \let\glet\globallet +\unexpanded\def\glet{\global\let} \let\globallet\glet %D \macros %D {doifundefined,doifdefined, diff --git a/tex/context/base/syst-ini.mkiv b/tex/context/base/syst-ini.mkiv index 6c71fa0d1..922c93b75 100644 --- a/tex/context/base/syst-ini.mkiv +++ b/tex/context/base/syst-ini.mkiv @@ -512,6 +512,14 @@ \ifdefined\htdp \else \def\htdp#1{\dimexpr\ht#1+\dp#1\relax} \fi +%D A few shortcuts: + +\normalprotected\def\glet {\global \let } +\normalprotected\def\udef {\normalprotected\def } +\normalprotected\def\ugdef{\normalprotected\gdef} +\normalprotected\def\uedef{\normalprotected\edef} +\normalprotected\def\uxdef{\normalprotected\xdef} + %D The catcode constants will be redefined in later catcode related modules %D but they can be used in the same way. diff --git a/tex/context/base/syst-lua.lua b/tex/context/base/syst-lua.lua index f735b1962..ef524c339 100644 --- a/tex/context/base/syst-lua.lua +++ b/tex/context/base/syst-lua.lua @@ -16,14 +16,17 @@ commands = commands or { } function commands.writestatus(...) logs.status(...) end -- overloaded later --- todo: use shorter names i.e. less tokenization, like prtcatcodes + f_o_t_a - local firstoftwoarguments = context.firstoftwoarguments -- context.constructcsonly("firstoftwoarguments" ) local secondoftwoarguments = context.secondoftwoarguments -- context.constructcsonly("secondoftwoarguments") local firstofoneargument = context.firstofoneargument -- context.constructcsonly("firstofoneargument" ) local gobbleoneargument = context.gobbleoneargument -- context.constructcsonly("gobbleoneargument" ) -local function testcase(b) +-- contextsprint(prtcatcodes,[[\ui_fo]]) -- firstofonearguments +-- contextsprint(prtcatcodes,[[\ui_go]]) -- gobbleonearguments +-- contextsprint(prtcatcodes,[[\ui_ft]]) -- firstoftwoarguments +-- contextsprint(prtcatcodes,[[\ui_st]]) -- secondoftwoarguments + +function commands.doifelse(b) if b then firstoftwoarguments() else @@ -47,33 +50,45 @@ function commands.doifnot(b) end end -commands.testcase = testcase -commands.doifelse = testcase +commands.testcase = commands.doifelse -- obsolete function commands.boolcase(b) context(b and 1 or 0) end function commands.doifelsespaces(str) - return testcase(find(str,"^ +$")) + if find(str,"^ +$") then + firstoftwoarguments() + else + secondoftwoarguments() + end end local s = lpegtsplitat(",") local h = { } -function commands.doifcommonelse(a,b) +function commands.doifcommonelse(a,b) -- often the same test local ha = h[a] local hb = h[b] - if not ha then ha = lpegmatch(s,a) h[a] = ha end - if not hb then hb = lpegmatch(s,b) h[b] = hb end - for i=1,#ha do - for j=1,#hb do + if not ha then + ha = lpegmatch(s,a) + h[a] = ha + end + if not hb then + hb = lpegmatch(s,b) + h[b] = hb + end + local na = #ha + local nb = #hb + for i=1,na do + for j=1,nb do if ha[i] == hb[j] then - return testcase(true) + firstoftwoarguments() + return end end end - return testcase(false) + secondoftwoarguments() end function commands.doifinsetelse(a,b) @@ -81,16 +96,21 @@ function commands.doifinsetelse(a,b) if not hb then hb = lpegmatch(s,b) h[b] = hb end for i=1,#hb do if a == hb[i] then - return testcase(true) + firstoftwoarguments() + return end end - return testcase(false) + secondoftwoarguments() end local pattern = lpeg.patterns.validdimen function commands.doifdimenstringelse(str) - testcase(lpegmatch(pattern,str)) + if lpegmatch(pattern,str) then + firstoftwoarguments() + else + secondoftwoarguments() + end end function commands.firstinset(str) diff --git a/tex/context/base/syst-lua.mkiv b/tex/context/base/syst-lua.mkiv index 0d72e4a01..004655b74 100644 --- a/tex/context/base/syst-lua.mkiv +++ b/tex/context/base/syst-lua.mkiv @@ -40,4 +40,11 @@ %def\luaexpr#1{\ctxlua {context(tostring(#1))}} \def\luaexpr#1{\directlua\zerocount{context(tostring(#1))}} % wrap in global function ? +% helpers: + +\def\ui_fo #1{#1} +\def\ui_go #1{} +\def\ui_ft#1#2{#1} +\def\ui_st#1#2{#2} + \protect \endinput diff --git a/tex/context/base/tabl-ltb.mkiv b/tex/context/base/tabl-ltb.mkiv index b126883c6..f7fbc0390 100644 --- a/tex/context/base/tabl-ltb.mkiv +++ b/tex/context/base/tabl-ltb.mkiv @@ -723,10 +723,10 @@ \startlinetablerun \readfile{#1}\donothing\donothing\stoplinetablerun \egroup} -\protect \endinput +\protect + +\continueifinputfile{tabl-ltb.mkiv} -\doifnotmode{demo}{\endinput} - \setuplinetable[n=6,m={2,2,2},lines=25] % m ? \setuplinetable[c][1] [width=2cm,background=color,backgroundcolor=red] diff --git a/tex/context/base/tabl-tbl.lua b/tex/context/base/tabl-tbl.lua index c48c5100d..7291facd3 100644 --- a/tex/context/base/tabl-tbl.lua +++ b/tex/context/base/tabl-tbl.lua @@ -6,8 +6,10 @@ if not modules then modules = { } end modules ['tabl-tbl'] = { license = "see context related readme files" } --- A couple of hacks ... easier to do in Lua than in regular --- TeX. More will follow. +-- A couple of hacks ... easier to do in Lua than in regular TeX. More will +-- follow. + +local context, commands = context, commands local tonumber = tonumber local gsub, rep, sub, find = string.gsub, string.rep, string.sub, string.find diff --git a/tex/context/base/tabl-xtb.lua b/tex/context/base/tabl-xtb.lua index e999cbd74..01b7ef9eb 100644 --- a/tex/context/base/tabl-xtb.lua +++ b/tex/context/base/tabl-xtb.lua @@ -25,6 +25,8 @@ this mechamism will be improved so that it can replace its older cousin. -- todo: use linked list instead of r/c array +local commands, context, tex, node = commands, context, tex, node + local texdimen = tex.dimen local texcount = tex.count local texbox = tex.box diff --git a/tex/context/base/task-ini.lua b/tex/context/base/task-ini.lua index ffcb82cd9..58f7cbd40 100644 --- a/tex/context/base/task-ini.lua +++ b/tex/context/base/task-ini.lua @@ -20,7 +20,7 @@ local freezegroup = tasks.freezegroup local freezecallbacks = callbacks.freeze appendaction("processors", "normalizers", "typesetters.characters.handler") -- always on -appendaction("processors", "normalizers", "fonts.collections.process") -- todo +appendaction("processors", "normalizers", "fonts.collections.process") -- disabled appendaction("processors", "normalizers", "fonts.checkers.missing") -- disabled appendaction("processors", "characters", "typesetters.cleaners.handler") -- disabled @@ -59,7 +59,7 @@ appendaction("shipouts", "normalizers", "structures.tags.handler") appendaction("shipouts", "normalizers", "nodes.handlers.accessibility") -- disabled appendaction("shipouts", "normalizers", "nodes.handlers.backgrounds") -- disabled ---~ appendaction("shipouts", "normalizers", "nodes.handlers.export") -- disabled +-- appendaction("shipouts", "normalizers", "nodes.handlers.export") -- disabled appendaction("shipouts", "finishers", "nodes.visualizers.handler") -- disabled @@ -100,6 +100,7 @@ appendaction("vboxbuilders", "normalizers", "builders.vspacing.vboxhandler") -- speedup: only kick in when used +disableaction("processors", "fonts.collections.process") disableaction("processors", "fonts.checkers.missing") disableaction("processors", "chars.handle_breakpoints") disableaction("processors", "typesetters.cleaners.handler") diff --git a/tex/context/base/trac-ctx.lua b/tex/context/base/trac-ctx.lua index dd3aa392a..813443816 100644 --- a/tex/context/base/trac-ctx.lua +++ b/tex/context/base/trac-ctx.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['trac-ctx'] = { license = "see context related readme files" } +local commands, context = commands, context + tex.trackers = tex.trackers or { } local textrackers = tex.trackers @@ -32,5 +34,3 @@ function commands.installtextracker(tag,enable,disable) textrackers[tag] = { enable, disable } register(tag, function(v) doit(tag,v) end) -- todo: v,tag in caller end - --- lua.registerfinalizer(dump,"dump storage") diff --git a/tex/context/base/trac-fil.lua b/tex/context/base/trac-fil.lua index bf291ff6b..73d5d1c7d 100644 --- a/tex/context/base/trac-fil.lua +++ b/tex/context/base/trac-fil.lua @@ -6,18 +6,19 @@ if not modules then modules = { } end modules ['trac-fil'] = { license = "see context related readme files" } +local rawset, tonumber = rawset, tonumber local format, concat = string.format, table.concat local openfile = io.open local date = os.date -local rawset, tonumber = rawset, tonumber +local sortedpairs = table.sortedpairs -local P, C, Cc, Cg, Cf, Ct, Cs = lpeg.P, lpeg.C, lpeg.Cc, lpeg.Cg, lpeg.Cf, lpeg.Ct, lpeg.Cs +local P, C, Cc, Cg, Cf, Ct, Cs, lpegmatch = lpeg.P, lpeg.C, lpeg.Cc, lpeg.Cg, lpeg.Cf, lpeg.Ct, lpeg.Cs, lpeg.match local patterns = lpeg.patterns local cardinal = patterns.cardinal local whitespace = patterns.whitespace^0 -patterns.timestamp = Cf(Ct("") * ( +local timestamp = Cf(Ct("") * ( Cg (Cc("year") * (cardinal/tonumber)) * P("-") * Cg (Cc("month") * (cardinal/tonumber)) * P("-") * Cg (Cc("day") * (cardinal/tonumber)) * P(" ") @@ -28,15 +29,18 @@ patterns.timestamp = Cf(Ct("") * ( * Cg (Cc("tminute") * (cardinal/tonumber)) )^0, rawset) -patterns.keysvalues = Cf(Ct("") * ( +local keysvalues = Cf(Ct("") * ( Cg(C(patterns.letter^0) * whitespace * "=" * whitespace * Cs(patterns.unquoted) * whitespace) )^0, rawset) -patterns.statusline = Cf(Ct("") * ( - whitespace * P("[") * Cg(Cc("timestamp") * patterns.timestamp ) * P("]") - * whitespace * Cg(Cc("status" ) * patterns.keysvalues) +local statusline = Cf(Ct("") * ( + whitespace * P("[") * Cg(Cc("timestamp") * timestamp ) * P("]") + * whitespace * Cg(Cc("status" ) * keysvalues) ),rawset) +patterns.keysvalues = keysvalues +patterns.statusline = statusline +patterns.timestamp = timestamp loggers = loggers or { } @@ -52,9 +56,10 @@ function loggers.message(filename,t) f = openfile(filename,"a+") end if f then + -- if needed we can speed this up with a concat f:write("[",date("!%Y-%m-%d %H:%M:%S"),tz,"]") - for k, v in table.sortedpairs(t) do - f:write(" ",k,'="',v,'"') + for k, v in sortedpairs(t) do + f:write(format(" %s=%q",k,v)) end f:write("\n") f:close() @@ -64,17 +69,9 @@ function loggers.message(filename,t) end end ---~ function loggers.collect(filename) ---~ if lfs.isfile(filename) then ---~ return lpeg.match(Ct(patterns.statusline^0),io.loaddata(filename)) ---~ else ---~ return { } ---~ end ---~ end - function loggers.collect(filename,result) if lfs.isfile(filename) then - local r = lpeg.match(Ct(patterns.statusline^0),io.loaddata(filename)) + local r = lpegmatch(Ct(statusline^0),io.loaddata(filename)) if result then -- append local nofresult = #result for i=1,#r do diff --git a/tex/context/base/trac-set.lua b/tex/context/base/trac-set.lua index ed7367b4f..bac448f77 100644 --- a/tex/context/base/trac-set.lua +++ b/tex/context/base/trac-set.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['trac-set'] = { -- might become u license = "see context related readme files" } +-- maybe this should be util-set.lua + local type, next, tostring = type, next, tostring local concat = table.concat local format, find, lower, gsub, escapedpattern = string.format, string.find, string.lower, string.gsub, string.escapedpattern diff --git a/tex/context/base/trac-tim.lua b/tex/context/base/trac-tim.lua index de7ceca46..adc8e01b5 100644 --- a/tex/context/base/trac-tim.lua +++ b/tex/context/base/trac-tim.lua @@ -59,7 +59,7 @@ end local processed = { } local function convert(name) - name = ((name ~= "") and name) or progress.defaultfilename + name = name ~= "" and name or progress.defaultfilename if not processed[name] then local names, top, bot, pages, paths, keys = { }, { }, { }, 0, { }, { } local data = io.loaddata(name .. ".lut") diff --git a/tex/context/base/type-ini.lua b/tex/context/base/type-ini.lua index 4ce953168..758fb5683 100644 --- a/tex/context/base/type-ini.lua +++ b/tex/context/base/type-ini.lua @@ -8,6 +8,8 @@ if not modules then modules = { } end modules ['type-ini'] = { -- more code will move here +local commands, context = commands, context + local gsub = string.gsub local report_typescripts = logs.reporter("fonts","typescripts") @@ -15,13 +17,14 @@ local report_typescripts = logs.reporter("fonts","typescripts") local patterns = { "type-imp-%s.mkiv", "type-imp-%s.tex", "type-%s.mkiv", "type-%s.tex" } -- this will be imp only local function action(name,foundname) - context.startreadingfile() - context.pushendofline() - context.unprotect() - context.input(foundname) - context.protect() - context.popendofline() - context.stopreadingfile() + -- context.startreadingfile() + -- context.pushendofline() + -- context.unprotect() + -- context.input(foundname) + -- context.protect() + -- context.popendofline() + -- context.stopreadingfile() + context.loadfoundtypescriptfile(foundname) end local name_one, name_two diff --git a/tex/context/base/type-ini.mkvi b/tex/context/base/type-ini.mkvi index f41c392d1..8345a97f9 100644 --- a/tex/context/base/type-ini.mkvi +++ b/tex/context/base/type-ini.mkvi @@ -136,15 +136,21 @@ % The next will change .. we can load a file inside a typescript but as the state is % 1 then, it doesn't get stored without doing that explicitly -% \unexpanded\def\loadtypescriptfile[#1]% -% {\ctxcommand{loadtypescriptfile("#1")}} - \unexpanded\def\loadtypescriptfile[#1]% {\pushmacro\typescriptstate \let\typescriptstate\plustwo % assumes 2 at the outer level \ctxcommand{loadtypescriptfile("#1")}% \popmacro\typescriptstate} +\unexpanded\def\loadfoundtypescriptfile#1% + {\startreadingfile + \pushendofline + \unprotect + \input{#1}% + \protect + \popendofline + \stopreadingfile} + \unexpanded\def\quittypescriptscanning {\settrue\c_font_typescripts_quit} % public diff --git a/tex/context/base/x-asciimath.mkiv b/tex/context/base/x-asciimath.mkiv index 23caf13aa..ea6d5c3fa 100644 --- a/tex/context/base/x-asciimath.mkiv +++ b/tex/context/base/x-asciimath.mkiv @@ -68,7 +68,7 @@ \protect -\doifnotmode{demo}{\endinput} +\continueifinputfile{x-asciimath.mkiv} \enabletrackers[modules.asciimath.mapping] diff --git a/tex/context/base/x-udhr.mkiv b/tex/context/base/x-udhr.mkiv index 81075ac70..e081bfd59 100644 --- a/tex/context/base/x-udhr.mkiv +++ b/tex/context/base/x-udhr.mkiv @@ -87,7 +87,7 @@ \setuptolerance [verytolerant] -\doifnotmode{demo}{\endinput} +\continueifinputfile{x-udhr.mkiv} % todo: when argument given then process it diff --git a/tex/context/fonts/husayni.lfg b/tex/context/fonts/husayni.lfg index cf9e373fa..d0b3e631c 100644 --- a/tex/context/fonts/husayni.lfg +++ b/tex/context/fonts/husayni.lfg @@ -31,6 +31,7 @@ local minimal_stretching = { local medium_stretching = { js12=yes, js05=yes, } + local maximal_stretching= { js13 = yes, js05 = yes, js09 = yes, } diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 2fd1644e5..47b6be3d1 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 : 07/24/12 15:58:02 +-- merge date : 07/26/12 19:37:03 do -- begin closure to overcome local limits and interference @@ -4704,17 +4704,17 @@ local format, match, lower = string.format, string.match, string.lower local tonumber = tonumber local P, S, R, C, V, lpegmatch = lpeg.P, lpeg.S, lpeg.R, lpeg.C, lpeg.V, lpeg.match -local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end) +local fonts, logs, trackers = fonts, logs, trackers -local report_otf = logs.reporter("fonts","otf loading") +local trace_loading = false trackers.register("otf.loading", function(v) trace_loading = v end) -local fonts = fonts +local report_otf = logs.reporter("fonts","otf loading") -local cid = { } -fonts.cid = cid +local cid = { } +fonts.cid = cid -local cidmap = { } -local cidmax = 10 +local cidmap = { } +local cidmax = 10 -- original string parser: 0.109, lpeg parser: 0.036 seconds for Adobe-CNS1-4.cidmap -- @@ -4773,8 +4773,7 @@ local function loadcidfile(filename) end end -cid.loadfile = loadcidfile -- we use the frozen variant - +cid.loadfile = loadcidfile -- we use the frozen variant local template = "%s-%s-%s.cidmap" local function locate(registry,ordering,supplement) |