diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-02-19 19:19:07 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2018-02-19 19:19:07 +0100 |
commit | 9bb459e9fedcad94579973ccd07ad9e78d0734c8 (patch) | |
tree | e01ac3174e8891a6e6004c88cb46f220312a2bfc /tex/context/base/mkiv/spac-ver.lua | |
parent | 5321d35d68ce0acb71b46bddac1d8cab8eca3fcc (diff) | |
download | context-9bb459e9fedcad94579973ccd07ad9e78d0734c8.tar.gz |
2018-02-19 19:05:00
Diffstat (limited to 'tex/context/base/mkiv/spac-ver.lua')
-rw-r--r-- | tex/context/base/mkiv/spac-ver.lua | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/tex/context/base/mkiv/spac-ver.lua b/tex/context/base/mkiv/spac-ver.lua index 67363c4ed..1cd78ce70 100644 --- a/tex/context/base/mkiv/spac-ver.lua +++ b/tex/context/base/mkiv/spac-ver.lua @@ -53,6 +53,7 @@ local texgetdimen = tex.getdimen local texset = tex.set local texsetdimen = tex.setdimen local texnest = tex.nest +local texgetbox = tex.getbox local buildpage = tex.triggerbuildpage @@ -2005,20 +2006,50 @@ do directives.register("vspacing.resetprevdepth",function(v) reset = v end) trackers.register ("vspacing.resetprevdepth",function(v) trace = v end) + -- use getid and getnext + function vspacing.resetprevdepth() if reset then local head = texlists.hold_head - local skip = 0 - while head and head.id == insert_code do - head = head.next - skip = skip + 1 - end if head then - outer.prevdepth = 0 + head = tonut(head) + local skip = 0 + while head and getid(head) == insert_code do + head = getnext(head) + skip = skip + 1 + end + if head then + outer.prevdepth = 0 + end + if trace then + report("prevdepth %s at page %i, skipped %i, value %p", + head and "reset" or "kept",texgetcount("realpageno"),skip,outer.prevdepth) + end end - if trace then - report("prevdepth %s at page %i, skipped %i, value %p", - head and "reset" or "kept",texgetcount("realpageno"),skip,outer.prevdepth) + end + end + + local trace = false + + trackers.register("vspacing.forcestrutdepth",function(v) trace = v end) + + function vspacing.forcestrutdepth(n,depth,trace_mode) + local box = texgetbox(n) + if box then + box = tonut(box) + local dp = getdepth(box) + if dp < depth then + local head = getlist(box) + if head then + local tail = find_node_tail(head) + if tail and getid(tail) == hlist_code then + setdepth(tail,depth) + outer.prevdepth = depth + if trace or trace_mode > 0 then + nuts.setvisual(tail,"depth") + end + end + end end end end @@ -2043,6 +2074,13 @@ do } implement { + name = "forcestrutdepth", + arguments = { "integer", "dimension", "integer" }, + actions = vspacing.forcestrutdepth, + scope = "private" + } + + implement { name = "vspacingsetamount", actions = vspacing.setskip, scope = "private", |