From 0c14fd18747b9f6fbbecb75ba8beef6d449c460a Mon Sep 17 00:00:00 2001 From: Luigi Scarso Date: Sun, 6 Jan 2019 18:57:01 +0000 Subject: luatex 1.09.2; r-mpost alias of mpost -restricted git-svn-id: svn://tug.org/texlive/trunk@49614 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/luatexdir/tex/mainbody.c | 1 + .../source/texk/web2c/luatexdir/tex/maincontrol.c | 11 ++- Build/source/texk/web2c/luatexdir/tex/mlist.c | 79 ++++++++++++++-------- Build/source/texk/web2c/luatexdir/tex/packaging.c | 3 + Build/source/texk/web2c/luatexdir/tex/printing.c | 3 +- Build/source/texk/web2c/luatexdir/tex/texnodes.c | 78 ++++++++++++++++----- Build/source/texk/web2c/luatexdir/tex/texnodes.h | 37 +++++++--- 7 files changed, 153 insertions(+), 59 deletions(-) (limited to 'Build/source/texk/web2c/luatexdir/tex') diff --git a/Build/source/texk/web2c/luatexdir/tex/mainbody.c b/Build/source/texk/web2c/luatexdir/tex/mainbody.c index ca9a79dbb02..9116d8bdb67 100644 --- a/Build/source/texk/web2c/luatexdir/tex/mainbody.c +++ b/Build/source/texk/web2c/luatexdir/tex/mainbody.c @@ -668,6 +668,7 @@ void close_files_and_terminate(void) print_ln(); } lua_a_close_out(log_file); + log_opened_global = false; } callback_id = callback_defined(wrapup_run_callback); if (callback_id > 0) { diff --git a/Build/source/texk/web2c/luatexdir/tex/maincontrol.c b/Build/source/texk/web2c/luatexdir/tex/maincontrol.c index 295e2c6ccae..2768bff72a2 100644 --- a/Build/source/texk/web2c/luatexdir/tex/maincontrol.c +++ b/Build/source/texk/web2c/luatexdir/tex/maincontrol.c @@ -131,9 +131,15 @@ static void run_node (void) { n = copy_node_list(n); } tail_append(n); + if (nodetype_has_attributes(type(n)) && node_attr(n) == null) { + build_attribute_list(n); + } while (vlink(n) != null) { n = vlink(n); tail_append(n); + if (nodetype_has_attributes(type(n)) && node_attr(n) == null) { + build_attribute_list(n); + } } } @@ -2692,9 +2698,8 @@ void prefixed_command(void) /*tex |letcharcode| */ scan_int(); if (cur_val > 0) { - cur_cs = active_to_cs(cur_val, true); - set_token_info(cur_cs, cur_cs + cs_token_flag); - p = cur_cs; + /*tex HH: I need to do a more extensive test later. */ + p = active_to_cs(cur_val, true); do { get_token(); } while (cur_cmd == spacer_cmd); diff --git a/Build/source/texk/web2c/luatexdir/tex/mlist.c b/Build/source/texk/web2c/luatexdir/tex/mlist.c index 8f6d71eb294..abeb3b461b3 100644 --- a/Build/source/texk/web2c/luatexdir/tex/mlist.c +++ b/Build/source/texk/web2c/luatexdir/tex/mlist.c @@ -1146,8 +1146,9 @@ static pointer char_box(internal_font_number f, int c, pointer bb) width(b) = char_width(f, c) + char_italic(f, c); height(b) = char_height(f, c); depth(b) = char_depth(f, c); + subtype(b) = math_char_list ; reset_attributes(b, bb); - p = new_char(f, c); + p = new_glyph(f, c); reset_attributes(p, bb); list_ptr(b) = p; return b; @@ -1475,8 +1476,10 @@ pointer make_extensible(internal_font_number fnt, halfword chr, scaled v, scaled } if (horizontal) { width(b) = b_max; + subtype(b) = math_h_extensible_list; } else { height(b) = b_max; + subtype(b) = math_v_extensible_list; } return b; } @@ -1537,8 +1540,9 @@ static pointer do_delimiter(pointer q, pointer d, int s, scaled v, boolean flat, extinfo *ext; f = null_font; c = 0; - if (d == null) + if (d == null) { goto FOUND; + } z = small_fam(d); x = small_char(d); i = 0; @@ -1650,9 +1654,11 @@ static pointer do_delimiter(pointer q, pointer d, int s, scaled v, boolean flat, reset_attributes(b, att); if (flat) { width(b) = 0; + subtype(b) = math_h_delimiter_list; } else { /*tex Use this width if no delimiter was found. */ width(b) = null_delimiter_space_par; + subtype(b) = math_v_delimiter_list; } if (delta != NULL) { *delta = 0; @@ -1876,7 +1882,7 @@ void run_mlist_to_hlist(halfword p, boolean penalties, int mstyle) */ -static pointer clean_box(pointer p, int s, int cur_style) +static pointer clean_box(pointer p, int s, int cur_style, halfword st) { /*tex beginning of a list to be boxed */ pointer q; @@ -1901,6 +1907,7 @@ static pointer clean_box(pointer p, int s, int cur_style) break; default: q = new_null_box(); + subtype(q) = math_list_list; goto FOUND; } mlist_to_hlist(mlist, false, s); @@ -1917,6 +1924,7 @@ static pointer clean_box(pointer p, int s, int cur_style) x = hpack(q, 0, additional, -1); if (x != q && q != null) reset_attributes(x, node_attr(q)); + subtype(x) = st; /*tex Here we save memory space in a common case. */ q = list_ptr(x); if (is_char_node(q)) { @@ -2061,9 +2069,10 @@ static void make_over(pointer q, int cur_style, int cur_size, int cur_fam) } } } - p = overbar(clean_box(nucleus(q), cramped_style(cur_style), cur_style), + p = overbar(clean_box(nucleus(q), cramped_style(cur_style), cur_style, math_nucleus_list), overbar_vgap(cur_style), used_thickness, overbar_kern(cur_style), node_attr(nucleus(q)), math_over_rule, cur_size, used_fam); + subtype(p) = math_over_list; math_list(nucleus(q)) = p; type(nucleus(q)) = sub_box_node; } @@ -2083,7 +2092,7 @@ static void make_under(pointer q, int cur_style, int cur_size, int cur_fam) scaled f, t; scaled used_thickness = underbar_rule(cur_style); scaled used_fam = cur_fam; - x = clean_box(nucleus(q), cur_style, cur_style); + x = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); p = new_kern(underbar_vgap(cur_style)); reset_attributes(p, node_attr(q)); couple_nodes(x,p); @@ -2104,6 +2113,7 @@ static void make_under(pointer q, int cur_style, int cur_size, int cur_fam) couple_nodes(p,r); y = vpackage(x, 0, additional, max_dimen, math_direction_par); reset_attributes(y, node_attr(q)); + subtype(y) = math_under_list; delta = height(y) + depth(y) + underbar_kern(cur_style); height(y) = height(x); depth(y) = delta - height(y); @@ -2170,7 +2180,7 @@ static void make_radical(pointer q, int cur_style) /*tex dimensions involved in the calculation */ scaled delta, clr, theta, h, f; scaled t, used_fam ; - x = clean_box(nucleus(q), cramped_style(cur_style), cur_style); + x = clean_box(nucleus(q), cramped_style(cur_style), cur_style, math_nucleus_list); clr = radical_vgap(cur_style); theta = radical_rule_par(cur_style); used_fam = small_fam(left_delimiter(q)); @@ -2240,10 +2250,11 @@ static void make_radical(pointer q, int cur_style) shift_amount(y) = (height(y) - theta) - (height(x) + clr); h = depth(y) + height(y); p = overbar(x, clr, theta, radical_kern(cur_style), node_attr(y), math_radical_rule, cur_size, used_fam); + subtype(p) = math_radical_list; couple_nodes(y,p); if (degree(q) != null) { scaled wr, br, ar; - pointer r = clean_box(degree(q), script_script_style, cur_style); + pointer r = clean_box(degree(q), script_script_style, cur_style, math_degree_list); reset_attributes(r, node_attr(degree(q))); wr = width(r); if (wr == 0) { @@ -2277,11 +2288,12 @@ static void make_radical(pointer q, int cur_style) /*tex Construct a vlist box: */ -static pointer wrapup_over_under_delimiter(pointer x, pointer y, pointer q, scaled shift_up, scaled shift_down) +static pointer wrapup_over_under_delimiter(pointer x, pointer y, pointer q, scaled shift_up, scaled shift_down, halfword st) { pointer p; pointer v = new_null_box(); type(v) = vlist_node; + subtype(v) = st; height(v) = shift_up + height(x); depth(v) = depth(y) + shift_down; reset_attributes(v, node_attr(q)); @@ -2354,7 +2366,7 @@ static void make_over_delimiter(pointer q, int cur_style) pointer x, y, v; scaled shift_up, shift_down, clr, delta, wd; boolean stack; - x = clean_box(nucleus(q), sub_style(cur_style), cur_style); + x = clean_box(nucleus(q), sub_style(cur_style), cur_style, math_nucleus_list); check_widths(q,x); y = do_delimiter(q, left_delimiter(q), cur_size, wd, true, cur_style, true, &stack, NULL, NULL); left_delimiter(q) = null; @@ -2367,7 +2379,7 @@ static void make_over_delimiter(pointer q, int cur_style) if (delta > 0) { shift_up = shift_up + delta; } - v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down); + v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down, math_over_delimiter_list); /*tex This also equals |width(y)|: */ width(v) = width(x); math_list(nucleus(q)) = v; @@ -2385,7 +2397,7 @@ static void make_under_delimiter(pointer q, int cur_style) pointer x, y, v; scaled shift_up, shift_down, clr, delta, wd; boolean stack; - y = clean_box(nucleus(q), sup_style(cur_style), cur_style); + y = clean_box(nucleus(q), sup_style(cur_style), cur_style, math_nucleus_list); check_widths(q,y); x = do_delimiter(q, left_delimiter(q), cur_size, wd, true, cur_style, true, &stack, NULL, NULL); left_delimiter(q) = null; @@ -2398,7 +2410,7 @@ static void make_under_delimiter(pointer q, int cur_style) if (delta > 0) { shift_down = shift_down + delta; } - v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down); + v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down, math_under_delimiter_list); /*tex This also equals |width(y)|: */ width(v) = width(y); math_list(nucleus(q)) = v; @@ -2416,7 +2428,7 @@ static void make_delimiter_over(pointer q, int cur_style) pointer x, y, v; scaled shift_up, shift_down, clr, actual, wd; boolean stack; - y = clean_box(nucleus(q), cur_style, cur_style); + y = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); check_widths(q,y); x = do_delimiter(q, left_delimiter(q), cur_size + (cur_size == script_script_size ? 0 : 1), wd, true, cur_style, true, &stack, NULL, NULL); left_delimiter(q) = null; @@ -2429,7 +2441,7 @@ static void make_delimiter_over(pointer q, int cur_style) if (actual < clr) { shift_up = shift_up + (clr-actual); } - v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down); + v = wrapup_over_under_delimiter(x, y, q, shift_up, shift_down, math_over_delimiter_list); /*tex This also equals |width(y)|: */ width(v) = width(x); math_list(nucleus(q)) = v; @@ -2447,7 +2459,7 @@ static void make_delimiter_under(pointer q, int cur_style) pointer x, y, v; scaled shift_up, shift_down, clr, actual, wd; boolean stack; - x = clean_box(nucleus(q), cur_style, cur_style); + x = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); check_widths(q,x); y = do_delimiter(q, left_delimiter(q), cur_size + (cur_size == script_script_size ? 0 : 1), wd, true, cur_style, true, &stack, NULL, NULL); left_delimiter(q) = null; @@ -2460,7 +2472,7 @@ static void make_delimiter_under(pointer q, int cur_style) if (actual height(z)) { @@ -2954,6 +2970,7 @@ static void make_fraction(pointer q, int cur_style) */ v = new_null_box(); type(v) = vlist_node; + subtype(v) = math_fraction_list; height(v) = shift_up + height(x); depth(v) = depth(z) + shift_down; /*tex This also equals |width(z)|. */ @@ -2997,6 +3014,8 @@ static void make_fraction(pointer q, int cur_style) couple_nodes(v,r); y = hpack(l, 0, additional, -1); reset_attributes(y, node_attr(q)); + /*tex There can also be a nested one: */ + subtype(y) = math_fraction_list; assign_new_hlist(q, y); } @@ -3045,7 +3064,7 @@ static scaled make_op(pointer q, int cur_style) if (ok_size != undefined_math_parameter) { /*tex creating a temporary delimiter is the cleanest way */ y = new_node(delim_node, 0); - reset_attributes(y, node_attr(q)); + reset_attributes(y, node_attr(nucleus(q))); small_fam(y) = math_fam(nucleus(q)); small_char(y) = math_character(nucleus(q)); x = do_delimiter(q, y, text_size, ok_size, false, cur_style, true, NULL, &delta, NULL); @@ -3067,7 +3086,7 @@ static scaled make_op(pointer q, int cur_style) math_character(nucleus(q)) = c; } delta = char_italic(cur_f, cur_c); - x = clean_box(nucleus(q), cur_style, cur_style); + x = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); if (delta != 0) { if (do_new_math(cur_f)) { /*tex we never added italic correction */ @@ -3081,7 +3100,7 @@ static scaled make_op(pointer q, int cur_style) } else { /*tex normal size */ delta = char_italic(cur_f, cur_c); - x = clean_box(nucleus(q), cur_style, cur_style); + x = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); if (delta != 0) { if (do_new_math(cur_f)) { /*tex we never added italic correction */ @@ -3180,12 +3199,13 @@ static scaled make_op(pointer q, int cur_style) be skewed. */ - x = clean_box(supscr(q), sup_style(cur_style), cur_style); - y = clean_box(nucleus(q), cur_style, cur_style); - z = clean_box(subscr(q), sub_style(cur_style), cur_style); + x = clean_box(supscr(q), sup_style(cur_style), cur_style, math_sup_list); + y = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list); + z = clean_box(subscr(q), sub_style(cur_style), cur_style, math_sub_list); v = new_null_box(); reset_attributes(v, node_attr(q)); type(v) = vlist_node; + subtype(v) = math_limits_list; if (do_new_math(cur_f)) { n = nucleus(q); if (n != null) { @@ -3724,7 +3744,7 @@ static void make_scripts(pointer q, pointer p, scaled it, int cur_style, scaled should not exceed the baseline plus four-fifths of the x-height. */ - x = clean_box(subscr(q), (noadoptionnosubscript(q) ? cur_style : sub_style(cur_style)), cur_style); + x = clean_box(subscr(q), (noadoptionnosubscript(q) ? cur_style : sub_style(cur_style)), cur_style, math_sub_list); width(x) = width(x) + space_after_script(cur_style); switch (math_scripts_mode_par) { case 1: @@ -3774,7 +3794,7 @@ static void make_scripts(pointer q, pointer p, scaled it, int cur_style, scaled never descend below the baseline plus one-fourth of the x-height. */ - x = clean_box(supscr(q), (noadoptionnosupscript(q) ? cur_style : sup_style(cur_style)), cur_style); + x = clean_box(supscr(q), (noadoptionnosupscript(q) ? cur_style : sup_style(cur_style)), cur_style, math_sup_list); width(x) = width(x) + space_after_script(cur_style); switch (math_scripts_mode_par) { case 1: @@ -3832,7 +3852,7 @@ static void make_scripts(pointer q, pointer p, scaled it, int cur_style, scaled four-fifths of the x-height. */ - y = clean_box(subscr(q), (noadoptionnosubscript(q) ? cur_style : sub_style(cur_style)), cur_style); + y = clean_box(subscr(q), (noadoptionnosubscript(q) ? cur_style : sub_style(cur_style)), cur_style, math_sub_list); width(y) = width(y) + space_after_script(cur_style); switch (math_scripts_mode_par) { case 1: @@ -3912,6 +3932,7 @@ static void make_scripts(pointer q, pointer p, scaled it, int cur_style, scaled /*tex We end up with funny dimensions. */ x = vpackage(x, 0, additional, max_dimen, math_direction_par); reset_attributes(x, node_attr(q)); + subtype(x) = math_scripts_list; shift_amount(x) = shift_down; } } diff --git a/Build/source/texk/web2c/luatexdir/tex/packaging.c b/Build/source/texk/web2c/luatexdir/tex/packaging.c index e2b007f11ef..3d23c8b7320 100644 --- a/Build/source/texk/web2c/luatexdir/tex/packaging.c +++ b/Build/source/texk/web2c/luatexdir/tex/packaging.c @@ -2124,6 +2124,9 @@ void begin_box(int box_context) normal_paragraph(); } push_nest(); +/* new */ +/* eq_word_define(int_base + no_local_whatsits_code, 0); */ +eq_word_define(int_base + no_local_dirs_code, 0); cur_list.mode_field = -k; if (k == vmode) { prev_depth_par = ignore_depth; diff --git a/Build/source/texk/web2c/luatexdir/tex/printing.c b/Build/source/texk/web2c/luatexdir/tex/printing.c index 0a961071b05..6ad4634a1f3 100644 --- a/Build/source/texk/web2c/luatexdir/tex/printing.c +++ b/Build/source/texk/web2c/luatexdir/tex/printing.c @@ -466,7 +466,8 @@ void tprint(const char *sss) /*tex What is left is the 3 term/log settings. */ if (dolog || doterm) { buffer = xmalloc(strlen(sss)*3); - if (dolog) { + /*tex The |wrapup_run| callback acts when the log file is already closed.*/ + if (dolog && log_opened_global) { const unsigned char *ss = (const unsigned char *) sss; while (*ss) { int s = *ss++; diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.c b/Build/source/texk/web2c/luatexdir/tex/texnodes.c index 1dd28cdf56d..e0bf1522749 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.c +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.c @@ -345,15 +345,36 @@ subtype_info node_subtypes_marginkern[] = { }; subtype_info node_subtypes_list[] = { - { unknown_list, NULL, 0 }, - { line_list, NULL, 0 }, - { hbox_list, NULL, 0 }, - { indent_list, NULL, 0 }, - { align_row_list, NULL, 0 }, - { align_cell_list, NULL, 0 }, - { equation_list, NULL, 0 }, - { equation_number_list, NULL, 0 }, - { -1, NULL, 0 }, + { unknown_list, NULL, 0 }, + { line_list, NULL, 0 }, + { hbox_list, NULL, 0 }, + { indent_list, NULL, 0 }, + { align_row_list, NULL, 0 }, + { align_cell_list, NULL, 0 }, + { equation_list, NULL, 0 }, + { equation_number_list, NULL, 0 }, + { math_list_list, NULL, 0 }, + { math_char_list, NULL, 0 }, + { math_h_extensible_list, NULL, 0 }, + { math_v_extensible_list, NULL, 0 }, + { math_h_delimiter_list, NULL, 0 }, + { math_v_delimiter_list, NULL, 0 }, + { math_over_delimiter_list, NULL, 0 }, + { math_under_delimiter_list, NULL, 0 }, + { math_numerator_list, NULL, 0 }, + { math_denominator_list, NULL, 0 }, + { math_limits_list, NULL, 0 }, + { math_fraction_list, NULL, 0 }, + { math_nucleus_list, NULL, 0 }, + { math_sup_list, NULL, 0 }, + { math_sub_list, NULL, 0 }, + { math_degree_list, NULL, 0 }, + { math_scripts_list, NULL, 0 }, + { math_over_list, NULL, 0 }, + { math_under_list, NULL, 0 }, + { math_accent_list, NULL, 0 }, + { math_radical_list, NULL, 0 }, + { -1, NULL, 0 }, }; subtype_info node_subtypes_adjust[] = { @@ -610,14 +631,35 @@ void l_set_node_data(void) { init_node_key(node_subtypes_fence, right_noad_side, right) init_node_key(node_subtypes_fence, no_noad_side, no) - init_node_key(node_subtypes_list, unknown_list, unknown) - init_node_key(node_subtypes_list, line_list, line) - init_node_key(node_subtypes_list, hbox_list, box) - init_node_key(node_subtypes_list, indent_list, indent) - init_node_key(node_subtypes_list, align_row_list, alignment) - init_node_key(node_subtypes_list, align_cell_list, cell) - init_node_key(node_subtypes_list, equation_list, equation) - init_node_key(node_subtypes_list, equation_number_list, equationnumber) + init_node_key(node_subtypes_list, unknown_list, unknown) + init_node_key(node_subtypes_list, line_list, line) + init_node_key(node_subtypes_list, hbox_list, box) + init_node_key(node_subtypes_list, indent_list, indent) + init_node_key(node_subtypes_list, align_row_list, alignment) + init_node_key(node_subtypes_list, align_cell_list, cell) + init_node_key(node_subtypes_list, equation_list, equation) + init_node_key(node_subtypes_list, equation_number_list, equationnumber) + init_node_key(node_subtypes_list, math_list_list, math) + init_node_key(node_subtypes_list, math_char_list, mathchar) + init_node_key(node_subtypes_list, math_h_extensible_list, hextensible) + init_node_key(node_subtypes_list, math_v_extensible_list, vextensible) + init_node_key(node_subtypes_list, math_h_delimiter_list, hdelimiter) + init_node_key(node_subtypes_list, math_v_delimiter_list, vdelimiter) + init_node_key(node_subtypes_list, math_over_delimiter_list, overdelimiter) + init_node_key(node_subtypes_list, math_under_delimiter_list, underdelimiter) + init_node_key(node_subtypes_list, math_numerator_list, numerator) + init_node_key(node_subtypes_list, math_denominator_list, denominator) + init_node_key(node_subtypes_list, math_limits_list, limits) + init_node_key(node_subtypes_list, math_fraction_list, fraction) + init_node_key(node_subtypes_list, math_nucleus_list, nucleus) + init_node_key(node_subtypes_list, math_sup_list, sup) + init_node_key(node_subtypes_list, math_sub_list, sub) + init_node_key(node_subtypes_list, math_degree_list, degree) + init_node_key(node_subtypes_list, math_scripts_list, scripts) + init_node_key(node_subtypes_list, math_over_list, over) + init_node_key(node_subtypes_list, math_under_list, under) + init_node_key(node_subtypes_list, math_accent_list, accent) + init_node_key(node_subtypes_list, math_radical_list, radical) init_node_key(node_subtypes_math, before, beginmath) init_node_key(node_subtypes_math, after, endmath) @@ -4732,7 +4774,7 @@ halfword make_local_par_node(int mode) { int callback_id; halfword q; - halfword p = new_node(local_par_node,0); + halfword p = new_node(local_par_node,mode); local_pen_inter(p) = local_inter_line_penalty_par; local_pen_broken(p) = local_broken_penalty_par; if (local_left_box_par != null) { diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h index e77e2916e71..848f9ea4799 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h @@ -248,14 +248,35 @@ typedef enum { /* todo, make an enum of this */ typedef enum { - unknown_list = 0, - line_list = 1, /* paragraph lines */ - hbox_list = 2, /* \.{\\hbox} */ - indent_list = 3, /* indentation box */ - align_row_list = 4, /* row from a \.{\\halign} or \.{\\valign} */ - align_cell_list = 5, /* cell from a \.{\\halign} or \.{\\valign} */ - equation_list = 6, /* display equation */ - equation_number_list = 7, /* display equation number */ + unknown_list = 0, + line_list = 1, /* paragraph lines */ + hbox_list = 2, /* \.{\\hbox} */ + indent_list = 3, /* indentation box */ + align_row_list = 4, /* row from a \.{\\halign} or \.{\\valign} */ + align_cell_list = 5, /* cell from a \.{\\halign} or \.{\\valign} */ + equation_list = 6, /* display equation */ + equation_number_list = 7, /* display equation number */ + math_list_list = 8, + math_char_list = 9, + math_h_extensible_list = 10, + math_v_extensible_list = 11, + math_h_delimiter_list = 12, + math_v_delimiter_list = 13, + math_over_delimiter_list = 14, + math_under_delimiter_list = 15, + math_numerator_list = 16, + math_denominator_list = 17, + math_limits_list = 18, + math_fraction_list = 19, + math_nucleus_list = 20, + math_sup_list = 21, + math_sub_list = 22, + math_degree_list = 23, + math_scripts_list = 24, + math_over_list = 25, + math_under_list = 26, + math_accent_list = 27, + math_radical_list = 28, } list_subtypes ; # define width(a) varmem[(a)+2].cint -- cgit v1.2.3