summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-en.mkii8
-rw-r--r--tex/context/base/mkiv/colo-ini.lua54
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkxl4
-rw-r--r--tex/context/base/mkiv/mlib-lmp.lua17
-rw-r--r--tex/context/base/mkiv/mlib-lua.lua114
-rw-r--r--tex/context/base/mkiv/mlib-scn.lua103
-rw-r--r--tex/context/base/mkiv/mult-mps.lua2
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26616 -> 26096 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin267867 -> 230173 bytes
-rw-r--r--tex/context/base/mkiv/supp-box.lua12
-rw-r--r--tex/context/base/mkiv/syst-con.lua8
-rw-r--r--tex/context/interface/mkii/keys-en.xml8
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin893320 -> 917677 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin61165 -> 24422 bytes
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
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
index bb3bed49a..13031a23c 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index 1a4c6ffb3..640a7f161 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
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
index 1db2bc0f7..b4bc1a04e 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index 32cb31641..4bd125888 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
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