1
4
5
11
12# include "luametatex.h"
13
14lua_state_info lmt_lua_state = {
15 .lua_instance = NULL,
16 .used_bytes = 0,
17 .used_bytes_max = 0,
18 .function_table_id = 0,
19 .function_callback_count = 0,
20 .value_callback_count = 0,
21 .bytecode_callback_count = 0,
22 .local_callback_count = 0,
23 .saved_callback_count = 0,
24 .file_callback_count = 0,
25 .direct_callback_count = 0,
26 .message_callback_count = 0,
27 .function_table_size = 0,
28 .bytecode_bytes = 0,
29 .bytecode_max = 0,
30 .version_number = (int) LUA_VERSION_NUM,
31 .release_number = (int) LUA_VERSION_RELEASE_NUM,
32 .used_buffer = NULL,
33 .integer_size = sizeof(lua_Integer),
34};
35
36
41
42lmt_keys_info lmt_keys;
43
44lmt_interface_info lmt_interface = {
45 .pack_type_values = NULL,
46 .group_code_values = NULL,
47 .par_context_values = NULL,
48 .par_trigger_values = NULL,
49 .par_mode_values = NULL,
50 .math_style_name_values = NULL,
51 .math_style_variant_values = NULL,
52 .lua_function_values = NULL,
53 .direction_values = NULL,
54 .node_fill_values = NULL,
55 .page_contribute_values = NULL,
56 .math_style_values = NULL,
57 .math_parameter_values = NULL,
58 .field_type_values = NULL,
59 .node_data = NULL,
60 .par_data = NULL,
61 .command_names = NULL,
62} ;
63
64value_info *lmt_aux_allocate_value_info(size_t last)
65{
66 value_info *v = lmt_memory_calloc(last + 2, sizeof(value_info));
67 set_value_entry_nop(v, last + 1);
68 return v;
69}
70
71void lmt_initialize_interface(void)
72{
73 lmt_interface.pack_type_values = lmt_aux_allocate_value_info(packing_adapted);
74
75 # define set_pack_type_value(n,k) lmt_interface.pack_type_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
76
77 set_pack_type_value(packing_exactly, exactly);
78 set_pack_type_value(packing_additional, additional);
79 set_pack_type_value(packing_expanded, expanded);
80 set_pack_type_value(packing_substitute, substitute);
81 set_pack_type_value(packing_adapted, adapted);
82
83 lmt_interface.group_code_values = lmt_aux_allocate_value_info(lua_group);
84
85 # define set_group_code_value(n,k) lmt_interface.group_code_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
86
87 set_group_code_value(bottom_level_group, bottomlevel);
88 set_group_code_value(simple_group, simple);
89 set_group_code_value(hbox_group, hbox);
90 set_group_code_value(adjusted_hbox_group, adjustedhbox);
91 set_group_code_value(vbox_group, vbox);
92 set_group_code_value(vtop_group, vtop);
93 set_group_code_value(dbox_group, dbox);
94 set_group_code_value(align_group, align);
95 set_group_code_value(no_align_group, noalign);
96 set_group_code_value(output_group, output);
97 set_group_code_value(math_group, mathsubformula);
98 set_group_code_value(math_component_group, mathcomponent);
99 set_group_code_value(math_stack_group, mathstack);
100 set_group_code_value(discretionary_group, discretionary);
101 set_group_code_value(insert_group, insert);
102 set_group_code_value(vadjust_group, vadjust);
103 set_group_code_value(vcenter_group, vcenter);
104 set_group_code_value(math_fraction_group, mathfraction);
105 set_group_code_value(math_radical_group, mathradical);
106 set_group_code_value(math_operator_group, mathoperator);
107 set_group_code_value(math_choice_group, mathchoice);
108 set_group_code_value(also_simple_group, alsosimple);
109 set_group_code_value(semi_simple_group, semisimple);
110 set_group_code_value(math_simple_group, mathsimple);
111 set_group_code_value(math_inline_group, mathinline);
112 set_group_code_value(math_display_group, mathdisplay);
113 set_group_code_value(math_number_group, mathnumber);
114 set_group_code_value(math_fence_group, mathfence);
115 set_group_code_value(local_box_group, localbox);
116 set_group_code_value(split_off_group, splitoff);
117 set_group_code_value(split_keep_group, splitkeep);
118 set_group_code_value(preamble_group, preamble);
119 set_group_code_value(align_set_group, alignset);
120 set_group_code_value(finish_row_group, finishrow);
121 set_group_code_value(lua_group, lua);
122
123 lmt_interface.par_context_values = lmt_aux_allocate_value_info(reset_par_context);
124
125 # define set_par_context_value(n,k) lmt_interface.par_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
126
127 set_par_context_value(normal_par_context, normal);
128 set_par_context_value(vmode_par_context, vmode);
129 set_par_context_value(vbox_par_context, vbox);
130 set_par_context_value(vtop_par_context, vtop);
131 set_par_context_value(dbox_par_context, dbox);
132 set_par_context_value(vcenter_par_context, vcenter);
133 set_par_context_value(vadjust_par_context, vadjust);
134 set_par_context_value(insert_par_context, insert);
135 set_par_context_value(output_par_context, output);
136 set_par_context_value(align_par_context, align);
137 set_par_context_value(no_align_par_context, noalign);
138 set_par_context_value(span_par_context, span);
139 set_par_context_value(math_par_context, math);
140 set_par_context_value(lua_par_context, lua);
141 set_par_context_value(reset_par_context, reset);
142
143 lmt_interface.page_context_values = lmt_aux_allocate_value_info(triggered_page_context);
144
145 # define set_page_context_value(n,k) lmt_interface.page_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
146
147 set_page_context_value(box_page_context, box);
148 set_page_context_value(end_page_context, end);
149 set_page_context_value(vadjust_page_context, vadjust);
150 set_page_context_value(penalty_page_context, penalty);
151 set_page_context_value(boundary_page_context, boundary);
152 set_page_context_value(insert_page_context, insert);
153 set_page_context_value(hmode_par_page_context, hmodepar);
154 set_page_context_value(vmode_par_page_context, vmodepar);
155 set_page_context_value(begin_paragraph_page_context, beginparagraph);
156 set_page_context_value(before_display_page_context, beforedisplay);
157 set_page_context_value(after_display_page_context, afterdisplay);
158 set_page_context_value(after_output_page_context, afteroutput);
159 set_page_context_value(alignment_page_context, alignment);
160 set_page_context_value(triggered_page_context, triggered);
161
162 lmt_interface.append_line_context_values = lmt_aux_allocate_value_info(post_migrate_append_line_context);
163
164 # define set_append_line_context_value(n,k) lmt_interface.append_line_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
165
166 set_append_line_context_value(box_append_line_context, box);
167 set_append_line_context_value(pre_box_append_line_context, prebox);
168 set_append_line_context_value(pre_adjust_append_line_context, preadjust);
169 set_append_line_context_value(post_adjust_append_line_context, postadjust);
170 set_append_line_context_value(pre_migrate_append_line_context, premigrate);
171 set_append_line_context_value(post_migrate_append_line_context, postmigrate);
172
173 lmt_interface.alignment_context_values = lmt_aux_allocate_value_info(wrapup_pass_alignment_context);
174
175 # define set_alignment_context_value(n,k) lmt_interface.alignment_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
176
177 set_alignment_context_value(preamble_pass_alignment_context, preamble);
178 set_alignment_context_value(preroll_pass_alignment_context, preroll);
179 set_alignment_context_value(package_pass_alignment_context, package);
180 set_alignment_context_value(wrapup_pass_alignment_context, wrapup);
181
182 lmt_interface.line_break_context_values = lmt_aux_allocate_value_info(wrapup_line_break_context);
183
184 # define set_break_context_value(n,k) lmt_interface.line_break_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
185
186 set_break_context_value(initialize_line_break_context, initialize);
187 set_break_context_value(start_line_break_context, start);
188 set_break_context_value(list_line_break_context, list);
189 set_break_context_value(stop_line_break_context, stop);
190 set_break_context_value(collect_line_break_context, collect);
191 set_break_context_value(line_line_break_context, line);
192 set_break_context_value(delete_line_break_context, delete);
193 set_break_context_value(report_line_break_context, report);
194 set_break_context_value(wrapup_line_break_context, wrapup);
195
196 lmt_interface.build_context_values = lmt_aux_allocate_value_info(wrapup_show_build_context);
197
198 # define set_build_context_value(n,k) lmt_interface.build_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
199
200 set_build_context_value(initialize_show_build_context, initialize);
201 set_build_context_value(step_show_build_context, step);
202 set_build_context_value(check_show_build_context, check);
203 set_build_context_value(skip_show_build_context, skip);
204 set_build_context_value(move_show_build_context, move);
205 set_build_context_value(fireup_show_build_context, fireup);
206 set_build_context_value(wrapup_show_build_context, wrapup);
207
208 lmt_interface.vsplit_context_values = lmt_aux_allocate_value_info(wrapup_show_vsplit_context);
209
210 # define set_vsplit_context_value(n,k) lmt_interface.vsplit_context_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
211
212 set_vsplit_context_value(initialize_show_vsplit_context, initialize);
213 set_vsplit_context_value(continue_show_vsplit_context, continue);
214 set_vsplit_context_value(check_show_vsplit_context, check);
215 set_vsplit_context_value(quit_show_vsplit_context, quit);
216 set_vsplit_context_value(wrapup_show_vsplit_context, wrapup);
217
218
219 lmt_interface.par_trigger_values = lmt_aux_allocate_value_info(vrule_char_par_trigger);
220
221 # define set_par_trigger_value(n,k) lmt_interface.par_trigger_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
222
223 set_par_trigger_value(normal_par_trigger, normal);
224 set_par_trigger_value(force_par_trigger, force);
225 set_par_trigger_value(indent_par_trigger, indent);
226 set_par_trigger_value(no_indent_par_trigger, noindent);
227 set_par_trigger_value(math_char_par_trigger, mathchar);
228 set_par_trigger_value(char_par_trigger, char);
229 set_par_trigger_value(boundary_par_trigger, boundary);
230 set_par_trigger_value(space_par_trigger, space);
231 set_par_trigger_value(math_par_trigger, math);
232 set_par_trigger_value(kern_par_trigger, kern);
233 set_par_trigger_value(hskip_par_trigger, hskip);
234 set_par_trigger_value(un_hbox_char_par_trigger, unhbox);
235 set_par_trigger_value(valign_char_par_trigger, valign);
236 set_par_trigger_value(vrule_char_par_trigger, vrule);
237
238 lmt_interface.par_mode_values = lmt_aux_allocate_value_info(math_par_subtype);
239
240 # define set_par_mode_value(n,k) lmt_interface.par_mode_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
241
242 set_par_mode_value(vmode_par_par_subtype, vmodepar);
243 set_par_mode_value(local_box_par_subtype, localbox);
244 set_par_mode_value(hmode_par_par_subtype, hmodepar);
245 set_par_mode_value(parameter_par_subtype, parameter);
246 set_par_mode_value(math_par_subtype, math);
247
248 lmt_interface.math_style_name_values = lmt_aux_allocate_value_info(cramped_script_script_style);
249
250 # define set_math_style_name_value(n,k) lmt_interface.math_style_name_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
251
252 set_math_style_name_value(display_style, display);
253 set_math_style_name_value(cramped_display_style, crampeddisplay);
254 set_math_style_name_value(text_style, text);
255 set_math_style_name_value(cramped_text_style, crampedtext);
256 set_math_style_name_value(script_style, script);
257 set_math_style_name_value(cramped_script_style, crampedscript);
258 set_math_style_name_value(script_script_style, scriptscript);
259 set_math_style_name_value(cramped_script_script_style, crampedscriptscript);
260
261 lmt_interface.math_style_variant_values = lmt_aux_allocate_value_info(math_double_superscript_variant);
262
263 # define set_math_style_variant_value(n,k) lmt_interface.math_style_variant_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
264
265 set_math_style_variant_value(math_normal_style_variant, normal);
266 set_math_style_variant_value(math_cramped_style_variant, cramped);
267 set_math_style_variant_value(math_subscript_style_variant, subscript);
268 set_math_style_variant_value(math_superscript_style_variant, superscript);
269 set_math_style_variant_value(math_small_style_variant, small);
270 set_math_style_variant_value(math_smaller_style_variant, smaller);
271 set_math_style_variant_value(math_numerator_style_variant, numerator);
272 set_math_style_variant_value(math_denominator_style_variant, denominator);
273 set_math_style_variant_value(math_double_superscript_variant, doublesuperscript);
274
275 lmt_interface.lua_function_values = lmt_aux_allocate_value_info(lua_value_conditional_code);
276
277 # define set_lua_function_value(n,k) lmt_interface.lua_function_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
278
279 set_lua_function_value(lua_value_none_code, none);
280 set_lua_function_value(lua_value_integer_code, integer);
281 set_lua_function_value(lua_value_cardinal_code, cardinal);
282 set_lua_function_value(lua_value_dimension_code, dimension);
283 set_lua_function_value(lua_value_skip_code, skip);
284 set_lua_function_value(lua_value_boolean_code, boolean);
285 set_lua_function_value(lua_value_float_code, float);
286 set_lua_function_value(lua_value_string_code, string);
287 set_lua_function_value(lua_value_node_code, node);
288 set_lua_function_value(lua_value_direct_code, direct);
289 set_lua_function_value(lua_value_conditional_code, conditional);
290
291 lmt_interface.direction_values = lmt_aux_allocate_value_info(dir_righttoleft);
292
293 # define set_direction_value(n,k) lmt_interface.direction_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
294
295 set_direction_value(dir_lefttoright, lefttoright);
296 set_direction_value(dir_righttoleft, righttoleft);
297
298 lmt_interface.field_type_values = lmt_aux_allocate_value_info(attribute_field);
299
300 # define set_field_type_value(n,k) lmt_interface.field_type_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
301
302 set_field_type_value(nil_field, nil);
303 set_field_type_value(integer_field, integer);
304 set_field_type_value(dimension_field, dimension);
305 set_field_type_value(glue_field, glue);
306 set_field_type_value(number_field, number);
307 set_field_type_value(string_field, string);
308 set_field_type_value(boolean_field, boolean);
309 set_field_type_value(function_field, function);
310 set_field_type_value(node_field, node);
311 set_field_type_value(node_list_field, nodelist);
312 set_field_type_value(token_field, token);
313 set_field_type_value(token_list_field, tokenlist);
314 set_field_type_value(attribute_field, attribute);
315
316 lmt_interface.node_fill_values = lmt_aux_allocate_value_info(filll_glue_order);
317
318 # define set_node_fill_value(n,k) lmt_interface.node_fill_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
319
320 set_node_fill_value(normal_glue_order, normal);
321 set_node_fill_value(fi_glue_order, fi);
322 set_node_fill_value(fil_glue_order, fil);
323 set_node_fill_value(fill_glue_order, fill);
324 set_node_fill_value(filll_glue_order, filll);
325
326 lmt_interface.page_contribute_values = lmt_aux_allocate_value_info(contribute_rule);
327
328 # define set_page_contribute_value(n,k) lmt_interface.page_contribute_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
329
330 set_page_contribute_value(contribute_nothing, empty);
331 set_page_contribute_value(contribute_insert, insert);
332 set_page_contribute_value(contribute_box, box);
333 set_page_contribute_value(contribute_rule, rule);
334
335 lmt_interface.math_style_values = lmt_aux_allocate_value_info(cramped_script_script_style);
336
337 # define set_math_style_value(n,k) lmt_interface.math_style_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
338
339 set_math_style_value(display_style, display);
340 set_math_style_value(cramped_display_style, crampeddisplay);
341 set_math_style_value(text_style, text);
342 set_math_style_value(cramped_text_style, crampedtext);
343 set_math_style_value(script_style, script);
344 set_math_style_value(cramped_script_style, crampedscript);
345 set_math_style_value(script_script_style, scriptscript);
346 set_math_style_value(cramped_script_script_style, crampedscriptscript);
347
348 lmt_interface.math_indirect_values = lmt_aux_allocate_value_info(last_math_indirect);
349
350 # define set_math_indirect_value(n,k) lmt_interface.math_indirect_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .id = n }
351
352 set_math_indirect_value(indirect_math_unset, unset);
353 set_math_indirect_value(indirect_math_regular, regular);
354 set_math_indirect_value(indirect_math_integer, integer);
355 set_math_indirect_value(indirect_math_dimension, dimension);
356 set_math_indirect_value(indirect_math_gluespec, gluespec);
357 set_math_indirect_value(indirect_math_mugluespec, mugluespec);
358 set_math_indirect_value(indirect_math_register_integer, registerinteger);
359 set_math_indirect_value(indirect_math_register_dimension, registerdimension);
360 set_math_indirect_value(indirect_math_register_gluespec, registergluespec);
361 set_math_indirect_value(indirect_math_register_mugluespec, registermugluespec);
362 set_math_indirect_value(indirect_math_internal_integer, internalinteger);
363 set_math_indirect_value(indirect_math_internal_dimension, internaldimension);
364 set_math_indirect_value(indirect_math_internal_dimension, internalgluespec);
365 set_math_indirect_value(indirect_math_internal_mugluespec, internalmugluespec);
366
367 lmt_interface.math_parameter_values = lmt_aux_allocate_value_info(last_math_parameter);
368
369 # define set_math_parameter_value(n,t,k) lmt_interface.math_parameter_values[n] = (value_info) { .lua = lua_key_index(k), .name = lua_key(k), .type = t }
370
371 set_math_parameter_value(math_parameter_quad, math_dimension_parameter, quad);
372 set_math_parameter_value(math_parameter_exheight, math_dimension_parameter, exheight);
373 set_math_parameter_value(math_parameter_axis, math_dimension_parameter, axis);
374 set_math_parameter_value(math_parameter_accent_base_height, math_dimension_parameter, accentbaseheight);
375 set_math_parameter_value(math_parameter_accent_base_depth, math_dimension_parameter, accentbasedepth);
376 set_math_parameter_value(math_parameter_flattened_accent_base_height, math_dimension_parameter, flattenedaccentbaseheight);
377 set_math_parameter_value(math_parameter_flattened_accent_base_depth, math_dimension_parameter, flattenedaccentbasedepth);
378 set_math_parameter_value(math_parameter_x_scale, math_integer_parameter, xscale);
379 set_math_parameter_value(math_parameter_y_scale, math_integer_parameter, yscale);
380 set_math_parameter_value(math_parameter_operator_size, math_dimension_parameter, operatorsize);
381 set_math_parameter_value(math_parameter_overbar_kern, math_dimension_parameter, overbarkern);
382 set_math_parameter_value(math_parameter_overbar_rule, math_dimension_parameter, overbarrule);
383 set_math_parameter_value(math_parameter_overbar_vgap, math_dimension_parameter, overbarvgap);
384 set_math_parameter_value(math_parameter_underbar_kern, math_dimension_parameter, underbarkern);
385 set_math_parameter_value(math_parameter_underbar_rule, math_dimension_parameter, underbarrule);
386 set_math_parameter_value(math_parameter_underbar_vgap, math_dimension_parameter, underbarvgap);
387 set_math_parameter_value(math_parameter_radical_kern, math_dimension_parameter, radicalkern);
388 set_math_parameter_value(math_parameter_radical_rule, math_dimension_parameter, radicalrule);
389 set_math_parameter_value(math_parameter_radical_vgap, math_dimension_parameter, radicalvgap);
390 set_math_parameter_value(math_parameter_radical_degree_before, math_dimension_parameter, radicaldegreebefore);
391 set_math_parameter_value(math_parameter_radical_degree_after, math_dimension_parameter, radicaldegreeafter);
392 set_math_parameter_value(math_parameter_radical_degree_raise, math_integer_parameter, radicaldegreeraise);
393 set_math_parameter_value(math_parameter_radical_extensible_after, math_dimension_parameter, radicalextensibleafter);
394 set_math_parameter_value(math_parameter_radical_extensible_before, math_dimension_parameter, radicalextensiblebefore);
395 set_math_parameter_value(math_parameter_stack_vgap, math_dimension_parameter, stackvgap);
396 set_math_parameter_value(math_parameter_stack_num_up, math_dimension_parameter, stacknumup);
397 set_math_parameter_value(math_parameter_stack_denom_down, math_dimension_parameter, stackdenomdown);
398 set_math_parameter_value(math_parameter_fraction_rule, math_dimension_parameter, fractionrule);
399 set_math_parameter_value(math_parameter_fraction_num_vgap, math_dimension_parameter, fractionnumvgap);
400 set_math_parameter_value(math_parameter_fraction_num_up, math_dimension_parameter, fractionnumup);
401 set_math_parameter_value(math_parameter_fraction_denom_vgap, math_dimension_parameter, fractiondenomvgap);
402 set_math_parameter_value(math_parameter_fraction_denom_down, math_dimension_parameter, fractiondenomdown);
403 set_math_parameter_value(math_parameter_fraction_del_size, math_dimension_parameter, fractiondelsize);
404 set_math_parameter_value(math_parameter_skewed_fraction_hgap, math_dimension_parameter, skewedfractionhgap);
405 set_math_parameter_value(math_parameter_skewed_fraction_vgap, math_dimension_parameter, skewedfractionvgap);
406 set_math_parameter_value(math_parameter_limit_above_vgap, math_dimension_parameter, limitabovevgap);
407 set_math_parameter_value(math_parameter_limit_above_bgap, math_dimension_parameter, limitabovebgap);
408 set_math_parameter_value(math_parameter_limit_above_kern, math_dimension_parameter, limitabovekern);
409 set_math_parameter_value(math_parameter_limit_below_vgap, math_dimension_parameter, limitbelowvgap);
410 set_math_parameter_value(math_parameter_limit_below_bgap, math_dimension_parameter, limitbelowbgap);
411 set_math_parameter_value(math_parameter_limit_below_kern, math_dimension_parameter, limitbelowkern);
412 set_math_parameter_value(math_parameter_nolimit_sup_factor, math_dimension_parameter, nolimitsupfactor);
413 set_math_parameter_value(math_parameter_nolimit_sub_factor, math_dimension_parameter, nolimitsubfactor);
414 set_math_parameter_value(math_parameter_under_delimiter_vgap, math_dimension_parameter, underdelimitervgap);
415 set_math_parameter_value(math_parameter_under_delimiter_bgap, math_dimension_parameter, underdelimiterbgap);
416 set_math_parameter_value(math_parameter_over_delimiter_vgap, math_dimension_parameter, overdelimitervgap);
417 set_math_parameter_value(math_parameter_over_delimiter_bgap, math_dimension_parameter, overdelimiterbgap);
418 set_math_parameter_value(math_parameter_subscript_shift_drop, math_dimension_parameter, subshiftdrop);
419 set_math_parameter_value(math_parameter_superscript_shift_drop, math_dimension_parameter, supshiftdrop);
420 set_math_parameter_value(math_parameter_subscript_shift_down, math_dimension_parameter, subshiftdown);
421 set_math_parameter_value(math_parameter_subscript_superscript_shift_down, math_dimension_parameter, subsupshiftdown);
422 set_math_parameter_value(math_parameter_subscript_top_max, math_dimension_parameter, subtopmax);
423 set_math_parameter_value(math_parameter_superscript_shift_up, math_dimension_parameter, supshiftup);
424 set_math_parameter_value(math_parameter_superscript_bottom_min, math_dimension_parameter, supbottommin);
425 set_math_parameter_value(math_parameter_superscript_subscript_bottom_max, math_dimension_parameter, supsubbottommax);
426 set_math_parameter_value(math_parameter_subscript_superscript_vgap, math_dimension_parameter, subsupvgap);
427 set_math_parameter_value(math_parameter_space_before_script, math_dimension_parameter, spacebeforescript);
428 set_math_parameter_value(math_parameter_space_between_script, math_dimension_parameter, spacebetweenscript);
429 set_math_parameter_value(math_parameter_space_after_script, math_dimension_parameter, spaceafterscript);
430 set_math_parameter_value(math_parameter_connector_overlap_min, math_dimension_parameter, connectoroverlapmin);
431
432
443
444 set_math_parameter_value(math_parameter_extra_superscript_shift, math_dimension_parameter, extrasuperscriptshift);
445 set_math_parameter_value(math_parameter_extra_subscript_shift, math_dimension_parameter, extrasubscriptshift);
446 set_math_parameter_value(math_parameter_extra_superprescript_shift, math_dimension_parameter, extrasuperprescriptshift);
447 set_math_parameter_value(math_parameter_extra_subprescript_shift, math_dimension_parameter, extrasubprescriptshift);
448
449 set_math_parameter_value(math_parameter_prime_raise, math_integer_parameter, primeraise);
450 set_math_parameter_value(math_parameter_prime_raise_composed, math_integer_parameter, primeraisecomposed);
451 set_math_parameter_value(math_parameter_prime_shift_up, math_dimension_parameter, primeshiftup);
452 set_math_parameter_value(math_parameter_prime_shift_drop, math_dimension_parameter, primeshiftdrop);
453 set_math_parameter_value(math_parameter_prime_space_after, math_dimension_parameter, primespaceafter);
454
455 set_math_parameter_value(math_parameter_rule_height, math_dimension_parameter, ruleheight);
456 set_math_parameter_value(math_parameter_rule_depth, math_dimension_parameter, ruledepth);
457
458 set_math_parameter_value(math_parameter_extra_superscript_space, math_dimension_parameter, extrasuperscriptspace);
459 set_math_parameter_value(math_parameter_extra_subscript_space, math_dimension_parameter, extrasubscriptspace);
460 set_math_parameter_value(math_parameter_extra_superprescript_space, math_dimension_parameter, extrasuperprescriptspace);
461 set_math_parameter_value(math_parameter_extra_subprescript_space, math_dimension_parameter, extrasubprescriptspace);
462
463 set_math_parameter_value(math_parameter_superscript_snap, math_dimension_parameter, superscriptsnap);
464 set_math_parameter_value(math_parameter_subscript_snap, math_dimension_parameter, subscriptsnap);
465
466 set_math_parameter_value(math_parameter_skewed_delimiter_tolerance, math_dimension_parameter, skeweddelimitertolerance);
467
468 set_math_parameter_value(math_parameter_accent_top_shift_up, math_dimension_parameter, accenttopshiftup);
469 set_math_parameter_value(math_parameter_accent_bottom_shift_down, math_dimension_parameter, accentbottomshiftdown);
470 set_math_parameter_value(math_parameter_accent_top_overshoot, math_integer_parameter, accenttopovershoot);
471 set_math_parameter_value(math_parameter_accent_bottom_overshoot, math_integer_parameter, accentbottomovershoot);
472 set_math_parameter_value(math_parameter_accent_superscript_drop, math_dimension_parameter, accentsuperscriptdrop);
473 set_math_parameter_value(math_parameter_accent_superscript_percent, math_integer_parameter, accentsuperscriptpercent);
474 set_math_parameter_value(math_parameter_accent_extend_margin, math_integer_parameter, accentextendmargin);
475 set_math_parameter_value(math_parameter_flattened_accent_top_shift_up, math_dimension_parameter, flattenedaccenttopshiftup);
476 set_math_parameter_value(math_parameter_flattened_accent_bottom_shift_down, math_dimension_parameter, flattenedaccentbottomshiftdown);
477
478 set_math_parameter_value(math_parameter_delimiter_percent, math_integer_parameter, delimiterpercent);
479 set_math_parameter_value(math_parameter_delimiter_shortfall, math_dimension_parameter, delimitershortfall);
480 set_math_parameter_value(math_parameter_delimiter_extend_margin, math_dimension_parameter, delimiterextendmargin);
481
482 set_math_parameter_value(math_parameter_over_line_variant, math_style_parameter, overlinevariant);
483 set_math_parameter_value(math_parameter_under_line_variant, math_style_parameter, underlinevariant);
484 set_math_parameter_value(math_parameter_over_delimiter_variant, math_style_parameter, overdelimitervariant);
485 set_math_parameter_value(math_parameter_under_delimiter_variant, math_style_parameter, underdelimitervariant);
486 set_math_parameter_value(math_parameter_delimiter_over_variant, math_style_parameter, delimiterovervariant);
487 set_math_parameter_value(math_parameter_delimiter_under_variant, math_style_parameter, delimiterundervariant);
488 set_math_parameter_value(math_parameter_h_extensible_variant, math_style_parameter, hextensiblevariant);
489 set_math_parameter_value(math_parameter_v_extensible_variant, math_style_parameter, vextensiblevariant);
490 set_math_parameter_value(math_parameter_fraction_variant, math_style_parameter, fractionvariant);
491 set_math_parameter_value(math_parameter_radical_variant, math_style_parameter, radicalvariant);
492 set_math_parameter_value(math_parameter_degree_variant, math_style_parameter, degreevariant);
493 set_math_parameter_value(math_parameter_accent_variant, math_style_parameter, accentvariant);
494 set_math_parameter_value(math_parameter_top_accent_variant, math_style_parameter, topaccentvariant);
495 set_math_parameter_value(math_parameter_bottom_accent_variant, math_style_parameter, bottomaccentvariant);
496 set_math_parameter_value(math_parameter_overlay_accent_variant, math_style_parameter, overlayaccentvariant);
497 set_math_parameter_value(math_parameter_numerator_variant, math_style_parameter, numeratorvariant);
498 set_math_parameter_value(math_parameter_denominator_variant, math_style_parameter, denominatorvariant);
499 set_math_parameter_value(math_parameter_superscript_variant, math_style_parameter, superscriptvariant);
500 set_math_parameter_value(math_parameter_subscript_variant, math_style_parameter, subscriptvariant);
501 set_math_parameter_value(math_parameter_prime_variant, math_style_parameter, primevariant);
502 set_math_parameter_value(math_parameter_stack_variant, math_style_parameter, stackvariant);
503
504 lmt_interface.math_font_parameter_values = lmt_aux_allocate_value_info(math_parameter_last_code + 1);
505
506 # define set_math_font_parameter(n, t) lmt_interface.math_font_parameter_values[n] = (value_info) { .lua = lua_key_index(n), .name = lua_key(n), .type = t }
507
508 set_math_font_parameter(ScriptPercentScaleDown, math_integer_parameter);
509 set_math_font_parameter(ScriptScriptPercentScaleDown, math_integer_parameter);
510 set_math_font_parameter(DelimitedSubFormulaMinHeight, math_dimension_parameter);
511 set_math_font_parameter(DisplayOperatorMinHeight, math_dimension_parameter);
512 set_math_font_parameter(MathLeading, math_dimension_parameter);
513 set_math_font_parameter(AxisHeight, math_dimension_parameter);
514 set_math_font_parameter(AccentBaseHeight, math_dimension_parameter);
515 set_math_font_parameter(AccentBaseDepth, math_dimension_parameter);
516 set_math_font_parameter(FlattenedAccentBaseHeight, math_dimension_parameter);
517 set_math_font_parameter(FlattenedAccentBaseDepth, math_dimension_parameter);
518 set_math_font_parameter(SubscriptShiftDown, math_dimension_parameter);
519 set_math_font_parameter(SubscriptTopMax, math_dimension_parameter);
520 set_math_font_parameter(SubscriptBaselineDropMin, math_dimension_parameter);
521 set_math_font_parameter(SuperscriptShiftUp, math_dimension_parameter);
522 set_math_font_parameter(SuperscriptShiftUpCramped, math_dimension_parameter);
523 set_math_font_parameter(SuperscriptBottomMin, math_dimension_parameter);
524 set_math_font_parameter(SuperscriptBaselineDropMax, math_dimension_parameter);
525 set_math_font_parameter(SubSuperscriptGapMin, math_dimension_parameter);
526 set_math_font_parameter(SuperscriptBottomMaxWithSubscript, math_dimension_parameter);
527 set_math_font_parameter(SpaceBeforeScript, math_dimension_parameter);
528 set_math_font_parameter(SpaceBetweenScript, math_dimension_parameter);
529 set_math_font_parameter(SpaceAfterScript, math_dimension_parameter);
530 set_math_font_parameter(UpperLimitGapMin, math_dimension_parameter);
531 set_math_font_parameter(UpperLimitBaselineRiseMin, math_dimension_parameter);
532 set_math_font_parameter(LowerLimitGapMin, math_dimension_parameter);
533 set_math_font_parameter(LowerLimitBaselineDropMin, math_dimension_parameter);
534 set_math_font_parameter(StackTopShiftUp, math_dimension_parameter);
535 set_math_font_parameter(StackTopDisplayStyleShiftUp, math_dimension_parameter);
536 set_math_font_parameter(StackBottomShiftDown, math_dimension_parameter);
537 set_math_font_parameter(StackBottomDisplayStyleShiftDown, math_dimension_parameter);
538 set_math_font_parameter(StackGapMin, math_dimension_parameter);
539 set_math_font_parameter(StackDisplayStyleGapMin, math_dimension_parameter);
540 set_math_font_parameter(StretchStackTopShiftUp, math_dimension_parameter);
541 set_math_font_parameter(StretchStackBottomShiftDown, math_dimension_parameter);
542 set_math_font_parameter(StretchStackGapAboveMin, math_dimension_parameter);
543 set_math_font_parameter(StretchStackGapBelowMin, math_dimension_parameter);
544 set_math_font_parameter(FractionNumeratorShiftUp, math_dimension_parameter);
545 set_math_font_parameter(FractionNumeratorDisplayStyleShiftUp, math_dimension_parameter);
546 set_math_font_parameter(FractionDenominatorShiftDown, math_dimension_parameter);
547 set_math_font_parameter(FractionDenominatorDisplayStyleShiftDown, math_dimension_parameter);
548 set_math_font_parameter(FractionNumeratorGapMin, math_dimension_parameter);
549 set_math_font_parameter(FractionNumeratorDisplayStyleGapMin, math_dimension_parameter);
550 set_math_font_parameter(FractionRuleThickness, math_dimension_parameter);
551 set_math_font_parameter(FractionDenominatorGapMin, math_dimension_parameter);
552 set_math_font_parameter(FractionDenominatorDisplayStyleGapMin, math_dimension_parameter);
553 set_math_font_parameter(SkewedFractionHorizontalGap, math_dimension_parameter);
554 set_math_font_parameter(SkewedFractionVerticalGap, math_dimension_parameter);
555 set_math_font_parameter(OverbarVerticalGap, math_dimension_parameter);
556 set_math_font_parameter(OverbarRuleThickness, math_dimension_parameter);
557 set_math_font_parameter(OverbarExtraAscender, math_dimension_parameter);
558 set_math_font_parameter(UnderbarVerticalGap, math_dimension_parameter);
559 set_math_font_parameter(UnderbarRuleThickness, math_dimension_parameter);
560 set_math_font_parameter(UnderbarExtraDescender, math_dimension_parameter);
561 set_math_font_parameter(RadicalVerticalGap, math_dimension_parameter);
562 set_math_font_parameter(RadicalDisplayStyleVerticalGap, math_dimension_parameter);
563 set_math_font_parameter(RadicalRuleThickness, math_dimension_parameter);
564 set_math_font_parameter(RadicalExtraAscender, math_dimension_parameter);
565 set_math_font_parameter(RadicalKernBeforeDegree, math_dimension_parameter);
566 set_math_font_parameter(RadicalKernAfterDegree, math_dimension_parameter);
567 set_math_font_parameter(RadicalDegreeBottomRaisePercent, math_integer_parameter);
568 set_math_font_parameter(RadicalKernAfterExtensible, math_dimension_parameter);
569 set_math_font_parameter(RadicalKernBeforeExtensible, math_dimension_parameter);
570 set_math_font_parameter(MinConnectorOverlap, math_dimension_parameter);
571 set_math_font_parameter(SuperscriptSnap, math_dimension_parameter);
572 set_math_font_parameter(SubscriptSnap, math_dimension_parameter);
573 set_math_font_parameter(SubscriptShiftDownWithSuperscript, math_dimension_parameter);
574 set_math_font_parameter(FractionDelimiterSize, math_dimension_parameter);
575 set_math_font_parameter(FractionDelimiterDisplayStyleSize, math_dimension_parameter);
576 set_math_font_parameter(NoLimitSubFactor, math_integer_parameter);
577 set_math_font_parameter(NoLimitSupFactor, math_integer_parameter);
578 set_math_font_parameter(PrimeRaisePercent, math_integer_parameter);
579 set_math_font_parameter(PrimeRaiseComposedPercent, math_integer_parameter);
580 set_math_font_parameter(PrimeShiftUp, math_dimension_parameter);
581 set_math_font_parameter(PrimeShiftUpCramped, math_dimension_parameter);
582 set_math_font_parameter(PrimeBaselineDropMax, math_dimension_parameter);
583 set_math_font_parameter(PrimeSpaceAfter, math_dimension_parameter);
584 set_math_font_parameter(PrimeWidthPercent, math_integer_parameter);
585 set_math_font_parameter(SkewedDelimiterTolerance, math_dimension_parameter);
586 set_math_font_parameter(AccentTopShiftUp, math_dimension_parameter);
587 set_math_font_parameter(AccentBottomShiftDown, math_dimension_parameter);
588 set_math_font_parameter(AccentTopOvershoot, math_integer_parameter);
589 set_math_font_parameter(AccentBottomOvershoot, math_integer_parameter);
590 set_math_font_parameter(AccentSuperscriptDrop, math_dimension_parameter);
591 set_math_font_parameter(AccentSuperscriptPercent, math_integer_parameter);
592 set_math_font_parameter(AccentExtendMargin, math_dimension_parameter);
593 set_math_font_parameter(FlattenedAccentTopShiftUp, math_dimension_parameter);
594 set_math_font_parameter(FlattenedAccentBottomShiftDown, math_dimension_parameter);
595 set_math_font_parameter(DelimiterPercent, math_integer_parameter);
596 set_math_font_parameter(DelimiterShortfall, math_dimension_parameter);
597 set_math_font_parameter(DelimiterDisplayPercent, math_integer_parameter);
598 set_math_font_parameter(DelimiterDisplayShortfall, math_dimension_parameter);
599 set_math_font_parameter(DelimiterExtendMargin, math_dimension_parameter);
600}
601 |