summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
diff options
context:
space:
mode:
authorMartin Ruckert <martin.ruckert@hm.edu>2022-01-19 13:28:43 +0000
committerMartin Ruckert <martin.ruckert@hm.edu>2022-01-19 13:28:43 +0000
commit7f3c341a9f19795e423e8821c34bbe37fea20aed (patch)
tree5a1ea5d468e06ccb9ad37a8ea743e2677b1ff3d9 /Build/source/texk/web2c/hitexdir/hintview/src/htex.h
parent257dabf9b9d3e3ac387e7d16eb06b37c8096638b (diff)
adding files to build the Linux HINT viewer (independent of the TL build)
git-svn-id: svn://tug.org/texlive/trunk@61658 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/hitexdir/hintview/src/htex.h')
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/htex.h1958
1 files changed, 1958 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/htex.h b/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
new file mode 100644
index 00000000000..1107e48533b
--- /dev/null
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
@@ -0,0 +1,1958 @@
+/*1410:*/
+#line 2624 "htex.ch"
+
+#define banner "This is TeX, Version 3.141592653 (HINT)" \
+
+#define odd(X) ((X) &1)
+#define chr(X) ((unsigned char) (X) )
+#define ord(X) ((unsigned int) (X) )
+#define abs(X) ((X) > -(X) ?(X) :-(X) )
+#define round(X) ((int) ((X) >=0.0?floor((X) +0.5) :ceil((X) -0.5) ) ) \
+
+#define mem_bot 0 \
+
+#define mem_top mem_max \
+ \
+
+#define font_base 0 \
+
+#define hash_size 15000 \
+
+#define hash_prime 12721
+#define hyph_size 607 \
+ \
+
+#define incr(A) A= A+1
+#define decr(A) A= A-1
+#define negate(A) A= -A
+#define loop while(true)
+#define do_nothing
+#define empty 0 \
+
+#define text_char unsigned char
+#define first_text_char 0
+#define last_text_char 255 \
+
+#define null_code 00
+#define carriage_return 015
+#define invalid_code 0177 \
+
+#define reset_OK(A) erstat(A) ==0
+#define rewrite_OK(A) erstat(A) ==0 \
+
+#define t_open_in term_in.f= stdin
+#define t_open_out term_out.f= stdout \
+
+#define update_terminal fflush(term_out.f)
+#define clear_terminal fflush(term_in.f)
+#define wake_up_terminal do_nothing \
+
+#define loc cur_input.loc_field \
+
+#define si(A) A
+#define so(A) A \
+
+#define length(A) (str_start[A+1]-str_start[A]) \
+ \
+
+#define cur_length (pool_ptr-str_start[str_ptr]) \
+
+#define append_char(A) \
+{str_pool[pool_ptr]= si(A) ;incr(pool_ptr) ; \
+}
+#define flush_char decr(pool_ptr)
+#define str_room(A) \
+{if(pool_ptr+A> pool_size) \
+overflow("pool size",pool_size-init_pool_ptr) ; \
+ \
+} \
+
+#define flush_string {decr(str_ptr) ;pool_ptr= str_start[str_ptr]; \
+} \
+
+#define app_lc_hex(A) l= A; \
+if(l<10) append_char(l+'0') else append_char(l-10+'a') \
+
+#define no_print 16
+#define term_only 17
+#define log_only 18
+#define term_and_log 19
+#define pseudo 20
+#define new_string 21
+#define max_selector 21 \
+
+#define print_lc_hex(A) \
+if((A) <10) print_char((A) +'0') ;else print_char((A) -10+'a')
+#define print_ASCII(k) \
+if((k<' ') ||(k> '~') ) \
+{print("^^") ; \
+if(k<0100) print_char(k+0100) ; \
+else if(k<0200) print_char(k-0100) ; \
+else{print_lc_hex(k/16) ;print_lc_hex(k%16) ;} \
+} \
+else print_char(k) \
+
+#define prompt_input(A) {wake_up_terminal;print(A) ;term_input() ; \
+} \
+
+#define batch_mode 0
+#define nonstop_mode 1
+#define scroll_mode 2
+#define error_stop_mode 3 \
+
+#define spotless 0
+#define warning_issued 1
+#define error_message_issued 2
+#define fatal_error_stop 3 \
+
+#define hlp1(A) help_line[0]= A;}
+#define hlp2(A,B) help_line[1]= A;help_line[0]= B;}
+#define hlp3(A,B,C) help_line[2]= A;help_line[1]= B;help_line[0]= C;}
+#define hlp4(A,B,C,D) help_line[3]= A;help_line[2]= B;help_line[1]= C;help_line[0]= D;}
+#define hlp5(A,B,C,D,E) help_line[4]= A;help_line[3]= B;help_line[2]= C;help_line[1]= D;help_line[0]= E;}
+#define hlp6(A,B,C,D,E,F) help_line[5]= A;help_line[4]= B;help_line[3]= C;help_line[2]= D;help_line[1]= E;help_line[0]= F;}
+#define help0 help_ptr= 0
+#define help1(A) {help_ptr= 1;hlp1(A)
+#define help2(A,B) {help_ptr= 2;hlp2(A,B)
+#define help3(A,B,C) {help_ptr= 3;hlp3(A,B,C)
+#define help4(A,B,C,D) {help_ptr= 4;hlp4(A,B,C,D)
+#define help5(A,B,C,D,E) {help_ptr= 5;hlp5(A,B,C,D,E)
+#define help6(A,B,C,D,E,F) {help_ptr= 6;hlp6(A,B,C,D,E,F) \
+
+#define succumb {if(interaction==error_stop_mode) \
+interaction= scroll_mode; \
+if(log_opened) error() ; \
+if(interaction> batch_mode) debug_help() ; \
+history= fatal_error_stop;jump_out() ; \
+} \
+
+#define check_interrupt {if(interrupt!=0) pause_for_instructions() ; \
+} \
+
+#define unity 0200000
+#define two 0400000 \
+
+#define nx_plus_y(A,B,C) mult_and_add(A,B,C,07777777777)
+#define mult_integers(A,B) mult_and_add(A,B,0,017777777777) \
+
+#define inf_bad 10000 \
+
+#define set_glue_ratio_zero(A) A= 0.0
+#define set_glue_ratio_one(A) A= 1.0
+#define float(A) ((double) (A) )
+#define unfloat(A) ((glue_ratio) (A) )
+#define float_constant(A) ((double) (A) ) \
+
+#define min_quarterword 0
+#define max_quarterword 255
+#define min_halfword 0
+#define max_halfword 65535 \
+
+#define qi(A) A+min_quarterword \
+
+#define qo(A) A-min_quarterword \
+
+#define hi(A) A+min_halfword \
+
+#define ho(A) A-min_halfword \
+ \
+
+#define sc i \
+
+#define pointer halfword
+#define null min_halfword \
+
+#define link(A) mem[A].hh.rh
+#define info(A) mem[A].hh.lh \
+
+#define mem_end mem_top
+#define free_avail(A) \
+{link(A) = avail;avail= A; \
+decr_dyn_used; \
+} \
+
+#define fast_get_avail(A) \
+{A= avail; \
+if(A==null) A= get_avail() ; \
+else{avail= link(A) ;link(A) = null; \
+incr_dyn_used; \
+} \
+} \
+
+#define empty_flag max_halfword
+#define is_empty(A) (link(A) ==empty_flag)
+#define node_size(A) info(A)
+#define llink(A) info(A+1)
+#define rlink(A) link(A+1) \
+
+#define type(A) mem[A].hh.b0
+#define subtype(A) mem[A].hh.b1 \
+
+#define is_char_node(A) (A>=hi_mem_min) \
+
+#define font(A) type(A)
+#define character(A) subtype(A) \
+
+#define hlist_node 0
+#define box_node_size 9
+#define width_offset 1
+#define depth_offset 2
+#define height_offset 3
+#define width(A) mem[A+width_offset].sc
+#define depth(A) mem[A+depth_offset].sc
+#define height(A) mem[A+height_offset].sc
+#define shift_amount(A) mem[A+4].sc
+#define list_offset 5
+#define list_ptr(A) link(A+list_offset)
+#define glue_order(A) subtype(A+list_offset)
+#define glue_sign(A) type(A+list_offset)
+#define normal 0
+#define stretching 1
+#define shrinking 2
+#define glue_offset 6
+#define glue_set(A) mem[A+glue_offset].gr \
+ \
+
+#define vlist_node 1 \
+
+#define rule_node 2
+#define rule_node_size 4
+#define null_flag -010000000000
+#define is_running(A) (A==null_flag) \
+
+#define ins_node 3
+#define ins_node_size 5
+#define float_cost(A) mem[A+1].i
+#define ins_ptr(A) info(A+4)
+#define split_top_ptr(A) link(A+4) \
+
+#define mark_node 4
+#define small_node_size 2
+#define mark_ptr(A) mem[A+1].i \
+
+#define adjust_node 5
+#define adjust_ptr(A) mark_ptr(A) \
+
+#define ligature_node 6
+#define lig_char(A) A+1
+#define lig_ptr(A) link(lig_char(A) ) \
+
+#define disc_node 7
+#define replace_count(A) (subtype(A) &0x7F)
+#define set_replace_count(A,B) (subtype(A) = (B) &0x7F)
+#define set_auto_disc(A) (subtype(A) |= 0x80)
+#define is_auto_disc(A) (subtype(A) &0x80)
+#define pre_break(A) llink(A)
+#define post_break(A) rlink(A) \
+
+#define whatsit_node 8 \
+
+#define math_node 9
+#define before 0
+#define after 1 \
+
+#define precedes_break(A) (type(A) <math_node)
+#define non_discardable(A) (type(A) <math_node) \
+
+#define glue_node 10
+#define cond_math_glue 98
+#define mu_glue 99
+#define a_leaders 100
+#define c_leaders 101
+#define x_leaders 102
+#define glue_ptr(A) llink(A)
+#define leader_ptr(A) rlink(A) \
+
+#define glue_spec_size 4
+#define glue_ref_count(A) link(A)
+#define stretch(A) mem[A+2].sc
+#define shrink(A) mem[A+3].sc
+#define stretch_order(A) type(A)
+#define shrink_order(A) subtype(A)
+#define fil 1
+#define fill 2
+#define filll 3 \
+
+#define kern_node 11
+#define explicit 1
+#define acc_kern 2 \
+
+#define penalty_node 12
+#define inf_penalty inf_bad
+#define eject_penalty (-inf_penalty)
+#define penalty(A) mem[A+1].i \
+
+#define unset_node 13
+#define glue_stretch(A) mem[A+glue_offset].sc
+#define glue_shrink(A) shift_amount(A)
+#define span_count(A) subtype(A) \
+
+#define zero_glue mem_bot
+#define lo_mem_stat_max zero_glue+glue_spec_size-1 \
+
+#define page_ins_head mem_top
+#define contrib_head mem_top-1
+#define page_head mem_top-2
+#define temp_head mem_top-3
+#define hold_head mem_top-4
+#define adjust_head mem_top-5
+#define active mem_top-7
+#define align_head mem_top-8
+#define end_span mem_top-9
+#define omit_template mem_top-10
+#define null_list mem_top-11
+#define lig_trick mem_top-12
+#define garbage mem_top-12
+#define backup_head mem_top-13
+#define hi_mem_stat_min mem_top-13 \
+
+#define hi_mem_stat_usage 14 \
+
+#define node_list_display(A) \
+{depth_level++;show_node_list(A) ;depth_level--; \
+}
+#define print_current_indent \
+{int i; \
+for(i= 0;i<depth_level;i++) \
+print_char('.') ;} \
+
+#define token_ref_count(A) info(A) \
+
+#define fast_delete_glue_ref(A) \
+{if(glue_ref_count(A) ==null) free_node(A,glue_spec_size) ; \
+else decr(glue_ref_count(A) ) ; \
+} \
+
+#define add_token_ref(A) incr(token_ref_count(A) )
+#define add_glue_ref(A) incr(glue_ref_count(A) )
+#define add_xdimen_ref(A) incr(xdimen_ref_count(A) ) \
+
+#define escape 0 \
+
+#define relax 0
+#define left_brace 1
+#define right_brace 2
+#define math_shift 3
+#define tab_mark 4
+#define car_ret 5
+#define out_param 5
+#define mac_param 6
+#define sup_mark 7
+#define sub_mark 8
+#define ignore 9
+#define endv 9
+#define spacer 10
+#define letter 11
+#define other_char 12
+#define active_char 13
+#define par_end 13
+#define match 13
+#define comment 14
+#define end_match 14
+#define stop 14
+#define invalid_char 15
+#define delim_num 15
+#define max_char_code 15 \
+
+#define char_num 16
+#define math_char_num 17
+#define mark 18
+#define xray 19
+#define make_box 20
+#define hmove 21
+#define vmove 22
+#define un_hbox 23
+#define un_vbox 24
+#define remove_item 25 \
+
+#define hskip 26
+#define vskip 27
+#define mskip 28
+#define kern 29
+#define mkern 30
+#define leader_ship 31
+#define halign 32
+#define valign 33
+#define no_align 34
+#define vrule 35
+#define hrule 36
+#define insert 37
+#define vadjust 38
+#define ignore_spaces 39
+#define after_assignment 40
+#define after_group 41
+#define break_penalty 42
+#define start_par 43
+#define ital_corr 44
+#define accent 45
+#define math_accent 46
+#define discretionary 47
+#define eq_no 48
+#define left_right 49
+#define math_comp 50
+#define limit_switch 51
+#define above 52
+#define math_style 53
+#define math_choice 54
+#define non_script 55
+#define vcenter 56
+#define case_shift 57
+#define message 58
+#define extension 59
+#define in_stream 60
+#define begin_group 61
+#define end_group 62
+#define omit 63
+#define ex_space 64
+#define no_boundary 65
+#define radical 66
+#define end_cs_name 67
+#define min_internal 68
+#define char_given 68
+#define math_given 69
+#define last_item 70 \
+
+#define max_non_prefixed_command 70 \
+
+#define toks_register 71
+#define assign_toks 72
+#define assign_int 73
+#define assign_dimen 74
+#define assign_glue 75
+#define assign_mu_glue 76
+#define assign_font_dimen 77
+#define assign_font_int 78 \
+
+#define set_aux 79
+#define set_prev_graf 80
+#define set_page_dimen 81
+#define set_page_int 82 \
+
+#define set_box_dimen 83
+#define set_shape 84
+#define def_code 85
+#define def_family 86
+#define set_font 87
+#define def_font 88
+#define internal_register 89
+#define max_internal 89
+#define advance 90
+#define multiply 91
+#define divide 92
+#define prefix 93
+#define let 94
+#define shorthand_def 95
+#define read_to_cs 96
+#define def 97
+#define set_box 98
+#define hyph_data 99
+#define set_interaction 100
+#define max_command 100 \
+
+#define undefined_cs (max_command+1)
+#define expand_after (max_command+2)
+#define no_expand (max_command+3)
+#define input (max_command+4)
+#define if_test (max_command+5)
+#define fi_or_else (max_command+6)
+#define cs_name (max_command+7)
+#define convert (max_command+8)
+#define the (max_command+9)
+#define top_bot_mark (max_command+10)
+#define call (max_command+11)
+#define long_call (max_command+12)
+#define outer_call (max_command+13)
+#define long_outer_call (max_command+14)
+#define end_template (max_command+15)
+#define dont_expand (max_command+16)
+#define glue_ref (max_command+17)
+#define shape_ref (max_command+18)
+#define box_ref (max_command+19)
+#define data (max_command+20) \
+
+#define vmode 1
+#define hmode (vmode+max_command+1)
+#define mmode (hmode+max_command+1) \
+
+#define ignore_depth -65536000 \
+
+#define mode cur_list.mode_field
+#define head cur_list.head_field
+#define tail cur_list.tail_field
+#define prev_graf cur_list.pg_field
+#define aux cur_list.aux_field
+#define prev_depth aux.sc
+#define space_factor aux.hh.lh
+#define clang aux.hh.rh
+#define incompleat_noad aux.i
+#define cur_bs cur_list.bs_field
+#define cur_ls cur_list.ls_field
+#define cur_lsl cur_list.lsl_field
+#define needs_bs (cur_list.bs_pos!=NULL)
+#define prev_height cur_list.ht_field
+#define node_pos cur_list.np_field
+#define node_pos1 (nest_ptr==0?0:nest[nest_ptr-1].np_field) \
+
+#define tail_append(A) {link(tail) = A;tail= link(tail) ; \
+} \
+
+#define eq_level_field(A) A.hh.b1
+#define eq_type_field(A) A.hh.b0
+#define equiv_field(A) A.hh.rh
+#define eq_level(A) eq_level_field(eqtb[A])
+#define eq_type(A) eq_type_field(eqtb[A])
+#define equiv(A) equiv_field(eqtb[A])
+#define level_zero min_quarterword
+#define level_one (level_zero+1) \
+
+#define active_base 1
+#define single_base (active_base+256)
+#define null_cs (single_base+256)
+#define hash_base (null_cs+1)
+#define frozen_control_sequence (hash_base+hash_size)
+#define frozen_protection frozen_control_sequence
+#define frozen_cr (frozen_control_sequence+1)
+#define frozen_end_group (frozen_control_sequence+2)
+#define frozen_right (frozen_control_sequence+3)
+#define frozen_fi (frozen_control_sequence+4)
+#define frozen_end_template (frozen_control_sequence+5)
+#define frozen_endv (frozen_control_sequence+6)
+#define frozen_relax (frozen_control_sequence+7)
+#define end_write (frozen_control_sequence+8)
+#define frozen_dont_expand (frozen_control_sequence+9) \
+
+#define frozen_null_font (frozen_control_sequence+10) \
+
+#define font_id_base (frozen_null_font-font_base) \
+
+#define undefined_control_sequence (frozen_null_font+257)
+#define glue_base (undefined_control_sequence+1) \
+
+#define line_skip_code 0
+#define baseline_skip_code 1
+#define par_skip_code 2
+#define above_display_skip_code 3
+#define below_display_skip_code 4
+#define above_display_short_skip_code 5 \
+
+#define below_display_short_skip_code 6 \
+
+#define left_skip_code 7
+#define right_skip_code 8
+#define top_skip_code 9
+#define split_top_skip_code 10
+#define tab_skip_code 11
+#define space_skip_code 12
+#define xspace_skip_code 13
+#define par_fill_skip_code 14
+#define thin_mu_skip_code 15
+#define med_mu_skip_code 16
+#define thick_mu_skip_code 17
+#define glue_pars 18
+#define skip_base (glue_base+glue_pars)
+#define mu_skip_base (skip_base+256)
+#define local_base (mu_skip_base+256) \
+
+#define mu_skip(A) equiv(mu_skip_base+A)
+#define glue_par(A) equiv(glue_base+A)
+#define line_skip pointer_def[glue_kind][line_skip_no]
+#define baseline_skip pointer_def[glue_kind][baseline_skip_no]
+#define above_display_skip pointer_def[glue_kind][above_display_skip_no]
+#define below_display_skip pointer_def[glue_kind][below_display_skip_no]
+#define above_display_short_skip pointer_def[glue_kind][above_display_short_skip_no]
+#define below_display_short_skip pointer_def[glue_kind][below_display_short_skip_no]
+#define left_skip pointer_def[glue_kind][left_skip_no]
+#define right_skip pointer_def[glue_kind][right_skip_no]
+#define top_skip pointer_def[glue_kind][top_skip_no]
+#define split_top_skip pointer_def[glue_kind][split_top_skip_no]
+#define tab_skip pointer_def[glue_kind][tab_skip_no]
+#define par_fill_skip pointer_def[glue_kind][par_fill_skip_no]
+#define thin_mu_skip glue_par(thin_mu_skip_code)
+#define med_mu_skip glue_par(med_mu_skip_code)
+#define thick_mu_skip glue_par(thick_mu_skip_code) \
+
+#define par_shape_loc local_base
+#define output_routine_loc (local_base+1)
+#define every_par_loc (local_base+2)
+#define every_math_loc (local_base+3)
+#define every_display_loc (local_base+4)
+#define every_hbox_loc (local_base+5)
+#define every_vbox_loc (local_base+6)
+#define every_job_loc (local_base+7)
+#define every_cr_loc (local_base+8)
+#define err_help_loc (local_base+9)
+#define toks_base (local_base+10)
+#define box_base (toks_base+256)
+#define cur_font_loc (box_base+256)
+#define math_font_base (cur_font_loc+1)
+#define cat_code_base (math_font_base+48) \
+
+#define lc_code_base (cat_code_base+256)
+#define uc_code_base (lc_code_base+256)
+#define sf_code_base (uc_code_base+256)
+#define math_code_base (sf_code_base+256)
+#define int_base (math_code_base+256) \
+
+#define par_shape_ptr null
+#define output_routine equiv(output_routine_loc)
+#define every_par equiv(every_par_loc)
+#define every_math equiv(every_math_loc)
+#define every_display equiv(every_display_loc)
+#define every_hbox equiv(every_hbox_loc)
+#define every_vbox equiv(every_vbox_loc)
+#define every_job equiv(every_job_loc)
+#define every_cr equiv(every_cr_loc)
+#define err_help equiv(err_help_loc)
+#define toks(X) equiv(toks_base+X)
+#define box(A) (*box_ptr(A) )
+#define cur_font equiv(cur_font_loc)
+#define fam_fnt(A) equiv(math_font_base+A)
+#define cat_code(A) equiv(cat_code_base+A)
+#define lc_code(A) equiv(lc_code_base+A)
+#define uc_code(A) equiv(uc_code_base+A)
+#define sf_code(A) equiv(sf_code_base+A)
+#define math_code(A) equiv(math_code_base+A) \
+ \
+
+#define null_font font_base
+#define var_code 070000 \
+
+#define pretolerance_code 0
+#define tolerance_code 1
+#define line_penalty_code 2
+#define hyphen_penalty_code 3
+#define ex_hyphen_penalty_code 4
+#define club_penalty_code 5
+#define widow_penalty_code 6
+#define display_widow_penalty_code 7
+#define broken_penalty_code 8
+#define bin_op_penalty_code 9
+#define rel_penalty_code 10
+#define pre_display_penalty_code 11 \
+
+#define post_display_penalty_code 12 \
+
+#define inter_line_penalty_code 13
+#define double_hyphen_demerits_code 14
+#define final_hyphen_demerits_code 15
+#define adj_demerits_code 16
+#define mag_code 17
+#define delimiter_factor_code 18
+#define looseness_code 19
+#define time_code 20
+#define day_code 21
+#define month_code 22
+#define year_code 23
+#define show_box_breadth_code 24
+#define show_box_depth_code 25
+#define hbadness_code 26
+#define vbadness_code 27
+#define pausing_code 28
+#define tracing_online_code 29
+#define tracing_macros_code 30
+#define tracing_stats_code 31
+#define tracing_paragraphs_code 32
+#define tracing_pages_code 33
+#define tracing_output_code 34
+#define tracing_lost_chars_code 35
+#define tracing_commands_code 36
+#define tracing_restores_code 37
+#define uc_hyph_code 38
+#define output_penalty_code 39
+#define max_dead_cycles_code 40
+#define hang_after_code 41
+#define floating_penalty_code 42
+#define global_defs_code 43
+#define cur_fam_code 44
+#define escape_char_code 45
+#define default_hyphen_char_code 46
+#define default_skew_char_code 47
+#define end_line_char_code 48
+#define new_line_char_code 49
+#define language_code 50
+#define left_hyphen_min_code 51
+#define right_hyphen_min_code 52
+#define holding_inserts_code 53
+#define error_context_lines_code 54
+#define int_pars 55
+#define count_base (int_base+int_pars)
+#define del_code_base (count_base+256)
+#define dimen_base (del_code_base+256) \
+
+#define del_code(A) eqtb[del_code_base+A].i
+#define int_par(A) eqtb[int_base+A].i
+#define pretolerance integer_def[pretolerance_no]
+#define tolerance integer_def[tolerance_no]
+#define line_penalty integer_def[line_penalty_no]
+#define hyphen_penalty integer_def[hyphen_penalty_no]
+#define ex_hyphen_penalty integer_def[ex_hyphen_penalty_no]
+#define club_penalty integer_def[club_penalty_no]
+#define widow_penalty integer_def[widow_penalty_no]
+#define display_widow_penalty integer_def[display_widow_penalty_no]
+#define broken_penalty integer_def[broken_penalty_no]
+#define pre_display_penalty integer_def[pre_display_penalty_no]
+#define post_display_penalty integer_def[post_display_penalty_no]
+#define inter_line_penalty integer_def[inter_line_penalty_no]
+#define double_hyphen_demerits integer_def[double_hyphen_demerits_no]
+#define final_hyphen_demerits integer_def[final_hyphen_demerits_no]
+#define adj_demerits integer_def[adj_demerits_no]
+#define looseness integer_def[looseness_no]
+#define time integer_def[time_no]
+#define day integer_def[day_no]
+#define month integer_def[month_no]
+#define year integer_def[year_no]
+#define show_box_breadth int_par(show_box_breadth_code)
+#define show_box_depth int_par(show_box_depth_code)
+#define hbadness int_par(hbadness_code)
+#define vbadness int_par(vbadness_code)
+#define pausing int_par(pausing_code)
+#define tracing_online int_par(tracing_online_code)
+#define tracing_macros int_par(tracing_macros_code)
+#define tracing_stats int_par(tracing_stats_code)
+#define tracing_paragraphs (debugflags&DBGTEX)
+#define tracing_pages int_par(tracing_pages_code)
+#define tracing_output int_par(tracing_output_code)
+#define tracing_lost_chars int_par(tracing_lost_chars_code)
+#define tracing_commands int_par(tracing_commands_code)
+#define tracing_restores int_par(tracing_restores_code)
+#define uc_hyph int_par(uc_hyph_code)
+#define output_penalty int_par(output_penalty_code)
+#define max_dead_cycles int_par(max_dead_cycles_code)
+#define hang_after integer_def[hang_after_no]
+#define floating_penalty int_par(floating_penalty_code)
+#define global_defs int_par(global_defs_code)
+#define cur_fam int_par(cur_fam_code)
+#define escape_char int_par(escape_char_code)
+#define default_hyphen_char int_par(default_hyphen_char_code)
+#define default_skew_char int_par(default_skew_char_code)
+#define end_line_char int_par(end_line_char_code)
+#define new_line_char int_par(new_line_char_code)
+#define language int_par(language_code)
+#define left_hyphen_min int_par(left_hyphen_min_code)
+#define right_hyphen_min int_par(right_hyphen_min_code)
+#define error_context_lines int_par(error_context_lines_code) \
+
+#define par_indent_code 0
+#define math_surround_code 1
+#define line_skip_limit_code 2
+#define hsize_code 3
+#define vsize_code 4
+#define max_depth_code 5
+#define split_max_depth_code 6
+#define box_max_depth_code 7
+#define hfuzz_code 8
+#define vfuzz_code 9
+#define delimiter_shortfall_code 10
+#define null_delimiter_space_code 11
+#define script_space_code 12
+#define pre_display_size_code 13
+#define display_width_code 14
+#define display_indent_code 15
+#define overfull_rule_code 16
+#define hang_indent_code 17
+#define h_offset_code 18
+#define v_offset_code 19
+#define emergency_stretch_code 20
+#define dimen_pars 21
+#define scaled_base (dimen_base+dimen_pars) \
+
+#define eqtb_size (scaled_base+255) \
+
+#define dimen_par(A) eqtb[dimen_base+A].sc
+#define par_indent dimen_par(par_indent_code)
+#define math_surround dimen_par(math_surround_code)
+#define line_skip_limit dimen_def[line_skip_limit_no]
+#define hsize dimen_par(hsize_code)
+#define vsize dimen_par(vsize_code)
+#define max_depth dimen_def[max_depth_no]
+#define split_max_depth dimen_par(split_max_depth_code)
+#define box_max_depth dimen_par(box_max_depth_code)
+#define hfuzz dimen_par(hfuzz_code)
+#define vfuzz dimen_par(vfuzz_code)
+#define delimiter_shortfall dimen_par(delimiter_shortfall_code)
+#define null_delimiter_space dimen_par(null_delimiter_space_code)
+#define script_space dimen_par(script_space_code)
+#define pre_display_size cur_list.ds_field
+#define display_width cur_list.dw_field
+#define display_indent cur_list.di_field
+#define overfull_rule dimen_par(overfull_rule_code)
+#define hang_indent dimen_def[hang_indent_no]
+#define h_offset dimen_par(h_offset_code)
+#define v_offset dimen_par(v_offset_code)
+#define emergency_stretch dimen_def[emergency_stretch_no] \
+
+#define next(A) hash[A].lh
+#define text(A) hash[A].rh
+#define hash_is_full (hash_used==hash_base)
+#define font_id_text(A) text(font_id_base+A) \
+
+#define save_type(A) save_stack[A].hh.b0
+#define save_level(A) save_stack[A].hh.b1 \
+
+#define save_index(A) save_stack[A].hh.rh \
+
+#define restore_old_value 0
+#define restore_zero 1
+#define insert_token 2
+#define level_boundary 3 \
+
+#define bottom_level 0
+#define simple_group 1
+#define hbox_group 2
+#define adjusted_hbox_group 3
+#define vbox_group 4
+#define vtop_group 5
+#define align_group 6
+#define no_align_group 7
+#define output_group 8
+#define math_group 9
+#define disc_group 10
+#define insert_group 11
+#define vcenter_group 12
+#define math_choice_group 13
+#define semi_simple_group 14
+#define math_shift_group 15
+#define math_left_group 16
+#define max_group_code 16 \
+
+#define check_full_save_stack if(save_ptr> max_save_stack) \
+{max_save_stack= save_ptr; \
+if(max_save_stack> save_size-6) overflow("save size",save_size) ; \
+ \
+} \
+
+#define saved(A) save_stack[save_ptr+A].i \
+
+#define cs_token_flag 07777 \
+
+#define left_brace_token 00400
+#define left_brace_limit 01000
+#define right_brace_token 01000
+#define right_brace_limit 01400
+#define math_shift_token 01400
+#define tab_token 02000
+#define out_param_token 02400
+#define space_token 05040
+#define letter_token 05400
+#define other_token 06000
+#define match_token 06400
+#define end_match_token 07000 \
+
+#define chr_cmd(A) {print(A) ;print_ASCII(chr_code) ; \
+} \
+
+#define state cur_input.state_field
+#define index cur_input.index_field
+#define start cur_input.start_field
+#define limit cur_input.limit_field
+#define name cur_input.name_field \
+
+#define mid_line 1
+#define skip_blanks (2+max_char_code)
+#define new_line (3+max_char_code+max_char_code) \
+
+#define terminal_input (name==0)
+#define cur_file input_file[index] \
+
+#define skipping 1
+#define defining 2
+#define matching 3
+#define aligning 4
+#define absorbing 5 \
+
+#define token_list 0
+#define token_type index
+#define param_start limit
+#define parameter 0
+#define u_template 1
+#define v_template 2
+#define backed_up 3
+#define inserted 4
+#define macro 5
+#define output_text 6
+#define every_par_text 7
+#define every_math_text 8
+#define every_display_text 9
+#define every_hbox_text 10
+#define every_vbox_text 11
+#define every_job_text 12
+#define every_cr_text 13
+#define mark_text 14
+#define write_text 15 \
+
+#define begin_pseudoprint \
+{l= tally;tally= 0;selector= pseudo; \
+trick_count= 1000000; \
+}
+#define set_trick_count \
+{first_count= tally; \
+trick_count= tally+1+error_line-half_error_line; \
+if(trick_count<error_line) trick_count= error_line; \
+} \
+
+#define push_input \
+{if(input_ptr> max_in_stack) \
+{max_in_stack= input_ptr; \
+if(input_ptr==stack_size) overflow("input stack size",stack_size) ; \
+ \
+} \
+input_stack[input_ptr]= cur_input; \
+incr(input_ptr) ; \
+} \
+
+#define pop_input \
+{decr(input_ptr) ;cur_input= input_stack[input_ptr]; \
+} \
+
+#define back_list(A) begin_token_list(A,backed_up)
+#define ins_list(A) begin_token_list(A,inserted) \
+
+#define any_state_plus(A) case mid_line+A:case skip_blanks+A:case new_line+A \
+
+#define add_delims_to(A) A+math_shift:A+tab_mark:A+mac_param: \
+A+sub_mark:A+letter:A+other_char \
+
+#define is_hex(A) (((A>='0') &&(A<='9') ) ||((A>='a') &&(A<='f') ) )
+#define hex_to_cur_chr \
+if(c<='9') cur_chr= c-'0';else cur_chr= c-'a'+10; \
+if(cc<='9') cur_chr= 16*cur_chr+cc-'0'; \
+else cur_chr= 16*cur_chr+cc-'a'+10 \
+
+#define no_expand_flag 257 \
+
+#define end_line_char_inactive (end_line_char<0) ||(end_line_char> 255) \
+
+#define store_new_token(A) {q= get_avail() ;link(p) = q;info(q) = A; \
+p= q; \
+}
+#define fast_store_new_token(A) {fast_get_avail(q) ;link(p) = q;info(q) = A; \
+p= q; \
+} \
+
+#define top_mark_code 0
+#define first_mark_code 1
+#define bot_mark_code 2
+#define split_first_mark_code 3
+#define split_bot_mark_code 4
+#define top_mark cur_mark[top_mark_code]
+#define first_mark cur_mark[first_mark_code]
+#define bot_mark cur_mark[bot_mark_code]
+#define split_first_mark cur_mark[split_first_mark_code]
+#define split_bot_mark cur_mark[split_bot_mark_code] \
+
+#define int_val 0
+#define dimen_val 1
+#define glue_val 2
+#define mu_val 3
+#define ident_val 4
+#define tok_val 5 \
+
+#define scanned_result(A,B) {cur_val= A;cur_val_level= B;} \
+
+#define input_line_no_code (glue_val+1)
+#define badness_code (glue_val+2) \
+
+#define max_dimen 07777777777 \
+
+#define octal_token (other_token+'\'')
+#define hex_token (other_token+'"')
+#define alpha_token (other_token+'`')
+#define point_token (other_token+'.')
+#define continental_point_token (other_token+',') \
+
+#define infinity 017777777777
+#define zero_token (other_token+'0')
+#define A_token (letter_token+'A')
+#define other_A_token (other_token+'A') \
+
+#define scan_normal_dimen scan_dimen(false,false,false) \
+
+#define set_conversion(A,B) {num= A;denom= B;} \
+
+#define default_rule 26214 \
+
+#define number_code 0
+#define roman_numeral_code 1
+#define string_code 2
+#define meaning_code 3
+#define font_name_code 4
+#define job_name_code 5 \
+
+#define closed 2
+#define just_open 1 \
+
+#define if_char_code 0
+#define if_cat_code 1
+#define if_int_code 2
+#define if_dim_code 3
+#define if_odd_code 4
+#define if_vmode_code 5
+#define if_hmode_code 6
+#define if_mmode_code 7
+#define if_inner_code 8
+#define if_void_code 9
+#define if_hbox_code 10
+#define if_vbox_code 11
+#define ifx_code 12
+#define if_eof_code 13
+#define if_true_code 14
+#define if_false_code 15
+#define if_case_code 16 \
+
+#define if_node_size 2
+#define if_line_field(A) mem[A+1].i
+#define if_code 1
+#define fi_code 2
+#define else_code 3
+#define or_code 4 \
+
+#define get_x_token_or_active_char \
+{get_x_token() ; \
+if(cur_cmd==relax) if(cur_chr==no_expand_flag) \
+{cur_cmd= active_char; \
+cur_chr= cur_tok-cs_token_flag-active_base; \
+} \
+} \
+
+#define TEX_area "TeXinputs/" \
+
+#define TEX_font_area "TeXfonts/" \
+ \
+
+#define MAX_CUR_FILE_NAME 1024 \
+
+#define append_to_name(A) {c= A;incr(k) ; \
+if(k<=file_name_size) name_of_file[k]= xchr[c]; \
+} \
+
+#define format_default_length 20
+#define format_area_length 11
+#define format_ext_length 4
+#define format_extension ".fmt" \
+
+#define pack_cur_name pack_file_name(cur_name,cur_area,cur_ext) \
+
+#define ensure_dvi_open if(output_file_name==0) \
+{if(job_name==0) open_log_file() ; \
+pack_job_name(".dvi") ; \
+while(!b_open_out(&dvi_file) ) \
+prompt_file_name("file name for output",".dvi") ; \
+output_file_name= b_make_name_string(&dvi_file) ; \
+} \
+
+#define no_tag 0
+#define lig_tag 1
+#define list_tag 2
+#define ext_tag 3 \
+
+#define stop_flag qi(128)
+#define kern_flag qi(128)
+#define skip_byte(A) A.b0
+#define next_char(A) A.b1
+#define op_byte(A) A.b2
+#define rem_byte(A) A.b3 \
+
+#define ext_top(A) A.b0
+#define ext_mid(A) A.b1
+#define ext_bot(A) A.b2
+#define ext_rep(A) A.b3 \
+
+#define slant_code 1
+#define space_code 2
+#define space_stretch_code 3
+#define space_shrink_code 4
+#define x_height_code 5
+#define quad_code 6
+#define extra_space_code 7 \
+
+#define non_char qi(256)
+#define non_address 0 \
+
+#define char_info(A,B) font_info[char_base[A]+B].qqqq
+#define char_width(A,B) font_info[width_base[A]+B.b0].sc
+#define char_exists(A) (A.b0> min_quarterword)
+#define char_italic(A,B) font_info[italic_base[A]+(qo(B.b2) ) /4].sc
+#define height_depth(A) qo(A.b1)
+#define char_height(A,B) font_info[height_base[A]+(B) /16].sc
+#define char_depth(A,B) font_info[depth_base[A]+(B) %16].sc
+#define char_tag(A) ((qo(A.b2) ) %4) \
+
+#define char_kern(A,B) font_info[kern_base[A]+256*op_byte(B) +rem_byte(B) ].sc
+#define kern_base_offset 256*(128+min_quarterword)
+#define lig_kern_start(A,B) lig_kern_base[A]+B.b3
+#define lig_kern_restart(A,B) lig_kern_base[A]+256*op_byte(B) +rem_byte(B) +32768-kern_base_offset \
+
+#define param_end(A) param_base[A]].sc
+#define param(A) font_info[A+param_end
+#define slant param(slant_code)
+#define space param(space_code)
+#define space_stretch param(space_stretch_code)
+#define space_shrink param(space_shrink_code)
+#define x_height param(x_height_code)
+#define quad param(quad_code)
+#define extra_space param(extra_space_code) \
+
+#define abort goto bad_tfm \
+
+#define start_font_error_message print_err("Font ") ;sprint_cs(u) ; \
+print_char('=') ;print_file_name(nom,aire,"") ; \
+if(s>=0) \
+{print(" at ") ;print_scaled(s) ;print("pt") ; \
+} \
+else if(s!=-1000) \
+{print(" scaled ") ;print_int(-s) ; \
+} \
+
+#define fget (hpos++)
+#define fbyte (*hpos)
+#define read_sixteen(A) {A= fbyte; \
+if(A> 127) abort; \
+fget;A= A*0400+fbyte; \
+}
+#define store_four_quarters(A) {fget;a= fbyte;qw.b0= qi(a) ; \
+fget;b= fbyte;qw.b1= qi(b) ; \
+fget;c= fbyte;qw.b2= qi(c) ; \
+fget;d= fbyte;qw.b3= qi(d) ; \
+A= qw; \
+} \
+
+#define check_byte_range(A) {if((A<bc) ||(A> ec) ) abort;}
+#define current_character_being_worked_on k+bc-fmem_ptr \
+
+#define store_scaled(A) {fget;a= fbyte;fget;b= fbyte; \
+fget;c= fbyte;fget;d= fbyte; \
+sw= (((((d*z) /0400) +(c*z) ) /0400) +(b*z) ) /beta; \
+if(a==0) A= sw;else if(a==255) A= sw-alpha;else abort; \
+} \
+
+#define check_existence(A) \
+{check_byte_range(A) ; \
+qw= char_info(f,A) ; \
+if(!char_exists(qw) ) abort; \
+} \
+
+#define adjust(A) A[f]= qo(A[f]) \
+ \
+
+#define set_char_0 0
+#define set1 128
+#define set_rule 132
+#define put_rule 137
+#define nop 138
+#define bop 139
+#define eop 140
+#define push 141
+#define pop 142
+#define right1 143
+#define w0 147
+#define w1 148
+#define x0 152
+#define x1 153
+#define down1 157
+#define y0 161
+#define y1 162
+#define z0 166
+#define z1 167
+#define fnt_num_0 171
+#define fnt1 235
+#define xxx1 239
+#define xxx4 242
+#define fnt_def1 243
+#define pre 247
+#define post 248
+#define post_post 249 \
+
+#define id_byte 2 \
+
+#define dvi_out(A) {dvi_buf[dvi_ptr]= A;incr(dvi_ptr) ; \
+if(dvi_ptr==dvi_limit) dvi_swap() ; \
+} \
+
+#define movement_node_size 3
+#define location(A) mem[A+2].i \
+
+#define y_here 1
+#define z_here 2
+#define yz_OK 3
+#define y_OK 4
+#define z_OK 5
+#define d_fixed 6 \
+
+#define none_seen 0
+#define y_seen 6
+#define z_seen 12 \
+
+#define synch_h if(cur_h!=dvi_h) \
+{movement(cur_h-dvi_h,right1) ;dvi_h= cur_h; \
+}
+#define synch_v if(cur_v!=dvi_v) \
+{movement(cur_v-dvi_v,down1) ;dvi_v= cur_v; \
+} \
+
+#define billion float_constant(1000000000)
+#define vet_glue(A) glue_temp= A; \
+if(glue_temp> billion) \
+glue_temp= billion; \
+else if(glue_temp<-billion) \
+glue_temp= -billion \
+
+#define exactly 0
+#define additional 1
+#define natural 0,additional \
+
+#define vpack(A,B) vpackage(A,B,max_dimen) \
+
+#define noad_size 4
+#define nucleus(A) A+1
+#define supscr(A) A+2
+#define subscr(A) A+3
+#define math_type(A) link(A)
+#define fam font
+#define math_char 1
+#define sub_box 2
+#define sub_mlist 3
+#define math_text_char 4 \
+
+#define ord_noad (unset_node+3)
+#define op_noad (ord_noad+1)
+#define bin_noad (ord_noad+2)
+#define rel_noad (ord_noad+3)
+#define open_noad (ord_noad+4)
+#define close_noad (ord_noad+5)
+#define punct_noad (ord_noad+6)
+#define inner_noad (ord_noad+7)
+#define limits 1
+#define no_limits 2 \
+
+#define left_delimiter(A) A+4
+#define right_delimiter(A) A+5
+#define radical_noad (inner_noad+1)
+#define radical_noad_size 5
+#define fraction_noad (radical_noad+1)
+#define fraction_noad_size 6
+#define small_fam(A) mem[A].qqqq.b0
+#define small_char(A) mem[A].qqqq.b1
+#define large_fam(A) mem[A].qqqq.b2
+#define large_char(A) mem[A].qqqq.b3
+#define thickness(A) width(A)
+#define default_code 010000000000
+#define numerator(A) supscr(A)
+#define denominator(A) subscr(A) \
+
+#define under_noad (fraction_noad+1)
+#define over_noad (under_noad+1)
+#define accent_noad (over_noad+1)
+#define accent_noad_size 5
+#define accent_chr(A) A+4
+#define vcenter_noad (accent_noad+1)
+#define left_noad (vcenter_noad+1)
+#define right_noad (left_noad+1)
+#define delimiter(A) nucleus(A)
+#define scripts_allowed(A) (type(A) >=ord_noad) &&(type(A) <left_noad) \
+
+#define style_node (unset_node+1)
+#define style_node_size 3
+#define display_style 0
+#define text_style 2
+#define script_style 4
+#define script_script_style 6
+#define cramped 1 \
+
+#define choice_node (unset_node+2)
+#define display_mlist(A) info(A+1)
+#define text_mlist(A) link(A+1)
+#define script_mlist(A) info(A+2)
+#define script_script_mlist(A) link(A+2) \
+
+#define text_size 0
+#define script_size 16
+#define script_script_size 32 \
+
+#define mathsy_end(A) fam_fnt(2+A) ]].sc
+#define mathsy(A) font_info[A+param_base[mathsy_end
+#define math_x_height mathsy(5)
+#define math_quad dimen_def[math_quad_no]
+#define num1 mathsy(8)
+#define num2 mathsy(9)
+#define num3 mathsy(10)
+#define denom1 mathsy(11)
+#define denom2 mathsy(12)
+#define sup1 mathsy(13)
+#define sup2 mathsy(14)
+#define sup3 mathsy(15)
+#define sub1 mathsy(16)
+#define sub2 mathsy(17)
+#define sup_drop mathsy(18)
+#define sub_drop mathsy(19)
+#define delim1 mathsy(20) \
+
+#define delim2 mathsy(21)
+#define axis_height mathsy(22)
+#define total_mathsy_params 22 \
+
+#define mathex(A) font_info[A+param_base[fam_fnt(3+cur_size) ]].sc
+#define default_rule_thickness mathex(8)
+#define big_op_spacing1 mathex(9)
+#define big_op_spacing2 mathex(10)
+#define big_op_spacing3 mathex(11)
+#define big_op_spacing4 mathex(12)
+#define big_op_spacing5 mathex(13)
+#define total_mathex_params 13 \
+
+#define cramped_style(A) 2*(A/2) +cramped
+#define sub_style(A) 2*(A/4) +script_style+cramped
+#define sup_style(A) 2*(A/4) +script_style+(A%2)
+#define num_style(A) A+2-2*(A/6)
+#define denom_style(A) 2*(A/2) +cramped+2-2*(A/6) \
+
+#define mu_mult(A) nx_plus_y(n,A,xn_over_d(A,f,0200000) ) \
+
+#define new_hlist(A) mem[nucleus(A) ].i \
+
+#define choose_mlist(A) {p= A(q) ;A(q) = null;} \
+
+#define math_spacing \
+ \
+"0234000122*4000133**3**344*0400400*000000234000111*1111112341011" \
+ \
+
+#define u_part(A) mem[A+height_offset].i
+#define v_part(A) mem[A+depth_offset].i
+#define extra_info(A) info(A+list_offset) \
+
+#define preamble link(align_head)
+#define align_stack_node_size 5 \
+
+#define span_code 256
+#define cr_code 257
+#define cr_cr_code (cr_code+1)
+#define end_template_token cs_token_flag+frozen_end_template \
+
+#define span_node_size 2 \
+
+#define tight_fit 3 \
+
+#define loose_fit 1 \
+
+#define very_loose_fit 0 \
+
+#define decent_fit 2 \
+
+#define active_node_size 3
+#define fitness(A) subtype(A)
+#define break_node(A) rlink(A)
+#define line_number(A) llink(A)
+#define total_demerits(A) mem[A+2].i
+#define unhyphenated 0
+#define hyphenated 1
+#define last_active active \
+
+#define passive_node_size 2
+#define cur_break(A) rlink(A)
+#define prev_break(A) llink(A)
+#define serial(A) info(A) \
+
+#define delta_node_size 7
+#define delta_node 2 \
+
+#define do_all_six(A) A(1) ;A(2) ;A(3) ;A(4) ;A(5) ;A(6) \
+
+#define check_shrinkage(A) if((shrink_order(A) !=normal) &&(shrink(A) !=0) ) \
+{A= finite_shrink(A) ; \
+} \
+
+#define copy_to_cur_active(A) cur_active_width[A]= active_width[A]
+#define update_width(A) \
+cur_active_width[A]= cur_active_width[A]+mem[r+A].sc \
+
+#define awful_bad 07777777777 \
+
+#define set_break_width_to_background(A) break_width[A]= background[A] \
+
+#define convert_to_break_width(A) \
+mem[prev_r+A].sc= mem[prev_r+A].sc \
+-cur_active_width[A]+break_width[A]
+#define store_break_width(A) active_width[A]= break_width[A]
+#define new_delta_to_break_width(A) \
+mem[q+A].sc= break_width[A]-cur_active_width[A] \
+
+#define new_delta_from_break_width(A) mem[q+A].sc= \
+cur_active_width[A]-break_width[A] \
+
+#define combine_two_deltas(A) mem[prev_r+A].sc= mem[prev_r+A].sc+mem[r+A].sc
+#define downdate_width(A) cur_active_width[A]= cur_active_width[A]- \
+mem[prev_r+A].sc \
+
+#define update_active(A) active_width[A]= active_width[A]+mem[r+A].sc \
+
+#define store_background(A) active_width[A]= background[A] \
+
+#define act_width active_width[1]
+#define kern_break {if(!is_char_node(link(cur_p) ) &&auto_breaking) \
+if(type(link(cur_p) ) ==glue_node) try_break(0,unhyphenated) ; \
+act_width= act_width+width(cur_p) ; \
+} \
+
+#define next_break prev_break \
+
+#define append_charnode_to_t(A) {link(t) = get_avail() ;t= link(t) ; \
+font(t) = hf;character(t) = A; \
+}
+#define set_cur_r {if(j<n) cur_r= qi(hu[j+1]) ;else cur_r= bchar; \
+if(odd(hyf[j]) ) cur_rh= hchar;else cur_rh= non_char; \
+} \
+
+#define wrap_lig(A) if(ligature_present) \
+{p= new_ligature(hf,cur_l,link(cur_q) ) ; \
+if(lft_hit) \
+{subtype(p) = 2;lft_hit= false; \
+} \
+if(A) if(lig_stack==null) \
+{incr(subtype(p) ) ;rt_hit= false; \
+} \
+link(cur_q) = p;t= p;ligature_present= false; \
+}
+#define pop_lig_stack {if(lig_ptr(lig_stack) > null) \
+{link(t) = lig_ptr(lig_stack) ; \
+t= link(t) ;incr(j) ; \
+} \
+p= lig_stack;lig_stack= link(p) ;free_node(p,small_node_size) ; \
+if(lig_stack==null) set_cur_r else cur_r= character(lig_stack) ; \
+} \
+
+#define advance_major_tail {major_tail= link(major_tail) ;incr(r_count) ; \
+} \
+
+#define trie_link(A) trie[A].rh
+#define trie_char(A) trie[A].b1
+#define trie_op(A) trie[A].b0 \
+
+#define set_cur_lang if(language<=0) cur_lang= 0; \
+else if(language> 255) cur_lang= 0; \
+else cur_lang= language \
+
+#define trie_root trie_l[0] \
+
+#define trie_ref trie_hash
+#define trie_back(A) trie[A].lh \
+
+#define active_height active_width
+#define cur_height active_height[1]
+#define set_height_zero(A) active_height[A]= 0 \
+
+#define deplorable 100000 \
+
+#define inserts_only 1 \
+
+#define box_there 2 \
+
+#define page_ins_node_size 4
+#define inserting 0
+#define split_up 1
+#define broken_ptr(A) link(A+1) \
+
+#define broken_ins(A) info(A+1)
+#define last_ins_ptr(A) link(A+2)
+#define best_ins_ptr(A) info(A+2) \
+
+#define page_goal page_so_far[0]
+#define page_total page_so_far[1]
+#define page_shrink page_so_far[6]
+#define page_depth page_so_far[7] \
+
+#define print_plus(A,B) if(page_so_far[A]!=0) \
+{print(" plus ") ;print_scaled(page_so_far[A]) ;print(B) ;} \
+
+#define set_page_so_far_zero(A) page_so_far[A]= 0 \
+
+#define contrib_tail nest[0].tail_field \
+
+#define adjust_space_factor \
+main_s= sf_code(cur_chr) ; \
+if(main_s==1000) space_factor= 1000; \
+else if(main_s<1000) \
+{if(main_s> 0) space_factor= main_s; \
+} \
+else if(space_factor<1000) space_factor= 1000; \
+else space_factor= main_s \
+
+#define pack_lig(X) \
+{main_p= new_ligature(main_f,cur_l,link(cur_q) ) ; \
+if(lft_hit) \
+{subtype(main_p) = 2;lft_hit= false; \
+} \
+if(X) if(lig_stack==null) \
+{incr(subtype(main_p) ) ;rt_hit= false; \
+} \
+link(cur_q) = main_p;tail= main_p;ligature_present= false; \
+} \
+
+#define wrapup(A) if(cur_l<non_char) \
+{if(link(cur_q) > null) \
+if(character(tail) ==qi(hyphen_char[main_f]) ) ins_disc= true; \
+if(ligature_present) pack_lig(A) ; \
+if(ins_disc) \
+{ins_disc= false; \
+if(mode> 0) tail_append(new_disc() ) ; \
+} \
+} \
+
+#define any_mode(A) case vmode+A:case hmode+A:case mmode+A \
+
+#define non_math(A) case vmode+A:case hmode+A \
+
+#define fil_code 0
+#define fill_code 1
+#define ss_code 2
+#define fil_neg_code 3
+#define skip_code 4
+#define mskip_code 5 \
+
+#define box_flag 010000000000
+#define ship_out_flag box_flag+512
+#define leader_flag box_flag+513
+#define box_code 0
+#define copy_code 1
+#define last_box_code 2
+#define vsplit_code 3
+#define vtop_code 4 \
+
+#define fam_in_range ((cur_fam>=0) &&(cur_fam<16) ) \
+
+#define above_code 0
+#define over_code 1
+#define atop_code 2
+#define delimited_code 3 \
+
+#define global (a>=4)
+#define define(A,B,C) if(global) geq_define(A,B,C) ;else eq_define(A,B,C)
+#define word_define(A,B) if(global) geq_word_define(A,B) ;else eq_word_define(A,B) \
+
+#define char_def_code 0
+#define math_char_def_code 1
+#define count_def_code 2
+#define dimen_def_code 3
+#define skip_def_code 4
+#define mu_skip_def_code 5
+#define toks_def_code 6 \
+
+#define show_code 0
+#define show_box_code 1
+#define show_the_code 2
+#define show_lists_code 3 \
+
+#define too_small(X) {wake_up_terminal; \
+wterm_ln("---! Must increase the %s",X) ; \
+ \
+goto bad_fmt; \
+} \
+
+#define dump_wd(A) {fmt_file.d= A;put(fmt_file) ;}
+#define dump_int(A) {fmt_file.d.i= A;put(fmt_file) ;}
+#define dump_hh(A) {fmt_file.d.hh= A;put(fmt_file) ;}
+#define dump_qqqq(A) {fmt_file.d.qqqq= A;put(fmt_file) ;} \
+
+#define undump_wd(A) {get(fmt_file) ;A= fmt_file.d;}
+#define undump_int(A) {get(fmt_file) ;A= fmt_file.d.i;}
+#define undump_hh(A) {get(fmt_file) ;A= fmt_file.d.hh;}
+#define undump_qqqq(A) {get(fmt_file) ;A= fmt_file.d.qqqq;}
+#define undump(A,B,C) {undump_int(x) ;if((x<A) ||(x> B) ) goto bad_fmt;else C= x;}
+#define undump_size(A,B,C,D) {undump_int(x) ; \
+if(x<A) goto bad_fmt;if(x> B) too_small(C) else D= x;} \
+
+#define dump_four_ASCII \
+w.b0= qi(so(str_pool[k]) ) ;w.b1= qi(so(str_pool[k+1]) ) ; \
+w.b2= qi(so(str_pool[k+2]) ) ;w.b3= qi(so(str_pool[k+3]) ) ; \
+dump_qqqq(w) \
+
+#define undump_four_ASCII \
+undump_qqqq(w) ; \
+str_pool[k]= si(qo(w.b0) ) ;str_pool[k+1]= si(qo(w.b1) ) ; \
+str_pool[k+2]= si(qo(w.b2) ) ;str_pool[k+3]= si(qo(w.b3) ) \
+
+#define write_node_size 2
+#define open_node_size 3
+#define open_node 0
+#define write_node 1
+#define close_node 2
+#define special_node 3
+#define language_node 4
+#define what_lang(A) link(A+1)
+#define what_lhm(A) type(A+1)
+#define what_rhm(A) subtype(A+1)
+#define write_tokens(A) link(A+1)
+#define write_stream(A) info(A+1)
+#define open_name(A) link(A+1)
+#define open_area(A) info(A+2)
+#define open_ext(A) link(A+2) \
+
+#define hitex_ext language_node+1
+#define par_node hitex_ext
+#define par_node_size 3
+#define par_type(A) type(A+1)
+#define int_type 0
+#define dimen_type 1
+#define glue_type 2
+#define par_number(A) subtype(A+1)
+#define par_value(A) mem[A+2] \
+
+#define graf_node hitex_ext+1
+#define graf_node_size 5
+#define graf_penalty(A) mem[A+1].i
+#define graf_extent(A) link(A+3)
+#define graf_params(A) info(A+4)
+#define graf_list(A) link(A+4) \
+
+#define disp_node hitex_ext+2
+#define disp_node_size 3
+#define display_left(A) type(A+1)
+#define display_no_bs(A) subtype(A+1)
+#define display_params(A) link(A+1)
+#define display_formula(A) link(A+2)
+#define display_eqno(A) info(A+2) \
+
+#define baseline_node hitex_ext+3
+#define baseline_node_size small_node_size
+#define baseline_node_no(A) mem[A+1].i \
+
+#define image_node hitex_ext+4
+#define image_node_size 9
+#define image_width(A) width(A)
+#define image_height(A) height(A)
+#define image_depth(A) depth(A)
+#define image_no(A) mem[A+4].i
+#define image_stretch(A) mem[A+5].sc
+#define image_shrink(A) mem[A+6].sc
+#define image_stretch_order(A) stretch_order(A+7)
+#define image_shrink_order(A) shrink_order(A+7)
+#define image_name(A) link(A+7)
+#define image_area(A) info(A+8)
+#define image_ext(A) link(A+8) \
+
+#define hpack_node hitex_ext+5
+#define vpack_node hitex_ext+6
+#define pack_node_size box_node_size
+#define pack_m(A) type(A+list_offset)
+#define pack_limit(A) mem[(A) +1+list_offset].sc
+#define pack_extent(A) link(A+2+list_offset) \
+
+#define hset_node hitex_ext+7
+#define vset_node hitex_ext+8
+#define set_node_size box_node_size
+#define set_stretch_order glue_sign
+#define set_shrink_order glue_order
+#define set_stretch(A) mem[(A) +1+list_offset].sc
+#define set_extent(A) pack_extent(A)
+#define set_shrink(A) mem[(A) +3+list_offset].sc \
+
+#define align_node hitex_ext+9
+#define align_node_size 4
+#define align_extent(A) link(A+2)
+#define align_m(A) type(A+2)
+#define align_v(A) subtype(A+2)
+#define align_preamble(A) info(A+3)
+#define align_list(A) link(A+3) \
+
+#define setpage_node hitex_ext+10
+#define setpage_node_size 6
+#define setpage_name(A) link(A+1)
+#define setpage_number(A) type(A+1)
+#define setpage_id(A) subtype(A+1)
+#define setpage_priority(A) info(A+2)
+#define setpage_topskip(A) link(A+2)
+#define setpage_depth(A) mem[A+3].sc
+#define setpage_height(A) info(A+4)
+#define setpage_width(A) link(A+4)
+#define setpage_list(A) info(A+5)
+#define setpage_streams(A) link(A+5) \
+
+#define setstream_node hitex_ext+11
+#define setstream_node_size 6
+#define setstream_number(A) type(A+1)
+#define setstream_insertion(A) subtype(A+1)
+#define setstream_mag(A) link(A+1)
+#define setstream_prefered(A) type(A+2)
+#define setstream_next(A) subtype(A+2)
+#define setstream_ratio(A) link(A+2)
+#define setstream_max(A) info(A+3)
+#define setstream_width(A) link(A+3)
+#define setstream_topskip(A) info(A+4)
+#define setstream_height(A) link(A+4)
+#define setstream_before(A) info(A+5)
+#define setstream_after(A) link(A+5) \
+
+#define stream_node hitex_ext+12
+#define stream_node_size 2
+#define stream_number(A) type(A+1)
+#define stream_insertion(A) subtype(A+1) \
+
+#define stream_after_node hitex_ext+13
+#define stream_before_node hitex_ext+14 \
+
+#define xdimen_node hitex_ext+15
+#define xdimen_node_size 4
+#define xdimen_ref_count(A) link(A)
+#define xdimen_width(A) mem[A+1].sc
+#define xdimen_hfactor(A) mem[A+2].sc
+#define xdimen_vfactor(A) mem[A+3].sc \
+
+#define ignore_node hitex_ext+16
+#define ignore_node_size small_node_size
+#define ignore_info(A) type(A+1)
+#define ignore_list(A) link(A+1) \
+
+#define label_node hitex_ext+17
+#define label_node_size 2
+#define label_has_name(A) type(A+1)
+#define label_where(A) subtype(A+1)
+#define label_ptr(A) link(A+1)
+#define label_ref(A) link(A+1) \
+
+#define start_link_node hitex_ext+18
+#define end_link_node hitex_ext+19
+#define link_node_size 2 \
+
+#define outline_node hitex_ext+20
+#define outline_node_size 4
+#define outline_ptr(A) link(A+2)
+#define outline_depth(A) mem[A+3].i \
+ \
+
+#define immediate_code 4
+#define set_language_code 5 \
+
+#define adv_past(A) {} \
+
+#define end_write_token cs_token_flag+end_write \
+
+
+#line 2625 "htex.ch"
+
+enum{/*11:*/
+#line 355 "btex.w"
+
+mem_max= 65534,
+
+
+mem_min= 0,
+
+
+buf_size= 2048,
+
+
+error_line= 72,
+half_error_line= 42,
+
+max_print_line= 79,
+stack_size= 200,
+max_in_open= 6,
+
+font_max= 255,
+
+font_mem_size= 65535,
+param_size= 60,
+nest_size= 400,
+max_strings= 30000,
+string_vacancies= 75000,
+
+
+pool_size= 400000,
+
+
+
+save_size= 600,
+
+trie_size= 65534,
+
+trie_op_size= 65534,
+dvi_buf_size= 8,
+file_name_size= 1024,
+empty_string= 256
+
+/*:11*/
+#line 2626 "htex.ch"
+};
+/*18:*/
+#line 495 "btex.w"
+
+typedef uint8_t ASCII_code;
+
+/*:18*//*25:*/
+#line 731 "btex.w"
+
+typedef uint8_t eight_bits;
+typedef struct{FILE*f;text_char d;}alpha_file;
+typedef struct{FILE*f;eight_bits d;}byte_file;
+
+/*:25*//*38:*/
+#line 1091 "btex.w"
+
+typedef int32_t pool_pointer;
+typedef int16_t str_number;
+typedef uint8_t packed_ASCII_code;
+
+/*:38*//*104:*/
+#line 2126 "btex.w"
+
+typedef int scaled;
+typedef int32_t nonnegative_integer;
+typedef int8_t small_number;
+
+/*:104*//*113:*/
+#line 2320 "btex.w"
+
+#if __SIZEOF_FLOAT__==4
+typedef float float32_t;
+#else
+#error float type must have size 4
+#endif
+typedef float glue_ratio;
+
+/*:113*//*117:*/
+#line 2429 "btex.w"
+
+typedef uint8_t quarterword;
+typedef uint16_t halfword;
+typedef int8_t two_choices;
+typedef int8_t four_choices;
+typedef struct{
+halfword rh;
+union{
+halfword lh;
+struct{quarterword b0;quarterword b1;};
+};}two_halves;
+typedef struct{
+quarterword b0;
+quarterword b1;
+quarterword b2;
+quarterword b3;
+}four_quarters;
+typedef struct{
+union{
+int i;
+glue_ratio gr;
+two_halves hh;
+four_quarters qqqq;
+};}memory_word;
+typedef struct{FILE*f;memory_word d;}word_file;
+
+/*:117*//*155:*/
+#line 3152 "btex.w"
+
+typedef int8_t glue_ord;
+
+/*:155*//*221:*/
+#line 4309 "btex.w"
+
+typedef struct{int16_t mode_field;
+pointer head_field,tail_field;
+#line 698 "htex.ch"
+int pg_field;
+pointer bs_field,ls_field;
+scaled lsl_field;
+uint8_t*bs_pos;
+scaled hs_field;
+scaled ds_field,dw_field,di_field;
+scaled ht_field;
+uint32_t np_field;
+#line 4313 "btex.w"
+memory_word aux_field;
+}list_state_record;
+
+/*:221*//*279:*/
+#line 5881 "btex.w"
+
+typedef int8_t group_code;
+
+/*:279*//*310:*/
+#line 6457 "btex.w"
+
+typedef struct{
+quarterword state_field,index_field;
+halfword start_field,loc_field,limit_field,name_field;
+}in_state_record;
+
+/*:310*//*558:*/
+#line 10727 "btex.w"
+
+typedef uint8_t internal_font_number;
+typedef uint16_t font_index;
+
+/*:558*//*605:*/
+#line 11900 "btex.w"
+
+typedef int8_t dvi_index;
+
+/*:605*//*944:*/
+#line 18120 "btex.w"
+
+typedef uint16_t trie_pointer;
+
+/*:944*//*949:*/
+#line 18186 "btex.w"
+
+typedef int16_t hyph_pointer;
+
+/*:949*/
+#line 2627 "htex.ch"
+
+extern void list_init(void);
+extern void hpack_page(void);
+extern void happend_insertion(pointer p);
+extern bool hbuild_page(void);
+extern void hdisplay(pointer p,pointer a,bool l);
+extern void mem_init(void);
+#line 25006 "btex.w"
+extern pointer copy_node_list(pointer p);
+extern void flush_node_list(pointer p);
+extern
+pointer vpackage(pointer p,scaled h,small_number m,scaled l);
+extern pointer hpack(pointer p,scaled w,small_number m);
+extern pointer new_math(scaled w,small_number s);
+extern pointer new_ligature(quarterword f,quarterword c,pointer q);
+extern pointer new_penalty(int m);
+extern pointer new_spec(pointer p);
+extern pointer new_kern(scaled w);
+extern pointer new_disc(void);
+extern pointer new_null_box(void);
+extern pointer new_rule(void);
+extern pointer new_glue(pointer q);
+extern pointer new_character(internal_font_number f,eight_bits c);
+extern int*const char_base;
+extern int*const width_base;
+extern memory_word font_info[];
+extern scaled*const font_size;
+#line 2641 "htex.ch"
+extern char**const font_name;
+extern void hclear_fonts(void);
+extern void read_font_info(int f,char*nom,scaled s);
+#line 25028 "btex.w"
+extern list_state_record cur_list;
+extern pointer get_node(int s);
+extern pointer lo_mem_max;
+extern pointer hi_mem_min;
+extern memory_word*const mem;
+extern pointer just_box;
+#line 2649 "htex.ch"
+extern void append_to_vlist(pointer b,uint32_t offset);
+#line 25035 "btex.w"
+extern pointer adjust_tail;
+extern void freeze_page_specs(small_number s);
+extern pointer page_tail;
+extern scaled best_height_plus_depth;
+extern halfword badness(scaled t,scaled s);
+extern void show_box(pointer p);
+extern pointer temp_ptr;
+extern scaled best_size;
+extern pointer best_page_break;
+extern int least_page_cost;
+extern int insert_penalties;
+extern scaled page_so_far[];
+extern int page_contents;
+extern scaled page_max_depth;
+extern int nest_ptr;
+extern void pop_nest(void);
+extern void push_nest(void);
+extern void delete_glue_ref(pointer p);
+#line 2655 "htex.ch"
+void line_break(int final_widow_penalty,pointer par_ptr);/*:1410*/