diff options
Diffstat (limited to 'tex')
19 files changed, 259 insertions, 81 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 8102353cb..f4666bcd9 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2019.08.20 17:20} +\newcontextversion{2019.08.24 22:42} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index d745ff9da..1663c168f 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2019.08.20 17:20} +\edef\contextversion{2019.08.24 22:42} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-en.mkii b/tex/context/base/mkii/mult-en.mkii index 52f51af5d..65721ddaa 100644 --- a/tex/context/base/mkii/mult-en.mkii +++ b/tex/context/base/mkii/mult-en.mkii @@ -637,6 +637,7 @@ \setinterfaceconstant{aligntitle}{aligntitle} \setinterfaceconstant{alternative}{alternative} \setinterfaceconstant{anchor}{anchor} +\setinterfaceconstant{anchoring}{anchoring} \setinterfaceconstant{andtext}{andtext} \setinterfaceconstant{apa}{apa} \setinterfaceconstant{arguments}{arguments} @@ -866,6 +867,7 @@ \setinterfaceconstant{hfil}{hfil} \setinterfaceconstant{hidenumber}{hidenumber} \setinterfaceconstant{hoffset}{hoffset} +\setinterfaceconstant{horizontal}{horizontal} \setinterfaceconstant{horoffset}{horoffset} \setinterfaceconstant{hyphen}{hyphen} \setinterfaceconstant{hyphens}{hyphens} @@ -966,9 +968,12 @@ \setinterfaceconstant{menu}{menu} \setinterfaceconstant{method}{method} \setinterfaceconstant{middle}{middle} +\setinterfaceconstant{middlecolor}{middlecolor} \setinterfaceconstant{middlecommand}{middlecommand} \setinterfaceconstant{middlespeech}{middlespeech} +\setinterfaceconstant{middlestyle}{middlestyle} \setinterfaceconstant{middletext}{middletext} +\setinterfaceconstant{middlewidth}{middlewidth} \setinterfaceconstant{midsentence}{midsentence} \setinterfaceconstant{min}{min} \setinterfaceconstant{mindepth}{mindepth} @@ -1286,6 +1291,7 @@ \setinterfaceconstant{vcompact}{vcompact} \setinterfaceconstant{vector}{vector} \setinterfaceconstant{veroffset}{veroffset} +\setinterfaceconstant{vertical}{vertical} \setinterfaceconstant{vfactor}{vfactor} \setinterfaceconstant{vfil}{vfil} \setinterfaceconstant{viewerprefix}{viewerprefix} @@ -1296,6 +1302,7 @@ \setinterfaceconstant{white}{white} \setinterfaceconstant{width}{width} \setinterfaceconstant{words}{words} +\setinterfaceconstant{xanchor}{xanchor} \setinterfaceconstant{xfactor}{xfactor} \setinterfaceconstant{xhtml}{xhtml} \setinterfaceconstant{xmax}{xmax} @@ -1303,6 +1310,7 @@ \setinterfaceconstant{xoffset}{xoffset} \setinterfaceconstant{xscale}{xscale} \setinterfaceconstant{xstep}{xstep} +\setinterfaceconstant{yanchor}{yanchor} \setinterfaceconstant{yfactor}{yfactor} \setinterfaceconstant{ymax}{ymax} \setinterfaceconstant{yoffset}{yoffset} diff --git a/tex/context/base/mkiv/colo-ini.lua b/tex/context/base/mkiv/colo-ini.lua index 473427198..c7b1d4de4 100644 --- a/tex/context/base/mkiv/colo-ini.lua +++ b/tex/context/base/mkiv/colo-ini.lua @@ -109,6 +109,8 @@ colors.pushset = pushset colors.popset = popset colors.setlist = setlist +-- todo: set at the lua end + local ctx_colordefagc = context.colordefagc local ctx_colordefagt = context.colordefagt local ctx_colordefalc = context.colordefalc @@ -508,6 +510,56 @@ local function defineprocesscolor(name,str,global,freeze) -- still inconsistent colorset[name] = true-- maybe we can store more end +local function defineprocesscolordirect(settings) + if settings then + local name = settings.name + if name then + local r = settings.r + local g = settings.g + local b = settings.b + if r or g or b then + -- we can consider a combined rgb cmyk s definition + register_color(name,'rgb', r or 0, g or 0, b or 0) + else + local c = settings.c + local m = settings.m + local y = settings.y + local k = settings.k + if c or m or y or k then + register_color(name,'cmyk',c or 0, m or 0, y or 0, k or 0) + else + local h = settings.h + local s = settings.s + local v = settings.v + if v then + r, g, b = colors.hsvtorgb(h or 0, s or 1, v or 1) -- maybe later native + register_color(name,'rgb',r,g,b) + else + local x = settings.x or h + if x then + r, g, b = lpegmatch(hexpattern,x) -- can be inlined + if r and g and b then + register_color(name,'rgb',r,g,b) + else + register_color(name,'gray',r or 0) + end + else + register_color(name,'gray',s or 0) + end + end + end + end + local a = settings.a + local t = settings.t + if a and t then + transparencies.register(name,transparent[a] or a or 1,t or 1) + end + colorset[name] = true-- maybe we can store more + valid[name] = true + end + end +end + local function isblack(ca) -- maybe commands local cv = ca > 0 and colorvalues[ca] return (cv and cv[2] == 0) or false @@ -657,6 +709,8 @@ colors.defineprocesscolor = defineprocesscolor colors.definespotcolor = definespotcolor colors.definemultitonecolor = definemultitonecolor +colors.defineprocesscolordirect = defineprocesscolordirect -- test for mp + -- will move to mlib-col as colors in mp are somewhat messy due to the fact -- that we cannot cast .. so we really need to use (s,s,s) for gray in order -- to be able to map onto 'color' diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 6b6f3e909..47ee3650e 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2019.08.20 17:20} +\newcontextversion{2019.08.24 22:42} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index c92be96d4..a768bffde 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2019.08.20 17:20} +\edef\contextversion{2019.08.24 22:42} \edef\contextkind {beta} %D Kind of special: diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl index 6c210c12c..a6e36cfaf 100644 --- a/tex/context/base/mkiv/context.mkxl +++ b/tex/context/base/mkiv/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2019.08.20 17:20} +\edef\contextversion{2019.08.24 22:42} \edef\contextkind {beta} %D Kind of special: @@ -462,7 +462,7 @@ \loadmkxlfile{meta-ini} % LMTX \loadmarkfile{meta-tex} \loadmarkfile{meta-fun} -\loadmarkfile{meta-pag} +\loadmkxlfile{meta-pag} \loadmarkfile{meta-grd} \loadmarkfile{meta-fnt} \loadmarkfile{meta-nod} diff --git a/tex/context/base/mkiv/mlib-lmp.lua b/tex/context/base/mkiv/mlib-lmp.lua index 292265be1..93a758681 100644 --- a/tex/context/base/mkiv/mlib-lmp.lua +++ b/tex/context/base/mkiv/mlib-lmp.lua @@ -6,23 +6,15 @@ if not modules then modules = { } end modules ['mlib-lmp'] = { license = "see context related readme files", } -local get = mp.get local aux = mp.aux -local scan = mp.scan - local mpnumeric = aux.numeric local mppair = aux.pair local mpquoted = aux.quoted -local scannumber = scan.number -local scanpath = scan.path - -local registerscript = metapost.registerscript +-- todo: use a stack? do - -- todo: use a stack? - local p = nil local n = 0 @@ -33,6 +25,10 @@ do if CONTEXTLMTXMODE > 0 then + local scan = mp.scan + local scannumber = scan.number + local scanpath = scan.path + local function mf_path_length() p = scanpath() n = p and #p or 1 @@ -68,6 +64,8 @@ do end end + local registerscript = metapost.registerscript + registerscript("pathreset", mf_path_reset) registerscript("pathlengthof", mf_path_length) registerscript("pathpointof", mf_path_point) @@ -76,6 +74,7 @@ do else + local get = mp.get local mpgetpath = get.path local function mf_path_length(name) diff --git a/tex/context/base/mkiv/mlib-lua.lua b/tex/context/base/mkiv/mlib-lua.lua index 70792e426..80d893319 100644 --- a/tex/context/base/mkiv/mlib-lua.lua +++ b/tex/context/base/mkiv/mlib-lua.lua @@ -61,51 +61,55 @@ do local currentmpx = nil local stack = { } - local get_numeric = mplib.get_numeric - local get_integer = mplib.get_integer - local get_string = mplib.get_string - local get_boolean = mplib.get_boolean - local get_path = mplib.get_path - - get.numeric = function(s) return get_numeric(currentmpx,s) end - get.number = function(s) return get_numeric(currentmpx,s) end - get.integer = function(s) return get_integer(currentmpx,s) end - get.string = function(s) return get_string (currentmpx,s) end - get.boolean = function(s) return get_boolean(currentmpx,s) end - get.path = function(s) return get_path (currentmpx,s) end - - local set_path = mplib.set_path - - set.path = function(s,t) return set_path(currentmpx,s,t) end -- not working yet - - local scan_next = mplib.scan_next - local scan_expression = mplib.scan_expression - local scan_token = mplib.scan_token - local scan_symbol = mplib.scan_symbol - local scan_numeric = mplib.scan_numeric - local scan_integer = mplib.scan_integer - local scan_boolean = mplib.scan_boolean - local scan_string = mplib.scan_string - local scan_pair = mplib.scan_pair - local scan_color = mplib.scan_color - local scan_cmykcolor = mplib.scan_cmykcolor - local scan_transform = mplib.scan_transform - local scan_path = mplib.scan_path - - scan.next = function(k) return scan_next (currentmpx,k) end - scan.expression = function(k) return scan_expression(currentmpx,k) end - scan.token = function(k) return scan_token (currentmpx,k) end - scan.symbol = function(k) return scan_symbol (currentmpx,k) end - scan.numeric = function() return scan_numeric (currentmpx) end - scan.number = function() return scan_numeric (currentmpx) end - scan.integer = function() return scan_integer (currentmpx) end - scan.boolean = function() return scan_boolean (currentmpx) end - scan.string = function() return scan_string (currentmpx) end - scan.pair = function(t) return scan_pair (currentmpx,t) end - scan.color = function(t) return scan_color (currentmpx,t) end - scan.cmykcolor = function(t) return scan_cmykcolor (currentmpx,t) end - scan.transform = function(t) return scan_transform (currentmpx,t) end - scan.path = function(t) return scan_path (currentmpx,t) end + if CONTEXTLMTXMODE > 0 then + + local scan_next = mplib.scan_next + local scan_expression = mplib.scan_expression + local scan_token = mplib.scan_token + local scan_symbol = mplib.scan_symbol + local scan_numeric = mplib.scan_numeric + local scan_integer = mplib.scan_integer + local scan_boolean = mplib.scan_boolean + local scan_string = mplib.scan_string + local scan_pair = mplib.scan_pair + local scan_color = mplib.scan_color + local scan_cmykcolor = mplib.scan_cmykcolor + local scan_transform = mplib.scan_transform + local scan_path = mplib.scan_path + + scan.next = function(k) return scan_next (currentmpx,k) end + scan.expression = function(k) return scan_expression(currentmpx,k) end + scan.token = function(k) return scan_token (currentmpx,k) end + scan.symbol = function(k,e) return scan_symbol (currentmpx,k,e) end + scan.numeric = function() return scan_numeric (currentmpx) end + scan.number = function() return scan_numeric (currentmpx) end + scan.integer = function() return scan_integer (currentmpx) end + scan.boolean = function() return scan_boolean (currentmpx) end + scan.string = function() return scan_string (currentmpx) end + scan.pair = function(t) return scan_pair (currentmpx,t) end + scan.color = function(t) return scan_color (currentmpx,t) end + scan.cmykcolor = function(t) return scan_cmykcolor (currentmpx,t) end + scan.transform = function(t) return scan_transform (currentmpx,t) end + scan.path = function(t) return scan_path (currentmpx,t) end + + else + + local get_numeric = mplib.get_numeric + local get_integer = mplib.get_integer + local get_string = mplib.get_string + local get_boolean = mplib.get_boolean + local get_path = mplib.get_path + local set_path = mplib.set_path + + get.numeric = function(s) return get_numeric(currentmpx,s) end + get.number = function(s) return get_numeric(currentmpx,s) end + get.integer = function(s) return get_integer(currentmpx,s) end + get.string = function(s) return get_string (currentmpx,s) end + get.boolean = function(s) return get_boolean(currentmpx,s) end + get.path = function(s) return get_path (currentmpx,s) end + set.path = function(s,t) return set_path (currentmpx,s,t) end -- not working yet + + end function metapost.pushscriptrunner(mpx) insert(stack,mpx) @@ -184,6 +188,7 @@ do local f_ctrl = formatters["(%F,%F) .. controls (%F,%F) and (%F,%F)"] local f_triplet = formatters["(%F,%F,%F)"] local f_quadruple = formatters["(%F,%F,%F,%F)"] + local f_transform = formatters["totransform(%F,%F,%F,%F,%F,%F)"] local f_points = formatters["%p"] local f_pair_pt = formatters["(%p,%p)"] @@ -209,7 +214,11 @@ do elseif t == "string" then buffer[n] = value elseif t == "table" then - buffer[n] = "(" .. concat(value,",") .. ")" + if #t == 6 then + buffer[n] = "totransform(" .. concat(value,",") .. ")" + else + buffer[n] = "(" .. concat(value,",") .. ")" + end else -- boolean or whatever buffer[n] = tostring(value) end @@ -351,6 +360,16 @@ do end end + local function mptransform(x,y,xx,xy,yx,yy) + n = n + 1 + inspect(x) + if type(x) == "table" then + buffer[n] = f_transform(x[1],x[2],x[3],x[4],x[5],x[6]) + else + buffer[n] = f_transform(x,y,xx,xy,yx,yy) + end + end + -- we have three kind of connectors: -- -- .. ... -- (true) @@ -482,6 +501,7 @@ do aux.size = mpsize aux.fprint = mpfprint aux.quoted = mpquoted + aux.transform = mptransform -- we need access to the variables @@ -1058,6 +1078,8 @@ end do -- a bit overkill: just a find(str,"mf_object=") can be enough + -- + -- todo : share with mlib-pps.lua metapost,isobject local mpboolean = aux.boolean diff --git a/tex/context/base/mkiv/mlib-scn.lua b/tex/context/base/mkiv/mlib-scn.lua index 454f3e281..a7c1924eb 100644 --- a/tex/context/base/mkiv/mlib-scn.lua +++ b/tex/context/base/mkiv/mlib-scn.lua @@ -70,6 +70,7 @@ local mppair = mp.pair local mppath = mp.path local mptriplet = mp.triplet local mpquadruple = mp.quadruple +local mptransform = mp.transform local mpvalue = mp.value local report = logs.reporter("metapost") @@ -89,6 +90,7 @@ local string_code <const> = codes.string local capsule_code <const> = codes.capsule local nullary_code <const> = codes.nullary local tag_code <const> = codes.tag +local definedmacro_code <const> = codes.definedmacro local typescanners = nil local tokenscanners = nil @@ -140,11 +142,16 @@ scanset = function() -- can be optimized, we now read twice end end +local function scan_pair () return scanpair (true) end +local function scan_color () return scancolor (true) end +local function scan_cmykcolor() return scancmykcolor(true) end +local function scan_transform() return scantransform(true) end + tokenscanners = { [leftbrace_code] = scanset, [numeric_code] = scannumeric, [string_code] = scanstring, - [nullary_code] = scanboolean, -- todo + [nullary_code] = scanboolean, -- todo } typescanners = { @@ -152,11 +159,11 @@ typescanners = { [types.numeric] = scannumeric, [types.string] = scanstring, [types.boolean] = scanboolean, - [types.pair] = function() return scanpair (true) end, - [types.color] = function() return scancolor (true) end, - [types.cmykcolor] = function() return scancmykcolor(true) end, - [types.transform] = function() return scantransform(true) end, - [types.path] = function() return scanpath () end, + [types.pair] = scan_pair, + [types.color] = scan_color, + [types.cmykcolor] = scan_cmykcolor, + [types.transform] = scan_transform, + [types.path] = scanpath, } table.setmetatableindex(tokenscanners,function() @@ -164,6 +171,8 @@ table.setmetatableindex(tokenscanners,function() return typescanners[e] or scanexpression end) +-- a key like 'color' has code 'declare' + local function scanparameters(fenced) local data = { } local close = "]" @@ -175,7 +184,8 @@ local function scanparameters(fenced) return data end while true do - local s = scansymbol() + -- local s = scansymbol() + local s = scansymbol(false,false) if s == close then break; elseif s == "," then @@ -186,7 +196,15 @@ local function scanparameters(fenced) -- optional equal or : scantoken() end - data[s] = tokenscanners[scantoken(true)]() + local kind = scantoken(true) + if kind == leftdelimiter_code or kind == tag_code or kind == capsule_code then + kind = scanexpression(true) + data[s] = (typescanners[kind] or scanexpression)() + elseif kind == leftbracket_code then + data[s] = get_parameters(true) + else + data[s] = tokenscanners[kind]() + end end end return data @@ -204,9 +222,7 @@ local function get_parameters(nested) return data end while true do - -- a key like 'color' has code 'declare' - -- print(scansymbol(true),scantoken(true),codes[scantoken(true)]) - local s = scansymbol() + local s = scansymbol(false,false) if s == "]" then break; elseif s == "," then @@ -218,7 +234,7 @@ local function get_parameters(nested) scantoken() end local kind = scantoken(true) - if kind == leftdelimiter_code or kind == tag_code then + if kind == leftdelimiter_code or kind == tag_code or kind == capsule_code then kind = scanexpression(true) data[s] = (typescanners[kind] or scanexpression)() elseif kind == leftbracket_code then @@ -232,7 +248,7 @@ local function get_parameters(nested) end local function getparameters() - local namespace = scanstring() + local namespace = scanstring() -- same as below local parameters = get_parameters() local presets = presets[namespace] @@ -273,7 +289,16 @@ end local function presetparameters() local namespace = scanstring() - presets[namespace] = get_parameters() + local parent = nil + local t = scantoken(true) + if t == string_code then + parent = presets[scanstring()] + end + local p = get_parameters() + if parent then + setmetatableindex(p,parent) + end + presets[namespace] = p end local function collectnames() @@ -282,13 +307,13 @@ local function collectnames() while true do local t = scantoken(true) -- (1) not really needed - if t == numeric_code or t == capsule_code then + if t == numeric_code then n = n + 1 l[n] = scaninteger(1) elseif t == string_code then n = n + 1 l[n] = scanstring(1) elseif t == nullary_code then n = n + 1 l[n] = scanboolean(1) - elseif t == leftdelimiter_code or t == tag_code then + elseif t == leftdelimiter_code or t == tag_code or t == capsule_code then t = scanexpression(true) n = n + 1 l[n] = (typescanners[t] or scanexpression)() else @@ -316,6 +341,8 @@ local function get(v) return mptriplet(v) elseif n == 4 then return mpquadruple(v) + elseif n == 6 then + return mptransform(v) end end return mpnumeric(0) @@ -477,6 +504,37 @@ local function getparametercount() return mpnumeric(type(v) == "table" and #v or 0) end +local function getmaxparametercount() + local list, n = collectnames() + local v = namespaces + for i=1,n do + v = v[list[i]] + if not v then + break + end + end + local n = 0 + if type(v) == "table" then + local v1 = v[1] + if type(v1) == "table" then + n = #v1 + for i=2,#v do + local vi = v[i] + if type(vi) == "table" then + local vn = #vi + if vn > n then + n = vn + end + else + break; + end + end + end + + end + return mpnumeric(n) +end + local validconnectors = { [".."] = true, ["..."] = true, @@ -565,6 +623,7 @@ metapost.registerscript("hasparameter", hasparameter) metapost.registerscript("getparameter", getparameter) metapost.registerscript("getparameterdefault", getparameterdefault) metapost.registerscript("getparametercount", getparametercount) +metapost.registerscript("getmaxparametercount",getmaxparametercount) metapost.registerscript("getparameterpath", getparameterpath) metapost.registerscript("getparametertext", getparametertext) metapost.registerscript("getparameteroption", getparameteroption) @@ -585,6 +644,18 @@ function metapost.getparameter(list) return v end +function metapost.getparameterset(namespace) + return namespaces[namespace] +end + +-- goodies + +metapost.registerscript("definecolor", function() + scantoken() -- we scan the semicolon + local s = get_parameters() + attributes.colors.defineprocesscolordirect(s) +end) + -- tex scanners local scanners = tokens.scanners diff --git a/tex/context/base/mkiv/mult-mps.lua b/tex/context/base/mkiv/mult-mps.lua index 335a4c612..701b7b6da 100644 --- a/tex/context/base/mkiv/mult-mps.lua +++ b/tex/context/base/mkiv/mult-mps.lua @@ -117,7 +117,7 @@ return { -- "mm", "pt", "dd", "bp", "cm", "pc", "cc", "in", -- - "triplet", "quadruplet", + "triplet", "quadruplet", "totransform", }, internals = { -- we need to remove duplicates above -- diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex bb3bed49a..13031a23c 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex 1a4c6ffb3..640a7f161 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/context/base/mkiv/supp-box.lua b/tex/context/base/mkiv/supp-box.lua index 0469369a9..a8599cffe 100644 --- a/tex/context/base/mkiv/supp-box.lua +++ b/tex/context/base/mkiv/supp-box.lua @@ -489,15 +489,23 @@ do trackers.register("nodes.boxes",function(v) trace = v end) - function boxes.save(category,name,box) + function boxes.save(category,name,b) name = tonumber(name) or name - local b = takebox(box) + local b = takebox(b) if trace then report("category %a, name %a, %s (%s)",category,name,"save",b and "content" or "empty") end cache[category][name] = b or false end + function boxes.savenode(category,name,n) + name = tonumber(name) or name + if trace then + report("category %a, name %a, %s (%s)",category,name,"save",n and "content" or "empty") + end + cache[category][name] = tonut(n) or false + end + function boxes.found(category,name) name = tonumber(name) or name return cache[category][name] and true or false diff --git a/tex/context/base/mkiv/syst-con.lua b/tex/context/base/mkiv/syst-con.lua index 0fa685b2d..1af2d9a5d 100644 --- a/tex/context/base/mkiv/syst-con.lua +++ b/tex/context/base/mkiv/syst-con.lua @@ -66,3 +66,11 @@ implement { name = "tand", actions = { math.tand, nicenumber, context }, argumen -- only as commands function commands.format(fmt,...) context((gsub(fmt,"@","%%")),...) end + +implement { + name = "formatone", + public = true, + protected = true, + arguments = "2 strings", + actions = function(f,s) context((gsub(f,"@","%%")),s) end, +} diff --git a/tex/context/interface/mkii/keys-en.xml b/tex/context/interface/mkii/keys-en.xml index 3b554fabd..3b2b69e0b 100644 --- a/tex/context/interface/mkii/keys-en.xml +++ b/tex/context/interface/mkii/keys-en.xml @@ -643,6 +643,7 @@ <cd:constant name='aligntitle' value='aligntitle'/> <cd:constant name='alternative' value='alternative'/> <cd:constant name='anchor' value='anchor'/> + <cd:constant name='anchoring' value='anchoring'/> <cd:constant name='andtext' value='andtext'/> <cd:constant name='apa' value='apa'/> <cd:constant name='arguments' value='arguments'/> @@ -872,6 +873,7 @@ <cd:constant name='hfil' value='hfil'/> <cd:constant name='hidenumber' value='hidenumber'/> <cd:constant name='hoffset' value='hoffset'/> + <cd:constant name='horizontal' value='horizontal'/> <cd:constant name='horoffset' value='horoffset'/> <cd:constant name='hyphen' value='hyphen'/> <cd:constant name='hyphens' value='hyphens'/> @@ -972,9 +974,12 @@ <cd:constant name='menu' value='menu'/> <cd:constant name='method' value='method'/> <cd:constant name='middle' value='middle'/> + <cd:constant name='middlecolor' value='middlecolor'/> <cd:constant name='middlecommand' value='middlecommand'/> <cd:constant name='middlespeech' value='middlespeech'/> + <cd:constant name='middlestyle' value='middlestyle'/> <cd:constant name='middletext' value='middletext'/> + <cd:constant name='middlewidth' value='middlewidth'/> <cd:constant name='midsentence' value='midsentence'/> <cd:constant name='min' value='min'/> <cd:constant name='mindepth' value='mindepth'/> @@ -1292,6 +1297,7 @@ <cd:constant name='vcompact' value='vcompact'/> <cd:constant name='vector' value='vector'/> <cd:constant name='veroffset' value='veroffset'/> + <cd:constant name='vertical' value='vertical'/> <cd:constant name='vfactor' value='vfactor'/> <cd:constant name='vfil' value='vfil'/> <cd:constant name='viewerprefix' value='viewerprefix'/> @@ -1302,6 +1308,7 @@ <cd:constant name='white' value='white'/> <cd:constant name='width' value='width'/> <cd:constant name='words' value='words'/> + <cd:constant name='xanchor' value='xanchor'/> <cd:constant name='xfactor' value='xfactor'/> <cd:constant name='xhtml' value='xhtml'/> <cd:constant name='xmax' value='xmax'/> @@ -1309,6 +1316,7 @@ <cd:constant name='xoffset' value='xoffset'/> <cd:constant name='xscale' value='xscale'/> <cd:constant name='xstep' value='xstep'/> + <cd:constant name='yanchor' value='yanchor'/> <cd:constant name='yfactor' value='yfactor'/> <cd:constant name='ymax' value='ymax'/> <cd:constant name='yoffset' value='yoffset'/> diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf Binary files differindex 1db2bc0f7..b4bc1a04e 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex 32cb31641..4bd125888 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index f858dfc1a..26baa531e 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 08/20/19 17:20:16 +-- merge date : 08/24/19 22:42:50 do -- begin closure to overcome local limits and interference |