summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-09-05 22:04:44 +0000
committerKarl Berry <karl@freefriends.org>2016-09-05 22:04:44 +0000
commit230fe59e35208b77a89adf5a05e0b133bd1703a3 (patch)
treeb1ab2292699fd15074c7b3b58907dfc1532a8797 /Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua
parenta167d28bf628bbe45e8e8114c34cff3f6e67cca4 (diff)
luatexja (5sep16)
git-svn-id: svn://tug.org/texlive/trunk@41995 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua22
1 files changed, 19 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua
index 8a2af68374c..61d081929de 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-direction.lua
@@ -266,15 +266,22 @@ end
-- hpack_filter, vpack_filter, post_line_break_filter
-- の結果を組方向を明示するため,先頭に dir_node を設置
+local get_box_dir
do
local function create_dir_whatsit_hpack(h, gc)
local hd = to_direct(h)
- if gc=='fin_row' or gc == 'preamble' then
+ if gc=='fin_row' then
if hd then
+ for p in traverse_id(15, hd) do -- unset
+ if get_box_dir(p, 0)==0 then
+ setfield(p, 'head', create_dir_whatsit(getlist(p), 'fin_row', ltjs.list_dir))
+ end
+ end
set_attr(hd, attr_icflag, PROCESSED_BEGIN_FLAG)
ensure_tex_attr(attr_icflag, 0)
end
return h
+ elseif gc == 'preamble' then
else
adjust_badness(hd)
return to_node(create_dir_whatsit(hd, gc, ltjs.list_dir))
@@ -287,7 +294,7 @@ end
do
local function create_dir_whatsit_parbox(h, gc)
- stop_time_measure('tex_linebreak')
+ stop_time_measure('tex_linebreak');
-- start 側は ltj-debug.lua に
local new_dir = ltjs.list_dir
for line in traverse_id(id_hlist, to_direct(h)) do
@@ -490,7 +497,7 @@ end
-- 1st ret val: b の組方向
-- 2nd ret val はその DIR whatsit
-local function get_box_dir(b, default)
+function get_box_dir(b, default)
start_time_measure('get_box_dir')
local dir = has_attr(b, attr_dir) or 0
local bh = getfield(b,'head')
@@ -694,6 +701,7 @@ do
-- lastbox
local node_prev = (node.direct~=node) and node.direct.getprev or node.prev
+ local id_glue = node.id('glue')
local function lastbox_hook()
start_time_measure('box_primitive_hook')
local bn = tex_nest[tex_nest.ptr].tail
@@ -701,6 +709,14 @@ do
local b, head = to_direct(bn), to_direct(tex_nest[tex_nest.ptr].head)
local bid = getid(b)
if bid==id_hlist or bid==id_vlist then
+ local p = getlist(b)
+ -- alignment の各行の中身が入ったボックス
+ if p and getid(p)==id_glue and getsubtype(p)==12 then -- tabskip
+ local np = node_next(p); local npid = getid(np)
+ if npid==id_hlist or npid==id_vlist then
+ setfield(b, 'head', create_dir_whatsit(p, 'align', get_box_dir(np, 0)))
+ end
+ end
local box_dir = get_box_dir(b, 0)
if box_dir>= dir_node_auto then -- unwrap dir_node
local p = node_prev(b)