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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
if not modules then modules = { } end modules ['cldf-com'] = {
version = 1.001,
comment = "companion to cldf-com.mkiv",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
copyright = "PRAGMA ADE / ConTeXt Development Team",
license = "see context related readme files"
}
local tostring, type = tostring, type
local format = string.format
local utfchar = utf.char
local context = context
local generics = context.generics
local variables = interfaces.variables
generics.starttabulate = "start" .. variables.tabulate -- todo: e!start
generics.stoptabulate = "stop" .. variables.tabulate -- todo: e!stop
local NC, NR = context.NC, context.NR
local function tabulaterow(how,...)
local t = { ... }
for i=1,#t do
local ti = tostring(t[i])
NC()
if how then
context[how](ti)
else
context(ti)
end
end
NC()
NR()
end
function context.tabulaterow (...) tabulaterow(false, ...) end
function context.tabulaterowbold(...) tabulaterow("bold",...) end
function context.tabulaterowtype(...) tabulaterow("type",...) end
function context.tabulaterowtyp (...) tabulaterow("typ", ...) end
-- these will move up, just after cld definitions
function context.char(k) -- used as escape too, so don't change to utf
if type(k) == "table" then
for i=1,#k do
context(format([[\char%s\relax]],k[i]))
end
elseif k then
context(format([[\char%s\relax]],k))
end
end
function context.utfchar(k)
context(utfchar(k))
end
-- plain variants
function context.chardef(cs,u)
context(format([[\chardef\%s=%s\relax]],k)) -- context does already do format
end
function context.par()
context([[\par]]) -- no need to add {} there
end
function context.bgroup()
context("{")
end
function context.egroup()
context("}")
end
-- -- speedtest needed:
--
-- local ctxcatcodes = tex.ctxcatcodes
--
-- local flush, writer = context.getlogger()
--
-- trackers.register("context.trace",function(v)
-- flush, writer = context.getlogger()
-- end)
--
-- function context.bgroup()
-- flush(ctxcatcodes,"{")
-- end
--
-- function context.egroup()
-- flush(ctxcatcodes,"}")
-- end
local rule = nodes.pool.rule
function context.hrule(w,h,d,dir)
if type(w) == "table" then
context(rule(w.width,w.height,w.depth,w.dir))
else
context(rule(w,h,d,dir))
end
end
context.vrule = context.hrule
--~ local hbox, bgroup, egroup = context.hbox, context.bgroup, context.egroup
--~ function context.hbox(a,...)
--~ if type(a) == "table" then
--~ local s = { }
--~ if a.width then
--~ s[#s+1] = "to " .. a.width -- todo: check for number
--~ elseif a.spread then
--~ s[#s+1] = "spread " .. a.spread -- todo: check for number
--~ end
--~ -- todo: dir, attr etc
--~ hbox(false,table.concat(s," "))
--~ bgroup()
--~ context(string.format(...))
--~ egroup()
--~ else
--~ hbox(a,...)
--~ end
--~ end
|