OSDN Git Service

Releases 20200412.0
[luatex-ja/luatexja.git] / src / luatexja.lua
index 9756ead..df1b57d 100644 (file)
@@ -1,6 +1,5 @@
 
 require('lualibs')
-tableunpack = table.unpack
 
 ------------------------------------------------------------------------
 local function load_lua(fn)
@@ -80,6 +79,7 @@ userid_table.STCK = luatexbase.newuserwhatsitid('stack_marker', 'luatexja') -- 
 userid_table.BPAR = luatexbase.newuserwhatsitid('begin_par',    'luatexja') -- 「段落始め」
 userid_table.DIR  = luatexbase.newuserwhatsitid('direction',    'luatexja') -- 組方向
 userid_table.BOXB = luatexbase.newuserwhatsitid('box_boundary', 'luatexja') -- 「ボックス始め・終わり」
+userid_table.JA_AL_BDD = luatexbase.newuserwhatsitid('ja_al_boundary', 'luatexja')
 
 local dir_table = {}
 luatexja.dir_table = dir_table
@@ -99,6 +99,7 @@ load_module('rmlgbm');    local ltjr = luatexja.rmlgbm -- must be 1st
 
 if luatexja_debug then load_module('debug') end
 
+load_module('lotf_aux');  local ltju = luatexja.lotf_aux
 load_module('charrange'); local ltjc = luatexja.charrange
 load_module('stack');     local ltjs = luatexja.stack
 load_module('direction'); local ltjd = luatexja.direction -- +1 hlist +1 attr_list
@@ -231,7 +232,9 @@ do
    }
 
    local unary_pars = luatexja.unary_pars
-   function luatexja.ext_get_parameter_unary(k)
+   local scan_arg = token.scan_argument
+   function luatexja.ext_get_parameter_unary()
+      local k= scan_arg()
       if unary_pars[k] then
         tex.write(tostring(unary_pars[k](tex.getcount('ltj@@stack'))))
       end
@@ -288,9 +291,9 @@ do
       end,
    }
    local binary_pars = luatexja.binary_pars
-
+   local scan_arg, scan_int = token.scan_argument, token.scan_int
    binary_pars.alxspmode = binary_pars.jaxspmode
-   function luatexja.ext_get_parameter_binary(k,c)
+   function luatexja.ext_get_parameter_binary(k, c)
       if binary_pars[k] then
         tex.write(tostring(binary_pars[k](c,tex.getcount('ltj@@stack'))))
       end
@@ -401,7 +404,7 @@ end
 
 local prefix, inner_depth
 local utfchar = utf.char
-local function debug_show_node_X(p,print_fn, limit)
+local function debug_show_node_X(p,print_fn, limit, inner_depth)
    local k = prefix
    local s
    local pt=node_type(p.id)
@@ -409,7 +412,8 @@ local function debug_show_node_X(p,print_fn, limit)
    .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' '
    if pt == 'glyph' then
       s = base .. ' ' .. 
-         (p.char>=0xF0000 and string.format('(U+%X)', p.char) or utfchar(p.char)) .. ' '
+         (p.char<0xF0000 and utfchar(p.char) or '') 
+         .. string.format(' (U+%X) ', p.char)
          .. tostring(p.font) .. ' (' .. print_scaled(p.height) .. '+'
          .. print_scaled(p.depth) .. ')x' .. print_scaled(p.width)
       if p.xoffset~=0 or p.yoffset~=0 then
@@ -449,7 +453,7 @@ local function debug_show_node_X(p,print_fn, limit)
       prefix, inner_depth = prefix.. '.', inner_depth + 1
       if inner_depth < limit then
         for q in node.traverse(p.head) do
-           debug_show_node_X(q, print_fn, limit)
+           debug_show_node_X(q, print_fn, limit, inner_depth)
         end
       end
       prefix=k
@@ -464,15 +468,15 @@ local function debug_show_node_X(p,print_fn, limit)
       if inner_depth < limit then
          prefix, inner_depth = k.. 'p.', inner_depth + 1
         for q in node.traverse(p.pre) do
-           debug_show_node_X(q, print_fn, limit)
+           debug_show_node_X(q, print_fn, limit, inner_depth)
         end
          prefix = k.. 'P.'
         for q in node.traverse(p.post) do
-           debug_show_node_X(q, print_fn, limit)
+           debug_show_node_X(q, print_fn, limit, inner_depth)
         end
          prefix = k.. 'R.'
         for q in node.traverse(p.replace) do
-           debug_show_node_X(q, print_fn, limit)
+           debug_show_node_X(q, print_fn, limit, inner_depth)
         end
       end
       prefix=k
@@ -530,7 +534,7 @@ local function debug_show_node_X(p,print_fn, limit)
             prefix, inner_depth =prefix.. '.', inner_depth + 1
             if inner_depth < limit then
               for q in node.traverse(p.value) do
-                 debug_show_node_X(q, print_fn, limit)
+                 debug_show_node_X(q, print_fn, limit, inner_depth)
               end
            end
             prefix, inner_depth = k, bid
@@ -551,13 +555,13 @@ local function debug_show_node_X(p,print_fn, limit)
    elseif pt=='noad' then
       s = base ; print_fn(s)
       if p.nucleus then
-         prefix = k .. 'N'; debug_show_node_X(p.nucleus, print_fn, limit);
+         prefix = k .. 'N'; debug_show_node_X(p.nucleus, print_fn, limit, inner_depth);
       end
       if p.sup then
-         prefix = k .. '^'; debug_show_node_X(p.sup, print_fn, limit);
+         prefix = k .. '^'; debug_show_node_X(p.sup, print_fn, limit, inner_depth);
       end
       if p.sub then
-         prefix = k .. '_'; debug_show_node_X(p.sub, print_fn, limit);
+         prefix = k .. '_'; debug_show_node_X(p.sub, print_fn, limit, inner_depth);
       end
       prefix = k;
    elseif pt=='math_char' then
@@ -568,7 +572,7 @@ local function debug_show_node_X(p,print_fn, limit)
       if p.head then
          prefix = k .. '.';
         for q in node.traverse(p.head) do
-           debug_show_node_X(q, print_fn)
+           debug_show_node_X(q, print_fn, limit, inner_depth)
         end
       end
    else
@@ -581,7 +585,7 @@ function luatexja.ext_show_node_list(head,depth,print_fn, lim)
    inner_depth = 0
    if head then
       while head do
-         debug_show_node_X(head, print_fn, lim or 1/0); head = node_next(head)
+         debug_show_node_X(head, print_fn, lim or 1/0, inner_depth); head = node_next(head)
       end
    else
       print_fn(prefix .. ' (null list)')
@@ -591,7 +595,7 @@ function luatexja.ext_show_node(head,depth,print_fn, lim)
    prefix = depth
    inner_depth = 0
    if head then
-      debug_show_node_X(head, print_fn, lim or 1/0)
+      debug_show_node_X(head, print_fn, lim or 1/0, inner_depth)
    else
       print_fn(prefix .. ' (null list)')
    end