local bh = getlist(b)
local box_dir, dn = get_box_dir(b, ltjs.list_dir)
-- 既に b の中身にあるwhatsit
-
+ if (box_dir<dir_node_auto) and (not dn) then
+ bh = create_dir_whatsit(bh, 'make_dir_whatsit', dir_yoko)
+ dn = bh; setfield(b, 'head', bh)
+ end
if box_dir%dir_math_mod==new_dir then
if box_dir>=dir_node_auto then
-- dir_node としてカプセル化されている
local finalize_inner
local function finalize_dir_node(db,new_dir)
local b = getlist(db)
+ if getid(b)==id_whatsit and getsubtype(b)==sid_user
+ and getfield(b, 'user_id')==DIR then
+ local ob = b; b = node_remove(b,b); setfield(db, 'head', b);
+ node_free(ob)
+ end
finalize_inner(b)
local w = getfield(b, 'width')
local h = getfield(b, 'height')
local dn_h = getfield(db, 'height')
local dn_d = getfield(db, 'depth')
local db_head, db_tail
- for _,v in ipairs(dir_node_aux
- [get_box_dir(b, dir_yoko)%dir_math_mod][new_dir][getid(b)]) do
+ local t = dir_node_aux[get_box_dir(b, dir_yoko)%dir_math_mod][new_dir]
+ t = t and t[getid(b)]; if not t then return end
+ for _,v in ipairs(t) do
local cmd, arg, nn = v[1], v[2]
if cmd=='kern' then
nn = node_new(id_kern, 1)