summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex
diff options
context:
space:
mode:
authorLuigi Scarso <luigi.scarso@gmail.com>2018-09-05 21:30:41 +0000
committerLuigi Scarso <luigi.scarso@gmail.com>2018-09-05 21:30:41 +0000
commit1b8b254a766350291f8e7e19feaf6326ebabe633 (patch)
tree8a20823763635906b94a68b72541a10dc6f91377 /Build/source/texk/web2c/luatexdir/tex
parentef7aedbc1cabb3eebb59082e349f9792c9c4d3c1 (diff)
sync with luatex revision 6924.
git-svn-id: svn://tug.org/texlive/trunk@48591 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/commands.h15
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/conditional.h49
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/directions.h49
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/equivalents.h59
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/extensions.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/inputstack.h1
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/linebreak.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/mainbody.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/maincontrol.h8
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/mlist.h1
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/packaging.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/printing.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/scanning.h5
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/stringpool.h9
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texmath.h16
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texnodes.h185
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/textoken.h29
17 files changed, 285 insertions, 155 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.h b/Build/source/texk/web2c/luatexdir/tex/commands.h
index 8eabaa4e7cc..c3a3ca30452 100644
--- a/Build/source/texk/web2c/luatexdir/tex/commands.h
+++ b/Build/source/texk/web2c/luatexdir/tex/commands.h
@@ -89,6 +89,7 @@ typedef enum {
char_num_cmd, /* character specified numerically ( \.{\\char} ) */
math_char_num_cmd, /* explicit math code ( \.{\\mathchar} ) */
mark_cmd, /* mark definition ( \.{\\mark} ) */
+ node_cmd,
xray_cmd, /* peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~) */
make_box_cmd, /* make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~) */
hmove_cmd, /* horizontal motion ( \.{\\moveleft}, \.{\\moveright} ) */
@@ -134,6 +135,9 @@ typedef enum {
normal_cmd, /* general extensions to \TeX\ that don't fit into a category */
extension_cmd, /* extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~) */
option_cmd,
+ lua_function_call_cmd,
+ lua_bytecode_call_cmd,
+ lua_call_cmd,
in_stream_cmd, /* files for reading ( \.{\\openin}, \.{\\closein} ) */
begin_group_cmd, /* begin local grouping ( \.{\\begingroup} ) */
end_group_cmd, /* end local grouping ( \.{\\endgroup} ) */
@@ -179,7 +183,9 @@ typedef enum {
set_font_cmd, /* set current font ( font identifiers ) */
def_font_cmd, /* define a font file ( \.{\\font} ) */
register_cmd, /* internal register ( \.{\\count}, \.{\\dimen}, etc.~) */
+ assign_box_direction_cmd, /* (\.{\\boxdirection}) */
assign_box_dir_cmd, /* (\.{\\boxdir}) */
+ assign_direction_cmd, /* (\.{\\pagedirection}, \.{\\textdirection}) */
assign_dir_cmd, /* (\.{\\pagedir}, \.{\\textdir}) */
# define max_internal_cmd assign_dir_cmd /* the largest code that can follow \.{\\the} */
advance_cmd, /* advance a register or parameter ( \.{\\advance} ) */
@@ -188,6 +194,7 @@ typedef enum {
prefix_cmd, /* qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} ) */
let_cmd, /* assign a command code ( \.{\\let}, \.{\\futurelet} ) */
shorthand_def_cmd, /* code definition ( \.{\\chardef}, \.{\\countdef}, etc.~) */
+ def_lua_call_cmd,
read_to_cs_cmd, /* read into a control sequence ( \.{\\read} ) */
def_cmd, /* macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} ) */
set_box_cmd, /* set a box ( \.{\\setbox} ) */
@@ -201,6 +208,8 @@ typedef enum {
expand_after_cmd, /* special expansion ( \.{\\expandafter} ) */
no_expand_cmd, /* special nonexpansion ( \.{\\noexpand} ) */
input_cmd, /* input a source file ( \.{\\input}, \.{\\endinput} or \.{\\scantokens} or \.{\\scantextokens} ) */
+ lua_expandable_call_cmd,
+ lua_local_call_cmd,
if_test_cmd, /* conditional text ( \.{\\if}, \.{\\ifcase}, etc.~) */
fi_or_else_cmd, /* delimiters for conditionals ( \.{\\else}, etc.~) */
cs_name_cmd, /* make a control sequence from tokens ( \.{\\csname} ) */
@@ -236,9 +245,12 @@ typedef enum {
typedef enum {
number_code = 0, /* command code for \.{\\number} */
- lua_function_code, /* command code for \.{\\luafunction} */
lua_code, /* command code for \.{\\directlua} */
+ lua_function_code, /* command code for \.{\\luafunction} */
+ lua_bytecode_code, /* command code for \.{\\luabytecode} */
expanded_code, /* command code for \.{\\expanded} */
+ immediate_assignment_code, /* command code for \.{\\immediateassignment} */
+ immediate_assigned_code, /* command code for \.{\\assigned} */
math_style_code, /* command code for \.{\\mathstyle} */
string_code, /* command code for \.{\\string} */
cs_string_code, /* command code for \.{\\csstring} */
@@ -324,6 +336,7 @@ typedef enum {
set_random_seed_code,
save_pos_code,
late_lua_code,
+ late_lua_call_code,
expand_font_code,
} normal_codes;
diff --git a/Build/source/texk/web2c/luatexdir/tex/conditional.h b/Build/source/texk/web2c/luatexdir/tex/conditional.h
index b6abe7578d3..483496eece2 100644
--- a/Build/source/texk/web2c/luatexdir/tex/conditional.h
+++ b/Build/source/texk/web2c/luatexdir/tex/conditional.h
@@ -24,30 +24,31 @@
# define unless_code 32 /* amount added for `\.{\\unless}' prefix */
typedef enum {
- if_char_code = 0, /* \.{\\if} */
- if_cat_code = 1, /* \.{\\ifcat} */
- if_int_code = 2, /* \.{\\ifnum} */
- if_dim_code = 3, /* \.{\\ifdim} */
- if_odd_code = 4, /* \.{\\ifodd} */
- if_vmode_code = 5, /* \.{\\ifvmode} */
- if_hmode_code = 6, /* \.{\\ifhmode} */
- if_mmode_code = 7, /* \.{\\ifmmode} */
- if_inner_code = 8, /* \.{\\ifinner} */
- if_void_code = 9, /* \.{\\ifvoid} */
- if_hbox_code = 10, /* \.{\\ifhbox} */
- if_vbox_code = 11, /* \.{\\ifvbox} */
- ifx_code = 12, /* \.{\\ifx} */
- if_eof_code = 13, /* \.{\\ifeof} */
- if_true_code = 14, /* \.{\\iftrue} */
- if_false_code = 15, /* \.{\\iffalse} */
- if_case_code = 16, /* \.{\\ifcase} */
- if_def_code = 17, /* \.{\\ifdefined} */
- if_cs_code = 18, /* \.{\\ifcsname} */
- if_font_char_code = 19, /* \.{\\iffontchar} */
- if_in_csname_code = 20, /* \.{\\ifincsname} */
- if_primitive_code = 21, /* \.{\\ifprimitive} */
- if_abs_num_code = 22, /* \.{\\ifabsnum} */
- if_abs_dim_code = 23, /* \.{\\ifabsdim} */
+ if_char_code = 0, /* \.{\\if} */
+ if_cat_code = 1, /* \.{\\ifcat} */
+ if_int_code = 2, /* \.{\\ifnum} */
+ if_dim_code = 3, /* \.{\\ifdim} */
+ if_odd_code = 4, /* \.{\\ifodd} */
+ if_vmode_code = 5, /* \.{\\ifvmode} */
+ if_hmode_code = 6, /* \.{\\ifhmode} */
+ if_mmode_code = 7, /* \.{\\ifmmode} */
+ if_inner_code = 8, /* \.{\\ifinner} */
+ if_void_code = 9, /* \.{\\ifvoid} */
+ if_hbox_code = 10, /* \.{\\ifhbox} */
+ if_vbox_code = 11, /* \.{\\ifvbox} */
+ if_x_code = 12, /* \.{\\ifx} */
+ if_eof_code = 13, /* \.{\\ifeof} */
+ if_true_code = 14, /* \.{\\iftrue} */
+ if_false_code = 15, /* \.{\\iffalse} */
+ if_case_code = 16, /* \.{\\ifcase} */
+ if_def_code = 17, /* \.{\\ifdefined} */
+ if_cs_code = 18, /* \.{\\ifcsname} */
+ if_font_char_code = 19, /* \.{\\iffontchar} */
+ if_in_csname_code = 20, /* \.{\\ifincsname} */
+ if_primitive_code = 21, /* \.{\\ifprimitive} */
+ if_abs_num_code = 22, /* \.{\\ifabsnum} */
+ if_abs_dim_code = 23, /* \.{\\ifabsdim} */
+ if_condition_code = 24, /* \.{\\ifcondition} */
} if_type_codes;
# define if_limit_subtype(A) subtype((A)+1)
diff --git a/Build/source/texk/web2c/luatexdir/tex/directions.h b/Build/source/texk/web2c/luatexdir/tex/directions.h
index 7ab524a1e79..92d6cc18f12 100644
--- a/Build/source/texk/web2c/luatexdir/tex/directions.h
+++ b/Build/source/texk/web2c/luatexdir/tex/directions.h
@@ -22,43 +22,19 @@
# define DIRECTIONS_H
/*
- # define dir_TLT 0
- # define dir_TRT 4
- # define dir_LTL 9
- # define dir_RTT 24
-
- extern const char *dir_strings[128];
+#define dir_swap 4
*/
-extern const char *dir_strings[8];
-
-extern int dir_swap;
-
-/*
-# define RETURN_DIR_VALUES(a) \
- if (s==luaS_##a##_ptr) { \
- return (dir_##a); \
- } else if (!absolute_only) { \
- if (s==luaS_p##a##_ptr) \
- return (dir_##a); \
- else if (s==luaS_m##a##_ptr) \
- return ((dir_##a)-4); \
- }
-*/
+#define dir_min_value 0
+#define dir_max_value 3
-# define RETURN_DIR_VALUES(a) \
- if (s==lua_key(a)) { \
- return (dir_##a); \
- } else if (!absolute_only) { \
- if (s==lua_key_plus(a)) \
- return (dir_##a); \
- else if (s==lua_key_minus(a)) \
- return ((dir_##a)-4); \
- }
+#define check_dir_value(d) \
+ if ((d < dir_min_value) || (d > dir_max_value)) \
+ d = dir_min_value;
-# define is_mirrored(a) 0
+#define is_mirrored(a) 0
-# define is_rotated(a) (a == dir_RTT)
+#define is_rotated(a) (a == dir_RTT)
/*
@@ -90,10 +66,12 @@ extern int dir_swap;
(a == dir_RTT && b == dir_TRT) \
)
+ # define dir_TLT_or_TRT(a) (a == dir_TLT || a == dir_TRT)
+ # define dir_LTL_or_RTT(a) (a == dir_LTL || a == dir_RTT)
+
*/
-/* # define dir_TLT_or_TRT(a) (a == dir_TLT || a == dir_TRT) */
-/* # define dir_LTL_or_RTT(a) (a == dir_LTL || a == dir_RTT) */
+/* TLT TRT LTL RTT */
# define dir_TLT_or_TRT(a) (a < 2)
# define dir_LTL_or_RTT(a) (a > 1)
@@ -174,7 +152,8 @@ extern void initialize_directions(void);
extern halfword new_dir(int s);
extern const char *string_dir(int d);
-extern void print_dir(int d);
+extern void print_dir_par(int d);
+extern void print_dir_text(halfword d);
extern void scan_direction(void);
diff --git a/Build/source/texk/web2c/luatexdir/tex/equivalents.h b/Build/source/texk/web2c/luatexdir/tex/equivalents.h
index f478b4a41b2..3ff9ac16dbe 100644
--- a/Build/source/texk/web2c/luatexdir/tex/equivalents.h
+++ b/Build/source/texk/web2c/luatexdir/tex/equivalents.h
@@ -38,10 +38,10 @@ distinction.
# define biggest_reg 65535 /* the largest allowed register number; must be |< max_quarterword| */
# define number_regs 65536 /* |biggest_reg+1| */
# define number_attrs 65536 /* total numbeer of attributes */
-# define biggest_char 1114111 /* the largest allowed character number; must be |< max_halfword| */
-# define too_big_char 1114112 /* |biggest_char+1| */
-# define special_char 1114113 /* |biggest_char+2| */
-# define number_chars 1114112 /* |biggest_char+1| */
+# define biggest_char 1114111 /* 0x10FFFF, the largest allowed character number; must be |< max_halfword| */
+# define too_big_char (biggest_char+1) /* 1114112, |biggest_char+1| */
+# define special_char (biggest_char+2) /* 1114113, |biggest_char+2| */
+# define number_chars (biggest_char+3) /* 1114112, |biggest_char+1| */
# define number_fonts (5535-font_base+1)
# define biggest_lang 32767
# define too_big_lang 32768
@@ -292,15 +292,22 @@ the |number_regs| \.{\\dimen} registers.
# define automatic_hyphen_penalty_code 101
# define explicit_hyphen_penalty_code 102
# define automatic_hyphen_mode_code 103
-# define break_after_dir_mode_code 104
-
-# define pre_bin_op_penalty_code 105
-# define pre_rel_penalty_code 106
-# define math_penalties_mode_code 107
-# define math_delimiters_mode_code 108
-# define math_script_box_mode_code 109
-
-# define suppress_primitive_error_code 110
+# define compound_hyphen_mode_code 104
+# define break_after_dir_mode_code 105
+# define exception_penalty_code 106
+
+# define pre_bin_op_penalty_code 107
+# define pre_rel_penalty_code 108
+# define math_penalties_mode_code 109
+# define math_delimiters_mode_code 110
+# define math_script_box_mode_code 111
+# define math_script_char_mode_code 112
+# define math_rule_thickness_mode_code 113
+# define math_flatten_mode_code 114
+
+# define copy_lua_input_nodes_code 115
+# define suppress_primitive_error_code 116
+# define fixup_boxes_code 117
# define math_option_code (suppress_primitive_error_code+1)
@@ -441,7 +448,8 @@ We use the notation |saved(k)| to stand for an item that appears in location
# define saved_boxspec 14
# define saved_boxdir 15
# define saved_boxattr 16
-# define saved_boxpack 18
+# define saved_boxpack 17
+# define saved_attrlist 18
# define saved_eqtb 19
extern void print_save_stack(void);
@@ -453,10 +461,9 @@ extern void print_save_stack(void);
typedef enum {
c_mathoption_old_code = 0, /* this one is stable */
- c_mathoption_no_italic_compensation_code, /* just for tracing, can change */
- c_mathoption_no_char_italic_code, /* just for tracing, can change */
- c_mathoption_use_old_fraction_scaling_code, /* just for tracing, can change */
- c_mathoption_umathcode_meaning_code, /* this one is stable */
+ /*
+ c_mathoption_umathcode_meaning_code,
+ */
} math_option_codes ;
# define mathoption_int_par(A) eqtb[mathoption_int_base+(A)].cint
@@ -525,7 +532,7 @@ typedef enum {
cramped_script_script_style, /* |subtype| for \.{\\crampedscriptscriptstyle} */
} math_style_subtypes;
-typedef enum {
+typedef enum { /* this could move to directions.h */
dir_TLT = 0,
dir_TRT,
dir_LTL,
@@ -663,6 +670,9 @@ extern halfword last_cs_name;
#define math_penalties_mode_par int_par(math_penalties_mode_code)
#define math_delimiters_mode_par int_par(math_delimiters_mode_code)
#define math_script_box_mode_par int_par(math_script_box_mode_code)
+#define math_script_char_mode_par int_par(math_script_char_mode_code)
+#define math_rule_thickness_mode_par int_par(math_rule_thickness_mode_code)
+#define math_flatten_mode_par int_par(math_flatten_mode_code)
#define null_delimiter_space_par dimen_par(null_delimiter_space_code)
#define disable_lig_par int_par(disable_lig_code)
#define disable_kern_par int_par(disable_kern_code)
@@ -757,12 +767,13 @@ extern halfword last_cs_name;
#define suppress_ifcsname_error_par int_par(suppress_ifcsname_error_code)
#define suppress_primitive_error_par int_par(suppress_primitive_error_code)
#define error_context_lines_par int_par(error_context_lines_code)
+#define copy_lua_input_nodes_par int_par(copy_lua_input_nodes_code)
#define math_old_par mathoption_int_par(c_mathoption_old_code)
-#define math_no_italic_compensation_par mathoption_int_par(c_mathoption_no_italic_compensation_code)
-#define math_no_char_italic_par mathoption_int_par(c_mathoption_no_char_italic_code)
-#define math_use_old_fraction_scaling_par mathoption_int_par(c_mathoption_use_old_fraction_scaling_code)
+
+/*
#define math_umathcode_meaning_par mathoption_int_par(c_mathoption_umathcode_meaning_code)
+*/
#define math_pre_display_gap_factor_par int_par(math_pre_display_gap_factor_code)
@@ -790,11 +801,15 @@ extern halfword last_cs_name;
#define automatic_hyphen_penalty_par int_par(automatic_hyphen_penalty_code)
#define explicit_hyphen_penalty_par int_par(explicit_hyphen_penalty_code)
#define automatic_hyphen_mode_par int_par(automatic_hyphen_mode_code)
+#define compound_hyphen_mode_par int_par(compound_hyphen_mode_code)
#define break_after_dir_mode_par int_par(break_after_dir_mode_code)
+#define exception_penalty_par int_par(exception_penalty_code)
#define cur_lang_par int_par(cur_lang_code)
#define cur_font_par equiv(cur_font_loc)
+#define fixup_boxes_par int_par(fixup_boxes_code)
+
/* */
#define math_use_current_family_code 7
diff --git a/Build/source/texk/web2c/luatexdir/tex/extensions.h b/Build/source/texk/web2c/luatexdir/tex/extensions.h
index b6839534439..5e22ddf26c3 100644
--- a/Build/source/texk/web2c/luatexdir/tex/extensions.h
+++ b/Build/source/texk/web2c/luatexdir/tex/extensions.h
@@ -136,9 +136,12 @@ typedef enum {
use_box_resource_code,
save_image_resource_code,
use_image_resource_code,
+ end_local_code,
/* backend */
dvi_extension_code,
pdf_extension_code,
} extension_codes ;
+extern void wrapup_leader(halfword p);
+
#endif
diff --git a/Build/source/texk/web2c/luatexdir/tex/inputstack.h b/Build/source/texk/web2c/luatexdir/tex/inputstack.h
index 378fabe24b8..8c139a8332e 100644
--- a/Build/source/texk/web2c/luatexdir/tex/inputstack.h
+++ b/Build/source/texk/web2c/luatexdir/tex/inputstack.h
@@ -306,6 +306,7 @@ typedef enum {
mark_text = 14, /* |token_type| code for \.{\\topmark}, etc. */
every_eof_text = 15, /* |token_type| code for \.{\\everyeof} */
write_text = 16, /* |token_type| code for \.{\\write} */
+ local_text = 17, /* |token_type| code for special purposed */
} token_types;
extern pointer *param_stack;
diff --git a/Build/source/texk/web2c/luatexdir/tex/linebreak.h b/Build/source/texk/web2c/luatexdir/tex/linebreak.h
index 1f49278314b..d1e1768f704 100644
--- a/Build/source/texk/web2c/luatexdir/tex/linebreak.h
+++ b/Build/source/texk/web2c/luatexdir/tex/linebreak.h
@@ -20,9 +20,6 @@
#ifndef LINEBREAK_H
# define LINEBREAK_H
-# define left_side 0
-# define right_side 1
-
extern halfword just_box; /* the |hlist_node| for the last line of the new paragraph */
extern void line_break(boolean d, int line_break_context);
diff --git a/Build/source/texk/web2c/luatexdir/tex/mainbody.h b/Build/source/texk/web2c/luatexdir/tex/mainbody.h
index 4a5cb93a164..245535120c8 100644
--- a/Build/source/texk/web2c/luatexdir/tex/mainbody.h
+++ b/Build/source/texk/web2c/luatexdir/tex/mainbody.h
@@ -139,6 +139,9 @@ extern int filelineerrorstylep;
extern int haltonerrorp;
extern boolean quoted_filename;
+extern int total_pages;
+extern int dead_cycles;
+
/*
In order to make efficient use of storage space, \TeX\ bases its major data
structures on a |memory_word|, which contains either a (signed) integer,
diff --git a/Build/source/texk/web2c/luatexdir/tex/maincontrol.h b/Build/source/texk/web2c/luatexdir/tex/maincontrol.h
index 13e3c6ff3b0..04608c11e9b 100644
--- a/Build/source/texk/web2c/luatexdir/tex/maincontrol.h
+++ b/Build/source/texk/web2c/luatexdir/tex/maincontrol.h
@@ -151,6 +151,7 @@ extern void do_endv(void);
extern void cs_error(void);
extern void prefixed_command(void);
extern void fixup_directions(void);
+extern void fixup_directions_only(void);
/* Assignments from Lua need helpers. */
@@ -205,5 +206,12 @@ extern void show_whatever(void);
extern void initialize(void); /* this procedure gets things started properly */
+/*extern int local_level;*/
+
+extern void local_control(void);
+extern halfword local_scan_box(void);
+extern int current_local_level(void);
+extern void end_local_control(void);
+extern void local_control_message(const char *s);
#endif
diff --git a/Build/source/texk/web2c/luatexdir/tex/mlist.h b/Build/source/texk/web2c/luatexdir/tex/mlist.h
index bd156212220..1a15afe3c04 100644
--- a/Build/source/texk/web2c/luatexdir/tex/mlist.h
+++ b/Build/source/texk/web2c/luatexdir/tex/mlist.h
@@ -31,5 +31,6 @@ extern void fixup_math_parameters(int fam_id, int size_id, int f, int lvl);
extern scaled get_math_quad_style(int a);
extern scaled get_math_quad_size(int a);
+extern pointer make_extensible(internal_font_number fnt, halfword chr, scaled v, scaled min_overlap, int horizontal, halfword att);
#endif
diff --git a/Build/source/texk/web2c/luatexdir/tex/packaging.h b/Build/source/texk/web2c/luatexdir/tex/packaging.h
index 6a0802e4676..9353afeaf20 100644
--- a/Build/source/texk/web2c/luatexdir/tex/packaging.h
+++ b/Build/source/texk/web2c/luatexdir/tex/packaging.h
@@ -143,7 +143,8 @@ latter two are used denote \.{\\vbox} and \.{\\hbox}, respectively.
# define global_box_flag (box_flag+number_regs) /* context code for `\.{\\global\\setbox0}' */
# define max_global_box_flag (global_box_flag+number_regs)
# define ship_out_flag (max_global_box_flag+1) /* context code for `\.{\\shipout}' */
-# define leader_flag ship_out_flag+1 /* context code for `\.{\\leaders}' */
+# define lua_scan_flag (max_global_box_flag+2) /* context code for |scan_list| */
+# define leader_flag (max_global_box_flag+3) /* context code for `\.{\\leaders}' */
extern void begin_box(int box_context);
diff --git a/Build/source/texk/web2c/luatexdir/tex/printing.h b/Build/source/texk/web2c/luatexdir/tex/printing.h
index 1619c6072de..79ca524ef6f 100644
--- a/Build/source/texk/web2c/luatexdir/tex/printing.h
+++ b/Build/source/texk/web2c/luatexdir/tex/printing.h
@@ -77,7 +77,7 @@ extern void print_esc(str_number s);
extern void print_the_digs(eight_bits k);
extern void print_int(longinteger n);
extern void print_two(int n);
-extern void print_hex(int n);
+extern void print_qhex(int n);
extern void print_roman_int(int n);
extern void print_current_string(void);
diff --git a/Build/source/texk/web2c/luatexdir/tex/scanning.h b/Build/source/texk/web2c/luatexdir/tex/scanning.h
index f5f620c6746..e4189a0f67a 100644
--- a/Build/source/texk/web2c/luatexdir/tex/scanning.h
+++ b/Build/source/texk/web2c/luatexdir/tex/scanning.h
@@ -63,9 +63,13 @@ extern void scan_fifty_one_bit_int(void);
# define hex_token (other_token+'"') /* double quote, indicates a hex constant */
# define alpha_token (other_token+'`') /* reverse apostrophe, precedes alpha constants */
# define point_token (other_token+'.') /* decimal point */
+# define comma_token (other_token+',') /* decimal comma */
+# define plus_token (other_token + '+')
+# define minus_token (other_token + '-')
# define continental_point_token (other_token+',') /* decimal point, Eurostyle */
# define infinity 017777777777 /* the largest positive value that \TeX\ knows */
# define zero_token (other_token+'0') /* zero, the smallest digit */
+# define nine_token (other_token+'9') /* zero, the smallest digit */
# define A_token (letter_token+'A') /* the smallest special hex digit */
# define other_A_token (other_token+'A') /* special hex digit of type |other_char| */
extern int radix;
@@ -78,7 +82,6 @@ extern int cur_order;
extern void scan_dimen(boolean mu, boolean inf, boolean shortcut);
extern void scan_glue(int level);
-extern void scan_scaled(void);
extern halfword the_toks(void);
extern str_number the_scanned_result(void);
diff --git a/Build/source/texk/web2c/luatexdir/tex/stringpool.h b/Build/source/texk/web2c/luatexdir/tex/stringpool.h
index a969547e763..2ba156046fd 100644
--- a/Build/source/texk/web2c/luatexdir/tex/stringpool.h
+++ b/Build/source/texk/web2c/luatexdir/tex/stringpool.h
@@ -1,5 +1,5 @@
/* stringpool.h
-
+
Copyright 2009 Taco Hoekwater <taco@luatex.org>
This file is part of LuaTeX.
@@ -43,9 +43,10 @@ extern str_number init_str_ptr;
# define get_nullstr() STRING_OFFSET
-# define biggest_char 1114111
-# define number_chars 1114112
-# define special_char 1114113 /* |biggest_char+2| */
+# define biggest_char 1114111 /* 0x10FFFF, the largest allowed character number; must be |< max_halfword| */
+# define too_big_char (biggest_char+1) /* 1114112, |biggest_char+1| */
+# define special_char (biggest_char+2) /* 1114113, |biggest_char+2| */
+# define number_chars (biggest_char+3) /* 1114112, |biggest_char+1| */
/*
Several of the elementary string operations are performed using
diff --git a/Build/source/texk/web2c/luatexdir/tex/texmath.h b/Build/source/texk/web2c/luatexdir/tex/texmath.h
index 24bb34dc977..23fc5a0e42e 100644
--- a/Build/source/texk/web2c/luatexdir/tex/texmath.h
+++ b/Build/source/texk/web2c/luatexdir/tex/texmath.h
@@ -38,22 +38,6 @@ extern halfword new_sub_box(halfword);
# define default_code 010000000000 /* denotes |default_rule_thickness| */
-typedef enum {
- ord_noad_type = 0,
- op_noad_type_normal,
- op_noad_type_limits,
- op_noad_type_no_limits,
- bin_noad_type,
- rel_noad_type,
- open_noad_type,
- close_noad_type,
- punct_noad_type,
- inner_noad_type,
- under_noad_type,
- over_noad_type,
- vcenter_noad_type,
-} noad_types;
-
extern void initialize_math(void);
extern void initialize_math_spacing(void);
extern halfword math_vcenter_group(halfword);
diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
index eb9b2da4a48..e77e2916e71 100644
--- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h
+++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
@@ -97,8 +97,30 @@ extern halfword do_set_attribute(halfword p, int i, int val);
# define list_offset 6
typedef enum {
+ user_skip_glue,
+ line_skip_glue,
+ baseline_skip_glue,
+ par_skip_glue,
+ above_display_skip_glue,
+ below_display_skip_glue,
+ above_display_short_skip_glue,
+ below_display_short_skip_glue,
+ left_skip_glue,
+ right_skip_glue,
+ top_skip_glue,
+ split_top_skip_glue,
+ tab_skip_glue,
+ space_skip_glue,
+ xspace_skip_glue,
+ par_fill_skip_glue,
+ math_skip_glue,
+ thin_mu_skip_glue,
+ med_mu_skip_glue,
+ thick_mu_skip_glue,
+ /* math */
cond_math_glue = 98, /* special |subtype| to suppress glue in the next node */
mu_glue, /* |subtype| for math glue */
+ /* leaders */
a_leaders, /* |subtype| for aligned leaders */
c_leaders, /* |subtype| for centered leaders */
x_leaders, /* |subtype| for expanded leaders */
@@ -199,7 +221,7 @@ typedef enum {
# define disc_penalty(a) vlink((a)+2)
# define pre_break(a) vinfo((a)+3)
# define post_break(a) vlink((a)+3)
-# define no_break(a) vlink((a)+4)
+# define no_break(a) vlink((a)+4) /* we have vinfo((a)+4) for later usage */
# define vlink_pre_break(a) vlink(pre_break_head(a))
# define vlink_post_break(a) vlink(post_break_head(a))
@@ -264,14 +286,17 @@ typedef enum {
math_under_rule,
math_fraction_rule,
math_radical_rule,
+ outline_rule,
} rule_subtypes;
-# define rule_node_size 8
+# define rule_node_size 9
# define rule_dir(a) vlink((a)+5)
# define rule_index(a) vinfo((a)+6)
# define rule_transform(a) vlink((a)+6)
-# define synctex_tag_rule(a) vinfo((a)+7)
-# define synctex_line_rule(a) vlink((a)+7)
+# define rule_left(a) vinfo((a)+7)
+# define rule_right(a) vlink((a)+7)
+# define synctex_tag_rule(a) vinfo((a)+8)
+# define synctex_line_rule(a) vlink((a)+8)
# define rule_math_size rule_index
# define rule_math_font rule_transform
@@ -292,7 +317,7 @@ typedef enum {
# define x_displace(a) vinfo((a)+4)
# define y_displace(a) vlink((a)+4)
# define ex_glyph(a) vinfo((a)+5) /* expansion factor (hz) */
-# define x_advance(a) vlink((a)+5) /* obsolete, can become user field */
+# define glyph_node_data(a) vlink((a)+5)
# define synctex_tag_glyph(a) vinfo((a)+6)
# define synctex_line_glyph(a) vlink((a)+6)
@@ -318,11 +343,15 @@ typedef enum {
/*@# {|subtype| of marginal kerns}*/
-# define left_side 0
-# define right_side 1
+typedef enum {
+ left_side = 0,
+ right_side
+} margin_kern_subtypes ;
-# define before 0 /* |subtype| for math node that introduces a formula */
-# define after 1 /* |subtype| for math node that winds up a formula */
+typedef enum {
+ before = 0,
+ after
+} math_subtypes ;
# define math_node_size 7
/* define width(a) vinfo((a)+2) */
@@ -487,6 +516,24 @@ typedef enum {
# define noadextra3(a) vlink((a)+7) /* see (!) below */
# define noadextra4(a) vinfo((a)+7) /* used to store samesize */
+# define noad_fam(a) vlink((a)+6) /* noadextra1 */
+
+typedef enum {
+ ord_noad_type = 0,
+ op_noad_type_normal,
+ op_noad_type_limits,
+ op_noad_type_no_limits,
+ bin_noad_type,
+ rel_noad_type,
+ open_noad_type,
+ close_noad_type,
+ punct_noad_type,
+ inner_noad_type,
+ under_noad_type,
+ over_noad_type,
+ vcenter_noad_type,
+} noad_types;
+
/* accent noads */
# define accent_noad_size 8
@@ -495,6 +542,13 @@ typedef enum {
# define overlay_accent_chr(a) vinfo((a)+7) /* the |overlay_accent_chr| field of an accent noad */
# define accentfraction(a) vlink((a)+7)
+typedef enum {
+ bothflexible_accent,
+ fixedtop_accent,
+ fixedbottom_accent,
+ fixedboth_accent,
+} math_accent_subtypes ;
+
/* left and right noads */
# define fence_noad_size 8 /* needs to match noad size */
@@ -540,22 +594,36 @@ typedef enum {
noad_delimiter_mode_noshift = 0x01,
noad_delimiter_mode_italics = 0x02,
noad_delimiter_mode_ordinal = 0x04,
+ noad_delimiter_mode_samenos = 0x08,
+ noad_delimiter_mode_charnos = 0x10,
} delimiter_modes ;
# define delimitermodenoshift ((math_delimiters_mode_par & noad_delimiter_mode_noshift) == noad_delimiter_mode_noshift)
# define delimitermodeitalics ((math_delimiters_mode_par & noad_delimiter_mode_italics) == noad_delimiter_mode_italics)
# define delimitermodeordinal ((math_delimiters_mode_par & noad_delimiter_mode_ordinal) == noad_delimiter_mode_ordinal)
+# define delimitermodesamenos ((math_delimiters_mode_par & noad_delimiter_mode_samenos) == noad_delimiter_mode_samenos)
+# define delimitermodecharnos ((math_delimiters_mode_par & noad_delimiter_mode_charnos) == noad_delimiter_mode_charnos)
/* subtype of fence noads */
+/*
# define left_noad_side 1
# define middle_noad_side 2
# define right_noad_side 3
# define no_noad_side 4
+*/
+
+typedef enum {
+ unset_noad_side = 0,
+ left_noad_side = 1,
+ middle_noad_side = 2,
+ right_noad_side = 3,
+ no_noad_side = 4,
+} fence_subtypes ;
/* fraction noads */
-# define fraction_noad_size 7
+# define fraction_noad_size 8
# define thickness(a) vlink((a)+2) /* |thickness| field in a fraction noad */
# define numerator(a) vlink((a)+3) /* |numerator| field in a fraction noad */
# define denominator(a) vinfo((a)+3) /* |denominator| field in a fraction noad */
@@ -563,6 +631,7 @@ typedef enum {
# define right_delimiter(a) vinfo((a)+5) /* second delimiter field of a fraction noad */
# define middle_delimiter(a) vlink((a)+6)
# define fractionoptions(a) vinfo((a)+6)
+# define fraction_fam(a) vlink((a)+7)
# define fractionoptionset(a) ((fractionoptions(a) & noad_option_set ) == noad_option_set )
# define fractionexact(a) ((fractionoptions(a) & noad_option_exact ) == noad_option_exact )
@@ -582,6 +651,16 @@ typedef enum {
# define radicalmiddle(a) ((radicaloptions(a) & noad_option_middle) == noad_option_middle)
# define radicalright(a) ((radicaloptions(a) & noad_option_right ) == noad_option_right)
+typedef enum {
+ radical_noad_type,
+ uradical_noad_type,
+ uroot_noad_type,
+ uunderdelimiter_noad_type,
+ uoverdelimiter_noad_type,
+ udelimiterunder_noad_type,
+ udelimiterover_noad_type,
+} radical_subtypes;
+
/* accessors for the |nucleus|-style node fields */
# define math_kernel_node_size 3
@@ -659,6 +738,15 @@ typedef enum {
# define GLYPH_LEFT (1 << 3)
# define GLYPH_RIGHT (1 << 4)
+typedef enum {
+ glyph_unset = 0,
+ glyph_character = GLYPH_CHARACTER,
+ glyph_ligature = GLYPH_LIGATURE,
+ glyph_ghost = GLYPH_GHOST,
+ glyph_left = GLYPH_LEFT,
+ glyph_right = GLYPH_RIGHT,
+} glyph_subtypes;
+
# define is_character(p) ((subtype(p)) & GLYPH_CHARACTER)
# define is_ligature(p) ((subtype(p)) & GLYPH_LIGATURE )
# define is_ghost(p) ((subtype(p)) & GLYPH_GHOST )
@@ -698,6 +786,11 @@ typedef enum {
# define special_node_size 3
+typedef enum {
+ normal_dir = 0,
+ cancel_dir,
+} dir_subtypes ;
+
# define dir_node_size 5
# define dir_dir(a) vinfo((a)+2)
# define dir_level(a) vlink((a)+2)
@@ -737,6 +830,7 @@ typedef enum {
/* type of literal data */
# define lua_refid_literal 1 /* not a |normal| string */
+# define lua_refid_call 2 /* not a |normal| string */
/* begin of pdf backend nodes */
@@ -899,40 +993,60 @@ extern void print_short_node_contents(halfword n);
extern void show_node_list(int i);
extern pointer actual_box_width(pointer r, scaled base_width);
-/* from luanode.c */
+typedef struct _subtype_info {
+ int id;
+ const char *name;
+ int lua;
+} subtype_info;
+
+typedef struct _field_info {
+ const char *name;
+ int lua;
+} field_info;
typedef struct _node_info {
int id;
int size;
- const char **fields;
+ subtype_info *subtypes;
+ field_info *fields;
const char *name;
int etex;
+ int lua;
} node_info;
extern node_info node_data[];
extern node_info whatsit_node_data[];
-extern const char *node_subtypes_glue[];
-extern const char *node_subtypes_mathglue[];
-extern const char *node_subtypes_leader[];
-extern const char *node_subtypes_fill[];
-extern const char *node_subtypes_boundary[];
-extern const char *node_subtypes_penalty[];
-extern const char *node_subtypes_kern[];
-extern const char *node_subtypes_rule[];
-extern const char *node_subtypes_glyph[];
-extern const char *node_subtypes_disc[];
-extern const char *node_subtypes_marginkern[];
-extern const char *node_subtypes_list[];
-extern const char *node_subtypes_adjust[];
-extern const char *node_subtypes_math[];
-extern const char *node_subtypes_noad[];
-extern const char *node_subtypes_radical[];
-extern const char *node_subtypes_accent[];
-extern const char *node_subtypes_fence[];
-
-extern const char *node_subtypes_pdf_destination[];
-extern const char *node_subtypes_pdf_literal[];
+extern subtype_info node_subtypes_dir[];
+extern subtype_info node_subtypes_glue[];
+extern subtype_info node_subtypes_mathglue[];
+extern subtype_info node_subtypes_leader[];
+extern subtype_info node_subtypes_boundary[];
+extern subtype_info node_subtypes_penalty[];
+extern subtype_info node_subtypes_kern[];
+extern subtype_info node_subtypes_rule[];
+extern subtype_info node_subtypes_glyph[];
+extern subtype_info node_subtypes_disc[];
+extern subtype_info node_subtypes_marginkern[];
+extern subtype_info node_subtypes_list[];
+extern subtype_info node_subtypes_adjust[];
+extern subtype_info node_subtypes_math[];
+extern subtype_info node_subtypes_noad[];
+extern subtype_info node_subtypes_radical[];
+extern subtype_info node_subtypes_accent[];
+extern subtype_info node_subtypes_fence[];
+
+extern subtype_info node_values_pdf_destination[];
+extern subtype_info node_values_pdf_literal[];
+extern subtype_info node_values_pdf_literal[];
+extern subtype_info node_values_pdf_action[];
+extern subtype_info node_values_pdf_window[];
+
+extern subtype_info node_values_fill[];
+extern subtype_info node_values_dir[];
+extern subtype_info node_values_color_stack[];
+
+extern subtype_info other_values_page_states[];
extern halfword new_node(int i, int j);
extern void flush_node_list(halfword);
@@ -958,7 +1072,7 @@ extern void show_node_wrapup_dvi(halfword);
extern void show_node_wrapup_pdf(halfword);
typedef enum {
- normal_g = 0,
+ normal_g = 0, /* normal */
sfi,
fil,
fill,
@@ -1037,5 +1151,8 @@ extern void synctex_set_no_files(int flag);
extern int synctex_get_no_files(void);
extern int synctex_get_line(void);
+extern void l_set_node_data(void) ;
+extern void l_set_whatsit_data(void) ;
+
#endif
diff --git a/Build/source/texk/web2c/luatexdir/tex/textoken.h b/Build/source/texk/web2c/luatexdir/tex/textoken.h
index 4f46a48c819..4b33b099ab3 100644
--- a/Build/source/texk/web2c/luatexdir/tex/textoken.h
+++ b/Build/source/texk/web2c/luatexdir/tex/textoken.h
@@ -25,19 +25,19 @@
# define null 0
# define cs_token_flag 0x1FFFFFFF
-# define left_brace_token 0x200000 /* $2^{21}\cdot|left_brace|$ */
-# define right_brace_token 0x400000 /* $2^{21}\cdot|right_brace|$ */
-# define left_brace_limit 0x400000 /* $2^{21}\cdot(|left_brace|+1)$ */
-# define right_brace_limit 0x600000 /* $2^{21}\cdot(|right_brace|+1)$ */
-# define math_shift_token 0x600000 /* $2^{21}\cdot|math_shift|$ */
-# define tab_token 0x800000 /* $2^{21}\cdot|tab_mark|$ */
-# define out_param_token 0xA00000 /* $2^{21}\cdot|out_param|$ */
-# define space_token 0x1400020 /* $2^{21}\cdot|spacer|+|" "|$ */
-# define letter_token 0x1600000 /* $2^{21}\cdot|letter|$ */
-# define other_token 0x1800000 /* $2^{21}\cdot|other_char|$ */
-# define match_token 0x1A00000 /* $2^{21}\cdot|match|$ */
-# define end_match_token 0x1C00000 /* $2^{21}\cdot|end_match|$ */
-# define protected_token 0x1C00001 /* $2^{21}\cdot|end_match|+1$ */
+# define left_brace_token 0x0200000 /* $2^{21}\cdot|left_brace|$ */
+# define right_brace_token 0x0400000 /* $2^{21}\cdot|right_brace|$ */
+# define left_brace_limit 0x0400000 /* $2^{21}\cdot(|left_brace|+1)$ */
+# define right_brace_limit 0x0600000 /* $2^{21}\cdot(|right_brace|+1)$ */
+# define math_shift_token 0x0600000 /* $2^{21}\cdot|math_shift|$ */
+# define tab_token 0x0800000 /* $2^{21}\cdot|tab_mark|$ */
+# define out_param_token 0x0A00000 /* $2^{21}\cdot|out_param|$ */
+# define space_token 0x1400020 /* $2^{21}\cdot|spacer|+|" "|$ */
+# define letter_token 0x1600000 /* $2^{21}\cdot|letter|$ */
+# define other_token 0x1800000 /* $2^{21}\cdot|other_char|$ */
+# define match_token 0x1A00000 /* $2^{21}\cdot|match|$ */
+# define end_match_token 0x1C00000 /* $2^{21}\cdot|end_match|$ */
+# define protected_token 0x1C00001 /* $2^{21}\cdot|end_match|+1$ */
# include "tex/stringpool.h"
@@ -126,6 +126,7 @@ extern void make_token_table(lua_State * L, int cmd, int chr, int cs);
extern void get_next(void);
extern void check_outer_validity(void);
extern boolean scan_keyword(const char *);
+extern boolean scan_keyword_case_sensitive(const char *);
extern halfword active_to_cs(int, int);
extern void get_token_lua(void);
halfword string_to_toks(const char *);
@@ -183,4 +184,6 @@ extern void free_lstring(lstring * ls);
# define token_chr(A) ((A) & (STRING_OFFSET - 1))
# define token_val(A,B) (((A)<<STRING_OFFSET_BITS)+(B))
+extern void l_set_token_data(void) ;
+
#endif