OSDN Git Service

Fixed ticket #26398, and whatsits from LuaTeX-ja stack system and \inhibitglue are...
[luatex-ja/luatexja.git] / src / luatexja / stack.lua
index ea23801..35d446f 100644 (file)
@@ -20,21 +20,24 @@ local charprop_stack_table={}; charprop_stack_table[0]={}
 
 function get_stack_level()
    local i = tex.getcount('ltj@@stack')
-   local j = tex.currentgrouplevel
-   if j > tex.getcount('ltj@@group@level') then
-      i = i+1 -- new stack level
-      local gd = tex.globaldefs
-      if gd>0 then tex.globaldefs = 0 end
-      --  'tex.globaldefs = 0' is local even if \globaldefs > 0.
-      tex.setcount('ltj@@group@level', j)
-      for k,v in pairs(charprop_stack_table) do -- clear the stack above i
-        if k>=i then charprop_stack_table[k]=nil end
+   if tex.nest[tex.nest.ptr].mode == 127 or
+      tex.nest[tex.nest.ptr].mode == -127 then
+      local j = tex.currentgrouplevel
+      if j > tex.getcount('ltj@@group@level') then
+        i = i+1 -- new stack level
+        local gd = tex.globaldefs
+        if gd>0 then tex.globaldefs = 0 end
+        --  'tex.globaldefs = 0' is local even if \globaldefs > 0.
+        tex.setcount('ltj@@group@level', j)
+        for k,v in pairs(charprop_stack_table) do -- clear the stack above i
+           if k>=i then charprop_stack_table[k]=nil end
+        end
+        charprop_stack_table[i] = table.fastcopy(charprop_stack_table[i-1])
+        tex.setcount('ltj@@stack', i)
+        if gd>0 then tex.globaldefs = gd end
+        local g = node_new(id_whatsit, sid_user)
+        g.user_id=30112; g.type=100; g.value=j; node.write(g)
       end
-      charprop_stack_table[i] = table.fastcopy(charprop_stack_table[i-1])
-      tex.setcount('ltj@@stack', i)
-      if gd>0 then tex.globaldefs = gd end
-      local g = node_new(id_whatsit, sid_user)
-      g.user_id=30112; g.type=100; g.value=j; node.write(g)
    end
    return i
 end