summaryrefslogtreecommitdiff
path: root/tex/context/base/anch-pos.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/anch-pos.lua')
-rw-r--r--tex/context/base/anch-pos.lua72
1 files changed, 41 insertions, 31 deletions
diff --git a/tex/context/base/anch-pos.lua b/tex/context/base/anch-pos.lua
index 9cc9fb128..0bd945c8a 100644
--- a/tex/context/base/anch-pos.lua
+++ b/tex/context/base/anch-pos.lua
@@ -30,15 +30,25 @@ local texsp = tex.sp
----- texsp = string.todimen -- because we cache this is much faster but no rounding
local texgetcount = tex.getcount
-local texgetbox = tex.getbox
local texsetcount = tex.setcount
local texget = tex.get
local pdf = pdf -- h and v are variables
local setmetatableindex = table.setmetatableindex
-local new_latelua = nodes.pool.latelua
-local find_tail = node.slide
+
+local nuts = nodes.nuts
+
+local getfield = nuts.getfield
+local setfield = nuts.setfield
+local getlist = nuts.getlist
+local getbox = nuts.getbox
+local getskip = nuts.getskip
+
+local find_tail = nuts.tail
+
+local new_latelua = nuts.pool.latelua
+local new_latelua_node = nodes.pool.latelua
local variables = interfaces.variables
local v_text = variables.text
@@ -302,13 +312,13 @@ function commands.bcolumn(tag,register) -- name will change
insert(columns,tag)
column = tag
if register then
- context(new_latelua(f_b_column(tag)))
+ context(new_latelua_node(f_b_column(tag)))
end
end
function commands.ecolumn(register) -- name will change
if register then
- context(new_latelua(f_e_column()))
+ context(new_latelua_node(f_e_column()))
end
remove(columns)
column = columns[#columns]
@@ -340,10 +350,10 @@ function jobpositions.markregionbox(n,tag,correct)
nofregions = nofregions + 1
tag = f_region(nofregions)
end
- local box = texgetbox(n)
- local w = box.width
- local h = box.height
- local d = box.depth
+ local box = getbox(n)
+ local w = getfield(box,"width")
+ local h = getfield(box,"height")
+ local d = getfield(box,"depth")
tobesaved[tag] = {
p = true,
x = true,
@@ -355,18 +365,18 @@ function jobpositions.markregionbox(n,tag,correct)
local push = new_latelua(f_b_region(tag))
local pop = new_latelua(f_e_region(tostring(correct))) -- todo: check if tostring is needed with formatter
-- maybe we should construct a hbox first (needs experimenting) so that we can avoid some at the tex end
- local head = box.list
+ local head = getlist(box)
if head then
local tail = find_tail(head)
- head.prev = push
- push.next = head
- pop .prev = tail
- tail.next = pop
+ setfield(head,"prev",push)
+ setfield(push,"next",head)
+ setfield(pop,"prev",tail)
+ setfield(tail,"next",pop)
else -- we can have a simple push/pop
- push.next = pop
- pop.prev = push
+ setfield(push,"next",pop)
+ setfield(pop,"prev",push)
end
- box.list = push
+ setfield(box,"list",push)
end
function jobpositions.enhance(name)
@@ -375,7 +385,7 @@ end
function commands.pos(name,t)
tobesaved[name] = t
- context(new_latelua(f_enhance(name)))
+ context(new_latelua_node(f_enhance(name)))
end
local nofparagraphs = 0
@@ -383,19 +393,19 @@ local nofparagraphs = 0
function commands.parpos() -- todo: relate to localpar (so this is an intermediate variant)
nofparagraphs = nofparagraphs + 1
texsetcount("global","c_anch_positions_paragraph",nofparagraphs)
- local strutbox = texgetbox("strutbox")
+ local strutbox = getbox("strutbox")
local t = {
p = true,
c = true,
r = true,
x = true,
y = true,
- h = strutbox.height,
- d = strutbox.depth,
+ h = getfield(strutbox,"height"),
+ d = getfield(strutbox,"depth"),
hs = texget("hsize"),
}
- local leftskip = texget("leftskip").width
- local rightskip = texget("rightskip").width
+ local leftskip = getfield(getskip("leftskip"),"width")
+ local rightskip = getfield(getskip("rightskip"),"width")
local hangindent = texget("hangindent")
local hangafter = texget("hangafter")
local parindent = texget("parindent")
@@ -420,7 +430,7 @@ function commands.parpos() -- todo: relate to localpar (so this is an intermedia
end
local tag = f_p_tag(nofparagraphs)
tobesaved[tag] = t
- context(new_latelua(f_enhance(tag)))
+ context(new_latelua_node(f_enhance(tag)))
end
function commands.posxy(name) -- can node.write be used here?
@@ -432,7 +442,7 @@ function commands.posxy(name) -- can node.write be used here?
y = true,
n = nofparagraphs > 0 and nofparagraphs or nil,
}
- context(new_latelua(f_enhance(name)))
+ context(new_latelua_node(f_enhance(name)))
end
function commands.poswhd(name,w,h,d)
@@ -447,7 +457,7 @@ function commands.poswhd(name,w,h,d)
d = d,
n = nofparagraphs > 0 and nofparagraphs or nil,
}
- context(new_latelua(f_enhance(name)))
+ context(new_latelua_node(f_enhance(name)))
end
function commands.posplus(name,w,h,d,extra)
@@ -463,22 +473,22 @@ function commands.posplus(name,w,h,d,extra)
n = nofparagraphs > 0 and nofparagraphs or nil,
e = extra,
}
- context(new_latelua(f_enhance(name)))
+ context(new_latelua_node(f_enhance(name)))
end
function commands.posstrut(name,w,h,d)
- local strutbox = texgetbox("strutbox")
+ local strutbox = getbox("strutbox")
tobesaved[name] = {
p = true,
c = column,
r = true,
x = true,
y = true,
- h = strutbox.height,
- d = strutbox.depth,
+ h = getfield(strutbox,"height"),
+ d = getfield(strutbox,"depth"),
n = nofparagraphs > 0 and nofparagraphs or nil,
}
- context(new_latelua(f_enhance(name)))
+ context(new_latelua_node(f_enhance(name)))
end
function jobpositions.getreserved(tag,n)