luatexja.load_module('direction'); local ltjd = luatexja.direction
luatexja.lineskip = luatexja.lineskip or {}
-local to_direct, to_node = node.direct.todirect, node.direct.tonode
+local to_direct = node.direct.todirect
local ltjl = luatexja.lineskip
local id_glue = node.id('glue')
+local id_penalty = node.id('penalty')
local id_hlist = node.id('hlist')
local setfield = node.direct.setfield
local getfield = node.direct.getfield
function ltjl.p_dummy(before, after)
return nil, 0
end
-function ltjl.l_dummy(dist, g, adj, normal, bw)
+function ltjl.l_dummy(dist, g, adj, normal, bw, loc)
if dist < tex.lineskiplimit then
copy_glue(g, tex.lineskip, 1, tex.lineskip.width + adj)
else
local p, n = node_prev(x), node_next(x)
if p then
local pid = getid(p)
- while (12<=pid) and (pid<=14) and node_prev(p) do p = node_prev(p); pid = getid(p) end
+ while (id_glue<=pid) and (pid<=id_penalty) and node_prev(p) do
+ p = node_prev(p); pid = getid(p)
+ end
if pid==id_hlist and getid(n)==id_hlist then
local normal = bw - getfield(p, 'depth') - getfield(n, 'height')
local lmin, adj = ltj_profiler(p, n, false, bw)
end
return true
end
- luatexbase.add_to_callback('post_linebreak_filter',
+ ltjb.add_to_callback('post_linebreak_filter',
adjust_glue, 'ltj.lineskip', 10000)
end
do
+ local p_dummy = ltjl.p_dummy
local make_dir_whatsit = luatexja.direction.make_dir_whatsit
local get_dir_count = luatexja.direction.get_dir_count
local node_write = node.direct.write
- getfield(new_b, mirrored and 'depth' or 'height')
local lmin, adj = nil, 0
local tail = to_direct(tex.nest[tex.nest.ptr].tail)
- if tail and getid(tail)==id_glue and getsubtype(tail)==3 then
- tail = node_prev(tail)
+ if p_dummy~=ltj_profiler then
+ while tail and (id_glue<=getid(tail)) and (getid(tail)<=id_penalty) do
+ tail = node_prev(tail)
+ end
end
if tail then
if getid(tail)==id_hlist and getid(new_b)==id_hlist then
end
end
local g = node_new(id_glue)
- ltj_skip(lmin or normal, g, adj, normal, bw)
+ ltj_skip(lmin or normal, g, adj, normal, bw, loc)
node_write(g)
end
node_write(new_b)