s-math-parameters.lua /size: 5286 b    last modification: 2023-12-21 09:45
1if not modules then modules = { } end modules ['s-math-coverage'] = {
2    version   = 1.001,
3    comment   = "companion to s-math-coverage.mkiv",
4    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5    copyright = "PRAGMA ADE / ConTeXt Development Team",
6    license   = "see context related readme files"
7}
8
9moduledata.math            = moduledata.math            or { }
10moduledata.math.parameters = moduledata.math.parameters or { }
11
12local tables = utilities.tables.definedtable("math","tracing","spacing","tables")
13
14tables.styleaxis = {
15    "ord", "op", "bin", "rel", "open", "close", "punct", "inner",
16}
17
18tables.parameters = {
19    "quad", "axis", "operatorsize",
20    "overbarkern", "overbarrule", "overbarvgap",
21    "underbarkern", "underbarrule", "underbarvgap",
22    "radicalkern", "radicalrule", "radicalvgap",
23    "radicaldegreebefore", "radicaldegreeafter", "radicaldegreeraise",
24    "stackvgap", "stacknumup", "stackdenomdown",
25    "fractionrule", "fractionnumvgap", "fractionnumup",
26    "fractiondenomvgap", "fractiondenomdown", "fractiondelsize",
27    "limitabovevgap", "limitabovebgap", "limitabovekern",
28    "limitbelowvgap", "limitbelowbgap", "limitbelowkern",
29    "underdelimitervgap", "underdelimiterbgap",
30    "overdelimitervgap", "overdelimiterbgap",
31    "subshiftdrop", "supshiftdrop", "subshiftdown",
32    "subsupshiftdown", "subtopmax", "supshiftup",
33    "supbottommin", "supsubbottommax", "subsupvgap",
34    "spaceafterscript", "connectoroverlapmin",
35}
36
37if CONTEXTLMTXMODE > 0 then
38
39    tables.styleaxis = table.imerged ( tables.styleaxis, {
40        "frac", "rad",
41    } )
42
43    tables.parameters = table.imerged ( tables.parameters, {
44        "extrasupshift", "extrasubshift", "extrasuppreshift", "extrasubpreshift",
45        "extrasupspace", "extrasubspace", "extrasupprespace", "extrasubprespace",
46     -- "overlinevariant",  "underlinevariant",
47     -- "overdelimitervariant", "underdelimitervariant",
48     -- "delimiterovervariant", "delimiterundervariant",
49     -- "hextensiblevariant", "vextensiblevariant",
50     -- "fractionvariant", "radicalvariant", "degreevariant",
51     -- "accentvariant", "topaccentvariant", "botaccentvariant", "overlayaccentvariant",
52     -- "numeratorvariant", "denominatorvariant",
53     -- "superscriptvariant", "subscriptvariant",
54     -- "stackvariant",
55    } )
56
57end
58
59tables.styles = {
60    "display",
61    "text",
62    "script",
63    "scriptscript",
64}
65
66function tables.stripmu(str)
67    str = string.gsub(str,"mu","")
68    str = string.gsub(str," ","")
69    str = string.gsub(str,"plus","+")
70    str = string.gsub(str,"minus","-")
71    return str
72end
73
74function tables.strippt(old)
75    local new = string.gsub(old,"pt","")
76    if new ~= old then
77        new = string.format("%0.4f",tonumber(new))
78    end
79    return new
80end
81
82function moduledata.math.parameters.showspacing()
83
84    local styles    = tables.styles
85    local styleaxis = tables.styleaxis
86
87    context.starttabulate { "|Tl|Tl|" .. string.rep("Tc|",(#styles*2)) }
88        context.HL()
89        context.NC()
90        context.NC()
91        context.NC()
92        for i=1,#styles do
93            context.bold(styles[i])
94            context.NC()
95            context.bold("(cramped)")
96            context.NC()
97        end
98        context.NR()
99        context.HL()
100        for i=1,#styleaxis do
101         -- print(key,tex.getmath(key,"text"))
102            local one = styleaxis[i]
103            for j=1,#styleaxis do
104                local two = styleaxis[j]
105                context.NC()
106                if j == 1 then
107                    context.bold(one)
108                end
109                context.NC()
110                context.bold(two)
111                context.NC()
112                for i=1,#styles do
113                    context("\\ctxlua{context(math.tracing.spacing.tables.stripmu('\\the\\Umath%s%sspacing\\%sstyle'))}",one,two,styles[i])
114                    context.NC()
115                    context("\\ctxlua{context(math.tracing.spacing.tables.stripmu('\\the\\Umath%s%sspacing\\cramped%sstyle'))}",one,two,styles[i])
116                    context.NC()
117                end
118                context.NR()
119            end
120        end
121    context.stoptabulate()
122end
123
124function moduledata.math.parameters.showparameters()
125
126    local styles     = tables.styles
127    local parameters = tables.parameters
128
129    context.starttabulate { "|l|" .. string.rep("Tc|",(#styles*2)) }
130        context.HL()
131        context.NC()
132        context.NC()
133        for i=1,#styles do
134            context.bold(styles[i])
135            context.NC()
136            context.bold("(cramped)")
137            context.NC()
138        end
139        context.NR()
140        context.HL()
141        for i=1,#parameters do
142            local parameter = parameters[i]
143         -- print(parameter,tex.getmath(parameter,"text"))
144            context.NC()
145            context.type(parameter)
146            context.NC()
147            for i=1,#styles do
148                context("\\ctxlua{context(math.tracing.spacing.tables.strippt('\\the\\Umath%s\\%sstyle'))}",parameter,styles[i])
149                context.NC()
150                context("\\ctxlua{context(math.tracing.spacing.tables.strippt('\\the\\Umath%s\\cramped%sstyle'))}",parameter,styles[i])
151                context.NC()
152            end
153            context.NR()
154        end
155    context.stoptabulate()
156
157end
158