1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
if not modules then modules = { } end modules ['core-pos'] = {
version = 1.001,
comment = "companion to core-pos.tex",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
--[[ldx--
<p>We save positional information in the main utility table. Not only
can we store much more information in <l n='lua'/> but it's also
more efficient.</p>
--ldx]]--
if not jobs then jobs = { } end
if not job then jobs['main'] = { } end job = jobs['main']
if not job.positions then job.positions = { } end
local texprint = tex.print
local positions = job.positions
local concat = table.concat
local format = string.format
function job.MPp(id) local jpi = positions[id] texprint((jpi and jpi[1]) or '0' ) end
function job.MPx(id) local jpi = positions[id] texprint((jpi and jpi[2]) or '0pt') end
function job.MPy(id) local jpi = positions[id] texprint((jpi and jpi[3]) or '0pt') end
function job.MPw(id) local jpi = positions[id] texprint((jpi and jpi[4]) or '0pt') end
function job.MPh(id) local jpi = positions[id] texprint((jpi and jpi[5]) or '0pt') end
function job.MPd(id) local jpi = positions[id] texprint((jpi and jpi[6]) or '0pt') end
-- the following are only for MP so there we can leave out the pt
function job.MPxy(id)
local jpi = positions[id]
if jpi then
texprint(format('(%s,%s)',jpi[2],jpi[3]))
else
texprint('(0,0)')
end
end
function job.MPll(id)
local jpi = positions[id]
if jpi then
texprint(format('(%s,%s-%s)',jpi[2],jpi[3],jpi[6]))
else
texprint('(0,0)')
end
end
function job.MPlr(id)
local jpi = positions[id]
if jpi then
texprint(format('(%s+%s,%s-%s)',jpi[2],jpi[4],jpi[3],jpi[6]))
else
texprint('(0,0)')
end
end
function job.MPur(id)
local jpi = positions[id]
if jpi then
texprint(format('(%s+%s,%s+%s)',jpi[2],jpi[4],jpi[3],jpi[5]))
else
texprint('(0,0)')
end
end
function job.MPul(id)
local jpi = positions[id]
if jpi then
texprint(format('(%s,%s+%s)',jpi[2],jpi[3],jpi[5]))
else
texprint('(0,0)')
end
end
-- todo
function job.MPpos(id)
local jpi = positions[id]
if jpi then
texprint(concat(jpi,',',1,6))
else
texprint('0,0,0,0,0,0')
end
end
function job.MPplus(id,n,default)
local jpi = positions[id]
texprint((jpi and jpi[n]) or default)
end
function job.MPrest(id,default)
local jpi = positions[id]
texprint((jpi and jpi[8]) or default) -- was 7, bugged
end
|