diff options
author | Hans Hagen <pragma@wxs.nl> | 2014-03-28 15:04:00 +0100 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2014-03-28 15:04:00 +0100 |
commit | f7aace89a32537ea222b2f1538c6262a313e74ce (patch) | |
tree | bd00711f48aec8d8b8533ca7c7e652aa7f90c629 /tex/context/base/spac-ver.lua | |
parent | e5ba425c9b486d5f4d32057e000bd7f6d91a2dde (diff) | |
download | context-f7aace89a32537ea222b2f1538c6262a313e74ce.tar.gz |
beta 2014.03.28 15:04
Diffstat (limited to 'tex/context/base/spac-ver.lua')
-rw-r--r-- | tex/context/base/spac-ver.lua | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/tex/context/base/spac-ver.lua b/tex/context/base/spac-ver.lua index 87f645cd1..3f1fd5c82 100644 --- a/tex/context/base/spac-ver.lua +++ b/tex/context/base/spac-ver.lua @@ -8,7 +8,8 @@ if not modules then modules = { } end modules ['spac-ver'] = { -- we also need to call the spacer for inserts! --- todo: directly set skips +-- todo: use lua nodes with lua data (>0.79) +-- see ** can go when 0.79 -- this code dates from the beginning and is kind of experimental; it -- will be optimized and improved soon @@ -120,8 +121,8 @@ builders.vspacing = vspacing local vspacingdata = vspacing.data or { } vspacing.data = vspacingdata -vspacingdata.snapmethods = vspacingdata.snapmethods or { } -local snapmethods = vspacingdata.snapmethods --maybe some older code can go +local snapmethods = vspacingdata.snapmethods or { } +vspacingdata.snapmethods = snapmethods storage.register("builders/vspacing/data/snapmethods", snapmethods, "builders.vspacing.data.snapmethods") @@ -901,6 +902,8 @@ local function check_experimental_overlay(head,current) -- todo local c = current local n = nil +setfield(head,"prev",nil) -- till we have 0.79 ** + local function overlay(p, n, s, mvl) local c = getprev(n) while c and c ~= p do @@ -1011,7 +1014,17 @@ local function collapser(head,where,what,trace,snap,a_snapmethod) -- maybe also if penalty_data then local p = new_penalty(penalty_data) if trace then trace_done("flushed due to " .. why,p) end +if penalty_data >= 10000 then -- or whatever threshold? + local prev = getprev(current) + if getid(prev) == glue_code then -- maybe go back more, or maybe even push back before any glue + -- tricky case: spacing/grid-007.tex: glue penalty glue + head = insert_node_before(head,prev,p) + else head = insert_node_before(head,current,p) + end +else + head = insert_node_before(head,current,p) +end end if glue_data then local spec = getfield(glue_data,"spec") |