OSDN Git Service

ltj-jfmglue.lua etc.: fix a bug introduced by recent commits.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 14 Jan 2015 06:45:57 +0000 (15:45 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Wed, 14 Jan 2015 06:45:57 +0000 (15:45 +0900)
src/ltj-direction.lua
src/ltj-jfmglue.lua
src/ltj-pretreat.lua

index 2f6674a..e6f8ab2 100644 (file)
@@ -241,6 +241,11 @@ local function create_dir_whatsit(hd, gc, new_dir)
            getsubtype(hd)==sid_user and getfield(hd, 'user_id')==DIR then
       set_attr(hd, attr_icflag,
               get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG)
+      local n = node_next(hd)
+      if n then
+        set_attr(n, attr_icflag,
+                 get_attr_icflag(n) + PROCESSED_BEGIN_FLAG)
+      end
       ensure_tex_attr(attr_icflag, 0)
       return hd
    else
@@ -253,6 +258,8 @@ local function create_dir_whatsit(hd, gc, new_dir)
       set_attr(hd, attr_icflag,
               (has_attr(hd, attr_icflag) or 0)%PROCESSED_BEGIN_FLAG
                  + PROCESSED_BEGIN_FLAG)
+      set_attr(hd, attr_icflag,
+              get_attr_icflag(hd) + PROCESSED_BEGIN_FLAG)
       ensure_tex_attr(attr_icflag, 0)
       ensure_tex_attr(attr_dir, 0)
       return w
index 4224996..0ef4093 100644 (file)
@@ -82,10 +82,15 @@ local IC_PROCESSED = luatexja.icflag_table.IC_PROCESSED
 local BOXBDD       = luatexja.icflag_table.BOXBDD
 local PROCESSED_BEGIN_FLAG = luatexja.icflag_table.PROCESSED_BEGIN_FLAG
 
+local attr_icflag = luatexbase.attributes['ltj@icflag']
 local kanji_skip = node_new(id_glue)
 local xkanji_skip = node_new(id_glue)
-set_attr(kanji_skip, attr_icflag, KANJI_SKIP)
-set_attr(xkanji_skip, attr_icflag, XKANJI_SKIP)
+do
+   local KANJI_SKIP   = luatexja.icflag_table.KANJI_SKIP
+   local XKANJI_SKIP   = luatexja.icflag_table.XKANJI_SKIP
+   set_attr(kanji_skip, attr_icflag, KANJI_SKIP)
+   set_attr(xkanji_skip, attr_icflag, XKANJI_SKIP)
+end
 
 local table_current_stack
 local list_dir
@@ -95,7 +100,6 @@ local attr_ablshift
 local set_np_xspc_jachar
 local set_np_xspc_jachar_hbox
 
-local attr_icflag = luatexbase.attributes['ltj@icflag']
 local ltjs_orig_char_table = ltjs.orig_char_table
 
 local function get_attr_icflag(p)
@@ -494,6 +498,7 @@ local calc_np_auxtable = {
    end,
    [id_kern] = function(lp)
       if getsubtype(lp)==2 then
+        Np.first = Np.first or lp
         set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
         set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
         set_attr(lp, attr_icflag, PROCESSED); lp = node_next(lp)
@@ -1104,7 +1109,7 @@ function main(ahead, mode, dir)
    head = ahead;
    local lp, last, par_indented = init_var(mode,dir)
    lp = calc_np(last, lp)
-   if lp then
+   if Np then
       handle_list_head(par_indented)
       lp = calc_np(last,lp); while Np do
         adjust_nq();
index 469970e..e2d294a 100644 (file)
@@ -71,7 +71,7 @@ do
            elseif uid==DIR then
               if has_attr(p, attr_icflag)<PROCESSED_BEGIN_FLAG  then
                  ltjs.list_dir = has_attr(p, attr_dir)
-              else
+              else -- こっちのケースは通常使用では起こらない
                  wtd[#wtd+1] = p; node_remove(head, p)
               end
            end