summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-09-22 22:28:45 +0000
committerKarl Berry <karl@freefriends.org>2015-09-22 22:28:45 +0000
commit8e5c104f9dd76f86ca2ec12abcf854694bb5ed1d (patch)
tree128121c5dc16a5bf301284ad14e07dcf3fa8e292 /Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
parentcfbef8f54cf6eb9fc972333b04df7dc9aae751a4 (diff)
luatexja (22sep15)
git-svn-id: svn://tug.org/texlive/trunk@38440 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua53
1 files changed, 30 insertions, 23 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
index 57686fead2f..da638f5486d 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.ruby',
- date = '2015/01/14',
+ date = '2015/09/18',
description = 'Ruby annotation',
})
module('luatexja.ruby', package.seeall)
@@ -12,7 +12,6 @@ local err, warn, info, log = luatexbase.errwarinf(_NAME)
luatexja.load_module('stack'); local ltjs = luatexja.stack
local Dnode = node.direct or node
-
local nullfunc = function(n) return n end
local to_node = (Dnode ~= node) and Dnode.tonode or nullfunc
local to_direct = (Dnode ~= node) and Dnode.todirect or nullfunc
@@ -146,29 +145,37 @@ end
-- concatenation of boxes: reusing nodes
-- ルビ組版が行われている段落/hboxでの設定が使われる.
-- ルビ文字を格納しているボックスでの設定ではない!
-local function concat(f, b)
- if f then
- if b then
- local h = getlist(f)
- setfield(node_tail(h), 'next', getlist(b))
- setfield(f, 'head', nil); node_free(f)
- setfield(b, 'head', nil); node_free(b)
- return Dnode.hpack(luatexja.jfmglue.main(h,false))
+local concat
+do
+ local node_prev = (Dnode ~= node) and Dnode.getprev or node.prev
+ function concat(f, b)
+ if f then
+ if b then
+ local h, nh = getlist(f), getlist(b)
+ if getid(nh)==id_whatsit and getsubtype(nh)==sid_user then
+ nh=node_next(nh); node_free(node_prev(nh))
+ end
+ setfield(node_tail(h), 'next', nh)
+ setfield(f, 'head', nil); node_free(f)
+ setfield(b, 'head', nil); node_free(b)
+ local g = luatexja.jfmglue.main(h,false)
+ return Dnode.hpack(g)
+ else
+ return f
+ end
+ elseif b then
+ return b
else
- return f
+ local h = node_new(id_hlist)
+ setfield(h, 'subtype', 0)
+ setfield(h, 'width', 0)
+ setfield(h, 'height', 0)
+ setfield(h, 'depth', 0)
+ setfield(h, 'glue_set', 0)
+ setfield(h, 'glue_order', 0)
+ setfield(h, 'head', nil)
+ return h
end
- elseif b then
- return b
- else
- local h = node_new(id_hlist)
- setfield(h, 'subtype', 0)
- setfield(h, 'width', 0)
- setfield(h, 'height', 0)
- setfield(h, 'depth', 0)
- setfield(h, 'glue_set', 0)
- setfield(h, 'glue_order', 0)
- setfield(h, 'head', nil)
- return h
end
end