summaryrefslogtreecommitdiff
path: root/tex/context/base
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2020-01-26 19:35:43 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2020-01-26 19:35:43 +0100
commit43fc66771a0c9d27cc0b7fe7a69392ea313bd0ca (patch)
tree9b339c63cd28528e5062fe980e964808df619374 /tex/context/base
parent5189b2143a30a39cd3533569cbef3f06422cc1d9 (diff)
downloadcontext-43fc66771a0c9d27cc0b7fe7a69392ea313bd0ca.tar.gz
2020-01-26 18:37:00
Diffstat (limited to 'tex/context/base')
-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/mkiv/attr-ini.mkiv6
-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.mkxl2
-rw-r--r--tex/context/base/mkiv/data-exp.lua2
-rw-r--r--tex/context/base/mkiv/data-res.lua2
-rw-r--r--tex/context/base/mkiv/lpdf-emb.lua2
-rw-r--r--tex/context/base/mkiv/luat-cnf.lua6
-rw-r--r--tex/context/base/mkiv/luat-cod.lua3
-rw-r--r--tex/context/base/mkiv/luat-sto.lua2
-rw-r--r--tex/context/base/mkiv/mlib-mat.lua4
-rw-r--r--tex/context/base/mkiv/mult-sys.mkiv4
-rw-r--r--tex/context/base/mkiv/node-fin.lua110
-rw-r--r--tex/context/base/mkiv/node-res.lua13
-rw-r--r--tex/context/base/mkiv/page-ffl.mkiv58
-rw-r--r--tex/context/base/mkiv/page-flt.mkiv4
-rw-r--r--tex/context/base/mkiv/page-ini.lua32
-rw-r--r--tex/context/base/mkiv/page-ini.mkiv5
-rw-r--r--tex/context/base/mkiv/page-one.mkiv8
-rw-r--r--tex/context/base/mkiv/page-otr.mkvi4
-rw-r--r--tex/context/base/mkiv/page-run.lua4
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26724 -> 26743 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin269636 -> 269677 bytes
-rw-r--r--tex/context/base/mkiv/strc-itm.lua4
-rw-r--r--tex/context/base/mkiv/syst-lua.mkiv2
-rw-r--r--tex/context/base/mkiv/syst-lua.mkxl2
-rw-r--r--tex/context/base/mkiv/typo-chr.lua14
-rw-r--r--tex/context/base/mkiv/typo-chr.mkiv3
30 files changed, 236 insertions, 68 deletions
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 20cc26b93..9e0025e0f 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2020.01.15 19:09}
+\newcontextversion{2020.01.26 18:34}
%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 87441059d..aa7c02cf4 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.01.15 19:09}
+\edef\contextversion{2020.01.26 18:34}
%D For those who want to use this:
diff --git a/tex/context/base/mkiv/attr-ini.mkiv b/tex/context/base/mkiv/attr-ini.mkiv
index e4215ff00..49a1126b9 100644
--- a/tex/context/base/mkiv/attr-ini.mkiv
+++ b/tex/context/base/mkiv/attr-ini.mkiv
@@ -185,6 +185,12 @@
\unexpanded\def\showattributes{\clf_showattributes}
+%D Todo:
+
+% \appendtoks
+% \clf_cleanupattributes
+% \to \everyafterpagebreak
+
\protect \endinput
% for the luatex list:
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index ce1abd040..2cc2a1098 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2020.01.15 19:09}
+\newcontextversion{2020.01.26 18:34}
%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 f75556d26..d4206a4e8 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.01.15 19:09}
+\edef\contextversion{2020.01.26 18:34}
\edef\contextkind {beta}
%D Kind of special:
diff --git a/tex/context/base/mkiv/context.mkxl b/tex/context/base/mkiv/context.mkxl
index c3954baee..1b4da4e96 100644
--- a/tex/context/base/mkiv/context.mkxl
+++ b/tex/context/base/mkiv/context.mkxl
@@ -29,7 +29,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2020.01.15 19:09}
+\edef\contextversion{2020.01.26 18:34}
\edef\contextkind {beta}
%D Kind of special:
diff --git a/tex/context/base/mkiv/data-exp.lua b/tex/context/base/mkiv/data-exp.lua
index 1ebdeb1e5..98c2f6839 100644
--- a/tex/context/base/mkiv/data-exp.lua
+++ b/tex/context/base/mkiv/data-exp.lua
@@ -198,7 +198,7 @@ local function expandedhome()
return usedhomedir
end
-local dohome = ((P("~")+P("$HOME")+P("%HOME%"))/expandedhome)^0
+local dohome = ((P("~") + P("$HOME") + P("%HOME%")) / expandedhome)^0
local cleanup = Cs(donegation * dohome * doslashes)
resolvers.cleanpath = function(str)
diff --git a/tex/context/base/mkiv/data-res.lua b/tex/context/base/mkiv/data-res.lua
index d8ad81656..8afc09b97 100644
--- a/tex/context/base/mkiv/data-res.lua
+++ b/tex/context/base/mkiv/data-res.lua
@@ -744,7 +744,7 @@ variable = function(name)
end
expansion = function(name)
- local expansions =instance.expansions
+ local expansions = instance.expansions
local name = name and lpegmatch(dollarstripper,name)
local result = name and expansions[name]
return result ~= nil and result or ""
diff --git a/tex/context/base/mkiv/lpdf-emb.lua b/tex/context/base/mkiv/lpdf-emb.lua
index 8fb211a2d..8db2ecaf1 100644
--- a/tex/context/base/mkiv/lpdf-emb.lua
+++ b/tex/context/base/mkiv/lpdf-emb.lua
@@ -51,8 +51,6 @@ local pdfreserveobject = lpdf.reserveobject
local pdfflushobject = lpdf.flushobject
local pdfflushstreamobject = lpdf.flushstreamobject
-local fontstreams = fonts.hashes.streams
-
local report_fonts = logs.reporter("backend","fonts")
local trace_fonts = false
diff --git a/tex/context/base/mkiv/luat-cnf.lua b/tex/context/base/mkiv/luat-cnf.lua
index a39106744..4939b05c3 100644
--- a/tex/context/base/mkiv/luat-cnf.lua
+++ b/tex/context/base/mkiv/luat-cnf.lua
@@ -31,7 +31,7 @@ texconfig.param_size = 25000
texconfig.save_size = 100000
texconfig.stack_size = 10000
texconfig.function_size = 32768
-texconfig.properties_size = 262144 -- after that, we're a hash
+texconfig.properties_size = 10000
texconfig.fix_mem_init = 750000
local stub = [[
@@ -145,7 +145,7 @@ function texconfig.init()
local getbytecode = lua.getbytecode
local callbytecode = lua.callbytecode or function(i)
local b = getbytecode(i)
- if b then
+ if type(b) == "function" then
b()
return true
else
@@ -160,7 +160,7 @@ function texconfig.init()
-- local b = callbytecode(i)
local e, b = pcall(callbytecode,i)
if not e then
- print("\nfatal error : unable to load bytecode, maybe wipe the cache first\n")
+ print(string.format("\nfatal error : unable to load bytecode register %%i, maybe wipe the cache first\n",i))
os.exit()
end
if b then
diff --git a/tex/context/base/mkiv/luat-cod.lua b/tex/context/base/mkiv/luat-cod.lua
index f38966443..51eab5a1d 100644
--- a/tex/context/base/mkiv/luat-cod.lua
+++ b/tex/context/base/mkiv/luat-cod.lua
@@ -31,12 +31,11 @@ texconfig.param_size = 25000
texconfig.save_size = 100000
texconfig.stack_size = 10000
texconfig.function_size = 32768
-texconfig.properties_size = 262144 -- nuts are actually kind of pointers (so we jump by size)
+texconfig.properties_size = 10000
texconfig.fix_mem_init = 750000
-- registering bytecode chunks
------ bytecode = lua.bytecode or { } -- we use functions
local bytedata = lua.bytedata or { }
local bytedone = lua.bytedone or { }
diff --git a/tex/context/base/mkiv/luat-sto.lua b/tex/context/base/mkiv/luat-sto.lua
index ce891765a..620de9a15 100644
--- a/tex/context/base/mkiv/luat-sto.lua
+++ b/tex/context/base/mkiv/luat-sto.lua
@@ -72,7 +72,7 @@ if environment.initex then
end
local dumped = serialize(original,target)
if trace_storage then
- report_storage('saving %a in slot %a, size %s',message,max,#dumped)
+ report_storage("saving %a in slot %a, size %s",message,max,#dumped)
end
-- we don't need tracing in such tables
dumped = concat({ definition, comment, dumped },"\n")
diff --git a/tex/context/base/mkiv/mlib-mat.lua b/tex/context/base/mkiv/mlib-mat.lua
index 4646a8979..6c82a4658 100644
--- a/tex/context/base/mkiv/mlib-mat.lua
+++ b/tex/context/base/mkiv/mlib-mat.lua
@@ -80,6 +80,10 @@ local m_y0 = m.y0 registerscript("m_y0", function() return
local m_y1 = m.y1 registerscript("m_y1", function() return m_y1 (scannumeric()) end)
local m_yn = m.yn registerscript("m_yn", function() return m_yn (scanpair ()) end)
+if not (c and c.sin) then
+ return
+end
+
local c_topair = c.topair
local c_new = c.new
diff --git a/tex/context/base/mkiv/mult-sys.mkiv b/tex/context/base/mkiv/mult-sys.mkiv
index 14619316e..8f8794df7 100644
--- a/tex/context/base/mkiv/mult-sys.mkiv
+++ b/tex/context/base/mkiv/mult-sys.mkiv
@@ -460,6 +460,10 @@
\definesystemconstant {xoffset}
\definesystemconstant {yoffset}
+\definesystemconstant {topfloat}
+\definesystemconstant {bottomfloat}
+\definesystemconstant {pagefloat}
+
%D As the name of their define command states, the next set of constants is used in
%D the message macro's.
diff --git a/tex/context/base/mkiv/node-fin.lua b/tex/context/base/mkiv/node-fin.lua
index 02c359174..a848cef69 100644
--- a/tex/context/base/mkiv/node-fin.lua
+++ b/tex/context/base/mkiv/node-fin.lua
@@ -12,10 +12,12 @@ if not modules then modules = { } end modules ['node-fin'] = {
-- leaders are also triggers ... see colo-ext for an example (negate a box)
local next, type, format = next, type, string.format
+local setmetatableindex = table.setmetatableindex
local attributes, nodes, node = attributes, nodes, node
local nuts = nodes.nuts
+local tonut = nodes.tonut
local getnext = nuts.getnext
local getid = nuts.getid
@@ -26,6 +28,7 @@ local getwidth = nuts.getwidth
local getwhd = nuts.getwhd
local getorientation = nuts.getorientation
local has_dimensions = nuts.has_dimensions
+local getbox = nuts.getbox
local setlist = nuts.setlist
local setleader = nuts.setleader
@@ -39,16 +42,9 @@ local nextnode = nuts.traversers.node
local nodecodes = nodes.nodecodes
local rulecodes = nodes.rulecodes
------ normalrule_code = rulecodes.normal
local boxrule_code = rulecodes.box
local imagerule_code = rulecodes.image
local emptyrule_code = rulecodes.empty
------ userrule_code = rulecodes.user
------ overrule_code = rulecodes.over
------ underrule_code = rulecodes.under
------ fractionrule_code = rulecodes.fraction
------ radicalrule_code = rulecodes.radical
------ outlinerule_code = rulecodes.outline
local glyph_code = nodecodes.glyph
local disc_code = nodecodes.disc
@@ -57,6 +53,9 @@ local rule_code = nodecodes.rule
local hlist_code = nodecodes.hlist
local vlist_code = nodecodes.vlist
+local texlists = tex.lists
+local texgetnest = tex.getnest
+
local states = attributes.states
local numbers = attributes.numbers
local a_trigger = attributes.private('trigger')
@@ -635,3 +634,100 @@ end
statistics.register("attribute processing time", function()
return statistics.elapsedseconds(attributes,"front- and backend")
end)
+
+-- -- --
+
+do
+
+ local cleaners = { }
+ local trace = true -- false
+
+ function attributes.cleanup()
+ if next(cleaners) then
+ local values = setmetatableindex("table")
+
+ if trace then
+ starttiming(values)
+ end
+
+ local function check(l)
+ for n, id in nextnode, l do
+ if id == hlist_code or id == vlist_code or id == glue_code then
+ local l = getlist(n)
+ if l then
+ check(l)
+ end
+ end
+ for a in next, cleaners do
+ local v = getattr(n,a)
+ if v then
+ -- values[a] = values[a] + 1
+ values[a][v] = true
+ end
+ end
+ end
+ end
+
+ local top = texgetnest("ptr")
+ for i=1,top do
+ local l = texgetnest(i)
+ if l then
+ check(tonut(l.head))
+ end
+ end
+
+ do local l
+ l = tonut(texlists.page_ins_head) if l then check(l) end
+ l = tonut(texlists.contrib_head) if l then check(l) end
+ l = tonut(texlists.page_discards_head) if l then check(l) end
+ l = tonut(texlists.split_discards_head) if l then check(l) end
+ l = tonut(texlists.page_head) if l then check(l) end
+ end
+
+ -- todo: traverseboxes
+
+ for i=0,65535 do
+ local b = getbox(i)
+ if b then
+ local l = getlist(b)
+ if l then
+ check(l)
+ end
+ end
+ end
+
+ for a, t in next, values do
+ cleaners[a](a,t)
+ end
+
+ if trace then
+ stoptiming(values)
+ local a = table.sortedkeys(values)
+ local t = statistics.elapsedtime(values)
+ local r = tex.getcount("realpageno")
+ if #a == 0 then
+ logs.report("attributes","cleaning up at page %i took %s seconds, no attributes",r,t)
+ else
+ logs.report("attributes","cleaning up at page %i took %s seconds, attributes: % t",r,t,a)
+ end
+ end
+ end
+ end
+
+ -- not yet used but when we do ... delay a call till we enable it (attr-ini.mkiv)
+
+ -- local function show(a,t) for k, v in next, t do print(a,k) end end
+ --
+ -- attributes.registercleaner( 1, show)
+ -- attributes.registercleaner( 2, show)
+
+ function attributes.registercleaner(a,f)
+ cleaners[a] = f
+ end
+
+ implement {
+ name = "cleanupattributes",
+ actions = attributes.cleanup,
+ }
+
+end
diff --git a/tex/context/base/mkiv/node-res.lua b/tex/context/base/mkiv/node-res.lua
index 4347fad47..a27f5c4e5 100644
--- a/tex/context/base/mkiv/node-res.lua
+++ b/tex/context/base/mkiv/node-res.lua
@@ -559,8 +559,7 @@ local function cleanup(nofboxes) -- todo
return nr, nl, nofboxes -- can be nil
end
-
-local function usage()
+local usage = CONTEXTLMTXMODE > 0 and node.inuse or function()
local t = { }
for n, tag in gmatch(status.node_mem_usage,"(%d+) ([a-z_]+)") do
t[tag] = tonumber(n) or 0
@@ -581,9 +580,13 @@ statistics.register("cleaned up reserved nodes", function()
end) -- \topofboxstack
statistics.register("node memory usage", function() -- comes after cleanup !
- local usage = status.node_mem_usage
- if usage ~= "" then
- return usage
+ local used = usage()
+ if next(used) then
+ local t, n = { }, 0
+ for k, v in table.sortedhash(used) do
+ n = n + 1 ; t[n] = format("%s %s",v,k)
+ end
+ return table.concat(t,", ")
end
end)
diff --git a/tex/context/base/mkiv/page-ffl.mkiv b/tex/context/base/mkiv/page-ffl.mkiv
index 306c19790..176c4a185 100644
--- a/tex/context/base/mkiv/page-ffl.mkiv
+++ b/tex/context/base/mkiv/page-ffl.mkiv
@@ -65,7 +65,7 @@
\c!inbetween={\blank[\v!big]},
%\c!style,
%\c!color,
- \c!page=\v!yes]
+ \c!page=\v!left]
\appendtoks
\ifx\currentfacingfloatparent\empty
@@ -74,8 +74,8 @@
\fi
\to \everydefinefacingfloat
-\newcount\c_strc_floats_saved
-\newcount\c_strc_floats_flushed
+\newcount\c_strc_floats_facing_saved
+\newcount\c_strc_floats_facing_flushed
\newbox\b_strc_floats_facing_l
\newbox\b_strc_floats_facing_r
@@ -83,12 +83,24 @@
\let\m_strc_floats_state\relax
\def\strc_floats_facing_flush
- {\ifnum\c_strc_floats_flushed<\c_strc_floats_saved
- \strc_floats_facing_flush_indeed % less tracing
+ {\ifnum\c_strc_floats_facing_flushed<\c_strc_floats_facing_saved
+ \ifodd\c_strc_floats_facing_flushed
+ \ifodd\realpageno
+ \strc_floats_facing_flush_indeed
+ \doifelsependingpagecontent\relax{\null\page}%
+ \else
+ \fi
+ \else
+ \ifodd\realpageno
+ \else
+ \strc_floats_facing_flush_indeed
+ \doifelsependingpagecontent\relax{\null\page}%
+ \fi
+ \fi
\fi}
\def\strc_floats_facing_flush_indeed
- {\global\advance\c_strc_floats_flushed\plusone
+ {\global\advance\c_strc_floats_facing_flushed\plusone
\floatingpenalty\zerocount
\insert\namedinsertionnumber\s!topfloat\bgroup
\forgetall
@@ -100,12 +112,12 @@
\prevdepth\maxdimen
\fi
\fi
- \directboxfromcache{\currentfacingfloat}{\number\c_strc_floats_flushed}%
+ \directboxfromcache{\currentfacingfloat}{\number\c_strc_floats_facing_flushed}%
\vkern\s_page_one_between_top_insert
\egroup
- \ifnum\c_strc_floats_saved=\c_strc_floats_flushed
- \global\c_strc_floats_saved \zerocount
- \global\c_strc_floats_flushed\zerocount
+ \ifnum\c_strc_floats_facing_saved=\c_strc_floats_facing_flushed
+ \global\c_strc_floats_facing_saved \zerocount
+ \global\c_strc_floats_facing_flushed\zerocount
\resetboxesincache{\currentfacingfloat}%
\fi}
@@ -145,34 +157,34 @@
\fi\fi}
\unexpanded\def\strc_floats_facing_handle
- {\strc_floats_facing_collect
- \doifnextbgroupelse
+ {\doifnextbgroupelse
\strc_floats_facing_handle_indeed
- \strc_floats_wrap_up}
+ \strc_floats_facing_wrap_up}
\unexpanded\def\strc_floats_facing_handle_indeed
{\dowithnextboxcontent
\strc_floats_facing_setup
- \strc_floats_facing_handle
+ {\strc_floats_facing_collect\strc_floats_facing_handle}
\vbox}
\unexpanded\def\startfacingfloat[#1]%
{\begingroup
% todo: \usepageparameter
- \edef\p_page{\facingfloatparameter\c!page}%
- \ifx\p_page\empty
- \page[\p_page]%
- \fi
+% \edef\p_page{\facingfloatparameter\c!page}%
+% \ifx\p_page\empty\else
+% \page[\p_page]%
+% \fi
%
\let\startcontent\bgroup
\let\stopcontent\egroup
\def\currentfacingfloat{#1}%
+ \let\m_strc_floats_state\v!left
\strc_floats_facing_handle}
\unexpanded\def\stopfacingfloat
{\endgroup}
-\unexpanded\def\strc_floats_wrap_up
+\unexpanded\def\strc_floats_facing_wrap_up
{\edef\p_spaceinbetween{\facingfloatparameter\c!spaceinbetween}%
\ifx\p_spaceinbetween\empty
\scratchdimen\zeropoint
@@ -208,13 +220,9 @@
\else
\setbox\scratchbox\vbox to \textheight{\box\scratchbox\vss}%
\fi
- \global\advance\c_strc_floats_saved\plusone
- \putboxincache{\currentfacingfloat}{\number\c_strc_floats_saved}\scratchbox
+ \global\advance\c_strc_floats_facing_saved\plusone
+ \putboxincache{\currentfacingfloat}{\number\c_strc_floats_facing_saved}\scratchbox
\endgroup
\fi}
-\appendtoks
- \strc_floats_facing_flush
-\to \everyafteroutput
-
\protect \endinput
diff --git a/tex/context/base/mkiv/page-flt.mkiv b/tex/context/base/mkiv/page-flt.mkiv
index e72ae314a..01ee8b689 100644
--- a/tex/context/base/mkiv/page-flt.mkiv
+++ b/tex/context/base/mkiv/page-flt.mkiv
@@ -20,10 +20,6 @@
\unprotect
-\ifdefined\s!topfloat \else \def\s!topfloat {topfloat} \fi
-\ifdefined\s!bottomfloat \else \def\s!bottomfloat{bottomfloat} \fi
-\ifdefined\s!pagefloat \else \def\s!pagefloat {pagefloat} \fi
-
\defineinsertion[\s!topfloat]
\defineinsertion[\s!bottomfloat]
\defineinsertion[\s!pagefloat]
diff --git a/tex/context/base/mkiv/page-ini.lua b/tex/context/base/mkiv/page-ini.lua
index 3d5534128..17f4c44da 100644
--- a/tex/context/base/mkiv/page-ini.lua
+++ b/tex/context/base/mkiv/page-ini.lua
@@ -16,6 +16,8 @@ local texgetcount = tex.getcount
local context = context
local ctx_doifelse = commands.doifelse
+local implement = interfaces.implement
+
local data = table.setmetatableindex("table")
local last = 0
local pages = structures.pages
@@ -177,19 +179,19 @@ luatex.registerpageactions(function()
end
end)
-interfaces.implement {
+implement {
name = "markpage",
arguments = "2 strings",
actions = pages.mark
}
-interfaces.implement {
+implement {
name = "doifelsemarkedpage",
arguments = "string",
actions = { marked, ctx_doifelse }
}
-interfaces.implement {
+implement {
name = "markedpages",
arguments = "string",
actions = function(name)
@@ -200,7 +202,7 @@ interfaces.implement {
end
}
-interfaces.implement {
+implement {
name = "startmarkpages",
arguments = "string",
actions = function(name)
@@ -208,7 +210,7 @@ interfaces.implement {
end
}
-interfaces.implement {
+implement {
name = "stopmarkpages",
arguments = "string",
actions = function(name)
@@ -217,3 +219,23 @@ interfaces.implement {
end
end
}
+
+local tonut = nodes.tonut
+local nextlist = nodes.nuts.traversers.list
+local texlists = tex.lists
+
+implement {
+ name = "doifelsependingpagecontent",
+ actions = function()
+ local h = texlists.contrib_head
+ -- local t = texlists.contrib_tail
+ local p = false
+ if h then
+ for n in nextlist, tonut(h) do
+ p = true
+ break
+ end
+ end
+ ctx_doifelse(p)
+ end,
+}
diff --git a/tex/context/base/mkiv/page-ini.mkiv b/tex/context/base/mkiv/page-ini.mkiv
index b1e3e7f8a..e56c3ac04 100644
--- a/tex/context/base/mkiv/page-ini.mkiv
+++ b/tex/context/base/mkiv/page-ini.mkiv
@@ -162,6 +162,7 @@
\strc_pagenumbers_increment_counters % should hook into an every
\page_adapts_synchronize
\page_otr_check_for_pending_inserts
+ \page_otr_command_flush_facing_floats
\page_floats_flush_page_floats % before postponed blocks
\page_spread_flush % defined later
\ifnum#3=\plusone
@@ -375,4 +376,8 @@
% \unexpanded\def\forcestrutdepth
% {\par\ifvmode\ifinner\else\doforcestrutdepth\fi\fi}
+% Also experimental:
+
+\unexpanded\def\doifelsependingpagecontent{\clf_doifelsependingpagecontent}
+
\protect \endinput
diff --git a/tex/context/base/mkiv/page-one.mkiv b/tex/context/base/mkiv/page-one.mkiv
index 31b4e22d9..85ed76da1 100644
--- a/tex/context/base/mkiv/page-one.mkiv
+++ b/tex/context/base/mkiv/page-one.mkiv
@@ -680,6 +680,9 @@
\endgroup
\fi}
+\unexpanded\def\page_one_command_flush_facing_floats
+ {\strc_floats_facing_flush}
+
\defineoutputroutine
[\s!singlecolumn]
[\s!page_otr_command_routine =\page_one_command_routine,
@@ -703,8 +706,9 @@
\s!page_otr_command_flush_saved_floats =\page_one_command_flush_saved_floats,
\s!page_otr_command_flush_all_floats =\page_one_command_flush_all_floats,
\s!page_otr_command_flush_margin_blocks =\page_one_command_flush_margin_blocks,
- \s!page_otr_command_test_column =\page_one_command_test_page
- ]
+ \s!page_otr_command_test_column =\page_one_command_test_page,
+ \s!page_otr_command_flush_facing_floats =\page_one_command_flush_facing_floats
+]
% \setupoutputroutine
% [\s!singlecolumn]
diff --git a/tex/context/base/mkiv/page-otr.mkvi b/tex/context/base/mkiv/page-otr.mkvi
index 909f5cd4d..6feb15a9d 100644
--- a/tex/context/base/mkiv/page-otr.mkvi
+++ b/tex/context/base/mkiv/page-otr.mkvi
@@ -285,6 +285,7 @@
\definesystemconstant{page_otr_command_flush_all_floats}
\definesystemconstant{page_otr_command_flush_margin_blocks}
\definesystemconstant{page_otr_command_test_column}
+\definesystemconstant{page_otr_command_flush_facing_floats}
\definesystemconstant{singlecolumn}
\definesystemconstant{multicolumn} % will move
@@ -313,7 +314,8 @@
\s!page_otr_command_flush_saved_floats,
\s!page_otr_command_flush_all_floats,
\s!page_otr_command_flush_margin_blocks,
- \s!page_otr_command_test_column]
+ \s!page_otr_command_test_column,
+ \s!page_otr_command_flush_facing_floats]
\appendtoks
\setupoutputroutine[\s!singlecolumn]%
diff --git a/tex/context/base/mkiv/page-run.lua b/tex/context/base/mkiv/page-run.lua
index 53331fc0e..cb8cf0311 100644
--- a/tex/context/base/mkiv/page-run.lua
+++ b/tex/context/base/mkiv/page-run.lua
@@ -200,8 +200,8 @@ function commands.showusage()
report(" string pointer : %s of %s", status.str_ptr, status.max_strings + status.init_str_ptr)
report(" pool size : %s", status.pool_size)
report("")
- report(" node memory usage : %s of %s", status.node_mem_usage, status.var_mem_max)
- report(" fixex memory end : %s of %s", status.fix_mem_end, status.fix_mem_max)
+ report(" node memory usage : %s of %s", status.var_used, status.var_mem_max)
+ report(" token memory usage : %s of %s", status.dyn_used, status.fix_mem_max)
report("")
report(" cs count : %s of %s", status.cs_count, status.hash_size + status.hash_extra)
report("")
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index f0a77a5a9..b7c571975 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 eeda6094f..453fc01db 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/strc-itm.lua b/tex/context/base/mkiv/strc-itm.lua
index adec591c1..e2fbdc960 100644
--- a/tex/context/base/mkiv/strc-itm.lua
+++ b/tex/context/base/mkiv/strc-itm.lua
@@ -36,8 +36,8 @@ local function analyzeitemgroup(name,level)
local stamp = f_stamp(name,n)
local n = getvariable(stamp,level,1,0)
local w = getvariable(stamp,level,2,0)
- texsetcount("local","c_strc_itemgroups_max_items",n)
- texsetdimen("local","d_strc_itemgroups_max_width",w)
+ texsetcount("c_strc_itemgroups_max_items",n)
+ texsetdimen("d_strc_itemgroups_max_width",w)
end
local function registeritemgroup(name,level,nofitems,maxwidth)
diff --git a/tex/context/base/mkiv/syst-lua.mkiv b/tex/context/base/mkiv/syst-lua.mkiv
index 0e2769d04..d275acd7d 100644
--- a/tex/context/base/mkiv/syst-lua.mkiv
+++ b/tex/context/base/mkiv/syst-lua.mkiv
@@ -118,4 +118,6 @@
%D The \MKIV\ version is a bit more limited than the \LMTX\ version because it only
%D supports the standard math functions.
+% maybe: \let\texexpr\expression
+
\protect \endinput
diff --git a/tex/context/base/mkiv/syst-lua.mkxl b/tex/context/base/mkiv/syst-lua.mkxl
index cceb4f160..cf20c3341 100644
--- a/tex/context/base/mkiv/syst-lua.mkxl
+++ b/tex/context/base/mkiv/syst-lua.mkxl
@@ -95,4 +95,6 @@
%D The \LMTX\ version supports te \type {xmath} and \type {xcomplex} functions and
%D therefore one can have expressions that don't work in \MKIV.
+% maybe: \let\texexpr\expression
+
\protect \endinput
diff --git a/tex/context/base/mkiv/typo-chr.lua b/tex/context/base/mkiv/typo-chr.lua
index 966df6098..7a0f1fd75 100644
--- a/tex/context/base/mkiv/typo-chr.lua
+++ b/tex/context/base/mkiv/typo-chr.lua
@@ -188,6 +188,14 @@ local function pickup(head,tail,str)
end
end
+local function found(str)
+ local list = texgetnest()
+ if list then
+ local tail = list.tail
+ return tail and tail[a_marked] == marked[str]
+ end
+end
+
local actions = {
remove = function(specification)
local list = texgetnest()
@@ -254,6 +262,12 @@ interfaces.implement {
arguments = "string",
}
+interfaces.implement {
+ name = "doifelsemarkedcontent",
+ actions = function(str) ctx_doifelse(found(str)) end,
+ arguments = "string",
+}
+
-- We just put these here.
interfaces.implement {
diff --git a/tex/context/base/mkiv/typo-chr.mkiv b/tex/context/base/mkiv/typo-chr.mkiv
index 7da783ceb..a648d4588 100644
--- a/tex/context/base/mkiv/typo-chr.mkiv
+++ b/tex/context/base/mkiv/typo-chr.mkiv
@@ -78,6 +78,9 @@
\def\typo_marked_remove[#1]%
{\clf_pickupmarkedcontent action{remove}mark{#1}\relax}
+\unexpanded\def\doifelsemarkedcontent#1%
+ {\clf_doifelsemarkedcontent{#1}}
+
%D A few helpers (put here for convenience):
%D
%D \starttyping