summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex
diff options
context:
space:
mode:
authorLuigi Scarso <luigi.scarso@gmail.com>2019-01-06 18:57:01 +0000
committerLuigi Scarso <luigi.scarso@gmail.com>2019-01-06 18:57:01 +0000
commit0c14fd18747b9f6fbbecb75ba8beef6d449c460a (patch)
tree6c60915cf22ba35f9f4fff0048ebe3a6c073662d /Build/source/texk/web2c/luatexdir/tex
parent2a4260012f7ef1890dd351aabe4befd60922d5a6 (diff)
luatex 1.09.2; r-mpost alias of mpost -restricted
git-svn-id: svn://tug.org/texlive/trunk@49614 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/mainbody.c1
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/maincontrol.c11
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/mlist.c79
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/packaging.c3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/printing.c3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texnodes.c78
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texnodes.h37
7 files changed, 153 insertions, 59 deletions
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<clr) {
shift_down += (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_under_delimiter_list);
/*tex This also equals |width(y)|: */
width(v) = width(y);
math_list(nucleus(q)) = v;
@@ -2585,7 +2597,7 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
}
/*tex Compute the amount of skew, or set |s| to an alignment point */
s_is_absolute = compute_accent_skew(q, flags, &s);
- 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);
w = width(x);
h = height(x);
if (do_new_math(cur_f) && !s_is_absolute) {
@@ -2661,7 +2673,7 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
subscr(q) = null;
type(nucleus(q)) = sub_mlist_node;
math_list(nucleus(q)) = x;
- x = clean_box(nucleus(q), cur_style, cur_style);
+ x = clean_box(nucleus(q), cur_style, cur_style, math_nucleus_list);
delta = delta + height(x) - h;
h = height(x);
}
@@ -2722,6 +2734,7 @@ static void do_make_math_accent(pointer q, internal_font_number f, int c, int fl
}
r = vpackage(y, 0, additional, max_dimen, math_direction_par);
reset_attributes(r, node_attr(q));
+ subtype(r) = math_accent_list;
width(r) = width(x);
y = r;
if (flags & (TOP_CODE | OVERLAY_CODE)) {
@@ -2815,8 +2828,8 @@ static void make_fraction(pointer q, int cur_style)
are displaced from the baseline.
*/
- x = clean_box(numerator(q), num_style(cur_style), cur_style);
- z = clean_box(denominator(q), denom_style(cur_style), cur_style);
+ x = clean_box(numerator(q), num_style(cur_style), cur_style, math_numerator_list);
+ z = clean_box(denominator(q), denom_style(cur_style), cur_style, math_denominator_list);
if (middle_delimiter(q) != null) {
delta = 0;
m = do_delimiter(q, middle_delimiter(q), cur_size, delta, false, cur_style, true, NULL, NULL, NULL);
@@ -2892,6 +2905,7 @@ static void make_fraction(pointer q, int cur_style)
v = new_null_box();
reset_attributes(v, node_attr(q));
type(v) = hlist_node;
+ subtype(v) = math_numerator_list;
list_ptr(v) = x;
width(v) = width(x);
height(v) = height(x) + shift_up;
@@ -2901,6 +2915,7 @@ static void make_fraction(pointer q, int cur_style)
v = new_null_box();
reset_attributes(v, node_attr(q));
type(v) = hlist_node;
+ subtype(v) = math_denominator_list;
list_ptr(v) = z;
width(v) = width(z);
height(v) = height(z);
@@ -2908,6 +2923,7 @@ static void make_fraction(pointer q, int cur_style)
shift_amount(v) = shift_down;
z = v;
v = new_null_box();
+ subtype(v) = math_fraction_list;
reset_attributes(v, node_attr(q));
type(v) = hlist_node;
if (height(x) > 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