diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/web2w/ctex.c |
Initial commit
Diffstat (limited to 'web/web2w/ctex.c')
-rw-r--r-- | web/web2w/ctex.c | 26514 |
1 files changed, 26514 insertions, 0 deletions
diff --git a/web/web2w/ctex.c b/web/web2w/ctex.c new file mode 100644 index 0000000000..d7697c03ba --- /dev/null +++ b/web/web2w/ctex.c @@ -0,0 +1,26514 @@ +/*4:*/ +#line 261 "tex.w" +/*9:*/ +#line 340 "tex.w" + +#include <stdint.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#define odd(X) ((X)&1) +#define chr(X) ((unsigned char)(X)) +#define ord(X) ((int)(X)) + +#if __SIZEOF_FLOAT__==4 +typedef float float32_t; +#else +#error float type must have size 4 +#endif + +#define banner "This is TeX, Version 3.14159265 (HINT)" \ + +#define mem_bot 0 \ + +#define mem_top 30000 \ + \ + +#define font_base 0 \ + +#define hash_size 2100 \ + +#define hash_prime 1777 +#define hyph_size 307 \ + \ + +#define done6 36 +#define incr(X) X= X+1 +#define decr(X) X= X-1 +#define negate(X) X= -X +#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(X) erstat(X) ==0 +#define rewrite_OK(X) erstat(X) ==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(X) X +#define so(X) X \ + +#define length(X) (str_start[X+1]-str_start[X]) \ + \ + +#define cur_length (pool_ptr-str_start[str_ptr]) \ + +#define append_char(X) \ +{str_pool[pool_ptr]= si(X) ;incr(pool_ptr) ; \ +} +#define flush_char decr(pool_ptr) +#define str_room(X) \ +{if(pool_ptr+X> 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(X) l= X; \ +if(l<10) append_char(l+'0') else append_char(l-10+'a') \ + +#define bad_pool(X) {wake_up_terminal;write_ln(term_out,X) ; \ +a_close(&pool_file) ;return false; \ +} +#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_ASCII print \ + +#define prompt_input(X) {wake_up_terminal;print_str(X) ;term_input() ; \ +} \ + +#define batch_mode 0 +#define nonstop_mode 1 +#define scroll_mode 2 +#define error_stop_mode 3 +#define print_err(X) {if(interaction==error_stop_mode) wake_up_terminal; \ +print_nl("! ") ;print_str(X) ; \ +} \ + +#define spotless 0 +#define warning_issued 1 +#define error_message_issued 2 +#define fatal_error_stop 3 \ + +#define hlp1(X) help_line[0]= X;} +#define hlp2(X) help_line[1]= X;hlp1 +#define hlp3(X) help_line[2]= X;hlp2 +#define hlp4(X) help_line[3]= X;hlp3 +#define hlp5(X) help_line[4]= X;hlp4 +#define hlp6(X) help_line[5]= X;hlp5 +#define help0 help_ptr= 0 +#define help1 {help_ptr= 1;hlp1 +#define help2 {help_ptr= 2;hlp2 +#define help3 {help_ptr= 3;hlp3 +#define help4 {help_ptr= 4;hlp4 +#define help5 {help_ptr= 5;hlp5 +#define help6 {help_ptr= 6;hlp6 \ + +#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(X,Y,Z) mult_and_add(X,Y,Z,07777777777) +#define mult_integers(X,Y) mult_and_add(X,Y,0,017777777777) \ + +#define inf_bad 10000 \ + +#define set_glue_ratio_zero(X) X= 0.0 +#define set_glue_ratio_one(X) X= 1.0 +#define float(X) ((double) (X) ) +#define unfloat(X) ((glue_ratio) (X) ) +#define float_constant(X) ((double) (X) ) \ + +#define min_quarterword 0 +#define max_quarterword 255 +#define min_halfword 0 +#define max_halfword 65535 \ + +#define qi(X) X+min_quarterword \ + +#define qo(X) X-min_quarterword \ + +#define hi(X) X+min_halfword \ + +#define ho(X) X-min_halfword \ + \ + +#define sc i \ + +#define pointer halfword +#define null min_halfword \ + +#define link(X) mem[X].hh.rh +#define info(X) mem[X].hh.lh \ + +#define free_avail(X) \ +{link(X) = avail;avail= X; \ +decr_dyn_used; \ +} \ + +#define fast_get_avail(X) \ +{X= avail; \ +if(X==null) X= get_avail() ; \ +else{avail= link(X) ;link(X) = null; \ +incr_dyn_used; \ +} \ +} \ + +#define empty_flag max_halfword +#define is_empty(X) (link(X) ==empty_flag) +#define node_size info +#define llink(X) info(X+1) +#define rlink(X) link(X+1) \ + +#define type(X) mem[X].hh.b0 +#define subtype(X) mem[X].hh.b1 \ + +#define is_char_node(X) (X>=hi_mem_min) \ + +#define font type +#define character subtype \ + +#define hlist_node 0 +#define box_node_size 7 +#define width_offset 1 +#define depth_offset 2 +#define height_offset 3 +#define width(X) mem[X+width_offset].sc +#define depth(X) mem[X+depth_offset].sc +#define height(X) mem[X+height_offset].sc +#define shift_amount(X) mem[X+4].sc +#define list_offset 5 +#define list_ptr(X) link(X+list_offset) +#define glue_order(X) subtype(X+list_offset) +#define glue_sign(X) type(X+list_offset) +#define normal 0 +#define stretching 1 +#define shrinking 2 +#define glue_offset 6 +#define glue_set(X) mem[X+glue_offset].gr \ + \ + +#define vlist_node 1 \ + +#define rule_node 2 +#define rule_node_size 4 +#define null_flag -010000000000 +#define is_running(X) (X==null_flag) \ + +#define ins_node 3 +#define ins_node_size 5 +#define float_cost(X) mem[X+1].i +#define ins_ptr(X) info(X+4) +#define split_top_ptr(X) link(X+4) \ + +#define mark_node 4 +#define small_node_size 2 +#define mark_ptr(X) mem[X+1].i \ + +#define adjust_node 5 +#define adjust_ptr mark_ptr \ + +#define ligature_node 6 +#define lig_char(X) X+1 +#define lig_ptr(X) link(lig_char(X) ) \ + +#define disc_node 7 +#define replace_count subtype +#define pre_break llink +#define post_break rlink \ + +#define whatsit_node 8 \ + +#define math_node 9 +#define before 0 +#define after 1 \ + +#define precedes_break(X) (type(X) <math_node) +#define non_discardable(X) (type(X) <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 llink +#define leader_ptr rlink \ + +#define glue_spec_size 4 +#define glue_ref_count(X) link(X) +#define stretch(X) mem[X+2].sc +#define shrink(X) mem[X+3].sc +#define stretch_order type +#define shrink_order subtype +#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(X) mem[X+1].i \ + +#define unset_node 13 +#define glue_stretch(X) mem[X+glue_offset].sc +#define glue_shrink shift_amount +#define span_count subtype \ + +#define zero_glue mem_bot +#define fil_glue zero_glue+glue_spec_size +#define fill_glue fil_glue+glue_spec_size +#define ss_glue fill_glue+glue_spec_size +#define fil_neg_glue ss_glue+glue_spec_size +#define lo_mem_stat_max fil_neg_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(X) \ +{append_char('.') ;show_node_list(X) ;flush_char; \ +} \ + +#define token_ref_count(X) info(X) \ + +#define fast_delete_glue_ref(X) \ +{if(glue_ref_count(X) ==null) free_node(X,glue_spec_size) ; \ +else decr(glue_ref_count(X) ) ; \ +} \ + +#define add_token_ref(X) incr(token_ref_count(X) ) +#define add_glue_ref(X) incr(glue_ref_count(X) ) \ + +#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 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 mode_line cur_list.ml_field \ + +#define tail_append(X) {link(tail) = X;tail= link(tail) ; \ +} \ + +#define eq_level_field(X) X.hh.b1 +#define eq_type_field(X) X.hh.b0 +#define equiv_field(X) X.hh.rh +#define eq_level(X) eq_level_field(eqtb[X]) +#define eq_type(X) eq_type_field(eqtb[X]) +#define equiv(X) equiv_field(eqtb[X]) +#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 skip(X) equiv(skip_base+X) +#define mu_skip(X) equiv(mu_skip_base+X) +#define glue_par(X) equiv(glue_base+X) +#define line_skip glue_par(line_skip_code) +#define baseline_skip glue_par(baseline_skip_code) +#define par_skip glue_par(par_skip_code) +#define above_display_skip glue_par(above_display_skip_code) +#define below_display_skip glue_par(below_display_skip_code) +#define above_display_short_skip glue_par(above_display_short_skip_code) +#define below_display_short_skip glue_par(below_display_short_skip_code) +#define left_skip glue_par(left_skip_code) +#define right_skip glue_par(right_skip_code) +#define top_skip glue_par(top_skip_code) +#define split_top_skip glue_par(split_top_skip_code) +#define tab_skip glue_par(tab_skip_code) +#define space_skip glue_par(space_skip_code) +#define xspace_skip glue_par(xspace_skip_code) +#define par_fill_skip glue_par(par_fill_skip_code) +#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 equiv(par_shape_loc) +#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(X) equiv(box_base+X) +#define cur_font equiv(cur_font_loc) +#define fam_fnt(X) equiv(math_font_base+X) +#define cat_code(X) equiv(cat_code_base+X) +#define lc_code(X) equiv(lc_code_base+X) +#define uc_code(X) equiv(uc_code_base+X) +#define sf_code(X) equiv(sf_code_base+X) +#define math_code(X) equiv(math_code_base+X) \ + \ + +#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(X) eqtb[del_code_base+X].i +#define count(X) eqtb[count_base+X].i +#define int_par(X) eqtb[int_base+X].i +#define pretolerance int_par(pretolerance_code) +#define tolerance int_par(tolerance_code) +#define line_penalty int_par(line_penalty_code) +#define hyphen_penalty int_par(hyphen_penalty_code) +#define ex_hyphen_penalty int_par(ex_hyphen_penalty_code) +#define club_penalty int_par(club_penalty_code) +#define widow_penalty int_par(widow_penalty_code) +#define display_widow_penalty int_par(display_widow_penalty_code) +#define broken_penalty int_par(broken_penalty_code) +#define bin_op_penalty int_par(bin_op_penalty_code) +#define rel_penalty int_par(rel_penalty_code) +#define pre_display_penalty int_par(pre_display_penalty_code) +#define post_display_penalty int_par(post_display_penalty_code) +#define inter_line_penalty int_par(inter_line_penalty_code) +#define double_hyphen_demerits int_par(double_hyphen_demerits_code) +#define final_hyphen_demerits int_par(final_hyphen_demerits_code) +#define adj_demerits int_par(adj_demerits_code) +#define mag int_par(mag_code) +#define delimiter_factor int_par(delimiter_factor_code) +#define looseness int_par(looseness_code) +#define time int_par(time_code) +#define day int_par(day_code) +#define month int_par(month_code) +#define year int_par(year_code) +#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 int_par(tracing_paragraphs_code) +#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 int_par(hang_after_code) +#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 holding_inserts int_par(holding_inserts_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(X) eqtb[scaled_base+X].sc +#define dimen_par(X) eqtb[dimen_base+X].sc +#define par_indent dimen_par(par_indent_code) +#define math_surround dimen_par(math_surround_code) +#define line_skip_limit dimen_par(line_skip_limit_code) +#define hsize dimen_par(hsize_code) +#define vsize dimen_par(vsize_code) +#define max_depth dimen_par(max_depth_code) +#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 dimen_par(pre_display_size_code) +#define display_width dimen_par(display_width_code) +#define display_indent dimen_par(display_indent_code) +#define overfull_rule dimen_par(overfull_rule_code) +#define hang_indent dimen_par(hang_indent_code) +#define h_offset dimen_par(h_offset_code) +#define v_offset dimen_par(v_offset_code) +#define emergency_stretch dimen_par(emergency_stretch_code) \ + +#define next(X) hash[X].lh +#define text(X) hash[X].rh +#define hash_is_full (hash_used==hash_base) +#define font_id_text(X) text(font_id_base+X) \ + +#define save_type(X) save_stack[X].hh.b0 +#define save_level(X) save_stack[X].hh.b1 \ + +#define save_index(X) save_stack[X].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(X) save_stack[save_ptr+X].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(X) {print_str(X) ;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(X) begin_token_list(X,backed_up) +#define ins_list(X) begin_token_list(X,inserted) \ + +#define any_state_plus(X) case mid_line+X:case skip_blanks+X:case new_line+X \ + +#define add_delims_to(X) X+math_shift:X+tab_mark:X+mac_param: \ +X+sub_mark:X+letter:X+other_char \ + +#define is_hex(X) (((X>='0') &&(X<='9') ) ||((X>='a') &&(X<='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(X) {q= get_avail() ;link(p) = q;info(q) = X; \ +p= q; \ +} +#define fast_store_new_token(X) {fast_get_avail(q) ;link(p) = q;info(q) = X; \ +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_end(X) cur_val_level= X;} +#define scanned_result(X) {cur_val= X;scanned_result_end \ + +#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_end(X) denom= X;} +#define set_conversion(X) {num= X;set_conversion_end \ + +#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(X) mem[X+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 append_to_name(X) {c= X;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_str ".fmt" \ + +#define pack_cur_name pack_file_name(cur_name,cur_area,cur_ext) \ + +#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(X) X.b0 +#define next_char(X) X.b1 +#define op_byte(X) X.b2 +#define rem_byte(X) X.b3 \ + +#define ext_top(X) X.b0 +#define ext_mid(X) X.b1 +#define ext_bot(X) X.b2 +#define ext_rep(X) X.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_end(X) X].qqqq +#define char_info(X) font_info[char_base[X]+char_info_end +#define char_width_end(X) X.b0].sc +#define char_width(X) font_info[width_base[X]+char_width_end +#define char_exists(X) (X.b0> min_quarterword) +#define char_italic_end(X) (qo(X.b2) ) /4].sc +#define char_italic(X) font_info[italic_base[X]+char_italic_end +#define height_depth(X) qo(X.b1) +#define char_height_end(X) (X) /16].sc +#define char_height(X) font_info[height_base[X]+char_height_end +#define char_depth_end(X) (X) %16].sc +#define char_depth(X) font_info[depth_base[X]+char_depth_end +#define char_tag(X) ((qo(X.b2) ) %4) \ + +#define char_kern_end(X) 256*op_byte(X) +rem_byte(X) ].sc +#define char_kern(X) font_info[kern_base[X]+char_kern_end +#define kern_base_offset 256*(128+min_quarterword) +#define lig_kern_start(X) lig_kern_base[X]+rem_byte +#define lig_kern_restart_end(X) 256*op_byte(X) +rem_byte(X) +32768-kern_base_offset +#define lig_kern_restart(X) lig_kern_base[X]+lig_kern_restart_end \ + +#define param_end(X) param_base[X]].sc +#define param(X) font_info[X+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,empty_string) ; \ +if(s>=0) \ +{print_str(" at ") ;print_scaled(s) ;print_str("pt") ; \ +} \ +else if(s!=-1000) \ +{print_str(" scaled ") ;print_int(-s) ; \ +} \ + +#define fget get(tfm_file) +#define fbyte tfm_file.d +#define read_sixteen(X) {X= fbyte; \ +if(X> 127) abort; \ +fget;X= X*0400+fbyte; \ +} +#define store_four_quarters(X) {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) ; \ +X= qw; \ +} \ + +#define check_byte_range(X) {if((X<bc) ||(X> ec) ) abort;} +#define current_character_being_worked_on k+bc-fmem_ptr \ + +#define store_scaled(X) {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) X= sw;else if(a==255) X= sw-alpha;else abort; \ +} \ + +#define check_existence(X) \ +{check_byte_range(X) ; \ +qw= char_info(f) (X) ; \ +if(!char_exists(qw) ) abort; \ +} \ + +#define adjust(X) X[f]= qo(X[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(X) {dvi_buf[dvi_ptr]= X;incr(dvi_ptr) ; \ +if(dvi_ptr==dvi_limit) dvi_swap() ; \ +} \ + +#define movement_node_size 3 +#define location(X) mem[X+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(X) glue_temp= X; \ +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 noad_size 4 +#define nucleus(X) X+1 +#define supscr(X) X+2 +#define subscr(X) X+3 +#define math_type link +#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(X) X+4 +#define right_delimiter(X) X+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(X) mem[X].qqqq.b0 +#define small_char(X) mem[X].qqqq.b1 +#define large_fam(X) mem[X].qqqq.b2 +#define large_char(X) mem[X].qqqq.b3 +#define thickness width +#define default_code 010000000000 +#define numerator supscr +#define denominator subscr \ + +#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(X) X+4 +#define vcenter_noad (accent_noad+1) +#define left_noad (vcenter_noad+1) +#define right_noad (left_noad+1) +#define delimiter nucleus +#define scripts_allowed(X) (type(X) >=ord_noad) &&(type(X) <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(X) info(X+1) +#define text_mlist(X) link(X+1) +#define script_mlist(X) info(X+2) +#define script_script_mlist(X) link(X+2) \ + +#define text_size 0 +#define script_size 16 +#define script_script_size 32 \ + +#define mathsy_end(X) fam_fnt(2+X) ]].sc +#define mathsy(X) font_info[X+param_base[mathsy_end +#define math_x_height mathsy(5) +#define math_quad mathsy(6) +#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(X) font_info[X+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(X) 2*(X/2) +cramped +#define sub_style(X) 2*(X/4) +script_style+cramped +#define sup_style(X) 2*(X/4) +script_style+(X%2) +#define num_style(X) X+2-2*(X/6) +#define denom_style(X) 2*(X/2) +cramped+2-2*(X/6) \ + +#define mu_mult(X) nx_plus_y(n,X,xn_over_d(X,f,0200000) ) \ + +#define new_hlist(X) mem[nucleus(X) ].i \ + +#define choose_mlist(X) {p= X(q) ;X(q) = null;} \ + +#define math_spacing_str \ + \ +"math_spacing" \ + \ + +#define u_part(X) mem[X+height_offset].i +#define v_part(X) mem[X+depth_offset].i +#define extra_info(X) info(X+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 subtype +#define break_node rlink +#define line_number llink +#define total_demerits(X) mem[X+2].i +#define unhyphenated 0 +#define hyphenated 1 +#define last_active active \ + +#define passive_node_size 2 +#define cur_break rlink +#define prev_break llink +#define serial info \ + +#define delta_node_size 7 +#define delta_node 2 \ + +#define do_all_six(X) X(1) ;X(2) ;X(3) ;X(4) ;X(5) ;X(6) \ + +#define check_shrinkage(X) if((shrink_order(X) !=normal) &&(shrink(X) !=0) ) \ +{X= finite_shrink(X) ; \ +} \ + +#define copy_to_cur_active(X) cur_active_width[X]= active_width[X] +#define update_width(X) \ +cur_active_width[X]= cur_active_width[X]+mem[r+X].sc \ + +#define awful_bad 07777777777 \ + +#define set_break_width_to_background(X) break_width[X]= background[X] \ + +#define convert_to_break_width(X) \ +mem[prev_r+X].sc= mem[prev_r+X].sc \ +-cur_active_width[X]+break_width[X] +#define store_break_width(X) active_width[X]= break_width[X] +#define new_delta_to_break_width(X) \ +mem[q+X].sc= break_width[X]-cur_active_width[X] \ + +#define new_delta_from_break_width(X) mem[q+X].sc= \ +cur_active_width[X]-break_width[X] \ + +#define combine_two_deltas(X) mem[prev_r+X].sc= mem[prev_r+X].sc+mem[r+X].sc +#define downdate_width(X) cur_active_width[X]= cur_active_width[X]- \ +mem[prev_r+X].sc \ + +#define update_active(X) active_width[X]= active_width[X]+mem[r+X].sc \ + +#define store_background(X) active_width[X]= background[X] \ + +#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(X) {link(t) = get_avail() ;t= link(t) ; \ +font(t) = hf;character(t) = X; \ +} +#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(X) if(ligature_present) \ +{p= new_ligature(hf,cur_l,link(cur_q) ) ; \ +if(lft_hit) \ +{subtype(p) = 2;lft_hit= false; \ +} \ +if(X) 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(X) trie[X].rh +#define trie_char(X) trie[X].b1 +#define trie_op(X) trie[X].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(X) trie[X].lh \ + +#define active_height active_width +#define cur_height active_height[1] +#define set_height_zero(X) active_height[X]= 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(X) link(X+1) \ + +#define broken_ins(X) info(X+1) +#define last_ins_ptr(X) link(X+2) +#define best_ins_ptr(X) info(X+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_end(X) print_str(X) ;} +#define print_plus(X) if(page_so_far[X]!=0) \ +{print_str(" plus ") ;print_scaled(page_so_far[X]) ;print_plus_end \ + +#define set_page_so_far_zero(X) page_so_far[X]= 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(X) 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(X) ; \ +if(ins_disc) \ +{ins_disc= false; \ +if(mode> 0) tail_append(new_disc() ) ; \ +} \ +} \ + +#define any_mode(X) case vmode+X:case hmode+X:case mmode+X \ + +#define non_math(X) case vmode+X:case hmode+X \ + +#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(X,Y,Z) if(global) geq_define(X,Y,Z) ;else eq_define(X,Y,Z) +#define word_define(X,Y) if(global) geq_word_define(X,Y) ;else eq_word_define(X,Y) \ + +#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 3 \ + +#define too_small(X) {wake_up_terminal; \ +wterm_ln("---! Must increase the %s",X) ; \ + \ +goto bad_fmt; \ +} \ + +#define dump_wd(X) {fmt_file.d= X;put(fmt_file) ;} +#define dump_int(X) {fmt_file.d.i= X;put(fmt_file) ;} +#define dump_hh(X) {fmt_file.d.hh= X;put(fmt_file) ;} +#define dump_qqqq(X) {fmt_file.d.qqqq= X;put(fmt_file) ;} \ + +#define undump_wd(X) {get(fmt_file) ;X= fmt_file.d;} +#define undump_int(X) {get(fmt_file) ;X= fmt_file.d.i;} +#define undump_hh(X) {get(fmt_file) ;X= fmt_file.d.hh;} +#define undump_qqqq(X) {get(fmt_file) ;X= fmt_file.d.qqqq;} +#define undump_end_end(X) X= x;} +#define undump_end(X) (x> X) ) goto bad_fmt;else undump_end_end +#define undump(X) {undump_int(x) ;if((x<X) ||undump_end +#define undump_size_end_end(X) too_small(X) else undump_end_end +#define undump_size_end(X) if(x> X) undump_size_end_end +#define undump_size(X) {undump_int(x) ; \ +if(x<X) goto bad_fmt;undump_size_end \ + +#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(X) link(X+1) +#define what_lhm(X) type(X+1) +#define what_rhm(X) subtype(X+1) +#define write_tokens(X) link(X+1) +#define write_stream(X) info(X+1) +#define open_name(X) link(X+1) +#define open_area(X) info(X+2) +#define open_ext(X) link(X+2) \ + +#define immediate_code 4 +#define set_language_code 5 \ + +#define adv_past(X) if(subtype(X) ==language_node) \ +{cur_lang= what_lang(X) ;l_hyf= what_lhm(X) ;r_hyf= what_rhm(X) ;} \ + +#define end_write_token cs_token_flag+end_write \ + +#define str_0_255 "^^@^^A^^B^^C^^D^^E^^F^^G^^H^^I^^J^^K^^L^^M^^N^^O" \ +"^^P^^Q^^R^^S^^T^^U^^V^^W^^X^^Y^^Z^^[^^\\^^]^^^^^_" \ +" !\"#$%&'()*+,-./" \ +"0123456789:;<=>?" \ +"@ABCDEFGHIJKLMNO" \ +"PQRSTUVWXYZ[\\]^_" \ +"`abcdefghijklmno" \ +"pqrstuvwxyz{|}~^^?" \ +"^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f" \ +"^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f" \ +"^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af" \ +"^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf" \ +"^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf" \ +"^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df" \ +"^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef" \ +"^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff" +#define str_start_0_255 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45, \ +48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93, \ +96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, \ +112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, \ +128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, \ +144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, \ +160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, \ +176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, \ +194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254, \ +258,262,266,270,274,278,282,286,290,294,298,302,306,310,314,318, \ +322,326,330,334,338,342,346,350,354,358,362,366,370,374,378,382, \ +386,390,394,398,402,406,410,414,418,422,426,430,434,438,442,446, \ +450,454,458,462,466,470,474,478,482,486,490,494,498,502,506,510, \ +514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574, \ +578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638, \ +642,646,650,654,658,662,666,670,674,678,682,686,690,694,698,702, +#define str_256 "???" +#define str_257 "m2d5c2l5x2v5i" +#define str_258 "batchmode" +#define str_259 "nonstopmode" +#define str_260 "scrollmode" +#define str_261 "CLOBBERED." +#define str_262 "fil" +#define str_263 "unset" +#define str_264 "rule(" +#define str_265 "insert" +#define str_266 "glue" +#define str_267 "nonscript" +#define str_268 "mskip" +#define str_269 "mu" +#define str_270 "" +#define empty_string 270 +#define str_271 "kern" +#define str_272 "mkern" +#define str_273 "math" +#define str_274 "penalty " +#define str_275 "discretionary" +#define str_276 "mark" +#define str_277 "vadjust" +#define str_278 "flushing" +#define str_279 "copying" +#define str_280 "lineskip" +#define str_281 "baselineskip" +#define str_282 "parskip" +#define str_283 "abovedisplayskip" +#define str_284 "belowdisplayskip" +#define str_285 "abovedisplayshortskip" +#define str_286 "belowdisplayshortskip" +#define str_287 "leftskip" +#define str_288 "rightskip" +#define str_289 "topskip" +#define str_290 "splittopskip" +#define str_291 "tabskip" +#define str_292 "spaceskip" +#define str_293 "xspaceskip" +#define str_294 "parfillskip" +#define str_295 "thinmuskip" +#define str_296 "medmuskip" +#define str_297 "thickmuskip" +#define str_298 "skip" +#define str_299 "muskip" +#define str_300 "pt" +#define str_301 "output" +#define str_302 "everypar" +#define str_303 "everymath" +#define str_304 "everydisplay" +#define str_305 "everyhbox" +#define str_306 "everyvbox" +#define str_307 "everyjob" +#define str_308 "everycr" +#define str_309 "errhelp" +#define str_310 "toks" +#define str_311 "parshape" +#define str_312 "box" +#define str_313 "textfont" +#define str_314 "scriptfont" +#define str_315 "scriptscriptfont" +#define str_316 "catcode" +#define str_317 "lccode" +#define str_318 "uccode" +#define str_319 "sfcode" +#define str_320 "mathcode" +#define str_321 "pretolerance" +#define str_322 "tolerance" +#define str_323 "linepenalty" +#define str_324 "hyphenpenalty" +#define str_325 "exhyphenpenalty" +#define str_326 "clubpenalty" +#define str_327 "widowpenalty" +#define str_328 "displaywidowpenalty" +#define str_329 "brokenpenalty" +#define str_330 "binoppenalty" +#define str_331 "relpenalty" +#define str_332 "predisplaypenalty" +#define str_333 "postdisplaypenalty" +#define str_334 "interlinepenalty" +#define str_335 "doublehyphendemerits" +#define str_336 "finalhyphendemerits" +#define str_337 "adjdemerits" +#define str_338 "mag" +#define str_339 "delimiterfactor" +#define str_340 "looseness" +#define str_341 "time" +#define str_342 "day" +#define str_343 "month" +#define str_344 "year" +#define str_345 "showboxbreadth" +#define str_346 "showboxdepth" +#define str_347 "hbadness" +#define str_348 "vbadness" +#define str_349 "pausing" +#define str_350 "tracingonline" +#define str_351 "tracingmacros" +#define str_352 "tracingstats" +#define str_353 "tracingparagraphs" +#define str_354 "tracingpages" +#define str_355 "tracingoutput" +#define str_356 "tracinglostchars" +#define str_357 "tracingcommands" +#define str_358 "tracingrestores" +#define str_359 "uchyph" +#define str_360 "outputpenalty" +#define str_361 "maxdeadcycles" +#define str_362 "hangafter" +#define str_363 "floatingpenalty" +#define str_364 "globaldefs" +#define str_365 "fam" +#define str_366 "escapechar" +#define str_367 "defaulthyphenchar" +#define str_368 "defaultskewchar" +#define str_369 "endlinechar" +#define str_370 "newlinechar" +#define str_371 "language" +#define str_372 "lefthyphenmin" +#define str_373 "righthyphenmin" +#define str_374 "holdinginserts" +#define str_375 "errorcontextlines" +#define str_376 "count" +#define str_377 "delcode" +#define str_378 "parindent" +#define str_379 "mathsurround" +#define str_380 "lineskiplimit" +#define str_381 "hsize" +#define str_382 "vsize" +#define str_383 "maxdepth" +#define str_384 "splitmaxdepth" +#define str_385 "boxmaxdepth" +#define str_386 "hfuzz" +#define str_387 "vfuzz" +#define str_388 "delimitershortfall" +#define str_389 "nulldelimiterspace" +#define str_390 "scriptspace" +#define str_391 "predisplaysize" +#define str_392 "displaywidth" +#define str_393 "displayindent" +#define str_394 "overfullrule" +#define str_395 "hangindent" +#define str_396 "hoffset" +#define str_397 "voffset" +#define str_398 "emergencystretch" +#define str_399 "dimen" +#define str_400 "notexpanded:" +#define str_401 "csname" +#define str_402 "endcsname" +#define str_403 "IMPOSSIBLE." +#define str_404 "NONEXISTENT." +#define str_405 "accent" +#define str_406 "advance" +#define str_407 "afterassignment" +#define str_408 "aftergroup" +#define str_409 "begingroup" +#define str_410 "char" +#define str_411 "delimiter" +#define str_412 "divide" +#define str_413 "endgroup" +#define str_414 "expandafter" +#define str_415 "font" +#define str_416 "fontdimen" +#define str_417 "halign" +#define str_418 "hrule" +#define str_419 "ignorespaces" +#define str_420 "mathaccent" +#define str_421 "mathchar" +#define str_422 "mathchoice" +#define str_423 "multiply" +#define str_424 "noalign" +#define str_425 "noboundary" +#define str_426 "noexpand" +#define str_427 "omit" +#define str_428 "penalty" +#define str_429 "prevgraf" +#define str_430 "radical" +#define str_431 "read" +#define str_432 "relax" +#define str_433 "setbox" +#define str_434 "the" +#define str_435 "valign" +#define str_436 "vcenter" +#define str_437 "vrule" +#define str_438 "curlevel" +#define str_439 "retaining" +#define str_440 "restoring" +#define str_441 "ETC." +#define str_442 "BAD." +#define str_443 "write" +#define str_444 "par" +#define str_445 "input" +#define str_446 "endinput" +#define str_447 "topmark" +#define str_448 "firstmark" +#define str_449 "botmark" +#define str_450 "splitfirstmark" +#define str_451 "splitbotmark" +#define str_452 "spacefactor" +#define str_453 "prevdepth" +#define str_454 "deadcycles" +#define str_455 "insertpenalties" +#define str_456 "wd" +#define str_457 "ht" +#define str_458 "dp" +#define str_459 "lastpenalty" +#define str_460 "lastkern" +#define str_461 "lastskip" +#define str_462 "inputlineno" +#define str_463 "badness" +#define str_464 "true" +#define str_465 "em" +#define str_466 "ex" +#define str_467 "in" +#define str_468 "pc" +#define str_469 "cm" +#define str_470 "mm" +#define str_471 "bp" +#define str_472 "dd" +#define str_473 "cc" +#define str_474 "sp" +#define str_475 "plus" +#define str_476 "minus" +#define str_477 "width" +#define str_478 "height" +#define str_479 "depth" +#define str_480 "number" +#define str_481 "romannumeral" +#define str_482 "string" +#define str_483 "meaning" +#define str_484 "fontname" +#define str_485 "jobname" +#define str_486 "if" +#define str_487 "ifcat" +#define str_488 "ifnum" +#define str_489 "ifdim" +#define str_490 "ifodd" +#define str_491 "ifvmode" +#define str_492 "ifhmode" +#define str_493 "ifmmode" +#define str_494 "ifinner" +#define str_495 "ifvoid" +#define str_496 "ifhbox" +#define str_497 "ifvbox" +#define str_498 "ifx" +#define str_499 "ifeof" +#define str_500 "iftrue" +#define str_501 "iffalse" +#define str_502 "ifcase" +#define str_503 "fi" +#define str_504 "or" +#define str_505 "else" +#define str_506 "TeXinputs/" +#define TEX_area 506 +#define str_507 "TeXfonts/" +#define TEX_font_area 507 +#define str_508 ".fmt" +#define format_extension 508 +#define str_509 ".log" +#define str_510 ".dvi" +#define str_511 "input file name" +#define str_512 ".tex" +#define str_513 "texput" +#define str_514 "nullfont" +#define str_515 ".tfm" +#define str_516 "vlistout" +#define str_517 "to" +#define str_518 "spread" +#define str_519 "vpack" +#define str_520 "displaystyle" +#define str_521 "textstyle" +#define str_522 "scriptstyle" +#define str_523 "scriptscriptstyle" +#define str_524 "mathord" +#define str_525 "mathop" +#define str_526 "mathbin" +#define str_527 "mathrel" +#define str_528 "mathopen" +#define str_529 "mathclose" +#define str_530 "mathpunct" +#define str_531 "mathinner" +#define str_532 "overline" +#define str_533 "underline" +#define str_534 "left" +#define str_535 "right" +#define str_536 "limits" +#define str_537 "nolimits" +#define str_538 "fraction, thickness " +#define str_539 "mlist1" +#define str_540 "mlist2" +#define str_541 "mlist3" +#define str_542 "0234000122*4000133**3**344*0400400*000000234000111*1111112341011" +#define math_spacing 542 +#define str_543 "mlist4" +#define str_544 "span" +#define str_545 "cr" +#define str_546 "crcr" +#define str_547 "endtemplate" +#define str_548 "endv" +#define str_549 "256 spans" +#define str_550 "align1" +#define str_551 "align0" +#define str_552 "disc1" +#define str_553 "disc2" +#define str_554 "paragraph" +#define str_555 "disc3" +#define str_556 "disc4" +#define str_557 "line breaking" +#define str_558 "hyphenation" +#define str_559 "patterns" +#define str_560 "pruning" +#define str_561 "vertbreak" +#define str_562 "vsplit" +#define str_563 "vbox" +#define str_564 "pagegoal" +#define str_565 "pagetotal" +#define str_566 "pagestretch" +#define str_567 "pagefilstretch" +#define str_568 "pagefillstretch" +#define str_569 "pagefilllstretch" +#define str_570 "pageshrink" +#define str_571 "pagedepth" +#define str_572 "page" +#define str_573 "end" +#define str_574 "dump" +#define str_575 "hskip" +#define str_576 "hfil" +#define str_577 "hfill" +#define str_578 "hss" +#define str_579 "hfilneg" +#define str_580 "vskip" +#define str_581 "vfil" +#define str_582 "vfill" +#define str_583 "vss" +#define str_584 "vfilneg" +#define str_585 "right." +#define str_586 "rightbrace" +#define str_587 "moveleft" +#define str_588 "moveright" +#define str_589 "raise" +#define str_590 "lower" +#define str_591 "copy" +#define str_592 "lastbox" +#define str_593 "vtop" +#define str_594 "hbox" +#define str_595 "shipout" +#define str_596 "leaders" +#define str_597 "cleaders" +#define str_598 "xleaders" +#define str_599 "indent" +#define str_600 "noindent" +#define str_601 "unpenalty" +#define str_602 "unkern" +#define str_603 "unskip" +#define str_604 "unhbox" +#define str_605 "unhcopy" +#define str_606 "unvbox" +#define str_607 "unvcopy" +#define str_608 "eqno" +#define str_609 "leqno" +#define str_610 "displaylimits" +#define str_611 "above" +#define str_612 "over" +#define str_613 "atop" +#define str_614 "abovewithdelims" +#define str_615 "overwithdelims" +#define str_616 "atopwithdelims" +#define str_617 "display" +#define str_618 "long" +#define str_619 "outer" +#define str_620 "global" +#define str_621 "def" +#define str_622 "gdef" +#define str_623 "edef" +#define str_624 "xdef" +#define str_625 "prefix" +#define str_626 "inaccessible" +#define str_627 "let" +#define str_628 "futurelet" +#define str_629 "chardef" +#define str_630 "mathchardef" +#define str_631 "countdef" +#define str_632 "dimendef" +#define str_633 "skipdef" +#define str_634 "muskipdef" +#define str_635 "toksdef" +#define str_636 "by" +#define str_637 "hyphenchar" +#define str_638 "skewchar" +#define str_639 "FONT" +#define str_640 "at" +#define str_641 "scaled" +#define str_642 "errorstopmode" +#define str_643 "openin" +#define str_644 "closein" +#define str_645 "message" +#define str_646 "errmessage" +#define str_647 "lowercase" +#define str_648 "uppercase" +#define str_649 "show" +#define str_650 "showbox" +#define str_651 "showthe" +#define str_652 "showlists" +#define str_653 "long macro" +#define str_654 "outer macro" +#define str_655 "outer endtemplate" +#define str_656 " (INITEX)" +#define str_657 "end occurred " +#define str_658 "openout" +#define str_659 "closeout" +#define str_660 "special" +#define str_661 "immediate" +#define str_662 "setlanguage" +#define str_663 "ext1" +#define str_664 "ext2" +#define str_665 "ext3" +#define str_666 "endwrite" +#define str_667 "ext4" + +#line 358 "tex.w" + + +/*:9*//*56:*/ +#line 1447 "tex.w" + +#define put(file) fwrite(&((file).d),sizeof((file).d),1,(file).f) +#define get(file) fread(&((file).d),sizeof((file).d),1,(file).f) + +#define reset(file,name,mode) ((file).f= fopen((char *)(name)+1,mode),\ + (file).f!=NULL?get(file):0) +#define rewrite(file,name,mode) ((file).f= fopen((char *)(name)+1,mode)) +#define close(file) fclose((file).f) +#define eof(file) feof((file).f) +#define eoln(file) ((file).d=='\n'||eof(file)) +#define erstat(file) ((file).f==NULL?-1:ferror((file).f)) + +#define read(file,x) ((x)= (file).d,get(file)) +#define read_ln(file) do get(file); while (!eoln(file)) + +#define write(file, format,...) fprintf(file.f,format,## __VA_ARGS__) +#define write_ln(file,...) write(file,__VA_ARGS__"\n") + +#define wterm(format,...) write(term_out,format, ## __VA_ARGS__) +#define wterm_ln(format,...) wterm(format "\n", ## __VA_ARGS__) +#define wterm_cr write(term_out,"\n") +#define wlog(format, ...) write(log_file,format, ## __VA_ARGS__) +#define wlog_ln(format, ...) wlog(format "\n", ## __VA_ARGS__) +#define wlog_cr write(log_file,"\n") + +/*:56*/ +#line 261 "tex.w" + + +/*6:*/ +#line 289 "tex.w" + + + + +/*:6*/ +#line 263 "tex.w" + +/*11:*/ +#line 396 "tex.w" + +enum{mem_max= 30000}; + + +enum{mem_min= 0}; + + +enum{buf_size= 500}; + + +enum{error_line= 72}; +enum{half_error_line= 42}; + +enum{max_print_line= 79}; +enum{stack_size= 200}; +enum{max_in_open= 6}; + +enum{font_max= 75}; + +enum{font_mem_size= 20000}; +enum{param_size= 60}; +enum{nest_size= 40}; +enum{max_strings= 3000}; +enum{string_vacancies= 8000}; + + +enum{pool_size= 32000}; + + + +enum{save_size= 600}; + +enum{trie_size= 8000}; + +enum{trie_op_size= 500}; +enum{dvi_buf_size= 800}; +enum{file_name_size= 40}; +const char*pool_name= "TeXformats:TEX.POOL "; + + + +/*:11*/ +#line 264 "tex.w" + +/*18:*/ +#line 539 "tex.w" + +typedef uint8_t ASCII_code; + +/*:18*//*25:*/ +#line 774 "tex.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 1132 "tex.w" + +typedef uint16_t pool_pointer; +typedef uint16_t str_number; +typedef uint8_t packed_ASCII_code; + +/*:38*//*101:*/ +#line 2198 "tex.w" + +typedef int scaled; +typedef uint32_t nonnegative_integer; +typedef uint8_t small_number; + +/*:101*//*109:*/ +#line 2390 "tex.w" + +typedef float32_t glue_ratio; + +/*:109*//*113:*/ +#line 2494 "tex.w" + +typedef uint8_t quarterword; +typedef uint16_t halfword; +typedef uint8_t two_choices; +typedef uint8_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; + +/*:113*//*150:*/ +#line 3212 "tex.w" + +typedef uint8_t glue_ord; + +/*:150*//*212:*/ +#line 4369 "tex.w" + +typedef struct{int16_t mode_field; +pointer head_field,tail_field; +int pg_field,ml_field; +memory_word aux_field; +}list_state_record; + +/*:212*//*269:*/ +#line 5934 "tex.w" + +typedef uint8_t group_code; + +/*:269*//*300:*/ +#line 6514 "tex.w" + +typedef struct{ +quarterword state_field,index_field; +halfword start_field,loc_field,limit_field,name_field; +}in_state_record; + +/*:300*//*548:*/ +#line 10743 "tex.w" + +typedef uint8_t internal_font_number; +typedef uint16_t font_index; + +/*:548*//*594:*/ +#line 11923 "tex.w" + +typedef uint16_t dvi_index; + +/*:594*//*920:*/ +#line 18138 "tex.w" + +typedef uint16_t trie_pointer; + +/*:920*//*925:*/ +#line 18204 "tex.w" + +typedef uint16_t hyph_pointer; + +/*:925*/ +#line 265 "tex.w" + +/*13:*/ +#line 467 "tex.w" + +int bad; + +/*:13*//*20:*/ +#line 579 "tex.w" + +ASCII_code xord[256]; + +uint8_t xchr[256]; + + +/*:20*//*26:*/ +#line 791 "tex.w" + +uint8_t name_of_file0[file_name_size+1]= {0},*const name_of_file= name_of_file0-1; + +uint8_t name_length; + + +/*:26*//*30:*/ +#line 891 "tex.w" + +ASCII_code buffer[buf_size+1]; +uint16_t first; +uint16_t last; +uint16_t max_buf_stack; + +/*:30*//*32:*/ +#line 964 "tex.w" + +alpha_file term_in; +alpha_file term_out; + +/*:32*//*39:*/ +#line 1137 "tex.w" + +/*1795:*/ +#line 26438 "tex.w" + +typedef enum{ +str_start_256= sizeof(str_0_255)-1, +str_start_257= str_start_256+sizeof(str_256)-1, +str_start_258= str_start_257+sizeof(str_257)-1, +str_start_259= str_start_258+sizeof(str_258)-1, +str_start_260= str_start_259+sizeof(str_259)-1, +str_start_261= str_start_260+sizeof(str_260)-1, +str_start_262= str_start_261+sizeof(str_261)-1, +str_start_263= str_start_262+sizeof(str_262)-1, +str_start_264= str_start_263+sizeof(str_263)-1, +str_start_265= str_start_264+sizeof(str_264)-1, +str_start_266= str_start_265+sizeof(str_265)-1, +str_start_267= str_start_266+sizeof(str_266)-1, +str_start_268= str_start_267+sizeof(str_267)-1, +str_start_269= str_start_268+sizeof(str_268)-1, +str_start_270= str_start_269+sizeof(str_269)-1, +str_start_271= str_start_270+sizeof(str_270)-1, +str_start_272= str_start_271+sizeof(str_271)-1, +str_start_273= str_start_272+sizeof(str_272)-1, +str_start_274= str_start_273+sizeof(str_273)-1, +str_start_275= str_start_274+sizeof(str_274)-1, +str_start_276= str_start_275+sizeof(str_275)-1, +str_start_277= str_start_276+sizeof(str_276)-1, +str_start_278= str_start_277+sizeof(str_277)-1, +str_start_279= str_start_278+sizeof(str_278)-1, +str_start_280= str_start_279+sizeof(str_279)-1, +str_start_281= str_start_280+sizeof(str_280)-1, +str_start_282= str_start_281+sizeof(str_281)-1, +str_start_283= str_start_282+sizeof(str_282)-1, +str_start_284= str_start_283+sizeof(str_283)-1, +str_start_285= str_start_284+sizeof(str_284)-1, +str_start_286= str_start_285+sizeof(str_285)-1, +str_start_287= str_start_286+sizeof(str_286)-1, +str_start_288= str_start_287+sizeof(str_287)-1, +str_start_289= str_start_288+sizeof(str_288)-1, +str_start_290= str_start_289+sizeof(str_289)-1, +str_start_291= str_start_290+sizeof(str_290)-1, +str_start_292= str_start_291+sizeof(str_291)-1, +str_start_293= str_start_292+sizeof(str_292)-1, +str_start_294= str_start_293+sizeof(str_293)-1, +str_start_295= str_start_294+sizeof(str_294)-1, +str_start_296= str_start_295+sizeof(str_295)-1, +str_start_297= str_start_296+sizeof(str_296)-1, +str_start_298= str_start_297+sizeof(str_297)-1, +str_start_299= str_start_298+sizeof(str_298)-1, +str_start_300= str_start_299+sizeof(str_299)-1, +str_start_301= str_start_300+sizeof(str_300)-1, +str_start_302= str_start_301+sizeof(str_301)-1, +str_start_303= str_start_302+sizeof(str_302)-1, +str_start_304= str_start_303+sizeof(str_303)-1, +str_start_305= str_start_304+sizeof(str_304)-1, +str_start_306= str_start_305+sizeof(str_305)-1, +str_start_307= str_start_306+sizeof(str_306)-1, +str_start_308= str_start_307+sizeof(str_307)-1, +str_start_309= str_start_308+sizeof(str_308)-1, +str_start_310= str_start_309+sizeof(str_309)-1, +str_start_311= str_start_310+sizeof(str_310)-1, +str_start_312= str_start_311+sizeof(str_311)-1, +str_start_313= str_start_312+sizeof(str_312)-1, +str_start_314= str_start_313+sizeof(str_313)-1, +str_start_315= str_start_314+sizeof(str_314)-1, +str_start_316= str_start_315+sizeof(str_315)-1, +str_start_317= str_start_316+sizeof(str_316)-1, +str_start_318= str_start_317+sizeof(str_317)-1, +str_start_319= str_start_318+sizeof(str_318)-1, +str_start_320= str_start_319+sizeof(str_319)-1, +str_start_321= str_start_320+sizeof(str_320)-1, +str_start_322= str_start_321+sizeof(str_321)-1, +str_start_323= str_start_322+sizeof(str_322)-1, +str_start_324= str_start_323+sizeof(str_323)-1, +str_start_325= str_start_324+sizeof(str_324)-1, +str_start_326= str_start_325+sizeof(str_325)-1, +str_start_327= str_start_326+sizeof(str_326)-1, +str_start_328= str_start_327+sizeof(str_327)-1, +str_start_329= str_start_328+sizeof(str_328)-1, +str_start_330= str_start_329+sizeof(str_329)-1, +str_start_331= str_start_330+sizeof(str_330)-1, +str_start_332= str_start_331+sizeof(str_331)-1, +str_start_333= str_start_332+sizeof(str_332)-1, +str_start_334= str_start_333+sizeof(str_333)-1, +str_start_335= str_start_334+sizeof(str_334)-1, +str_start_336= str_start_335+sizeof(str_335)-1, +str_start_337= str_start_336+sizeof(str_336)-1, +str_start_338= str_start_337+sizeof(str_337)-1, +str_start_339= str_start_338+sizeof(str_338)-1, +str_start_340= str_start_339+sizeof(str_339)-1, +str_start_341= str_start_340+sizeof(str_340)-1, +str_start_342= str_start_341+sizeof(str_341)-1, +str_start_343= str_start_342+sizeof(str_342)-1, +str_start_344= str_start_343+sizeof(str_343)-1, +str_start_345= str_start_344+sizeof(str_344)-1, +str_start_346= str_start_345+sizeof(str_345)-1, +str_start_347= str_start_346+sizeof(str_346)-1, +str_start_348= str_start_347+sizeof(str_347)-1, +str_start_349= str_start_348+sizeof(str_348)-1, +str_start_350= str_start_349+sizeof(str_349)-1, +str_start_351= str_start_350+sizeof(str_350)-1, +str_start_352= str_start_351+sizeof(str_351)-1, +str_start_353= str_start_352+sizeof(str_352)-1, +str_start_354= str_start_353+sizeof(str_353)-1, +str_start_355= str_start_354+sizeof(str_354)-1, +str_start_356= str_start_355+sizeof(str_355)-1, +str_start_357= str_start_356+sizeof(str_356)-1, +str_start_358= str_start_357+sizeof(str_357)-1, +str_start_359= str_start_358+sizeof(str_358)-1, +str_start_360= str_start_359+sizeof(str_359)-1, +str_start_361= str_start_360+sizeof(str_360)-1, +str_start_362= str_start_361+sizeof(str_361)-1, +str_start_363= str_start_362+sizeof(str_362)-1, +str_start_364= str_start_363+sizeof(str_363)-1, +str_start_365= str_start_364+sizeof(str_364)-1, +str_start_366= str_start_365+sizeof(str_365)-1, +str_start_367= str_start_366+sizeof(str_366)-1, +str_start_368= str_start_367+sizeof(str_367)-1, +str_start_369= str_start_368+sizeof(str_368)-1, +str_start_370= str_start_369+sizeof(str_369)-1, +str_start_371= str_start_370+sizeof(str_370)-1, +str_start_372= str_start_371+sizeof(str_371)-1, +str_start_373= str_start_372+sizeof(str_372)-1, +str_start_374= str_start_373+sizeof(str_373)-1, +str_start_375= str_start_374+sizeof(str_374)-1, +str_start_376= str_start_375+sizeof(str_375)-1, +str_start_377= str_start_376+sizeof(str_376)-1, +str_start_378= str_start_377+sizeof(str_377)-1, +str_start_379= str_start_378+sizeof(str_378)-1, +str_start_380= str_start_379+sizeof(str_379)-1, +str_start_381= str_start_380+sizeof(str_380)-1, +str_start_382= str_start_381+sizeof(str_381)-1, +str_start_383= str_start_382+sizeof(str_382)-1, +str_start_384= str_start_383+sizeof(str_383)-1, +str_start_385= str_start_384+sizeof(str_384)-1, +str_start_386= str_start_385+sizeof(str_385)-1, +str_start_387= str_start_386+sizeof(str_386)-1, +str_start_388= str_start_387+sizeof(str_387)-1, +str_start_389= str_start_388+sizeof(str_388)-1, +str_start_390= str_start_389+sizeof(str_389)-1, +str_start_391= str_start_390+sizeof(str_390)-1, +str_start_392= str_start_391+sizeof(str_391)-1, +str_start_393= str_start_392+sizeof(str_392)-1, +str_start_394= str_start_393+sizeof(str_393)-1, +str_start_395= str_start_394+sizeof(str_394)-1, +str_start_396= str_start_395+sizeof(str_395)-1, +str_start_397= str_start_396+sizeof(str_396)-1, +str_start_398= str_start_397+sizeof(str_397)-1, +str_start_399= str_start_398+sizeof(str_398)-1, +str_start_400= str_start_399+sizeof(str_399)-1, +str_start_401= str_start_400+sizeof(str_400)-1, +str_start_402= str_start_401+sizeof(str_401)-1, +str_start_403= str_start_402+sizeof(str_402)-1, +str_start_404= str_start_403+sizeof(str_403)-1, +str_start_405= str_start_404+sizeof(str_404)-1, +str_start_406= str_start_405+sizeof(str_405)-1, +str_start_407= str_start_406+sizeof(str_406)-1, +str_start_408= str_start_407+sizeof(str_407)-1, +str_start_409= str_start_408+sizeof(str_408)-1, +str_start_410= str_start_409+sizeof(str_409)-1, +str_start_411= str_start_410+sizeof(str_410)-1, +str_start_412= str_start_411+sizeof(str_411)-1, +str_start_413= str_start_412+sizeof(str_412)-1, +str_start_414= str_start_413+sizeof(str_413)-1, +str_start_415= str_start_414+sizeof(str_414)-1, +str_start_416= str_start_415+sizeof(str_415)-1, +str_start_417= str_start_416+sizeof(str_416)-1, +str_start_418= str_start_417+sizeof(str_417)-1, +str_start_419= str_start_418+sizeof(str_418)-1, +str_start_420= str_start_419+sizeof(str_419)-1, +str_start_421= str_start_420+sizeof(str_420)-1, +str_start_422= str_start_421+sizeof(str_421)-1, +str_start_423= str_start_422+sizeof(str_422)-1, +str_start_424= str_start_423+sizeof(str_423)-1, +str_start_425= str_start_424+sizeof(str_424)-1, +str_start_426= str_start_425+sizeof(str_425)-1, +str_start_427= str_start_426+sizeof(str_426)-1, +str_start_428= str_start_427+sizeof(str_427)-1, +str_start_429= str_start_428+sizeof(str_428)-1, +str_start_430= str_start_429+sizeof(str_429)-1, +str_start_431= str_start_430+sizeof(str_430)-1, +str_start_432= str_start_431+sizeof(str_431)-1, +str_start_433= str_start_432+sizeof(str_432)-1, +str_start_434= str_start_433+sizeof(str_433)-1, +str_start_435= str_start_434+sizeof(str_434)-1, +str_start_436= str_start_435+sizeof(str_435)-1, +str_start_437= str_start_436+sizeof(str_436)-1, +str_start_438= str_start_437+sizeof(str_437)-1, +str_start_439= str_start_438+sizeof(str_438)-1, +str_start_440= str_start_439+sizeof(str_439)-1, +str_start_441= str_start_440+sizeof(str_440)-1, +str_start_442= str_start_441+sizeof(str_441)-1, +str_start_443= str_start_442+sizeof(str_442)-1, +str_start_444= str_start_443+sizeof(str_443)-1, +str_start_445= str_start_444+sizeof(str_444)-1, +str_start_446= str_start_445+sizeof(str_445)-1, +str_start_447= str_start_446+sizeof(str_446)-1, +str_start_448= str_start_447+sizeof(str_447)-1, +str_start_449= str_start_448+sizeof(str_448)-1, +str_start_450= str_start_449+sizeof(str_449)-1, +str_start_451= str_start_450+sizeof(str_450)-1, +str_start_452= str_start_451+sizeof(str_451)-1, +str_start_453= str_start_452+sizeof(str_452)-1, +str_start_454= str_start_453+sizeof(str_453)-1, +str_start_455= str_start_454+sizeof(str_454)-1, +str_start_456= str_start_455+sizeof(str_455)-1, +str_start_457= str_start_456+sizeof(str_456)-1, +str_start_458= str_start_457+sizeof(str_457)-1, +str_start_459= str_start_458+sizeof(str_458)-1, +str_start_460= str_start_459+sizeof(str_459)-1, +str_start_461= str_start_460+sizeof(str_460)-1, +str_start_462= str_start_461+sizeof(str_461)-1, +str_start_463= str_start_462+sizeof(str_462)-1, +str_start_464= str_start_463+sizeof(str_463)-1, +str_start_465= str_start_464+sizeof(str_464)-1, +str_start_466= str_start_465+sizeof(str_465)-1, +str_start_467= str_start_466+sizeof(str_466)-1, +str_start_468= str_start_467+sizeof(str_467)-1, +str_start_469= str_start_468+sizeof(str_468)-1, +str_start_470= str_start_469+sizeof(str_469)-1, +str_start_471= str_start_470+sizeof(str_470)-1, +str_start_472= str_start_471+sizeof(str_471)-1, +str_start_473= str_start_472+sizeof(str_472)-1, +str_start_474= str_start_473+sizeof(str_473)-1, +str_start_475= str_start_474+sizeof(str_474)-1, +str_start_476= str_start_475+sizeof(str_475)-1, +str_start_477= str_start_476+sizeof(str_476)-1, +str_start_478= str_start_477+sizeof(str_477)-1, +str_start_479= str_start_478+sizeof(str_478)-1, +str_start_480= str_start_479+sizeof(str_479)-1, +str_start_481= str_start_480+sizeof(str_480)-1, +str_start_482= str_start_481+sizeof(str_481)-1, +str_start_483= str_start_482+sizeof(str_482)-1, +str_start_484= str_start_483+sizeof(str_483)-1, +str_start_485= str_start_484+sizeof(str_484)-1, +str_start_486= str_start_485+sizeof(str_485)-1, +str_start_487= str_start_486+sizeof(str_486)-1, +str_start_488= str_start_487+sizeof(str_487)-1, +str_start_489= str_start_488+sizeof(str_488)-1, +str_start_490= str_start_489+sizeof(str_489)-1, +str_start_491= str_start_490+sizeof(str_490)-1, +str_start_492= str_start_491+sizeof(str_491)-1, +str_start_493= str_start_492+sizeof(str_492)-1, +str_start_494= str_start_493+sizeof(str_493)-1, +str_start_495= str_start_494+sizeof(str_494)-1, +str_start_496= str_start_495+sizeof(str_495)-1, +str_start_497= str_start_496+sizeof(str_496)-1, +str_start_498= str_start_497+sizeof(str_497)-1, +str_start_499= str_start_498+sizeof(str_498)-1, +str_start_500= str_start_499+sizeof(str_499)-1, +str_start_501= str_start_500+sizeof(str_500)-1, +str_start_502= str_start_501+sizeof(str_501)-1, +str_start_503= str_start_502+sizeof(str_502)-1, +str_start_504= str_start_503+sizeof(str_503)-1, +str_start_505= str_start_504+sizeof(str_504)-1, +str_start_506= str_start_505+sizeof(str_505)-1, +str_start_507= str_start_506+sizeof(str_506)-1, +str_start_508= str_start_507+sizeof(str_507)-1, +str_start_509= str_start_508+sizeof(str_508)-1, +str_start_510= str_start_509+sizeof(str_509)-1, +str_start_511= str_start_510+sizeof(str_510)-1, +str_start_512= str_start_511+sizeof(str_511)-1, +str_start_513= str_start_512+sizeof(str_512)-1, +str_start_514= str_start_513+sizeof(str_513)-1, +str_start_515= str_start_514+sizeof(str_514)-1, +str_start_516= str_start_515+sizeof(str_515)-1, +str_start_517= str_start_516+sizeof(str_516)-1, +str_start_518= str_start_517+sizeof(str_517)-1, +str_start_519= str_start_518+sizeof(str_518)-1, +str_start_520= str_start_519+sizeof(str_519)-1, +str_start_521= str_start_520+sizeof(str_520)-1, +str_start_522= str_start_521+sizeof(str_521)-1, +str_start_523= str_start_522+sizeof(str_522)-1, +str_start_524= str_start_523+sizeof(str_523)-1, +str_start_525= str_start_524+sizeof(str_524)-1, +str_start_526= str_start_525+sizeof(str_525)-1, +str_start_527= str_start_526+sizeof(str_526)-1, +str_start_528= str_start_527+sizeof(str_527)-1, +str_start_529= str_start_528+sizeof(str_528)-1, +str_start_530= str_start_529+sizeof(str_529)-1, +str_start_531= str_start_530+sizeof(str_530)-1, +str_start_532= str_start_531+sizeof(str_531)-1, +str_start_533= str_start_532+sizeof(str_532)-1, +str_start_534= str_start_533+sizeof(str_533)-1, +str_start_535= str_start_534+sizeof(str_534)-1, +str_start_536= str_start_535+sizeof(str_535)-1, +str_start_537= str_start_536+sizeof(str_536)-1, +str_start_538= str_start_537+sizeof(str_537)-1, +str_start_539= str_start_538+sizeof(str_538)-1, +str_start_540= str_start_539+sizeof(str_539)-1, +str_start_541= str_start_540+sizeof(str_540)-1, +str_start_542= str_start_541+sizeof(str_541)-1, +str_start_543= str_start_542+sizeof(str_542)-1, +str_start_544= str_start_543+sizeof(str_543)-1, +str_start_545= str_start_544+sizeof(str_544)-1, +str_start_546= str_start_545+sizeof(str_545)-1, +str_start_547= str_start_546+sizeof(str_546)-1, +str_start_548= str_start_547+sizeof(str_547)-1, +str_start_549= str_start_548+sizeof(str_548)-1, +str_start_550= str_start_549+sizeof(str_549)-1, +str_start_551= str_start_550+sizeof(str_550)-1, +str_start_552= str_start_551+sizeof(str_551)-1, +str_start_553= str_start_552+sizeof(str_552)-1, +str_start_554= str_start_553+sizeof(str_553)-1, +str_start_555= str_start_554+sizeof(str_554)-1, +str_start_556= str_start_555+sizeof(str_555)-1, +str_start_557= str_start_556+sizeof(str_556)-1, +str_start_558= str_start_557+sizeof(str_557)-1, +str_start_559= str_start_558+sizeof(str_558)-1, +str_start_560= str_start_559+sizeof(str_559)-1, +str_start_561= str_start_560+sizeof(str_560)-1, +str_start_562= str_start_561+sizeof(str_561)-1, +str_start_563= str_start_562+sizeof(str_562)-1, +str_start_564= str_start_563+sizeof(str_563)-1, +str_start_565= str_start_564+sizeof(str_564)-1, +str_start_566= str_start_565+sizeof(str_565)-1, +str_start_567= str_start_566+sizeof(str_566)-1, +str_start_568= str_start_567+sizeof(str_567)-1, +str_start_569= str_start_568+sizeof(str_568)-1, +str_start_570= str_start_569+sizeof(str_569)-1, +str_start_571= str_start_570+sizeof(str_570)-1, +str_start_572= str_start_571+sizeof(str_571)-1, +str_start_573= str_start_572+sizeof(str_572)-1, +str_start_574= str_start_573+sizeof(str_573)-1, +str_start_575= str_start_574+sizeof(str_574)-1, +str_start_576= str_start_575+sizeof(str_575)-1, +str_start_577= str_start_576+sizeof(str_576)-1, +str_start_578= str_start_577+sizeof(str_577)-1, +str_start_579= str_start_578+sizeof(str_578)-1, +str_start_580= str_start_579+sizeof(str_579)-1, +str_start_581= str_start_580+sizeof(str_580)-1, +str_start_582= str_start_581+sizeof(str_581)-1, +str_start_583= str_start_582+sizeof(str_582)-1, +str_start_584= str_start_583+sizeof(str_583)-1, +str_start_585= str_start_584+sizeof(str_584)-1, +str_start_586= str_start_585+sizeof(str_585)-1, +str_start_587= str_start_586+sizeof(str_586)-1, +str_start_588= str_start_587+sizeof(str_587)-1, +str_start_589= str_start_588+sizeof(str_588)-1, +str_start_590= str_start_589+sizeof(str_589)-1, +str_start_591= str_start_590+sizeof(str_590)-1, +str_start_592= str_start_591+sizeof(str_591)-1, +str_start_593= str_start_592+sizeof(str_592)-1, +str_start_594= str_start_593+sizeof(str_593)-1, +str_start_595= str_start_594+sizeof(str_594)-1, +str_start_596= str_start_595+sizeof(str_595)-1, +str_start_597= str_start_596+sizeof(str_596)-1, +str_start_598= str_start_597+sizeof(str_597)-1, +str_start_599= str_start_598+sizeof(str_598)-1, +str_start_600= str_start_599+sizeof(str_599)-1, +str_start_601= str_start_600+sizeof(str_600)-1, +str_start_602= str_start_601+sizeof(str_601)-1, +str_start_603= str_start_602+sizeof(str_602)-1, +str_start_604= str_start_603+sizeof(str_603)-1, +str_start_605= str_start_604+sizeof(str_604)-1, +str_start_606= str_start_605+sizeof(str_605)-1, +str_start_607= str_start_606+sizeof(str_606)-1, +str_start_608= str_start_607+sizeof(str_607)-1, +str_start_609= str_start_608+sizeof(str_608)-1, +str_start_610= str_start_609+sizeof(str_609)-1, +str_start_611= str_start_610+sizeof(str_610)-1, +str_start_612= str_start_611+sizeof(str_611)-1, +str_start_613= str_start_612+sizeof(str_612)-1, +str_start_614= str_start_613+sizeof(str_613)-1, +str_start_615= str_start_614+sizeof(str_614)-1, +str_start_616= str_start_615+sizeof(str_615)-1, +str_start_617= str_start_616+sizeof(str_616)-1, +str_start_618= str_start_617+sizeof(str_617)-1, +str_start_619= str_start_618+sizeof(str_618)-1, +str_start_620= str_start_619+sizeof(str_619)-1, +str_start_621= str_start_620+sizeof(str_620)-1, +str_start_622= str_start_621+sizeof(str_621)-1, +str_start_623= str_start_622+sizeof(str_622)-1, +str_start_624= str_start_623+sizeof(str_623)-1, +str_start_625= str_start_624+sizeof(str_624)-1, +str_start_626= str_start_625+sizeof(str_625)-1, +str_start_627= str_start_626+sizeof(str_626)-1, +str_start_628= str_start_627+sizeof(str_627)-1, +str_start_629= str_start_628+sizeof(str_628)-1, +str_start_630= str_start_629+sizeof(str_629)-1, +str_start_631= str_start_630+sizeof(str_630)-1, +str_start_632= str_start_631+sizeof(str_631)-1, +str_start_633= str_start_632+sizeof(str_632)-1, +str_start_634= str_start_633+sizeof(str_633)-1, +str_start_635= str_start_634+sizeof(str_634)-1, +str_start_636= str_start_635+sizeof(str_635)-1, +str_start_637= str_start_636+sizeof(str_636)-1, +str_start_638= str_start_637+sizeof(str_637)-1, +str_start_639= str_start_638+sizeof(str_638)-1, +str_start_640= str_start_639+sizeof(str_639)-1, +str_start_641= str_start_640+sizeof(str_640)-1, +str_start_642= str_start_641+sizeof(str_641)-1, +str_start_643= str_start_642+sizeof(str_642)-1, +str_start_644= str_start_643+sizeof(str_643)-1, +str_start_645= str_start_644+sizeof(str_644)-1, +str_start_646= str_start_645+sizeof(str_645)-1, +str_start_647= str_start_646+sizeof(str_646)-1, +str_start_648= str_start_647+sizeof(str_647)-1, +str_start_649= str_start_648+sizeof(str_648)-1, +str_start_650= str_start_649+sizeof(str_649)-1, +str_start_651= str_start_650+sizeof(str_650)-1, +str_start_652= str_start_651+sizeof(str_651)-1, +str_start_653= str_start_652+sizeof(str_652)-1, +str_start_654= str_start_653+sizeof(str_653)-1, +str_start_655= str_start_654+sizeof(str_654)-1, +str_start_656= str_start_655+sizeof(str_655)-1, +str_start_657= str_start_656+sizeof(str_656)-1, +str_start_658= str_start_657+sizeof(str_657)-1, +str_start_659= str_start_658+sizeof(str_658)-1, +str_start_660= str_start_659+sizeof(str_659)-1, +str_start_661= str_start_660+sizeof(str_660)-1, +str_start_662= str_start_661+sizeof(str_661)-1, +str_start_663= str_start_662+sizeof(str_662)-1, +str_start_664= str_start_663+sizeof(str_663)-1, +str_start_665= str_start_664+sizeof(str_664)-1, +str_start_666= str_start_665+sizeof(str_665)-1, +str_start_667= str_start_666+sizeof(str_666)-1, +str_start_668= str_start_667+sizeof(str_667)-1, +str_start_end}str_starts; + +/*:1795*/ +#line 1138 "tex.w" + +packed_ASCII_code str_pool[pool_size+1]= /*1793:*/ +#line 26275 "tex.w" + +str_0_255 +str_256 str_257 str_258 str_259 str_260 str_261 str_262 str_263 +str_264 str_265 str_266 str_267 str_268 str_269 str_270 str_271 +str_272 str_273 str_274 str_275 str_276 str_277 str_278 str_279 +str_280 str_281 str_282 str_283 str_284 str_285 str_286 str_287 +str_288 str_289 str_290 str_291 str_292 str_293 str_294 str_295 +str_296 str_297 str_298 str_299 str_300 str_301 str_302 str_303 +str_304 str_305 str_306 str_307 str_308 str_309 str_310 str_311 +str_312 str_313 str_314 str_315 str_316 str_317 str_318 str_319 +str_320 str_321 str_322 str_323 str_324 str_325 str_326 str_327 +str_328 str_329 str_330 str_331 str_332 str_333 str_334 str_335 +str_336 str_337 str_338 str_339 str_340 str_341 str_342 str_343 +str_344 str_345 str_346 str_347 str_348 str_349 str_350 str_351 +str_352 str_353 str_354 str_355 str_356 str_357 str_358 str_359 +str_360 str_361 str_362 str_363 str_364 str_365 str_366 str_367 +str_368 str_369 str_370 str_371 str_372 str_373 str_374 str_375 +str_376 str_377 str_378 str_379 str_380 str_381 str_382 str_383 +str_384 str_385 str_386 str_387 str_388 str_389 str_390 str_391 +str_392 str_393 str_394 str_395 str_396 str_397 str_398 str_399 +str_400 str_401 str_402 str_403 str_404 str_405 str_406 str_407 +str_408 str_409 str_410 str_411 str_412 str_413 str_414 str_415 +str_416 str_417 str_418 str_419 str_420 str_421 str_422 str_423 +str_424 str_425 str_426 str_427 str_428 str_429 str_430 str_431 +str_432 str_433 str_434 str_435 str_436 str_437 str_438 str_439 +str_440 str_441 str_442 str_443 str_444 str_445 str_446 str_447 +str_448 str_449 str_450 str_451 str_452 str_453 str_454 str_455 +str_456 str_457 str_458 str_459 str_460 str_461 str_462 str_463 +str_464 str_465 str_466 str_467 str_468 str_469 str_470 str_471 +str_472 str_473 str_474 str_475 str_476 str_477 str_478 str_479 +str_480 str_481 str_482 str_483 str_484 str_485 str_486 str_487 +str_488 str_489 str_490 str_491 str_492 str_493 str_494 str_495 +str_496 str_497 str_498 str_499 str_500 str_501 str_502 str_503 +str_504 str_505 str_506 str_507 str_508 str_509 str_510 str_511 +str_512 str_513 str_514 str_515 str_516 str_517 str_518 str_519 +str_520 str_521 str_522 str_523 str_524 str_525 str_526 str_527 +str_528 str_529 str_530 str_531 str_532 str_533 str_534 str_535 +str_536 str_537 str_538 str_539 str_540 str_541 str_542 str_543 +str_544 str_545 str_546 str_547 str_548 str_549 str_550 str_551 +str_552 str_553 str_554 str_555 str_556 str_557 str_558 str_559 +str_560 str_561 str_562 str_563 str_564 str_565 str_566 str_567 +str_568 str_569 str_570 str_571 str_572 str_573 str_574 str_575 +str_576 str_577 str_578 str_579 str_580 str_581 str_582 str_583 +str_584 str_585 str_586 str_587 str_588 str_589 str_590 str_591 +str_592 str_593 str_594 str_595 str_596 str_597 str_598 str_599 +str_600 str_601 str_602 str_603 str_604 str_605 str_606 str_607 +str_608 str_609 str_610 str_611 str_612 str_613 str_614 str_615 +str_616 str_617 str_618 str_619 str_620 str_621 str_622 str_623 +str_624 str_625 str_626 str_627 str_628 str_629 str_630 str_631 +str_632 str_633 str_634 str_635 str_636 str_637 str_638 str_639 +str_640 str_641 str_642 str_643 str_644 str_645 str_646 str_647 +str_648 str_649 str_650 str_651 str_652 str_653 str_654 str_655 +str_656 str_657 str_658 str_659 str_660 str_661 str_662 str_663 +str_664 str_665 str_666 str_667 + +/*:1793*/ +#line 1139 "tex.w" +; +pool_pointer str_start[max_strings+1]= {/*1794:*/ +#line 26330 "tex.w" + +str_start_0_255 +str_start_256,str_start_257,str_start_258,str_start_259, +str_start_260,str_start_261,str_start_262,str_start_263, +str_start_264,str_start_265,str_start_266,str_start_267, +str_start_268,str_start_269,str_start_270,str_start_271, +str_start_272,str_start_273,str_start_274,str_start_275, +str_start_276,str_start_277,str_start_278,str_start_279, +str_start_280,str_start_281,str_start_282,str_start_283, +str_start_284,str_start_285,str_start_286,str_start_287, +str_start_288,str_start_289,str_start_290,str_start_291, +str_start_292,str_start_293,str_start_294,str_start_295, +str_start_296,str_start_297,str_start_298,str_start_299, +str_start_300,str_start_301,str_start_302,str_start_303, +str_start_304,str_start_305,str_start_306,str_start_307, +str_start_308,str_start_309,str_start_310,str_start_311, +str_start_312,str_start_313,str_start_314,str_start_315, +str_start_316,str_start_317,str_start_318,str_start_319, +str_start_320,str_start_321,str_start_322,str_start_323, +str_start_324,str_start_325,str_start_326,str_start_327, +str_start_328,str_start_329,str_start_330,str_start_331, +str_start_332,str_start_333,str_start_334,str_start_335, +str_start_336,str_start_337,str_start_338,str_start_339, +str_start_340,str_start_341,str_start_342,str_start_343, +str_start_344,str_start_345,str_start_346,str_start_347, +str_start_348,str_start_349,str_start_350,str_start_351, +str_start_352,str_start_353,str_start_354,str_start_355, +str_start_356,str_start_357,str_start_358,str_start_359, +str_start_360,str_start_361,str_start_362,str_start_363, +str_start_364,str_start_365,str_start_366,str_start_367, +str_start_368,str_start_369,str_start_370,str_start_371, +str_start_372,str_start_373,str_start_374,str_start_375, +str_start_376,str_start_377,str_start_378,str_start_379, +str_start_380,str_start_381,str_start_382,str_start_383, +str_start_384,str_start_385,str_start_386,str_start_387, +str_start_388,str_start_389,str_start_390,str_start_391, +str_start_392,str_start_393,str_start_394,str_start_395, +str_start_396,str_start_397,str_start_398,str_start_399, +str_start_400,str_start_401,str_start_402,str_start_403, +str_start_404,str_start_405,str_start_406,str_start_407, +str_start_408,str_start_409,str_start_410,str_start_411, +str_start_412,str_start_413,str_start_414,str_start_415, +str_start_416,str_start_417,str_start_418,str_start_419, +str_start_420,str_start_421,str_start_422,str_start_423, +str_start_424,str_start_425,str_start_426,str_start_427, +str_start_428,str_start_429,str_start_430,str_start_431, +str_start_432,str_start_433,str_start_434,str_start_435, +str_start_436,str_start_437,str_start_438,str_start_439, +str_start_440,str_start_441,str_start_442,str_start_443, +str_start_444,str_start_445,str_start_446,str_start_447, +str_start_448,str_start_449,str_start_450,str_start_451, +str_start_452,str_start_453,str_start_454,str_start_455, +str_start_456,str_start_457,str_start_458,str_start_459, +str_start_460,str_start_461,str_start_462,str_start_463, +str_start_464,str_start_465,str_start_466,str_start_467, +str_start_468,str_start_469,str_start_470,str_start_471, +str_start_472,str_start_473,str_start_474,str_start_475, +str_start_476,str_start_477,str_start_478,str_start_479, +str_start_480,str_start_481,str_start_482,str_start_483, +str_start_484,str_start_485,str_start_486,str_start_487, +str_start_488,str_start_489,str_start_490,str_start_491, +str_start_492,str_start_493,str_start_494,str_start_495, +str_start_496,str_start_497,str_start_498,str_start_499, +str_start_500,str_start_501,str_start_502,str_start_503, +str_start_504,str_start_505,str_start_506,str_start_507, +str_start_508,str_start_509,str_start_510,str_start_511, +str_start_512,str_start_513,str_start_514,str_start_515, +str_start_516,str_start_517,str_start_518,str_start_519, +str_start_520,str_start_521,str_start_522,str_start_523, +str_start_524,str_start_525,str_start_526,str_start_527, +str_start_528,str_start_529,str_start_530,str_start_531, +str_start_532,str_start_533,str_start_534,str_start_535, +str_start_536,str_start_537,str_start_538,str_start_539, +str_start_540,str_start_541,str_start_542,str_start_543, +str_start_544,str_start_545,str_start_546,str_start_547, +str_start_548,str_start_549,str_start_550,str_start_551, +str_start_552,str_start_553,str_start_554,str_start_555, +str_start_556,str_start_557,str_start_558,str_start_559, +str_start_560,str_start_561,str_start_562,str_start_563, +str_start_564,str_start_565,str_start_566,str_start_567, +str_start_568,str_start_569,str_start_570,str_start_571, +str_start_572,str_start_573,str_start_574,str_start_575, +str_start_576,str_start_577,str_start_578,str_start_579, +str_start_580,str_start_581,str_start_582,str_start_583, +str_start_584,str_start_585,str_start_586,str_start_587, +str_start_588,str_start_589,str_start_590,str_start_591, +str_start_592,str_start_593,str_start_594,str_start_595, +str_start_596,str_start_597,str_start_598,str_start_599, +str_start_600,str_start_601,str_start_602,str_start_603, +str_start_604,str_start_605,str_start_606,str_start_607, +str_start_608,str_start_609,str_start_610,str_start_611, +str_start_612,str_start_613,str_start_614,str_start_615, +str_start_616,str_start_617,str_start_618,str_start_619, +str_start_620,str_start_621,str_start_622,str_start_623, +str_start_624,str_start_625,str_start_626,str_start_627, +str_start_628,str_start_629,str_start_630,str_start_631, +str_start_632,str_start_633,str_start_634,str_start_635, +str_start_636,str_start_637,str_start_638,str_start_639, +str_start_640,str_start_641,str_start_642,str_start_643, +str_start_644,str_start_645,str_start_646,str_start_647, +str_start_648,str_start_649,str_start_650,str_start_651, +str_start_652,str_start_653,str_start_654,str_start_655, +str_start_656,str_start_657,str_start_658,str_start_659, +str_start_660,str_start_661,str_start_662,str_start_663, +str_start_664,str_start_665,str_start_666,str_start_667, +str_start_668 + +/*:1794*/ +#line 1140 "tex.w" +}; +pool_pointer pool_ptr= /*1796:*/ +#line 26855 "tex.w" +str_start_668 + +/*:1796*/ +#line 1141 "tex.w" +; +str_number str_ptr= /*1797:*/ +#line 26857 "tex.w" +668 + +/*:1797*/ +#line 1142 "tex.w" +; +pool_pointer init_pool_ptr; +str_number init_str_ptr; + +/*:39*//*50:*/ +#line 1316 "tex.w" + +#ifdef INIT +alpha_file pool_file; +#endif + +/*:50*//*54:*/ +#line 1424 "tex.w" + +alpha_file log_file; +uint8_t selector; +uint8_t dig[23]; +int tally; +uint8_t term_offset; + +uint8_t file_offset; + +ASCII_code trick_buf[error_line+1]; + +int trick_count; +int first_count; + +/*:54*//*73:*/ +#line 1770 "tex.w" + +uint8_t interaction; + +/*:73*//*76:*/ +#line 1811 "tex.w" + +bool deletions_allowed; +bool set_box_allowed; +uint8_t history; +int8_t error_count; + + +/*:76*//*79:*/ +#line 1870 "tex.w" + +char*help_line[6]; +uint8_t help_ptr; +bool use_err_help; + +/*:79*//*96:*/ +#line 2135 "tex.w" + +int interrupt; +bool OK_to_interrupt; + +/*:96*//*104:*/ +#line 2268 "tex.w" + +bool arith_error; +scaled rem; + +/*:104*//*115:*/ +#line 2557 "tex.w" + +pointer temp_ptr; + +/*:115*//*116:*/ +#line 2589 "tex.w" + +memory_word mem0[mem_max-mem_min+1],*const mem= mem0-mem_min; +pointer lo_mem_max; +pointer hi_mem_min; + +/*:116*//*117:*/ +#line 2602 "tex.w" + +int var_used,dyn_used; +#ifdef DEBUG +#define incr_dyn_used incr(dyn_used) +#define decr_dyn_used decr(dyn_used) +#else +#define incr_dyn_used +#define decr_dyn_used +#endif + +/*:117*//*118:*/ +#line 2625 "tex.w" + +pointer avail; +pointer mem_end; + +/*:118*//*124:*/ +#line 2725 "tex.w" + +pointer rover; + +/*:124*//*165:*/ +#line 3428 "tex.w" + +#ifdef DEBUG +bool is_free0[mem_max-mem_min+1],*const is_free= is_free0-mem_min; +bool was_free0[mem_max-mem_min+1],*const was_free= was_free0-mem_min; + +pointer was_mem_end,was_lo_max,was_hi_min; + +bool panicking; +#endif + +/*:165*//*173:*/ +#line 3582 "tex.w" + +int font_in_short_display; + +/*:173*//*181:*/ +#line 3710 "tex.w" + +int depth_threshold; +int breadth_max; + +/*:181*//*213:*/ +#line 4387 "tex.w" + +list_state_record nest[nest_size+1]; +uint8_t nest_ptr; +uint8_t max_nest_stack; +list_state_record cur_list; +int16_t shown_mode; + +/*:213*//*246:*/ +#line 5336 "tex.w" + +uint8_t old_setting; + +/*:246*//*253:*/ +#line 5502 "tex.w" + +memory_word eqtb0[eqtb_size-active_base+1],*const eqtb= eqtb0-active_base; +quarterword xeq_level0[eqtb_size-int_base+1],*const xeq_level= xeq_level0-int_base; + +/*:253*//*256:*/ +#line 5550 "tex.w" + +two_halves hash0[undefined_control_sequence-hash_base],*const hash= hash0-hash_base; + +pointer hash_used; +bool no_new_control_sequence; +int cs_count; + +/*:256*//*271:*/ +#line 5943 "tex.w" + +memory_word save_stack[save_size+1]; +uint16_t save_ptr; +uint16_t max_save_stack; +quarterword cur_level; +group_code cur_group; +uint16_t cur_boundary; + +/*:271*//*286:*/ +#line 6185 "tex.w" + +int mag_set; + +/*:286*//*297:*/ +#line 6443 "tex.w" + +eight_bits cur_cmd; +halfword cur_chr; +pointer cur_cs; +halfword cur_tok; + +/*:297*//*301:*/ +#line 6520 "tex.w" + +in_state_record input_stack[stack_size+1]; +uint8_t input_ptr; +uint8_t max_in_stack; +in_state_record cur_input; + + +/*:301*//*304:*/ +#line 6622 "tex.w" + +uint8_t in_open; +uint8_t open_parens; +alpha_file input_file0[max_in_open],*const input_file= input_file0-1; +int line; +int line_stack0[max_in_open],*const line_stack= line_stack0-1; + +/*:304*//*305:*/ +#line 6665 "tex.w" + +uint8_t scanner_status; +pointer warning_index; +pointer def_ref; + +/*:305*//*308:*/ +#line 6789 "tex.w" + +pointer param_stack[param_size+1]; + +uint8_t param_ptr; +int max_param_stack; + + +/*:308*//*309:*/ +#line 6806 "tex.w" + +int align_state; + +/*:309*//*310:*/ +#line 6817 "tex.w" + +uint8_t base_ptr; + +/*:310*//*333:*/ +#line 7194 "tex.w" + +pointer par_loc; +halfword par_token; + +/*:333*//*361:*/ +#line 7611 "tex.w" + +bool force_eof; + +/*:361*//*382:*/ +#line 7925 "tex.w" + +pointer cur_mark0[split_bot_mark_code-top_mark_code+1],*const cur_mark= cur_mark0-top_mark_code; + + +/*:382*//*387:*/ +#line 7974 "tex.w" + +uint8_t long_state; + +/*:387*//*388:*/ +#line 7985 "tex.w" + +pointer pstack[9]; + +/*:388*//*410:*/ +#line 8369 "tex.w" + +int cur_val; +uint8_t cur_val_level; + +/*:410*//*438:*/ +#line 8740 "tex.w" + +small_number radix; + +/*:438*//*447:*/ +#line 8875 "tex.w" + +glue_ord cur_order; + +/*:447*//*480:*/ +#line 9482 "tex.w" + +alpha_file read_file[16]; +uint8_t read_open[17]; + +/*:480*//*489:*/ +#line 9669 "tex.w" + +pointer cond_ptr; +uint8_t if_limit; +small_number cur_if; +int if_line; + +/*:489*//*493:*/ +#line 9695 "tex.w" + +int skip_line; + +/*:493*//*512:*/ +#line 10022 "tex.w" + +str_number cur_name; +str_number cur_area; +str_number cur_ext; + +/*:512*//*513:*/ +#line 10038 "tex.w" + +pool_pointer area_delimiter; +pool_pointer ext_delimiter; + +/*:513*//*520:*/ +#line 10138 "tex.w" + +ASCII_code TEX_format_default[1+format_default_length+1]= " TeXformats/plain.fmt"; + + + + +/*:520*//*526:*/ +#line 10269 "tex.w" + +bool name_in_progress; +str_number job_name; +bool log_opened; + +/*:526*//*532:*/ +#line 10342 "tex.w" + +byte_file dvi_file; +str_number output_file_name; +str_number log_name; + +/*:532*//*539:*/ +#line 10465 "tex.w" + +byte_file tfm_file; + +/*:539*//*549:*/ +#line 10752 "tex.w" + +memory_word font_info[font_mem_size+1]; + +font_index fmem_ptr; +internal_font_number font_ptr; +four_quarters font_check0[font_max-font_base+1],*const font_check= font_check0-font_base; +scaled font_size0[font_max-font_base+1],*const font_size= font_size0-font_base; +scaled font_dsize0[font_max-font_base+1],*const font_dsize= font_dsize0-font_base; +font_index font_params0[font_max-font_base+1],*const font_params= font_params0-font_base; + +str_number font_name0[font_max-font_base+1],*const font_name= font_name0-font_base; +str_number font_area0[font_max-font_base+1],*const font_area= font_area0-font_base; +eight_bits font_bc0[font_max-font_base+1],*const font_bc= font_bc0-font_base; + +eight_bits font_ec0[font_max-font_base+1],*const font_ec= font_ec0-font_base; + +pointer font_glue0[font_max-font_base+1],*const font_glue= font_glue0-font_base; + +bool font_used0[font_max-font_base+1],*const font_used= font_used0-font_base; + +int hyphen_char0[font_max-font_base+1],*const hyphen_char= hyphen_char0-font_base; + +int skew_char0[font_max-font_base+1],*const skew_char= skew_char0-font_base; + +font_index bchar_label0[font_max-font_base+1],*const bchar_label= bchar_label0-font_base; + + +uint16_t font_bchar0[font_max-font_base+1],*const font_bchar= font_bchar0-font_base; + +uint16_t font_false_bchar0[font_max-font_base+1],*const font_false_bchar= font_false_bchar0-font_base; + + +/*:549*//*550:*/ +#line 10793 "tex.w" + +int char_base0[font_max-font_base+1],*const char_base= char_base0-font_base; + +int width_base0[font_max-font_base+1],*const width_base= width_base0-font_base; + +int height_base0[font_max-font_base+1],*const height_base= height_base0-font_base; + +int depth_base0[font_max-font_base+1],*const depth_base= depth_base0-font_base; + +int italic_base0[font_max-font_base+1],*const italic_base= italic_base0-font_base; + +int lig_kern_base0[font_max-font_base+1],*const lig_kern_base= lig_kern_base0-font_base; + +int kern_base0[font_max-font_base+1],*const kern_base= kern_base0-font_base; + +int exten_base0[font_max-font_base+1],*const exten_base= exten_base0-font_base; + +int param_base0[font_max-font_base+1],*const param_base= param_base0-font_base; + + +/*:550*//*555:*/ +#line 10887 "tex.w" + +four_quarters null_character; + +/*:555*//*592:*/ +#line 11882 "tex.w" + +int total_pages; +scaled max_v; +scaled max_h; +int max_push; +int last_bop; +int dead_cycles; +bool doing_leaders; + +quarterword c,f; +scaled rule_ht,rule_dp,rule_wd; +pointer g; +int lq,lr; + +/*:592*//*595:*/ +#line 11930 "tex.w" + +eight_bits dvi_buf[dvi_buf_size+1]; +dvi_index half_buf; +dvi_index dvi_limit; +dvi_index dvi_ptr; +int dvi_offset; + +int dvi_gone; + +/*:595*//*605:*/ +#line 12095 "tex.w" + +pointer down_ptr,right_ptr; + +/*:605*//*616:*/ +#line 12317 "tex.w" + +scaled dvi_h,dvi_v; +scaled cur_h,cur_v; +internal_font_number dvi_f; +int cur_s; + +/*:616*//*646:*/ +#line 12921 "tex.w" + +scaled total_stretch0[filll-normal+1],*const total_stretch= total_stretch0-normal,total_shrink0[filll-normal+1],*const total_shrink= total_shrink0-normal; + +int last_badness; + +/*:646*//*647:*/ +#line 12931 "tex.w" + +pointer adjust_tail; + +/*:647*//*661:*/ +#line 13105 "tex.w" + +int pack_begin_line; + + +/*:661*//*684:*/ +#line 13522 "tex.w" + +two_halves empty_field; +four_quarters null_delimiter; + +/*:684*//*719:*/ +#line 14174 "tex.w" + +pointer cur_mlist; +small_number cur_style; +small_number cur_size; +scaled cur_mu; +bool mlist_penalties; + +/*:719*//*724:*/ +#line 14264 "tex.w" + +internal_font_number cur_f; +quarterword cur_c; +four_quarters cur_i; + + +/*:724*//*764:*/ +#line 15075 "tex.w" + +int magic_offset; + +/*:764*//*770:*/ +#line 15276 "tex.w" + +pointer cur_align; +pointer cur_span; +pointer cur_loop; +pointer align_ptr; +pointer cur_head,cur_tail; + +/*:770*//*814:*/ +#line 16049 "tex.w" + +pointer just_box; + +/*:814*//*821:*/ +#line 16192 "tex.w" + +pointer passive; +pointer printed_node; +halfword pass_number; + +/*:821*//*823:*/ +#line 16231 "tex.w" + +scaled active_width0[6],*const active_width= active_width0-1; + +scaled cur_active_width0[6],*const cur_active_width= cur_active_width0-1; +scaled background0[6],*const background= background0-1; +scaled break_width0[6],*const break_width= break_width0-1; + +/*:823*//*825:*/ +#line 16288 "tex.w" + +bool no_shrink_error_yet; + +/*:825*//*828:*/ +#line 16340 "tex.w" + +pointer cur_p; +bool second_pass; +bool final_pass; +int threshold; + +/*:828*//*833:*/ +#line 16441 "tex.w" + +int minimal_demerits0[tight_fit-very_loose_fit+1],*const minimal_demerits= minimal_demerits0-very_loose_fit; + +int minimum_demerits; + +pointer best_place0[tight_fit-very_loose_fit+1],*const best_place= best_place0-very_loose_fit; + +halfword best_pl_line0[tight_fit-very_loose_fit+1],*const best_pl_line= best_pl_line0-very_loose_fit; + + +/*:833*//*839:*/ +#line 16559 "tex.w" + +scaled disc_width; + +/*:839*//*847:*/ +#line 16699 "tex.w" + +halfword easy_line; +halfword last_special_line; + +scaled first_width; + +scaled second_width; +scaled first_indent; +scaled second_indent; + +/*:847*//*872:*/ +#line 17210 "tex.w" + +pointer best_bet; +int fewest_demerits; +halfword best_line; +int actual_looseness; + +int line_diff; + + +/*:872*//*892:*/ +#line 17544 "tex.w" + +uint16_t hc[66]; +small_number hn; +pointer ha,hb; +internal_font_number hf; +uint16_t hu[64]; +int hyf_char; +ASCII_code cur_lang,init_cur_lang; +int l_hyf,r_hyf,init_l_hyf,init_r_hyf; +halfword hyf_bchar; + +/*:892*//*900:*/ +#line 17677 "tex.w" + +uint8_t hyf[65]; +pointer init_list; +bool init_lig; +bool init_lft; + +/*:900*//*905:*/ +#line 17801 "tex.w" + +small_number hyphen_passed; + +/*:905*//*907:*/ +#line 17842 "tex.w" + +halfword cur_l,cur_r; +pointer cur_q; +pointer lig_stack; +bool ligature_present; +bool lft_hit,rt_hit; + +/*:907*//*921:*/ +#line 18145 "tex.w" + +two_halves trie[trie_size+1]; +small_number hyf_distance0[trie_op_size],*const hyf_distance= hyf_distance0-1; +small_number hyf_num0[trie_op_size],*const hyf_num= hyf_num0-1; +quarterword hyf_next0[trie_op_size],*const hyf_next= hyf_next0-1; +uint16_t op_start[256]; + +/*:921*//*926:*/ +#line 18207 "tex.w" + +str_number hyph_word[hyph_size+1]; +pointer hyph_list[hyph_size+1]; +hyph_pointer hyph_count; + +/*:926*//*943:*/ +#line 18416 "tex.w" + +#ifdef INIT +uint16_t trie_op_hash0[trie_op_size+trie_op_size+1],*const trie_op_hash= trie_op_hash0+trie_op_size; + +quarterword trie_used[256]; + +ASCII_code trie_op_lang0[trie_op_size],*const trie_op_lang= trie_op_lang0-1; + +quarterword trie_op_val0[trie_op_size],*const trie_op_val= trie_op_val0-1; + +uint16_t trie_op_ptr; +#endif + +/*:943*//*947:*/ +#line 18509 "tex.w" + +#ifdef INIT +packed_ASCII_code trie_c[trie_size+1]; + +quarterword trie_o[trie_size+1]; + +trie_pointer trie_l[trie_size+1]; + +trie_pointer trie_r[trie_size+1]; + +trie_pointer trie_ptr; +trie_pointer trie_hash[trie_size+1]; + +#endif + +/*:947*//*950:*/ +#line 18596 "tex.w" + +#ifdef INIT +bool trie_taken0[trie_size],*const trie_taken= trie_taken0-1; + +trie_pointer trie_min[256]; + +trie_pointer trie_max; +bool trie_not_ready; +#endif + +/*:950*//*971:*/ +#line 18955 "tex.w" + +scaled best_height_plus_depth; + + +/*:971*//*980:*/ +#line 19162 "tex.w" + +pointer page_tail; +uint8_t page_contents; +scaled page_max_depth; +pointer best_page_break; +int least_page_cost; +scaled best_size; + +/*:980*//*982:*/ +#line 19244 "tex.w" + +scaled page_so_far[8]; +pointer last_glue; +int last_penalty; +scaled last_kern; +int insert_penalties; + +/*:982*//*989:*/ +#line 19378 "tex.w" + +bool output_active; + +/*:989*//*1032:*/ +#line 20098 "tex.w" + +internal_font_number main_f; +four_quarters main_i; +four_quarters main_j; +font_index main_k; +pointer main_p; +int main_s; +halfword bchar; +halfword false_bchar; +bool cancel_boundary; +bool ins_disc; + +/*:1032*//*1074:*/ +#line 20871 "tex.w" + +pointer cur_box; + +/*:1074*//*1266:*/ +#line 23457 "tex.w" + +halfword after_token; + +/*:1266*//*1281:*/ +#line 23560 "tex.w" + +bool long_help_seen; + +/*:1281*//*1299:*/ +#line 23746 "tex.w" + +str_number format_ident; + +/*:1299*//*1305:*/ +#line 23827 "tex.w" + +word_file fmt_file; + +/*:1305*//*1331:*/ +#line 24280 "tex.w" + +int ready_already; + +/*:1331*//*1342:*/ +#line 24612 "tex.w" + +alpha_file write_file[16]; +bool write_open[18]; + +/*:1342*//*1345:*/ +#line 24643 "tex.w" + +pointer write_loc; + +/*:1345*/ +#line 266 "tex.w" + + +void initialize(void) +{/*19:*/ +#line 572 "tex.w" + +int i; + +/*:19*//*163:*/ +#line 3387 "tex.w" + +int k; + +/*:163*//*927:*/ +#line 18212 "tex.w" + +hyph_pointer z; + +/*:927*/ +#line 269 "tex.w" + +/*8:*/ +#line 315 "tex.w" + +/*21:*/ +#line 594 "tex.w" + +xchr[040]= ' '; +xchr[041]= '!'; +xchr[042]= '"'; +xchr[043]= '#'; +xchr[044]= '$'; +xchr[045]= '%'; +xchr[046]= '&'; +xchr[047]= '\''; +xchr[050]= '('; +xchr[051]= ')'; +xchr[052]= '*'; +xchr[053]= '+'; +xchr[054]= ','; +xchr[055]= '-'; +xchr[056]= '.'; +xchr[057]= '/'; +xchr[060]= '0'; +xchr[061]= '1'; +xchr[062]= '2'; +xchr[063]= '3'; +xchr[064]= '4'; +xchr[065]= '5'; +xchr[066]= '6'; +xchr[067]= '7'; +xchr[070]= '8'; +xchr[071]= '9'; +xchr[072]= ':'; +xchr[073]= ';'; +xchr[074]= '<'; +xchr[075]= '='; +xchr[076]= '>'; +xchr[077]= '?'; +xchr[0100]= '@'; +xchr[0101]= 'A'; +xchr[0102]= 'B'; +xchr[0103]= 'C'; +xchr[0104]= 'D'; +xchr[0105]= 'E'; +xchr[0106]= 'F'; +xchr[0107]= 'G'; +xchr[0110]= 'H'; +xchr[0111]= 'I'; +xchr[0112]= 'J'; +xchr[0113]= 'K'; +xchr[0114]= 'L'; +xchr[0115]= 'M'; +xchr[0116]= 'N'; +xchr[0117]= 'O'; +xchr[0120]= 'P'; +xchr[0121]= 'Q'; +xchr[0122]= 'R'; +xchr[0123]= 'S'; +xchr[0124]= 'T'; +xchr[0125]= 'U'; +xchr[0126]= 'V'; +xchr[0127]= 'W'; +xchr[0130]= 'X'; +xchr[0131]= 'Y'; +xchr[0132]= 'Z'; +xchr[0133]= '['; +xchr[0134]= '\\'; +xchr[0135]= ']'; +xchr[0136]= '^'; +xchr[0137]= '_'; +xchr[0140]= '`'; +xchr[0141]= 'a'; +xchr[0142]= 'b'; +xchr[0143]= 'c'; +xchr[0144]= 'd'; +xchr[0145]= 'e'; +xchr[0146]= 'f'; +xchr[0147]= 'g'; +xchr[0150]= 'h'; +xchr[0151]= 'i'; +xchr[0152]= 'j'; +xchr[0153]= 'k'; +xchr[0154]= 'l'; +xchr[0155]= 'm'; +xchr[0156]= 'n'; +xchr[0157]= 'o'; +xchr[0160]= 'p'; +xchr[0161]= 'q'; +xchr[0162]= 'r'; +xchr[0163]= 's'; +xchr[0164]= 't'; +xchr[0165]= 'u'; +xchr[0166]= 'v'; +xchr[0167]= 'w'; +xchr[0170]= 'x'; +xchr[0171]= 'y'; +xchr[0172]= 'z'; +xchr[0173]= '{'; +xchr[0174]= '|'; +xchr[0175]= '}'; +xchr[0176]= '~'; + +/*:21*//*23:*/ +#line 725 "tex.w" + +for(i= 0;i<=037;i++)xchr[i]= ' '; +for(i= 0177;i<=0377;i++)xchr[i]= ' '; + +/*:23*//*24:*/ +#line 735 "tex.w" + +for(i= first_text_char;i<=last_text_char;i++)xord[chr(i)]= invalid_code; +for(i= 0200;i<=0377;i++)xord[xchr[i]]= i; +for(i= 0;i<=0176;i++)xord[xchr[i]]= i; + +/*:24*//*74:*/ +#line 1773 "tex.w" +interaction= error_stop_mode; + +/*:74*//*77:*/ +#line 1821 "tex.w" + +deletions_allowed= true;set_box_allowed= true; +error_count= 0; + +/*:77*//*80:*/ +#line 1875 "tex.w" + +help_ptr= 0;use_err_help= false; + +/*:80*//*97:*/ +#line 2139 "tex.w" + +interrupt= 0;OK_to_interrupt= true; + +/*:97*//*166:*/ +#line 3438 "tex.w" + +#ifdef DEBUG +was_mem_end= mem_min; +was_lo_max= mem_min;was_hi_min= mem_max; +panicking= false; +#endif + +/*:166*//*215:*/ +#line 4407 "tex.w" + +nest_ptr= 0;max_nest_stack= 0; +mode= vmode;head= contrib_head;tail= contrib_head; +prev_depth= ignore_depth;mode_line= 0; +prev_graf= 0;shown_mode= 0; +/*991:*/ +#line 19388 "tex.w" + +page_contents= empty;page_tail= page_head;link(page_head)= null; +last_glue= max_halfword;last_penalty= 0;last_kern= 0; +page_depth= 0;page_max_depth= 0 + +/*:991*/ +#line 4412 "tex.w" +; + +/*:215*//*254:*/ +#line 5506 "tex.w" + +for(k= int_base;k<=eqtb_size;k++)xeq_level[k]= level_one; + +/*:254*//*257:*/ +#line 5557 "tex.w" + +no_new_control_sequence= true; +next(hash_base)= 0;text(hash_base)= 0; +for(k= hash_base+1;k<=undefined_control_sequence-1;k++)hash[k]= hash[hash_base]; + +/*:257*//*272:*/ +#line 5956 "tex.w" + +save_ptr= 0;cur_level= level_one;cur_group= bottom_level;cur_boundary= 0; +max_save_stack= 0; + +/*:272*//*287:*/ +#line 6188 "tex.w" + +mag_set= 0; + +/*:287*//*383:*/ +#line 7929 "tex.w" + +top_mark= null;first_mark= null;bot_mark= null; +split_first_mark= null;split_bot_mark= null; + +/*:383*//*439:*/ +#line 8747 "tex.w" + +cur_val= 0;cur_val_level= int_val;radix= 0;cur_order= normal; + +/*:439*//*481:*/ +#line 9486 "tex.w" + +for(k= 0;k<=16;k++)read_open[k]= closed; + +/*:481*//*490:*/ +#line 9675 "tex.w" + +cond_ptr= null;if_limit= normal;cur_if= 0;if_line= 0; + +/*:490*//*551:*/ +#line 10813 "tex.w" + +for(k= font_base;k<=font_max;k++)font_used[k]= false; + +/*:551*//*556:*/ +#line 10890 "tex.w" + +null_character.b0= min_quarterword;null_character.b1= min_quarterword; +null_character.b2= min_quarterword;null_character.b3= min_quarterword; + +/*:556*//*593:*/ +#line 11896 "tex.w" + +total_pages= 0;max_v= 0;max_h= 0;max_push= 0;last_bop= -1; +doing_leaders= false;dead_cycles= 0;cur_s= -1; + +/*:593*//*596:*/ +#line 11942 "tex.w" + +half_buf= dvi_buf_size/2;dvi_limit= dvi_buf_size;dvi_ptr= 0; +dvi_offset= 0;dvi_gone= 0; + +/*:596*//*606:*/ +#line 12098 "tex.w" + +down_ptr= null;right_ptr= null; + +/*:606*//*648:*/ +#line 12934 "tex.w" +adjust_tail= null;last_badness= 0; + +/*:648*//*662:*/ +#line 13109 "tex.w" + +pack_begin_line= 0; + +/*:662*//*685:*/ +#line 13526 "tex.w" + +empty_field.rh= empty;empty_field.lh= null; +null_delimiter.b0= 0;null_delimiter.b1= min_quarterword; +null_delimiter.b2= 0;null_delimiter.b3= min_quarterword; + +/*:685*//*771:*/ +#line 15285 "tex.w" + +align_ptr= null;cur_align= null;cur_span= null;cur_loop= null; +cur_head= null;cur_tail= null; + +/*:771*//*928:*/ +#line 18215 "tex.w" + +for(z= 0;z<=hyph_size;z++) +{hyph_word[z]= 0;hyph_list[z]= null; +} +hyph_count= 0; + +/*:928*//*990:*/ +#line 19381 "tex.w" + +output_active= false;insert_penalties= 0; + +/*:990*//*1033:*/ +#line 20114 "tex.w" + +ligature_present= false;cancel_boundary= false;lft_hit= false;rt_hit= false; +ins_disc= false; + +/*:1033*//*1267:*/ +#line 23460 "tex.w" + +after_token= 0; + +/*:1267*//*1282:*/ +#line 23563 "tex.w" +long_help_seen= false; + +/*:1282*//*1300:*/ +#line 23749 "tex.w" + +format_ident= 0; + +/*:1300*//*1343:*/ +#line 24616 "tex.w" + +for(k= 0;k<=17;k++)write_open[k]= false; + +/*:1343*/ +#line 316 "tex.w" + +#ifdef INIT +/*164:*/ +#line 3390 "tex.w" + +for(k= mem_bot+1;k<=lo_mem_stat_max;k++)mem[k].sc= 0; + + +k= mem_bot;while(k<=lo_mem_stat_max) + +{glue_ref_count(k)= null+1; +stretch_order(k)= normal;shrink_order(k)= normal; +k= k+glue_spec_size; +} +stretch(fil_glue)= unity;stretch_order(fil_glue)= fil; +stretch(fill_glue)= unity;stretch_order(fill_glue)= fill; +stretch(ss_glue)= unity;stretch_order(ss_glue)= fil; +shrink(ss_glue)= unity;shrink_order(ss_glue)= fil; +stretch(fil_neg_glue)= -unity;stretch_order(fil_neg_glue)= fil; +rover= lo_mem_stat_max+1; +link(rover)= empty_flag; +node_size(rover)= 1000; +llink(rover)= rover;rlink(rover)= rover; +lo_mem_max= rover+1000;link(lo_mem_max)= null;info(lo_mem_max)= null; +for(k= hi_mem_stat_min;k<=mem_top;k++) +mem[k]= mem[lo_mem_max]; +/*790:*/ +#line 15595 "tex.w" + +info(omit_template)= end_template_token; + +/*:790*//*797:*/ +#line 15701 "tex.w" + +link(end_span)= max_quarterword+1;info(end_span)= null; + +/*:797*//*820:*/ +#line 16162 "tex.w" + +type(last_active)= hyphenated;line_number(last_active)= max_halfword; +subtype(last_active)= 0; + +/*:820*//*981:*/ +#line 19215 "tex.w" + +subtype(page_ins_head)= qi(255); +type(page_ins_head)= split_up;link(page_ins_head)= page_ins_head; + +/*:981*//*988:*/ +#line 19372 "tex.w" + +type(page_head)= glue_node;subtype(page_head)= normal; + +/*:988*/ +#line 3412 "tex.w" +; +avail= null;mem_end= mem_top; +hi_mem_min= hi_mem_stat_min; +var_used= lo_mem_stat_max+1-mem_bot;dyn_used= hi_mem_stat_usage; + + +/*:164*//*222:*/ +#line 4596 "tex.w" + +eq_type(undefined_control_sequence)= undefined_cs; +equiv(undefined_control_sequence)= null; +eq_level(undefined_control_sequence)= level_zero; +for(k= active_base;k<=undefined_control_sequence-1;k++) +eqtb[k]= eqtb[undefined_control_sequence]; + +/*:222*//*228:*/ +#line 4751 "tex.w" + +equiv(glue_base)= zero_glue;eq_level(glue_base)= level_one; +eq_type(glue_base)= glue_ref; +for(k= glue_base+1;k<=local_base-1;k++)eqtb[k]= eqtb[glue_base]; +glue_ref_count(zero_glue)= glue_ref_count(zero_glue)+local_base-glue_base; + +/*:228*//*232:*/ +#line 4870 "tex.w" + +par_shape_ptr= null;eq_type(par_shape_loc)= shape_ref; +eq_level(par_shape_loc)= level_one; +for(k= output_routine_loc;k<=toks_base+255;k++) +eqtb[k]= eqtb[undefined_control_sequence]; +box(0)= null;eq_type(box_base)= box_ref;eq_level(box_base)= level_one; +for(k= box_base+1;k<=box_base+255;k++)eqtb[k]= eqtb[box_base]; +cur_font= null_font;eq_type(cur_font_loc)= data; +eq_level(cur_font_loc)= level_one; +for(k= math_font_base;k<=math_font_base+47;k++)eqtb[k]= eqtb[cur_font_loc]; +equiv(cat_code_base)= 0;eq_type(cat_code_base)= data; +eq_level(cat_code_base)= level_one; +for(k= cat_code_base+1;k<=int_base-1;k++)eqtb[k]= eqtb[cat_code_base]; +for(k= 0;k<=255;k++) +{cat_code(k)= other_char;math_code(k)= hi(k);sf_code(k)= 1000; +} +cat_code(carriage_return)= car_ret;cat_code(' ')= spacer; +cat_code('\\')= escape;cat_code('%')= comment; +cat_code(invalid_code)= invalid_char;cat_code(null_code)= ignore; +for(k= '0';k<='9';k++)math_code(k)= hi(k+var_code); +for(k= 'A';k<='Z';k++) +{cat_code(k)= letter;cat_code(k+'a'-'A')= letter; +math_code(k)= hi(k+var_code+0x100); +math_code(k+'a'-'A')= hi(k+'a'-'A'+var_code+0x100); +lc_code(k)= k+'a'-'A';lc_code(k+'a'-'A')= k+'a'-'A'; +uc_code(k)= k;uc_code(k+'a'-'A')= k; +sf_code(k)= 999; +} + +/*:232*//*240:*/ +#line 5279 "tex.w" + +for(k= int_base;k<=del_code_base-1;k++)eqtb[k].i= 0; +mag= 1000;tolerance= 10000;hang_after= 1;max_dead_cycles= 25; +escape_char= '\\';end_line_char= carriage_return; +for(k= 0;k<=255;k++)del_code(k)= -1; +del_code('.')= 0; + +/*:240*//*250:*/ +#line 5471 "tex.w" + +for(k= dimen_base;k<=eqtb_size;k++)eqtb[k].sc= 0; + +/*:250*//*258:*/ +#line 5562 "tex.w" + +hash_used= frozen_control_sequence; +cs_count= 0; +eq_type(frozen_dont_expand)= dont_expand; +text(frozen_dont_expand)= /*1525:*/ +#line 25471 "tex.w" +400 +/*:1525*/ +#line 5566 "tex.w" +; + + +/*:258*//*552:*/ +#line 10819 "tex.w" + +font_ptr= null_font;fmem_ptr= 7; +font_name[null_font]= /*1639:*/ +#line 25813 "tex.w" +514 +/*:1639*/ +#line 10821 "tex.w" +;font_area[null_font]= empty_string; +hyphen_char[null_font]= '-';skew_char[null_font]= -1; +bchar_label[null_font]= non_address; +font_bchar[null_font]= non_char;font_false_bchar[null_font]= non_char; +font_bc[null_font]= 1;font_ec[null_font]= 0; +font_size[null_font]= 0;font_dsize[null_font]= 0; +char_base[null_font]= 0;width_base[null_font]= 0; +height_base[null_font]= 0;depth_base[null_font]= 0; +italic_base[null_font]= 0;lig_kern_base[null_font]= 0; +kern_base[null_font]= 0;exten_base[null_font]= 0; +font_glue[null_font]= null;font_params[null_font]= 7; +param_base[null_font]= -1; +for(k= 0;k<=6;k++)font_info[k].sc= 0; + +/*:552*//*946:*/ +#line 18486 "tex.w" + +for(k= -trie_op_size;k<=trie_op_size;k++)trie_op_hash[k]= 0; +for(k= 0;k<=255;k++)trie_used[k]= min_quarterword; +trie_op_ptr= 0; + +/*:946*//*951:*/ +#line 18612 "tex.w" + +trie_not_ready= true;trie_root= 0;trie_c[0]= si(0);trie_ptr= 0; + +/*:951*//*1216:*/ +#line 22800 "tex.w" + +text(frozen_protection)= /*1751:*/ +#line 26149 "tex.w" +626 +/*:1751*/ +#line 22801 "tex.w" +; + +/*:1216*//*1301:*/ +#line 23752 "tex.w" + +format_ident= /*1781:*/ +#line 26239 "tex.w" +656 +/*:1781*/ +#line 23753 "tex.w" +; + +/*:1301*//*1369:*/ +#line 24851 "tex.w" + +text(end_write)= /*1791:*/ +#line 26269 "tex.w" +666 +/*:1791*/ +#line 24852 "tex.w" +;eq_level(end_write)= level_one; +eq_type(end_write)= outer_call;equiv(end_write)= null; + +/*:1369*/ +#line 318 "tex.w" + +#endif + +/*:8*/ +#line 270 "tex.w" +; +} +/*57:*/ +#line 1474 "tex.w" + +void print_ln(void) +{switch(selector){ +case term_and_log:{wterm_cr;wlog_cr; +term_offset= 0;file_offset= 0; +}break; +case log_only:{wlog_cr;file_offset= 0; +}break; +case term_only:{wterm_cr;term_offset= 0; +}break; +case no_print:case pseudo:case new_string:do_nothing;break; +default:write_ln(write_file[selector]); +} +} + +/*:57*//*58:*/ +#line 1493 "tex.w" + +void print_char(ASCII_code s) +{ +if(/*244:*/ +#line 5312 "tex.w" +s==new_line_char + +/*:244*/ +#line 1496 "tex.w" +) +if(selector<pseudo) +{print_ln();return; +} +switch(selector){ +case term_and_log:{wterm("%c",xchr[s]);wlog("%c",xchr[s]); +incr(term_offset);incr(file_offset); +if(term_offset==max_print_line) +{wterm_cr;term_offset= 0; +} +if(file_offset==max_print_line) +{wlog_cr;file_offset= 0; +} +}break; +case log_only:{wlog("%c",xchr[s]);incr(file_offset); +if(file_offset==max_print_line)print_ln(); +}break; +case term_only:{wterm("%c",xchr[s]);incr(term_offset); +if(term_offset==max_print_line)print_ln(); +}break; +case no_print:do_nothing;break; +case pseudo:if(tally<trick_count)trick_buf[tally%error_line]= s;break; +case new_string:{if(pool_ptr<pool_size)append_char(s); +}break; +default:write(write_file[selector],"%c",xchr[s]); +} +incr(tally); +} + +/*:58*//*59:*/ +#line 1533 "tex.w" + +void print(int s) +{ +pool_pointer j; +int nl; +if(s>=str_ptr)s= /*1381:*/ +#line 25039 "tex.w" +256 +/*:1381*/ +#line 1538 "tex.w" +; + +else if(s<256) +if(s<0)s= /*1381:*/ +#line 25039 "tex.w" +256 +/*:1381*/ +#line 1541 "tex.w" +; +else{if(selector> pseudo) +{print_char(s);return; +} +if((/*244:*/ +#line 5312 "tex.w" +s==new_line_char + +/*:244*/ +#line 1545 "tex.w" +)) +if(selector<pseudo) +{print_ln();return; +} +nl= new_line_char;new_line_char= -1; + +j= str_start[s]; +while(j<str_start[s+1]) +{print_char(so(str_pool[j]));incr(j); +} +new_line_char= nl;return; +} +j= str_start[s]; +while(j<str_start[s+1]) +{print_char(so(str_pool[j]));incr(j); +} +} + +void print_str(char*s) +{while(*s!=0)print_char(*s++); +} + +/*:59*//*60:*/ +#line 1571 "tex.w" + +void slow_print(int s) +{pool_pointer j; +if((s>=str_ptr)||(s<256))print(s); +else{j= str_start[s]; +while(j<str_start[s+1]) +{print(so(str_pool[j]));incr(j); +} +} +} + +/*:60*//*62:*/ +#line 1598 "tex.w" + +void print_nl(char*s) +{if(((term_offset> 0)&&(odd(selector)))|| +((file_offset> 0)&&(selector>=log_only)))print_ln(); +print_str(s); +} + +/*:62*//*63:*/ +#line 1608 "tex.w" + +void print_esc(str_number s) +{int c; +/*243:*/ +#line 5310 "tex.w" +c= escape_char + +/*:243*/ +#line 1611 "tex.w" +; +if(c>=0)if(c<256)print(c); +slow_print(s); +} + +/*:63*//*64:*/ +#line 1618 "tex.w" + +void print_the_digs(eight_bits k) + +{while(k> 0) +{decr(k); +if(dig[k]<10)print_char('0'+dig[k]); +else print_char('A'-10+dig[k]); +} +} + +/*:64*//*65:*/ +#line 1634 "tex.w" + +void print_int(int n) +{uint8_t k; +int m; +k= 0; +if(n<0) +{print_char('-'); +if(n> -100000000)negate(n); +else{m= -1-n;n= m/10;m= (m%10)+1;k= 1; +if(m<10)dig[0]= m; +else{dig[0]= 0;incr(n); +} +} +} +do{dig[k]= n%10;n= n/10;incr(k); +}while(!(n==0)); +print_the_digs(k); +} + +/*:65*//*262:*/ +#line 5640 "tex.w" + +void print_cs(int p) +{if(p<hash_base) +if(p>=single_base) +if(p==null_cs) +{print_esc(/*1526:*/ +#line 25474 "tex.w" +401 +/*:1526*/ +#line 5645 "tex.w" +);print_esc(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 5645 "tex.w" +);print_char(' '); +} +else{print_esc(p-single_base); +if(cat_code(p-single_base)==letter)print_char(' '); +} +else if(p<active_base)print_esc(/*1528:*/ +#line 25480 "tex.w" +403 +/*:1528*/ +#line 5650 "tex.w" +); + +else print(p-active_base); +else if(p>=undefined_control_sequence)print_esc(/*1528:*/ +#line 25480 "tex.w" +403 +/*:1528*/ +#line 5653 "tex.w" +); +else if((text(p)<0)||(text(p)>=str_ptr))print_esc(/*1529:*/ +#line 25483 "tex.w" +404 +/*:1529*/ +#line 5654 "tex.w" +); + +else{print_esc(text(p)); +print_char(' '); +} +} + +/*:262*//*263:*/ +#line 5664 "tex.w" + +void sprint_cs(pointer p) +{if(p<hash_base) +if(p<single_base)print(p-active_base); +else if(p<null_cs)print_esc(p-single_base); +else{print_esc(/*1526:*/ +#line 25474 "tex.w" +401 +/*:1526*/ +#line 5669 "tex.w" +);print_esc(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 5669 "tex.w" +); +} +else print_esc(text(p)); +} + +/*:263*//*518:*/ +#line 10100 "tex.w" + +void print_file_name(int n,int a,int e) +{slow_print(a);slow_print(n);slow_print(e); +} + +/*:518*//*699:*/ +#line 13817 "tex.w" + +void print_size(int s) +{if(s==text_size)print_esc(/*1438:*/ +#line 25210 "tex.w" +313 +/*:1438*/ +#line 13819 "tex.w" +); +else if(s==script_size)print_esc(/*1439:*/ +#line 25213 "tex.w" +314 +/*:1439*/ +#line 13820 "tex.w" +); +else print_esc(/*1440:*/ +#line 25216 "tex.w" +315 +/*:1440*/ +#line 13821 "tex.w" +); +} + +/*:699*//*1355:*/ +#line 24737 "tex.w" + +void print_write_whatsit(str_number s,pointer p) +{print_esc(s); +if(write_stream(p)<16)print_int(write_stream(p)); +else if(write_stream(p)==16)print_char('*'); + +else print_char('-'); +} + +/*:1355*/ +#line 272 "tex.w" + +/*78:*/ +#line 1836 "tex.w" + +void normalize_selector(void); +void get_token(void); +void term_input(void); +void show_context(void); +void begin_file_reading(void); +void open_log_file(void); +void close_files_and_terminate(void); +void clear_for_error_prompt(void); +void give_err_help(void); +#ifdef DEBUG +void debug_help(void); +#else +#define debug_help() do_nothing +#endif + +/*:78*//*81:*/ +#line 1888 "tex.w" + +void jump_out(void) +{close_files_and_terminate();exit(0); +} + +/*:81*//*82:*/ +#line 1895 "tex.w" + +void error(void) +{ +ASCII_code c; +int s1,s2,s3,s4; + +if(history<error_message_issued)history= error_message_issued; +print_char('.');show_context(); +if(interaction==error_stop_mode)/*83:*/ +#line 1913 "tex.w" + +loop{resume:clear_for_error_prompt();prompt_input("? "); + +if(last==first)return; +c= buffer[first]; +if(c>='a')c= c+'A'-'a'; +/*84:*/ +#line 1934 "tex.w" + +switch(c){ +case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':if(deletions_allowed) +/*88:*/ +#line 2007 "tex.w" + +{s1= cur_tok;s2= cur_cmd;s3= cur_chr;s4= align_state; +align_state= 1000000;OK_to_interrupt= false; +if((last> first+1)&&(buffer[first+1]>='0')&&(buffer[first+1]<='9')) +c= c*10+buffer[first+1]-'0'*11; +else c= c-'0'; +while(c> 0) +{get_token(); +decr(c); +} +cur_tok= s1;cur_cmd= s2;cur_chr= s3;align_state= s4;OK_to_interrupt= true; +help2("I have just deleted some text, as you asked.") +("You can now delete more, or insert, or whatever."); +show_context();goto resume; +} + +/*:88*/ +#line 1937 "tex.w" +break; + +#ifdef DEBUG +case'D':{debug_help();goto resume;} +#endif +case'E':if(base_ptr> 0) +{print_nl("You want to edit file "); + +slow_print(input_stack[base_ptr].name_field); +print_str(" at line ");print_int(line); +interaction= scroll_mode;jump_out(); +}break; +case'H':/*89:*/ +#line 2023 "tex.w" + +{if(use_err_help) +{give_err_help();use_err_help= false; +} +else{if(help_ptr==0) +help2("Sorry, I don't know how to help in this situation.") +("Maybe you should try asking a human?"); +do{decr(help_ptr);print_str(help_line[help_ptr]);print_ln(); +}while(!(help_ptr==0)); +} +help4("Sorry, I already gave what help I could...") +("Maybe you should try asking a human?") +("An error might have occurred before I noticed any problems.") +("``If all else fails, read the instructions.'"); +goto resume; +} + +/*:89*/ +#line 1949 "tex.w" + +case'I':/*87:*/ +#line 1991 "tex.w" + +{begin_file_reading(); + +if(last> first+1) +{loc= first+1;buffer[first]= ' '; +} +else{prompt_input("insert>");loc= first; + +} +first= last; +cur_input.limit_field= last-1; +return; +} + +/*:87*/ +#line 1950 "tex.w" + +case'Q':case'R':case'S':/*86:*/ +#line 1974 "tex.w" + +{error_count= 0;interaction= batch_mode+c-'Q'; +print_str("OK, entering "); +switch(c){ +case'Q':{print_esc(/*1383:*/ +#line 25045 "tex.w" +258 +/*:1383*/ +#line 1978 "tex.w" +);decr(selector); +}break; +case'R':print_esc(/*1384:*/ +#line 25048 "tex.w" +259 +/*:1384*/ +#line 1980 "tex.w" +);break; +case'S':print_esc(/*1385:*/ +#line 25051 "tex.w" +260 +/*:1385*/ +#line 1981 "tex.w" +); +} +print_str("...");print_ln();update_terminal;return; +} + +/*:86*/ +#line 1951 "tex.w" + +case'X':{interaction= scroll_mode;jump_out(); +}break; +default:do_nothing; +} +/*85:*/ +#line 1958 "tex.w" + +{print_str("Type <return> to proceed, S to scroll future error messages,"); + +print_nl("R to run without stopping, Q to run quietly,"); +print_nl("I to insert something, "); +if(base_ptr> 0)print_str("E to edit your file,"); +if(deletions_allowed) +print_nl("1 or ... or 9 to ignore the next 1 to 9 tokens of input,"); +print_nl("H for help, X to quit."); +} + +/*:85*/ +#line 1956 "tex.w" + + +/*:84*/ +#line 1919 "tex.w" +; +} + +/*:83*/ +#line 1903 "tex.w" +; +incr(error_count); +if(error_count==100) +{print_nl("(That makes 100 errors; please try again.)"); + +history= fatal_error_stop;jump_out(); +} +/*90:*/ +#line 2040 "tex.w" + +if(interaction> batch_mode)decr(selector); +if(use_err_help) +{print_ln();give_err_help(); +} +else while(help_ptr> 0) +{decr(help_ptr);print_nl(help_line[help_ptr]); +} +print_ln(); +if(interaction> batch_mode)incr(selector); +print_ln() + +/*:90*/ +#line 1910 "tex.w" +; +} + +/*:82*//*93:*/ +#line 2079 "tex.w" + +void fatal_error(char*s) +{normalize_selector(); +print_err("Emergency stop");help1(s);succumb; + +} + +/*:93*//*94:*/ +#line 2088 "tex.w" + +void overflow(char*s,int n) +{normalize_selector(); +print_err("TeX capacity exceeded, sorry ["); + +print_str(s);print_char('=');print_int(n);print_char(']'); +help2("If you really absolutely need more capacity,") +("you can ask a wizard to enlarge me."); +succumb; +} + +/*:94*//*95:*/ +#line 2107 "tex.w" + +void confusion(str_number s) + +{normalize_selector(); +if(history<error_message_issued) +{print_err("This can't happen (");print(s);print_char(')'); + +help1("I'm broken. Please show this to someone who can fix can fix"); +} +else{print_err("I can't go on meeting you like this"); + +help2("One of your faux pas seems to have wounded me deeply...") +("in fact, I'm barely conscious. Please fix it and try again."); +} +succumb; +} + +/*:95*/ +#line 273 "tex.w" + + +/*:4*//*27:*/ +#line 823 "tex.w" +bool a_open_in(alpha_file*f) + +{reset((*f),name_of_file,"r");return reset_OK((*f)); +} + +bool a_open_out(alpha_file*f) + +{rewrite((*f),name_of_file,"w");return rewrite_OK((*f)); +} + +bool b_open_in(byte_file*f) + +{reset((*f),name_of_file,"rb");return reset_OK((*f)); +} + +bool b_open_out(byte_file*f) + +{rewrite((*f),name_of_file,"wb");return rewrite_OK((*f)); +} + +bool w_open_in(word_file*f) + +{reset((*f),name_of_file,"rb");return reset_OK((*f)); +} + +bool w_open_out(word_file*f) + +{rewrite((*f),name_of_file,"wb");return rewrite_OK((*f)); +} + +/*:27*//*28:*/ +#line 864 "tex.w" +void a_close(alpha_file*f) +{close((*f)); +} + +void b_close(byte_file*f) +{close((*f)); +} + +void w_close(word_file*f) +{close((*f)); +} + +/*:28*//*31:*/ +#line 937 "tex.w" +bool input_ln(alpha_file*f,bool bypass_eoln) + +{uint16_t last_nonblank; +if(bypass_eoln)if(!eof((*f)))get((*f)); + +last= first; +if(eof((*f)))return false; +else{last_nonblank= first; +while(!eoln((*f))) +{if(last>=max_buf_stack) +{max_buf_stack= last+1; +if(max_buf_stack==buf_size) +/*35:*/ +#line 1023 "tex.w" + +if(format_ident==0) +{write_ln(term_out,"Buffer size exceeded!");exit(0); + +} +else{cur_input.loc_field= first;cur_input.limit_field= last-1; +overflow("buffer size",buf_size); + +} + +/*:35*/ +#line 949 "tex.w" +; +} +buffer[last]= xord[(*f).d];get((*f));incr(last); +if(buffer[last-1]!=' ')last_nonblank= last; +} +last= last_nonblank;return true; +} +} + +/*:31*//*37:*/ +#line 1067 "tex.w" +bool init_terminal(void) +{ +t_open_in; +loop{wake_up_terminal;write(term_out,"**");update_terminal; + +if(!input_ln(&term_in,true)) +{write_ln(term_out); +write(term_out,"! End of file on the terminal... why?"); + +return false; +} +loc= first; +while((loc<last)&&(buffer[loc]==' '))incr(loc); +if(loc<last) +{return true; + +} +write_ln(term_out,"Please type the name of your input file."); +} +} + +/*:37*//*43:*/ +#line 1185 "tex.w" +str_number make_string(void) +{if(str_ptr==max_strings) +overflow("number of strings",max_strings-init_str_ptr); + +incr(str_ptr);str_start[str_ptr]= pool_ptr; +return str_ptr-1; +} + +/*:43*//*45:*/ +#line 1204 "tex.w" +bool str_eq_buf(str_number s,int k) + +{ +pool_pointer j; +bool result; +j= str_start[s]; +while(j<str_start[s+1]) +{if(so(str_pool[j])!=buffer[k]) +{result= false;goto not_found; +} +incr(j);incr(k); +} +result= true; +not_found:return result; +} + +/*:45*//*46:*/ +#line 1223 "tex.w" +bool str_eq_str(str_number s,str_number t) + +{ +pool_pointer j,k; +bool result; +result= false; +if(length(s)!=length(t))goto not_found; +j= str_start[s];k= str_start[t]; +while(j<str_start[s+1]) +{if(str_pool[j]!=str_pool[k])goto not_found; +incr(j);incr(k); +} +result= true; +not_found:return result; +} + +/*:46*//*47:*/ +#line 1245 "tex.w" + +#ifdef INIT +bool get_strings_started(void) + +{ +int k,l; +uint8_t m,n; +str_number g; +int a; +bool c; +pool_ptr= 0;str_ptr= 0;str_start[0]= 0; +/*48:*/ +#line 1265 "tex.w" + +for(k= 0;k<=255;k++) +{if(/*49:*/ +#line 1305 "tex.w" + +(k<' ')||(k> '~') + +/*:49*/ +#line 1267 "tex.w" +) +{append_char('^');append_char('^'); +if(k<0100)append_char(k+0100) +else if(k<0200)append_char(k-0100) +else{app_lc_hex(k/16);app_lc_hex(k%16); +} +} +else append_char(k); +g= make_string(); +} + +/*:48*/ +#line 1256 "tex.w" +; +/*51:*/ +#line 1324 "tex.w" + +{int k;for(k= 1;k<=file_name_size;k++)name_of_file[k]= pool_name[k-1];} +if(a_open_in(&pool_file)) +{c= false; +do{/*52:*/ +#line 1336 "tex.w" + +{if(eof(pool_file))bad_pool("! TEX.POOL has no check sum."); + +read(pool_file,m);read(pool_file,n); +if(m=='*')/*53:*/ +#line 1362 "tex.w" + +{a= 0;k= 1; +loop{if((xord[n]<'0')||(xord[n]> '9')) +bad_pool("! TEX.POOL check sum doesn't have nine digits."); + +a= 10*a+xord[n]-'0'; +if(k==9)goto done; +incr(k);read(pool_file,n); +} +done:if(a!=0)bad_pool("! TEX.POOL doesn't match; TANGLE me again."); + +c= true; +} + +/*:53*/ +#line 1340 "tex.w" + +else{if((xord[m]<'0')||(xord[m]> '9')|| +(xord[n]<'0')||(xord[n]> '9')) +bad_pool("! TEX.POOL line doesn't begin with two digits."); + +l= xord[m]*10+xord[n]-'0'*11; +if(pool_ptr+l+string_vacancies> pool_size) +bad_pool("! You have to increase POOLSIZE."); + +for(k= 1;k<=l;k++) +{if(eoln(pool_file))m= ' ';else read(pool_file,m); +append_char(xord[m]); +} +read_ln(pool_file);g= make_string(); +} +} + +/*:52*/ +#line 1329 "tex.w" +; +}while(!(c)); +a_close(&pool_file);return true; +} +else bad_pool("! I can't read TEX.POOL.") + + +/*:51*/ +#line 1258 "tex.w" +; +} +#endif + +/*:47*//*66:*/ +#line 1656 "tex.w" +void print_two(int n) +{n= abs(n)%100;print_char('0'+(n/10)); +print_char('0'+(n%10)); +} + +/*:66*//*67:*/ +#line 1663 "tex.w" +void print_hex(int n) + +{uint8_t k; +k= 0;print_char('"'); +do{dig[k]= n%16;n= n/16;incr(k); +}while(!(n==0)); +print_the_digs(k); +} + +/*:67*//*69:*/ +#line 1683 "tex.w" +void print_roman_int(int n) +{ +pool_pointer j,k; +nonnegative_integer u,v; +j= str_start[/*1382:*/ +#line 25042 "tex.w" +257 +/*:1382*/ +#line 1687 "tex.w" +];v= 1000; +loop{while(n>=v) +{print_char(so(str_pool[j]));n= n-v; +} +if(n<=0)return; +k= j+2;u= v/(so(str_pool[k-1])-'0'); +if(str_pool[k-1]==si('2')) +{k= k+2;u= u/(so(str_pool[k-1])-'0'); +} +if(n+u>=v) +{print_char(so(str_pool[k]));n= n+u; +} +else{j= j+2;v= v/(so(str_pool[j-1])-'0'); +} +} +} + +/*:69*//*70:*/ +#line 1707 "tex.w" +void print_current_string(void) +{pool_pointer j; +j= str_start[str_ptr]; +while(j<pool_ptr) +{print_char(so(str_pool[j]));incr(j); +} +} + +/*:70*//*71:*/ +#line 1725 "tex.w" +void term_input(void) +{int k; +update_terminal; +if(!input_ln(&term_in,true))fatal_error("End of file on the terminal!"); + +term_offset= 0; +decr(selector); +if(last!=first)for(k= first;k<=last-1;k++)print(buffer[k]); +print_ln();incr(selector); +} + +/*:71*//*91:*/ +#line 2055 "tex.w" +void int_error(int n) +{print_str(" (");print_int(n);print_char(')');error(); +} + +/*:91*//*92:*/ +#line 2063 "tex.w" +void normalize_selector(void) +{if(log_opened)selector= term_and_log; +else selector= term_only; +if(job_name==0)open_log_file(); +if(interaction==batch_mode)decr(selector); +} + +/*:92*//*98:*/ +#line 2147 "tex.w" +void pause_for_instructions(void) +{if(OK_to_interrupt) +{interaction= error_stop_mode; +if((selector==log_only)||(selector==no_print)) +incr(selector); +print_err("Interruption"); + +help3("You rang?") +("Try to insert some instructions for me (e.g.,`I\\showlists'),") +("unless you just want to quit by typing `X'."); +deletions_allowed= false;error();deletions_allowed= true; +interrupt= 0; +} +} + +/*:98*//*100:*/ +#line 2186 "tex.w" +int half(int x) +{if(odd(x))return(x+1)/2; +else return x/2; +} + +/*:100*//*102:*/ +#line 2207 "tex.w" +scaled round_decimals(small_number k) + +{int a; +a= 0; +while(k> 0) +{decr(k);a= (a+dig[k]*two)/10; +} +return(a+1)/2; +} + +/*:102*//*103:*/ +#line 2229 "tex.w" +void print_scaled(scaled s) + +{scaled delta; +if(s<0) +{print_char('-');negate(s); +} +print_int(s/unity); +print_char('.'); +s= 10*(s%unity)+5;delta= 10; +do{if(delta> unity)s= s+0100000-50000; +print_char('0'+(s/unity));s= 10*(s%unity);delta= delta*10; +}while(!(s<=delta)); +} + +/*:103*//*105:*/ +#line 2279 "tex.w" +scaled mult_and_add(int n,scaled x,scaled y,scaled max_answer) +{if(n<0) +{negate(x);negate(n); +} +if(n==0)return y; +else if(((x<=(max_answer-y)/n)&&(-x<=(max_answer+y)/n))) +return n*x+y; +else{arith_error= true;return 0; +} +} + +/*:105*//*106:*/ +#line 2292 "tex.w" +scaled x_over_n(scaled x,int n) +{bool negative; +scaled x_over_n;negative= false; +if(n==0) +{arith_error= true;x_over_n= 0;rem= x; +} +else{if(n<0) +{negate(x);negate(n);negative= true; +} +if(x>=0) +{x_over_n= x/n;rem= x%n; +} +else{x_over_n= -((-x)/n);rem= -((-x)%n); +} +} +if(negative)negate(rem); +return x_over_n;} + +/*:106*//*107:*/ +#line 2317 "tex.w" +scaled xn_over_d(scaled x,int n,int d) +{bool positive; +nonnegative_integer t,u,v; +scaled xn_over_d;if(x>=0)positive= true; +else{negate(x);positive= false; +} +t= (x%0100000)*n; +u= (x/0100000)*n+(t/0100000); +v= (u%d)*0100000+(t%0100000); +if(u/d>=0100000)arith_error= true; +else u= 0100000*(u/d)+(v/d); +if(positive) +{xn_over_d= u;rem= v%d; +} +else{xn_over_d= -u;rem= -(v%d); +} +return xn_over_d;} + +/*:107*//*108:*/ +#line 2355 "tex.w" +halfword badness(scaled t,scaled s) +{int r; + +if(t==0)return 0; +else if(s<=0)return inf_bad; +else{if(t<=7230584)r= (t*297)/s; +else if(s>=1663497)r= t/(s/297); +else r= t; +if(r> 1290)return inf_bad; +else return(r*r*r+0400000)/01000000; +} +} + +/*:108*//*114:*/ +#line 2524 "tex.w" + +#ifdef DEBUG +void print_word(memory_word w) + +{print_int(w.i);print_char(' '); +print_scaled(w.sc);print_char(' '); +print_scaled(round(unity*float(w.gr)));print_ln(); + +print_int(w.hh.lh);print_char('=');print_int(w.hh.b0);print_char(':'); +print_int(w.hh.b1);print_char(';');print_int(w.hh.rh);print_char(' '); +print_int(w.qqqq.b0);print_char(':');print_int(w.qqqq.b1);print_char(':'); +print_int(w.qqqq.b2);print_char(':');print_int(w.qqqq.b3); +} +#endif + +/*:114*//*119:*/ +#line 2633 "tex.w" +/*292:*/ +#line 6322 "tex.w" + +void show_token_list(int p,int q,int l) +{ +int m,c; +ASCII_code match_chr; +ASCII_code n; +match_chr= '#';n= '0';tally= 0; +while((p!=null)&&(tally<l)) +{if(p==q)/*320:*/ +#line 7002 "tex.w" +set_trick_count + +/*:320*/ +#line 6330 "tex.w" +; +/*293:*/ +#line 6339 "tex.w" + +if((p<hi_mem_min)||(p> mem_end)) +{print_esc(/*1386:*/ +#line 25054 "tex.w" +261 +/*:1386*/ +#line 6341 "tex.w" +);return; + +} +if(info(p)>=cs_token_flag)print_cs(info(p)-cs_token_flag); +else{m= info(p)/0400;c= info(p)%0400; +if(info(p)<0)print_esc(/*1567:*/ +#line 25597 "tex.w" +442 +/*:1567*/ +#line 6346 "tex.w" +); + +else/*294:*/ +#line 6355 "tex.w" + +switch(m){ +case left_brace:case right_brace:case math_shift:case tab_mark:case sup_mark:case sub_mark:case spacer: +case letter:case other_char:print(c);break; +case mac_param:{print(c);print(c); +}break; +case out_param:{print(match_chr); +if(c<=9)print_char(c+'0'); +else{print_char('!');return; +} +}break; +case match:{match_chr= c;print(c);incr(n);print_char(n); +if(n> '9')return; +}break; +case end_match:print_str("->");break; + +default:print_esc(/*1567:*/ +#line 25597 "tex.w" +442 +/*:1567*/ +#line 6371 "tex.w" +); + +} + +/*:294*/ +#line 6348 "tex.w" +; +} + +/*:293*/ +#line 6331 "tex.w" +; +p= link(p); +} +if(p!=null)print_esc(/*1566:*/ +#line 25594 "tex.w" +441 +/*:1566*/ +#line 6334 "tex.w" +); + + +} + +/*:292*/ +#line 2633 "tex.w" + +/*306:*/ +#line 6673 "tex.w" + +void runaway(void) +{pointer p; +if(scanner_status> skipping) +{print_nl("Runaway "); + +switch(scanner_status){ +case defining:{print_str("definition");p= def_ref; +}break; +case matching:{print_str("argument");p= temp_head; +}break; +case aligning:{print_str("preamble");p= hold_head; +}break; +case absorbing:{print_str("text");p= def_ref; +} +} +print_char('?');print_ln();show_token_list(link(p),null,error_line-10); +} +} + +/*:306*/ +#line 2634 "tex.w" + + +/*:119*//*120:*/ +#line 2645 "tex.w" +pointer get_avail(void) +{pointer p; +p= avail; +if(p!=null)avail= link(avail); +else if(mem_end<mem_max) +{incr(mem_end);p= mem_end; +} +else{decr(hi_mem_min);p= hi_mem_min; +if(hi_mem_min<=lo_mem_max) +{runaway(); +overflow("main memory size",mem_max+1-mem_min); + + +} +} +link(p)= null; +incr_dyn_used; +return p; +} + +/*:120*//*123:*/ +#line 2691 "tex.w" +void flush_list(pointer p) + +{pointer q,r; +if(p!=null) +{r= p; +do{q= r;r= link(r); +decr_dyn_used; +}while(!(r==null)); +link(q)= avail;avail= p; +} +} + +/*:123*//*125:*/ +#line 2736 "tex.w" +pointer get_node(int s) +{ +pointer p; +pointer q; +int r; +int t; +restart:p= rover; +do{/*127:*/ +#line 2786 "tex.w" + +q= p+node_size(p); + +while(is_empty(q)) +{t= rlink(q); +if(q==rover)rover= t; +llink(t)= llink(q);rlink(llink(q))= t; +q= q+node_size(q); +} +r= q-s; +if(r> p+1)/*128:*/ +#line 2801 "tex.w" + +{node_size(p)= r-p; + +rover= p; +goto found; +} + +/*:128*/ +#line 2796 "tex.w" +; +if(r==p)if(rlink(p)!=p) +/*129:*/ +#line 2810 "tex.w" + +{rover= rlink(p);t= llink(p); +llink(rover)= t;rlink(t)= rover; +goto found; +} + +/*:129*/ +#line 2798 "tex.w" +; +node_size(p)= q-p + +/*:127*/ +#line 2744 "tex.w" +; + +p= rlink(p); +}while(!(p==rover)); +if(s==010000000000) +{return max_halfword; +} +if(lo_mem_max+2<hi_mem_min)if(lo_mem_max+2<=mem_bot+max_halfword) +/*126:*/ +#line 2771 "tex.w" + +{if(hi_mem_min-lo_mem_max>=1998)t= lo_mem_max+1000; +else t= lo_mem_max+1+(hi_mem_min-lo_mem_max)/2; + +p= llink(rover);q= lo_mem_max;rlink(p)= q;llink(rover)= q; +if(t> mem_bot+max_halfword)t= mem_bot+max_halfword; +rlink(q)= rover;llink(q)= p;link(q)= empty_flag;node_size(q)= t-lo_mem_max; +lo_mem_max= t;link(lo_mem_max)= null;info(lo_mem_max)= null; +rover= q;goto restart; +} + +/*:126*/ +#line 2752 "tex.w" +; +overflow("main memory size",mem_max+1-mem_min); + + +found:link(r)= null; +#ifdef STAT +var_used= var_used+s; +#endif + +return r; +} + +/*:125*//*130:*/ +#line 2821 "tex.w" +void free_node(pointer p,halfword s) + +{pointer q; +node_size(p)= s;link(p)= empty_flag; +q= llink(rover);llink(p)= q;rlink(p)= rover; +llink(rover)= p;rlink(q)= p; +#ifdef STAT +var_used= var_used-s; +#endif + +} + +/*:130*//*131:*/ +#line 2838 "tex.w" + +#ifdef INIT +void sort_avail(void) + +{pointer p,q,r; +pointer old_rover; +p= get_node(010000000000); +p= rlink(rover);rlink(rover)= max_halfword;old_rover= rover; +while(p!=old_rover)/*132:*/ +#line 2860 "tex.w" + +if(p<rover) +{q= p;p= rlink(q);rlink(q)= rover;rover= q; +} +else{q= rover; +while(rlink(q)<p)q= rlink(q); +r= rlink(p);rlink(p)= rlink(q);rlink(q)= p;p= r; +} + +/*:132*/ +#line 2847 "tex.w" +; +p= rover; +while(rlink(p)!=max_halfword) +{llink(rlink(p))= p;p= rlink(p); +} +rlink(p)= rover;llink(rover)= p; +} +#endif + +/*:131*//*136:*/ +#line 2969 "tex.w" +pointer new_null_box(void) +{pointer p; +p= get_node(box_node_size);type(p)= hlist_node; +subtype(p)= min_quarterword; +width(p)= 0;depth(p)= 0;height(p)= 0;shift_amount(p)= 0;list_ptr(p)= null; +glue_sign(p)= normal;glue_order(p)= normal;set_glue_ratio_zero(glue_set(p)); +return p; +} + +/*:136*//*139:*/ +#line 2999 "tex.w" +pointer new_rule(void) +{pointer p; +p= get_node(rule_node_size);type(p)= rule_node; +subtype(p)= 0; +width(p)= null_flag;depth(p)= null_flag;height(p)= null_flag; +return p; +} + +/*:139*//*144:*/ +#line 3068 "tex.w" +pointer new_ligature(quarterword f,quarterword c,pointer q) +{pointer p; +p= get_node(small_node_size);type(p)= ligature_node; +font(lig_char(p))= f;character(lig_char(p))= c;lig_ptr(p)= q; +subtype(p)= 0;return p; +} + +pointer new_lig_item(quarterword c) +{pointer p; +p= get_node(small_node_size);character(p)= c;lig_ptr(p)= null; +return p; +} + +/*:144*//*145:*/ +#line 3103 "tex.w" +pointer new_disc(void) +{pointer p; +p= get_node(small_node_size);type(p)= disc_node; +replace_count(p)= 0;pre_break(p)= null;post_break(p)= null; +return p; +} + +/*:145*//*147:*/ +#line 3137 "tex.w" +pointer new_math(scaled w,small_number s) +{pointer p; +p= get_node(small_node_size);type(p)= math_node; +subtype(p)= s;width(p)= w;return p; +} + +/*:147*//*151:*/ +#line 3219 "tex.w" +pointer new_spec(pointer p) +{pointer q; +q= get_node(glue_spec_size); +mem[q]= mem[p];glue_ref_count(q)= null; +width(q)= width(p);stretch(q)= stretch(p);shrink(q)= shrink(p); +return q; +} + +/*:151*//*152:*/ +#line 3232 "tex.w" +pointer new_param_glue(small_number n) +{pointer p; +pointer q; +p= get_node(small_node_size);type(p)= glue_node;subtype(p)= n+1; +leader_ptr(p)= null; +q= /*224:*/ +#line 4665 "tex.w" +glue_par(n) + +/*:224*/ +#line 3237 "tex.w" +; +glue_ptr(p)= q;incr(glue_ref_count(q)); +return p; +} + +/*:152*//*153:*/ +#line 3245 "tex.w" +pointer new_glue(pointer q) +{pointer p; +p= get_node(small_node_size);type(p)= glue_node;subtype(p)= normal; +leader_ptr(p)= null;glue_ptr(p)= q;incr(glue_ref_count(q)); +return p; +} + +/*:153*//*154:*/ +#line 3259 "tex.w" +pointer new_skip_param(small_number n) +{pointer p; +temp_ptr= new_spec(/*224:*/ +#line 4665 "tex.w" +glue_par(n) + +/*:224*/ +#line 3261 "tex.w" +); +p= new_glue(temp_ptr);glue_ref_count(temp_ptr)= null;subtype(p)= n+1; +return p; +} + +/*:154*//*156:*/ +#line 3283 "tex.w" +pointer new_kern(scaled w) +{pointer p; +p= get_node(small_node_size);type(p)= kern_node; +subtype(p)= normal; +width(p)= w; +return p; +} + +/*:156*//*158:*/ +#line 3306 "tex.w" +pointer new_penalty(int m) +{pointer p; +p= get_node(small_node_size);type(p)= penalty_node; +subtype(p)= 0; +penalty(p)= m;return p; +} + +/*:158*//*167:*/ +#line 3449 "tex.w" + +#ifdef DEBUG +void check_mem(bool print_locs) +{ +pointer p,q; +bool clobbered; +for(p= mem_min;p<=lo_mem_max;p++)is_free[p]= false; + +for(p= hi_mem_min;p<=mem_end;p++)is_free[p]= false; +/*168:*/ +#line 3469 "tex.w" + +p= avail;q= null;clobbered= false; +while(p!=null) +{if((p> mem_end)||(p<hi_mem_min))clobbered= true; +else if(is_free[p])clobbered= true; +if(clobbered) +{print_nl("AVAIL list clobbered at "); + +print_int(q);goto done1; +} +is_free[p]= true;q= p;p= link(q); +} +done1: + +/*:168*/ +#line 3458 "tex.w" +; +/*169:*/ +#line 3483 "tex.w" + +p= rover;q= null;clobbered= false; +do{if((p>=lo_mem_max)||(p<mem_min))clobbered= true; +else if((rlink(p)>=lo_mem_max)||(rlink(p)<mem_min))clobbered= true; +else if(!(is_empty(p))||(node_size(p)<2)|| +(p+node_size(p)> lo_mem_max)||(llink(rlink(p))!=p))clobbered= true; +if(clobbered) +{print_nl("Double-AVAIL list clobbered at "); +print_int(q);goto done2; +} +for(q= p;q<=p+node_size(p)-1;q++) +{if(is_free[q]) +{print_nl("Doubly free location at "); + +print_int(q);goto done2; +} +is_free[q]= true; +} +q= p;p= rlink(p); +}while(!(p==rover)); +done2: + +/*:169*/ +#line 3459 "tex.w" +; +/*170:*/ +#line 3505 "tex.w" + +p= mem_min; +while(p<=lo_mem_max) +{if(is_empty(p)) +{print_nl("Bad flag at ");print_int(p); + +} +while((p<=lo_mem_max)&&!is_free[p])incr(p); +while((p<=lo_mem_max)&&is_free[p])incr(p); +} + +/*:170*/ +#line 3460 "tex.w" +; +if(print_locs)/*171:*/ +#line 3516 "tex.w" + +{print_nl("New busy locs:"); +for(p= mem_min;p<=lo_mem_max;p++) +if(!is_free[p]&&((p> was_lo_max)||was_free[p])) +{print_char(' ');print_int(p); +} +for(p= hi_mem_min;p<=mem_end;p++) +if(!is_free[p]&& +((p<was_hi_min)||(p> was_mem_end)||was_free[p])) +{print_char(' ');print_int(p); +} +} + +/*:171*/ +#line 3461 "tex.w" +; +for(p= mem_min;p<=lo_mem_max;p++)was_free[p]= is_free[p]; +for(p= hi_mem_min;p<=mem_end;p++)was_free[p]= is_free[p]; + +was_mem_end= mem_end;was_lo_max= lo_mem_max;was_hi_min= hi_mem_min; +} +#endif + +/*:167*//*172:*/ +#line 3538 "tex.w" + +#ifdef DEBUG +void search_mem(pointer p) +{int q; +for(q= mem_min;q<=lo_mem_max;q++) +{if(link(q)==p) +{print_nl("LINK(");print_int(q);print_char(')'); +} +if(info(q)==p) +{print_nl("INFO(");print_int(q);print_char(')'); +} +} +for(q= hi_mem_min;q<=mem_end;q++) +{if(link(q)==p) +{print_nl("LINK(");print_int(q);print_char(')'); +} +if(info(q)==p) +{print_nl("INFO(");print_int(q);print_char(')'); +} +} +/*255:*/ +#line 5513 "tex.w" + +for(q= active_base;q<=box_base+255;q++) +{if(equiv(q)==p) +{print_nl("EQUIV(");print_int(q);print_char(')'); +} +} + +/*:255*/ +#line 3558 "tex.w" +; +/*285:*/ +#line 6172 "tex.w" + +if(save_ptr> 0)for(q= 0;q<=save_ptr-1;q++) +{if(equiv_field(save_stack[q])==p) +{print_nl("SAVE(");print_int(q);print_char(')'); +} +} + +/*:285*/ +#line 3559 "tex.w" +; +/*933:*/ +#line 18262 "tex.w" + +for(q= 0;q<=hyph_size;q++) +{if(hyph_list[q]==p) +{print_nl("HYPH(");print_int(q);print_char(')'); +} +} + +/*:933*/ +#line 3560 "tex.w" +; +} +#endif + +/*:172*//*174:*/ +#line 3588 "tex.w" +void short_display(int p) +{int n; +while(p> mem_min) +{if(is_char_node(p)) +{if(p<=mem_end) +{if(font(p)!=font_in_short_display) +{if((font(p)<font_base)||(font(p)> font_max)) +print_char('*'); + +else/*267:*/ +#line 5855 "tex.w" + +print_esc(font_id_text(font(p))) + +/*:267*/ +#line 3597 "tex.w" +; +print_char(' ');font_in_short_display= font(p); +} +print_ASCII(qo(character(p))); +} +} +else/*175:*/ +#line 3608 "tex.w" + +switch(type(p)){ +case hlist_node:case vlist_node:case ins_node:case whatsit_node:case mark_node:case adjust_node: +case unset_node:print_str("[]");break; +case rule_node:print_char('|');break; +case glue_node:if(glue_ptr(p)!=zero_glue)print_char(' ');break; +case math_node:print_char('$');break; +case ligature_node:short_display(lig_ptr(p));break; +case disc_node:{short_display(pre_break(p)); +short_display(post_break(p)); +n= replace_count(p); +while(n> 0) +{if(link(p)!=null)p= link(p); +decr(n); +} +}break; +default:do_nothing; +} + +/*:175*/ +#line 3603 "tex.w" +; +p= link(p); +} +} + +/*:174*//*176:*/ +#line 3631 "tex.w" +void print_font_and_char(int p) +{if(p> mem_end)print_esc(/*1386:*/ +#line 25054 "tex.w" +261 +/*:1386*/ +#line 3632 "tex.w" +); +else{if((font(p)<font_base)||(font(p)> font_max))print_char('*'); + +else/*267:*/ +#line 5855 "tex.w" + +print_esc(font_id_text(font(p))) + +/*:267*/ +#line 3635 "tex.w" +; +print_char(' ');print_ASCII(qo(character(p))); +} +} + +void print_mark(int p) +{print_char('{'); +if((p<hi_mem_min)||(p> mem_end))print_esc(/*1386:*/ +#line 25054 "tex.w" +261 +/*:1386*/ +#line 3642 "tex.w" +); +else show_token_list(link(p),null,max_print_line-10); +print_char('}'); +} + +void print_rule_dimen(scaled d) +{if(is_running(d))print_char('*');else print_scaled(d); + +} + +/*:176*//*177:*/ +#line 3655 "tex.w" +void print_glue(scaled d,int order,str_number s) + +{print_scaled(d); +if((order<normal)||(order> filll))print_str("foul"); +else if(order> normal) +{print_str("fil"); +while(order> fil) +{print_char('l');decr(order); +} +} +else if(s!=0)print(s); +} + +/*:177*//*178:*/ +#line 3670 "tex.w" +void print_spec(int p,str_number s) + +{if((p<mem_min)||(p>=lo_mem_max))print_char('*'); + +else{print_scaled(width(p)); +if(s!=0)print(s); +if(stretch(p)!=0) +{print_str(" plus ");print_glue(stretch(p),stretch_order(p),s); +} +if(shrink(p)!=0) +{print_str(" minus ");print_glue(shrink(p),shrink_order(p),s); +} +} +} + +/*:178*//*179:*/ +#line 3688 "tex.w" +/*691:*/ +#line 13645 "tex.w" + +void print_fam_and_char(pointer p) +{print_esc(/*1490:*/ +#line 25366 "tex.w" +365 +/*:1490*/ +#line 13647 "tex.w" +);print_int(fam(p));print_char(' '); +print_ASCII(qo(character(p))); +} + +void print_delimiter(pointer p) +{int a; +a= small_fam(p)*256+qo(small_char(p)); +a= a*0x1000+large_fam(p)*256+qo(large_char(p)); +if(a<0)print_int(a); +else print_hex(a); +} + +/*:691*//*692:*/ +#line 13666 "tex.w" + +void show_info(void); +void print_subsidiary_data(pointer p,ASCII_code c) + +{if(cur_length>=depth_threshold) +{if(math_type(p)!=empty)print_str(" []"); +} +else{append_char(c); +temp_ptr= p; +switch(math_type(p)){ +case math_char:{print_ln();print_current_string();print_fam_and_char(p); +}break; +case sub_box:show_info();break; +case sub_mlist:if(info(p)==null) +{print_ln();print_current_string();print_str("{}"); +} +else show_info();break; +default:do_nothing; +} +flush_char; +} +} + +/*:692*//*694:*/ +#line 13703 "tex.w" + +void print_style(int c) +{switch(c/2){ +case 0:print_esc(/*1645:*/ +#line 25831 "tex.w" +520 +/*:1645*/ +#line 13706 "tex.w" +);break; +case 1:print_esc(/*1646:*/ +#line 25834 "tex.w" +521 +/*:1646*/ +#line 13707 "tex.w" +);break; +case 2:print_esc(/*1647:*/ +#line 25837 "tex.w" +522 +/*:1647*/ +#line 13708 "tex.w" +);break; +case 3:print_esc(/*1648:*/ +#line 25840 "tex.w" +523 +/*:1648*/ +#line 13709 "tex.w" +);break; +default:print_str("Unknown style!"); +} +} + +/*:694*/ +#line 3688 "tex.w" + +/*225:*/ +#line 4671 "tex.w" + +void print_skip_param(int n) +{switch(n){ +case line_skip_code:print_esc(/*1405:*/ +#line 25111 "tex.w" +280 +/*:1405*/ +#line 4674 "tex.w" +);break; +case baseline_skip_code:print_esc(/*1406:*/ +#line 25114 "tex.w" +281 +/*:1406*/ +#line 4675 "tex.w" +);break; +case par_skip_code:print_esc(/*1407:*/ +#line 25117 "tex.w" +282 +/*:1407*/ +#line 4676 "tex.w" +);break; +case above_display_skip_code:print_esc(/*1408:*/ +#line 25120 "tex.w" +283 +/*:1408*/ +#line 4677 "tex.w" +);break; +case below_display_skip_code:print_esc(/*1409:*/ +#line 25123 "tex.w" +284 +/*:1409*/ +#line 4678 "tex.w" +);break; +case above_display_short_skip_code:print_esc(/*1410:*/ +#line 25126 "tex.w" +285 +/*:1410*/ +#line 4679 "tex.w" +);break; +case below_display_short_skip_code:print_esc(/*1411:*/ +#line 25129 "tex.w" +286 +/*:1411*/ +#line 4680 "tex.w" +);break; +case left_skip_code:print_esc(/*1412:*/ +#line 25132 "tex.w" +287 +/*:1412*/ +#line 4681 "tex.w" +);break; +case right_skip_code:print_esc(/*1413:*/ +#line 25135 "tex.w" +288 +/*:1413*/ +#line 4682 "tex.w" +);break; +case top_skip_code:print_esc(/*1414:*/ +#line 25138 "tex.w" +289 +/*:1414*/ +#line 4683 "tex.w" +);break; +case split_top_skip_code:print_esc(/*1415:*/ +#line 25141 "tex.w" +290 +/*:1415*/ +#line 4684 "tex.w" +);break; +case tab_skip_code:print_esc(/*1416:*/ +#line 25144 "tex.w" +291 +/*:1416*/ +#line 4685 "tex.w" +);break; +case space_skip_code:print_esc(/*1417:*/ +#line 25147 "tex.w" +292 +/*:1417*/ +#line 4686 "tex.w" +);break; +case xspace_skip_code:print_esc(/*1418:*/ +#line 25150 "tex.w" +293 +/*:1418*/ +#line 4687 "tex.w" +);break; +case par_fill_skip_code:print_esc(/*1419:*/ +#line 25153 "tex.w" +294 +/*:1419*/ +#line 4688 "tex.w" +);break; +case thin_mu_skip_code:print_esc(/*1420:*/ +#line 25156 "tex.w" +295 +/*:1420*/ +#line 4689 "tex.w" +);break; +case med_mu_skip_code:print_esc(/*1421:*/ +#line 25159 "tex.w" +296 +/*:1421*/ +#line 4690 "tex.w" +);break; +case thick_mu_skip_code:print_esc(/*1422:*/ +#line 25162 "tex.w" +297 +/*:1422*/ +#line 4691 "tex.w" +);break; +default:print_str("[unknown glue parameter!]"); +} +} + +/*:225*/ +#line 3689 "tex.w" + + +/*:179*//*182:*/ +#line 3726 "tex.w" +void show_node_list(int p) +{ +int n; +double g; +if(cur_length> depth_threshold) +{if(p> null)print_str(" []"); + +return; +} +n= 0; +while(p> mem_min) +{print_ln();print_current_string(); +if(p> mem_end) +{print_str("Bad link, display aborted.");return; + +} +incr(n);if(n> breadth_max) +{print_str("etc.");return; + +} +/*183:*/ +#line 3752 "tex.w" + +if(is_char_node(p))print_font_and_char(p); +else switch(type(p)){ +case hlist_node:case vlist_node:case unset_node:/*184:*/ +#line 3771 "tex.w" + +{if(type(p)==hlist_node)print_esc('h'); +else if(type(p)==vlist_node)print_esc('v'); +else print_esc(/*1388:*/ +#line 25060 "tex.w" +263 +/*:1388*/ +#line 3774 "tex.w" +); +print_str("box(");print_scaled(height(p));print_char('+'); +print_scaled(depth(p));print_str(")x");print_scaled(width(p)); +if(type(p)==unset_node) +/*185:*/ +#line 3787 "tex.w" + +{if(span_count(p)!=min_quarterword) +{print_str(" (");print_int(qo(span_count(p))+1); +print_str(" columns)"); +} +if(glue_stretch(p)!=0) +{print_str(", stretch ");print_glue(glue_stretch(p),glue_order(p),0); +} +if(glue_shrink(p)!=0) +{print_str(", shrink ");print_glue(glue_shrink(p),glue_sign(p),0); +} +} + +/*:185*/ +#line 3778 "tex.w" + +else{/*186:*/ +#line 3810 "tex.w" + +g= float(glue_set(p)); +if((g!=float_constant(0))&&(glue_sign(p)!=normal)) +{print_str(", glue set "); +if(glue_sign(p)==shrinking)print_str("- "); +if(abs(mem[p+glue_offset].i)<04000000)print_str("?.?"); +else if(abs(g)> float_constant(20000)) +{if(g> float_constant(0))print_char('>'); +else print_str("< -"); +print_glue(20000*unity,glue_order(p),0); +} +else print_glue(round(unity*g),glue_order(p),0); + +} + +/*:186*/ +#line 3779 "tex.w" +; +if(shift_amount(p)!=0) +{print_str(", shifted ");print_scaled(shift_amount(p)); +} +} +node_list_display(list_ptr(p)); +} + +/*:184*/ +#line 3755 "tex.w" +break; +case rule_node:/*187:*/ +#line 3825 "tex.w" + +{print_esc(/*1389:*/ +#line 25063 "tex.w" +264 +/*:1389*/ +#line 3826 "tex.w" +);print_rule_dimen(height(p));print_char('+'); +print_rule_dimen(depth(p));print_str(")x");print_rule_dimen(width(p)); +} + +/*:187*/ +#line 3756 "tex.w" +break; +case ins_node:/*188:*/ +#line 3830 "tex.w" + +{print_esc(/*1390:*/ +#line 25066 "tex.w" +265 +/*:1390*/ +#line 3831 "tex.w" +);print_int(qo(subtype(p))); +print_str(", natural size ");print_scaled(height(p)); +print_str("; split(");print_spec(split_top_ptr(p),0); +print_char(',');print_scaled(depth(p)); +print_str("); float cost ");print_int(float_cost(p)); +node_list_display(ins_ptr(p)); +} + +/*:188*/ +#line 3757 "tex.w" +break; +case whatsit_node:/*1356:*/ +#line 24746 "tex.w" + +switch(subtype(p)){ +case open_node:{print_write_whatsit(/*1783:*/ +#line 26245 "tex.w" +658 +/*:1783*/ +#line 24748 "tex.w" +,p); +print_char('=');print_file_name(open_name(p),open_area(p),open_ext(p)); +}break; +case write_node:{print_write_whatsit(/*1568:*/ +#line 25600 "tex.w" +443 +/*:1568*/ +#line 24751 "tex.w" +,p); +print_mark(write_tokens(p)); +}break; +case close_node:print_write_whatsit(/*1784:*/ +#line 26248 "tex.w" +659 +/*:1784*/ +#line 24754 "tex.w" +,p);break; +case special_node:{print_esc(/*1785:*/ +#line 26251 "tex.w" +660 +/*:1785*/ +#line 24755 "tex.w" +); +print_mark(write_tokens(p)); +}break; +case language_node:{print_esc(/*1787:*/ +#line 26257 "tex.w" +662 +/*:1787*/ +#line 24758 "tex.w" +); +print_int(what_lang(p));print_str(" (hyphenmin "); +print_int(what_lhm(p));print_char(','); +print_int(what_rhm(p));print_char(')'); +}break; +default:print_str("whatsit?"); +} + +/*:1356*/ +#line 3758 "tex.w" +break; +case glue_node:/*189:*/ +#line 3839 "tex.w" + +if(subtype(p)>=a_leaders)/*190:*/ +#line 3857 "tex.w" + +{print_esc(empty_string); +if(subtype(p)==c_leaders)print_char('c'); +else if(subtype(p)==x_leaders)print_char('x'); +print_str("leaders ");print_spec(glue_ptr(p),0); +node_list_display(leader_ptr(p)); +} + +/*:190*/ +#line 3840 "tex.w" + +else{print_esc(/*1391:*/ +#line 25069 "tex.w" +266 +/*:1391*/ +#line 3841 "tex.w" +); +if(subtype(p)!=normal) +{print_char('('); +if(subtype(p)<cond_math_glue) +print_skip_param(subtype(p)-1); +else if(subtype(p)==cond_math_glue)print_esc(/*1392:*/ +#line 25072 "tex.w" +267 +/*:1392*/ +#line 3846 "tex.w" +); +else print_esc(/*1393:*/ +#line 25075 "tex.w" +268 +/*:1393*/ +#line 3847 "tex.w" +); +print_char(')'); +} +if(subtype(p)!=cond_math_glue) +{print_char(' '); +if(subtype(p)<cond_math_glue)print_spec(glue_ptr(p),0); +else print_spec(glue_ptr(p),/*1394:*/ +#line 25078 "tex.w" +269 +/*:1394*/ +#line 3853 "tex.w" +); +} +} + +/*:189*/ +#line 3759 "tex.w" +break; +case kern_node:/*191:*/ +#line 3867 "tex.w" + +if(subtype(p)!=mu_glue) +{print_esc(/*1396:*/ +#line 25084 "tex.w" +271 +/*:1396*/ +#line 3869 "tex.w" +); +if(subtype(p)!=normal)print_char(' '); +print_scaled(width(p)); +if(subtype(p)==acc_kern)print_str(" (for accent)"); + +} +else{print_esc(/*1397:*/ +#line 25087 "tex.w" +272 +/*:1397*/ +#line 3875 "tex.w" +);print_scaled(width(p));print_str("mu"); +} + +/*:191*/ +#line 3760 "tex.w" +break; +case math_node:/*192:*/ +#line 3878 "tex.w" + +{print_esc(/*1398:*/ +#line 25090 "tex.w" +273 +/*:1398*/ +#line 3879 "tex.w" +); +if(subtype(p)==before)print_str("on"); +else print_str("off"); +if(width(p)!=0) +{print_str(", surrounded ");print_scaled(width(p)); +} +} + +/*:192*/ +#line 3761 "tex.w" +break; +case ligature_node:/*193:*/ +#line 3887 "tex.w" + +{print_font_and_char(lig_char(p));print_str(" (ligature "); +if(subtype(p)> 1)print_char('|'); +font_in_short_display= font(lig_char(p));short_display(lig_ptr(p)); +if(odd(subtype(p)))print_char('|'); +print_char(')'); +} + +/*:193*/ +#line 3762 "tex.w" +break; +case penalty_node:/*194:*/ +#line 3895 "tex.w" + +{print_esc(/*1399:*/ +#line 25093 "tex.w" +274 +/*:1399*/ +#line 3896 "tex.w" +);print_int(penalty(p)); +} + +/*:194*/ +#line 3763 "tex.w" +break; +case disc_node:/*195:*/ +#line 3902 "tex.w" + +{print_esc(/*1400:*/ +#line 25096 "tex.w" +275 +/*:1400*/ +#line 3903 "tex.w" +); +if(replace_count(p)> 0) +{print_str(" replacing ");print_int(replace_count(p)); +} +node_list_display(pre_break(p)); +append_char('|');show_node_list(post_break(p));flush_char; +} + +/*:195*/ +#line 3764 "tex.w" +break; +case mark_node:/*196:*/ +#line 3911 "tex.w" + +{print_esc(/*1401:*/ +#line 25099 "tex.w" +276 +/*:1401*/ +#line 3912 "tex.w" +);print_mark(mark_ptr(p)); +} + +/*:196*/ +#line 3765 "tex.w" +break; +case adjust_node:/*197:*/ +#line 3915 "tex.w" + +{print_esc(/*1402:*/ +#line 25102 "tex.w" +277 +/*:1402*/ +#line 3916 "tex.w" +);node_list_display(adjust_ptr(p)); +} + +/*:197*/ +#line 3766 "tex.w" +break; +/*690:*/ +#line 13635 "tex.w" + +case style_node:print_style(subtype(p));break; +case choice_node:/*695:*/ +#line 13714 "tex.w" + +{print_esc(/*1547:*/ +#line 25537 "tex.w" +422 +/*:1547*/ +#line 13715 "tex.w" +); +append_char('D');show_node_list(display_mlist(p));flush_char; +append_char('T');show_node_list(text_mlist(p));flush_char; +append_char('S');show_node_list(script_mlist(p));flush_char; +append_char('s');show_node_list(script_script_mlist(p));flush_char; +} + +/*:695*/ +#line 13637 "tex.w" +break; +case ord_noad:case op_noad:case bin_noad:case rel_noad:case open_noad:case close_noad:case punct_noad:case inner_noad: +case radical_noad:case over_noad:case under_noad:case vcenter_noad:case accent_noad: +case left_noad:case right_noad:/*696:*/ +#line 13722 "tex.w" + +{switch(type(p)){ +case ord_noad:print_esc(/*1649:*/ +#line 25843 "tex.w" +524 +/*:1649*/ +#line 13724 "tex.w" +);break; +case op_noad:print_esc(/*1650:*/ +#line 25846 "tex.w" +525 +/*:1650*/ +#line 13725 "tex.w" +);break; +case bin_noad:print_esc(/*1651:*/ +#line 25849 "tex.w" +526 +/*:1651*/ +#line 13726 "tex.w" +);break; +case rel_noad:print_esc(/*1652:*/ +#line 25852 "tex.w" +527 +/*:1652*/ +#line 13727 "tex.w" +);break; +case open_noad:print_esc(/*1653:*/ +#line 25855 "tex.w" +528 +/*:1653*/ +#line 13728 "tex.w" +);break; +case close_noad:print_esc(/*1654:*/ +#line 25858 "tex.w" +529 +/*:1654*/ +#line 13729 "tex.w" +);break; +case punct_noad:print_esc(/*1655:*/ +#line 25861 "tex.w" +530 +/*:1655*/ +#line 13730 "tex.w" +);break; +case inner_noad:print_esc(/*1656:*/ +#line 25864 "tex.w" +531 +/*:1656*/ +#line 13731 "tex.w" +);break; +case over_noad:print_esc(/*1657:*/ +#line 25867 "tex.w" +532 +/*:1657*/ +#line 13732 "tex.w" +);break; +case under_noad:print_esc(/*1658:*/ +#line 25870 "tex.w" +533 +/*:1658*/ +#line 13733 "tex.w" +);break; +case vcenter_noad:print_esc(/*1561:*/ +#line 25579 "tex.w" +436 +/*:1561*/ +#line 13734 "tex.w" +);break; +case radical_noad:{print_esc(/*1555:*/ +#line 25561 "tex.w" +430 +/*:1555*/ +#line 13735 "tex.w" +);print_delimiter(left_delimiter(p)); +}break; +case accent_noad:{print_esc(/*1530:*/ +#line 25486 "tex.w" +405 +/*:1530*/ +#line 13737 "tex.w" +);print_fam_and_char(accent_chr(p)); +}break; +case left_noad:{print_esc(/*1659:*/ +#line 25873 "tex.w" +534 +/*:1659*/ +#line 13739 "tex.w" +);print_delimiter(delimiter(p)); +}break; +case right_noad:{print_esc(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 13741 "tex.w" +);print_delimiter(delimiter(p)); +} +} +if(subtype(p)!=normal) +if(subtype(p)==limits)print_esc(/*1661:*/ +#line 25879 "tex.w" +536 +/*:1661*/ +#line 13745 "tex.w" +); +else print_esc(/*1662:*/ +#line 25882 "tex.w" +537 +/*:1662*/ +#line 13746 "tex.w" +); +if(type(p)<left_noad)print_subsidiary_data(nucleus(p),'.'); +print_subsidiary_data(supscr(p),'^'); +print_subsidiary_data(subscr(p),'_'); +} + +/*:696*/ +#line 13640 "tex.w" +break; +case fraction_noad:/*697:*/ +#line 13752 "tex.w" + +{print_esc(/*1663:*/ +#line 25885 "tex.w" +538 +/*:1663*/ +#line 13753 "tex.w" +); +if(thickness(p)==default_code)print_str("= default"); +else print_scaled(thickness(p)); +if((small_fam(left_delimiter(p))!=0)|| +(small_char(left_delimiter(p))!=min_quarterword)|| +(large_fam(left_delimiter(p))!=0)|| +(large_char(left_delimiter(p))!=min_quarterword)) +{print_str(", left-delimiter ");print_delimiter(left_delimiter(p)); +} +if((small_fam(right_delimiter(p))!=0)|| +(small_char(right_delimiter(p))!=min_quarterword)|| +(large_fam(right_delimiter(p))!=0)|| +(large_char(right_delimiter(p))!=min_quarterword)) +{print_str(", right-delimiter ");print_delimiter(right_delimiter(p)); +} +print_subsidiary_data(numerator(p),'\\'); +print_subsidiary_data(denominator(p),'/'); +} + +/*:697*/ +#line 13641 "tex.w" +break; + +/*:690*/ +#line 3767 "tex.w" + +default:print_str("Unknown node type!"); +} + +/*:183*/ +#line 3746 "tex.w" +; +p= link(p); +} + +} + +/*:182*//*198:*/ +#line 3922 "tex.w" +void show_box(pointer p) +{/*236:*/ +#line 5085 "tex.w" + +depth_threshold= show_box_depth; +breadth_max= show_box_breadth + +/*:236*/ +#line 3923 "tex.w" +; +if(breadth_max<=0)breadth_max= 5; +if(pool_ptr+depth_threshold>=pool_size) +depth_threshold= pool_size-pool_ptr-1; + +show_node_list(p); +print_ln(); +} + +/*:198*//*200:*/ +#line 3946 "tex.w" +void delete_token_ref(pointer p) + +{if(token_ref_count(p)==null)flush_list(p); +else decr(token_ref_count(p)); +} + +/*:200*//*201:*/ +#line 3960 "tex.w" +void delete_glue_ref(pointer p) +fast_delete_glue_ref(p) + +/*:201*//*202:*/ +#line 3968 "tex.w" +void flush_node_list(pointer p) +{ +pointer q; +while(p!=null) + +{q= link(p); +if(is_char_node(p))free_avail(p) +else{switch(type(p)){ +case hlist_node:case vlist_node:case unset_node:{flush_node_list(list_ptr(p)); +free_node(p,box_node_size);goto done; +} +case rule_node:{free_node(p,rule_node_size);goto done; +} +case ins_node:{flush_node_list(ins_ptr(p)); +delete_glue_ref(split_top_ptr(p)); +free_node(p,ins_node_size);goto done; +} +case whatsit_node:/*1358:*/ +#line 24780 "tex.w" + +{switch(subtype(p)){ +case open_node:free_node(p,open_node_size);break; +case write_node:case special_node:{delete_token_ref(write_tokens(p)); +free_node(p,write_node_size);goto done; +} +case close_node:case language_node:free_node(p,small_node_size);break; +default:confusion(/*1790:*/ +#line 26266 "tex.w" +665 +/*:1790*/ +#line 24787 "tex.w" +); + +} +goto done; +} + +/*:1358*/ +#line 3985 "tex.w" + +case glue_node:{fast_delete_glue_ref(glue_ptr(p)); +if(leader_ptr(p)!=null)flush_node_list(leader_ptr(p)); +}break; +case kern_node:case math_node:case penalty_node:do_nothing;break; +case ligature_node:flush_node_list(lig_ptr(p));break; +case mark_node:delete_token_ref(mark_ptr(p));break; +case disc_node:{flush_node_list(pre_break(p)); +flush_node_list(post_break(p)); +}break; +case adjust_node:flush_node_list(adjust_ptr(p));break; +/*698:*/ +#line 13774 "tex.w" + +case style_node:{free_node(p,style_node_size);goto done; +} +case choice_node:{flush_node_list(display_mlist(p)); +flush_node_list(text_mlist(p)); +flush_node_list(script_mlist(p)); +flush_node_list(script_script_mlist(p)); +free_node(p,style_node_size);goto done; +} +case ord_noad:case op_noad:case bin_noad:case rel_noad:case open_noad:case close_noad:case punct_noad:case inner_noad: +case radical_noad:case over_noad:case under_noad:case vcenter_noad:case accent_noad: +{if(math_type(nucleus(p))>=sub_box) +flush_node_list(info(nucleus(p))); +if(math_type(supscr(p))>=sub_box) +flush_node_list(info(supscr(p))); +if(math_type(subscr(p))>=sub_box) +flush_node_list(info(subscr(p))); +if(type(p)==radical_noad)free_node(p,radical_noad_size); +else if(type(p)==accent_noad)free_node(p,accent_noad_size); +else free_node(p,noad_size); +goto done; +} +case left_noad:case right_noad:{free_node(p,noad_size);goto done; +} +case fraction_noad:{flush_node_list(info(numerator(p))); +flush_node_list(info(denominator(p))); +free_node(p,fraction_noad_size);goto done; +} + +/*:698*/ +#line 3996 "tex.w" + +default:confusion(/*1403:*/ +#line 25105 "tex.w" +278 +/*:1403*/ +#line 3997 "tex.w" +); + +} +free_node(p,small_node_size); +done:;} +p= q; +} +} + +/*:202*//*204:*/ +#line 4030 "tex.w" +pointer copy_node_list(pointer p) + +{pointer h; +pointer q; +pointer r; +uint8_t words; +h= get_avail();q= h; +while(p!=null) +{/*205:*/ +#line 4045 "tex.w" + +words= 1; +if(is_char_node(p))r= get_avail(); +else/*206:*/ +#line 4054 "tex.w" + +switch(type(p)){ +case hlist_node:case vlist_node:case unset_node:{r= get_node(box_node_size); +mem[r+6]= mem[p+6];mem[r+5]= mem[p+5]; +list_ptr(r)= copy_node_list(list_ptr(p)); +words= 5; +}break; +case rule_node:{r= get_node(rule_node_size);words= rule_node_size; +}break; +case ins_node:{r= get_node(ins_node_size);mem[r+4]= mem[p+4]; +add_glue_ref(split_top_ptr(p)); +ins_ptr(r)= copy_node_list(ins_ptr(p)); +words= ins_node_size-1; +}break; +case whatsit_node:/*1357:*/ +#line 24766 "tex.w" + +switch(subtype(p)){ +case open_node:{r= get_node(open_node_size);words= open_node_size; +}break; +case write_node:case special_node:{r= get_node(write_node_size); +add_token_ref(write_tokens(p));words= write_node_size; +}break; +case close_node:case language_node:{r= get_node(small_node_size); +words= small_node_size; +}break; +default:confusion(/*1789:*/ +#line 26263 "tex.w" +664 +/*:1789*/ +#line 24776 "tex.w" +); + +} + +/*:1357*/ +#line 4069 "tex.w" +break; +case glue_node:{r= get_node(small_node_size);add_glue_ref(glue_ptr(p)); +glue_ptr(r)= glue_ptr(p);leader_ptr(r)= copy_node_list(leader_ptr(p)); +}break; +case kern_node:case math_node:case penalty_node:{r= get_node(small_node_size); +words= small_node_size; +}break; +case ligature_node:{r= get_node(small_node_size); +mem[lig_char(r)]= mem[lig_char(p)]; +lig_ptr(r)= copy_node_list(lig_ptr(p)); +}break; +case disc_node:{r= get_node(small_node_size); +pre_break(r)= copy_node_list(pre_break(p)); +post_break(r)= copy_node_list(post_break(p)); +}break; +case mark_node:{r= get_node(small_node_size);add_token_ref(mark_ptr(p)); +words= small_node_size; +}break; +case adjust_node:{r= get_node(small_node_size); +adjust_ptr(r)= copy_node_list(adjust_ptr(p)); +}break; +default:confusion(/*1404:*/ +#line 25108 "tex.w" +279 +/*:1404*/ +#line 4090 "tex.w" +); + +} + +/*:206*/ +#line 4049 "tex.w" +; +while(words> 0) +{decr(words);mem[r+words]= mem[p+words]; +} + +/*:205*/ +#line 4038 "tex.w" +; +link(q)= r;q= r;p= link(p); +} +link(q)= null;q= link(h);free_avail(h); +return q; +} + +/*:204*//*211:*/ +#line 4304 "tex.w" +void print_mode(int m) +{if(m> 0) +switch(m/(max_command+1)){ +case 0:print_str("vertical");break; +case 1:print_str("horizontal");break; +case 2:print_str("display math"); +} +else if(m==0)print_str("no"); +else switch((-m)/(max_command+1)){ +case 0:print_str("internal vertical");break; +case 1:print_str("restricted horizontal");break; +case 2:print_str("math"); +} +print_str(" mode"); +} + +/*:211*//*216:*/ +#line 4418 "tex.w" +void push_nest(void) +{if(nest_ptr> max_nest_stack) +{max_nest_stack= nest_ptr; +if(nest_ptr==nest_size)overflow("semantic nest size",nest_size); + +} +nest[nest_ptr]= cur_list; +incr(nest_ptr);head= get_avail();tail= head;prev_graf= 0;mode_line= line; +} + +/*:216*//*217:*/ +#line 4433 "tex.w" +void pop_nest(void) +{free_avail(head);decr(nest_ptr);cur_list= nest[nest_ptr]; +} + +/*:217*//*218:*/ +#line 4439 "tex.w" +void print_totals(void); +void show_activities(void) +{int p; +int16_t m; +memory_word a; +pointer q,r; +int t; +nest[nest_ptr]= cur_list; +print_nl("");print_ln(); +for(p= nest_ptr;p>=0;p--) +{m= nest[p].mode_field;a= nest[p].aux_field; +print_nl("### ");print_mode(m); +print_str(" entered at line ");print_int(abs(nest[p].ml_field)); +if(m==hmode)if(nest[p].pg_field!=040600000) +{print_str(" (language");print_int(nest[p].pg_field%0200000); +print_str(":hyphenmin");print_int(nest[p].pg_field/020000000); +print_char(',');print_int((nest[p].pg_field/0200000)%0100); +print_char(')'); +} +if(nest[p].ml_field<0)print_str(" (\\output routine)"); +if(p==0) +{/*986:*/ +#line 19296 "tex.w" + +if(page_head!=page_tail) +{print_nl("### current page:"); +if(output_active)print_str(" (held over for next output)"); + +show_box(link(page_head)); +if(page_contents> empty) +{print_nl("total height ");print_totals(); + +print_nl(" goal height ");print_scaled(page_goal); + +r= link(page_ins_head); +while(r!=page_ins_head) +{print_ln();print_esc(/*1390:*/ +#line 25066 "tex.w" +265 +/*:1390*/ +#line 19309 "tex.w" +);t= qo(subtype(r)); +print_int(t);print_str(" adds "); +if(count(t)==1000)t= height(r); +else t= x_over_n(height(r),1000)*count(t); +print_scaled(t); +if(type(r)==split_up) +{q= page_head;t= 0; +do{q= link(q); +if((type(q)==ins_node)&&(subtype(q)==subtype(r)))incr(t); +}while(!(q==broken_ins(r))); +print_str(", #");print_int(t);print_str(" might split"); +} +r= link(r); +} +} +} + +/*:986*/ +#line 4460 "tex.w" +; +if(link(contrib_head)!=null) +print_nl("### recent contributions:"); +} +show_box(link(nest[p].head_field)); +/*219:*/ +#line 4469 "tex.w" + +switch(abs(m)/(max_command+1)){ +case 0:{print_nl("prevdepth "); +if(a.sc<=ignore_depth)print_str("ignored"); +else print_scaled(a.sc); +if(nest[p].pg_field!=0) +{print_str(", prevgraf "); +print_int(nest[p].pg_field);print_str(" line"); +if(nest[p].pg_field!=1)print_char('s'); +} +}break; +case 1:{print_nl("spacefactor ");print_int(a.hh.lh); +if(m> 0)if(a.hh.rh> 0) +{print_str(", current language ");print_int(a.hh.rh); +} +}break; +case 2:if(a.i!=null) +{print_str("this will be denominator of:");show_box(a.i); +} +} + +/*:219*/ +#line 4465 "tex.w" +; +} +} + +/*:218*//*237:*/ +#line 5091 "tex.w" +void print_param(int n) +{switch(n){ +case pretolerance_code:print_esc(/*1446:*/ +#line 25234 "tex.w" +321 +/*:1446*/ +#line 5093 "tex.w" +);break; +case tolerance_code:print_esc(/*1447:*/ +#line 25237 "tex.w" +322 +/*:1447*/ +#line 5094 "tex.w" +);break; +case line_penalty_code:print_esc(/*1448:*/ +#line 25240 "tex.w" +323 +/*:1448*/ +#line 5095 "tex.w" +);break; +case hyphen_penalty_code:print_esc(/*1449:*/ +#line 25243 "tex.w" +324 +/*:1449*/ +#line 5096 "tex.w" +);break; +case ex_hyphen_penalty_code:print_esc(/*1450:*/ +#line 25246 "tex.w" +325 +/*:1450*/ +#line 5097 "tex.w" +);break; +case club_penalty_code:print_esc(/*1451:*/ +#line 25249 "tex.w" +326 +/*:1451*/ +#line 5098 "tex.w" +);break; +case widow_penalty_code:print_esc(/*1452:*/ +#line 25252 "tex.w" +327 +/*:1452*/ +#line 5099 "tex.w" +);break; +case display_widow_penalty_code:print_esc(/*1453:*/ +#line 25255 "tex.w" +328 +/*:1453*/ +#line 5100 "tex.w" +);break; +case broken_penalty_code:print_esc(/*1454:*/ +#line 25258 "tex.w" +329 +/*:1454*/ +#line 5101 "tex.w" +);break; +case bin_op_penalty_code:print_esc(/*1455:*/ +#line 25261 "tex.w" +330 +/*:1455*/ +#line 5102 "tex.w" +);break; +case rel_penalty_code:print_esc(/*1456:*/ +#line 25264 "tex.w" +331 +/*:1456*/ +#line 5103 "tex.w" +);break; +case pre_display_penalty_code:print_esc(/*1457:*/ +#line 25267 "tex.w" +332 +/*:1457*/ +#line 5104 "tex.w" +);break; +case post_display_penalty_code:print_esc(/*1458:*/ +#line 25270 "tex.w" +333 +/*:1458*/ +#line 5105 "tex.w" +);break; +case inter_line_penalty_code:print_esc(/*1459:*/ +#line 25273 "tex.w" +334 +/*:1459*/ +#line 5106 "tex.w" +);break; +case double_hyphen_demerits_code:print_esc(/*1460:*/ +#line 25276 "tex.w" +335 +/*:1460*/ +#line 5107 "tex.w" +);break; +case final_hyphen_demerits_code:print_esc(/*1461:*/ +#line 25279 "tex.w" +336 +/*:1461*/ +#line 5108 "tex.w" +);break; +case adj_demerits_code:print_esc(/*1462:*/ +#line 25282 "tex.w" +337 +/*:1462*/ +#line 5109 "tex.w" +);break; +case mag_code:print_esc(/*1463:*/ +#line 25285 "tex.w" +338 +/*:1463*/ +#line 5110 "tex.w" +);break; +case delimiter_factor_code:print_esc(/*1464:*/ +#line 25288 "tex.w" +339 +/*:1464*/ +#line 5111 "tex.w" +);break; +case looseness_code:print_esc(/*1465:*/ +#line 25291 "tex.w" +340 +/*:1465*/ +#line 5112 "tex.w" +);break; +case time_code:print_esc(/*1466:*/ +#line 25294 "tex.w" +341 +/*:1466*/ +#line 5113 "tex.w" +);break; +case day_code:print_esc(/*1467:*/ +#line 25297 "tex.w" +342 +/*:1467*/ +#line 5114 "tex.w" +);break; +case month_code:print_esc(/*1468:*/ +#line 25300 "tex.w" +343 +/*:1468*/ +#line 5115 "tex.w" +);break; +case year_code:print_esc(/*1469:*/ +#line 25303 "tex.w" +344 +/*:1469*/ +#line 5116 "tex.w" +);break; +case show_box_breadth_code:print_esc(/*1470:*/ +#line 25306 "tex.w" +345 +/*:1470*/ +#line 5117 "tex.w" +);break; +case show_box_depth_code:print_esc(/*1471:*/ +#line 25309 "tex.w" +346 +/*:1471*/ +#line 5118 "tex.w" +);break; +case hbadness_code:print_esc(/*1472:*/ +#line 25312 "tex.w" +347 +/*:1472*/ +#line 5119 "tex.w" +);break; +case vbadness_code:print_esc(/*1473:*/ +#line 25315 "tex.w" +348 +/*:1473*/ +#line 5120 "tex.w" +);break; +case pausing_code:print_esc(/*1474:*/ +#line 25318 "tex.w" +349 +/*:1474*/ +#line 5121 "tex.w" +);break; +case tracing_online_code:print_esc(/*1475:*/ +#line 25321 "tex.w" +350 +/*:1475*/ +#line 5122 "tex.w" +);break; +case tracing_macros_code:print_esc(/*1476:*/ +#line 25324 "tex.w" +351 +/*:1476*/ +#line 5123 "tex.w" +);break; +case tracing_stats_code:print_esc(/*1477:*/ +#line 25327 "tex.w" +352 +/*:1477*/ +#line 5124 "tex.w" +);break; +case tracing_paragraphs_code:print_esc(/*1478:*/ +#line 25330 "tex.w" +353 +/*:1478*/ +#line 5125 "tex.w" +);break; +case tracing_pages_code:print_esc(/*1479:*/ +#line 25333 "tex.w" +354 +/*:1479*/ +#line 5126 "tex.w" +);break; +case tracing_output_code:print_esc(/*1480:*/ +#line 25336 "tex.w" +355 +/*:1480*/ +#line 5127 "tex.w" +);break; +case tracing_lost_chars_code:print_esc(/*1481:*/ +#line 25339 "tex.w" +356 +/*:1481*/ +#line 5128 "tex.w" +);break; +case tracing_commands_code:print_esc(/*1482:*/ +#line 25342 "tex.w" +357 +/*:1482*/ +#line 5129 "tex.w" +);break; +case tracing_restores_code:print_esc(/*1483:*/ +#line 25345 "tex.w" +358 +/*:1483*/ +#line 5130 "tex.w" +);break; +case uc_hyph_code:print_esc(/*1484:*/ +#line 25348 "tex.w" +359 +/*:1484*/ +#line 5131 "tex.w" +);break; +case output_penalty_code:print_esc(/*1485:*/ +#line 25351 "tex.w" +360 +/*:1485*/ +#line 5132 "tex.w" +);break; +case max_dead_cycles_code:print_esc(/*1486:*/ +#line 25354 "tex.w" +361 +/*:1486*/ +#line 5133 "tex.w" +);break; +case hang_after_code:print_esc(/*1487:*/ +#line 25357 "tex.w" +362 +/*:1487*/ +#line 5134 "tex.w" +);break; +case floating_penalty_code:print_esc(/*1488:*/ +#line 25360 "tex.w" +363 +/*:1488*/ +#line 5135 "tex.w" +);break; +case global_defs_code:print_esc(/*1489:*/ +#line 25363 "tex.w" +364 +/*:1489*/ +#line 5136 "tex.w" +);break; +case cur_fam_code:print_esc(/*1490:*/ +#line 25366 "tex.w" +365 +/*:1490*/ +#line 5137 "tex.w" +);break; +case escape_char_code:print_esc(/*1491:*/ +#line 25369 "tex.w" +366 +/*:1491*/ +#line 5138 "tex.w" +);break; +case default_hyphen_char_code:print_esc(/*1492:*/ +#line 25372 "tex.w" +367 +/*:1492*/ +#line 5139 "tex.w" +);break; +case default_skew_char_code:print_esc(/*1493:*/ +#line 25375 "tex.w" +368 +/*:1493*/ +#line 5140 "tex.w" +);break; +case end_line_char_code:print_esc(/*1494:*/ +#line 25378 "tex.w" +369 +/*:1494*/ +#line 5141 "tex.w" +);break; +case new_line_char_code:print_esc(/*1495:*/ +#line 25381 "tex.w" +370 +/*:1495*/ +#line 5142 "tex.w" +);break; +case language_code:print_esc(/*1496:*/ +#line 25384 "tex.w" +371 +/*:1496*/ +#line 5143 "tex.w" +);break; +case left_hyphen_min_code:print_esc(/*1497:*/ +#line 25387 "tex.w" +372 +/*:1497*/ +#line 5144 "tex.w" +);break; +case right_hyphen_min_code:print_esc(/*1498:*/ +#line 25390 "tex.w" +373 +/*:1498*/ +#line 5145 "tex.w" +);break; +case holding_inserts_code:print_esc(/*1499:*/ +#line 25393 "tex.w" +374 +/*:1499*/ +#line 5146 "tex.w" +);break; +case error_context_lines_code:print_esc(/*1500:*/ +#line 25396 "tex.w" +375 +/*:1500*/ +#line 5147 "tex.w" +);break; +default:print_str("[unknown integer parameter!]"); +} +} + +/*:237*//*241:*/ +#line 5293 "tex.w" +void fix_date_and_time(void) +{time= 12*60; +day= 4; +month= 7; +year= 1776; +} + +/*:241*//*245:*/ +#line 5318 "tex.w" +void begin_diagnostic(void) +{old_setting= selector; +if((tracing_online<=0)&&(selector==term_and_log)) +{decr(selector); +if(history==spotless)history= warning_issued; +} +} + +void end_diagnostic(bool blank_line) + +{print_nl(""); +if(blank_line)print_ln(); +selector= old_setting; +} + +/*:245*//*247:*/ +#line 5392 "tex.w" +void print_length_param(int n) +{switch(n){ +case par_indent_code:print_esc(/*1503:*/ +#line 25405 "tex.w" +378 +/*:1503*/ +#line 5394 "tex.w" +);break; +case math_surround_code:print_esc(/*1504:*/ +#line 25408 "tex.w" +379 +/*:1504*/ +#line 5395 "tex.w" +);break; +case line_skip_limit_code:print_esc(/*1505:*/ +#line 25411 "tex.w" +380 +/*:1505*/ +#line 5396 "tex.w" +);break; +case hsize_code:print_esc(/*1506:*/ +#line 25414 "tex.w" +381 +/*:1506*/ +#line 5397 "tex.w" +);break; +case vsize_code:print_esc(/*1507:*/ +#line 25417 "tex.w" +382 +/*:1507*/ +#line 5398 "tex.w" +);break; +case max_depth_code:print_esc(/*1508:*/ +#line 25420 "tex.w" +383 +/*:1508*/ +#line 5399 "tex.w" +);break; +case split_max_depth_code:print_esc(/*1509:*/ +#line 25423 "tex.w" +384 +/*:1509*/ +#line 5400 "tex.w" +);break; +case box_max_depth_code:print_esc(/*1510:*/ +#line 25426 "tex.w" +385 +/*:1510*/ +#line 5401 "tex.w" +);break; +case hfuzz_code:print_esc(/*1511:*/ +#line 25429 "tex.w" +386 +/*:1511*/ +#line 5402 "tex.w" +);break; +case vfuzz_code:print_esc(/*1512:*/ +#line 25432 "tex.w" +387 +/*:1512*/ +#line 5403 "tex.w" +);break; +case delimiter_shortfall_code:print_esc(/*1513:*/ +#line 25435 "tex.w" +388 +/*:1513*/ +#line 5404 "tex.w" +);break; +case null_delimiter_space_code:print_esc(/*1514:*/ +#line 25438 "tex.w" +389 +/*:1514*/ +#line 5405 "tex.w" +);break; +case script_space_code:print_esc(/*1515:*/ +#line 25441 "tex.w" +390 +/*:1515*/ +#line 5406 "tex.w" +);break; +case pre_display_size_code:print_esc(/*1516:*/ +#line 25444 "tex.w" +391 +/*:1516*/ +#line 5407 "tex.w" +);break; +case display_width_code:print_esc(/*1517:*/ +#line 25447 "tex.w" +392 +/*:1517*/ +#line 5408 "tex.w" +);break; +case display_indent_code:print_esc(/*1518:*/ +#line 25450 "tex.w" +393 +/*:1518*/ +#line 5409 "tex.w" +);break; +case overfull_rule_code:print_esc(/*1519:*/ +#line 25453 "tex.w" +394 +/*:1519*/ +#line 5410 "tex.w" +);break; +case hang_indent_code:print_esc(/*1520:*/ +#line 25456 "tex.w" +395 +/*:1520*/ +#line 5411 "tex.w" +);break; +case h_offset_code:print_esc(/*1521:*/ +#line 25459 "tex.w" +396 +/*:1521*/ +#line 5412 "tex.w" +);break; +case v_offset_code:print_esc(/*1522:*/ +#line 25462 "tex.w" +397 +/*:1522*/ +#line 5413 "tex.w" +);break; +case emergency_stretch_code:print_esc(/*1523:*/ +#line 25465 "tex.w" +398 +/*:1523*/ +#line 5414 "tex.w" +);break; +default:print_str("[unknown dimen parameter!]"); +} +} + +/*:247*//*252:*/ +#line 5484 "tex.w" +/*298:*/ +#line 6463 "tex.w" + +void print_cmd_chr(quarterword cmd,halfword chr_code) +{switch(cmd){ +case left_brace:chr_cmd("begin-group character ")break; +case right_brace:chr_cmd("end-group character ")break; +case math_shift:chr_cmd("math shift character ")break; +case mac_param:chr_cmd("macro parameter character ")break; +case sup_mark:chr_cmd("superscript character ")break; +case sub_mark:chr_cmd("subscript character ")break; +case endv:print_str("end of alignment template");break; +case spacer:chr_cmd("blank space ")break; +case letter:chr_cmd("the letter ")break; +case other_char:chr_cmd("the character ")break; +/*227:*/ +#line 4740 "tex.w" + +case assign_glue:case assign_mu_glue:if(chr_code<skip_base) +print_skip_param(chr_code-glue_base); +else if(chr_code<mu_skip_base) +{print_esc(/*1423:*/ +#line 25165 "tex.w" +298 +/*:1423*/ +#line 4744 "tex.w" +);print_int(chr_code-skip_base); +} +else{print_esc(/*1424:*/ +#line 25168 "tex.w" +299 +/*:1424*/ +#line 4746 "tex.w" +);print_int(chr_code-mu_skip_base); +}break; + +/*:227*//*231:*/ +#line 4841 "tex.w" + +case assign_toks:if(chr_code>=toks_base) +{print_esc(/*1435:*/ +#line 25201 "tex.w" +310 +/*:1435*/ +#line 4843 "tex.w" +);print_int(chr_code-toks_base); +} +else switch(chr_code){ +case output_routine_loc:print_esc(/*1426:*/ +#line 25174 "tex.w" +301 +/*:1426*/ +#line 4846 "tex.w" +);break; +case every_par_loc:print_esc(/*1427:*/ +#line 25177 "tex.w" +302 +/*:1427*/ +#line 4847 "tex.w" +);break; +case every_math_loc:print_esc(/*1428:*/ +#line 25180 "tex.w" +303 +/*:1428*/ +#line 4848 "tex.w" +);break; +case every_display_loc:print_esc(/*1429:*/ +#line 25183 "tex.w" +304 +/*:1429*/ +#line 4849 "tex.w" +);break; +case every_hbox_loc:print_esc(/*1430:*/ +#line 25186 "tex.w" +305 +/*:1430*/ +#line 4850 "tex.w" +);break; +case every_vbox_loc:print_esc(/*1431:*/ +#line 25189 "tex.w" +306 +/*:1431*/ +#line 4851 "tex.w" +);break; +case every_job_loc:print_esc(/*1432:*/ +#line 25192 "tex.w" +307 +/*:1432*/ +#line 4852 "tex.w" +);break; +case every_cr_loc:print_esc(/*1433:*/ +#line 25195 "tex.w" +308 +/*:1433*/ +#line 4853 "tex.w" +);break; +default:print_esc(/*1434:*/ +#line 25198 "tex.w" +309 +/*:1434*/ +#line 4854 "tex.w" +); +}break; + +/*:231*//*239:*/ +#line 5269 "tex.w" + +case assign_int:if(chr_code<count_base)print_param(chr_code-int_base); +else{print_esc(/*1501:*/ +#line 25399 "tex.w" +376 +/*:1501*/ +#line 5271 "tex.w" +);print_int(chr_code-count_base); +}break; + +/*:239*//*249:*/ +#line 5465 "tex.w" + +case assign_dimen:if(chr_code<scaled_base) +print_length_param(chr_code-dimen_base); +else{print_esc(/*1524:*/ +#line 25468 "tex.w" +399 +/*:1524*/ +#line 5468 "tex.w" +);print_int(chr_code-scaled_base); +}break; + +/*:249*//*266:*/ +#line 5797 "tex.w" + +case accent:print_esc(/*1530:*/ +#line 25486 "tex.w" +405 +/*:1530*/ +#line 5798 "tex.w" +);break; +case advance:print_esc(/*1531:*/ +#line 25489 "tex.w" +406 +/*:1531*/ +#line 5799 "tex.w" +);break; +case after_assignment:print_esc(/*1532:*/ +#line 25492 "tex.w" +407 +/*:1532*/ +#line 5800 "tex.w" +);break; +case after_group:print_esc(/*1533:*/ +#line 25495 "tex.w" +408 +/*:1533*/ +#line 5801 "tex.w" +);break; +case assign_font_dimen:print_esc(/*1541:*/ +#line 25519 "tex.w" +416 +/*:1541*/ +#line 5802 "tex.w" +);break; +case begin_group:print_esc(/*1534:*/ +#line 25498 "tex.w" +409 +/*:1534*/ +#line 5803 "tex.w" +);break; +case break_penalty:print_esc(/*1553:*/ +#line 25555 "tex.w" +428 +/*:1553*/ +#line 5804 "tex.w" +);break; +case char_num:print_esc(/*1535:*/ +#line 25501 "tex.w" +410 +/*:1535*/ +#line 5805 "tex.w" +);break; +case cs_name:print_esc(/*1526:*/ +#line 25474 "tex.w" +401 +/*:1526*/ +#line 5806 "tex.w" +);break; +case def_font:print_esc(/*1540:*/ +#line 25516 "tex.w" +415 +/*:1540*/ +#line 5807 "tex.w" +);break; +case delim_num:print_esc(/*1536:*/ +#line 25504 "tex.w" +411 +/*:1536*/ +#line 5808 "tex.w" +);break; +case divide:print_esc(/*1537:*/ +#line 25507 "tex.w" +412 +/*:1537*/ +#line 5809 "tex.w" +);break; +case end_cs_name:print_esc(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 5810 "tex.w" +);break; +case end_group:print_esc(/*1538:*/ +#line 25510 "tex.w" +413 +/*:1538*/ +#line 5811 "tex.w" +);break; +case ex_space:print_esc(' ');break; +case expand_after:print_esc(/*1539:*/ +#line 25513 "tex.w" +414 +/*:1539*/ +#line 5813 "tex.w" +);break; +case halign:print_esc(/*1542:*/ +#line 25522 "tex.w" +417 +/*:1542*/ +#line 5814 "tex.w" +);break; +case hrule:print_esc(/*1543:*/ +#line 25525 "tex.w" +418 +/*:1543*/ +#line 5815 "tex.w" +);break; +case ignore_spaces:print_esc(/*1544:*/ +#line 25528 "tex.w" +419 +/*:1544*/ +#line 5816 "tex.w" +);break; +case insert:print_esc(/*1390:*/ +#line 25066 "tex.w" +265 +/*:1390*/ +#line 5817 "tex.w" +);break; +case ital_corr:print_esc('/');break; +case mark:print_esc(/*1401:*/ +#line 25099 "tex.w" +276 +/*:1401*/ +#line 5819 "tex.w" +);break; +case math_accent:print_esc(/*1545:*/ +#line 25531 "tex.w" +420 +/*:1545*/ +#line 5820 "tex.w" +);break; +case math_char_num:print_esc(/*1546:*/ +#line 25534 "tex.w" +421 +/*:1546*/ +#line 5821 "tex.w" +);break; +case math_choice:print_esc(/*1547:*/ +#line 25537 "tex.w" +422 +/*:1547*/ +#line 5822 "tex.w" +);break; +case multiply:print_esc(/*1548:*/ +#line 25540 "tex.w" +423 +/*:1548*/ +#line 5823 "tex.w" +);break; +case no_align:print_esc(/*1549:*/ +#line 25543 "tex.w" +424 +/*:1549*/ +#line 5824 "tex.w" +);break; +case no_boundary:print_esc(/*1550:*/ +#line 25546 "tex.w" +425 +/*:1550*/ +#line 5825 "tex.w" +);break; +case no_expand:print_esc(/*1551:*/ +#line 25549 "tex.w" +426 +/*:1551*/ +#line 5826 "tex.w" +);break; +case non_script:print_esc(/*1392:*/ +#line 25072 "tex.w" +267 +/*:1392*/ +#line 5827 "tex.w" +);break; +case omit:print_esc(/*1552:*/ +#line 25552 "tex.w" +427 +/*:1552*/ +#line 5828 "tex.w" +);break; +case radical:print_esc(/*1555:*/ +#line 25561 "tex.w" +430 +/*:1555*/ +#line 5829 "tex.w" +);break; +case read_to_cs:print_esc(/*1556:*/ +#line 25564 "tex.w" +431 +/*:1556*/ +#line 5830 "tex.w" +);break; +case relax:print_esc(/*1557:*/ +#line 25567 "tex.w" +432 +/*:1557*/ +#line 5831 "tex.w" +);break; +case set_box:print_esc(/*1558:*/ +#line 25570 "tex.w" +433 +/*:1558*/ +#line 5832 "tex.w" +);break; +case set_prev_graf:print_esc(/*1554:*/ +#line 25558 "tex.w" +429 +/*:1554*/ +#line 5833 "tex.w" +);break; +case set_shape:print_esc(/*1436:*/ +#line 25204 "tex.w" +311 +/*:1436*/ +#line 5834 "tex.w" +);break; +case the:print_esc(/*1559:*/ +#line 25573 "tex.w" +434 +/*:1559*/ +#line 5835 "tex.w" +);break; +case toks_register:print_esc(/*1435:*/ +#line 25201 "tex.w" +310 +/*:1435*/ +#line 5836 "tex.w" +);break; +case vadjust:print_esc(/*1402:*/ +#line 25102 "tex.w" +277 +/*:1402*/ +#line 5837 "tex.w" +);break; +case valign:print_esc(/*1560:*/ +#line 25576 "tex.w" +435 +/*:1560*/ +#line 5838 "tex.w" +);break; +case vcenter:print_esc(/*1561:*/ +#line 25579 "tex.w" +436 +/*:1561*/ +#line 5839 "tex.w" +);break; +case vrule:print_esc(/*1562:*/ +#line 25582 "tex.w" +437 +/*:1562*/ +#line 5840 "tex.w" +);break; + +/*:266*//*335:*/ +#line 7203 "tex.w" + +case par_end:print_esc(/*1569:*/ +#line 25603 "tex.w" +444 +/*:1569*/ +#line 7204 "tex.w" +);break; + +/*:335*//*377:*/ +#line 7854 "tex.w" + +case input:if(chr_code==0)print_esc(/*1570:*/ +#line 25606 "tex.w" +445 +/*:1570*/ +#line 7855 "tex.w" +);else print_esc(/*1571:*/ +#line 25609 "tex.w" +446 +/*:1571*/ +#line 7855 "tex.w" +);break; + +/*:377*//*385:*/ +#line 7945 "tex.w" + +case top_bot_mark:switch(chr_code){ +case first_mark_code:print_esc(/*1573:*/ +#line 25615 "tex.w" +448 +/*:1573*/ +#line 7947 "tex.w" +);break; +case bot_mark_code:print_esc(/*1574:*/ +#line 25618 "tex.w" +449 +/*:1574*/ +#line 7948 "tex.w" +);break; +case split_first_mark_code:print_esc(/*1575:*/ +#line 25621 "tex.w" +450 +/*:1575*/ +#line 7949 "tex.w" +);break; +case split_bot_mark_code:print_esc(/*1576:*/ +#line 25624 "tex.w" +451 +/*:1576*/ +#line 7950 "tex.w" +);break; +default:print_esc(/*1572:*/ +#line 25612 "tex.w" +447 +/*:1572*/ +#line 7951 "tex.w" +); +}break; + +/*:385*//*412:*/ +#line 8388 "tex.w" + +case register:if(chr_code==int_val)print_esc(/*1501:*/ +#line 25399 "tex.w" +376 +/*:1501*/ +#line 8389 "tex.w" +); +else if(chr_code==dimen_val)print_esc(/*1524:*/ +#line 25468 "tex.w" +399 +/*:1524*/ +#line 8390 "tex.w" +); +else if(chr_code==glue_val)print_esc(/*1423:*/ +#line 25165 "tex.w" +298 +/*:1423*/ +#line 8391 "tex.w" +); +else print_esc(/*1424:*/ +#line 25168 "tex.w" +299 +/*:1424*/ +#line 8392 "tex.w" +);break; + +/*:412*//*417:*/ +#line 8498 "tex.w" + +case set_aux:if(chr_code==vmode)print_esc(/*1578:*/ +#line 25630 "tex.w" +453 +/*:1578*/ +#line 8499 "tex.w" +); +else print_esc(/*1577:*/ +#line 25627 "tex.w" +452 +/*:1577*/ +#line 8500 "tex.w" +);break; +case set_page_int:if(chr_code==0)print_esc(/*1579:*/ +#line 25633 "tex.w" +454 +/*:1579*/ +#line 8501 "tex.w" +); +else print_esc(/*1580:*/ +#line 25636 "tex.w" +455 +/*:1580*/ +#line 8502 "tex.w" +);break; +case set_box_dimen:if(chr_code==width_offset)print_esc(/*1581:*/ +#line 25639 "tex.w" +456 +/*:1581*/ +#line 8503 "tex.w" +); +else if(chr_code==height_offset)print_esc(/*1582:*/ +#line 25642 "tex.w" +457 +/*:1582*/ +#line 8504 "tex.w" +); +else print_esc(/*1583:*/ +#line 25645 "tex.w" +458 +/*:1583*/ +#line 8505 "tex.w" +);break; +case last_item:switch(chr_code){ +case int_val:print_esc(/*1584:*/ +#line 25648 "tex.w" +459 +/*:1584*/ +#line 8507 "tex.w" +);break; +case dimen_val:print_esc(/*1585:*/ +#line 25651 "tex.w" +460 +/*:1585*/ +#line 8508 "tex.w" +);break; +case glue_val:print_esc(/*1586:*/ +#line 25654 "tex.w" +461 +/*:1586*/ +#line 8509 "tex.w" +);break; +case input_line_no_code:print_esc(/*1587:*/ +#line 25657 "tex.w" +462 +/*:1587*/ +#line 8510 "tex.w" +);break; +default:print_esc(/*1588:*/ +#line 25660 "tex.w" +463 +/*:1588*/ +#line 8511 "tex.w" +); +}break; + +/*:417*//*469:*/ +#line 9287 "tex.w" + +case convert:switch(chr_code){ +case number_code:print_esc(/*1605:*/ +#line 25711 "tex.w" +480 +/*:1605*/ +#line 9289 "tex.w" +);break; +case roman_numeral_code:print_esc(/*1606:*/ +#line 25714 "tex.w" +481 +/*:1606*/ +#line 9290 "tex.w" +);break; +case string_code:print_esc(/*1607:*/ +#line 25717 "tex.w" +482 +/*:1607*/ +#line 9291 "tex.w" +);break; +case meaning_code:print_esc(/*1608:*/ +#line 25720 "tex.w" +483 +/*:1608*/ +#line 9292 "tex.w" +);break; +case font_name_code:print_esc(/*1609:*/ +#line 25723 "tex.w" +484 +/*:1609*/ +#line 9293 "tex.w" +);break; +default:print_esc(/*1610:*/ +#line 25726 "tex.w" +485 +/*:1610*/ +#line 9294 "tex.w" +); +}break; + +/*:469*//*488:*/ +#line 9625 "tex.w" + +case if_test:switch(chr_code){ +case if_cat_code:print_esc(/*1612:*/ +#line 25732 "tex.w" +487 +/*:1612*/ +#line 9627 "tex.w" +);break; +case if_int_code:print_esc(/*1613:*/ +#line 25735 "tex.w" +488 +/*:1613*/ +#line 9628 "tex.w" +);break; +case if_dim_code:print_esc(/*1614:*/ +#line 25738 "tex.w" +489 +/*:1614*/ +#line 9629 "tex.w" +);break; +case if_odd_code:print_esc(/*1615:*/ +#line 25741 "tex.w" +490 +/*:1615*/ +#line 9630 "tex.w" +);break; +case if_vmode_code:print_esc(/*1616:*/ +#line 25744 "tex.w" +491 +/*:1616*/ +#line 9631 "tex.w" +);break; +case if_hmode_code:print_esc(/*1617:*/ +#line 25747 "tex.w" +492 +/*:1617*/ +#line 9632 "tex.w" +);break; +case if_mmode_code:print_esc(/*1618:*/ +#line 25750 "tex.w" +493 +/*:1618*/ +#line 9633 "tex.w" +);break; +case if_inner_code:print_esc(/*1619:*/ +#line 25753 "tex.w" +494 +/*:1619*/ +#line 9634 "tex.w" +);break; +case if_void_code:print_esc(/*1620:*/ +#line 25756 "tex.w" +495 +/*:1620*/ +#line 9635 "tex.w" +);break; +case if_hbox_code:print_esc(/*1621:*/ +#line 25759 "tex.w" +496 +/*:1621*/ +#line 9636 "tex.w" +);break; +case if_vbox_code:print_esc(/*1622:*/ +#line 25762 "tex.w" +497 +/*:1622*/ +#line 9637 "tex.w" +);break; +case ifx_code:print_esc(/*1623:*/ +#line 25765 "tex.w" +498 +/*:1623*/ +#line 9638 "tex.w" +);break; +case if_eof_code:print_esc(/*1624:*/ +#line 25768 "tex.w" +499 +/*:1624*/ +#line 9639 "tex.w" +);break; +case if_true_code:print_esc(/*1625:*/ +#line 25771 "tex.w" +500 +/*:1625*/ +#line 9640 "tex.w" +);break; +case if_false_code:print_esc(/*1626:*/ +#line 25774 "tex.w" +501 +/*:1626*/ +#line 9641 "tex.w" +);break; +case if_case_code:print_esc(/*1627:*/ +#line 25777 "tex.w" +502 +/*:1627*/ +#line 9642 "tex.w" +);break; +default:print_esc(/*1611:*/ +#line 25729 "tex.w" +486 +/*:1611*/ +#line 9643 "tex.w" +); +}break; + +/*:488*//*492:*/ +#line 9687 "tex.w" + +case fi_or_else:if(chr_code==fi_code)print_esc(/*1628:*/ +#line 25780 "tex.w" +503 +/*:1628*/ +#line 9688 "tex.w" +); +else if(chr_code==or_code)print_esc(/*1629:*/ +#line 25783 "tex.w" +504 +/*:1629*/ +#line 9689 "tex.w" +); +else print_esc(/*1630:*/ +#line 25786 "tex.w" +505 +/*:1630*/ +#line 9690 "tex.w" +);break; + +/*:492*//*781:*/ +#line 15430 "tex.w" + +case tab_mark:if(chr_code==span_code)print_esc(/*1669:*/ +#line 25903 "tex.w" +544 +/*:1669*/ +#line 15431 "tex.w" +); +else chr_cmd("alignment tab character ")break; +case car_ret:if(chr_code==cr_code)print_esc(/*1670:*/ +#line 25906 "tex.w" +545 +/*:1670*/ +#line 15433 "tex.w" +); +else print_esc(/*1671:*/ +#line 25909 "tex.w" +546 +/*:1671*/ +#line 15434 "tex.w" +);break; + +/*:781*//*984:*/ +#line 19269 "tex.w" + +case set_page_dimen:switch(chr_code){ +case 0:print_esc(/*1689:*/ +#line 25963 "tex.w" +564 +/*:1689*/ +#line 19271 "tex.w" +);break; +case 1:print_esc(/*1690:*/ +#line 25966 "tex.w" +565 +/*:1690*/ +#line 19272 "tex.w" +);break; +case 2:print_esc(/*1691:*/ +#line 25969 "tex.w" +566 +/*:1691*/ +#line 19273 "tex.w" +);break; +case 3:print_esc(/*1692:*/ +#line 25972 "tex.w" +567 +/*:1692*/ +#line 19274 "tex.w" +);break; +case 4:print_esc(/*1693:*/ +#line 25975 "tex.w" +568 +/*:1693*/ +#line 19275 "tex.w" +);break; +case 5:print_esc(/*1694:*/ +#line 25978 "tex.w" +569 +/*:1694*/ +#line 19276 "tex.w" +);break; +case 6:print_esc(/*1695:*/ +#line 25981 "tex.w" +570 +/*:1695*/ +#line 19277 "tex.w" +);break; +default:print_esc(/*1696:*/ +#line 25984 "tex.w" +571 +/*:1696*/ +#line 19278 "tex.w" +); +}break; + +/*:984*//*1053:*/ +#line 20477 "tex.w" + +case stop:if(chr_code==1)print_esc(/*1699:*/ +#line 25993 "tex.w" +574 +/*:1699*/ +#line 20478 "tex.w" +);else print_esc(/*1698:*/ +#line 25990 "tex.w" +573 +/*:1698*/ +#line 20478 "tex.w" +);break; + +/*:1053*//*1059:*/ +#line 20575 "tex.w" + +case hskip:switch(chr_code){ +case skip_code:print_esc(/*1700:*/ +#line 25996 "tex.w" +575 +/*:1700*/ +#line 20577 "tex.w" +);break; +case fil_code:print_esc(/*1701:*/ +#line 25999 "tex.w" +576 +/*:1701*/ +#line 20578 "tex.w" +);break; +case fill_code:print_esc(/*1702:*/ +#line 26002 "tex.w" +577 +/*:1702*/ +#line 20579 "tex.w" +);break; +case ss_code:print_esc(/*1703:*/ +#line 26005 "tex.w" +578 +/*:1703*/ +#line 20580 "tex.w" +);break; +default:print_esc(/*1704:*/ +#line 26008 "tex.w" +579 +/*:1704*/ +#line 20581 "tex.w" +); +}break; +case vskip:switch(chr_code){ +case skip_code:print_esc(/*1705:*/ +#line 26011 "tex.w" +580 +/*:1705*/ +#line 20584 "tex.w" +);break; +case fil_code:print_esc(/*1706:*/ +#line 26014 "tex.w" +581 +/*:1706*/ +#line 20585 "tex.w" +);break; +case fill_code:print_esc(/*1707:*/ +#line 26017 "tex.w" +582 +/*:1707*/ +#line 20586 "tex.w" +);break; +case ss_code:print_esc(/*1708:*/ +#line 26020 "tex.w" +583 +/*:1708*/ +#line 20587 "tex.w" +);break; +default:print_esc(/*1709:*/ +#line 26023 "tex.w" +584 +/*:1709*/ +#line 20588 "tex.w" +); +}break; +case mskip:print_esc(/*1393:*/ +#line 25075 "tex.w" +268 +/*:1393*/ +#line 20590 "tex.w" +);break; +case kern:print_esc(/*1396:*/ +#line 25084 "tex.w" +271 +/*:1396*/ +#line 20591 "tex.w" +);break; +case mkern:print_esc(/*1397:*/ +#line 25087 "tex.w" +272 +/*:1397*/ +#line 20592 "tex.w" +);break; + +/*:1059*//*1072:*/ +#line 20837 "tex.w" + +case hmove:if(chr_code==1)print_esc(/*1712:*/ +#line 26032 "tex.w" +587 +/*:1712*/ +#line 20838 "tex.w" +);else print_esc(/*1713:*/ +#line 26035 "tex.w" +588 +/*:1713*/ +#line 20838 "tex.w" +);break; +case vmove:if(chr_code==1)print_esc(/*1714:*/ +#line 26038 "tex.w" +589 +/*:1714*/ +#line 20839 "tex.w" +);else print_esc(/*1715:*/ +#line 26041 "tex.w" +590 +/*:1715*/ +#line 20839 "tex.w" +);break; +case make_box:switch(chr_code){ +case box_code:print_esc(/*1437:*/ +#line 25207 "tex.w" +312 +/*:1437*/ +#line 20841 "tex.w" +);break; +case copy_code:print_esc(/*1716:*/ +#line 26044 "tex.w" +591 +/*:1716*/ +#line 20842 "tex.w" +);break; +case last_box_code:print_esc(/*1717:*/ +#line 26047 "tex.w" +592 +/*:1717*/ +#line 20843 "tex.w" +);break; +case vsplit_code:print_esc(/*1687:*/ +#line 25957 "tex.w" +562 +/*:1687*/ +#line 20844 "tex.w" +);break; +case vtop_code:print_esc(/*1718:*/ +#line 26050 "tex.w" +593 +/*:1718*/ +#line 20845 "tex.w" +);break; +case vtop_code+vmode:print_esc(/*1688:*/ +#line 25960 "tex.w" +563 +/*:1688*/ +#line 20846 "tex.w" +);break; +default:print_esc(/*1719:*/ +#line 26053 "tex.w" +594 +/*:1719*/ +#line 20847 "tex.w" +); +}break; +case leader_ship:if(chr_code==a_leaders)print_esc(/*1721:*/ +#line 26059 "tex.w" +596 +/*:1721*/ +#line 20849 "tex.w" +); +else if(chr_code==c_leaders)print_esc(/*1722:*/ +#line 26062 "tex.w" +597 +/*:1722*/ +#line 20850 "tex.w" +); +else if(chr_code==x_leaders)print_esc(/*1723:*/ +#line 26065 "tex.w" +598 +/*:1723*/ +#line 20851 "tex.w" +); +else print_esc(/*1720:*/ +#line 26056 "tex.w" +595 +/*:1720*/ +#line 20852 "tex.w" +);break; + +/*:1072*//*1089:*/ +#line 21098 "tex.w" + +case start_par:if(chr_code==0)print_esc(/*1725:*/ +#line 26071 "tex.w" +600 +/*:1725*/ +#line 21099 "tex.w" +);else print_esc(/*1724:*/ +#line 26068 "tex.w" +599 +/*:1724*/ +#line 21099 "tex.w" +);break; + +/*:1089*//*1108:*/ +#line 21316 "tex.w" + +case remove_item:if(chr_code==glue_node)print_esc(/*1728:*/ +#line 26080 "tex.w" +603 +/*:1728*/ +#line 21317 "tex.w" +); +else if(chr_code==kern_node)print_esc(/*1727:*/ +#line 26077 "tex.w" +602 +/*:1727*/ +#line 21318 "tex.w" +); +else print_esc(/*1726:*/ +#line 26074 "tex.w" +601 +/*:1726*/ +#line 21319 "tex.w" +);break; +case un_hbox:if(chr_code==copy_code)print_esc(/*1730:*/ +#line 26086 "tex.w" +605 +/*:1730*/ +#line 21320 "tex.w" +); +else print_esc(/*1729:*/ +#line 26083 "tex.w" +604 +/*:1729*/ +#line 21321 "tex.w" +);break; +case un_vbox:if(chr_code==copy_code)print_esc(/*1732:*/ +#line 26092 "tex.w" +607 +/*:1732*/ +#line 21322 "tex.w" +); +else print_esc(/*1731:*/ +#line 26089 "tex.w" +606 +/*:1731*/ +#line 21323 "tex.w" +);break; + +/*:1108*//*1115:*/ +#line 21387 "tex.w" + +case discretionary:if(chr_code==1) +print_esc('-');else print_esc(/*1400:*/ +#line 25096 "tex.w" +275 +/*:1400*/ +#line 21389 "tex.w" +);break; + +/*:1115*//*1143:*/ +#line 21746 "tex.w" + +case eq_no:if(chr_code==1)print_esc(/*1734:*/ +#line 26098 "tex.w" +609 +/*:1734*/ +#line 21747 "tex.w" +);else print_esc(/*1733:*/ +#line 26095 "tex.w" +608 +/*:1733*/ +#line 21747 "tex.w" +);break; + +/*:1143*//*1157:*/ +#line 21994 "tex.w" + +case math_comp:switch(chr_code){ +case ord_noad:print_esc(/*1649:*/ +#line 25843 "tex.w" +524 +/*:1649*/ +#line 21996 "tex.w" +);break; +case op_noad:print_esc(/*1650:*/ +#line 25846 "tex.w" +525 +/*:1650*/ +#line 21997 "tex.w" +);break; +case bin_noad:print_esc(/*1651:*/ +#line 25849 "tex.w" +526 +/*:1651*/ +#line 21998 "tex.w" +);break; +case rel_noad:print_esc(/*1652:*/ +#line 25852 "tex.w" +527 +/*:1652*/ +#line 21999 "tex.w" +);break; +case open_noad:print_esc(/*1653:*/ +#line 25855 "tex.w" +528 +/*:1653*/ +#line 22000 "tex.w" +);break; +case close_noad:print_esc(/*1654:*/ +#line 25858 "tex.w" +529 +/*:1654*/ +#line 22001 "tex.w" +);break; +case punct_noad:print_esc(/*1655:*/ +#line 25861 "tex.w" +530 +/*:1655*/ +#line 22002 "tex.w" +);break; +case inner_noad:print_esc(/*1656:*/ +#line 25864 "tex.w" +531 +/*:1656*/ +#line 22003 "tex.w" +);break; +case under_noad:print_esc(/*1658:*/ +#line 25870 "tex.w" +533 +/*:1658*/ +#line 22004 "tex.w" +);break; +default:print_esc(/*1657:*/ +#line 25867 "tex.w" +532 +/*:1657*/ +#line 22005 "tex.w" +); +}break; +case limit_switch:if(chr_code==limits)print_esc(/*1661:*/ +#line 25879 "tex.w" +536 +/*:1661*/ +#line 22007 "tex.w" +); +else if(chr_code==no_limits)print_esc(/*1662:*/ +#line 25882 "tex.w" +537 +/*:1662*/ +#line 22008 "tex.w" +); +else print_esc(/*1735:*/ +#line 26101 "tex.w" +610 +/*:1735*/ +#line 22009 "tex.w" +);break; + +/*:1157*//*1170:*/ +#line 22130 "tex.w" + +case math_style:print_style(chr_code);break; + +/*:1170*//*1179:*/ +#line 22233 "tex.w" + +case above:switch(chr_code){ +case over_code:print_esc(/*1737:*/ +#line 26107 "tex.w" +612 +/*:1737*/ +#line 22235 "tex.w" +);break; +case atop_code:print_esc(/*1738:*/ +#line 26110 "tex.w" +613 +/*:1738*/ +#line 22236 "tex.w" +);break; +case delimited_code+above_code:print_esc(/*1739:*/ +#line 26113 "tex.w" +614 +/*:1739*/ +#line 22237 "tex.w" +);break; +case delimited_code+over_code:print_esc(/*1740:*/ +#line 26116 "tex.w" +615 +/*:1740*/ +#line 22238 "tex.w" +);break; +case delimited_code+atop_code:print_esc(/*1741:*/ +#line 26119 "tex.w" +616 +/*:1741*/ +#line 22239 "tex.w" +);break; +default:print_esc(/*1736:*/ +#line 26104 "tex.w" +611 +/*:1736*/ +#line 22240 "tex.w" +); +}break; + +/*:1179*//*1189:*/ +#line 22354 "tex.w" + +case left_right:if(chr_code==left_noad)print_esc(/*1659:*/ +#line 25873 "tex.w" +534 +/*:1659*/ +#line 22355 "tex.w" +); +else print_esc(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 22356 "tex.w" +);break; + +/*:1189*//*1209:*/ +#line 22667 "tex.w" + +case prefix:if(chr_code==1)print_esc(/*1743:*/ +#line 26125 "tex.w" +618 +/*:1743*/ +#line 22668 "tex.w" +); +else if(chr_code==2)print_esc(/*1744:*/ +#line 26128 "tex.w" +619 +/*:1744*/ +#line 22669 "tex.w" +); +else print_esc(/*1745:*/ +#line 26131 "tex.w" +620 +/*:1745*/ +#line 22670 "tex.w" +);break; +case def:if(chr_code==0)print_esc(/*1746:*/ +#line 26134 "tex.w" +621 +/*:1746*/ +#line 22671 "tex.w" +); +else if(chr_code==1)print_esc(/*1747:*/ +#line 26137 "tex.w" +622 +/*:1747*/ +#line 22672 "tex.w" +); +else if(chr_code==2)print_esc(/*1748:*/ +#line 26140 "tex.w" +623 +/*:1748*/ +#line 22673 "tex.w" +); +else print_esc(/*1749:*/ +#line 26143 "tex.w" +624 +/*:1749*/ +#line 22674 "tex.w" +);break; + +/*:1209*//*1220:*/ +#line 22827 "tex.w" + +case let:if(chr_code!=normal)print_esc(/*1753:*/ +#line 26155 "tex.w" +628 +/*:1753*/ +#line 22828 "tex.w" +);else print_esc(/*1752:*/ +#line 26152 "tex.w" +627 +/*:1752*/ +#line 22828 "tex.w" +);break; + +/*:1220*//*1223:*/ +#line 22879 "tex.w" + +case shorthand_def:switch(chr_code){ +case char_def_code:print_esc(/*1754:*/ +#line 26158 "tex.w" +629 +/*:1754*/ +#line 22881 "tex.w" +);break; +case math_char_def_code:print_esc(/*1755:*/ +#line 26161 "tex.w" +630 +/*:1755*/ +#line 22882 "tex.w" +);break; +case count_def_code:print_esc(/*1756:*/ +#line 26164 "tex.w" +631 +/*:1756*/ +#line 22883 "tex.w" +);break; +case dimen_def_code:print_esc(/*1757:*/ +#line 26167 "tex.w" +632 +/*:1757*/ +#line 22884 "tex.w" +);break; +case skip_def_code:print_esc(/*1758:*/ +#line 26170 "tex.w" +633 +/*:1758*/ +#line 22885 "tex.w" +);break; +case mu_skip_def_code:print_esc(/*1759:*/ +#line 26173 "tex.w" +634 +/*:1759*/ +#line 22886 "tex.w" +);break; +default:print_esc(/*1760:*/ +#line 26176 "tex.w" +635 +/*:1760*/ +#line 22887 "tex.w" +); +}break; +case char_given:{print_esc(/*1535:*/ +#line 25501 "tex.w" +410 +/*:1535*/ +#line 22889 "tex.w" +);print_hex(chr_code); +}break; +case math_given:{print_esc(/*1546:*/ +#line 25534 "tex.w" +421 +/*:1546*/ +#line 22891 "tex.w" +);print_hex(chr_code); +}break; + +/*:1223*//*1231:*/ +#line 23023 "tex.w" + +case def_code:if(chr_code==cat_code_base)print_esc(/*1441:*/ +#line 25219 "tex.w" +316 +/*:1441*/ +#line 23024 "tex.w" +); +else if(chr_code==math_code_base)print_esc(/*1445:*/ +#line 25231 "tex.w" +320 +/*:1445*/ +#line 23025 "tex.w" +); +else if(chr_code==lc_code_base)print_esc(/*1442:*/ +#line 25222 "tex.w" +317 +/*:1442*/ +#line 23026 "tex.w" +); +else if(chr_code==uc_code_base)print_esc(/*1443:*/ +#line 25225 "tex.w" +318 +/*:1443*/ +#line 23027 "tex.w" +); +else if(chr_code==sf_code_base)print_esc(/*1444:*/ +#line 25228 "tex.w" +319 +/*:1444*/ +#line 23028 "tex.w" +); +else print_esc(/*1502:*/ +#line 25402 "tex.w" +377 +/*:1502*/ +#line 23029 "tex.w" +);break; +case def_family:print_size(chr_code-math_font_base);break; + +/*:1231*//*1251:*/ +#line 23294 "tex.w" + +case hyph_data:if(chr_code==1)print_esc(/*1684:*/ +#line 25948 "tex.w" +559 +/*:1684*/ +#line 23295 "tex.w" +); +else print_esc(/*1683:*/ +#line 25945 "tex.w" +558 +/*:1683*/ +#line 23296 "tex.w" +);break; + +/*:1251*//*1255:*/ +#line 23331 "tex.w" + +case assign_font_int:if(chr_code==0)print_esc(/*1762:*/ +#line 26182 "tex.w" +637 +/*:1762*/ +#line 23332 "tex.w" +); +else print_esc(/*1763:*/ +#line 26185 "tex.w" +638 +/*:1763*/ +#line 23333 "tex.w" +);break; + +/*:1255*//*1261:*/ +#line 23416 "tex.w" + +case set_font:{print_str("select font ");slow_print(font_name[chr_code]); +if(font_size[chr_code]!=font_dsize[chr_code]) +{print_str(" at ");print_scaled(font_size[chr_code]); +print_str("pt"); +} +}break; + +/*:1261*//*1263:*/ +#line 23434 "tex.w" + +case set_interaction:switch(chr_code){ +case batch_mode:print_esc(/*1383:*/ +#line 25045 "tex.w" +258 +/*:1383*/ +#line 23436 "tex.w" +);break; +case nonstop_mode:print_esc(/*1384:*/ +#line 25048 "tex.w" +259 +/*:1384*/ +#line 23437 "tex.w" +);break; +case scroll_mode:print_esc(/*1385:*/ +#line 25051 "tex.w" +260 +/*:1385*/ +#line 23438 "tex.w" +);break; +default:print_esc(/*1767:*/ +#line 26197 "tex.w" +642 +/*:1767*/ +#line 23439 "tex.w" +); +}break; + +/*:1263*//*1273:*/ +#line 23496 "tex.w" + +case in_stream:if(chr_code==0)print_esc(/*1769:*/ +#line 26203 "tex.w" +644 +/*:1769*/ +#line 23497 "tex.w" +); +else print_esc(/*1768:*/ +#line 26200 "tex.w" +643 +/*:1768*/ +#line 23498 "tex.w" +);break; + +/*:1273*//*1278:*/ +#line 23531 "tex.w" + +case message:if(chr_code==0)print_esc(/*1770:*/ +#line 26206 "tex.w" +645 +/*:1770*/ +#line 23532 "tex.w" +); +else print_esc(/*1771:*/ +#line 26209 "tex.w" +646 +/*:1771*/ +#line 23533 "tex.w" +);break; + +/*:1278*//*1287:*/ +#line 23598 "tex.w" + +case case_shift:if(chr_code==lc_code_base)print_esc(/*1772:*/ +#line 26212 "tex.w" +647 +/*:1772*/ +#line 23599 "tex.w" +); +else print_esc(/*1773:*/ +#line 26215 "tex.w" +648 +/*:1773*/ +#line 23600 "tex.w" +);break; + +/*:1287*//*1292:*/ +#line 23649 "tex.w" + +case xray:switch(chr_code){ +case show_box_code:print_esc(/*1775:*/ +#line 26221 "tex.w" +650 +/*:1775*/ +#line 23651 "tex.w" +);break; +case show_the_code:print_esc(/*1776:*/ +#line 26224 "tex.w" +651 +/*:1776*/ +#line 23652 "tex.w" +);break; +case show_lists:print_esc(/*1777:*/ +#line 26227 "tex.w" +652 +/*:1777*/ +#line 23653 "tex.w" +);break; +default:print_esc(/*1774:*/ +#line 26218 "tex.w" +649 +/*:1774*/ +#line 23654 "tex.w" +); +}break; + +/*:1292*//*1295:*/ +#line 23698 "tex.w" + +case undefined_cs:print_str("undefined");break; +case call:print_str("macro");break; +case long_call:print_esc(/*1778:*/ +#line 26230 "tex.w" +653 +/*:1778*/ +#line 23701 "tex.w" +);break; +case outer_call:print_esc(/*1779:*/ +#line 26233 "tex.w" +654 +/*:1779*/ +#line 23702 "tex.w" +);break; +case long_outer_call:{print_esc(/*1743:*/ +#line 26125 "tex.w" +618 +/*:1743*/ +#line 23703 "tex.w" +);print_esc(/*1779:*/ +#line 26233 "tex.w" +654 +/*:1779*/ +#line 23703 "tex.w" +); +}break; +case end_template:print_esc(/*1780:*/ +#line 26236 "tex.w" +655 +/*:1780*/ +#line 23705 "tex.w" +);break; + +/*:1295*//*1346:*/ +#line 24646 "tex.w" + +case extension:switch(chr_code){ +case open_node:print_esc(/*1783:*/ +#line 26245 "tex.w" +658 +/*:1783*/ +#line 24648 "tex.w" +);break; +case write_node:print_esc(/*1568:*/ +#line 25600 "tex.w" +443 +/*:1568*/ +#line 24649 "tex.w" +);break; +case close_node:print_esc(/*1784:*/ +#line 26248 "tex.w" +659 +/*:1784*/ +#line 24650 "tex.w" +);break; +case special_node:print_esc(/*1785:*/ +#line 26251 "tex.w" +660 +/*:1785*/ +#line 24651 "tex.w" +);break; +case immediate_code:print_esc(/*1786:*/ +#line 26254 "tex.w" +661 +/*:1786*/ +#line 24652 "tex.w" +);break; +case set_language_code:print_esc(/*1787:*/ +#line 26257 "tex.w" +662 +/*:1787*/ +#line 24653 "tex.w" +);break; +default:print_str("[unknown extension!]"); +}break; + +/*:1346*/ +#line 6476 "tex.w" + +default:print_str("[unknown command code!]"); +} +} + +/*:298*/ +#line 5484 "tex.w" + +#ifdef STAT +void show_eqtb(pointer n) +{if(n<active_base)print_char('?'); +else if(n<glue_base)/*223:*/ +#line 4607 "tex.w" + +{sprint_cs(n);print_char('=');print_cmd_chr(eq_type(n),equiv(n)); +if(eq_type(n)>=call) +{print_char(':');show_token_list(link(equiv(n)),null,32); +} +} + +/*:223*/ +#line 5488 "tex.w" + +else if(n<local_base)/*229:*/ +#line 4757 "tex.w" + +if(n<skip_base) +{print_skip_param(n-glue_base);print_char('='); +if(n<glue_base+thin_mu_skip_code)print_spec(equiv(n),/*1425:*/ +#line 25171 "tex.w" +300 +/*:1425*/ +#line 4760 "tex.w" +); +else print_spec(equiv(n),/*1394:*/ +#line 25078 "tex.w" +269 +/*:1394*/ +#line 4761 "tex.w" +); +} +else if(n<mu_skip_base) +{print_esc(/*1423:*/ +#line 25165 "tex.w" +298 +/*:1423*/ +#line 4764 "tex.w" +);print_int(n-skip_base);print_char('='); +print_spec(equiv(n),/*1425:*/ +#line 25171 "tex.w" +300 +/*:1425*/ +#line 4765 "tex.w" +); +} +else{print_esc(/*1424:*/ +#line 25168 "tex.w" +299 +/*:1424*/ +#line 4767 "tex.w" +);print_int(n-mu_skip_base);print_char('='); +print_spec(equiv(n),/*1394:*/ +#line 25078 "tex.w" +269 +/*:1394*/ +#line 4768 "tex.w" +); +} + +/*:229*/ +#line 5489 "tex.w" + +else if(n<int_base)/*233:*/ +#line 4899 "tex.w" + +if(n==par_shape_loc) +{print_esc(/*1436:*/ +#line 25204 "tex.w" +311 +/*:1436*/ +#line 4901 "tex.w" +);print_char('='); +if(par_shape_ptr==null)print_char('0'); +else print_int(info(par_shape_ptr)); +} +else if(n<toks_base) +{print_cmd_chr(assign_toks,n);print_char('='); +if(equiv(n)!=null)show_token_list(link(equiv(n)),null,32); +} +else if(n<box_base) +{print_esc(/*1435:*/ +#line 25201 "tex.w" +310 +/*:1435*/ +#line 4910 "tex.w" +);print_int(n-toks_base);print_char('='); +if(equiv(n)!=null)show_token_list(link(equiv(n)),null,32); +} +else if(n<cur_font_loc) +{print_esc(/*1437:*/ +#line 25207 "tex.w" +312 +/*:1437*/ +#line 4914 "tex.w" +);print_int(n-box_base);print_char('='); +if(equiv(n)==null)print_str("void"); +else{depth_threshold= 0;breadth_max= 1;show_node_list(equiv(n)); +} +} +else if(n<cat_code_base)/*234:*/ +#line 4922 "tex.w" + +{if(n==cur_font_loc)print_str("current font"); +else if(n<math_font_base+16) +{print_esc(/*1438:*/ +#line 25210 "tex.w" +313 +/*:1438*/ +#line 4925 "tex.w" +);print_int(n-math_font_base); +} +else if(n<math_font_base+32) +{print_esc(/*1439:*/ +#line 25213 "tex.w" +314 +/*:1439*/ +#line 4928 "tex.w" +);print_int(n-math_font_base-16); +} +else{print_esc(/*1440:*/ +#line 25216 "tex.w" +315 +/*:1440*/ +#line 4930 "tex.w" +);print_int(n-math_font_base-32); +} +print_char('='); +print_esc(hash[font_id_base+equiv(n)].rh); + +} + +/*:234*/ +#line 4919 "tex.w" + +else/*235:*/ +#line 4937 "tex.w" + +if(n<math_code_base) +{if(n<lc_code_base) +{print_esc(/*1441:*/ +#line 25219 "tex.w" +316 +/*:1441*/ +#line 4940 "tex.w" +);print_int(n-cat_code_base); +} +else if(n<uc_code_base) +{print_esc(/*1442:*/ +#line 25222 "tex.w" +317 +/*:1442*/ +#line 4943 "tex.w" +);print_int(n-lc_code_base); +} +else if(n<sf_code_base) +{print_esc(/*1443:*/ +#line 25225 "tex.w" +318 +/*:1443*/ +#line 4946 "tex.w" +);print_int(n-uc_code_base); +} +else{print_esc(/*1444:*/ +#line 25228 "tex.w" +319 +/*:1444*/ +#line 4948 "tex.w" +);print_int(n-sf_code_base); +} +print_char('=');print_int(equiv(n)); +} +else{print_esc(/*1445:*/ +#line 25231 "tex.w" +320 +/*:1445*/ +#line 4952 "tex.w" +);print_int(n-math_code_base); +print_char('=');print_int(ho(equiv(n))); +} + +/*:235*/ +#line 4920 "tex.w" + + +/*:233*/ +#line 5490 "tex.w" + +else if(n<dimen_base)/*242:*/ +#line 5300 "tex.w" + +{if(n<count_base)print_param(n-int_base); +else if(n<del_code_base) +{print_esc(/*1501:*/ +#line 25399 "tex.w" +376 +/*:1501*/ +#line 5303 "tex.w" +);print_int(n-count_base); +} +else{print_esc(/*1502:*/ +#line 25402 "tex.w" +377 +/*:1502*/ +#line 5305 "tex.w" +);print_int(n-del_code_base); +} +print_char('=');print_int(eqtb[n].i); +} + +/*:242*/ +#line 5491 "tex.w" + +else if(n<=eqtb_size)/*251:*/ +#line 5474 "tex.w" + +{if(n<scaled_base)print_length_param(n-dimen_base); +else{print_esc(/*1524:*/ +#line 25468 "tex.w" +399 +/*:1524*/ +#line 5476 "tex.w" +);print_int(n-scaled_base); +} +print_char('=');print_scaled(eqtb[n].sc);print_str("pt"); +} + +/*:251*/ +#line 5492 "tex.w" + +else print_char('?'); +} +#endif + +/*:252*//*259:*/ +#line 5577 "tex.w" +pointer id_lookup(int j,int l) +{ +int h; +int d; +pointer p; +pointer k; +/*261:*/ +#line 5624 "tex.w" + +h= buffer[j]; +for(k= j+1;k<=j+l-1;k++) +{h= h+h+buffer[k]; +while(h>=hash_prime)h= h-hash_prime; +} + +/*:261*/ +#line 5583 "tex.w" +; +p= h+hash_base; +loop{if(text(p)> 0)if(length(text(p))==l) +if(str_eq_buf(text(p),j))goto found; +if(next(p)==0) +{if(no_new_control_sequence) +p= undefined_control_sequence; +else/*260:*/ +#line 5598 "tex.w" + +{if(text(p)> 0) +{do{if(hash_is_full)overflow("hash size",hash_size); + +decr(hash_used); +}while(!(text(hash_used)==0)); +next(p)= hash_used;p= hash_used; +} +str_room(l);d= cur_length; +while(pool_ptr> str_start[str_ptr]) +{decr(pool_ptr);str_pool[pool_ptr+l]= str_pool[pool_ptr]; +} +for(k= j;k<=j+l-1;k++)append_char(buffer[k]); +text(p)= make_string();pool_ptr= pool_ptr+d; +#ifdef STAT +incr(cs_count); +#endif + +} + +/*:260*/ +#line 5590 "tex.w" +; +goto found; +} +p= next(p); +} +found:return p; +} + +/*:259*//*264:*/ +#line 5680 "tex.w" + +#ifdef INIT +void primitive(str_number s,quarterword c,halfword o) +{pool_pointer k; +int j; +small_number l; +if(s<256)cur_val= s+single_base; +else{k= str_start[s];l= str_start[s+1]-k; + +for(j= 0;j<=l-1;j++)buffer[j]= so(str_pool[k+j]); +cur_val= id_lookup(0,l); +flush_string;text(cur_val)= s; +} +eq_level(cur_val)= level_one;eq_type(cur_val)= c;equiv(cur_val)= o; +} +#endif + +/*:264*//*274:*/ +#line 5987 "tex.w" +void new_save_level(group_code c) +{check_full_save_stack; +save_type(save_ptr)= level_boundary;save_level(save_ptr)= cur_group; +save_index(save_ptr)= cur_boundary; +if(cur_level==max_quarterword)overflow("grouping levels", + +max_quarterword-min_quarterword); + +cur_boundary= save_ptr;incr(cur_level);incr(save_ptr);cur_group= c; +} + +/*:274*//*275:*/ +#line 6004 "tex.w" +void eq_destroy(memory_word w) +{pointer q; +switch(eq_type_field(w)){ +case call:case long_call:case outer_call:case long_outer_call:delete_token_ref(equiv_field(w));break; +case glue_ref:delete_glue_ref(equiv_field(w));break; +case shape_ref:{q= equiv_field(w); +if(q!=null)free_node(q,info(q)+info(q)+1); +}break; +case box_ref:flush_node_list(equiv_field(w));break; +default:do_nothing; +} +} + +/*:275*//*276:*/ +#line 6020 "tex.w" +void eq_save(pointer p,quarterword l) +{check_full_save_stack; +if(l==level_zero)save_type(save_ptr)= restore_zero; +else{save_stack[save_ptr]= eqtb[p];incr(save_ptr); +save_type(save_ptr)= restore_old_value; +} +save_level(save_ptr)= l;save_index(save_ptr)= p;incr(save_ptr); +} + +/*:276*//*277:*/ +#line 6037 "tex.w" +void eq_define(pointer p,quarterword t,halfword e) + +{if(eq_level(p)==cur_level)eq_destroy(eqtb[p]); +else if(cur_level> level_one)eq_save(p,eq_level(p)); +eq_level(p)= cur_level;eq_type(p)= t;equiv(p)= e; +} + +/*:277*//*278:*/ +#line 6048 "tex.w" +void eq_word_define(pointer p,int w) +{if(xeq_level[p]!=cur_level) +{eq_save(p,xeq_level[p]);xeq_level[p]= cur_level; +} +eqtb[p].i= w; +} + +/*:278*//*279:*/ +#line 6060 "tex.w" +void geq_define(pointer p,quarterword t,halfword e) + +{eq_destroy(eqtb[p]); +eq_level(p)= level_one;eq_type(p)= t;equiv(p)= e; +} + +void geq_word_define(pointer p,int w) +{eqtb[p].i= w;xeq_level[p]= level_one; +} + +/*:279*//*280:*/ +#line 6072 "tex.w" +void save_for_after(halfword t) +{if(cur_level> level_one) +{check_full_save_stack; +save_type(save_ptr)= insert_token;save_level(save_ptr)= level_zero; +save_index(save_ptr)= t;incr(save_ptr); +} +} + +/*:280*//*281:*/ +#line 6084 "tex.w" +/*284:*/ +#line 6155 "tex.w" + +#ifdef STAT +void restore_trace(pointer p,str_number s) + +{begin_diagnostic();print_char('{');print(s);print_char(' '); +show_eqtb(p);print_char('}'); +end_diagnostic(false); +} +#endif + +/*:284*/ +#line 6084 "tex.w" + +void back_input(void); +void unsave(void) +{ +pointer p; +quarterword l; +halfword t; +if(cur_level> level_one) +{decr(cur_level); +/*282:*/ +#line 6099 "tex.w" + +loop{decr(save_ptr); +if(save_type(save_ptr)==level_boundary)goto done; +p= save_index(save_ptr); +if(save_type(save_ptr)==insert_token) +/*326:*/ +#line 7097 "tex.w" + +{t= cur_tok;cur_tok= p;back_input();cur_tok= t; +} + +/*:326*/ +#line 6104 "tex.w" + +else{if(save_type(save_ptr)==restore_old_value) +{l= save_level(save_ptr);decr(save_ptr); +} +else save_stack[save_ptr]= eqtb[undefined_control_sequence]; +/*283:*/ +#line 6121 "tex.w" + +if(p<int_base) +if(eq_level(p)==level_one) +{eq_destroy(save_stack[save_ptr]); + +#ifdef STAT +if(tracing_restores> 0)restore_trace(p,/*1564:*/ +#line 25588 "tex.w" +439 +/*:1564*/ +#line 6127 "tex.w" +); +#endif + +} +else{eq_destroy(eqtb[p]); +eqtb[p]= save_stack[save_ptr]; + +#ifdef STAT +if(tracing_restores> 0)restore_trace(p,/*1565:*/ +#line 25591 "tex.w" +440 +/*:1565*/ +#line 6135 "tex.w" +); +#endif + +} +else if(xeq_level[p]!=level_one) +{eqtb[p]= save_stack[save_ptr];xeq_level[p]= l; + +#ifdef STAT +if(tracing_restores> 0)restore_trace(p,/*1565:*/ +#line 25591 "tex.w" +440 +/*:1565*/ +#line 6143 "tex.w" +); +#endif + +} +else{ + +#ifdef STAT +if(tracing_restores> 0)restore_trace(p,/*1564:*/ +#line 25588 "tex.w" +439 +/*:1564*/ +#line 6150 "tex.w" +); +#endif + +} + +/*:283*/ +#line 6110 "tex.w" +; +} +} +done:cur_group= save_level(save_ptr);cur_boundary= save_index(save_ptr) + +/*:282*/ +#line 6093 "tex.w" +; +} +else confusion(/*1563:*/ +#line 25585 "tex.w" +438 +/*:1563*/ +#line 6095 "tex.w" +); + +} + +/*:281*//*288:*/ +#line 6194 "tex.w" +void prepare_mag(void) +{if((mag_set> 0)&&(mag!=mag_set)) +{print_err("Incompatible magnification (");print_int(mag); + +print_str(");");print_nl(" the previous value will be retained"); +help2("I can handle only one magnification ratio per job. So I've") +("reverted to the magnification you used earlier on this run."); +int_error(mag_set); +geq_word_define(int_base+mag_code,mag_set); +} +if((mag<=0)||(mag> 32768)) +{print_err("Illegal magnification has been changed to 1000"); + +help1("The magnification ratio must be between 1 and 32768."); +int_error(mag);geq_word_define(int_base+mag_code,1000); +} +mag_set= mag; +} + +/*:288*//*295:*/ +#line 6378 "tex.w" +void token_show(pointer p) +{if(p!=null)show_token_list(link(p),null,10000000); +} + +/*:295*//*296:*/ +#line 6385 "tex.w" +void print_meaning(void) +{print_cmd_chr(cur_cmd,cur_chr); +if(cur_cmd>=call) +{print_char(':');print_ln();token_show(cur_chr); +} +else if(cur_cmd==top_bot_mark) +{print_char(':');print_ln(); +token_show(cur_mark[cur_chr]); +} +} + +/*:296*//*299:*/ +#line 6483 "tex.w" +void show_cur_cmd_chr(void) +{begin_diagnostic();print_nl("{"); +if(mode!=shown_mode) +{print_mode(mode);print_str(": ");shown_mode= mode; +} +print_cmd_chr(cur_cmd,cur_chr);print_char('}'); +end_diagnostic(false); +} + +/*:299*//*311:*/ +#line 6827 "tex.w" +void show_context(void) +{ +uint8_t old_setting; +int nn; +bool bottom_line; +/*315:*/ +#line 6939 "tex.w" + +int i; +uint16_t j; +uint8_t l; +int m; +uint8_t n; +int p; +int q; + +/*:315*/ +#line 6832 "tex.w" + +base_ptr= input_ptr;input_stack[base_ptr]= cur_input; + +nn= -1;bottom_line= false; +loop{cur_input= input_stack[base_ptr]; +if((state!=token_list)) +if((name> 17)||(base_ptr==0))bottom_line= true; +if((base_ptr==input_ptr)||bottom_line||(nn<error_context_lines)) +/*312:*/ +#line 6850 "tex.w" + +{if((base_ptr==input_ptr)||(state!=token_list)|| +(token_type!=backed_up)||(loc!=null)) + +{tally= 0; +old_setting= selector; +if(state!=token_list) +{/*313:*/ +#line 6874 "tex.w" + +if(name<=17) +if(terminal_input) +if(base_ptr==0)print_nl("<*>");else print_nl("<insert> "); +else{print_nl("<read "); +if(name==17)print_char('*');else print_int(name-1); + +print_char('>'); +} +else{print_nl("l.");print_int(line); +} +print_char(' ') + +/*:313*/ +#line 6857 "tex.w" +; +/*318:*/ +#line 6985 "tex.w" + +begin_pseudoprint; +if(buffer[limit]==end_line_char)j= limit; +else j= limit+1; +if(j> 0)for(i= start;i<=j-1;i++) +{if(i==loc)set_trick_count; +print(buffer[i]); +} + +/*:318*/ +#line 6858 "tex.w" +; +} +else{/*314:*/ +#line 6887 "tex.w" + +switch(token_type){ +case parameter:print_nl("<argument> ");break; +case u_template:case v_template:print_nl("<template> ");break; +case backed_up:if(loc==null)print_nl("<recently read> "); +else print_nl("<to be read again> ");break; +case inserted:print_nl("<inserted text> ");break; +case macro:{print_ln();print_cs(name); +}break; +case output_text:print_nl("<output> ");break; +case every_par_text:print_nl("<everypar> ");break; +case every_math_text:print_nl("<everymath> ");break; +case every_display_text:print_nl("<everydisplay> ");break; +case every_hbox_text:print_nl("<everyhbox> ");break; +case every_vbox_text:print_nl("<everyvbox> ");break; +case every_job_text:print_nl("<everyjob> ");break; +case every_cr_text:print_nl("<everycr> ");break; +case mark_text:print_nl("<mark> ");break; +case write_text:print_nl("<write> ");break; +default:print_nl("?"); +} + +/*:314*/ +#line 6860 "tex.w" +; +/*319:*/ +#line 6994 "tex.w" + +begin_pseudoprint; +if(token_type<macro)show_token_list(start,loc,100000); +else show_token_list(link(start),loc,100000) + +/*:319*/ +#line 6861 "tex.w" +; +} +selector= old_setting; +/*317:*/ +#line 6963 "tex.w" + +if(trick_count==1000000)set_trick_count; + +if(tally<trick_count)m= tally-first_count; +else m= trick_count-first_count; +if(l+first_count<=half_error_line) +{p= 0;n= l+first_count; +} +else{print_str("...");p= l+first_count-half_error_line+3; +n= half_error_line; +} +for(q= p;q<=first_count-1;q++)print_char(trick_buf[q%error_line]); +print_ln(); +for(q= 1;q<=n;q++)print_char(' '); +if(m+n<=error_line)p= first_count+m;else p= first_count+(error_line-n-3); +for(q= first_count;q<=p-1;q++)print_char(trick_buf[q%error_line]); +if(m+n> error_line)print_str("...") + +/*:317*/ +#line 6864 "tex.w" +; +incr(nn); +} +} + +/*:312*/ +#line 6840 "tex.w" + +else if(nn==error_context_lines) +{print_nl("...");incr(nn); +} +if(bottom_line)goto done; +decr(base_ptr); +} +done:cur_input= input_stack[input_ptr]; +} + +/*:311*//*323:*/ +#line 7033 "tex.w" +void begin_token_list(pointer p,quarterword t) +{push_input;state= token_list;start= p;token_type= t; +if(t>=macro) +{add_token_ref(p); +if(t==macro)param_start= param_ptr; +else{loc= link(p); +if(tracing_macros> 1) +{begin_diagnostic();print_nl(""); +switch(t){ +case mark_text:print_esc(/*1401:*/ +#line 25099 "tex.w" +276 +/*:1401*/ +#line 7042 "tex.w" +);break; +case write_text:print_esc(/*1568:*/ +#line 25600 "tex.w" +443 +/*:1568*/ +#line 7043 "tex.w" +);break; +default:print_cmd_chr(assign_toks,t-output_text+output_routine_loc); +} +print_str("->");token_show(p);end_diagnostic(false); +} +} +} +else loc= p; +} + +/*:323*//*324:*/ +#line 7058 "tex.w" +void end_token_list(void) +{if(token_type>=backed_up) +{if(token_type<=inserted)flush_list(start); +else{delete_token_ref(start); +if(token_type==macro) +while(param_ptr> param_start) +{decr(param_ptr); +flush_list(param_stack[param_ptr]); +} +} +} +else if(token_type==u_template) +if(align_state> 500000)align_state= 0; +else fatal_error("(interwoven alignment preambles are not allowed)"); + +pop_input; +check_interrupt; +} + +/*:324*//*325:*/ +#line 7085 "tex.w" +void back_input(void) +{pointer p; +while((state==token_list)&&(loc==null)&&(token_type!=v_template)) +end_token_list(); +p= get_avail();info(p)= cur_tok; +if(cur_tok<right_brace_limit) +if(cur_tok<left_brace_limit)decr(align_state); +else incr(align_state); +push_input;state= token_list;start= p;token_type= backed_up; +loc= p; +} + +/*:325*//*327:*/ +#line 7106 "tex.w" +void back_error(void) +{OK_to_interrupt= false;back_input();OK_to_interrupt= true;error(); +} + +void ins_error(void) +{OK_to_interrupt= false;back_input();token_type= inserted; +OK_to_interrupt= true;error(); +} + +/*:327*//*328:*/ +#line 7121 "tex.w" +void begin_file_reading(void) +{if(in_open==max_in_open)overflow("text input levels",max_in_open); + +if(first==buf_size)overflow("buffer size",buf_size); + +incr(in_open);push_input;index= in_open; +line_stack[index]= line;start= first;state= mid_line; +name= 0; +} + +/*:328*//*329:*/ +#line 7134 "tex.w" +void end_file_reading(void) +{first= start;line= line_stack[index]; +if(name> 17)a_close(&cur_file); +pop_input;decr(in_open); +} + +/*:329*//*330:*/ +#line 7144 "tex.w" +void clear_for_error_prompt(void) +{while((state!=token_list)&&terminal_input&& +(input_ptr> 0)&&(loc> limit))end_file_reading(); +print_ln();clear_terminal; +} + +/*:330*//*336:*/ +#line 7211 "tex.w" +void check_outer_validity(void) +{pointer p; +pointer q; +if(scanner_status!=normal) +{deletions_allowed= false; +/*337:*/ +#line 7237 "tex.w" + +if(cur_cs!=0) +{if((state==token_list)||(name<1)||(name> 17)) +{p= get_avail();info(p)= cs_token_flag+cur_cs; +back_list(p); +} +cur_cmd= spacer;cur_chr= ' '; +} + +/*:337*/ +#line 7216 "tex.w" +; +if(scanner_status> skipping) +/*338:*/ +#line 7246 "tex.w" + +{runaway(); +if(cur_cs==0)print_err("File ended") + +else{cur_cs= 0;print_err("Forbidden control sequence found"); + +} +print_str(" while scanning "); +/*339:*/ +#line 7271 "tex.w" + +p= get_avail(); +switch(scanner_status){ +case defining:{print_str("definition");info(p)= right_brace_token+'}'; +}break; +case matching:{print_str("use");info(p)= par_token;long_state= outer_call; +}break; +case aligning:{print_str("preamble");info(p)= right_brace_token+'}';q= p; +p= get_avail();link(p)= q;info(p)= cs_token_flag+frozen_cr; +align_state= -1000000; +}break; +case absorbing:{print_str("text");info(p)= right_brace_token+'}'; +} +} +ins_list(p) + +/*:339*/ +#line 7255 "tex.w" +; +print_str(" of ");sprint_cs(warning_index); +help4("I suspect you have forgotten a `}', causing me") +("to read past where you wanted me to stop.") +("I'll try to recover; but if the error is serious,") +("you'd better type `E' or `X' now and fix your file."); +error(); +} + +/*:338*/ +#line 7218 "tex.w" + +else{print_err("Incomplete ");print_cmd_chr(if_test,cur_if); + +print_str("; all text was ignored after line ");print_int(skip_line); +help3("A forbidden control sequence occurred in skipped text.") +("This kind of error happens when you say `\\if...' and forget") +("the matching `\\fi'. I've inserted a `\\fi'; this might work."); +if(cur_cs!=0)cur_cs= 0; +else help_line[2]= +"The file ended while I was skipping conditional text."; +cur_tok= cs_token_flag+frozen_fi;ins_error(); +} +deletions_allowed= true; +} +} + +/*:336*//*340:*/ +#line 7289 "tex.w" +void firm_up_the_line(void); + +/*:340*//*341:*/ +#line 7295 "tex.w" +void get_next(void) +{ + + + + + +uint16_t k; +halfword t; +uint8_t cat; +ASCII_code c,cc; +uint8_t d; +restart:cur_cs= 0; +if(state!=token_list) +/*343:*/ +#line 7325 "tex.w" + + +{get_cur_chr:if(loc<=limit) +{cur_chr= buffer[loc];incr(loc); +reswitch:cur_cmd= cat_code(cur_chr); +/*344:*/ +#line 7349 "tex.w" + +switch(state+cur_cmd){ +/*345:*/ +#line 7363 "tex.w" + +any_state_plus(ignore):case skip_blanks+spacer:case new_line+spacer + +/*:345*/ +#line 7351 "tex.w" +:goto get_cur_chr; +any_state_plus(escape):/*354:*/ +#line 7469 "tex.w" + +{if(loc> limit)cur_cs= null_cs; +else{start_cs:k= loc;cur_chr= buffer[k];cat= cat_code(cur_chr); +incr(k); +if(cat==letter)state= skip_blanks; +else if(cat==spacer)state= skip_blanks; +else state= mid_line; +if((cat==letter)&&(k<=limit)) +/*356:*/ +#line 7515 "tex.w" + +{do{cur_chr= buffer[k];cat= cat_code(cur_chr);incr(k); +}while(!((cat!=letter)||(k> limit))); +/*355:*/ +#line 7494 "tex.w" + +{if(buffer[k]==cur_chr)if(cat==sup_mark)if(k<limit) +{c= buffer[k+1];if(c<0200) +{d= 2; +if(is_hex(c))if(k+2<=limit) +{cc= buffer[k+2];if(is_hex(cc))incr(d); +} +if(d> 2) +{hex_to_cur_chr;buffer[k-1]= cur_chr; +} +else if(c<0100)buffer[k-1]= c+0100; +else buffer[k-1]= c-0100; +limit= limit-d;first= first-d; +while(k<=limit) +{buffer[k]= buffer[k+d];incr(k); +} +goto start_cs; +} +} +} + +/*:355*/ +#line 7518 "tex.w" +; +if(cat!=letter)decr(k); + +if(k> loc+1) +{cur_cs= id_lookup(loc,k-loc);loc= k;goto found; +} +} + +/*:356*/ +#line 7479 "tex.w" + +else/*355:*/ +#line 7494 "tex.w" + +{if(buffer[k]==cur_chr)if(cat==sup_mark)if(k<limit) +{c= buffer[k+1];if(c<0200) +{d= 2; +if(is_hex(c))if(k+2<=limit) +{cc= buffer[k+2];if(is_hex(cc))incr(d); +} +if(d> 2) +{hex_to_cur_chr;buffer[k-1]= cur_chr; +} +else if(c<0100)buffer[k-1]= c+0100; +else buffer[k-1]= c-0100; +limit= limit-d;first= first-d; +while(k<=limit) +{buffer[k]= buffer[k+d];incr(k); +} +goto start_cs; +} +} +} + +/*:355*/ +#line 7480 "tex.w" +; +cur_cs= single_base+buffer[loc];incr(loc); +} +found:cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs); +if(cur_cmd>=outer_call)check_outer_validity(); +} + +/*:354*/ +#line 7353 "tex.w" +break; +any_state_plus(active_char):/*353:*/ +#line 7448 "tex.w" + +{cur_cs= cur_chr+active_base; +cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs);state= mid_line; +if(cur_cmd>=outer_call)check_outer_validity(); +} + +/*:353*/ +#line 7355 "tex.w" +break; +any_state_plus(sup_mark):/*352:*/ +#line 7432 "tex.w" + +{if(cur_chr==buffer[loc])if(loc<limit) +{c= buffer[loc+1];if(c<0200) +{loc= loc+2; +if(is_hex(c))if(loc<=limit) +{cc= buffer[loc];if(is_hex(cc)) +{incr(loc);hex_to_cur_chr;goto reswitch; +} +} +if(c<0100)cur_chr= c+0100;else cur_chr= c-0100; +goto reswitch; +} +} +state= mid_line; +} + +/*:352*/ +#line 7357 "tex.w" +break; +any_state_plus(invalid_char):/*346:*/ +#line 7370 "tex.w" + +{print_err("Text line contains an invalid character"); + +help2("A funny symbol that I can't read has just been input.") +("Continue, and I'll forget that it ever happened."); +deletions_allowed= false;error();deletions_allowed= true; +goto restart; +} + +/*:346*/ +#line 7358 "tex.w" + +/*347:*/ +#line 7382 "tex.w" + +case mid_line+spacer:/*349:*/ +#line 7410 "tex.w" + +{state= skip_blanks;cur_chr= ' '; +} + +/*:349*/ +#line 7383 "tex.w" +break; +case mid_line+car_ret:/*348:*/ +#line 7404 "tex.w" + +{loc= limit+1;cur_cmd= spacer;cur_chr= ' '; +} + +/*:348*/ +#line 7384 "tex.w" +break; +case skip_blanks+car_ret:any_state_plus(comment): +/*350:*/ +#line 7414 "tex.w" + +{loc= limit+1;goto get_cur_chr; +} + +/*:350*/ +#line 7386 "tex.w" + +case new_line+car_ret:/*351:*/ +#line 7418 "tex.w" + +{loc= limit+1;cur_cs= par_loc;cur_cmd= eq_type(cur_cs); +cur_chr= equiv(cur_cs); +if(cur_cmd>=outer_call)check_outer_validity(); +} + +/*:351*/ +#line 7387 "tex.w" +break; +case mid_line+left_brace:incr(align_state);break; +case skip_blanks+left_brace:case new_line+left_brace:{ +state= mid_line;incr(align_state); +}break; +case mid_line+right_brace:decr(align_state);break; +case skip_blanks+right_brace:case new_line+right_brace:{ +state= mid_line;decr(align_state); +}break; +add_delims_to(case skip_blanks):add_delims_to(case new_line):state= mid_line;break; + +/*:347*/ +#line 7359 "tex.w" + +default:do_nothing; +} + +/*:344*/ +#line 7331 "tex.w" +; +} +else{state= new_line; +/*360:*/ +#line 7578 "tex.w" + +if(name> 17)/*362:*/ +#line 7614 "tex.w" + +{incr(line);first= start; +if(!force_eof) +{if(input_ln(&cur_file,true)) +firm_up_the_line(); +else force_eof= true; +} +if(force_eof) +{print_char(')');decr(open_parens); +update_terminal; +force_eof= false; +end_file_reading(); +check_outer_validity();goto restart; +} +if(end_line_char_inactive)decr(limit); +else buffer[limit]= end_line_char; +first= limit+1;loc= start; +} + +/*:362*/ +#line 7580 "tex.w" + +else{if(!terminal_input) +{cur_cmd= 0;cur_chr= 0;return; +} +if(input_ptr> 0) +{end_file_reading();goto restart; +} +if(selector<log_only)open_log_file(); +if(interaction> nonstop_mode) +{if(end_line_char_inactive)incr(limit); +if(limit==start) +print_nl("(Please type a command or say `\\end')"); + +print_ln();first= start; +prompt_input("*"); + +limit= last; +if(end_line_char_inactive)decr(limit); +else buffer[limit]= end_line_char; +first= limit+1; +loc= start; +} +else fatal_error("*** (job aborted, no legal \\end found)"); + + + +} + +/*:360*/ +#line 7335 "tex.w" +; +check_interrupt; +goto get_cur_chr; +} +} + +/*:343*/ +#line 7309 "tex.w" + +else/*357:*/ +#line 7529 "tex.w" + +if(loc!=null) + +{t= info(loc);loc= link(loc); +if(t>=cs_token_flag) +{cur_cs= t-cs_token_flag; +cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs); +if(cur_cmd>=outer_call) +if(cur_cmd==dont_expand) +/*358:*/ +#line 7560 "tex.w" + +{cur_cs= info(loc)-cs_token_flag;loc= null; +cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs); +if(cur_cmd> max_command) +{cur_cmd= relax;cur_chr= no_expand_flag; +} +} + +/*:358*/ +#line 7538 "tex.w" + +else check_outer_validity(); +} +else{cur_cmd= t/0400;cur_chr= t%0400; +switch(cur_cmd){ +case left_brace:incr(align_state);break; +case right_brace:decr(align_state);break; +case out_param:/*359:*/ +#line 7568 "tex.w" + +{begin_token_list(param_stack[param_start+cur_chr-1],parameter); +goto restart; +} + +/*:359*/ +#line 7545 "tex.w" + +default:do_nothing; +} +} +} +else{ +end_token_list();goto restart; +} + +/*:357*/ +#line 7311 "tex.w" +; +/*342:*/ +#line 7321 "tex.w" + +if(cur_cmd<=car_ret)if(cur_cmd>=tab_mark)if(align_state==0) +/*789:*/ +#line 15582 "tex.w" + +{if((scanner_status==aligning)||(cur_align==null)) +fatal_error("(interwoven alignment preambles are not allowed)"); + +cur_cmd= extra_info(cur_align);extra_info(cur_align)= cur_chr; +if(cur_cmd==omit)begin_token_list(omit_template,v_template); +else begin_token_list(v_part(cur_align),v_template); +align_state= 1000000;goto restart; +} + +/*:789*/ +#line 7323 "tex.w" + + +/*:342*/ +#line 7312 "tex.w" +; +} + +/*:341*//*363:*/ +#line 7640 "tex.w" +void firm_up_the_line(void) +{int k; +limit= last; +if(pausing> 0)if(interaction> nonstop_mode) +{wake_up_terminal;print_ln(); +if(start<limit)for(k= start;k<=limit-1;k++)print(buffer[k]); +first= limit;prompt_input("=>"); + +if(last> first) +{for(k= first;k<=last-1;k++) +buffer[k+start-first]= buffer[k]; +limit= start+last-first; +} +} +} + +/*:363*//*365:*/ +#line 7679 "tex.w" +void get_token(void) +{no_new_control_sequence= false;get_next();no_new_control_sequence= true; + +if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr; +else cur_tok= cs_token_flag+cur_cs; +} + +/*:365*//*366:*/ +#line 7705 "tex.w" +/*389:*/ +#line 8001 "tex.w" + +void macro_call(void) +{ +pointer r; +pointer p; +pointer q; +pointer s; +pointer t; +pointer u,v; +pointer rbrace_ptr; +small_number n; +halfword unbalance; +int m; +pointer ref_count; +small_number save_scanner_status; +pointer save_warning_index; +ASCII_code match_chr; +save_scanner_status= scanner_status;save_warning_index= warning_index; +warning_index= cur_cs;ref_count= cur_chr;r= link(ref_count);n= 0; +if(tracing_macros> 0)/*401:*/ +#line 8225 "tex.w" + +{begin_diagnostic();print_ln();print_cs(warning_index); +token_show(ref_count);end_diagnostic(false); +} + +/*:401*/ +#line 8020 "tex.w" +; +if(info(r)!=end_match_token) +/*391:*/ +#line 8057 "tex.w" + +{scanner_status= matching;unbalance= 0; +long_state= eq_type(cur_cs); +if(long_state>=outer_call)long_state= long_state-2; +do{link(temp_head)= null; +if((info(r)> match_token+255)||(info(r)<match_token))s= null; +else{match_chr= info(r)-match_token;s= link(r);r= s; +p= temp_head;m= 0; +} +/*392:*/ +#line 8077 "tex.w" + +resume:get_token(); +if(cur_tok==info(r)) +/*394:*/ +#line 8109 "tex.w" + +{r= link(r); +if((info(r)>=match_token)&&(info(r)<=end_match_token)) +{if(cur_tok<left_brace_limit)decr(align_state); +goto found; +} +else goto resume; +} + +/*:394*/ +#line 8081 "tex.w" +; +/*397:*/ +#line 8165 "tex.w" + +if(s!=r) +if(s==null)/*398:*/ +#line 8182 "tex.w" + +{print_err("Use of ");sprint_cs(warning_index); + +print_str(" doesn't match its definition"); +help4("If you say, e.g., `\\def\\a1{...}', then you must always") +("put `1' after `\\a', since control sequence names are") +("made up of letters only. The macro here has not been") +("followed by the required stuff, so I'm ignoring it."); +error();goto end; +} + +/*:398*/ +#line 8167 "tex.w" + +else{t= s; +do{store_new_token(info(t));incr(m);u= link(t);v= s; +loop{if(u==r) +if(cur_tok!=info(v))goto done; +else{r= link(v);goto resume; +} +if(info(u)!=info(v))goto done; +u= link(u);v= link(v); +} +done:t= link(t); +}while(!(t==r)); +r= s; +} + +/*:397*/ +#line 8083 "tex.w" +; +if(cur_tok==par_token)if(long_state!=long_call) +/*396:*/ +#line 8134 "tex.w" + +{if(long_state==call) +{runaway();print_err("Paragraph ended before "); + +sprint_cs(warning_index);print_str(" was complete"); +help3("I suspect you've forgotten a `}', causing me to apply this") +("control sequence to too much text. How can we recover?") +("My plan is to forget the whole thing and hope for the best."); +back_error(); +} +pstack[n]= link(temp_head);align_state= align_state-unbalance; +for(m= 0;m<=n;m++)flush_list(pstack[m]); +goto end; +} + +/*:396*/ +#line 8085 "tex.w" +; +if(cur_tok<right_brace_limit) +if(cur_tok<left_brace_limit) +/*399:*/ +#line 8193 "tex.w" + +{unbalance= 1; + +loop{fast_store_new_token(cur_tok);get_token(); +if(cur_tok==par_token)if(long_state!=long_call) +/*396:*/ +#line 8134 "tex.w" + +{if(long_state==call) +{runaway();print_err("Paragraph ended before "); + +sprint_cs(warning_index);print_str(" was complete"); +help3("I suspect you've forgotten a `}', causing me to apply this") +("control sequence to too much text. How can we recover?") +("My plan is to forget the whole thing and hope for the best."); +back_error(); +} +pstack[n]= link(temp_head);align_state= align_state-unbalance; +for(m= 0;m<=n;m++)flush_list(pstack[m]); +goto end; +} + +/*:396*/ +#line 8198 "tex.w" +; +if(cur_tok<right_brace_limit) +if(cur_tok<left_brace_limit)incr(unbalance); +else{decr(unbalance); +if(unbalance==0)goto done1; +} +} +done1:rbrace_ptr= p;store_new_token(cur_tok); +} + +/*:399*/ +#line 8088 "tex.w" + +else/*395:*/ +#line 8118 "tex.w" + +{back_input();print_err("Argument of ");sprint_cs(warning_index); + +print_str(" has an extra }"); +help6("I've run across a `}' that doesn't seem to match anything.") +("For example, `\\def\\a#1{...}' and `\\a}' would produce") +("this error. If you simply proceed now, the `\\par' that") +("I've just inserted will cause me to report a runaway") +("argument that might be the root of the problem. But if") +("your `}' was spurious, just type `2' and it will go away."); +incr(align_state);long_state= call;cur_tok= par_token;ins_error(); +goto resume; +} + +/*:395*/ +#line 8089 "tex.w" + +else/*393:*/ +#line 8097 "tex.w" + +{if(cur_tok==space_token) +if(info(r)<=end_match_token) +if(info(r)>=match_token)goto resume; +store_new_token(cur_tok); +} + +/*:393*/ +#line 8091 "tex.w" +; +incr(m); +if(info(r)> end_match_token)goto resume; +if(info(r)<match_token)goto resume; +found:if(s!=null)/*400:*/ +#line 8211 "tex.w" + +{if((m==1)&&(info(p)<right_brace_limit)&&(p!=temp_head)) +{link(rbrace_ptr)= null;free_avail(p); +p= link(temp_head);pstack[n]= link(p);free_avail(p); +} +else pstack[n]= link(temp_head); +incr(n); +if(tracing_macros> 0) +{begin_diagnostic();print_nl("");print(match_chr);print_int(n); +print_str("<-");show_token_list(pstack[n-1],null,1000); +end_diagnostic(false); +} +} + +/*:400*/ +#line 8095 "tex.w" + + +/*:392*/ +#line 8067 "tex.w" +; + +}while(!(info(r)==end_match_token)); +} + +/*:391*/ +#line 8023 "tex.w" +; +/*390:*/ +#line 8032 "tex.w" + +while((state==token_list)&&(loc==null)&&(token_type!=v_template)) +end_token_list(); +begin_token_list(ref_count,macro);name= warning_index;loc= link(r); +if(n> 0) +{if(param_ptr+n> max_param_stack) +{max_param_stack= param_ptr+n; +if(max_param_stack> param_size) +overflow("parameter stack size",param_size); + +} +for(m= 0;m<=n-1;m++)param_stack[param_ptr+m]= pstack[m]; +param_ptr= param_ptr+n; +} + +/*:390*/ +#line 8024 "tex.w" +; +end:scanner_status= save_scanner_status;warning_index= save_warning_index; +} + +/*:389*/ +#line 7705 "tex.w" + +/*379:*/ +#line 7865 "tex.w" + +void insert_relax(void) +{cur_tok= cs_token_flag+cur_cs;back_input(); +cur_tok= cs_token_flag+frozen_relax;back_input();token_type= inserted; +} + +/*:379*/ +#line 7706 "tex.w" + +void pass_text(void); +void start_input(void); +void conditional(void); +void get_x_token(void); +void conv_toks(void); +void ins_the_toks(void); +void expand(void) +{halfword t; +pointer p,q,r; +uint16_t j; +int cv_backup; +small_number cvl_backup,radix_backup,co_backup; + +pointer backup_backup; +small_number save_scanner_status; +cv_backup= cur_val;cvl_backup= cur_val_level;radix_backup= radix; +co_backup= cur_order;backup_backup= link(backup_head); +if(cur_cmd<call)/*367:*/ +#line 7731 "tex.w" + +{if(tracing_commands> 1)show_cur_cmd_chr(); +switch(cur_cmd){ +case top_bot_mark:/*386:*/ +#line 7957 "tex.w" + +{if(cur_mark[cur_chr]!=null) +begin_token_list(cur_mark[cur_chr],mark_text); +} + +/*:386*/ +#line 7734 "tex.w" +break; +case expand_after:/*368:*/ +#line 7749 "tex.w" + +{get_token();t= cur_tok;get_token(); +if(cur_cmd> max_command)expand();else back_input(); +cur_tok= t;back_input(); +} + +/*:368*/ +#line 7735 "tex.w" +break; +case no_expand:/*369:*/ +#line 7763 "tex.w" + +{save_scanner_status= scanner_status;scanner_status= normal; +get_token();scanner_status= save_scanner_status;t= cur_tok; +back_input(); +if(t>=cs_token_flag) +{p= get_avail();info(p)= cs_token_flag+frozen_dont_expand; +link(p)= loc;start= p;loc= p; +} +} + +/*:369*/ +#line 7736 "tex.w" +break; +case cs_name:/*372:*/ +#line 7795 "tex.w" + +{r= get_avail();p= r; +do{get_x_token(); +if(cur_cs==0)store_new_token(cur_tok); +}while(!(cur_cs!=0)); +if(cur_cmd!=end_cs_name)/*373:*/ +#line 7809 "tex.w" + +{print_err("Missing ");print_esc(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 7810 "tex.w" +);print_str(" inserted"); + +help2("The control sequence marked <to be read again> should") +("not appear between \\csname and \\endcsname."); +back_error(); +} + +/*:373*/ +#line 7800 "tex.w" +; +/*374:*/ +#line 7817 "tex.w" + +j= first;p= link(r); +while(p!=null) +{if(j>=max_buf_stack) +{max_buf_stack= j+1; +if(max_buf_stack==buf_size) +overflow("buffer size",buf_size); + +} +buffer[j]= info(p)%0400;incr(j);p= link(p); +} +if(j> first+1) +{no_new_control_sequence= false;cur_cs= id_lookup(first,j-first); +no_new_control_sequence= true; +} +else if(j==first)cur_cs= null_cs; +else cur_cs= single_base+buffer[first] + +/*:374*/ +#line 7801 "tex.w" +; +flush_list(r); +if(eq_type(cur_cs)==undefined_cs) +{eq_define(cur_cs,relax,256); +} +cur_tok= cur_cs+cs_token_flag;back_input(); +} + +/*:372*/ +#line 7737 "tex.w" +break; +case convert:conv_toks();break; +case the:ins_the_toks();break; +case if_test:conditional();break; +case fi_or_else:/*510:*/ +#line 9940 "tex.w" + +if(cur_chr> if_limit) +if(if_limit==if_code)insert_relax(); +else{print_err("Extra ");print_cmd_chr(fi_or_else,cur_chr); + + + +help1("I'm ignoring this; it doesn't match any \\if."); +error(); +} +else{while(cur_chr!=fi_code)pass_text(); +/*496:*/ +#line 9732 "tex.w" + +{p= cond_ptr;if_line= if_line_field(p); +cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p); +free_node(p,if_node_size); +} + +/*:496*/ +#line 9951 "tex.w" +; +} + +/*:510*/ +#line 7741 "tex.w" +break; +case input:/*378:*/ +#line 7857 "tex.w" + +if(cur_chr> 0)force_eof= true; +else if(name_in_progress)insert_relax(); +else start_input() + +/*:378*/ +#line 7742 "tex.w" +;break; +default:/*370:*/ +#line 7773 "tex.w" + +{print_err("Undefined control sequence"); + +help5("The control sequence at the end of the top line") +("of your error message was never \\def'ed. If you have") +("misspelled it (e.g., `\\hobx'), type `I' and the correct") +("spelling (e.g., `I\\hbox'). Otherwise just continue,") +("and I'll forget about whatever was undefined."); +error(); +} + +/*:370*/ +#line 7743 "tex.w" + +} +} + +/*:367*/ +#line 7724 "tex.w" + +else if(cur_cmd<end_template)macro_call(); +else/*375:*/ +#line 7841 "tex.w" + +{cur_tok= cs_token_flag+frozen_endv;back_input(); +} + +/*:375*/ +#line 7726 "tex.w" +; +cur_val= cv_backup;cur_val_level= cvl_backup;radix= radix_backup; +cur_order= co_backup;link(backup_head)= backup_backup; +} + +/*:366*//*380:*/ +#line 7875 "tex.w" +void get_x_token(void) + +{ +restart:get_next(); + +if(cur_cmd<=max_command)goto done; +if(cur_cmd>=call) +if(cur_cmd<end_template)macro_call(); +else{cur_cs= frozen_endv;cur_cmd= endv; +goto done; +} +else expand(); +goto restart; +done:if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr; +else cur_tok= cs_token_flag+cur_cs; +} + +/*:380*//*381:*/ +#line 7895 "tex.w" +void x_token(void) +{while(cur_cmd> max_command) +{expand(); +get_next(); +} +if(cur_cs==0)cur_tok= (cur_cmd*0400)+cur_chr; +else cur_tok= cs_token_flag+cur_cs; +} + +/*:381*//*403:*/ +#line 8243 "tex.w" +void scan_left_brace(void) +{/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 8244 "tex.w" +; +if(cur_cmd!=left_brace) +{print_err("Missing { inserted"); + +help4("A left brace was mandatory here, so I've put one in.") +("You might want to delete and/or insert some corrections") +("so that I will find a matching right brace soon.") +("(If you're confused by all this, try typing `I}' now.)"); +back_error();cur_tok= left_brace_token+'{';cur_cmd= left_brace; +cur_chr= '{';incr(align_state); +} +} + +/*:403*//*405:*/ +#line 8264 "tex.w" +void scan_optional_equals(void) +{/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 8265 "tex.w" +; +if(cur_tok!=other_token+'=')back_input(); +} + +/*:405*//*407:*/ +#line 8288 "tex.w" +bool scan_keyword(str_number s) +{ +pointer p; +pointer q; +pool_pointer k; +p= backup_head;link(p)= null;k= str_start[s]; +while(k<str_start[s+1]) +{get_x_token(); + +if((cur_cs==0)&& +((cur_chr==so(str_pool[k]))||(cur_chr==so(str_pool[k])-'a'+'A'))) +{store_new_token(cur_tok);incr(k); +} +else if((cur_cmd!=spacer)||(p!=backup_head)) +{back_input(); +if(p!=backup_head)back_list(link(backup_head)); +return false; +} +} +flush_list(link(backup_head));return true; +} + +/*:407*//*408:*/ +#line 8313 "tex.w" +void mu_error(void) +{print_err("Incompatible glue units"); + +help1("I'm going to assume that 1mu=1pt when they're mixed."); +error(); +} + +/*:408*//*409:*/ +#line 8330 "tex.w" +void scan_int(void); +/*433:*/ +#line 8666 "tex.w" + +void scan_eight_bit_int(void) +{scan_int(); +if((cur_val<0)||(cur_val> 255)) +{print_err("Bad register code"); + +help2("A register number must be between 0 and 255.") +("I changed this one to zero.");int_error(cur_val);cur_val= 0; +} +} + +/*:433*//*434:*/ +#line 8677 "tex.w" + +void scan_char_num(void) +{scan_int(); +if((cur_val<0)||(cur_val> 255)) +{print_err("Bad character code"); + +help2("A character number must be between 0 and 255.") +("I changed this one to zero.");int_error(cur_val);cur_val= 0; +} +} + +/*:434*//*435:*/ +#line 8691 "tex.w" + +void scan_four_bit_int(void) +{scan_int(); +if((cur_val<0)||(cur_val> 15)) +{print_err("Bad number"); + +help2("Since I expected to read a number between 0 and 15,") +("I changed this one to zero.");int_error(cur_val);cur_val= 0; +} +} + +/*:435*//*436:*/ +#line 8702 "tex.w" + +void scan_fifteen_bit_int(void) +{scan_int(); +if((cur_val<0)||(cur_val> 077777)) +{print_err("Bad mathchar"); + +help2("A mathchar number must be between 0 and 32767.") +("I changed this one to zero.");int_error(cur_val);cur_val= 0; +} +} + +/*:436*//*437:*/ +#line 8713 "tex.w" + +void scan_twenty_seven_bit_int(void) +{scan_int(); +if((cur_val<0)||(cur_val> 0777777777)) +{print_err("Bad delimiter code"); + +help2("A numeric delimiter code must be between 0 and 2^{27}-1.") +("I changed this one to zero.");int_error(cur_val);cur_val= 0; +} +} + +/*:437*/ +#line 8331 "tex.w" + +/*577:*/ +#line 11265 "tex.w" + +void scan_font_ident(void) +{internal_font_number f; +halfword m; +/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 11269 "tex.w" +; +if(cur_cmd==def_font)f= cur_font; +else if(cur_cmd==set_font)f= cur_chr; +else if(cur_cmd==def_family) +{m= cur_chr;scan_four_bit_int();f= equiv(m+cur_val); +} +else{print_err("Missing font identifier"); + +help2("I was looking for a control sequence whose") +("current meaning has been defined by \\font."); +back_error();f= null_font; +} +cur_val= f; +} + +/*:577*//*578:*/ +#line 11288 "tex.w" + +void find_font_dimen(bool writing) + +{internal_font_number f; +int n; +scan_int();n= cur_val;scan_font_ident();f= cur_val; +if(n<=0)cur_val= fmem_ptr; +else{if(writing&&(n<=space_shrink_code)&& +(n>=space_code)&&(font_glue[f]!=null)) +{delete_glue_ref(font_glue[f]); +font_glue[f]= null; +} +if(n> font_params[f]) +if(f<font_ptr)cur_val= fmem_ptr; +else/*580:*/ +#line 11319 "tex.w" + +{do{if(fmem_ptr==font_mem_size) +overflow("font memory",font_mem_size); + +font_info[fmem_ptr].sc= 0;incr(fmem_ptr);incr(font_params[f]); +}while(!(n==font_params[f])); +cur_val= fmem_ptr-1; +} + +/*:580*/ +#line 11302 "tex.w" + +else cur_val= n+param_base[f]; +} +/*579:*/ +#line 11308 "tex.w" + +if(cur_val==fmem_ptr) +{print_err("Font ");print_esc(font_id_text(f)); +print_str(" has only ");print_int(font_params[f]); +print_str(" fontdimen parameters"); + +help2("To increase the number of font parameters, you must") +("use \\fontdimen immediately after the \\font is loaded."); +error(); +} + +/*:579*/ +#line 11305 "tex.w" +; +} + +/*:578*/ +#line 8332 "tex.w" + + +/*:409*//*413:*/ +#line 8403 "tex.w" +void scan_something_internal(small_number level,bool negative) + +{halfword m; +uint8_t p; +m= cur_chr; +switch(cur_cmd){ +case def_code:/*414:*/ +#line 8433 "tex.w" + +{scan_char_num(); +if(m==math_code_base)scanned_result(ho(math_code(cur_val)))(int_val) +else if(m<math_code_base)scanned_result(equiv(m+cur_val))(int_val) +else scanned_result(eqtb[m+cur_val].i)(int_val); +} + +/*:414*/ +#line 8409 "tex.w" +break; +case toks_register:case assign_toks:case def_family:case set_font:case def_font:/*415:*/ +#line 8440 "tex.w" + +if(level!=tok_val) +{print_err("Missing number, treated as zero"); + +help3("A number should have been here; I inserted `0'.") +("(If you can't figure out why I needed to see a number,") +("look up `weird error' in the index to The TeXbook.)"); + +back_error();scanned_result(0)(dimen_val); +} +else if(cur_cmd<=assign_toks) +{if(cur_cmd<assign_toks) +{scan_eight_bit_int();m= toks_base+cur_val; +} +scanned_result(equiv(m))(tok_val); +} +else{back_input();scan_font_ident(); +scanned_result(font_id_base+cur_val)(ident_val); +} + +/*:415*/ +#line 8411 "tex.w" +break; +case assign_int:scanned_result(eqtb[m].i)(int_val)break; +case assign_dimen:scanned_result(eqtb[m].sc)(dimen_val)break; +case assign_glue:scanned_result(equiv(m))(glue_val)break; +case assign_mu_glue:scanned_result(equiv(m))(mu_val)break; +case set_aux:/*418:*/ +#line 8514 "tex.w" + +if(abs(mode)!=m) +{print_err("Improper ");print_cmd_chr(set_aux,m); + + +help4("You can refer to \\spacefactor only in horizontal mode;") +("you can refer to \\prevdepth only in vertical mode; and") +("neither of these is meaningful inside \\write. So") +("I'm forgetting what you said and using zero instead."); +error(); +if(level!=tok_val)scanned_result(0)(dimen_val) +else scanned_result(0)(int_val); +} +else if(m==vmode)scanned_result(prev_depth)(dimen_val) +else scanned_result(space_factor)(int_val) + +/*:418*/ +#line 8416 "tex.w" +break; +case set_prev_graf:/*422:*/ +#line 8553 "tex.w" + +if(mode==0)scanned_result(0)(int_val) +else{nest[nest_ptr]= cur_list;p= nest_ptr; +while(abs(nest[p].mode_field)!=vmode)decr(p); +scanned_result(nest[p].pg_field)(int_val); +} + +/*:422*/ +#line 8417 "tex.w" +break; +case set_page_int:/*419:*/ +#line 8530 "tex.w" + +{if(m==0)cur_val= dead_cycles;else cur_val= insert_penalties; +cur_val_level= int_val; +} + +/*:419*/ +#line 8418 "tex.w" +break; +case set_page_dimen:/*421:*/ +#line 8546 "tex.w" + +{if((page_contents==empty)&&(!output_active)) +if(m==0)cur_val= max_dimen;else cur_val= 0; +else cur_val= page_so_far[m]; +cur_val_level= dimen_val; +} + +/*:421*/ +#line 8419 "tex.w" +break; +case set_shape:/*423:*/ +#line 8560 "tex.w" + +{if(par_shape_ptr==null)cur_val= 0; +else cur_val= info(par_shape_ptr); +cur_val_level= int_val; +} + +/*:423*/ +#line 8420 "tex.w" +break; +case set_box_dimen:/*420:*/ +#line 8535 "tex.w" + +{scan_eight_bit_int(); +if(box(cur_val)==null)cur_val= 0;else cur_val= mem[box(cur_val)+m].sc; +cur_val_level= dimen_val; +} + +/*:420*/ +#line 8421 "tex.w" +break; +case char_given:case math_given:scanned_result(cur_chr)(int_val)break; +case assign_font_dimen:/*425:*/ +#line 8597 "tex.w" + +{find_font_dimen(false);font_info[fmem_ptr].sc= 0; +scanned_result(font_info[cur_val].sc)(dimen_val); +} + +/*:425*/ +#line 8423 "tex.w" +break; +case assign_font_int:/*426:*/ +#line 8602 "tex.w" + +{scan_font_ident(); +if(m==0)scanned_result(hyphen_char[cur_val])(int_val) +else scanned_result(skew_char[cur_val])(int_val); +} + +/*:426*/ +#line 8424 "tex.w" +break; +case register:/*427:*/ +#line 8608 "tex.w" + +{scan_eight_bit_int(); +switch(m){ +case int_val:cur_val= count(cur_val);break; +case dimen_val:cur_val= dimen(cur_val);break; +case glue_val:cur_val= skip(cur_val);break; +case mu_val:cur_val= mu_skip(cur_val); +} +cur_val_level= m; +} + +/*:427*/ +#line 8425 "tex.w" +break; +case last_item:/*424:*/ +#line 8572 "tex.w" + +if(cur_chr> glue_val) +{if(cur_chr==input_line_no_code)cur_val= line; +else cur_val= last_badness; +cur_val_level= int_val; +} +else{if(cur_chr==glue_val)cur_val= zero_glue;else cur_val= 0; +cur_val_level= cur_chr; +if(!is_char_node(tail)&&(mode!=0)) +switch(cur_chr){ +case int_val:if(type(tail)==penalty_node)cur_val= penalty(tail);break; +case dimen_val:if(type(tail)==kern_node)cur_val= width(tail);break; +case glue_val:if(type(tail)==glue_node) +{cur_val= glue_ptr(tail); +if(subtype(tail)==mu_glue)cur_val_level= mu_val; +} +} +else if((mode==vmode)&&(tail==head)) +switch(cur_chr){ +case int_val:cur_val= last_penalty;break; +case dimen_val:cur_val= last_kern;break; +case glue_val:if(last_glue!=max_halfword)cur_val= last_glue; +} +} + +/*:424*/ +#line 8426 "tex.w" +break; +default:/*428:*/ +#line 8619 "tex.w" + +{print_err("You can't use `");print_cmd_chr(cur_cmd,cur_chr); + +print_str("' after ");print_esc(/*1559:*/ +#line 25573 "tex.w" +434 +/*:1559*/ +#line 8622 "tex.w" +); +help1("I'm forgetting what you said and using zero instead."); +error(); +if(level!=tok_val)scanned_result(0)(dimen_val) +else scanned_result(0)(int_val); +} + +/*:428*/ +#line 8427 "tex.w" + +} +while(cur_val_level> level)/*429:*/ +#line 8635 "tex.w" + +{if(cur_val_level==glue_val)cur_val= width(cur_val); +else if(cur_val_level==mu_val)mu_error(); +decr(cur_val_level); +} + +/*:429*/ +#line 8429 "tex.w" +; +/*430:*/ +#line 8645 "tex.w" + +if(negative) +if(cur_val_level>=glue_val) +{cur_val= new_spec(cur_val); +/*431:*/ +#line 8655 "tex.w" + +{negate(width(cur_val)); +negate(stretch(cur_val)); +negate(shrink(cur_val)); +} + +/*:431*/ +#line 8649 "tex.w" +; +} +else negate(cur_val); +else if((cur_val_level>=glue_val)&&(cur_val_level<=mu_val)) +add_glue_ref(cur_val) + +/*:430*/ +#line 8430 "tex.w" +; +} + +/*:413*//*440:*/ +#line 8756 "tex.w" +void scan_int(void) +{ +bool negative; +int m; +small_number d; +bool vacuous; +bool OK_so_far; +radix= 0;OK_so_far= true; +/*441:*/ +#line 8772 "tex.w" + +negative= false; +do{/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 8774 "tex.w" +; +if(cur_tok==other_token+'-') +{negative= !negative;cur_tok= other_token+'+'; +} +}while(!(cur_tok!=other_token+'+')) + +/*:441*/ +#line 8764 "tex.w" +; +if(cur_tok==alpha_token)/*442:*/ +#line 8783 "tex.w" + +{get_token(); +if(cur_tok<cs_token_flag) +{cur_val= cur_chr; +if(cur_cmd<=right_brace) +if(cur_cmd==right_brace)incr(align_state); +else decr(align_state); +} +else if(cur_tok<cs_token_flag+single_base) +cur_val= cur_tok-cs_token_flag-active_base; +else cur_val= cur_tok-cs_token_flag-single_base; +if(cur_val> 255) +{print_err("Improper alphabetic constant"); + +help2("A one-character control sequence belongs after a ` mark.") +("So I'm essentially inserting \\0 here."); +cur_val= '0';back_error(); +} +else/*443:*/ +#line 8804 "tex.w" + +{get_x_token();if(cur_cmd!=spacer)back_input(); +} + +/*:443*/ +#line 8801 "tex.w" +; +} + +/*:442*/ +#line 8765 "tex.w" + +else if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal)) +scan_something_internal(int_val,false); +else/*444:*/ +#line 8808 "tex.w" + +{radix= 10;m= 214748364; +if(cur_tok==octal_token) +{radix= 8;m= 02000000000;get_x_token(); +} +else if(cur_tok==hex_token) +{radix= 16;m= 01000000000;get_x_token(); +} +vacuous= true;cur_val= 0; +/*445:*/ +#line 8827 "tex.w" + +loop{if((cur_tok<zero_token+radix)&&(cur_tok>=zero_token)&& +(cur_tok<=zero_token+9))d= cur_tok-zero_token; +else if(radix==16) +if((cur_tok<=A_token+5)&&(cur_tok>=A_token))d= cur_tok-A_token+10; +else if((cur_tok<=other_A_token+5)&&(cur_tok>=other_A_token)) +d= cur_tok-other_A_token+10; +else goto done; +else goto done; +vacuous= false; +if((cur_val>=m)&&((cur_val> m)||(d> 7)||(radix!=10))) +{if(OK_so_far) +{print_err("Number too big"); + +help2("I can only go up to 2147483647='17777777777=\"7FFFFFFF,") +("so I'm using that number instead of yours."); +error();cur_val= infinity;OK_so_far= false; +} +} +else cur_val= cur_val*radix+d; +get_x_token(); +} +done: + +/*:445*/ +#line 8817 "tex.w" +; +if(vacuous)/*446:*/ +#line 8851 "tex.w" + +{print_err("Missing number, treated as zero"); + +help3("A number should have been here; I inserted `0'.") +("(If you can't figure out why I needed to see a number,") +("look up `weird error' in the index to The TeXbook.)"); + +back_error(); +} + +/*:446*/ +#line 8818 "tex.w" + +else if(cur_cmd!=spacer)back_input(); +} + +/*:444*/ +#line 8768 "tex.w" +; +if(negative)negate(cur_val); +} + +/*:440*//*448:*/ +#line 8890 "tex.w" +void scan_dimen(bool mu,bool inf,bool shortcut) + +{ +bool negative; +int f; +/*450:*/ +#line 8932 "tex.w" + +uint32_t num,denom; +int k,kk; +pointer p,q; +scaled v; +int save_cur_val; + +/*:450*/ +#line 8895 "tex.w" + +f= 0;arith_error= false;cur_order= normal;negative= false; +if(!shortcut) +{/*441:*/ +#line 8772 "tex.w" + +negative= false; +do{/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 8774 "tex.w" +; +if(cur_tok==other_token+'-') +{negative= !negative;cur_tok= other_token+'+'; +} +}while(!(cur_tok!=other_token+'+')) + +/*:441*/ +#line 8898 "tex.w" +; +if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal)) +/*449:*/ +#line 8921 "tex.w" + +if(mu) +{scan_something_internal(mu_val,false); +/*451:*/ +#line 8943 "tex.w" + +if(cur_val_level>=glue_val) +{v= width(cur_val);delete_glue_ref(cur_val);cur_val= v; +} + +/*:451*/ +#line 8924 "tex.w" +; +if(cur_val_level==mu_val)goto attach_sign; +if(cur_val_level!=int_val)mu_error(); +} +else{scan_something_internal(dimen_val,false); +if(cur_val_level==dimen_val)goto attach_sign; +} + +/*:449*/ +#line 8900 "tex.w" + +else{back_input(); +if(cur_tok==continental_point_token)cur_tok= point_token; +if(cur_tok!=point_token)scan_int(); +else{radix= 10;cur_val= 0; +} +if(cur_tok==continental_point_token)cur_tok= point_token; +if((radix==10)&&(cur_tok==point_token))/*452:*/ +#line 8954 "tex.w" + +{k= 0;p= null;get_token(); +loop{get_x_token(); +if((cur_tok> zero_token+9)||(cur_tok<zero_token))goto done1; +if(k<17) +{q= get_avail();link(q)= p;info(q)= cur_tok-zero_token; +p= q;incr(k); +} +} +done1:for(kk= k;kk>=1;kk--) +{dig[kk-1]= info(p);q= p;p= link(p);free_avail(q); +} +f= round_decimals(k); +if(cur_cmd!=spacer)back_input(); +} + +/*:452*/ +#line 8907 "tex.w" +; +} +} +if(cur_val<0) +{negative= !negative;negate(cur_val); +} +/*453:*/ +#line 8977 "tex.w" + +if(inf)/*454:*/ +#line 8995 "tex.w" + +if(scan_keyword(/*1387:*/ +#line 25057 "tex.w" +262 +/*:1387*/ +#line 8996 "tex.w" +)) + +{cur_order= fil; +while(scan_keyword('l')) +{if(cur_order==filll) +{print_err("Illegal unit of measure ("); + +print_str("replaced by filll)"); +help1("I dddon't go any higher than filll.");error(); +} +else incr(cur_order); +} +goto attach_fraction; +} + +/*:454*/ +#line 8978 "tex.w" +; +/*455:*/ +#line 9011 "tex.w" + +save_cur_val= cur_val; +/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 9013 "tex.w" +; +if((cur_cmd<min_internal)||(cur_cmd> max_internal))back_input(); +else{if(mu) +{scan_something_internal(mu_val,false);/*451:*/ +#line 8943 "tex.w" + +if(cur_val_level>=glue_val) +{v= width(cur_val);delete_glue_ref(cur_val);cur_val= v; +} + +/*:451*/ +#line 9016 "tex.w" +; +if(cur_val_level!=mu_val)mu_error(); +} +else scan_something_internal(dimen_val,false); +v= cur_val;goto found; +} +if(mu)goto not_found; +if(scan_keyword(/*1590:*/ +#line 25666 "tex.w" +465 +/*:1590*/ +#line 9023 "tex.w" +))v= (/*558:*/ +#line 10924 "tex.w" +quad(cur_font) + +/*:558*/ +#line 9023 "tex.w" +); + +else if(scan_keyword(/*1591:*/ +#line 25669 "tex.w" +466 +/*:1591*/ +#line 9025 "tex.w" +))v= (/*559:*/ +#line 10926 "tex.w" +x_height(cur_font) + +/*:559*/ +#line 9025 "tex.w" +); + +else goto not_found; +/*443:*/ +#line 8804 "tex.w" + +{get_x_token();if(cur_cmd!=spacer)back_input(); +} + +/*:443*/ +#line 9028 "tex.w" +; +found:cur_val= nx_plus_y(save_cur_val,v,xn_over_d(v,f,0200000)); +goto attach_sign; +not_found: + +/*:455*/ +#line 8980 "tex.w" +; +if(mu)/*456:*/ +#line 9033 "tex.w" + +if(scan_keyword(/*1394:*/ +#line 25078 "tex.w" +269 +/*:1394*/ +#line 9034 "tex.w" +))goto attach_fraction; + +else{print_err("Illegal unit of measure (");print_str("mu inserted)"); + +help4("The unit of measurement in math glue must be mu.") +("To recover gracefully from this error, it's best to") +("delete the erroneous units; e.g., type `2' to delete") +("two letters. (See Chapter 27 of The TeXbook.)"); + +error();goto attach_fraction; +} + +/*:456*/ +#line 8981 "tex.w" +; +if(scan_keyword(/*1589:*/ +#line 25663 "tex.w" +464 +/*:1589*/ +#line 8982 "tex.w" +))/*457:*/ +#line 9046 "tex.w" + +{prepare_mag(); +if(mag!=1000) +{cur_val= xn_over_d(cur_val,1000,mag); +f= (1000*f+0200000*rem)/mag; +cur_val= cur_val+(f/0200000);f= f%0200000; +} +} + +/*:457*/ +#line 8982 "tex.w" +; + +if(scan_keyword(/*1425:*/ +#line 25171 "tex.w" +300 +/*:1425*/ +#line 8984 "tex.w" +))goto attach_fraction; + +/*458:*/ +#line 9065 "tex.w" + +if(scan_keyword(/*1592:*/ +#line 25672 "tex.w" +467 +/*:1592*/ +#line 9066 "tex.w" +))set_conversion(7227)(100) + +else if(scan_keyword(/*1593:*/ +#line 25675 "tex.w" +468 +/*:1593*/ +#line 9068 "tex.w" +))set_conversion(12)(1) + +else if(scan_keyword(/*1594:*/ +#line 25678 "tex.w" +469 +/*:1594*/ +#line 9070 "tex.w" +))set_conversion(7227)(254) + +else if(scan_keyword(/*1595:*/ +#line 25681 "tex.w" +470 +/*:1595*/ +#line 9072 "tex.w" +))set_conversion(7227)(2540) + +else if(scan_keyword(/*1596:*/ +#line 25684 "tex.w" +471 +/*:1596*/ +#line 9074 "tex.w" +))set_conversion(7227)(7200) + +else if(scan_keyword(/*1597:*/ +#line 25687 "tex.w" +472 +/*:1597*/ +#line 9076 "tex.w" +))set_conversion(1238)(1157) + +else if(scan_keyword(/*1598:*/ +#line 25690 "tex.w" +473 +/*:1598*/ +#line 9078 "tex.w" +))set_conversion(14856)(1157) + +else if(scan_keyword(/*1599:*/ +#line 25693 "tex.w" +474 +/*:1599*/ +#line 9080 "tex.w" +))goto done; + +else/*459:*/ +#line 9088 "tex.w" + +{print_err("Illegal unit of measure (");print_str("pt inserted)"); + +help6("Dimensions can be in units of em, ex, in, pt, pc,") +("cm, mm, dd, cc, bp, or sp; but yours is a new one!") +("I'll assume that you meant to say pt, for printer's points.") +("To recover gracefully from this error, it's best to") +("delete the erroneous units; e.g., type `2' to delete") +("two letters. (See Chapter 27 of The TeXbook.)"); + +error();goto done2; +} + + +/*:459*/ +#line 9082 "tex.w" +; +cur_val= xn_over_d(cur_val,num,denom); +f= (num*f+0200000*rem)/denom; +cur_val= cur_val+(f/0200000);f= f%0200000; +done2: + +/*:458*/ +#line 8987 "tex.w" +; +attach_fraction:if(cur_val>=040000)arith_error= true; +else cur_val= cur_val*unity+f; +done: + +/*:453*/ +#line 8914 "tex.w" +; +/*443:*/ +#line 8804 "tex.w" + +{get_x_token();if(cur_cmd!=spacer)back_input(); +} + +/*:443*/ +#line 8915 "tex.w" +; +attach_sign:if(arith_error||(abs(cur_val)>=010000000000)) +/*460:*/ +#line 9102 "tex.w" + +{print_err("Dimension too large"); + +help2("I can't work with sizes bigger than about 19 feet.") +("Continue and I'll use the largest value I can."); +error();cur_val= max_dimen;arith_error= false; +} + +/*:460*/ +#line 8917 "tex.w" +; +if(negative)negate(cur_val); +} + +/*:448*//*461:*/ +#line 9120 "tex.w" +void scan_glue(small_number level) + +{ +bool negative; +pointer q; +bool mu; +mu= (level==mu_val);/*441:*/ +#line 8772 "tex.w" + +negative= false; +do{/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 8774 "tex.w" +; +if(cur_tok==other_token+'-') +{negative= !negative;cur_tok= other_token+'+'; +} +}while(!(cur_tok!=other_token+'+')) + +/*:441*/ +#line 9126 "tex.w" +; +if((cur_cmd>=min_internal)&&(cur_cmd<=max_internal)) +{scan_something_internal(level,negative); +if(cur_val_level>=glue_val) +{if(cur_val_level!=level)mu_error(); +return; +} +if(cur_val_level==int_val)scan_dimen(mu,false,true); +else if(level==mu_val)mu_error(); +} +else{back_input();scan_dimen(mu,false,false); +if(negative)negate(cur_val); +} +/*462:*/ +#line 9143 "tex.w" + +q= new_spec(zero_glue);width(q)= cur_val; +if(scan_keyword(/*1600:*/ +#line 25696 "tex.w" +475 +/*:1600*/ +#line 9145 "tex.w" +)) + +{scan_dimen(mu,true,false); +stretch(q)= cur_val;stretch_order(q)= cur_order; +} +if(scan_keyword(/*1601:*/ +#line 25699 "tex.w" +476 +/*:1601*/ +#line 9150 "tex.w" +)) + +{scan_dimen(mu,true,false); +shrink(q)= cur_val;shrink_order(q)= cur_order; +} +cur_val= q + +/*:462*/ +#line 9140 "tex.w" +; +} + +/*:461*//*463:*/ +#line 9166 "tex.w" +pointer scan_rule_spec(void) +{ +pointer q; +q= new_rule(); +if(cur_cmd==vrule)width(q)= default_rule; +else{height(q)= default_rule;depth(q)= 0; +} +reswitch:if(scan_keyword(/*1602:*/ +#line 25702 "tex.w" +477 +/*:1602*/ +#line 9173 "tex.w" +)) + +{scan_normal_dimen;width(q)= cur_val;goto reswitch; +} +if(scan_keyword(/*1603:*/ +#line 25705 "tex.w" +478 +/*:1603*/ +#line 9177 "tex.w" +)) + +{scan_normal_dimen;height(q)= cur_val;goto reswitch; +} +if(scan_keyword(/*1604:*/ +#line 25708 "tex.w" +479 +/*:1604*/ +#line 9181 "tex.w" +)) + +{scan_normal_dimen;depth(q)= cur_val;goto reswitch; +} +return q; +} + +/*:463*//*464:*/ +#line 9200 "tex.w" +pointer str_toks(pool_pointer b) + +{pointer p; +pointer q; +halfword t; +pool_pointer k; +str_room(1); +p= temp_head;link(p)= null;k= b; +while(k<pool_ptr) +{t= so(str_pool[k]); +if(t==' ')t= space_token; +else t= other_token+t; +fast_store_new_token(t); +incr(k); +} +pool_ptr= b;return p; +} + +/*:464*//*465:*/ +#line 9225 "tex.w" +pointer the_toks(void) +{uint8_t old_setting; +pointer p,q,r; +pool_pointer b; +get_x_token();scan_something_internal(tok_val,false); +if(cur_val_level>=ident_val)/*466:*/ +#line 9245 "tex.w" + +{p= temp_head;link(p)= null; +if(cur_val_level==ident_val)store_new_token(cs_token_flag+cur_val) +else if(cur_val!=null) +{r= link(cur_val); +while(r!=null) +{fast_store_new_token(info(r));r= link(r); +} +} +return p; +} + +/*:466*/ +#line 9230 "tex.w" + +else{old_setting= selector;selector= new_string;b= pool_ptr; +switch(cur_val_level){ +case int_val:print_int(cur_val);break; +case dimen_val:{print_scaled(cur_val);print_str("pt"); +}break; +case glue_val:{print_spec(cur_val,/*1425:*/ +#line 25171 "tex.w" +300 +/*:1425*/ +#line 9236 "tex.w" +);delete_glue_ref(cur_val); +}break; +case mu_val:{print_spec(cur_val,/*1394:*/ +#line 25078 "tex.w" +269 +/*:1394*/ +#line 9238 "tex.w" +);delete_glue_ref(cur_val); +} +} +selector= old_setting;return str_toks(b); +} +} + +/*:465*//*467:*/ +#line 9259 "tex.w" +void ins_the_toks(void) +{link(garbage)= the_toks();ins_list(link(temp_head)); +} + +/*:467*//*470:*/ +#line 9301 "tex.w" +void conv_toks(void) +{uint8_t old_setting; +uint8_t c; +small_number save_scanner_status; +pool_pointer b; +c= cur_chr;/*471:*/ +#line 9312 "tex.w" + +switch(c){ +case number_code:case roman_numeral_code:scan_int();break; +case string_code:case meaning_code:{save_scanner_status= scanner_status; +scanner_status= normal;get_token();scanner_status= save_scanner_status; +}break; +case font_name_code:scan_font_ident();break; +case job_name_code:if(job_name==0)open_log_file(); +} + +/*:471*/ +#line 9306 "tex.w" +; +old_setting= selector;selector= new_string;b= pool_ptr; +/*472:*/ +#line 9322 "tex.w" + +switch(c){ +case number_code:print_int(cur_val);break; +case roman_numeral_code:print_roman_int(cur_val);break; +case string_code:if(cur_cs!=0)sprint_cs(cur_cs); +else print_char(cur_chr);break; +case meaning_code:print_meaning();break; +case font_name_code:{print(font_name[cur_val]); +if(font_size[cur_val]!=font_dsize[cur_val]) +{print_str(" at ");print_scaled(font_size[cur_val]); +print_str("pt"); +} +}break; +case job_name_code:print(job_name); +} + +/*:472*/ +#line 9308 "tex.w" +; +selector= old_setting;link(garbage)= str_toks(b);ins_list(link(temp_head)); +} + +/*:470*//*473:*/ +#line 9362 "tex.w" +pointer scan_toks(bool macro_def,bool xpand) +{ +halfword t; +halfword s; +pointer p; +pointer q; +halfword unbalance; +halfword hash_brace; +if(macro_def)scanner_status= defining; +else scanner_status= absorbing; +warning_index= cur_cs;def_ref= get_avail();token_ref_count(def_ref)= null; +p= def_ref;hash_brace= 0;t= zero_token; +if(macro_def)/*474:*/ +#line 9382 "tex.w" + +{loop{get_token(); +if(cur_tok<right_brace_limit)goto done1; +if(cur_cmd==mac_param) +/*476:*/ +#line 9403 "tex.w" + +{s= match_token+cur_chr;get_token(); +if(cur_cmd==left_brace) +{hash_brace= cur_tok; +store_new_token(cur_tok);store_new_token(end_match_token); +goto done; +} +if(t==zero_token+9) +{print_err("You already have nine parameters"); + +help1("I'm going to ignore the # sign you just used.");error(); +} +else{incr(t); +if(cur_tok!=t) +{print_err("Parameters must be numbered consecutively"); + +help2("I've inserted the digit you should have used after the #.") +("Type `1' to delete what you did use.");back_error(); +} +cur_tok= s; +} +} + +/*:476*/ +#line 9388 "tex.w" +; +store_new_token(cur_tok); +} +done1:store_new_token(end_match_token); +if(cur_cmd==right_brace) +/*475:*/ +#line 9396 "tex.w" + +{print_err("Missing { inserted");incr(align_state); + +help2("Where was the left brace? You said something like `\\def\\a}',") +("which I'm going to interpret as `\\def\\a{}'.");error();goto found; +} + +/*:475*/ +#line 9393 "tex.w" +; +done:;} + +/*:474*/ +#line 9374 "tex.w" + +else scan_left_brace(); +/*477:*/ +#line 9426 "tex.w" + +unbalance= 1; +loop{if(xpand)/*478:*/ +#line 9443 "tex.w" + +{loop{get_next(); +if(cur_cmd<=max_command)goto done2; +if(cur_cmd!=the)expand(); +else{q= the_toks(); +if(link(temp_head)!=null) +{link(p)= link(temp_head);p= q; +} +} +} +done2:x_token(); +} + +/*:478*/ +#line 9428 "tex.w" + +else get_token(); +if(cur_tok<right_brace_limit) +if(cur_cmd<right_brace)incr(unbalance); +else{decr(unbalance); +if(unbalance==0)goto found; +} +else if(cur_cmd==mac_param) +if(macro_def)/*479:*/ +#line 9456 "tex.w" + +{s= cur_tok; +if(xpand)get_x_token();else get_token(); +if(cur_cmd!=mac_param) +if((cur_tok<=zero_token)||(cur_tok> t)) +{print_err("Illegal parameter number in definition of "); + +sprint_cs(warning_index); +help3("You meant to type ## instead of #, right?") +("Or maybe a } was forgotten somewhere earlier, and things") +("are all screwed up? I'm going to assume that you meant ##."); +back_error();cur_tok= s; +} +else cur_tok= out_param_token-'0'+cur_chr; +} + +/*:479*/ +#line 9436 "tex.w" +; +store_new_token(cur_tok); +} + +/*:477*/ +#line 9376 "tex.w" +; +found:scanner_status= normal; +if(hash_brace!=0)store_new_token(hash_brace); +return p; +} + +/*:473*//*482:*/ +#line 9493 "tex.w" +void read_toks(int n,pointer r) +{ +pointer p; +pointer q; +int s; +small_number m; +scanner_status= defining;warning_index= r; +def_ref= get_avail();token_ref_count(def_ref)= null; +p= def_ref; +store_new_token(end_match_token); +if((n<0)||(n> 15))m= 16;else m= n; +s= align_state;align_state= 1000000; +do{/*483:*/ +#line 9510 "tex.w" + +begin_file_reading();name= m+1; +if(read_open[m]==closed)/*484:*/ +#line 9534 "tex.w" + +if(interaction> nonstop_mode) +if(n<0)prompt_input("") +else{wake_up_terminal; +print_ln();sprint_cs(r);prompt_input("=");n= -1; +} +else fatal_error("*** (cannot \\read from terminal in nonstop modes)") + + +/*:484*/ +#line 9512 "tex.w" +; +else if(read_open[m]==just_open)/*485:*/ +#line 9547 "tex.w" + +if(input_ln(&read_file[m],false))read_open[m]= normal; +else{a_close(&read_file[m]);read_open[m]= closed; +} + +/*:485*/ +#line 9513 "tex.w" + +else/*486:*/ +#line 9555 "tex.w" + +{if(!input_ln(&read_file[m],true)) +{a_close(&read_file[m]);read_open[m]= closed; +if(align_state!=1000000) +{runaway(); +print_err("File ended within ");print_esc(/*1556:*/ +#line 25564 "tex.w" +431 +/*:1556*/ +#line 9560 "tex.w" +); + +help1("This \\read has unbalanced braces."); +align_state= 1000000;error(); +} +} +} + +/*:486*/ +#line 9514 "tex.w" +; +limit= last; +if(end_line_char_inactive)decr(limit); +else buffer[limit]= end_line_char; +first= limit+1;loc= start;state= new_line; +loop{get_token(); +if(cur_tok==0)goto done; + +if(align_state<1000000) +{do{get_token();}while(!(cur_tok==0)); +align_state= 1000000;goto done; +} +store_new_token(cur_tok); +} +done:end_file_reading() + +/*:483*/ +#line 9505 "tex.w" +; +}while(!(align_state==1000000)); +cur_val= def_ref;scanner_status= normal;align_state= s; +} + +/*:482*//*494:*/ +#line 9704 "tex.w" +void pass_text(void) +{ +int l; +small_number save_scanner_status; +save_scanner_status= scanner_status;scanner_status= skipping;l= 0; +skip_line= line; +loop{get_next(); +if(cur_cmd==fi_or_else) +{if(l==0)goto done; +if(cur_chr==fi_code)decr(l); +} +else if(cur_cmd==if_test)incr(l); +} +done:scanner_status= save_scanner_status; +} + +/*:494*//*497:*/ +#line 9741 "tex.w" +void change_if_limit(small_number l,pointer p) +{ +pointer q; +if(p==cond_ptr)if_limit= l; +else{q= cond_ptr; +loop{if(q==null)confusion(/*1611:*/ +#line 25729 "tex.w" +486 +/*:1611*/ +#line 9746 "tex.w" +); + +if(link(q)==p) +{type(q)= l;return; +} +q= link(q); +} +} +} + +/*:497*//*498:*/ +#line 9761 "tex.w" +void conditional(void) +{ +bool b; +uint8_t r; +int m,n; +pointer p,q; +small_number save_scanner_status; +pointer save_cond_ptr; +small_number this_if; +/*495:*/ +#line 9726 "tex.w" + +{p= get_node(if_node_size);link(p)= cond_ptr;type(p)= if_limit; +subtype(p)= cur_if;if_line_field(p)= if_line; +cond_ptr= p;cur_if= cur_chr;if_limit= if_code;if_line= line; +} + +/*:495*/ +#line 9770 "tex.w" +;save_cond_ptr= cond_ptr;this_if= cur_chr; +/*501:*/ +#line 9799 "tex.w" + +switch(this_if){ +case if_char_code:case if_cat_code:/*506:*/ +#line 9870 "tex.w" + +{get_x_token_or_active_char; +if((cur_cmd> active_char)||(cur_chr> 255)) +{m= relax;n= 256; +} +else{m= cur_cmd;n= cur_chr; +} +get_x_token_or_active_char; +if((cur_cmd> active_char)||(cur_chr> 255)) +{cur_cmd= relax;cur_chr= 256; +} +if(this_if==if_char_code)b= (n==cur_chr);else b= (m==cur_cmd); +} + +/*:506*/ +#line 9801 "tex.w" +break; +case if_int_code:case if_dim_code:/*503:*/ +#line 9827 "tex.w" + +{if(this_if==if_int_code)scan_int();else scan_normal_dimen; +n= cur_val;/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 9829 "tex.w" +; +if((cur_tok>=other_token+'<')&&(cur_tok<=other_token+'>')) +r= cur_tok-other_token; +else{print_err("Missing = inserted for "); + +print_cmd_chr(if_test,this_if); +help1("I was expecting to see `<', `=', or `>'. Didn't."); +back_error();r= '='; +} +if(this_if==if_int_code)scan_int();else scan_normal_dimen; +switch(r){ +case'<':b= (n<cur_val);break; +case'=':b= (n==cur_val);break; +case'>':b= (n> cur_val); +} +} + +/*:503*/ +#line 9802 "tex.w" +break; +case if_odd_code:/*504:*/ +#line 9846 "tex.w" + +{scan_int();b= odd(cur_val); +} + +/*:504*/ +#line 9803 "tex.w" +break; +case if_vmode_code:b= (abs(mode)==vmode);break; +case if_hmode_code:b= (abs(mode)==hmode);break; +case if_mmode_code:b= (abs(mode)==mmode);break; +case if_inner_code:b= (mode<0);break; +case if_void_code:case if_hbox_code:case if_vbox_code:/*505:*/ +#line 9850 "tex.w" + +{scan_eight_bit_int();p= box(cur_val); +if(this_if==if_void_code)b= (p==null); +else if(p==null)b= false; +else if(this_if==if_hbox_code)b= (type(p)==hlist_node); +else b= (type(p)==vlist_node); +} + +/*:505*/ +#line 9808 "tex.w" +break; +case ifx_code:/*507:*/ +#line 9891 "tex.w" + +{save_scanner_status= scanner_status;scanner_status= normal; +get_next();n= cur_cs;p= cur_cmd;q= cur_chr; +get_next();if(cur_cmd!=p)b= false; +else if(cur_cmd<call)b= (cur_chr==q); +else/*508:*/ +#line 9908 "tex.w" + +{p= link(cur_chr);q= link(equiv(n)); +if(p==q)b= true; +else{while((p!=null)&&(q!=null)) +if(info(p)!=info(q))p= null; +else{p= link(p);q= link(q); +} +b= ((p==null)&&(q==null)); +} +} + +/*:508*/ +#line 9896 "tex.w" +; +scanner_status= save_scanner_status; +} + +/*:507*/ +#line 9809 "tex.w" +break; +case if_eof_code:{scan_four_bit_int();b= (read_open[cur_val]==closed); +}break; +case if_true_code:b= true;break; +case if_false_code:b= false;break; +case if_case_code:/*509:*/ +#line 9919 "tex.w" + +{scan_int();n= cur_val; +if(tracing_commands> 1) +{begin_diagnostic();print_str("{case ");print_int(n);print_char('}'); +end_diagnostic(false); +} +while(n!=0) +{pass_text(); +if(cond_ptr==save_cond_ptr) +if(cur_chr==or_code)decr(n); +else goto common_ending; +else if(cur_chr==fi_code)/*496:*/ +#line 9732 "tex.w" + +{p= cond_ptr;if_line= if_line_field(p); +cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p); +free_node(p,if_node_size); +} + +/*:496*/ +#line 9930 "tex.w" +; +} +change_if_limit(or_code,save_cond_ptr); +return; +} + +/*:509*/ +#line 9814 "tex.w" +; +} + +/*:501*/ +#line 9771 "tex.w" +; +if(tracing_commands> 1)/*502:*/ +#line 9817 "tex.w" + +{begin_diagnostic(); +if(b)print_str("{true}");else print_str("{false}"); +end_diagnostic(false); +} + +/*:502*/ +#line 9772 "tex.w" +; +if(b) +{change_if_limit(else_code,save_cond_ptr); +return; +} +/*500:*/ +#line 9787 "tex.w" + +loop{pass_text(); +if(cond_ptr==save_cond_ptr) +{if(cur_chr!=or_code)goto common_ending; +print_err("Extra ");print_esc(/*1629:*/ +#line 25783 "tex.w" +504 +/*:1629*/ +#line 9791 "tex.w" +); + +help1("I'm ignoring this; it doesn't match any \\if."); +error(); +} +else if(cur_chr==fi_code)/*496:*/ +#line 9732 "tex.w" + +{p= cond_ptr;if_line= if_line_field(p); +cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p); +free_node(p,if_node_size); +} + +/*:496*/ +#line 9796 "tex.w" +; +} + +/*:500*/ +#line 9777 "tex.w" +; +common_ending:if(cur_chr==fi_code)/*496:*/ +#line 9732 "tex.w" + +{p= cond_ptr;if_line= if_line_field(p); +cur_if= subtype(p);if_limit= type(p);cond_ptr= link(p); +free_node(p,if_node_size); +} + +/*:496*/ +#line 9778 "tex.w" + +else if_limit= fi_code; +} + +/*:498*//*515:*/ +#line 10054 "tex.w" +void begin_name(void) +{area_delimiter= 0;ext_delimiter= 0; +} + +/*:515*//*516:*/ +#line 10064 "tex.w" +bool more_name(ASCII_code c) +{if(c==' ')return false; +else{str_room(1);append_char(c); +if((c=='>')||(c==':')) +{area_delimiter= cur_length;ext_delimiter= 0; +} +else if((c=='.')&&(ext_delimiter==0))ext_delimiter= cur_length; +return true; +} +} + +/*:516*//*517:*/ +#line 10078 "tex.w" +void end_name(void) +{if(str_ptr+3> max_strings) +overflow("number of strings",max_strings-init_str_ptr); + +if(area_delimiter==0)cur_area= empty_string; +else{cur_area= str_ptr; +str_start[str_ptr+1]= str_start[str_ptr]+area_delimiter;incr(str_ptr); +} +if(ext_delimiter==0) +{cur_ext= empty_string;cur_name= make_string(); +} +else{cur_name= str_ptr; +str_start[str_ptr+1]= str_start[str_ptr]+ext_delimiter-area_delimiter-1; +incr(str_ptr);cur_ext= make_string(); +} +} + +/*:517*//*519:*/ +#line 10115 "tex.w" +void pack_file_name(str_number n,str_number a,str_number e) +{int k; +ASCII_code c; +int j; +k= 0; +for(j= str_start[a];j<=str_start[a+1]-1;j++)append_to_name(so(str_pool[j])); +for(j= str_start[n];j<=str_start[n+1]-1;j++)append_to_name(so(str_pool[j])); +for(j= str_start[e];j<=str_start[e+1]-1;j++)append_to_name(so(str_pool[j])); +if(k<=file_name_size)name_length= k;else name_length= file_name_size; +name_of_file[name_length+1]= 0; +} + +/*:519*//*522:*/ +#line 10158 "tex.w" +void pack_buffered_name(small_number n,int a,int b) +{int k; +ASCII_code c; +int j; +if(n+b-a+1+format_ext_length> file_name_size) +b= a+file_name_size-n-1-format_ext_length; +k= 0; +for(j= 1;j<=n;j++)append_to_name(xord[TEX_format_default[j]]); +for(j= a;j<=b;j++)append_to_name(buffer[j]); +for(j= format_default_length-format_ext_length+1;j<=format_default_length;j++) +append_to_name(xord[TEX_format_default[j]]); +if(k<=file_name_size)name_length= k;else name_length= file_name_size; +name_of_file[name_length+1]= 0; +} + +/*:522*//*524:*/ +#line 10220 "tex.w" +str_number make_name_string(void) +{int k; +if((pool_ptr+name_length> pool_size)||(str_ptr==max_strings)|| +(cur_length> 0)) +return'?'; +else{for(k= 1;k<=name_length;k++)append_char(xord[name_of_file[k]]); +return make_string(); +} +} +str_number a_make_name_string(alpha_file*f) +{return make_name_string(); +} +str_number b_make_name_string(byte_file*f) +{return make_name_string(); +} +str_number w_make_name_string(word_file*f) +{return make_name_string(); +} + +/*:524*//*525:*/ +#line 10244 "tex.w" +void scan_file_name(void) +{ +name_in_progress= true;begin_name(); +/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 10247 "tex.w" +; +loop{if((cur_cmd> other_char)||(cur_chr> 255)) +{back_input();goto done; +} +if(!more_name(cur_chr))goto done; +get_x_token(); +} +done:end_name();name_in_progress= false; +} + +/*:525*//*528:*/ +#line 10287 "tex.w" +void pack_job_name(str_number s) + +{cur_area= empty_string;cur_ext= s; +cur_name= job_name;pack_cur_name; +} + +/*:528*//*529:*/ +#line 10300 "tex.w" +void prompt_file_name(char*s,str_number e) +{ +uint16_t k; +if(interaction==scroll_mode)wake_up_terminal; +if(strcmp(s,"input file name")==0)print_err("I can't find file `") + +else print_err("I can't write on file `"); + +print_file_name(cur_name,cur_area,cur_ext);print_str("'."); +if(e==/*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 10309 "tex.w" +)show_context(); +print_nl("Please type another ");print_str(s); + +if(interaction<scroll_mode) +fatal_error("*** (job aborted, file error in nonstop mode)"); + +clear_terminal;prompt_input(": ");/*530:*/ +#line 10320 "tex.w" + +{begin_name();k= first; +while((buffer[k]==' ')&&(k<last))incr(k); +loop{if(k==last)goto done; +if(!more_name(buffer[k]))goto done; +incr(k); +} +done:end_name(); +} + +/*:530*/ +#line 10315 "tex.w" +; +if(cur_ext==empty_string)cur_ext= e; +pack_cur_name; +} + +/*:529*//*534:*/ +#line 10352 "tex.w" +void open_log_file(void) +{uint8_t old_setting; +int k; +uint16_t l; +ASCII_code months[]= " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"; +old_setting= selector; +if(job_name==0)job_name= /*1638:*/ +#line 25810 "tex.w" +513 +/*:1638*/ +#line 10358 "tex.w" +; + +pack_job_name(/*1634:*/ +#line 25798 "tex.w" +509 +/*:1634*/ +#line 10360 "tex.w" +); +while(!a_open_out(&log_file))/*535:*/ +#line 10389 "tex.w" + +{selector= term_only; +prompt_file_name("transcript file name",/*1634:*/ +#line 25798 "tex.w" +509 +/*:1634*/ +#line 10391 "tex.w" +); +} + +/*:535*/ +#line 10361 "tex.w" +; +log_name= a_make_name_string(&log_file); +selector= log_only;log_opened= true; +/*536:*/ +#line 10394 "tex.w" + +{wlog("%s",banner); +slow_print(format_ident);print_str(" "); +print_int(day);print_char(' '); +for(k= 3*month-2;k<=3*month;k++)wlog("%c",months[k]); +print_char(' ');print_int(year);print_char(' '); +print_two(time/60);print_char(':');print_two(time%60); +} + +/*:536*/ +#line 10364 "tex.w" +; +input_stack[input_ptr]= cur_input; +print_nl("**"); + +l= input_stack[0].limit_field; +if(buffer[l]==end_line_char)decr(l); +for(k= 1;k<=l;k++)print(buffer[k]); +print_ln(); +selector= old_setting+2; +} + +/*:534*//*537:*/ +#line 10406 "tex.w" +void start_input(void) +{ +scan_file_name(); +if(cur_ext==empty_string)cur_ext= /*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 10409 "tex.w" +; +pack_cur_name; +loop{begin_file_reading(); +if(a_open_in(&cur_file))goto done; +if(cur_area==empty_string) +{pack_file_name(cur_name,TEX_area,cur_ext); +if(a_open_in(&cur_file))goto done; +} +end_file_reading(); +prompt_file_name("input file name",/*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 10418 "tex.w" +); +} +done:name= a_make_name_string(&cur_file); +if(job_name==0) +{job_name= cur_name;open_log_file(); +} + +if(term_offset+length(name)> max_print_line-2)print_ln(); +else if((term_offset> 0)||(file_offset> 0))print_char(' '); +print_char('(');incr(open_parens);slow_print(name);update_terminal; +state= new_line; +if(name==str_ptr-1) +{flush_string;name= cur_name; +} +/*538:*/ +#line 10441 "tex.w" + +{line= 1; +if(input_ln(&cur_file,false))do_nothing; +firm_up_the_line(); +if(end_line_char_inactive)decr(limit); +else buffer[limit]= end_line_char; +first= limit+1;loc= start; +} + +/*:538*/ +#line 10432 "tex.w" +; +} + +/*:537*//*560:*/ +#line 10946 "tex.w" +internal_font_number read_font_info(pointer u,str_number nom,str_number aire, +scaled s) +{ +font_index k; +bool file_opened; +halfword lf,lh,bc,ec,nw,nh,nd,ni,nl,nk,ne,np; + +internal_font_number f; +internal_font_number g; +eight_bits a,b,c,d; +four_quarters qw;scaled sw; +int bch_label; +uint16_t bchar; +scaled z; +int alpha;uint8_t beta; + +g= null_font; +/*562:*/ +#line 10999 "tex.w" + +/*563:*/ +#line 11011 "tex.w" + +file_opened= false; +if(aire==empty_string)pack_file_name(nom,TEX_font_area,/*1640:*/ +#line 25816 "tex.w" +515 +/*:1640*/ +#line 11013 "tex.w" +); +else pack_file_name(nom,aire,/*1640:*/ +#line 25816 "tex.w" +515 +/*:1640*/ +#line 11014 "tex.w" +); +if(!b_open_in(&tfm_file))abort; +file_opened= true + +/*:563*/ +#line 11000 "tex.w" +; +/*565:*/ +#line 11039 "tex.w" + +{read_sixteen(lf); +fget;read_sixteen(lh); +fget;read_sixteen(bc); +fget;read_sixteen(ec); +if((bc> ec+1)||(ec> 255))abort; +if(bc> 255) +{bc= 1;ec= 0; +} +fget;read_sixteen(nw); +fget;read_sixteen(nh); +fget;read_sixteen(nd); +fget;read_sixteen(ni); +fget;read_sixteen(nl); +fget;read_sixteen(nk); +fget;read_sixteen(ne); +fget;read_sixteen(np); +if(lf!=6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np)abort; +if((nw==0)||(nh==0)||(nd==0)||(ni==0))abort; +} + +/*:565*/ +#line 11001 "tex.w" +; +/*566:*/ +#line 11066 "tex.w" + +lf= lf-6-lh; +if(np<7)lf= lf+7-np; +if((font_ptr==font_max)||(fmem_ptr+lf> font_mem_size)) +/*567:*/ +#line 11082 "tex.w" + +{start_font_error_message; +print_str(" not loaded: Not enough room left"); + +help4("I'm afraid I won't be able to make use of this font,") +("because my memory for character-size data is too small.") +("If you're really stuck, ask a wizard to enlarge me.") +("Or maybe try `I\\font<same font id>=<name of loaded font>'."); +error();goto done; +} + +/*:567*/ +#line 11070 "tex.w" +; +f= font_ptr+1; +char_base[f]= fmem_ptr-bc; +width_base[f]= char_base[f]+ec+1; +height_base[f]= width_base[f]+nw; +depth_base[f]= height_base[f]+nh; +italic_base[f]= depth_base[f]+nd; +lig_kern_base[f]= italic_base[f]+ni; +kern_base[f]= lig_kern_base[f]+nl-kern_base_offset; +exten_base[f]= kern_base[f]+kern_base_offset+nk; +param_base[f]= exten_base[f]+ne + +/*:566*/ +#line 11002 "tex.w" +; +/*568:*/ +#line 11095 "tex.w" + +{if(lh<2)abort; +store_four_quarters(font_check[f]); +fget;read_sixteen(z); +fget;z= z*0400+fbyte;fget;z= (z*020)+(fbyte/020); +if(z<unity)abort; +while(lh> 2) +{fget;fget;fget;fget;decr(lh); +} +font_dsize[f]= z; +if(s!=-1000) +if(s>=0)z= s; +else z= xn_over_d(z,-s,1000); +font_size[f]= z; +} + +/*:568*/ +#line 11003 "tex.w" +; +/*569:*/ +#line 11111 "tex.w" + +for(k= fmem_ptr;k<=width_base[f]-1;k++) +{store_four_quarters(font_info[k].qqqq); +if((a>=nw)||(b/020>=nh)||(b%020>=nd)|| +(c/4>=ni))abort; +switch(c%4){ +case lig_tag:if(d>=nl)abort;break; +case ext_tag:if(d>=ne)abort;break; +case list_tag:/*570:*/ +#line 11132 "tex.w" + +{check_byte_range(d); +while(d<current_character_being_worked_on) +{qw= char_info(f)(d); + +if(char_tag(qw)!=list_tag)goto not_found; +d= qo(rem_byte(qw)); +} +if(d==current_character_being_worked_on)abort; +not_found:;} + +/*:570*/ +#line 11119 "tex.w" +break; +default:do_nothing; +} +} + +/*:569*/ +#line 11004 "tex.w" +; +/*571:*/ +#line 11167 "tex.w" + +{/*572:*/ +#line 11177 "tex.w" + +{alpha= 16; +while(z>=040000000) +{z= z/2;alpha= alpha+alpha; +} +beta= 256/alpha;alpha= alpha*z; +} + +/*:572*/ +#line 11168 "tex.w" +; +for(k= width_base[f];k<=lig_kern_base[f]-1;k++) +store_scaled(font_info[k].sc); +if(font_info[width_base[f]].sc!=0)abort; +if(font_info[height_base[f]].sc!=0)abort; +if(font_info[depth_base[f]].sc!=0)abort; +if(font_info[italic_base[f]].sc!=0)abort; +} + +/*:571*/ +#line 11005 "tex.w" +; +/*573:*/ +#line 11191 "tex.w" + +bch_label= 077777;bchar= 256; +if(nl> 0) +{for(k= lig_kern_base[f];k<=kern_base[f]+kern_base_offset-1;k++) +{store_four_quarters(font_info[k].qqqq); +if(a> 128) +{if(256*c+d>=nl)abort; +if(a==255)if(k==lig_kern_base[f])bchar= b; +} +else{if(b!=bchar)check_existence(b); +if(c<128)check_existence(d) +else if(256*(c-128)+d>=nk)abort; +if(a<128)if(k-lig_kern_base[f]+a+1>=nl)abort; +} +} +if(a==255)bch_label= 256*c+d; +} +for(k= kern_base[f]+kern_base_offset;k<=exten_base[f]-1;k++) +store_scaled(font_info[k].sc); + +/*:573*/ +#line 11006 "tex.w" +; +/*574:*/ +#line 11211 "tex.w" + +for(k= exten_base[f];k<=param_base[f]-1;k++) +{store_four_quarters(font_info[k].qqqq); +if(a!=0)check_existence(a); +if(b!=0)check_existence(b); +if(c!=0)check_existence(c); +check_existence(d); +} + +/*:574*/ +#line 11007 "tex.w" +; +/*575:*/ +#line 11223 "tex.w" + +{for(k= 1;k<=np;k++) +if(k==1) +{fget;sw= fbyte;if(sw> 127)sw= sw-256; +fget;sw= sw*0400+fbyte;fget;sw= sw*0400+fbyte; +fget;font_info[param_base[f]].sc= +(sw*020)+(fbyte/020); +} +else store_scaled(font_info[param_base[f]+k-1].sc); +if(eof(tfm_file))abort; +for(k= np+1;k<=7;k++)font_info[param_base[f]+k-1].sc= 0; +} + +/*:575*/ +#line 11008 "tex.w" +; +/*576:*/ +#line 11243 "tex.w" + +if(np>=7)font_params[f]= np;else font_params[f]= 7; +hyphen_char[f]= default_hyphen_char;skew_char[f]= default_skew_char; +if(bch_label<nl)bchar_label[f]= bch_label+lig_kern_base[f]; +else bchar_label[f]= non_address; +font_bchar[f]= qi(bchar); +font_false_bchar[f]= qi(bchar); +if(bchar<=ec)if(bchar>=bc) +{qw= char_info(f)(bchar); +if(char_exists(qw))font_false_bchar[f]= non_char; +} +font_name[f]= nom; +font_area[f]= aire; +font_bc[f]= bc;font_ec[f]= ec;font_glue[f]= null; +adjust(char_base);adjust(width_base);adjust(lig_kern_base); +adjust(kern_base);adjust(exten_base); +decr(param_base[f]); +fmem_ptr= fmem_ptr+lf;font_ptr= f;g= f;goto done + +/*:576*/ +#line 11009 "tex.w" + + +/*:562*/ +#line 10965 "tex.w" +; +bad_tfm:/*561:*/ +#line 10987 "tex.w" + +start_font_error_message; + +if(file_opened)print_str(" not loadable: Bad metric (TFM) file"); +else print_str(" not loadable: Metric (TFM) file not found"); +help5("I wasn't able to read the size data for this font,") +("so I will ignore the font specification.") +("[Wizards can fix TFM files using TFtoPL/PLtoTF.]") +("You might try inserting a different font spec;") +("e.g., type `I\\font<same font id>=<substitute font name>'."); +error() + +/*:561*/ +#line 10966 "tex.w" +; +done:if(file_opened)b_close(&tfm_file); +return g; +} + +/*:560*//*581:*/ +#line 11333 "tex.w" +void char_warning(internal_font_number f,eight_bits c) +{if(tracing_lost_chars> 0) +{begin_diagnostic(); +print_nl("Missing character: There is no "); + +print_ASCII(c);print_str(" in font "); +slow_print(font_name[f]);print_char('!');end_diagnostic(false); +} +} + +/*:581*//*582:*/ +#line 11347 "tex.w" +pointer new_character(internal_font_number f,eight_bits c) +{ +pointer p; +if(font_bc[f]<=c)if(font_ec[f]>=c) +if(char_exists(char_info(f)(qi(c)))) +{p= get_avail();font(p)= f;character(p)= qi(c); +return p; +} +char_warning(f,c); +return null; +} + +/*:582*//*597:*/ +#line 11957 "tex.w" +void write_dvi(dvi_index a,dvi_index b) +{int k; +for(k= a;k<=b;k++)write(dvi_file,"%c",dvi_buf[k]); +} + +/*:597*//*598:*/ +#line 11969 "tex.w" +void dvi_swap(void) +{if(dvi_limit==dvi_buf_size) +{write_dvi(0,half_buf-1);dvi_limit= half_buf; +dvi_offset= dvi_offset+dvi_buf_size;dvi_ptr= 0; +} +else{write_dvi(half_buf,dvi_buf_size-1);dvi_limit= dvi_buf_size; +} +dvi_gone= dvi_gone+half_buf; +} + +/*:598*//*600:*/ +#line 11989 "tex.w" +void dvi_four(int x) +{if(x>=0)dvi_out(x/0100000000) +else{x= x+010000000000; +x= x+010000000000; +dvi_out((x/0100000000)+128); +} +x= x%0100000000;dvi_out(x/0200000); +x= x%0200000;dvi_out(x/0400); +dvi_out(x%0400); +} + +/*:600*//*601:*/ +#line 12005 "tex.w" +void dvi_pop(int l) +{if((l==dvi_offset+dvi_ptr)&&(dvi_ptr> 0))decr(dvi_ptr); +else dvi_out(pop); +} + +/*:601*//*602:*/ +#line 12013 "tex.w" +void dvi_font_def(internal_font_number f) +{int k; +dvi_out(fnt_def1); +dvi_out(f-font_base-1); +dvi_out(qo(font_check[f].b0)); +dvi_out(qo(font_check[f].b1)); +dvi_out(qo(font_check[f].b2)); +dvi_out(qo(font_check[f].b3)); +dvi_four(font_size[f]); +dvi_four(font_dsize[f]); +dvi_out(length(font_area[f])); +dvi_out(length(font_name[f])); +/*603:*/ +#line 12028 "tex.w" + +for(k= str_start[font_area[f]];k<=str_start[font_area[f]+1]-1;k++) +dvi_out(so(str_pool[k])); +for(k= str_start[font_name[f]];k<=str_start[font_name[f]+1]-1;k++) +dvi_out(so(str_pool[k])) + +/*:603*/ +#line 12025 "tex.w" +; +} + +/*:602*//*607:*/ +#line 12107 "tex.w" +void movement(scaled w,eight_bits o) +{ +small_number mstate; +pointer p,q; +int k; +q= get_node(movement_node_size); +width(q)= w;location(q)= dvi_offset+dvi_ptr; +if(o==down1) +{link(q)= down_ptr;down_ptr= q; +} +else{link(q)= right_ptr;right_ptr= q; +} +/*611:*/ +#line 12222 "tex.w" + +p= link(q);mstate= none_seen; +while(p!=null) +{if(width(p)==w)/*612:*/ +#line 12241 "tex.w" + +switch(mstate+info(p)){ +case none_seen+yz_OK:case none_seen+y_OK:case z_seen+yz_OK:case z_seen+y_OK: +if(location(p)<dvi_gone)goto not_found; +else/*613:*/ +#line 12253 "tex.w" + +{k= location(p)-dvi_offset; +if(k<0)k= k+dvi_buf_size; +dvi_buf[k]= dvi_buf[k]+y1-down1; +info(p)= y_here;goto found; +} + +/*:613*/ +#line 12245 "tex.w" +break; +case none_seen+z_OK:case y_seen+yz_OK:case y_seen+z_OK: +if(location(p)<dvi_gone)goto not_found; +else/*614:*/ +#line 12260 "tex.w" + +{k= location(p)-dvi_offset; +if(k<0)k= k+dvi_buf_size; +dvi_buf[k]= dvi_buf[k]+z1-down1; +info(p)= z_here;goto found; +} + +/*:614*/ +#line 12248 "tex.w" +break; +case none_seen+y_here:case none_seen+z_here:case y_seen+z_here:case z_seen+y_here:goto found; +default:do_nothing; +} + +/*:612*/ +#line 12226 "tex.w" + +else switch(mstate+info(p)){ +case none_seen+y_here:mstate= y_seen;break; +case none_seen+z_here:mstate= z_seen;break; +case y_seen+z_here:case z_seen+y_here:goto not_found; +default:do_nothing; +} +p= link(p); +} +not_found: + +/*:611*/ +#line 12120 "tex.w" +; +/*610:*/ +#line 12189 "tex.w" + +info(q)= yz_OK; +if(abs(w)>=040000000) +{dvi_out(o+3); +dvi_four(w);return; +} +if(abs(w)>=0100000) +{dvi_out(o+2); +if(w<0)w= w+0100000000; +dvi_out(w/0200000);w= w%0200000;goto label2; +} +if(abs(w)>=0200) +{dvi_out(o+1); +if(w<0)w= w+0200000; +goto label2; +} +dvi_out(o); +if(w<0)w= w+0400; +goto label1; +label2:dvi_out(w/0400); +label1:dvi_out(w%0400);return + +/*:610*/ +#line 12121 "tex.w" +; +found:/*609:*/ +#line 12165 "tex.w" + +info(q)= info(p); +if(info(q)==y_here) +{dvi_out(o+y0-down1); +while(link(q)!=p) +{q= link(q); +switch(info(q)){ +case yz_OK:info(q)= z_OK;break; +case y_OK:info(q)= d_fixed;break; +default:do_nothing; +} +} +} +else{dvi_out(o+z0-down1); +while(link(q)!=p) +{q= link(q); +switch(info(q)){ +case yz_OK:info(q)= y_OK;break; +case z_OK:info(q)= d_fixed;break; +default:do_nothing; +} +} +} + +/*:609*/ +#line 12122 "tex.w" +; +} + +/*:607*//*615:*/ +#line 12273 "tex.w" +void prune_movements(int l) + +{ +pointer p; +while(down_ptr!=null) +{if(location(down_ptr)<l)goto done; +p= down_ptr;down_ptr= link(p);free_node(p,movement_node_size); +} +done:while(right_ptr!=null) +{if(location(right_ptr)<l)return; +p= right_ptr;right_ptr= link(p);free_node(p,movement_node_size); +} +} + +/*:615*//*618:*/ +#line 12350 "tex.w" +void vlist_out(void); + + +/*:618*//*619:*/ +#line 12359 "tex.w" +/*1368:*/ +#line 24824 "tex.w" + +void special_out(pointer p) +{uint8_t old_setting; +int k; +synch_h;synch_v; +old_setting= selector;selector= new_string; +show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr); +selector= old_setting; +str_room(1); +if(cur_length<256) +{dvi_out(xxx1);dvi_out(cur_length); +} +else{dvi_out(xxx4);dvi_four(cur_length); +} +for(k= str_start[str_ptr];k<=pool_ptr-1;k++)dvi_out(so(str_pool[k])); +pool_ptr= str_start[str_ptr]; +} + +/*:1368*//*1370:*/ +#line 24855 "tex.w" + +void write_out(pointer p) +{uint8_t old_setting; +int old_mode; +small_number j; +pointer q,r; +/*1371:*/ +#line 24882 "tex.w" + +q= get_avail();info(q)= right_brace_token+'}'; +r= get_avail();link(q)= r;info(r)= end_write_token;ins_list(q); +begin_token_list(write_tokens(p),write_text); +q= get_avail();info(q)= left_brace_token+'{';ins_list(q); + + +old_mode= mode;mode= 0; + +cur_cs= write_loc;q= scan_toks(false,true); +get_token();if(cur_tok!=end_write_token) +/*1372:*/ +#line 24897 "tex.w" + +{print_err("Unbalanced write command"); + +help2("On this page there's a \\write with fewer real {'s than }'s.") +("I can't handle that very well; good luck.");error(); +do{get_token(); +}while(!(cur_tok==end_write_token)); +} + +/*:1372*/ +#line 24893 "tex.w" +; +mode= old_mode; +end_token_list() + +/*:1371*/ +#line 24861 "tex.w" +; +old_setting= selector;j= write_stream(p); +if(write_open[j])selector= j; +else{ +if((j==17)&&(selector==term_and_log))selector= log_only; +print_nl(""); +} +token_show(def_ref);print_ln(); +flush_list(def_ref);selector= old_setting; +} + +/*:1370*//*1373:*/ +#line 24909 "tex.w" + +void out_what(pointer p) +{small_number j; +switch(subtype(p)){ +case open_node:case write_node:case close_node:/*1374:*/ +#line 24927 "tex.w" + +if(!doing_leaders) +{j= write_stream(p); +if(subtype(p)==write_node)write_out(p); +else{if(write_open[j])a_close(&write_file[j]); +if(subtype(p)==close_node)write_open[j]= false; +else if(j<16) +{cur_name= open_name(p);cur_area= open_area(p); +cur_ext= open_ext(p); +if(cur_ext==empty_string)cur_ext= /*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 24936 "tex.w" +; +pack_cur_name; +while(!a_open_out(&write_file[j])) +prompt_file_name("output file name",/*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 24939 "tex.w" +); +write_open[j]= true; +} +} +} + +/*:1374*/ +#line 24914 "tex.w" +break; +case special_node:special_out(p);break; +case language_node:do_nothing;break; +default:confusion(/*1792:*/ +#line 26272 "tex.w" +667 + +/*:1792*/ +#line 24917 "tex.w" +); + +} +} + +/*:1373*/ +#line 12359 "tex.w" + +void hlist_out(void) +{ +scaled base_line; +scaled left_edge; +scaled save_h,save_v; +pointer this_box; +glue_ord g_order; +uint8_t g_sign; +pointer p; +int save_loc; +pointer leader_box; +scaled leader_wd; +scaled lx; +bool outer_doing_leaders; +scaled edge; +double glue_temp; +double cur_glue; +scaled cur_g; +cur_g= 0;cur_glue= float_constant(0); +this_box= temp_ptr;g_order= glue_order(this_box); +g_sign= glue_sign(this_box);p= list_ptr(this_box); +incr(cur_s); +if(cur_s> 0)dvi_out(push); +if(cur_s> max_push)max_push= cur_s; +save_loc= dvi_offset+dvi_ptr;base_line= cur_v;left_edge= cur_h; +while(p!=null)/*620:*/ +#line 12398 "tex.w" + +reswitch:if(is_char_node(p)) +{synch_h;synch_v; +do{f= font(p);c= character(p); +if(f!=dvi_f)/*621:*/ +#line 12412 "tex.w" + +{if(!font_used[f]) +{dvi_font_def(f);font_used[f]= true; +} +if(f<=64+font_base)dvi_out(f-font_base-1+fnt_num_0) +else{dvi_out(fnt1);dvi_out(f-font_base-1); +} +dvi_f= f; +} + +/*:621*/ +#line 12402 "tex.w" +; +if(c>=qi(128))dvi_out(set1); +dvi_out(qo(c)); +cur_h= cur_h+char_width(f)(char_info(f)(c)); +p= link(p); +}while(!(!is_char_node(p))); +dvi_h= cur_h; +} +else/*622:*/ +#line 12422 "tex.w" + +{switch(type(p)){ +case hlist_node:case vlist_node:/*623:*/ +#line 12440 "tex.w" + +if(list_ptr(p)==null)cur_h= cur_h+width(p); +else{save_h= dvi_h;save_v= dvi_v; +cur_v= base_line+shift_amount(p); +temp_ptr= p;edge= cur_h; +if(type(p)==vlist_node)vlist_out();else hlist_out(); +dvi_h= save_h;dvi_v= save_v; +cur_h= edge+width(p);cur_v= base_line; +} + +/*:623*/ +#line 12424 "tex.w" +break; +case rule_node:{rule_ht= height(p);rule_dp= depth(p);rule_wd= width(p); +goto fin_rule; +} +case whatsit_node:/*1367:*/ +#line 24817 "tex.w" + +out_what(p) + +/*:1367*/ +#line 12428 "tex.w" +;break; +case glue_node:/*625:*/ +#line 12467 "tex.w" + +{g= glue_ptr(p);rule_wd= width(g)-cur_g; +if(g_sign!=normal) +{if(g_sign==stretching) +{if(stretch_order(g)==g_order) +{cur_glue= cur_glue+stretch(g); +vet_glue(float(glue_set(this_box))*cur_glue); + +cur_g= round(glue_temp); +} +} +else if(shrink_order(g)==g_order) +{cur_glue= cur_glue-shrink(g); +vet_glue(float(glue_set(this_box))*cur_glue); +cur_g= round(glue_temp); +} +} +rule_wd= rule_wd+cur_g; +if(subtype(p)>=a_leaders) +/*626:*/ +#line 12490 "tex.w" + +{leader_box= leader_ptr(p); +if(type(leader_box)==rule_node) +{rule_ht= height(leader_box);rule_dp= depth(leader_box); +goto fin_rule; +} +leader_wd= width(leader_box); +if((leader_wd> 0)&&(rule_wd> 0)) +{rule_wd= rule_wd+10; +edge= cur_h+rule_wd;lx= 0; +/*627:*/ +#line 12524 "tex.w" + +if(subtype(p)==a_leaders) +{save_h= cur_h; +cur_h= left_edge+leader_wd*((cur_h-left_edge)/leader_wd); +if(cur_h<save_h)cur_h= cur_h+leader_wd; +} +else{lq= rule_wd/leader_wd; +lr= rule_wd%leader_wd; +if(subtype(p)==c_leaders)cur_h= cur_h+(lr/2); +else{lx= lr/(lq+1); +cur_h= cur_h+((lr-(lq-1)*lx)/2); +} +} + +/*:627*/ +#line 12501 "tex.w" +; +while(cur_h+leader_wd<=edge) +/*628:*/ +#line 12541 "tex.w" + +{cur_v= base_line+shift_amount(leader_box);synch_v;save_v= dvi_v; +synch_h;save_h= dvi_h;temp_ptr= leader_box; +outer_doing_leaders= doing_leaders;doing_leaders= true; +if(type(leader_box)==vlist_node)vlist_out();else hlist_out(); +doing_leaders= outer_doing_leaders; +dvi_v= save_v;dvi_h= save_h;cur_v= base_line; +cur_h= save_h+leader_wd+lx; +} + +/*:628*/ +#line 12503 "tex.w" +; +cur_h= edge-10;goto next_p; +} +} + +/*:626*/ +#line 12486 "tex.w" +; +goto move_past; +} + +/*:625*/ +#line 12429 "tex.w" + +case kern_node:case math_node:cur_h= cur_h+width(p);break; +case ligature_node:/*652:*/ +#line 12994 "tex.w" + +{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p); +p= lig_trick;goto reswitch; +} + +/*:652*/ +#line 12431 "tex.w" + +default:do_nothing; +} +goto next_p; +fin_rule:/*624:*/ +#line 12450 "tex.w" + +if(is_running(rule_ht))rule_ht= height(this_box); +if(is_running(rule_dp))rule_dp= depth(this_box); +rule_ht= rule_ht+rule_dp; +if((rule_ht> 0)&&(rule_wd> 0)) +{synch_h;cur_v= base_line+rule_dp;synch_v; +dvi_out(set_rule);dvi_four(rule_ht);dvi_four(rule_wd); +cur_v= base_line;dvi_h= dvi_h+rule_wd; +} + +/*:624*/ +#line 12435 "tex.w" +; +move_past:cur_h= cur_h+rule_wd; +next_p:p= link(p); +} + +/*:622*/ +#line 12410 "tex.w" + + +/*:620*/ +#line 12386 "tex.w" +; +prune_movements(save_loc); +if(cur_s> 0)dvi_pop(save_loc); +decr(cur_s); +} + +/*:619*//*629:*/ +#line 12553 "tex.w" +void vlist_out(void) +{ +scaled left_edge; +scaled top_edge; +scaled save_h,save_v; +pointer this_box; +glue_ord g_order; +uint8_t g_sign; +pointer p; +int save_loc; +pointer leader_box; +scaled leader_ht; +scaled lx; +bool outer_doing_leaders; +scaled edge; +double glue_temp; +double cur_glue; +scaled cur_g; +cur_g= 0;cur_glue= float_constant(0); +this_box= temp_ptr;g_order= glue_order(this_box); +g_sign= glue_sign(this_box);p= list_ptr(this_box); +incr(cur_s); +if(cur_s> 0)dvi_out(push); +if(cur_s> max_push)max_push= cur_s; +save_loc= dvi_offset+dvi_ptr;left_edge= cur_h;cur_v= cur_v-height(this_box); +top_edge= cur_v; +while(p!=null)/*630:*/ +#line 12586 "tex.w" + +{if(is_char_node(p))confusion(/*1641:*/ +#line 25819 "tex.w" +516 +/*:1641*/ +#line 12587 "tex.w" +); + +else/*631:*/ +#line 12593 "tex.w" + +{switch(type(p)){ +case hlist_node:case vlist_node:/*632:*/ +#line 12613 "tex.w" + +if(list_ptr(p)==null)cur_v= cur_v+height(p)+depth(p); +else{cur_v= cur_v+height(p);synch_v; +save_h= dvi_h;save_v= dvi_v; +cur_h= left_edge+shift_amount(p); +temp_ptr= p; +if(type(p)==vlist_node)vlist_out();else hlist_out(); +dvi_h= save_h;dvi_v= save_v; +cur_v= save_v+depth(p);cur_h= left_edge; +} + +/*:632*/ +#line 12595 "tex.w" +break; +case rule_node:{rule_ht= height(p);rule_dp= depth(p);rule_wd= width(p); +goto fin_rule; +} +case whatsit_node:/*1366:*/ +#line 24814 "tex.w" + +out_what(p) + +/*:1366*/ +#line 12599 "tex.w" +;break; +case glue_node:/*634:*/ +#line 12634 "tex.w" + +{g= glue_ptr(p);rule_ht= width(g)-cur_g; +if(g_sign!=normal) +{if(g_sign==stretching) +{if(stretch_order(g)==g_order) +{cur_glue= cur_glue+stretch(g); +vet_glue(float(glue_set(this_box))*cur_glue); + +cur_g= round(glue_temp); +} +} +else if(shrink_order(g)==g_order) +{cur_glue= cur_glue-shrink(g); +vet_glue(float(glue_set(this_box))*cur_glue); +cur_g= round(glue_temp); +} +} +rule_ht= rule_ht+cur_g; +if(subtype(p)>=a_leaders) +/*635:*/ +#line 12657 "tex.w" + +{leader_box= leader_ptr(p); +if(type(leader_box)==rule_node) +{rule_wd= width(leader_box);rule_dp= 0; +goto fin_rule; +} +leader_ht= height(leader_box)+depth(leader_box); +if((leader_ht> 0)&&(rule_ht> 0)) +{rule_ht= rule_ht+10; +edge= cur_v+rule_ht;lx= 0; +/*636:*/ +#line 12675 "tex.w" + +if(subtype(p)==a_leaders) +{save_v= cur_v; +cur_v= top_edge+leader_ht*((cur_v-top_edge)/leader_ht); +if(cur_v<save_v)cur_v= cur_v+leader_ht; +} +else{lq= rule_ht/leader_ht; +lr= rule_ht%leader_ht; +if(subtype(p)==c_leaders)cur_v= cur_v+(lr/2); +else{lx= lr/(lq+1); +cur_v= cur_v+((lr-(lq-1)*lx)/2); +} +} + +/*:636*/ +#line 12668 "tex.w" +; +while(cur_v+leader_ht<=edge) +/*637:*/ +#line 12692 "tex.w" + +{cur_h= left_edge+shift_amount(leader_box);synch_h;save_h= dvi_h; +cur_v= cur_v+height(leader_box);synch_v;save_v= dvi_v; +temp_ptr= leader_box; +outer_doing_leaders= doing_leaders;doing_leaders= true; +if(type(leader_box)==vlist_node)vlist_out();else hlist_out(); +doing_leaders= outer_doing_leaders; +dvi_v= save_v;dvi_h= save_h;cur_h= left_edge; +cur_v= save_v-height(leader_box)+leader_ht+lx; +} + +/*:637*/ +#line 12670 "tex.w" +; +cur_v= edge-10;goto next_p; +} +} + +/*:635*/ +#line 12653 "tex.w" +; +goto move_past; +} + +/*:634*/ +#line 12600 "tex.w" + +case kern_node:cur_v= cur_v+width(p);break; +default:do_nothing; +} +goto next_p; +fin_rule:/*633:*/ +#line 12624 "tex.w" + +if(is_running(rule_wd))rule_wd= width(this_box); +rule_ht= rule_ht+rule_dp; +cur_v= cur_v+rule_ht; +if((rule_ht> 0)&&(rule_wd> 0)) +{synch_h;synch_v; +dvi_out(put_rule);dvi_four(rule_ht);dvi_four(rule_wd); +} +goto next_p + +/*:633*/ +#line 12605 "tex.w" +; +move_past:cur_v= cur_v+rule_ht; +} + +/*:631*/ +#line 12589 "tex.w" +; +next_p:p= link(p); +} + +/*:630*/ +#line 12580 "tex.w" +; +prune_movements(save_loc); +if(cur_s> 0)dvi_pop(save_loc); +decr(cur_s); +} + +/*:629*//*638:*/ +#line 12706 "tex.w" +void ship_out(pointer p) +{ +int page_loc; +uint8_t j,k; +int s; +uint8_t old_setting; +if(tracing_output> 0) +{print_nl("");print_ln(); +print_str("Completed box being shipped out"); + +} +if(term_offset> max_print_line-9)print_ln(); +else if((term_offset> 0)||(file_offset> 0))print_char(' '); +print_char('[');j= 9; +while((count(j)==0)&&(j> 0))decr(j); +for(k= 0;k<=j;k++) +{print_int(count(k)); +if(k<j)print_char('.'); +} +update_terminal; +if(tracing_output> 0) +{print_char(']'); +begin_diagnostic();show_box(p);end_diagnostic(true); +} +/*640:*/ +#line 12756 "tex.w" + +/*641:*/ +#line 12772 "tex.w" + +if((height(p)> max_dimen)||(depth(p)> max_dimen)|| +(height(p)+depth(p)+v_offset> max_dimen)|| +(width(p)+h_offset> max_dimen)) +{print_err("Huge page cannot be shipped out"); + +help2("The page just created is more than 18 feet tall or") +("more than 18 feet wide, so I suspect something went wrong."); +error(); +if(tracing_output<=0) +{begin_diagnostic(); +print_nl("The following box has been deleted:"); + +show_box(p); +end_diagnostic(true); +} +goto done; +} +if(height(p)+depth(p)+v_offset> max_v)max_v= height(p)+depth(p)+v_offset; +if(width(p)+h_offset> max_h)max_h= width(p)+h_offset + +/*:641*/ +#line 12757 "tex.w" +; +/*617:*/ +#line 12323 "tex.w" + +dvi_h= 0;dvi_v= 0;cur_h= h_offset;dvi_f= null_font; +/*531:*/ +#line 10333 "tex.w" + +if(output_file_name==0) +{if(job_name==0)open_log_file(); +pack_job_name(/*1635:*/ +#line 25801 "tex.w" +510 +/*:1635*/ +#line 10336 "tex.w" +); +while(!b_open_out(&dvi_file)) +prompt_file_name("file name for output",/*1635:*/ +#line 25801 "tex.w" +510 +/*:1635*/ +#line 10338 "tex.w" +); +output_file_name= b_make_name_string(&dvi_file); +} + +/*:531*/ +#line 12325 "tex.w" +; +if(total_pages==0) +{dvi_out(pre);dvi_out(id_byte); + +dvi_four(25400000);dvi_four(473628672); +prepare_mag();dvi_four(mag); +old_setting= selector;selector= new_string; +print_str(" TeX output ");print_int(year);print_char('.'); +print_two(month);print_char('.');print_two(day); +print_char(':');print_two(time/60); +print_two(time%60); +selector= old_setting;dvi_out(cur_length); +for(s= str_start[str_ptr];s<=pool_ptr-1;s++)dvi_out(so(str_pool[s])); +pool_ptr= str_start[str_ptr]; +} + +/*:617*/ +#line 12758 "tex.w" +; +page_loc= dvi_offset+dvi_ptr; +dvi_out(bop); +for(k= 0;k<=9;k++)dvi_four(count(k)); +dvi_four(last_bop);last_bop= page_loc; +cur_v= height(p)+v_offset;temp_ptr= p; +if(type(p)==vlist_node)vlist_out();else hlist_out(); +dvi_out(eop);incr(total_pages);cur_s= -1; +done: + +/*:640*/ +#line 12730 "tex.w" +; +if(tracing_output<=0)print_char(']'); +dead_cycles= 0; +update_terminal; +/*639:*/ +#line 12737 "tex.w" + +#ifdef STAT +if(tracing_stats> 1) +{print_nl("Memory usage before: "); + +print_int(var_used);print_char('&'); +print_int(dyn_used);print_char(';'); +} +#endif +flush_node_list(p); +#ifdef STAT +if(tracing_stats> 1) +{print_str(" after: "); +print_int(var_used);print_char('&'); +print_int(dyn_used);print_str("; still untouched: "); +print_int(hi_mem_min-lo_mem_max-1);print_ln(); +} +#endif + +/*:639*/ +#line 12734 "tex.w" +; +} + +/*:638*//*645:*/ +#line 12883 "tex.w" +void scan_spec(group_code c,bool three_codes) + +{ +int s; +uint8_t spec_code; +if(three_codes)s= saved(0); +if(scan_keyword(/*1642:*/ +#line 25822 "tex.w" +517 +/*:1642*/ +#line 12889 "tex.w" +))spec_code= exactly; + +else if(scan_keyword(/*1643:*/ +#line 25825 "tex.w" +518 +/*:1643*/ +#line 12891 "tex.w" +))spec_code= additional; + +else{spec_code= additional;cur_val= 0; +goto found; +} +scan_normal_dimen; +found:if(three_codes) +{saved(0)= s;incr(save_ptr); +} +saved(0)= spec_code;saved(1)= cur_val;save_ptr= save_ptr+2; +new_save_level(c);scan_left_brace(); +} + +/*:645*//*649:*/ +#line 12938 "tex.w" +pointer hpack(pointer p,scaled w,small_number m) +{ +pointer r; +pointer q; +scaled h,d,x; +scaled s; +pointer g; +glue_ord o; +internal_font_number f; +four_quarters i; +eight_bits hd; +last_badness= 0;r= get_node(box_node_size);type(r)= hlist_node; +subtype(r)= min_quarterword;shift_amount(r)= 0; +q= r+list_offset;link(q)= p; +h= 0;/*650:*/ +#line 12965 "tex.w" + +d= 0;x= 0; +total_stretch[normal]= 0;total_shrink[normal]= 0; +total_stretch[fil]= 0;total_shrink[fil]= 0; +total_stretch[fill]= 0;total_shrink[fill]= 0; +total_stretch[filll]= 0;total_shrink[filll]= 0 + +/*:650*/ +#line 12952 "tex.w" +; +while(p!=null)/*651:*/ +#line 12972 "tex.w" + + +{reswitch:while(is_char_node(p)) +/*654:*/ +#line 13015 "tex.w" + +{f= font(p);i= char_info(f)(character(p));hd= height_depth(i); +x= x+char_width(f)(i); +s= char_height(f)(hd);if(s> h)h= s; +s= char_depth(f)(hd);if(s> d)d= s; +p= link(p); +} + +/*:654*/ +#line 12976 "tex.w" +; +if(p!=null) +{switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:case unset_node: +/*653:*/ +#line 13003 "tex.w" + +{x= x+width(p); +if(type(p)>=rule_node)s= 0;else s= shift_amount(p); +if(height(p)-s> h)h= height(p)-s; +if(depth(p)+s> d)d= depth(p)+s; +} + +/*:653*/ +#line 12980 "tex.w" +break; +case ins_node:case mark_node:case adjust_node:if(adjust_tail!=null) +/*655:*/ +#line 13030 "tex.w" + +{while(link(q)!=p)q= link(q); +if(type(p)==adjust_node) +{link(adjust_tail)= adjust_ptr(p); +while(link(adjust_tail)!=null)adjust_tail= link(adjust_tail); +p= link(p);free_node(link(q),small_node_size); +} +else{link(adjust_tail)= p;adjust_tail= p;p= link(p); +} +link(q)= p;p= q; +} + +/*:655*/ +#line 12982 "tex.w" +break; +case whatsit_node:/*1360:*/ +#line 24795 "tex.w" +do_nothing + +/*:1360*/ +#line 12983 "tex.w" +;break; +case glue_node:/*656:*/ +#line 13042 "tex.w" + +{g= glue_ptr(p);x= x+width(g); +o= stretch_order(g);total_stretch[o]= total_stretch[o]+stretch(g); +o= shrink_order(g);total_shrink[o]= total_shrink[o]+shrink(g); +if(subtype(p)>=a_leaders) +{g= leader_ptr(p); +if(height(g)> h)h= height(g); +if(depth(g)> d)d= depth(g); +} +} + +/*:656*/ +#line 12984 "tex.w" +break; +case kern_node:case math_node:x= x+width(p);break; +case ligature_node:/*652:*/ +#line 12994 "tex.w" + +{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p); +p= lig_trick;goto reswitch; +} + +/*:652*/ +#line 12986 "tex.w" + +default:do_nothing; +} +p= link(p); +} +} + + +/*:651*/ +#line 12955 "tex.w" +; +if(adjust_tail!=null)link(adjust_tail)= null; +height(r)= h;depth(r)= d; +/*657:*/ +#line 13056 "tex.w" + +if(m==additional)w= x+w; +width(r)= w;x= w-x; +if(x==0) +{glue_sign(r)= normal;glue_order(r)= normal; +set_glue_ratio_zero(glue_set(r)); +goto end; +} +else if(x> 0)/*658:*/ +#line 13068 "tex.w" + +{/*659:*/ +#line 13082 "tex.w" + +if(total_stretch[filll]!=0)o= filll; +else if(total_stretch[fill]!=0)o= fill; +else if(total_stretch[fil]!=0)o= fil; +else o= normal + +/*:659*/ +#line 13069 "tex.w" +; +glue_order(r)= o;glue_sign(r)= stretching; +if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]); + +else{glue_sign(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +if(o==normal)if(list_ptr(r)!=null) +/*660:*/ +#line 13088 "tex.w" + +{last_badness= badness(x,total_stretch[normal]); +if(last_badness> hbadness) +{print_ln(); +if(last_badness> 100)print_nl("Underfull");else print_nl("Loose"); +print_str(" \\hbox (badness ");print_int(last_badness); + + +goto common_ending; +} +} + +/*:660*/ +#line 13078 "tex.w" +; +goto end; +} + +/*:658*/ +#line 13065 "tex.w" + +else/*664:*/ +#line 13127 "tex.w" + +{/*665:*/ +#line 13146 "tex.w" + +if(total_shrink[filll]!=0)o= filll; +else if(total_shrink[fill]!=0)o= fill; +else if(total_shrink[fil]!=0)o= fil; +else o= normal + +/*:665*/ +#line 13128 "tex.w" +; +glue_order(r)= o;glue_sign(r)= shrinking; +if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]); + +else{glue_sign(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +if((total_shrink[o]<-x)&&(o==normal)&&(list_ptr(r)!=null)) +{last_badness= 1000000; +set_glue_ratio_one(glue_set(r)); +/*666:*/ +#line 13152 "tex.w" + +if((-x-total_shrink[normal]> hfuzz)||(hbadness<100)) +{if((overfull_rule> 0)&&(-x-total_shrink[normal]> hfuzz)) +{while(link(q)!=null)q= link(q); +link(q)= new_rule(); +width(link(q))= overfull_rule; +} +print_ln();print_nl("Overfull \\hbox ("); + +print_scaled(-x-total_shrink[normal]);print_str("pt too wide"); +goto common_ending; +} + +/*:666*/ +#line 13139 "tex.w" +; +} +else if(o==normal)if(list_ptr(r)!=null) +/*667:*/ +#line 13165 "tex.w" + +{last_badness= badness(-x,total_shrink[normal]); +if(last_badness> hbadness) +{print_ln();print_nl("Tight \\hbox (badness ");print_int(last_badness); + +goto common_ending; +} +} + +/*:667*/ +#line 13142 "tex.w" +; +goto end; +} + +/*:664*/ +#line 13066 "tex.w" + + +/*:657*/ +#line 12959 "tex.w" +; +common_ending:/*663:*/ +#line 13112 "tex.w" + +if(output_active)print_str(") has occurred while \\output is active"); +else{if(pack_begin_line!=0) +{if(pack_begin_line> 0)print_str(") in paragraph at lines "); +else print_str(") in alignment at lines "); +print_int(abs(pack_begin_line)); +print_str("--"); +} +else print_str(") detected at line "); +print_int(line); +} +print_ln(); +font_in_short_display= null_font;short_display(list_ptr(r));print_ln(); +begin_diagnostic();show_box(r);end_diagnostic(true) + +/*:663*/ +#line 12961 "tex.w" +; +end:return r; +} + +/*:649*//*668:*/ +#line 13181 "tex.w" + +#define vpack(...) vpackage(__VA_ARGS__, max_dimen) + + +pointer vpackage(pointer p,scaled h,small_number m,scaled l) +{ +pointer r; +scaled w,d,x; +scaled s; +pointer g; +glue_ord o; +last_badness= 0;r= get_node(box_node_size);type(r)= vlist_node; +subtype(r)= min_quarterword;shift_amount(r)= 0; +list_ptr(r)= p; +w= 0;/*650:*/ +#line 12965 "tex.w" + +d= 0;x= 0; +total_stretch[normal]= 0;total_shrink[normal]= 0; +total_stretch[fil]= 0;total_shrink[fil]= 0; +total_stretch[fill]= 0;total_shrink[fill]= 0; +total_stretch[filll]= 0;total_shrink[filll]= 0 + +/*:650*/ +#line 13195 "tex.w" +; +while(p!=null)/*669:*/ +#line 13210 "tex.w" + +{if(is_char_node(p))confusion(/*1644:*/ +#line 25828 "tex.w" +519 +/*:1644*/ +#line 13211 "tex.w" +); + +else switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:case unset_node: +/*670:*/ +#line 13225 "tex.w" + +{x= x+d+height(p);d= depth(p); +if(type(p)>=rule_node)s= 0;else s= shift_amount(p); +if(width(p)+s> w)w= width(p)+s; +} + +/*:670*/ +#line 13215 "tex.w" +break; +case whatsit_node:/*1359:*/ +#line 24793 "tex.w" +do_nothing + +/*:1359*/ +#line 13216 "tex.w" +;break; +case glue_node:/*671:*/ +#line 13231 "tex.w" + +{x= x+d;d= 0; +g= glue_ptr(p);x= x+width(g); +o= stretch_order(g);total_stretch[o]= total_stretch[o]+stretch(g); +o= shrink_order(g);total_shrink[o]= total_shrink[o]+shrink(g); +if(subtype(p)>=a_leaders) +{g= leader_ptr(p); +if(width(g)> w)w= width(g); +} +} + +/*:671*/ +#line 13217 "tex.w" +break; +case kern_node:{x= x+d+width(p);d= 0; +}break; +default:do_nothing; +} +p= link(p); +} + +/*:669*/ +#line 13197 "tex.w" +; +width(r)= w; +if(d> l) +{x= x+d-l;depth(r)= l; +} +else depth(r)= d; +/*672:*/ +#line 13245 "tex.w" + +if(m==additional)h= x+h; +height(r)= h;x= h-x; +if(x==0) +{glue_sign(r)= normal;glue_order(r)= normal; +set_glue_ratio_zero(glue_set(r)); +goto end; +} +else if(x> 0)/*673:*/ +#line 13257 "tex.w" + +{/*659:*/ +#line 13082 "tex.w" + +if(total_stretch[filll]!=0)o= filll; +else if(total_stretch[fill]!=0)o= fill; +else if(total_stretch[fil]!=0)o= fil; +else o= normal + +/*:659*/ +#line 13258 "tex.w" +; +glue_order(r)= o;glue_sign(r)= stretching; +if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]); + +else{glue_sign(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +if(o==normal)if(list_ptr(r)!=null) +/*674:*/ +#line 13271 "tex.w" + +{last_badness= badness(x,total_stretch[normal]); +if(last_badness> vbadness) +{print_ln(); +if(last_badness> 100)print_nl("Underfull");else print_nl("Loose"); +print_str(" \\vbox (badness ");print_int(last_badness); + + +goto common_ending; +} +} + +/*:674*/ +#line 13267 "tex.w" +; +goto end; +} + +/*:673*/ +#line 13254 "tex.w" + +else/*676:*/ +#line 13296 "tex.w" + +{/*665:*/ +#line 13146 "tex.w" + +if(total_shrink[filll]!=0)o= filll; +else if(total_shrink[fill]!=0)o= fill; +else if(total_shrink[fil]!=0)o= fil; +else o= normal + +/*:665*/ +#line 13297 "tex.w" +; +glue_order(r)= o;glue_sign(r)= shrinking; +if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]); + +else{glue_sign(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +if((total_shrink[o]<-x)&&(o==normal)&&(list_ptr(r)!=null)) +{last_badness= 1000000; +set_glue_ratio_one(glue_set(r)); +/*677:*/ +#line 13315 "tex.w" + +if((-x-total_shrink[normal]> vfuzz)||(vbadness<100)) +{print_ln();print_nl("Overfull \\vbox ("); + +print_scaled(-x-total_shrink[normal]);print_str("pt too high"); +goto common_ending; +} + +/*:677*/ +#line 13308 "tex.w" +; +} +else if(o==normal)if(list_ptr(r)!=null) +/*678:*/ +#line 13323 "tex.w" + +{last_badness= badness(-x,total_shrink[normal]); +if(last_badness> vbadness) +{print_ln();print_nl("Tight \\vbox (badness ");print_int(last_badness); + +goto common_ending; +} +} + +/*:678*/ +#line 13311 "tex.w" +; +goto end; +} + +/*:676*/ +#line 13255 "tex.w" + + +/*:672*/ +#line 13204 "tex.w" +; +common_ending:/*675:*/ +#line 13283 "tex.w" + +if(output_active)print_str(") has occurred while \\output is active"); +else{if(pack_begin_line!=0) +{print_str(") in alignment at lines "); +print_int(abs(pack_begin_line)); +print_str("--"); +} +else print_str(") detected at line "); +print_int(line); +print_ln(); +} +begin_diagnostic();show_box(r);end_diagnostic(true) + +/*:675*/ +#line 13206 "tex.w" +; +end:return r; +} + +/*:668*//*679:*/ +#line 13335 "tex.w" +void append_to_vlist(pointer b) +{scaled d; +pointer p; +if(prev_depth> ignore_depth) +{d= width(baseline_skip)-prev_depth-height(b); +if(d<line_skip_limit)p= new_param_glue(line_skip_code); +else{p= new_skip_param(baseline_skip_code); +width(temp_ptr)= d; +} +link(tail)= p;tail= p; +} +link(tail)= b;tail= b;prev_depth= depth(b); +} + +/*:679*//*686:*/ +#line 13533 "tex.w" +pointer new_noad(void) +{pointer p; +p= get_node(noad_size); +type(p)= ord_noad;subtype(p)= normal; +mem[nucleus(p)].hh= empty_field; +mem[subscr(p)].hh= empty_field; +mem[supscr(p)].hh= empty_field; +return p; +} + +/*:686*//*688:*/ +#line 13594 "tex.w" +pointer new_style(small_number s) +{pointer p; +p= get_node(style_node_size);type(p)= style_node; +subtype(p)= s;width(p)= 0;depth(p)= 0; +return p; +} + +/*:688*//*689:*/ +#line 13611 "tex.w" +pointer new_choice(void) +{pointer p; +p= get_node(style_node_size);type(p)= choice_node; +subtype(p)= 0; +display_mlist(p)= null;text_mlist(p)= null;script_mlist(p)= null; +script_script_mlist(p)= null; +return p; +} + +/*:689*//*693:*/ +#line 13699 "tex.w" +void show_info(void) +{show_node_list(info(temp_ptr)); +} + +/*:693*//*704:*/ +#line 13894 "tex.w" +pointer fraction_rule(scaled t) + +{pointer p; +p= new_rule();height(p)= t;depth(p)= 0;return p; +} + +/*:704*//*705:*/ +#line 13904 "tex.w" +pointer overbar(pointer b,scaled k,scaled t) +{pointer p,q; +p= new_kern(k);link(p)= b;q= fraction_rule(t);link(q)= p; +p= new_kern(t);link(p)= q;return vpack(p,natural); +} + +/*:705*//*706:*/ +#line 13925 "tex.w" +/*709:*/ +#line 13997 "tex.w" + +pointer char_box(internal_font_number f,quarterword c) +{four_quarters q; +eight_bits hd; +pointer b,p; +q= char_info(f)(c);hd= height_depth(q); +b= new_null_box();width(b)= char_width(f)(q)+char_italic(f)(q); +height(b)= char_height(f)(hd);depth(b)= char_depth(f)(hd); +p= get_avail();character(p)= c;font(p)= f;list_ptr(b)= p;return b; +} + +/*:709*//*711:*/ +#line 14021 "tex.w" + +void stack_into_box(pointer b,internal_font_number f, +quarterword c) +{pointer p; +p= char_box(f,c);link(p)= list_ptr(b);list_ptr(b)= p; +height(b)= height(p); +} + +/*:711*//*712:*/ +#line 14032 "tex.w" + +scaled height_plus_depth(internal_font_number f,quarterword c) +{four_quarters q; +eight_bits hd; +q= char_info(f)(c);hd= height_depth(q); +return char_height(f)(hd)+char_depth(f)(hd); +} + +/*:712*/ +#line 13925 "tex.w" + +pointer var_delimiter(pointer d,small_number s,scaled v) +{ +pointer b; +internal_font_number f,g; +quarterword c,x,y; +int m,n; +scaled u; +scaled w; +four_quarters q; +eight_bits hd; +four_quarters r; +small_number z; +bool large_attempt; +f= null_font;w= 0;large_attempt= false; +z= small_fam(d);x= small_char(d); +loop{/*707:*/ +#line 13959 "tex.w" + +if((z!=0)||(x!=min_quarterword)) +{z= z+s+16; +do{z= z-16;g= fam_fnt(z); +if(g!=null_font) +/*708:*/ +#line 13970 "tex.w" + +{y= x; +if((qo(y)>=font_bc[g])&&(qo(y)<=font_ec[g])) +{resume:q= char_info(g)(y); +if(char_exists(q)) +{if(char_tag(q)==ext_tag) +{f= g;c= y;goto found; +} +hd= height_depth(q); +u= char_height(g)(hd)+char_depth(g)(hd); +if(u> w) +{f= g;c= y;w= u; +if(u>=v)goto found; +} +if(char_tag(q)==list_tag) +{y= rem_byte(q);goto resume; +} +} +} +} + +/*:708*/ +#line 13966 "tex.w" +; +}while(!(z<16)); +} + +/*:707*/ +#line 13942 "tex.w" +; +if(large_attempt)goto found; +large_attempt= true;z= large_fam(d);x= large_char(d); +} +found:if(f!=null_font) +/*710:*/ +#line 14011 "tex.w" + +if(char_tag(q)==ext_tag) +/*713:*/ +#line 14040 "tex.w" + +{b= new_null_box(); +type(b)= vlist_node; +r= font_info[exten_base[f]+rem_byte(q)].qqqq; +/*714:*/ +#line 14065 "tex.w" + +c= ext_rep(r);u= height_plus_depth(f,c); +w= 0;q= char_info(f)(c);width(b)= char_width(f)(q)+char_italic(f)(q); +c= ext_bot(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c); +c= ext_mid(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c); +c= ext_top(r);if(c!=min_quarterword)w= w+height_plus_depth(f,c); +n= 0; +if(u> 0)while(w<v) +{w= w+u;incr(n); +if(ext_mid(r)!=min_quarterword)w= w+u; +} + +/*:714*/ +#line 14045 "tex.w" +; +c= ext_bot(r); +if(c!=min_quarterword)stack_into_box(b,f,c); +c= ext_rep(r); +for(m= 1;m<=n;m++)stack_into_box(b,f,c); +c= ext_mid(r); +if(c!=min_quarterword) +{stack_into_box(b,f,c);c= ext_rep(r); +for(m= 1;m<=n;m++)stack_into_box(b,f,c); +} +c= ext_top(r); +if(c!=min_quarterword)stack_into_box(b,f,c); +depth(b)= w-height(b); +} + +/*:713*/ +#line 14014 "tex.w" + +else b= char_box(f,c) + +/*:710*/ +#line 13947 "tex.w" +; +else{b= new_null_box(); +width(b)= null_delimiter_space; +} +shift_amount(b)= half(height(b)-depth(b))-axis_height(s); +return b; +} + +/*:706*//*715:*/ +#line 14090 "tex.w" +pointer rebox(pointer b,scaled w) +{pointer p; +internal_font_number f; +scaled v; +if((width(b)!=w)&&(list_ptr(b)!=null)) +{if(type(b)==vlist_node)b= hpack(b,natural); +p= list_ptr(b); +if((is_char_node(p))&&(link(p)==null)) +{f= font(p);v= char_width(f)(char_info(f)(character(p))); +if(v!=width(b))link(p)= new_kern(width(b)-v); +} +free_node(b,box_node_size); +b= new_glue(ss_glue);link(b)= p; +while(link(p)!=null)p= link(p); +link(p)= new_glue(ss_glue); +return hpack(b,w,exactly); +} +else{width(b)= w;return b; +} +} + +/*:715*//*716:*/ +#line 14116 "tex.w" +pointer math_glue(pointer g,scaled m) +{pointer p; +int n; +scaled f; +n= x_over_n(m,0200000);f= rem; +if(f<0) +{decr(n);f= f+0200000; +} +p= get_node(glue_spec_size); +width(p)= mu_mult(width(g)); +stretch_order(p)= stretch_order(g); +if(stretch_order(p)==normal)stretch(p)= mu_mult(stretch(g)); +else stretch(p)= stretch(g); +shrink_order(p)= shrink_order(g); +if(shrink_order(p)==normal)shrink(p)= mu_mult(shrink(g)); +else shrink(p)= shrink(g); +return p; +} + +/*:716*//*717:*/ +#line 14138 "tex.w" +void math_kern(pointer p,scaled m) +{int n; +scaled f; +if(subtype(p)==mu_glue) +{n= x_over_n(m,0200000);f= rem; +if(f<0) +{decr(n);f= f+0200000; +} +width(p)= mu_mult(width(p));subtype(p)= explicit; +} +} + +/*:717*//*718:*/ +#line 14153 "tex.w" +void flush_math(void) +{flush_node_list(link(head));flush_node_list(incompleat_noad); +link(head)= null;tail= head;incompleat_noad= null; +} + +/*:718*//*720:*/ +#line 14190 "tex.w" +void mlist_to_hlist(void); +pointer clean_box(pointer p,small_number s) +{ +pointer q; +small_number save_style; +pointer x; +pointer r; +switch(math_type(p)){ +case math_char:{cur_mlist= new_noad();mem[nucleus(cur_mlist)]= mem[p]; +}break; +case sub_box:{q= info(p);goto found; +} +case sub_mlist:cur_mlist= info(p);break; +default:{q= new_null_box();goto found; +} +} +save_style= cur_style;cur_style= s;mlist_penalties= false; +mlist_to_hlist();q= link(temp_head); +cur_style= save_style; +/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 14209 "tex.w" +; +found:if(is_char_node(q)||(q==null))x= hpack(q,natural); +else if((link(q)==null)&&(type(q)<=vlist_node)&&(shift_amount(q)==0)) +x= q; +else x= hpack(q,natural); +/*721:*/ +#line 14220 "tex.w" + +q= list_ptr(x); +if(is_char_node(q)) +{r= link(q); +if(r!=null)if(link(r)==null)if(!is_char_node(r)) +if(type(r)==kern_node) +{free_node(r,small_node_size);link(q)= null; +} +} + +/*:721*/ +#line 14214 "tex.w" +; +return x; +} + +/*:720*//*722:*/ +#line 14237 "tex.w" +void fetch(pointer a) +{cur_c= character(a);cur_f= fam_fnt(fam(a)+cur_size); +if(cur_f==null_font) +/*723:*/ +#line 14251 "tex.w" + +{print_err("");print_size(cur_size);print_char(' '); +print_int(fam(a));print_str(" is undefined (character "); +print_ASCII(qo(cur_c));print_char(')'); +help4("Somewhere in the math formula just ended, you used the") +("stated character from an undefined font family. For example,") +("plain TeX doesn't allow \\it or \\sl in subscripts. Proceed,") +("and I'll try to forget that I needed that character."); +error();cur_i= null_character;math_type(a)= empty; +} + +/*:723*/ +#line 14240 "tex.w" + +else{if((qo(cur_c)>=font_bc[cur_f])&&(qo(cur_c)<=font_ec[cur_f])) +cur_i= char_info(cur_f)(cur_c); +else cur_i= null_character; +if(!(char_exists(cur_i))) +{char_warning(cur_f,qo(cur_c)); +math_type(a)= empty; +} +} +} + +/*:722*//*726:*/ +#line 14291 "tex.w" +/*734:*/ +#line 14443 "tex.w" + +void make_over(pointer q) +{info(nucleus(q))= +overbar(clean_box(nucleus(q),cramped_style(cur_style)), +3*default_rule_thickness,default_rule_thickness); +math_type(nucleus(q))= sub_box; +} + +/*:734*//*735:*/ +#line 14451 "tex.w" + +void make_under(pointer q) +{pointer p,x,y; +scaled delta; +x= clean_box(nucleus(q),cur_style); +p= new_kern(3*default_rule_thickness);link(x)= p; +link(p)= fraction_rule(default_rule_thickness); +y= vpack(x,natural); +delta= height(y)+depth(y)+default_rule_thickness; +height(y)= height(x);depth(y)= delta-height(y); +info(nucleus(q))= y;math_type(nucleus(q))= sub_box; +} + +/*:735*//*736:*/ +#line 14464 "tex.w" + +void make_vcenter(pointer q) +{pointer v; +scaled delta; +v= info(nucleus(q)); +if(type(v)!=vlist_node)confusion(/*1561:*/ +#line 25579 "tex.w" +436 +/*:1561*/ +#line 14469 "tex.w" +); + +delta= height(v)+depth(v); +height(v)= axis_height(cur_size)+half(delta); +depth(v)= delta-height(v); +} + +/*:736*//*737:*/ +#line 14485 "tex.w" + +void make_radical(pointer q) +{pointer x,y; +scaled delta,clr; +x= clean_box(nucleus(q),cramped_style(cur_style)); +if(cur_style<text_style) +clr= default_rule_thickness+(abs(math_x_height(cur_size))/4); +else{clr= default_rule_thickness;clr= clr+(abs(clr)/4); +} +y= var_delimiter(left_delimiter(q),cur_size,height(x)+depth(x)+clr+ +default_rule_thickness); +delta= depth(y)-(height(x)+depth(x)+clr); +if(delta> 0)clr= clr+half(delta); +shift_amount(y)= -(height(x)+clr); +link(y)= overbar(x,clr,height(y)); +info(nucleus(q))= hpack(y,natural);math_type(nucleus(q))= sub_box; +} + +/*:737*//*738:*/ +#line 14507 "tex.w" + +void make_math_accent(pointer q) +{ +pointer p,x,y; +int a; +quarterword c; +internal_font_number f; +four_quarters i; +scaled s; +scaled h; +scaled delta; +scaled w; +fetch(accent_chr(q)); +if(char_exists(cur_i)) +{i= cur_i;c= cur_c;f= cur_f; +/*741:*/ +#line 14554 "tex.w" + +s= 0; +if(math_type(nucleus(q))==math_char) +{fetch(nucleus(q)); +if(char_tag(cur_i)==lig_tag) +{a= lig_kern_start(cur_f)(cur_i); +cur_i= font_info[a].qqqq; +if(skip_byte(cur_i)> stop_flag) +{a= lig_kern_restart(cur_f)(cur_i); +cur_i= font_info[a].qqqq; +} +loop{if(qo(next_char(cur_i))==skew_char[cur_f]) +{if(op_byte(cur_i)>=kern_flag) +if(skip_byte(cur_i)<=stop_flag)s= char_kern(cur_f)(cur_i); +goto done1; +} +if(skip_byte(cur_i)>=stop_flag)goto done1; +a= a+qo(skip_byte(cur_i))+1; +cur_i= font_info[a].qqqq; +} +} +} +done1: + +/*:741*/ +#line 14522 "tex.w" +; +x= clean_box(nucleus(q),cramped_style(cur_style));w= width(x);h= height(x); +/*740:*/ +#line 14544 "tex.w" + +loop{if(char_tag(i)!=list_tag)goto done; +y= rem_byte(i); +i= char_info(f)(y); +if(!char_exists(i))goto done; +if(char_width(f)(i)> w)goto done; +c= y; +} +done: + +/*:740*/ +#line 14524 "tex.w" +; +if(h<x_height(f))delta= h;else delta= x_height(f); +if((math_type(supscr(q))!=empty)||(math_type(subscr(q))!=empty)) +if(math_type(nucleus(q))==math_char) +/*742:*/ +#line 14578 "tex.w" + +{flush_node_list(x);x= new_noad(); +mem[nucleus(x)]= mem[nucleus(q)]; +mem[supscr(x)]= mem[supscr(q)]; +mem[subscr(x)]= mem[subscr(q)]; +mem[supscr(q)].hh= empty_field; +mem[subscr(q)].hh= empty_field; +math_type(nucleus(q))= sub_mlist;info(nucleus(q))= x; +x= clean_box(nucleus(q),cur_style);delta= delta+height(x)-h;h= height(x); +} + +/*:742*/ +#line 14528 "tex.w" +; +y= char_box(f,c); +shift_amount(y)= s+half(w-width(y)); +width(y)= 0;p= new_kern(-delta);link(p)= x;link(y)= p; +y= vpack(y,natural);width(y)= width(x); +if(height(y)<h)/*739:*/ +#line 14539 "tex.w" + +{p= new_kern(h-height(y));link(p)= list_ptr(y);list_ptr(y)= p; +height(y)= h; +} + +/*:739*/ +#line 14533 "tex.w" +; +info(nucleus(q))= y; +math_type(nucleus(q))= sub_box; +} +} + +/*:738*//*743:*/ +#line 14592 "tex.w" + +void make_fraction(pointer q) +{pointer p,v,x,y,z; +scaled delta,delta1,delta2,shift_up,shift_down,clr; + +if(thickness(q)==default_code)thickness(q)= default_rule_thickness; +/*744:*/ +#line 14609 "tex.w" + +x= clean_box(numerator(q),num_style(cur_style)); +z= clean_box(denominator(q),denom_style(cur_style)); +if(width(x)<width(z))x= rebox(x,width(z)); +else z= rebox(z,width(x)); +if(cur_style<text_style) +{shift_up= num1(cur_size);shift_down= denom1(cur_size); +} +else{shift_down= denom2(cur_size); +if(thickness(q)!=0)shift_up= num2(cur_size); +else shift_up= num3(cur_size); +} + +/*:744*/ +#line 14600 "tex.w" +; +if(thickness(q)==0)/*745:*/ +#line 14626 "tex.w" + +{if(cur_style<text_style)clr= 7*default_rule_thickness; +else clr= 3*default_rule_thickness; +delta= half(clr-((shift_up-depth(x))-(height(z)-shift_down))); +if(delta> 0) +{shift_up= shift_up+delta; +shift_down= shift_down+delta; +} +} + +/*:745*/ +#line 14602 "tex.w" + +else/*746:*/ +#line 14639 "tex.w" + +{if(cur_style<text_style)clr= 3*thickness(q); +else clr= thickness(q); +delta= half(thickness(q)); +delta1= clr-((shift_up-depth(x))-(axis_height(cur_size)+delta)); +delta2= clr-((axis_height(cur_size)-delta)-(height(z)-shift_down)); +if(delta1> 0)shift_up= shift_up+delta1; +if(delta2> 0)shift_down= shift_down+delta2; +} + +/*:746*/ +#line 14603 "tex.w" +; +/*747:*/ +#line 14649 "tex.w" + +v= new_null_box();type(v)= vlist_node; +height(v)= shift_up+height(x);depth(v)= depth(z)+shift_down; +width(v)= width(x); +if(thickness(q)==0) +{p= new_kern((shift_up-depth(x))-(height(z)-shift_down)); +link(p)= z; +} +else{y= fraction_rule(thickness(q)); +p= new_kern((axis_height(cur_size)-delta)-(height(z)-shift_down)); +link(y)= p;link(p)= z; +p= new_kern((shift_up-depth(x))-(axis_height(cur_size)+delta)); +link(p)= y; +} +link(x)= p;list_ptr(v)= x + +/*:747*/ +#line 14604 "tex.w" +; +/*748:*/ +#line 14665 "tex.w" + +if(cur_style<text_style)delta= delim1(cur_size); +else delta= delim2(cur_size); +x= var_delimiter(left_delimiter(q),cur_size,delta);link(x)= v; +z= var_delimiter(right_delimiter(q),cur_size,delta);link(v)= z; +new_hlist(q)= hpack(x,natural) + +/*:748*/ +#line 14606 "tex.w" +; +} + +/*:743*//*749:*/ +#line 14687 "tex.w" + +scaled make_op(pointer q) +{scaled delta; +pointer p,v,x,y,z; +quarterword c;four_quarters i; +scaled shift_up,shift_down; +if((subtype(q)==normal)&&(cur_style<text_style)) +subtype(q)= limits; +if(math_type(nucleus(q))==math_char) +{fetch(nucleus(q)); +if((cur_style<text_style)&&(char_tag(cur_i)==list_tag)) +{c= rem_byte(cur_i);i= char_info(cur_f)(c); +if(char_exists(i)) +{cur_c= c;cur_i= i;character(nucleus(q))= c; +} +} +delta= char_italic(cur_f)(cur_i);x= clean_box(nucleus(q),cur_style); +if((math_type(subscr(q))!=empty)&&(subtype(q)!=limits)) +width(x)= width(x)-delta; +shift_amount(x)= half(height(x)-depth(x))-axis_height(cur_size); + +math_type(nucleus(q))= sub_box;info(nucleus(q))= x; +} +else delta= 0; +if(subtype(q)==limits) +/*750:*/ +#line 14719 "tex.w" + +{x= clean_box(supscr(q),sup_style(cur_style)); +y= clean_box(nucleus(q),cur_style); +z= clean_box(subscr(q),sub_style(cur_style)); +v= new_null_box();type(v)= vlist_node;width(v)= width(y); +if(width(x)> width(v))width(v)= width(x); +if(width(z)> width(v))width(v)= width(z); +x= rebox(x,width(v));y= rebox(y,width(v));z= rebox(z,width(v)); +shift_amount(x)= half(delta);shift_amount(z)= -shift_amount(x); +height(v)= height(y);depth(v)= depth(y); +/*751:*/ +#line 14739 "tex.w" + +if(math_type(supscr(q))==empty) +{free_node(x,box_node_size);list_ptr(v)= y; +} +else{shift_up= big_op_spacing3-depth(x); +if(shift_up<big_op_spacing1)shift_up= big_op_spacing1; +p= new_kern(shift_up);link(p)= y;link(x)= p; +p= new_kern(big_op_spacing5);link(p)= x;list_ptr(v)= p; +height(v)= height(v)+big_op_spacing5+height(x)+depth(x)+shift_up; +} +if(math_type(subscr(q))==empty)free_node(z,box_node_size); +else{shift_down= big_op_spacing4-height(z); +if(shift_down<big_op_spacing2)shift_down= big_op_spacing2; +p= new_kern(shift_down);link(y)= p;link(p)= z; +p= new_kern(big_op_spacing5);link(z)= p; +depth(v)= depth(v)+big_op_spacing5+height(z)+depth(z)+shift_down; +} + +/*:751*/ +#line 14730 "tex.w" +; +new_hlist(q)= v; +} + +/*:750*/ +#line 14712 "tex.w" +; +return delta; +} + +/*:749*//*752:*/ +#line 14767 "tex.w" + +void make_ord(pointer q) +{ +int a; +pointer p,r; +restart: +if(math_type(subscr(q))==empty)if(math_type(supscr(q))==empty) +if(math_type(nucleus(q))==math_char) +{p= link(q); +if(p!=null)if((type(p)>=ord_noad)&&(type(p)<=punct_noad)) +if(math_type(nucleus(p))==math_char) +if(fam(nucleus(p))==fam(nucleus(q))) +{math_type(nucleus(q))= math_text_char; +fetch(nucleus(q)); +if(char_tag(cur_i)==lig_tag) +{a= lig_kern_start(cur_f)(cur_i); +cur_c= character(nucleus(p)); +cur_i= font_info[a].qqqq; +if(skip_byte(cur_i)> stop_flag) +{a= lig_kern_restart(cur_f)(cur_i); +cur_i= font_info[a].qqqq; +} +loop{/*753:*/ +#line 14809 "tex.w" + +if(next_char(cur_i)==cur_c)if(skip_byte(cur_i)<=stop_flag) +if(op_byte(cur_i)>=kern_flag) +{p= new_kern(char_kern(cur_f)(cur_i)); +link(p)= link(q);link(q)= p;return; +} +else{check_interrupt; +switch(op_byte(cur_i)){ +qi(case 1):qi(case 5):character(nucleus(q))= rem_byte(cur_i);break; +qi(case 2):qi(case 6):character(nucleus(p))= rem_byte(cur_i);break; +qi(case 3):qi(case 7):qi(case 11):{r= new_noad(); +character(nucleus(r))= rem_byte(cur_i); +fam(nucleus(r))= fam(nucleus(q)); +link(q)= r;link(r)= p; +if(op_byte(cur_i)<qi(11))math_type(nucleus(r))= math_char; +else math_type(nucleus(r))= math_text_char; +}break; +default:{link(q)= link(p); +character(nucleus(q))= rem_byte(cur_i); +mem[subscr(q)]= mem[subscr(p)];mem[supscr(q)]= mem[supscr(p)]; +free_node(p,noad_size); +} +} +if(op_byte(cur_i)> qi(3))return; +math_type(nucleus(q))= math_char;goto restart; +} + +/*:753*/ +#line 14791 "tex.w" +; +if(skip_byte(cur_i)>=stop_flag)return; +a= a+qo(skip_byte(cur_i))+1; +cur_i= font_info[a].qqqq; +} +} +} +} +} + +/*:752*//*756:*/ +#line 14891 "tex.w" + +void make_scripts(pointer q,scaled delta) +{pointer p,x,y,z; +scaled shift_up,shift_down,clr; +small_number t; +p= new_hlist(q); +if(is_char_node(p)) +{shift_up= 0;shift_down= 0; +} +else{z= hpack(p,natural); +if(cur_style<script_style)t= script_size;else t= script_script_size; +shift_up= height(z)-sup_drop(t); +shift_down= depth(z)+sub_drop(t); +free_node(z,box_node_size); +} +if(math_type(supscr(q))==empty) +/*757:*/ +#line 14923 "tex.w" + +{x= clean_box(subscr(q),sub_style(cur_style)); +width(x)= width(x)+script_space; +if(shift_down<sub1(cur_size))shift_down= sub1(cur_size); +clr= height(x)-(abs(math_x_height(cur_size)*4)/5); +if(shift_down<clr)shift_down= clr; +shift_amount(x)= shift_down; +} + +/*:757*/ +#line 14907 "tex.w" + +else{/*758:*/ +#line 14935 "tex.w" + +{x= clean_box(supscr(q),sup_style(cur_style)); +width(x)= width(x)+script_space; +if(odd(cur_style))clr= sup3(cur_size); +else if(cur_style<text_style)clr= sup1(cur_size); +else clr= sup2(cur_size); +if(shift_up<clr)shift_up= clr; +clr= depth(x)+(abs(math_x_height(cur_size))/4); +if(shift_up<clr)shift_up= clr; +} + +/*:758*/ +#line 14908 "tex.w" +; +if(math_type(subscr(q))==empty)shift_amount(x)= -shift_up; +else/*759:*/ +#line 14952 "tex.w" + +{y= clean_box(subscr(q),sub_style(cur_style)); +width(y)= width(y)+script_space; +if(shift_down<sub2(cur_size))shift_down= sub2(cur_size); +clr= 4*default_rule_thickness- +((shift_up-depth(x))-(height(y)-shift_down)); +if(clr> 0) +{shift_down= shift_down+clr; +clr= (abs(math_x_height(cur_size)*4)/5)-(shift_up-depth(x)); +if(clr> 0) +{shift_up= shift_up+clr; +shift_down= shift_down-clr; +} +} +shift_amount(x)= delta; +p= new_kern((shift_up-depth(x))-(height(y)-shift_down));link(x)= p;link(p)= y; +x= vpack(x,natural);shift_amount(x)= shift_down; +} + +/*:759*/ +#line 14911 "tex.w" +; +} +if(new_hlist(q)==null)new_hlist(q)= x; +else{p= new_hlist(q); +while(link(p)!=null)p= link(p); +link(p)= x; +} +} + +/*:756*//*762:*/ +#line 15024 "tex.w" + +small_number make_left_right(pointer q,small_number style, +scaled max_d,scaled max_h) +{scaled delta,delta1,delta2; +if(style<script_style)cur_size= text_size; +else cur_size= 16*((style-text_style)/2); +delta2= max_d+axis_height(cur_size); +delta1= max_h+max_d-delta2; +if(delta2> delta1)delta1= delta2; +delta= (delta1/500)*delimiter_factor; +delta2= delta1+delta1-delimiter_shortfall; +if(delta<delta2)delta= delta2; +new_hlist(q)= var_delimiter(delimiter(q),cur_size,delta); +return type(q)-(left_noad-open_noad); +} + +/*:762*/ +#line 14291 "tex.w" + +void mlist_to_hlist(void) +{ + +pointer mlist; +bool penalties; +small_number style; +small_number save_style; +pointer q; +pointer r; +small_number r_type; +small_number t; +pointer p,x,y,z; +int pen; +small_number s; +scaled max_h,max_d; +scaled delta; +mlist= cur_mlist;penalties= mlist_penalties; +style= cur_style; +q= mlist;r= null;r_type= op_noad;max_h= 0;max_d= 0; +/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 14311 "tex.w" +; +while(q!=null)/*727:*/ +#line 14322 "tex.w" + +{/*728:*/ +#line 14338 "tex.w" + +reswitch:delta= 0; +switch(type(q)){ +case bin_noad:switch(r_type){ +case bin_noad:case op_noad:case rel_noad:case open_noad:case punct_noad:case left_noad: +{type(q)= ord_noad;goto reswitch; +} +default:do_nothing; +}break; +case rel_noad:case close_noad:case punct_noad:case right_noad:{ +/*729:*/ +#line 14358 "tex.w" + +if(r_type==bin_noad)type(r)= ord_noad + +/*:729*/ +#line 14348 "tex.w" +; +if(type(q)==right_noad)goto done_with_noad; +}break; +/*733:*/ +#line 14422 "tex.w" + +case left_noad:goto done_with_noad; +case fraction_noad:{make_fraction(q);goto check_dimensions; +} +case op_noad:{delta= make_op(q); +if(subtype(q)==limits)goto check_dimensions; +}break; +case ord_noad:make_ord(q);break; +case open_noad:case inner_noad:do_nothing;break; +case radical_noad:make_radical(q);break; +case over_noad:make_over(q);break; +case under_noad:make_under(q);break; +case accent_noad:make_math_accent(q);break; +case vcenter_noad:make_vcenter(q);break; + +/*:733*/ +#line 14351 "tex.w" + +/*730:*/ +#line 14361 "tex.w" + +case style_node:{cur_style= subtype(q); +/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 14363 "tex.w" +; +goto done_with_node; +} +case choice_node:/*731:*/ +#line 14381 "tex.w" + +{switch(cur_style/2){ +case 0:choose_mlist(display_mlist)break; +case 1:choose_mlist(text_mlist)break; +case 2:choose_mlist(script_mlist)break; +case 3:choose_mlist(script_script_mlist); +} +flush_node_list(display_mlist(q)); +flush_node_list(text_mlist(q)); +flush_node_list(script_mlist(q)); +flush_node_list(script_script_mlist(q)); +type(q)= style_node;subtype(q)= cur_style;width(q)= 0;depth(q)= 0; +if(p!=null) +{z= link(q);link(q)= p; +while(link(p)!=null)p= link(p); +link(p)= z; +} +goto done_with_node; +} + +/*:731*/ +#line 14367 "tex.w" + +case ins_node:case mark_node:case adjust_node: +case whatsit_node:case penalty_node:case disc_node:goto done_with_node; +case rule_node:{if(height(q)> max_h)max_h= height(q); +if(depth(q)> max_d)max_d= depth(q);goto done_with_node; +} +case glue_node:{/*732:*/ +#line 14409 "tex.w" + +if(subtype(q)==mu_glue) +{x= glue_ptr(q); +y= math_glue(x,cur_mu);delete_glue_ref(x);glue_ptr(q)= y; +subtype(q)= normal; +} +else if((cur_size!=text_size)&&(subtype(q)==cond_math_glue)) +{p= link(q); +if(p!=null)if((type(p)==glue_node)||(type(p)==kern_node)) +{link(q)= link(p);link(p)= null;flush_node_list(p); +} +} + +/*:732*/ +#line 14373 "tex.w" +; +goto done_with_node; +} +case kern_node:{math_kern(q,cur_mu);goto done_with_node; +} + +/*:730*/ +#line 14352 "tex.w" + +default:confusion(/*1664:*/ +#line 25888 "tex.w" +539 +/*:1664*/ +#line 14353 "tex.w" +); + +} +/*754:*/ +#line 14848 "tex.w" + +switch(math_type(nucleus(q))){ +case math_char:case math_text_char: +/*755:*/ +#line 14870 "tex.w" + +{fetch(nucleus(q)); +if(char_exists(cur_i)) +{delta= char_italic(cur_f)(cur_i);p= new_character(cur_f,qo(cur_c)); +if((math_type(nucleus(q))==math_text_char)&&(space(cur_f)!=0)) +delta= 0; +if((math_type(subscr(q))==empty)&&(delta!=0)) +{link(p)= new_kern(delta);delta= 0; +} +} +else p= null; +} + +/*:755*/ +#line 14853 "tex.w" +break; +case empty:p= null;break; +case sub_box:p= info(nucleus(q));break; +case sub_mlist:{cur_mlist= info(nucleus(q));save_style= cur_style; +mlist_penalties= false;mlist_to_hlist(); + +cur_style= save_style;/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 14859 "tex.w" +; +p= hpack(link(temp_head),natural); +}break; +default:confusion(/*1665:*/ +#line 25891 "tex.w" +540 +/*:1665*/ +#line 14862 "tex.w" +); + +} +new_hlist(q)= p; +if((math_type(subscr(q))==empty)&&(math_type(supscr(q))==empty)) +goto check_dimensions; +make_scripts(q,delta) + +/*:754*/ +#line 14356 "tex.w" + + +/*:728*/ +#line 14325 "tex.w" +; +check_dimensions:z= hpack(new_hlist(q),natural); +if(height(z)> max_h)max_h= height(z); +if(depth(z)> max_d)max_d= depth(z); +free_node(z,box_node_size); +done_with_noad:r= q;r_type= type(r); +done_with_node:q= link(q); +} + +/*:727*/ +#line 14313 "tex.w" +; +/*729:*/ +#line 14358 "tex.w" + +if(r_type==bin_noad)type(r)= ord_noad + +/*:729*/ +#line 14314 "tex.w" +; +/*760:*/ +#line 14977 "tex.w" + +p= temp_head;link(p)= null;q= mlist;r_type= 0;cur_style= style; +/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 14979 "tex.w" +; +while(q!=null) +{/*761:*/ +#line 14994 "tex.w" + +t= ord_noad;s= noad_size;pen= inf_penalty; +switch(type(q)){ +case op_noad:case open_noad:case close_noad:case punct_noad:case inner_noad:t= type(q);break; +case bin_noad:{t= bin_noad;pen= bin_op_penalty; +}break; +case rel_noad:{t= rel_noad;pen= rel_penalty; +}break; +case ord_noad:case vcenter_noad:case over_noad:case under_noad:do_nothing;break; +case radical_noad:s= radical_noad_size;break; +case accent_noad:s= accent_noad_size;break; +case fraction_noad:{t= inner_noad;s= fraction_noad_size; +}break; +case left_noad:case right_noad:t= make_left_right(q,style,max_d,max_h);break; +case style_node:/*763:*/ +#line 15040 "tex.w" + +{cur_style= subtype(q);s= style_node_size; +/*703:*/ +#line 13884 "tex.w" + +{if(cur_style<script_style)cur_size= text_size; +else cur_size= 16*((cur_style-text_style)/2); +cur_mu= x_over_n(math_quad(cur_size),18); +} + +/*:703*/ +#line 15042 "tex.w" +; +goto delete_q; +} + +/*:763*/ +#line 15008 "tex.w" + +case whatsit_node:case penalty_node:case rule_node:case disc_node:case adjust_node:case ins_node:case mark_node: +case glue_node:case kern_node: +{link(p)= q;p= q;q= link(q);link(p)= null;goto done; +} +default:confusion(/*1666:*/ +#line 25894 "tex.w" +541 +/*:1666*/ +#line 15013 "tex.w" +); + +} + +/*:761*/ +#line 14984 "tex.w" +; +/*766:*/ +#line 15081 "tex.w" + +if(r_type> 0) +{switch(so(str_pool[r_type*8+t+magic_offset])){ +case'0':x= 0;break; +case'1':if(cur_style<script_style)x= thin_mu_skip_code;else x= 0;break; +case'2':x= thin_mu_skip_code;break; +case'3':if(cur_style<script_style)x= med_mu_skip_code;else x= 0;break; +case'4':if(cur_style<script_style)x= thick_mu_skip_code;else x= 0;break; +default:confusion(/*1668:*/ +#line 25900 "tex.w" +543 +/*:1668*/ +#line 15089 "tex.w" +); + +} +if(x!=0) +{y= math_glue(glue_par(x),cur_mu); +z= new_glue(y);glue_ref_count(y)= null;link(p)= z;p= z; +subtype(z)= x+1; +} +} + +/*:766*/ +#line 14985 "tex.w" +; +/*767:*/ +#line 15103 "tex.w" + +if(new_hlist(q)!=null) +{link(p)= new_hlist(q); +do{p= link(p); +}while(!(link(p)==null)); +} +if(penalties)if(link(q)!=null)if(pen<inf_penalty) +{r_type= type(link(q)); +if(r_type!=penalty_node)if(r_type!=rel_noad) +{z= new_penalty(pen);link(p)= z;p= z; +} +} + +/*:767*/ +#line 14986 "tex.w" +; +r_type= t; +delete_q:r= q;q= link(q);free_node(r,s); +done:;} + +/*:760*/ +#line 14316 "tex.w" +; +} + +/*:726*//*772:*/ +#line 15292 "tex.w" +void push_alignment(void) +{pointer p; +p= get_node(align_stack_node_size); +link(p)= align_ptr;info(p)= cur_align; +llink(p)= preamble;rlink(p)= cur_span; +mem[p+2].i= cur_loop;mem[p+3].i= align_state; +info(p+4)= cur_head;link(p+4)= cur_tail; +align_ptr= p; +cur_head= get_avail(); +} + +void pop_alignment(void) +{pointer p; +free_avail(cur_head); +p= align_ptr; +cur_tail= link(p+4);cur_head= info(p+4); +align_state= mem[p+3].i;cur_loop= mem[p+2].i; +cur_span= rlink(p);preamble= llink(p); +cur_align= info(p);align_ptr= link(p); +free_node(p,align_stack_node_size); +} + +/*:772*//*774:*/ +#line 15332 "tex.w" +/*782:*/ +#line 15444 "tex.w" + +void get_preamble_token(void) +{ +restart:get_token(); +while((cur_chr==span_code)&&(cur_cmd==tab_mark)) +{get_token(); +if(cur_cmd> max_command) +{expand();get_token(); +} +} +if(cur_cmd==endv) +fatal_error("(interwoven alignment preambles are not allowed)"); + +if((cur_cmd==assign_glue)&&(cur_chr==glue_base+tab_skip_code)) +{scan_optional_equals();scan_glue(glue_val); +if(global_defs> 0)geq_define(glue_base+tab_skip_code,glue_ref,cur_val); +else eq_define(glue_base+tab_skip_code,glue_ref,cur_val); +goto restart; +} +} + +/*:782*/ +#line 15332 "tex.w" + +void align_peek(void); +void normal_paragraph(void); +void init_align(void) +{ +pointer save_cs_ptr; +pointer p; +save_cs_ptr= cur_cs; +push_alignment();align_state= -1000000; +/*776:*/ +#line 15365 "tex.w" + +if((mode==mmode)&&((tail!=head)||(incompleat_noad!=null))) +{print_err("Improper ");print_esc(/*1542:*/ +#line 25522 "tex.w" +417 +/*:1542*/ +#line 15367 "tex.w" +);print_str(" inside $$'s"); + +help3("Displays can use special alignments (like \\eqalignno)") +("only if nothing but the alignment itself is between $$'s.") +("So I've deleted the formulas that preceded this alignment."); +error();flush_math(); +} + +/*:776*/ +#line 15341 "tex.w" +; +push_nest(); +/*775:*/ +#line 15356 "tex.w" + +if(mode==mmode) +{mode= -vmode;prev_depth= nest[nest_ptr-2].aux_field.sc; +} +else if(mode> 0)negate(mode) + +/*:775*/ +#line 15343 "tex.w" +; +scan_spec(align_group,false); +/*777:*/ +#line 15375 "tex.w" + +preamble= null;cur_align= align_head;cur_loop= null;scanner_status= aligning; +warning_index= save_cs_ptr;align_state= -1000000; + +loop{/*778:*/ +#line 15386 "tex.w" + +link(cur_align)= new_param_glue(tab_skip_code); +cur_align= link(cur_align) + +/*:778*/ +#line 15379 "tex.w" +; +if(cur_cmd==car_ret)goto done; +/*779:*/ +#line 15390 "tex.w" + +/*783:*/ +#line 15467 "tex.w" + +p= hold_head;link(p)= null; +loop{get_preamble_token(); +if(cur_cmd==mac_param)goto done1; +if((cur_cmd<=car_ret)&&(cur_cmd>=tab_mark)&&(align_state==-1000000)) +if((p==hold_head)&&(cur_loop==null)&&(cur_cmd==tab_mark) +)cur_loop= cur_align; +else{print_err("Missing # inserted in alignment preamble"); + +help3("There should be exactly one # between &'s, when an") +("\\halign or \\valign is being set up. In this case you had") +("none, so I've put one in; maybe that will work."); +back_error();goto done1; +} +else if((cur_cmd!=spacer)||(p!=hold_head)) +{link(p)= get_avail();p= link(p);info(p)= cur_tok; +} +} +done1: + +/*:783*/ +#line 15391 "tex.w" +; +link(cur_align)= new_null_box();cur_align= link(cur_align); +info(cur_align)= end_span;width(cur_align)= null_flag; +u_part(cur_align)= link(hold_head); +/*784:*/ +#line 15487 "tex.w" + +p= hold_head;link(p)= null; +loop{resume:get_preamble_token(); +if((cur_cmd<=car_ret)&&(cur_cmd>=tab_mark)&&(align_state==-1000000)) +goto done2; +if(cur_cmd==mac_param) +{print_err("Only one # is allowed per tab"); + +help3("There should be exactly one # between &'s, when an") +("\\halign or \\valign is being set up. In this case you had") +("more than one, so I'm ignoring all but the first."); +error();goto resume; +} +link(p)= get_avail();p= link(p);info(p)= cur_tok; +} +done2:link(p)= get_avail();p= link(p); +info(p)= end_template_token + +/*:784*/ +#line 15395 "tex.w" +; +v_part(cur_align)= link(hold_head) + +/*:779*/ +#line 15382 "tex.w" +; +} +done:scanner_status= normal + +/*:777*/ +#line 15345 "tex.w" +; +new_save_level(align_group); +if(every_cr!=null)begin_token_list(every_cr,every_cr_text); +align_peek(); +} + +/*:774*//*786:*/ +#line 15537 "tex.w" +/*787:*/ +#line 15550 "tex.w" + +void init_span(pointer p) +{push_nest(); +if(mode==-hmode)space_factor= 1000; +else{prev_depth= ignore_depth;normal_paragraph(); +} +cur_span= p; +} + +/*:787*/ +#line 15537 "tex.w" + +void init_row(void) +{push_nest();mode= (-hmode-vmode)-mode; +if(mode==-hmode)space_factor= 0;else prev_depth= 0; +tail_append(new_glue(glue_ptr(preamble))); +subtype(tail)= tab_skip_code+1; +cur_align= link(preamble);cur_tail= cur_head;init_span(cur_align); +} + +/*:786*//*788:*/ +#line 15566 "tex.w" +void init_col(void) +{extra_info(cur_align)= cur_cmd; +if(cur_cmd==omit)align_state= 0; +else{back_input();begin_token_list(u_part(cur_align),u_template); +} +} + +/*:788*//*791:*/ +#line 15603 "tex.w" +bool fin_col(void) +{ +pointer p; +pointer q,r; +pointer s; +pointer u; +scaled w; +glue_ord o; +halfword n; +if(cur_align==null)confusion(/*1673:*/ +#line 25915 "tex.w" +548 +/*:1673*/ +#line 15612 "tex.w" +); +q= link(cur_align);if(q==null)confusion(/*1673:*/ +#line 25915 "tex.w" +548 +/*:1673*/ +#line 15613 "tex.w" +); + +if(align_state<500000) +fatal_error("(interwoven alignment preambles are not allowed)"); + +p= link(q); +/*792:*/ +#line 15634 "tex.w" + +if((p==null)&&(extra_info(cur_align)<cr_code)) +if(cur_loop!=null)/*793:*/ +#line 15646 "tex.w" + +{link(q)= new_null_box();p= link(q); +info(p)= end_span;width(p)= null_flag;cur_loop= link(cur_loop); +/*794:*/ +#line 15654 "tex.w" + +q= hold_head;r= u_part(cur_loop); +while(r!=null) +{link(q)= get_avail();q= link(q);info(q)= info(r);r= link(r); +} +link(q)= null;u_part(p)= link(hold_head); +q= hold_head;r= v_part(cur_loop); +while(r!=null) +{link(q)= get_avail();q= link(q);info(q)= info(r);r= link(r); +} +link(q)= null;v_part(p)= link(hold_head) + +/*:794*/ +#line 15649 "tex.w" +; +cur_loop= link(cur_loop); +link(p)= new_glue(glue_ptr(cur_loop)); +} + +/*:793*/ +#line 15636 "tex.w" + +else{print_err("Extra alignment tab has been changed to "); + +print_esc(/*1670:*/ +#line 25906 "tex.w" +545 +/*:1670*/ +#line 15639 "tex.w" +); +help3("You have given more \\span or & marks than there were") +("in the preamble to the \\halign or \\valign now in progress.") +("So I'll assume that you meant to type \\cr instead."); +extra_info(cur_align)= cr_code;error(); +} + +/*:792*/ +#line 15619 "tex.w" +; +if(extra_info(cur_align)!=span_code) +{unsave();new_save_level(align_group); +/*796:*/ +#line 15670 "tex.w" + +{if(mode==-hmode) +{adjust_tail= cur_tail;u= hpack(link(head),natural);w= width(u); +cur_tail= adjust_tail;adjust_tail= null; +} +else{u= vpackage(link(head),natural,0);w= height(u); +} +n= min_quarterword; +if(cur_span!=cur_align)/*798:*/ +#line 15704 "tex.w" + +{q= cur_span; +do{incr(n);q= link(link(q)); +}while(!(q==cur_align)); +if(n> max_quarterword)confusion(/*1674:*/ +#line 25918 "tex.w" +549 +/*:1674*/ +#line 15708 "tex.w" +); + + +q= cur_span;while(link(info(q))<n)q= info(q); +if(link(info(q))> n) +{s= get_node(span_node_size);info(s)= info(q);link(s)= n; +info(q)= s;width(s)= w; +} +else if(width(info(q))<w)width(info(q))= w; +} + +/*:798*/ +#line 15678 "tex.w" + +else if(w> width(cur_align))width(cur_align)= w; +type(u)= unset_node;span_count(u)= n; +/*659:*/ +#line 13082 "tex.w" + +if(total_stretch[filll]!=0)o= filll; +else if(total_stretch[fill]!=0)o= fill; +else if(total_stretch[fil]!=0)o= fil; +else o= normal + +/*:659*/ +#line 15681 "tex.w" +; +glue_order(u)= o;glue_stretch(u)= total_stretch[o]; +/*665:*/ +#line 13146 "tex.w" + +if(total_shrink[filll]!=0)o= filll; +else if(total_shrink[fill]!=0)o= fill; +else if(total_shrink[fil]!=0)o= fil; +else o= normal + +/*:665*/ +#line 15683 "tex.w" +; +glue_sign(u)= o;glue_shrink(u)= total_shrink[o]; +pop_nest();link(tail)= u;tail= u; +} + +/*:796*/ +#line 15622 "tex.w" +; +/*795:*/ +#line 15666 "tex.w" + +tail_append(new_glue(glue_ptr(link(cur_align)))); +subtype(tail)= tab_skip_code+1 + +/*:795*/ +#line 15623 "tex.w" +; +if(extra_info(cur_align)>=cr_code) +{return true; +} +init_span(p); +} +align_state= 1000000;/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 15629 "tex.w" +; +cur_align= p; +init_col();return false; +} + +/*:791*//*799:*/ +#line 15724 "tex.w" +void fin_row(void) +{pointer p; +if(mode==-hmode) +{p= hpack(link(head),natural); +pop_nest();append_to_vlist(p); +if(cur_head!=cur_tail) +{link(tail)= link(cur_head);tail= cur_tail; +} +} +else{p= vpack(link(head),natural);pop_nest(); +link(tail)= p;tail= p;space_factor= 1000; +} +type(p)= unset_node;glue_stretch(p)= 0; +if(every_cr!=null)begin_token_list(every_cr,every_cr_text); +align_peek(); +} + +/*:799*//*800:*/ +#line 15745 "tex.w" +void do_assignments(void); +void resume_after_display(void); +void build_page(void); +void fin_align(void) +{pointer p,q,r,s,u,v; +scaled t,w; +scaled o; +halfword n; +scaled rule_save; +memory_word aux_save; +if(cur_group!=align_group)confusion(/*1675:*/ +#line 25921 "tex.w" +550 +/*:1675*/ +#line 15755 "tex.w" +); + +unsave(); +if(cur_group!=align_group)confusion(/*1676:*/ +#line 25924 "tex.w" +551 +/*:1676*/ +#line 15758 "tex.w" +); +unsave(); +if(nest[nest_ptr-1].mode_field==mmode)o= display_indent; +else o= 0; +/*801:*/ +#line 15795 "tex.w" + +q= link(preamble); +do{flush_list(u_part(q));flush_list(v_part(q)); +p= link(link(q)); +if(width(q)==null_flag) +/*802:*/ +#line 15809 "tex.w" + +{width(q)= 0;r= link(q);s= glue_ptr(r); +if(s!=zero_glue) +{add_glue_ref(zero_glue);delete_glue_ref(s); +glue_ptr(r)= zero_glue; +} +} + +/*:802*/ +#line 15800 "tex.w" +; +if(info(q)!=end_span) +/*803:*/ +#line 15824 "tex.w" + +{t= width(q)+width(glue_ptr(link(q))); +r= info(q);s= end_span;info(s)= p;n= min_quarterword+1; +do{width(r)= width(r)-t;u= info(r); +while(link(r)> n) +{s= info(s);n= link(info(s))+1; +} +if(link(r)<n) +{info(r)= info(s);info(s)= r;decr(link(r));s= r; +} +else{if(width(r)> width(info(s)))width(info(s))= width(r); +free_node(r,span_node_size); +} +r= u; +}while(!(r==end_span)); +} + +/*:803*/ +#line 15803 "tex.w" +; +type(q)= unset_node;span_count(q)= min_quarterword;height(q)= 0; +depth(q)= 0;glue_order(q)= normal;glue_sign(q)= normal; +glue_stretch(q)= 0;glue_shrink(q)= 0;q= p; +}while(!(q==null)) + +/*:801*/ +#line 15763 "tex.w" +; +/*804:*/ +#line 15847 "tex.w" + +save_ptr= save_ptr-2;pack_begin_line= -mode_line; +if(mode==-vmode) +{rule_save= overfull_rule; +overfull_rule= 0; +p= hpack(preamble,saved(1),saved(0));overfull_rule= rule_save; +} +else{q= link(preamble); +do{height(q)= width(q);width(q)= 0;q= link(link(q)); +}while(!(q==null)); +p= vpack(preamble,saved(1),saved(0)); +q= link(preamble); +do{width(q)= height(q);height(q)= 0;q= link(link(q)); +}while(!(q==null)); +} +pack_begin_line= 0 + +/*:804*/ +#line 15765 "tex.w" +; +/*805:*/ +#line 15864 "tex.w" + +q= link(head);s= head; +while(q!=null) +{if(!is_char_node(q)) +if(type(q)==unset_node) +/*807:*/ +#line 15888 "tex.w" + +{if(mode==-vmode) +{type(q)= hlist_node;width(q)= width(p); +} +else{type(q)= vlist_node;height(q)= height(p); +} +glue_order(q)= glue_order(p);glue_sign(q)= glue_sign(p); +glue_set(q)= glue_set(p);shift_amount(q)= o; +r= link(list_ptr(q));s= link(list_ptr(p)); +do{/*808:*/ +#line 15907 "tex.w" + +n= span_count(r);t= width(s);w= t;u= hold_head; +while(n> min_quarterword) +{decr(n); +/*809:*/ +#line 15924 "tex.w" + +s= link(s);v= glue_ptr(s);link(u)= new_glue(v);u= link(u); +subtype(u)= tab_skip_code+1;t= t+width(v); +if(glue_sign(p)==stretching) +{if(stretch_order(v)==glue_order(p)) +t= t+round(float(glue_set(p))*stretch(v)); + +} +else if(glue_sign(p)==shrinking) +{if(shrink_order(v)==glue_order(p)) +t= t-round(float(glue_set(p))*shrink(v)); +} +s= link(s);link(u)= new_null_box();u= link(u);t= t+width(s); +if(mode==-vmode)width(u)= width(s);else +{type(u)= vlist_node;height(u)= width(s); +} + +/*:809*/ +#line 15912 "tex.w" +; +} +if(mode==-vmode) +/*810:*/ +#line 15941 "tex.w" + +{height(r)= height(q);depth(r)= depth(q); +if(t==width(r)) +{glue_sign(r)= normal;glue_order(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +else if(t> width(r)) +{glue_sign(r)= stretching; +if(glue_stretch(r)==0)set_glue_ratio_zero(glue_set(r)); +else glue_set(r)= unfloat((t-width(r))/(double)glue_stretch(r)); + +} +else{glue_order(r)= glue_sign(r);glue_sign(r)= shrinking; +if(glue_shrink(r)==0)set_glue_ratio_zero(glue_set(r)); +else if((glue_order(r)==normal)&&(width(r)-t> glue_shrink(r))) +set_glue_ratio_one(glue_set(r)); +else glue_set(r)= unfloat((width(r)-t)/(double)glue_shrink(r)); +} +width(r)= w;type(r)= hlist_node; +} + +/*:810*/ +#line 15916 "tex.w" + +else/*811:*/ +#line 15962 "tex.w" + +{width(r)= width(q); +if(t==height(r)) +{glue_sign(r)= normal;glue_order(r)= normal; +set_glue_ratio_zero(glue_set(r)); +} +else if(t> height(r)) +{glue_sign(r)= stretching; +if(glue_stretch(r)==0)set_glue_ratio_zero(glue_set(r)); +else glue_set(r)= unfloat((t-height(r))/(double)glue_stretch(r)); + +} +else{glue_order(r)= glue_sign(r);glue_sign(r)= shrinking; +if(glue_shrink(r)==0)set_glue_ratio_zero(glue_set(r)); +else if((glue_order(r)==normal)&&(height(r)-t> glue_shrink(r))) +set_glue_ratio_one(glue_set(r)); +else glue_set(r)= unfloat((height(r)-t)/(double)glue_shrink(r)); +} +height(r)= w;type(r)= vlist_node; +} + +/*:811*/ +#line 15918 "tex.w" +; +shift_amount(r)= 0; +if(u!=hold_head) +{link(u)= link(r);link(r)= link(hold_head);r= u; +} + +/*:808*/ +#line 15897 "tex.w" +; +r= link(link(r));s= link(link(s)); +}while(!(r==null)); +} + +/*:807*/ +#line 15869 "tex.w" + +else if(type(q)==rule_node) +/*806:*/ +#line 15875 "tex.w" + +{if(is_running(width(q)))width(q)= width(p); +if(is_running(height(q)))height(q)= height(p); +if(is_running(depth(q)))depth(q)= depth(p); +if(o!=0) +{r= link(q);link(q)= null;q= hpack(q,natural); +shift_amount(q)= o;link(q)= r;link(s)= q; +} +} + +/*:806*/ +#line 15871 "tex.w" +; +s= q;q= link(q); +} + +/*:805*/ +#line 15766 "tex.w" +; +flush_node_list(p);pop_alignment(); +/*812:*/ +#line 15993 "tex.w" + +aux_save= aux;p= link(head);q= tail;pop_nest(); +if(mode==mmode)/*1206:*/ +#line 22615 "tex.w" + +{do_assignments(); +if(cur_cmd!=math_shift)/*1207:*/ +#line 22629 "tex.w" + +{print_err("Missing $$ inserted"); + +help2("Displays can use special alignments (like \\eqalignno)") +("only if nothing but the alignment itself is between $$'s."); +back_error(); +} + +/*:1207*/ +#line 22617 "tex.w" + +else/*1197:*/ +#line 22467 "tex.w" + +{get_x_token(); +if(cur_cmd!=math_shift) +{print_err("Display math should end with $$"); + +help2("The `$' that I just saw supposedly matches a previous `$$'.") +("So I shall assume that you typed `$$' both times."); +back_error(); +} +} + +/*:1197*/ +#line 22618 "tex.w" +; +pop_nest(); +tail_append(new_penalty(pre_display_penalty)); +tail_append(new_param_glue(above_display_skip_code)); +link(tail)= p; +if(p!=null)tail= q; +tail_append(new_penalty(post_display_penalty)); +tail_append(new_param_glue(below_display_skip_code)); +prev_depth= aux_save.sc;resume_after_display(); +} + +/*:1206*/ +#line 15995 "tex.w" + +else{aux= aux_save;link(tail)= p; +if(p!=null)tail= q; +if(mode==vmode)build_page(); +} + +/*:812*/ +#line 15768 "tex.w" +; +} +/*785:*/ +#line 15515 "tex.w" + +void align_peek(void) +{ +restart:align_state= 1000000;/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 15518 "tex.w" +; +if(cur_cmd==no_align) +{scan_left_brace();new_save_level(no_align_group); +if(mode==-vmode)normal_paragraph(); +} +else if(cur_cmd==right_brace)fin_align(); +else if((cur_cmd==car_ret)&&(cur_chr==cr_cr_code)) +goto restart; +else{init_row(); +init_col(); +} +} + +/*:785*/ +#line 15770 "tex.w" + + +/*:800*//*815:*/ +#line 16057 "tex.w" +/*826:*/ +#line 16291 "tex.w" + +pointer finite_shrink(pointer p) +{pointer q; +if(no_shrink_error_yet) +{no_shrink_error_yet= false; +print_err("Infinite glue shrinkage found in a paragraph"); + +help5("The paragraph just ended includes some glue that has") +("infinite shrinkability, e.g., `\\hskip 0pt minus 1fil'.") +("Such glue doesn't belong there---it allows a paragraph") +("of any length to fit on one line. But it's safe to proceed,") +("since the offensive shrinkability has been made finite."); +error(); +} +q= new_spec(p);shrink_order(q)= normal; +delete_glue_ref(p);return q; +} + +/*:826*//*829:*/ +#line 16363 "tex.w" + +void try_break(int pi,small_number break_type) +{ +pointer r; +pointer prev_r; +halfword old_l; +bool no_break_yet; +/*830:*/ +#line 16391 "tex.w" + +pointer prev_prev_r; +pointer s; +pointer q; +pointer v; +int t; +internal_font_number f; +halfword l; +bool node_r_stays_active; +scaled line_width; +uint8_t fit_class; +halfword b; +int d; +bool artificial_demerits; +#ifdef STAT +pointer save_link; +#endif +scaled shortfall; + +/*:830*/ +#line 16370 "tex.w" + +/*831:*/ +#line 16410 "tex.w" + +if(abs(pi)>=inf_penalty) +if(pi> 0)goto end; +else pi= eject_penalty + +/*:831*/ +#line 16371 "tex.w" +; +no_break_yet= true;prev_r= active;old_l= 0; +do_all_six(copy_to_cur_active); +loop{resume:r= link(prev_r); +/*832:*/ +#line 16420 "tex.w" + + +if(type(r)==delta_node) +{do_all_six(update_width); +prev_prev_r= prev_r;prev_r= r;goto resume; +} + +/*:832*/ +#line 16376 "tex.w" +; +/*835:*/ +#line 16465 "tex.w" + +{l= line_number(r); +if(l> old_l) +{ +if((minimum_demerits<awful_bad)&& +((old_l!=easy_line)||(r==last_active))) +/*836:*/ +#line 16483 "tex.w" + +{if(no_break_yet)/*837:*/ +#line 16519 "tex.w" + +{no_break_yet= false;do_all_six(set_break_width_to_background); +s= cur_p; +if(break_type> unhyphenated)if(cur_p!=null) +/*840:*/ +#line 16562 "tex.w" + +{t= replace_count(cur_p);v= cur_p;s= post_break(cur_p); +while(t> 0) +{decr(t);v= link(v); +/*841:*/ +#line 16580 "tex.w" + +if(is_char_node(v)) +{f= font(v); +break_width[1]= break_width[1]-char_width(f)(char_info(f)(character(v))); +} +else switch(type(v)){ +case ligature_node:{f= font(lig_char(v)); +break_width[1]= break_width[1]- +char_width(f)(char_info(f)(character(lig_char(v)))); +}break; +case hlist_node:case vlist_node:case rule_node:case kern_node: +break_width[1]= break_width[1]-width(v);break; +default:confusion(/*1677:*/ +#line 25927 "tex.w" +552 +/*:1677*/ +#line 16592 "tex.w" +); + +} + +/*:841*/ +#line 16566 "tex.w" +; +} +while(s!=null) +{/*842:*/ +#line 16596 "tex.w" + +if(is_char_node(s)) +{f= font(s); +break_width[1]= break_width[1]+char_width(f)(char_info(f)(character(s))); +} +else switch(type(s)){ +case ligature_node:{f= font(lig_char(s)); +break_width[1]= break_width[1]+ +char_width(f)(char_info(f)(character(lig_char(s)))); +}break; +case hlist_node:case vlist_node:case rule_node:case kern_node: +break_width[1]= break_width[1]+width(s);break; +default:confusion(/*1678:*/ +#line 25930 "tex.w" +553 +/*:1678*/ +#line 16608 "tex.w" +); + +} + +/*:842*/ +#line 16569 "tex.w" +; +s= link(s); +} +break_width[1]= break_width[1]+disc_width; +if(post_break(cur_p)==null)s= link(v); + +} + +/*:840*/ +#line 16523 "tex.w" +; +while(s!=null) +{if(is_char_node(s))goto done; +switch(type(s)){ +case glue_node:/*838:*/ +#line 16538 "tex.w" + +{v= glue_ptr(s);break_width[1]= break_width[1]-width(v); +break_width[2+stretch_order(v)]= break_width[2+stretch_order(v)]-stretch(v); +break_width[6]= break_width[6]-shrink(v); +} + +/*:838*/ +#line 16527 "tex.w" +break; +case penalty_node:do_nothing;break; +case math_node:break_width[1]= break_width[1]-width(s);break; +case kern_node:if(subtype(s)!=explicit)goto done; +else break_width[1]= break_width[1]-width(s);break; +default:goto done; +} +s= link(s); +} +done:;} + +/*:837*/ +#line 16484 "tex.w" +; +/*843:*/ +#line 16621 "tex.w" + +if(type(prev_r)==delta_node) +{do_all_six(convert_to_break_width); +} +else if(prev_r==active) +{do_all_six(store_break_width); +} +else{q= get_node(delta_node_size);link(q)= r;type(q)= delta_node; +subtype(q)= 0; +do_all_six(new_delta_to_break_width); +link(prev_r)= q;prev_prev_r= prev_r;prev_r= q; +} + +/*:843*/ +#line 16485 "tex.w" +; +if(abs(adj_demerits)>=awful_bad-minimum_demerits) +minimum_demerits= awful_bad-1; +else minimum_demerits= minimum_demerits+abs(adj_demerits); +for(fit_class= very_loose_fit;fit_class<=tight_fit;fit_class++) +{if(minimal_demerits[fit_class]<=minimum_demerits) +/*845:*/ +#line 16651 "tex.w" + +{q= get_node(passive_node_size); +link(q)= passive;passive= q;cur_break(q)= cur_p; +#ifdef STAT +incr(pass_number);serial(q)= pass_number; +#endif + +prev_break(q)= best_place[fit_class]; +q= get_node(active_node_size);break_node(q)= passive; +line_number(q)= best_pl_line[fit_class]+1; +fitness(q)= fit_class;type(q)= break_type; +total_demerits(q)= minimal_demerits[fit_class]; +link(q)= r;link(prev_r)= q;prev_r= q; +#ifdef STAT +if(tracing_paragraphs> 0) +/*846:*/ +#line 16671 "tex.w" + +{print_nl("@@");print_int(serial(passive)); + +print_str(": line ");print_int(line_number(q)-1); +print_char('.');print_int(fit_class); +if(break_type==hyphenated)print_char('-'); +print_str(" t=");print_int(total_demerits(q)); +print_str(" -> @@"); +if(prev_break(passive)==null)print_char('0'); +else print_int(serial(prev_break(passive))); +} + +/*:846*/ +#line 16666 "tex.w" +; +#endif + +} + +/*:845*/ +#line 16491 "tex.w" +; +minimal_demerits[fit_class]= awful_bad; +} +minimum_demerits= awful_bad; +/*844:*/ +#line 16640 "tex.w" + +if(r!=last_active) +{q= get_node(delta_node_size);link(q)= r;type(q)= delta_node; +subtype(q)= 0; +do_all_six(new_delta_from_break_width); +link(prev_r)= q;prev_prev_r= prev_r;prev_r= q; +} + +/*:844*/ +#line 16495 "tex.w" +; +} + +/*:836*/ +#line 16471 "tex.w" +; +if(r==last_active)goto end; +/*850:*/ +#line 16747 "tex.w" + +if(l> easy_line) +{line_width= second_width;old_l= max_halfword-1; +} +else{old_l= l; +if(l> last_special_line)line_width= second_width; +else if(par_shape_ptr==null)line_width= first_width; +else line_width= mem[par_shape_ptr+2*l].sc; +} + +/*:850*/ +#line 16473 "tex.w" +; +} +} + +/*:835*/ +#line 16379 "tex.w" +; +/*851:*/ +#line 16767 "tex.w" + +{artificial_demerits= false; + +shortfall= line_width-cur_active_width[1]; +if(shortfall> 0) +/*852:*/ +#line 16797 "tex.w" + +if((cur_active_width[3]!=0)||(cur_active_width[4]!=0)|| +(cur_active_width[5]!=0)) +{b= 0;fit_class= decent_fit; +} +else{if(shortfall> 7230584)if(cur_active_width[2]<1663497) +{b= inf_bad;fit_class= very_loose_fit;goto done1; +} +b= badness(shortfall,cur_active_width[2]); +if(b> 12) +if(b> 99)fit_class= very_loose_fit; +else fit_class= loose_fit; +else fit_class= decent_fit; +done1:; +} + +/*:852*/ +#line 16773 "tex.w" + +else/*853:*/ +#line 16816 "tex.w" + +{if(-shortfall> cur_active_width[6])b= inf_bad+1; +else b= badness(-shortfall,cur_active_width[6]); +if(b> 12)fit_class= tight_fit;else fit_class= decent_fit; +} + +/*:853*/ +#line 16775 "tex.w" +; +if((b> inf_bad)||(pi==eject_penalty)) +/*854:*/ +#line 16831 "tex.w" + +{if(final_pass&&(minimum_demerits==awful_bad)&& +(link(r)==last_active)&& +(prev_r==active)) +artificial_demerits= true; +else if(b> threshold)goto deactivate; +node_r_stays_active= false; +} + +/*:854*/ +#line 16778 "tex.w" + +else{prev_r= r; +if(b> threshold)goto resume; +node_r_stays_active= true; +} +/*855:*/ +#line 16847 "tex.w" + +if(artificial_demerits)d= 0; +else/*859:*/ +#line 16908 "tex.w" + +{d= line_penalty+b; +if(abs(d)>=10000)d= 100000000;else d= d*d; +if(pi!=0) +if(pi> 0)d= d+pi*pi; +else if(pi> eject_penalty)d= d-pi*pi; +if((break_type==hyphenated)&&(type(r)==hyphenated)) +if(cur_p!=null)d= d+double_hyphen_demerits; +else d= d+final_hyphen_demerits; +if(abs(fit_class-fitness(r))> 1)d= d+adj_demerits; +} + +/*:859*/ +#line 16849 "tex.w" +; +#ifdef STAT +if(tracing_paragraphs> 0) +/*856:*/ +#line 16863 "tex.w" + +{if(printed_node!=cur_p) +/*857:*/ +#line 16885 "tex.w" + +{print_nl(""); +if(cur_p==null)short_display(link(printed_node)); +else{save_link= link(cur_p); +link(cur_p)= null;print_nl("");short_display(link(printed_node)); +link(cur_p)= save_link; +} +printed_node= cur_p; +} + +/*:857*/ +#line 16865 "tex.w" +; +print_nl("@"); + +if(cur_p==null)print_esc(/*1569:*/ +#line 25603 "tex.w" +444 +/*:1569*/ +#line 16868 "tex.w" +); +else if(type(cur_p)!=glue_node) +{if(type(cur_p)==penalty_node)print_esc(/*1553:*/ +#line 25555 "tex.w" +428 +/*:1553*/ +#line 16870 "tex.w" +); +else if(type(cur_p)==disc_node)print_esc(/*1400:*/ +#line 25096 "tex.w" +275 +/*:1400*/ +#line 16871 "tex.w" +); +else if(type(cur_p)==kern_node)print_esc(/*1396:*/ +#line 25084 "tex.w" +271 +/*:1396*/ +#line 16872 "tex.w" +); +else print_esc(/*1398:*/ +#line 25090 "tex.w" +273 +/*:1398*/ +#line 16873 "tex.w" +); +} +print_str(" via @@"); +if(break_node(r)==null)print_char('0'); +else print_int(serial(break_node(r))); +print_str(" b="); +if(b> inf_bad)print_char('*');else print_int(b); + +print_str(" p=");print_int(pi);print_str(" d="); +if(artificial_demerits)print_char('*');else print_int(d); +} + +/*:856*/ +#line 16852 "tex.w" +; +#endif + +d= d+total_demerits(r); + +if(d<=minimal_demerits[fit_class]) +{minimal_demerits[fit_class]= d; +best_place[fit_class]= break_node(r);best_pl_line[fit_class]= l; +if(d<minimum_demerits)minimum_demerits= d; +} + +/*:855*/ +#line 16783 "tex.w" +; +if(node_r_stays_active)goto resume; +deactivate:/*860:*/ +#line 16930 "tex.w" + +link(prev_r)= link(r);free_node(r,active_node_size); +if(prev_r==active)/*861:*/ +#line 16955 "tex.w" + +{r= link(active); +if(type(r)==delta_node) +{do_all_six(update_active); +do_all_six(copy_to_cur_active); +link(active)= link(r);free_node(r,delta_node_size); +} +} + +/*:861*/ +#line 16933 "tex.w" + +else if(type(prev_r)==delta_node) +{r= link(prev_r); +if(r==last_active) +{do_all_six(downdate_width); +link(prev_prev_r)= last_active; +free_node(prev_r,delta_node_size);prev_r= prev_prev_r; +} +else if(type(r)==delta_node) +{do_all_six(update_width); +do_all_six(combine_two_deltas); +link(prev_r)= link(r);free_node(r,delta_node_size); +} +} + +/*:860*/ +#line 16785 "tex.w" +; +} + +/*:851*/ +#line 16382 "tex.w" +; +} +end:; +#ifdef STAT +/*858:*/ +#line 16900 "tex.w" + +if(cur_p==printed_node)if(cur_p!=null)if(type(cur_p)==disc_node) +{t= replace_count(cur_p); +while(t> 0) +{decr(t);printed_node= link(printed_node); +} +} + +/*:858*/ +#line 16386 "tex.w" +; +#endif + +} + +/*:829*//*877:*/ +#line 17281 "tex.w" + +void post_line_break(int final_widow_penalty) +{ +pointer q,r,s; +bool disc_break; +bool post_disc_break; +scaled cur_width; +scaled cur_indent; +quarterword t; +int pen; +halfword cur_line; +/*878:*/ +#line 17312 "tex.w" + +q= break_node(best_bet);cur_p= null; +do{r= q;q= prev_break(q);next_break(r)= cur_p;cur_p= r; +}while(!(q==null)) + +/*:878*/ +#line 17292 "tex.w" +; +cur_line= prev_graf+1; +do{/*880:*/ +#line 17349 "tex.w" + +/*881:*/ +#line 17361 "tex.w" + +q= cur_break(cur_p);disc_break= false;post_disc_break= false; +if(q!=null) +if(type(q)==glue_node) +{delete_glue_ref(glue_ptr(q)); +glue_ptr(q)= right_skip; +subtype(q)= right_skip_code+1;add_glue_ref(right_skip); +goto done; +} +else{if(type(q)==disc_node) +/*882:*/ +#line 17380 "tex.w" + +{t= replace_count(q); +/*883:*/ +#line 17388 "tex.w" + +if(t==0)r= link(q); +else{r= q; +while(t> 1) +{r= link(r);decr(t); +} +s= link(r); +r= link(s);link(s)= null; +flush_node_list(link(q));replace_count(q)= 0; +} + +/*:883*/ +#line 17382 "tex.w" +; +if(post_break(q)!=null)/*884:*/ +#line 17402 "tex.w" + +{s= post_break(q); +while(link(s)!=null)s= link(s); +link(s)= r;r= post_break(q);post_break(q)= null;post_disc_break= true; +} + +/*:884*/ +#line 17383 "tex.w" +; +if(pre_break(q)!=null)/*885:*/ +#line 17411 "tex.w" + +{s= pre_break(q);link(q)= s; +while(link(s)!=null)s= link(s); +pre_break(q)= null;q= s; +} + +/*:885*/ +#line 17384 "tex.w" +; +link(q)= r;disc_break= true; +} + +/*:882*/ +#line 17371 "tex.w" + +else if((type(q)==math_node)||(type(q)==kern_node))width(q)= 0; +} +else{q= temp_head; +while(link(q)!=null)q= link(q); +} +/*886:*/ +#line 17417 "tex.w" + +r= new_param_glue(right_skip_code);link(r)= link(q);link(q)= r;q= r + +/*:886*/ +#line 17377 "tex.w" +; +done: + +/*:881*/ +#line 17351 "tex.w" +; +/*887:*/ +#line 17424 "tex.w" + +r= link(q);link(q)= null;q= link(temp_head);link(temp_head)= r; +if(left_skip!=zero_glue) +{r= new_param_glue(left_skip_code); +link(r)= q;q= r; +} + +/*:887*/ +#line 17352 "tex.w" +; +/*889:*/ +#line 17443 "tex.w" + +if(cur_line> last_special_line) +{cur_width= second_width;cur_indent= second_indent; +} +else if(par_shape_ptr==null) +{cur_width= first_width;cur_indent= first_indent; +} +else{cur_width= mem[par_shape_ptr+2*cur_line].sc; +cur_indent= mem[par_shape_ptr+2*cur_line-1].sc; +} +adjust_tail= adjust_head;just_box= hpack(q,cur_width,exactly); +shift_amount(just_box)= cur_indent + +/*:889*/ +#line 17353 "tex.w" +; +/*888:*/ +#line 17431 "tex.w" + +append_to_vlist(just_box); +if(adjust_head!=adjust_tail) +{link(tail)= link(adjust_head);tail= adjust_tail; +} +adjust_tail= null + +/*:888*/ +#line 17355 "tex.w" +; +/*890:*/ +#line 17463 "tex.w" + +if(cur_line+1!=best_line) +{pen= inter_line_penalty; +if(cur_line==prev_graf+1)pen= pen+club_penalty; +if(cur_line+2==best_line)pen= pen+final_widow_penalty; +if(disc_break)pen= pen+broken_penalty; +if(pen!=0) +{r= new_penalty(pen); +link(tail)= r;tail= r; +} +} + +/*:890*/ +#line 17356 "tex.w" + + +/*:880*/ +#line 17295 "tex.w" +; +incr(cur_line);cur_p= next_break(cur_p); +if(cur_p!=null)if(!post_disc_break) +/*879:*/ +#line 17324 "tex.w" + +{r= temp_head; +loop{q= link(r); +if(q==cur_break(cur_p))goto done1; + + +if(is_char_node(q))goto done1; +if(non_discardable(q))goto done1; +if(type(q)==kern_node)if(subtype(q)!=explicit)goto done1; +r= q; +} +done1:if(r!=temp_head) +{link(r)= null;flush_node_list(link(temp_head)); +link(temp_head)= q; +} +} + +/*:879*/ +#line 17298 "tex.w" +; +}while(!(cur_p==null)); +if((cur_line!=best_line)||(link(temp_head)!=null)) +confusion(/*1682:*/ +#line 25942 "tex.w" +557 +/*:1682*/ +#line 17301 "tex.w" +); + +prev_graf= best_line-1; +} + +/*:877*//*895:*/ +#line 17576 "tex.w" + +/*906:*/ +#line 17804 "tex.w" + + +small_number reconstitute(small_number j,small_number n,halfword bchar,halfword hchar) +{ +pointer p; +pointer t; +four_quarters q; +halfword cur_rh; +halfword test_char; +scaled w; +font_index k; +hyphen_passed= 0;t= hold_head;w= 0;link(hold_head)= null; + +/*908:*/ +#line 17856 "tex.w" + +cur_l= qi(hu[j]);cur_q= t; +if(j==0) +{ligature_present= init_lig;p= init_list; +if(ligature_present)lft_hit= init_lft; +while(p> null) +{append_charnode_to_t(character(p));p= link(p); +} +} +else if(cur_l<non_char)append_charnode_to_t(cur_l); +lig_stack= null;set_cur_r + +/*:908*/ +#line 17817 "tex.w" +; +resume:/*909:*/ +#line 17872 "tex.w" + +if(cur_l==non_char) +{k= bchar_label[hf]; +if(k==non_address)goto done;else q= font_info[k].qqqq; +} +else{q= char_info(hf)(cur_l); +if(char_tag(q)!=lig_tag)goto done; +k= lig_kern_start(hf)(q);q= font_info[k].qqqq; +if(skip_byte(q)> stop_flag) +{k= lig_kern_restart(hf)(q);q= font_info[k].qqqq; +} +} +if(cur_rh<non_char)test_char= cur_rh;else test_char= cur_r; +loop{if(next_char(q)==test_char)if(skip_byte(q)<=stop_flag) +if(cur_rh<non_char) +{hyphen_passed= j;hchar= non_char;cur_rh= non_char; +goto resume; +} +else{if(hchar<non_char)if(odd(hyf[j])) +{hyphen_passed= j;hchar= non_char; +} +if(op_byte(q)<kern_flag) +/*911:*/ +#line 17934 "tex.w" + +{if(cur_l==non_char)lft_hit= true; +if(j==n)if(lig_stack==null)rt_hit= true; +check_interrupt; +switch(op_byte(q)){ +qi(case 1):qi(case 5):{cur_l= rem_byte(q); +ligature_present= true; +}break; +qi(case 2):qi(case 6):{cur_r= rem_byte(q); +if(lig_stack> null)character(lig_stack)= cur_r; +else{lig_stack= new_lig_item(cur_r); +if(j==n)bchar= non_char; +else{p= get_avail();lig_ptr(lig_stack)= p; +character(p)= qi(hu[j+1]);font(p)= hf; +} +} +}break; +qi(case 3):{cur_r= rem_byte(q); +p= lig_stack;lig_stack= new_lig_item(cur_r);link(lig_stack)= p; +}break; +qi(case 7):qi(case 11):{wrap_lig(false); +cur_q= t;cur_l= rem_byte(q);ligature_present= true; +}break; +default:{cur_l= rem_byte(q);ligature_present= true; +if(lig_stack> null)pop_lig_stack +else if(j==n)goto done; +else{append_charnode_to_t(cur_r);incr(j);set_cur_r; +} +} +} +if(op_byte(q)> qi(4))if(op_byte(q)!=qi(7))goto done; +goto resume; +} + +/*:911*/ +#line 17895 "tex.w" +; +w= char_kern(hf)(q);goto done; +} +if(skip_byte(q)>=stop_flag) +if(cur_rh==non_char)goto done; +else{cur_rh= non_char;goto resume; +} +k= k+qo(skip_byte(q))+1;q= font_info[k].qqqq; +} +done: + +/*:909*/ +#line 17819 "tex.w" +; +/*910:*/ +#line 17924 "tex.w" + +wrap_lig(rt_hit); +if(w!=0) +{link(t)= new_kern(w);t= link(t);w= 0; +} +if(lig_stack> null) +{cur_q= t;cur_l= character(lig_stack);ligature_present= true; +pop_lig_stack;goto resume; +} + +/*:910*/ +#line 17821 "tex.w" +; +return j; +} + +/*:906*/ +#line 17577 "tex.w" + +void hyphenate(void) +{ +/*901:*/ +#line 17683 "tex.w" + +int i,j,l; +pointer q,r,s; +halfword bchar; + +/*:901*//*912:*/ +#line 17977 "tex.w" + +pointer major_tail,minor_tail; + +ASCII_code c; +uint8_t c_loc; +int r_count; +pointer hyf_node; + +/*:912*//*922:*/ +#line 18152 "tex.w" + +trie_pointer z; +int v; + +/*:922*//*929:*/ +#line 18224 "tex.w" + +hyph_pointer h; +str_number k; +pool_pointer u; + +/*:929*/ +#line 17580 "tex.w" + +/*923:*/ +#line 18161 "tex.w" + +for(j= 0;j<=hn;j++)hyf[j]= 0; +/*930:*/ +#line 18233 "tex.w" + +h= hc[1];incr(hn);hc[hn]= cur_lang; +for(j= 2;j<=hn;j++)h= (h+h+hc[j])%hyph_size; +loop{/*931:*/ +#line 18242 "tex.w" + +k= hyph_word[h];if(k==0)goto not_found; +if(length(k)<hn)goto not_found; +if(length(k)==hn) +{j= 1;u= str_start[k]; +do{if(so(str_pool[u])<hc[j])goto not_found; +if(so(str_pool[u])> hc[j])goto done; +incr(j);incr(u); +}while(!(j> hn)); +/*932:*/ +#line 18256 "tex.w" + +s= hyph_list[h]; +while(s!=null) +{hyf[info(s)]= 1;s= link(s); +} + +/*:932*/ +#line 18251 "tex.w" +; +decr(hn);goto found; +} +done: + +/*:931*/ +#line 18237 "tex.w" +; +if(h> 0)decr(h);else h= hyph_size; +} +not_found:decr(hn) + +/*:930*/ +#line 18164 "tex.w" +; +if(trie_char(cur_lang+1)!=qi(cur_lang))return; +hc[0]= 0;hc[hn+1]= 0;hc[hn+2]= 256; +for(j= 0;j<=hn-r_hyf+1;j++) +{z= trie_link(cur_lang+1)+hc[j];l= j; +while(hc[l]==qo(trie_char(z))) +{if(trie_op(z)!=min_quarterword) +/*924:*/ +#line 18178 "tex.w" + +{v= trie_op(z); +do{v= v+op_start[cur_lang];i= l-hyf_distance[v]; +if(hyf_num[v]> hyf[i])hyf[i]= hyf_num[v]; +v= hyf_next[v]; +}while(!(v==min_quarterword)); +} + +/*:924*/ +#line 18171 "tex.w" +; +incr(l);z= trie_link(z)+hc[l]; +} +} +found:for(j= 0;j<=l_hyf-1;j++)hyf[j]= 0; +for(j= 0;j<=r_hyf-1;j++)hyf[hn-j]= 0 + +/*:923*/ +#line 17581 "tex.w" +; +/*902:*/ +#line 17695 "tex.w" + +for(j= l_hyf;j<=hn-r_hyf;j++)if(odd(hyf[j]))goto found1; +return; +found1: + +/*:902*/ +#line 17582 "tex.w" +; +/*903:*/ +#line 17711 "tex.w" + +q= link(hb);link(hb)= null;r= link(ha);link(ha)= null;bchar= hyf_bchar; +if(is_char_node(ha)) +if(font(ha)!=hf)goto found2; +else{init_list= ha;init_lig= false;hu[0]= qo(character(ha)); +} +else if(type(ha)==ligature_node) +if(font(lig_char(ha))!=hf)goto found2; +else{init_list= lig_ptr(ha);init_lig= true;init_lft= (subtype(ha)> 1); +hu[0]= qo(character(lig_char(ha))); +if(init_list==null)if(init_lft) +{hu[0]= 256;init_lig= false; +} +free_node(ha,small_node_size); +} +else{ +if(!is_char_node(r))if(type(r)==ligature_node) +if(subtype(r)> 1)goto found2; +j= 1;s= ha;init_list= null;goto common_ending; +} +s= cur_p; +while(link(s)!=ha)s= link(s); +j= 0;goto common_ending; +found2:s= ha;j= 0;hu[0]= 256;init_lig= false;init_list= null; +common_ending:flush_node_list(r); +/*913:*/ +#line 17987 "tex.w" + +do{l= j;j= reconstitute(j,hn,bchar,qi(hyf_char))+1; +if(hyphen_passed==0) +{link(s)= link(hold_head); +while(link(s)> null)s= link(s); +if(odd(hyf[j-1])) +{l= j;hyphen_passed= j-1;link(hold_head)= null; +} +} +if(hyphen_passed> 0) +/*914:*/ +#line 18012 "tex.w" + +do{r= get_node(small_node_size); +link(r)= link(hold_head);type(r)= disc_node; +major_tail= r;r_count= 0; +while(link(major_tail)> null)advance_major_tail; +i= hyphen_passed;hyf[i]= 0; +/*915:*/ +#line 18028 "tex.w" + +minor_tail= null;pre_break(r)= null;hyf_node= new_character(hf,hyf_char); +if(hyf_node!=null) +{incr(i);c= hu[i];hu[i]= hyf_char;free_avail(hyf_node); +} +while(l<=i) +{l= reconstitute(l,i,font_bchar[hf],non_char)+1; +if(link(hold_head)> null) +{if(minor_tail==null)pre_break(r)= link(hold_head); +else link(minor_tail)= link(hold_head); +minor_tail= link(hold_head); +while(link(minor_tail)> null)minor_tail= link(minor_tail); +} +} +if(hyf_node!=null) +{hu[i]= c; +l= i;decr(i); +} + +/*:915*/ +#line 18018 "tex.w" +; +/*916:*/ +#line 18049 "tex.w" + +minor_tail= null;post_break(r)= null;c_loc= 0; +if(bchar_label[hf]!=non_address) +{decr(l);c= hu[l];c_loc= l;hu[l]= 256; +} +while(l<j) +{do{l= reconstitute(l,hn,bchar,non_char)+1; +if(c_loc> 0) +{hu[c_loc]= c;c_loc= 0; +} +if(link(hold_head)> null) +{if(minor_tail==null)post_break(r)= link(hold_head); +else link(minor_tail)= link(hold_head); +minor_tail= link(hold_head); +while(link(minor_tail)> null)minor_tail= link(minor_tail); +} +}while(!(l>=j)); +while(l> j) +/*917:*/ +#line 18070 "tex.w" + +{j= reconstitute(j,hn,bchar,non_char)+1; +link(major_tail)= link(hold_head); +while(link(major_tail)> null)advance_major_tail; +} + +/*:917*/ +#line 18067 "tex.w" +; +} + +/*:916*/ +#line 18020 "tex.w" +; +/*918:*/ +#line 18080 "tex.w" + +if(r_count> 127) +{link(s)= link(r);link(r)= null;flush_node_list(r); +} +else{link(s)= r;replace_count(r)= r_count; +} +s= major_tail + +/*:918*/ +#line 18021 "tex.w" +; +hyphen_passed= j-1;link(hold_head)= null; +}while(!(!odd(hyf[j-1]))) + +/*:914*/ +#line 17998 "tex.w" +; +}while(!(j> hn)); +link(s)= q + +/*:913*/ +#line 17736 "tex.w" +; +flush_list(init_list) + +/*:903*/ +#line 17583 "tex.w" +; +} + +/*:895*//*942:*/ +#line 18389 "tex.w" + +#ifdef INIT +/*944:*/ +#line 18436 "tex.w" + +quarterword new_trie_op(small_number d,small_number n,quarterword v) +{ +int16_t h; +quarterword u; +uint16_t l; +h= abs(n+313*d+361*v+1009*cur_lang)%(trie_op_size+trie_op_size) +-trie_op_size; +loop{l= trie_op_hash[h]; +if(l==0) +{if(trie_op_ptr==trie_op_size) +overflow("pattern memory ops",trie_op_size); +u= trie_used[cur_lang]; +if(u==max_quarterword) +overflow("pattern memory ops per language", +max_quarterword-min_quarterword); +incr(trie_op_ptr);incr(u);trie_used[cur_lang]= u; +hyf_distance[trie_op_ptr]= d; +hyf_num[trie_op_ptr]= n;hyf_next[trie_op_ptr]= v; +trie_op_lang[trie_op_ptr]= cur_lang;trie_op_hash[h]= trie_op_ptr; +trie_op_val[trie_op_ptr]= u;return u; +} +if((hyf_distance[l]==d)&&(hyf_num[l]==n)&&(hyf_next[l]==v) +&&(trie_op_lang[l]==cur_lang)) +{return trie_op_val[l]; +} +if(h> -trie_op_size)decr(h);else h= trie_op_size; +} +} + +/*:944*//*948:*/ +#line 18538 "tex.w" + +trie_pointer trie_node(trie_pointer p) + +{ +trie_pointer h; +trie_pointer q; +h= abs(trie_c[p]+1009*trie_o[p]+ +2718*trie_l[p]+3142*trie_r[p])%trie_size; +loop{q= trie_hash[h]; +if(q==0) +{trie_hash[h]= p;return p; +} +if((trie_c[q]==trie_c[p])&&(trie_o[q]==trie_o[p])&& +(trie_l[q]==trie_l[p])&&(trie_r[q]==trie_r[p])) +{return q; +} +if(h> 0)decr(h);else h= trie_size; +} +} + +/*:948*//*949:*/ +#line 18564 "tex.w" + +trie_pointer compress_trie(trie_pointer p) +{if(p==0)return 0; +else{trie_l[p]= compress_trie(trie_l[p]); +trie_r[p]= compress_trie(trie_r[p]); +return trie_node(p); +} +} + +/*:949*//*953:*/ +#line 18635 "tex.w" + +void first_fit(trie_pointer p) +{ +trie_pointer h; +trie_pointer z; +trie_pointer q; +ASCII_code c; +trie_pointer l,r; +uint16_t ll; +c= so(trie_c[p]); +z= trie_min[c]; +loop{h= z-c; +/*954:*/ +#line 18660 "tex.w" + +if(trie_max<h+256) +{if(trie_size<=h+256)overflow("pattern memory",trie_size); + +do{incr(trie_max);trie_taken[trie_max]= false; +trie_link(trie_max)= trie_max+1;trie_back(trie_max)= trie_max-1; +}while(!(trie_max==h+256)); +} + +/*:954*/ +#line 18647 "tex.w" +; +if(trie_taken[h])goto not_found; +/*955:*/ +#line 18669 "tex.w" + +q= trie_r[p]; +while(q> 0) +{if(trie_link(h+so(trie_c[q]))==0)goto not_found; +q= trie_r[q]; +} +goto found + +/*:955*/ +#line 18650 "tex.w" +; +not_found:z= trie_link(z); +} +found:/*956:*/ +#line 18677 "tex.w" + +trie_taken[h]= true;trie_ref[p]= h;q= p; +do{z= h+so(trie_c[q]);l= trie_back(z);r= trie_link(z); +trie_back(r)= l;trie_link(l)= r;trie_link(z)= 0; +if(l<256) +{if(z<256)ll= z;else ll= 256; +do{trie_min[l]= r;incr(l); +}while(!(l==ll)); +} +q= trie_r[q]; +}while(!(q==0)) + +/*:956*/ +#line 18653 "tex.w" +; +} + +/*:953*//*957:*/ +#line 18692 "tex.w" + +void trie_pack(trie_pointer p) +{trie_pointer q; +do{q= trie_l[p]; +if((q> 0)&&(trie_ref[q]==0)) +{first_fit(q);trie_pack(q); +} +p= trie_r[p]; +}while(!(p==0)); +} + +/*:957*//*959:*/ +#line 18728 "tex.w" + +void trie_fix(trie_pointer p) +{trie_pointer q; +ASCII_code c; +trie_pointer z; +z= trie_ref[p]; +do{q= trie_l[p];c= so(trie_c[p]); +trie_link(z+c)= trie_ref[q];trie_char(z+c)= qi(c);trie_op(z+c)= trie_o[p]; +if(q> 0)trie_fix(q); +p= trie_r[p]; +}while(!(p==0)); +} + +/*:959*//*960:*/ +#line 18745 "tex.w" + +void new_patterns(void) +{ +uint8_t k,l; + +bool digit_sensed; +quarterword v; +trie_pointer p,q; +bool first_child; +ASCII_code c; +if(trie_not_ready) +{set_cur_lang;scan_left_brace(); +/*961:*/ +#line 18769 "tex.w" + +k= 0;hyf[0]= 0;digit_sensed= false; +loop{get_x_token(); +switch(cur_cmd){ +case letter:case other_char:/*962:*/ +#line 18787 "tex.w" + +if(digit_sensed||(cur_chr<'0')||(cur_chr> '9')) +{if(cur_chr=='.')cur_chr= 0; +else{cur_chr= lc_code(cur_chr); +if(cur_chr==0) +{print_err("Nonletter"); + +help1("(See Appendix H.)");error(); +} +} +if(k<63) +{incr(k);hc[k]= cur_chr;hyf[k]= 0;digit_sensed= false; +} +} +else if(k<63) +{hyf[k]= cur_chr-'0';digit_sensed= true; +} + +/*:962*/ +#line 18773 "tex.w" +break; +case spacer:case right_brace:{if(k> 0) +/*963:*/ +#line 18809 "tex.w" + +{/*965:*/ +#line 18837 "tex.w" + +if(hc[1]==0)hyf[0]= 0; +if(hc[k]==0)hyf[k]= 0; +l= k;v= min_quarterword; +loop{if(hyf[l]!=0)v= new_trie_op(k-l,hyf[l],v); +if(l> 0)decr(l);else goto done1; +} +done1: + +/*:965*/ +#line 18810 "tex.w" +; +q= 0;hc[0]= cur_lang; +while(l<=k) +{c= hc[l];incr(l);p= trie_l[q];first_child= true; +while((p> 0)&&(c> so(trie_c[p]))) +{q= p;p= trie_r[q];first_child= false; +} +if((p==0)||(c<so(trie_c[p]))) +/*964:*/ +#line 18829 "tex.w" + +{if(trie_ptr==trie_size)overflow("pattern memory",trie_size); + +incr(trie_ptr);trie_r[trie_ptr]= p;p= trie_ptr;trie_l[p]= 0; +if(first_child)trie_l[q]= p;else trie_r[q]= p; +trie_c[p]= si(c);trie_o[p]= min_quarterword; +} + +/*:964*/ +#line 18818 "tex.w" +; +q= p; +} +if(trie_o[q]!=min_quarterword) +{print_err("Duplicate pattern"); + +help1("(See Appendix H.)");error(); +} +trie_o[q]= v; +} + +/*:963*/ +#line 18775 "tex.w" +; +if(cur_cmd==right_brace)goto done; +k= 0;hyf[0]= 0;digit_sensed= false; +}break; +default:{print_err("Bad ");print_esc(/*1684:*/ +#line 25948 "tex.w" +559 +/*:1684*/ +#line 18779 "tex.w" +); + +help1("(See Appendix H.)");error(); +} +} +} +done: + +/*:961*/ +#line 18757 "tex.w" +; +} +else{print_err("Too late for ");print_esc(/*1684:*/ +#line 25948 "tex.w" +559 +/*:1684*/ +#line 18759 "tex.w" +); +help1("All patterns must be given before typesetting begins."); +error();link(garbage)= scan_toks(false,false);flush_list(def_ref); +} +} + +/*:960*//*966:*/ +#line 18853 "tex.w" + +void init_trie(void) +{trie_pointer p; +int j,k,t; +trie_pointer r,s; +two_halves h; +/*952:*/ +#line 18620 "tex.w" + +/*945:*/ +#line 18470 "tex.w" + +op_start[0]= -min_quarterword; +for(j= 1;j<=255;j++)op_start[j]= op_start[j-1]+qo(trie_used[j-1]); +for(j= 1;j<=trie_op_ptr;j++) +trie_op_hash[j]= op_start[trie_op_lang[j]]+trie_op_val[j]; +for(j= 1;j<=trie_op_ptr;j++)while(trie_op_hash[j]> j) +{k= trie_op_hash[j]; +t= hyf_distance[k];hyf_distance[k]= hyf_distance[j];hyf_distance[j]= t; +t= hyf_num[k];hyf_num[k]= hyf_num[j];hyf_num[j]= t; +t= hyf_next[k];hyf_next[k]= hyf_next[j];hyf_next[j]= t; +trie_op_hash[j]= trie_op_hash[k];trie_op_hash[k]= k; +} + +/*:945*/ +#line 18621 "tex.w" +; +for(p= 0;p<=trie_size;p++)trie_hash[p]= 0; +trie_root= compress_trie(trie_root); +for(p= 0;p<=trie_ptr;p++)trie_ref[p]= 0; +for(p= 0;p<=255;p++)trie_min[p]= p+1; +trie_link(0)= 1;trie_max= 0 + +/*:952*/ +#line 18859 "tex.w" +; +if(trie_root!=0) +{first_fit(trie_root);trie_pack(trie_root); +} +/*958:*/ +#line 18708 "tex.w" + +h.rh= 0;h.b0= min_quarterword;h.b1= min_quarterword; + +if(trie_root==0) +{for(r= 0;r<=256;r++)trie[r]= h; +trie_max= 256; +} +else{trie_fix(trie_root); +r= 0; +do{s= trie_link(r);trie[r]= h;r= s; +}while(!(r> trie_max)); +} +trie_char(0)= qi('?'); + +/*:958*/ +#line 18863 "tex.w" +; +trie_not_ready= false; +} + +/*:966*/ +#line 18391 "tex.w" + +#endif + +/*:942*/ +#line 16057 "tex.w" + +void line_break(int final_widow_penalty) +{ +/*862:*/ +#line 16984 "tex.w" + +bool auto_breaking; +pointer prev_p; +pointer q,r,s,prev_s; +internal_font_number f; + +/*:862*//*893:*/ +#line 17557 "tex.w" + +small_number j; +uint8_t c; + +/*:893*/ +#line 16060 "tex.w" + +pack_begin_line= mode_line; +/*816:*/ +#line 16081 "tex.w" + +link(temp_head)= link(head); +if(is_char_node(tail))tail_append(new_penalty(inf_penalty)) +else if(type(tail)!=glue_node)tail_append(new_penalty(inf_penalty)) +else{type(tail)= penalty_node;delete_glue_ref(glue_ptr(tail)); +flush_node_list(leader_ptr(tail));penalty(tail)= inf_penalty; +} +link(tail)= new_param_glue(par_fill_skip_code); +init_cur_lang= prev_graf%0200000; +init_l_hyf= prev_graf/020000000; +init_r_hyf= (prev_graf/0200000)%0100; +pop_nest(); + +/*:816*//*827:*/ +#line 16309 "tex.w" + +no_shrink_error_yet= true; +check_shrinkage(left_skip);check_shrinkage(right_skip); +q= left_skip;r= right_skip;background[1]= width(q)+width(r); +background[2]= 0;background[3]= 0;background[4]= 0;background[5]= 0; +background[2+stretch_order(q)]= stretch(q); +background[2+stretch_order(r)]= background[2+stretch_order(r)]+stretch(r); +background[6]= shrink(q)+shrink(r); + +/*:827*//*834:*/ +#line 16451 "tex.w" + +minimum_demerits= awful_bad; +minimal_demerits[tight_fit]= awful_bad; +minimal_demerits[decent_fit]= awful_bad; +minimal_demerits[loose_fit]= awful_bad; +minimal_demerits[very_loose_fit]= awful_bad; + +/*:834*//*848:*/ +#line 16712 "tex.w" + +if(par_shape_ptr==null) +if(hang_indent==0) +{last_special_line= 0;second_width= hsize; +second_indent= 0; +} +else/*849:*/ +#line 16726 "tex.w" + +{last_special_line= abs(hang_after); +if(hang_after<0) +{first_width= hsize-abs(hang_indent); +if(hang_indent>=0)first_indent= hang_indent; +else first_indent= 0; +second_width= hsize;second_indent= 0; +} +else{first_width= hsize;first_indent= 0; +second_width= hsize-abs(hang_indent); +if(hang_indent>=0)second_indent= hang_indent; +else second_indent= 0; +} +} + +/*:849*/ +#line 16718 "tex.w" + +else{last_special_line= info(par_shape_ptr)-1; +second_width= mem[par_shape_ptr+2*(last_special_line+1)].sc; +second_indent= mem[par_shape_ptr+2*last_special_line+1].sc; +} +if(looseness==0)easy_line= last_special_line; +else easy_line= max_halfword + +/*:848*/ +#line 16062 "tex.w" +; +/*863:*/ +#line 16994 "tex.w" + +threshold= pretolerance; +if(threshold>=0) +{ +#ifdef STAT +if(tracing_paragraphs> 0) +{begin_diagnostic();print_nl("@firstpass");} +#endif + +second_pass= false;final_pass= false; +} +else{threshold= tolerance;second_pass= true; +final_pass= (emergency_stretch<=0); + +#ifdef STAT +if(tracing_paragraphs> 0)begin_diagnostic(); +#endif + +} +loop{if(threshold> inf_bad)threshold= inf_bad; +if(second_pass)/*891:*/ +#line 17530 "tex.w" + +{ +#ifdef INIT +if(trie_not_ready)init_trie(); +#endif + +cur_lang= init_cur_lang;l_hyf= init_l_hyf;r_hyf= init_r_hyf; +} + +/*:891*/ +#line 17014 "tex.w" +; +/*864:*/ +#line 17053 "tex.w" + +q= get_node(active_node_size); +type(q)= unhyphenated;fitness(q)= decent_fit; +link(q)= last_active;break_node(q)= null; +line_number(q)= prev_graf+1;total_demerits(q)= 0;link(active)= q; +do_all_six(store_background); +passive= null;printed_node= temp_head;pass_number= 0; +font_in_short_display= null_font + +/*:864*/ +#line 17015 "tex.w" +; +cur_p= link(temp_head);auto_breaking= true; +prev_p= cur_p; +while((cur_p!=null)&&(link(active)!=last_active)) +/*866:*/ +#line 17089 "tex.w" + +{if(is_char_node(cur_p)) +/*867:*/ +#line 17123 "tex.w" + +{prev_p= cur_p; +do{f= font(cur_p); +act_width= act_width+char_width(f)(char_info(f)(character(cur_p))); +cur_p= link(cur_p); +}while(!(!is_char_node(cur_p))); +} + +/*:867*/ +#line 17091 "tex.w" +; +switch(type(cur_p)){ +case hlist_node:case vlist_node:case rule_node:act_width= act_width+width(cur_p);break; +case whatsit_node:/*1362:*/ +#line 24802 "tex.w" + +adv_past(cur_p) + +/*:1362*/ +#line 17094 "tex.w" +break; +case glue_node:{/*868:*/ +#line 17134 "tex.w" + +if(auto_breaking) +{if(is_char_node(prev_p))try_break(0,unhyphenated); +else if(precedes_break(prev_p))try_break(0,unhyphenated); +else if((type(prev_p)==kern_node)&&(subtype(prev_p)!=explicit)) +try_break(0,unhyphenated); +} +check_shrinkage(glue_ptr(cur_p));q= glue_ptr(cur_p); +act_width= act_width+width(q); +active_width[2+stretch_order(q)]= +active_width[2+stretch_order(q)]+stretch(q); +active_width[6]= active_width[6]+shrink(q) + +/*:868*/ +#line 17096 "tex.w" +; +if(second_pass&&auto_breaking) +/*894:*/ +#line 17564 "tex.w" + +{prev_s= cur_p;s= link(prev_s); +if(s!=null) +{/*896:*/ +#line 17589 "tex.w" + +loop{if(is_char_node(s)) +{c= qo(character(s));hf= font(s); +} +else if(type(s)==ligature_node) +if(lig_ptr(s)==null)goto resume; +else{q= lig_ptr(s);c= qo(character(q));hf= font(q); +} +else if((type(s)==kern_node)&&(subtype(s)==normal))goto resume; +else if(type(s)==whatsit_node) +{/*1363:*/ +#line 24805 "tex.w" + +adv_past(s) + +/*:1363*/ +#line 17599 "tex.w" +; +goto resume; +} +else goto done1; +if(lc_code(c)!=0) +if((lc_code(c)==c)||(uc_hyph> 0))goto done2; +else goto done1; +resume:prev_s= s;s= link(prev_s); +} +done2:hyf_char= hyphen_char[hf]; +if(hyf_char<0)goto done1; +if(hyf_char> 255)goto done1; +ha= prev_s + +/*:896*/ +#line 17567 "tex.w" +; +if(l_hyf+r_hyf> 63)goto done1; +/*897:*/ +#line 17615 "tex.w" + +hn= 0; +loop{if(is_char_node(s)) +{if(font(s)!=hf)goto done3; +hyf_bchar= character(s);c= qo(hyf_bchar); +if(lc_code(c)==0)goto done3; +if(hn==63)goto done3; +hb= s;incr(hn);hu[hn]= c;hc[hn]= lc_code(c);hyf_bchar= non_char; +} +else if(type(s)==ligature_node) +/*898:*/ +#line 17641 "tex.w" + +{if(font(lig_char(s))!=hf)goto done3; +j= hn;q= lig_ptr(s);if(q> null)hyf_bchar= character(q); +while(q> null) +{c= qo(character(q)); +if(lc_code(c)==0)goto done3; +if(j==63)goto done3; +incr(j);hu[j]= c;hc[j]= lc_code(c); +q= link(q); +} +hb= s;hn= j; +if(odd(subtype(s)))hyf_bchar= font_bchar[hf];else hyf_bchar= non_char; +} + +/*:898*/ +#line 17626 "tex.w" + +else if((type(s)==kern_node)&&(subtype(s)==normal)) +{hb= s; +hyf_bchar= font_bchar[hf]; +} +else goto done3; +s= link(s); +} +done3: + +/*:897*/ +#line 17569 "tex.w" +; +/*899:*/ +#line 17655 "tex.w" + +if(hn<l_hyf+r_hyf)goto done1; +loop{if(!(is_char_node(s))) +switch(type(s)){ +case ligature_node:do_nothing;break; +case kern_node:if(subtype(s)!=normal)goto done4;break; +case whatsit_node:case glue_node:case penalty_node:case ins_node:case adjust_node:case mark_node: +goto done4; +default:goto done1; +} +s= link(s); +} +done4: + +/*:899*/ +#line 17571 "tex.w" +; +hyphenate(); +} +done1:;} + +/*:894*/ +#line 17098 "tex.w" +; +}break; +case kern_node:if(subtype(cur_p)==explicit)kern_break +else act_width= act_width+width(cur_p);break; +case ligature_node:{f= font(lig_char(cur_p)); +act_width= act_width+char_width(f)(char_info(f)(character(lig_char(cur_p)))); +}break; +case disc_node:/*869:*/ +#line 17150 "tex.w" + +{s= pre_break(cur_p);disc_width= 0; +if(s==null)try_break(ex_hyphen_penalty,hyphenated); +else{do{/*870:*/ +#line 17168 "tex.w" + +if(is_char_node(s)) +{f= font(s); +disc_width= disc_width+char_width(f)(char_info(f)(character(s))); +} +else switch(type(s)){ +case ligature_node:{f= font(lig_char(s)); +disc_width= disc_width+ +char_width(f)(char_info(f)(character(lig_char(s)))); +}break; +case hlist_node:case vlist_node:case rule_node:case kern_node: +disc_width= disc_width+width(s);break; +default:confusion(/*1680:*/ +#line 25936 "tex.w" +555 +/*:1680*/ +#line 17180 "tex.w" +); + +} + +/*:870*/ +#line 17153 "tex.w" +; +s= link(s); +}while(!(s==null)); +act_width= act_width+disc_width; +try_break(hyphen_penalty,hyphenated); +act_width= act_width-disc_width; +} +r= replace_count(cur_p);s= link(cur_p); +while(r> 0) +{/*871:*/ +#line 17184 "tex.w" + +if(is_char_node(s)) +{f= font(s); +act_width= act_width+char_width(f)(char_info(f)(character(s))); +} +else switch(type(s)){ +case ligature_node:{f= font(lig_char(s)); +act_width= act_width+ +char_width(f)(char_info(f)(character(lig_char(s)))); +}break; +case hlist_node:case vlist_node:case rule_node:case kern_node: +act_width= act_width+width(s);break; +default:confusion(/*1681:*/ +#line 25939 "tex.w" +556 +/*:1681*/ +#line 17196 "tex.w" +); + +} + +/*:871*/ +#line 17162 "tex.w" +; +decr(r);s= link(s); +} +prev_p= cur_p;cur_p= s;goto done5; +} + +/*:869*/ +#line 17105 "tex.w" + +case math_node:{auto_breaking= (subtype(cur_p)==after);kern_break; +}break; +case penalty_node:try_break(penalty(cur_p),unhyphenated);break; +case mark_node:case ins_node:case adjust_node:do_nothing;break; +default:confusion(/*1679:*/ +#line 25933 "tex.w" +554 +/*:1679*/ +#line 17110 "tex.w" +); + +} +prev_p= cur_p;cur_p= link(cur_p); +done5:;} + +/*:866*/ +#line 17021 "tex.w" +; +if(cur_p==null) +/*873:*/ +#line 17219 "tex.w" + +{try_break(eject_penalty,hyphenated); +if(link(active)!=last_active) +{/*874:*/ +#line 17229 "tex.w" + +r= link(active);fewest_demerits= awful_bad; +do{if(type(r)!=delta_node)if(total_demerits(r)<fewest_demerits) +{fewest_demerits= total_demerits(r);best_bet= r; +} +r= link(r); +}while(!(r==last_active)); +best_line= line_number(best_bet) + +/*:874*/ +#line 17222 "tex.w" +; +if(looseness==0)goto done; +/*875:*/ +#line 17243 "tex.w" + +{r= link(active);actual_looseness= 0; +do{if(type(r)!=delta_node) +{line_diff= line_number(r)-best_line; +if(((line_diff<actual_looseness)&&(looseness<=line_diff))|| +((line_diff> actual_looseness)&&(looseness>=line_diff))) +{best_bet= r;actual_looseness= line_diff; +fewest_demerits= total_demerits(r); +} +else if((line_diff==actual_looseness)&& +(total_demerits(r)<fewest_demerits)) +{best_bet= r;fewest_demerits= total_demerits(r); +} +} +r= link(r); +}while(!(r==last_active)); +best_line= line_number(best_bet); +} + +/*:875*/ +#line 17224 "tex.w" +; +if((actual_looseness==looseness)||final_pass)goto done; +} +} + +/*:873*/ +#line 17024 "tex.w" +; +/*865:*/ +#line 17062 "tex.w" + +q= link(active); +while(q!=last_active) +{cur_p= link(q); +if(type(q)==delta_node)free_node(q,delta_node_size); +else free_node(q,active_node_size); +q= cur_p; +} +q= passive; +while(q!=null) +{cur_p= link(q); +free_node(q,passive_node_size); +q= cur_p; +} + +/*:865*/ +#line 17025 "tex.w" +; +if(!second_pass) +{ +#ifdef STAT +if(tracing_paragraphs> 0)print_nl("@secondpass"); +#endif +threshold= tolerance;second_pass= true;final_pass= (emergency_stretch<=0); +} +else{ +#ifdef STAT +if(tracing_paragraphs> 0) +print_nl("@emergencypass"); +#endif +background[2]= background[2]+emergency_stretch;final_pass= true; +} +} +done: +#ifdef STAT +if(tracing_paragraphs> 0) +{end_diagnostic(true);normalize_selector(); +} +#endif + +/*:863*/ +#line 16063 "tex.w" +; +/*876:*/ +#line 17267 "tex.w" + +post_line_break(final_widow_penalty) + +/*:876*/ +#line 16065 "tex.w" +; +/*865:*/ +#line 17062 "tex.w" + +q= link(active); +while(q!=last_active) +{cur_p= link(q); +if(type(q)==delta_node)free_node(q,delta_node_size); +else free_node(q,active_node_size); +q= cur_p; +} +q= passive; +while(q!=null) +{cur_p= link(q); +free_node(q,passive_node_size); +q= cur_p; +} + +/*:865*/ +#line 16066 "tex.w" +; +pack_begin_line= 0; +} + +/*:815*//*934:*/ +#line 18280 "tex.w" +void new_hyph_exceptions(void) +{ +uint8_t n; +int j; +hyph_pointer h; +str_number k; +pointer p; +pointer q; +str_number s,t; +pool_pointer u,v; +scan_left_brace(); +set_cur_lang; +/*935:*/ +#line 18296 "tex.w" + +n= 0;p= null; +loop{get_x_token(); +reswitch:switch(cur_cmd){ +case letter:case other_char:case char_given:/*937:*/ +#line 18321 "tex.w" + +if(cur_chr=='-')/*938:*/ +#line 18335 "tex.w" + +{if(n<63) +{q= get_avail();link(q)= p;info(q)= n;p= q; +} +} + +/*:938*/ +#line 18322 "tex.w" + +else{if(lc_code(cur_chr)==0) +{print_err("Not a letter"); + +help2("Letters in \\hyphenation words must have \\lccode>0.") +("Proceed; I'll ignore the character I just read."); +error(); +} +else if(n<63) +{incr(n);hc[n]= lc_code(cur_chr); +} +} + +/*:937*/ +#line 18300 "tex.w" +break; +case char_num:{scan_char_num();cur_chr= cur_val;cur_cmd= char_given; +goto reswitch; +} +case spacer:case right_brace:{if(n> 1)/*939:*/ +#line 18341 "tex.w" + +{incr(n);hc[n]= cur_lang;str_room(n);h= 0; +for(j= 1;j<=n;j++) +{h= (h+h+hc[j])%hyph_size; +append_char(hc[j]); +} +s= make_string(); +/*940:*/ +#line 18351 "tex.w" + +if(hyph_count==hyph_size)overflow("exception dictionary",hyph_size); + +incr(hyph_count); +while(hyph_word[h]!=0) +{/*941:*/ +#line 18362 "tex.w" + +k= hyph_word[h]; +if(length(k)<length(s))goto found; +if(length(k)> length(s))goto not_found; +u= str_start[k];v= str_start[s]; +do{if(str_pool[u]<str_pool[v])goto found; +if(str_pool[u]> str_pool[v])goto not_found; +incr(u);incr(v); +}while(!(u==str_start[k+1])); +found:q= hyph_list[h];hyph_list[h]= p;p= q; +t= hyph_word[h];hyph_word[h]= s;s= t; +not_found: + +/*:941*/ +#line 18357 "tex.w" +; +if(h> 0)decr(h);else h= hyph_size; +} +hyph_word[h]= s;hyph_list[h]= p + +/*:940*/ +#line 18348 "tex.w" +; +} + +/*:939*/ +#line 18304 "tex.w" +; +if(cur_cmd==right_brace)return; +n= 0;p= null; +}break; +default:/*936:*/ +#line 18312 "tex.w" + +{print_err("Improper ");print_esc(/*1683:*/ +#line 25945 "tex.w" +558 +/*:1683*/ +#line 18313 "tex.w" +); + +print_str(" will be flushed"); +help2("Hyphenation exceptions must contain only letters") +("and hyphens. But continue; I'll forgive and forget."); +error(); +} + +/*:936*/ +#line 18308 "tex.w" + +} +} + +/*:935*/ +#line 18293 "tex.w" +; +} + +/*:934*//*968:*/ +#line 18886 "tex.w" +pointer prune_page_top(pointer p) +{pointer prev_p; +pointer q; +prev_p= temp_head;link(temp_head)= p; +while(p!=null) +switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:/*969:*/ +#line 18905 "tex.w" + +{q= new_skip_param(split_top_skip_code);link(prev_p)= q;link(q)= p; + +if(width(temp_ptr)> height(p))width(temp_ptr)= width(temp_ptr)-height(p); +else width(temp_ptr)= 0; +p= null; +} + +/*:969*/ +#line 18893 "tex.w" +break; +case whatsit_node:case mark_node:case ins_node:{prev_p= p;p= link(prev_p); +}break; +case glue_node:case kern_node:case penalty_node:{q= p;p= link(q);link(q)= null; +link(prev_p)= p;flush_node_list(q); +}break; +default:confusion(/*1685:*/ +#line 25951 "tex.w" +560 +/*:1685*/ +#line 18899 "tex.w" +); + +} +return link(temp_head); +} + +/*:968*//*970:*/ +#line 18929 "tex.w" +pointer vert_break(pointer p,scaled h,scaled d) + +{ +pointer prev_p; + +pointer q,r; +int pi; +int b; +int least_cost; +pointer best_place; +scaled prev_dp; +small_number t; +prev_p= p; +least_cost= awful_bad;do_all_six(set_height_zero);prev_dp= 0; +loop{/*972:*/ +#line 18963 "tex.w" + +if(p==null)pi= eject_penalty; +else/*973:*/ +#line 18978 "tex.w" + +switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:{ +cur_height= cur_height+prev_dp+height(p);prev_dp= depth(p); +goto not_found; +} +case whatsit_node:/*1365:*/ +#line 24811 "tex.w" + +goto not_found + +/*:1365*/ +#line 18984 "tex.w" +; +case glue_node:if(precedes_break(prev_p))pi= 0; +else goto update_heights;break; +case kern_node:{if(link(p)==null)t= penalty_node; +else t= type(link(p)); +if(t==glue_node)pi= 0;else goto update_heights; +}break; +case penalty_node:pi= penalty(p);break; +case mark_node:case ins_node:goto not_found; +default:confusion(/*1686:*/ +#line 25954 "tex.w" +561 +/*:1686*/ +#line 18993 "tex.w" +); + +} + +/*:973*/ +#line 18967 "tex.w" +; +/*974:*/ +#line 18999 "tex.w" + +if(pi<inf_penalty) +{/*975:*/ +#line 19013 "tex.w" + +if(cur_height<h) +if((active_height[3]!=0)||(active_height[4]!=0)|| +(active_height[5]!=0))b= 0; +else b= badness(h-cur_height,active_height[2]); +else if(cur_height-h> active_height[6])b= awful_bad; +else b= badness(cur_height-h,active_height[6]) + +/*:975*/ +#line 19001 "tex.w" +; +if(b<awful_bad) +if(pi<=eject_penalty)b= pi; +else if(b<inf_bad)b= b+pi; +else b= deplorable; +if(b<=least_cost) +{best_place= p;least_cost= b; +best_height_plus_depth= cur_height+prev_dp; +} +if((b==awful_bad)||(pi<=eject_penalty))goto done; +} + +/*:974*/ +#line 18969 "tex.w" +; +if((type(p)<glue_node)||(type(p)> kern_node))goto not_found; +update_heights:/*976:*/ +#line 19025 "tex.w" + +if(type(p)==kern_node)q= p; +else{q= glue_ptr(p); +active_height[2+stretch_order(q)]= +active_height[2+stretch_order(q)]+stretch(q); +active_height[6]= active_height[6]+shrink(q); +if((shrink_order(q)!=normal)&&(shrink(q)!=0)) +{ +print_err("Infinite glue shrinkage found in box being split"); + +help4("The box you are \\vsplitting contains some infinitely") +("shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.") +("Such glue doesn't belong there; but you can safely proceed,") +("since the offensive shrinkability has been made finite."); +error();r= new_spec(q);shrink_order(r)= normal;delete_glue_ref(q); +glue_ptr(p)= r;q= r; +} +} +cur_height= cur_height+prev_dp+width(q);prev_dp= 0 + +/*:976*/ +#line 18972 "tex.w" +; +not_found:if(prev_dp> d) +{cur_height= cur_height+prev_dp-d; +prev_dp= d; +} + +/*:972*/ +#line 18945 "tex.w" +; +prev_p= p;p= link(prev_p); +} +done:return best_place; +} + +/*:970*//*977:*/ +#line 19060 "tex.w" +pointer vsplit(eight_bits n,scaled h) + +{ +pointer v; +pointer p; +pointer q; +v= box(n); +if(split_first_mark!=null) +{delete_token_ref(split_first_mark);split_first_mark= null; +delete_token_ref(split_bot_mark);split_bot_mark= null; +} +/*978:*/ +#line 19081 "tex.w" + +if(v==null) +{return null; +} +if(type(v)!=vlist_node) +{print_err("");print_esc(/*1687:*/ +#line 25957 "tex.w" +562 +/*:1687*/ +#line 19086 "tex.w" +);print_str(" needs a "); +print_esc(/*1688:*/ +#line 25960 "tex.w" +563 +/*:1688*/ +#line 19087 "tex.w" +); + +help2("The box you are trying to split is an \\hbox.") +("I can't split such a box, so I'll leave it alone."); +error();return null; +} + +/*:978*/ +#line 19071 "tex.w" +; +q= vert_break(list_ptr(v),h,split_max_depth); +/*979:*/ +#line 19097 "tex.w" + +p= list_ptr(v); +if(p==q)list_ptr(v)= null; +else loop{if(type(p)==mark_node) +if(split_first_mark==null) +{split_first_mark= mark_ptr(p); +split_bot_mark= split_first_mark; +token_ref_count(split_first_mark)= +token_ref_count(split_first_mark)+2; +} +else{delete_token_ref(split_bot_mark); +split_bot_mark= mark_ptr(p); +add_token_ref(split_bot_mark); +} +if(link(p)==q) +{link(p)= null;goto done; +} +p= link(p); +} +done: + +/*:979*/ +#line 19074 "tex.w" +; +q= prune_page_top(q);p= list_ptr(v);free_node(v,box_node_size); +if(q==null)box(n)= null; +else box(n)= vpack(q,natural); +return vpackage(p,h,exactly,split_max_depth); +} + +/*:977*//*985:*/ +#line 19285 "tex.w" +void print_totals(void) +{print_scaled(page_total); +print_plus(2)(""); +print_plus(3)("fil"); +print_plus(4)("fill"); +print_plus(5)("filll"); +if(page_shrink!=0) +{print_str(" minus ");print_scaled(page_shrink); +} +} + +/*:985*//*987:*/ +#line 19331 "tex.w" +void freeze_page_specs(small_number s) +{page_contents= s; +page_goal= vsize;page_max_depth= max_depth; +page_depth= 0;do_all_six(set_page_so_far_zero); +least_page_cost= awful_bad; +#ifdef STAT +if(tracing_pages> 0) +{begin_diagnostic(); +print_nl("%% goal height=");print_scaled(page_goal); + +print_str(", max depth=");print_scaled(page_max_depth); +end_diagnostic(false); +} +#endif + +} + +/*:987*//*992:*/ +#line 19398 "tex.w" +void box_error(eight_bits n) +{error();begin_diagnostic(); +print_nl("The following box has been deleted:"); + +show_box(box(n));end_diagnostic(true); +flush_node_list(box(n));box(n)= null; +} + +/*:992*//*993:*/ +#line 19409 "tex.w" +void ensure_vbox(eight_bits n) +{pointer p; +p= box(n); +if(p!=null)if(type(p)==hlist_node) +{print_err("Insertions can only be added to a vbox"); + +help3("Tut tut: You're trying to \\insert into a") +("\\box register that now contains an \\hbox.") +("Proceed, and I'll discard its present contents."); +box_error(n); +} +} + +/*:993*//*994:*/ +#line 19428 "tex.w" +/*1012:*/ +#line 19723 "tex.w" + +void fire_up(pointer c) +{ +pointer p,q,r,s; +pointer prev_p; +uint8_t n; +bool wait; +int save_vbadness; +scaled save_vfuzz; +pointer save_split_top_skip; +/*1013:*/ +#line 19752 "tex.w" + +if(type(best_page_break)==penalty_node) +{geq_word_define(int_base+output_penalty_code,penalty(best_page_break)); +penalty(best_page_break)= inf_penalty; +} +else geq_word_define(int_base+output_penalty_code,inf_penalty) + +/*:1013*/ +#line 19733 "tex.w" +; +if(bot_mark!=null) +{if(top_mark!=null)delete_token_ref(top_mark); +top_mark= bot_mark;add_token_ref(top_mark); +delete_token_ref(first_mark);first_mark= null; +} +/*1014:*/ +#line 19764 "tex.w" + +if(c==best_page_break)best_page_break= null; +/*1015:*/ +#line 19786 "tex.w" + +if(box(255)!=null) +{print_err("");print_esc(/*1437:*/ +#line 25207 "tex.w" +312 +/*:1437*/ +#line 19788 "tex.w" +);print_str("255 is not void"); + +help2("You shouldn't use \\box255 except in \\output routines.") +("Proceed, and I'll discard its present contents."); +box_error(255); +} + +/*:1015*/ +#line 19766 "tex.w" +; +insert_penalties= 0; +save_split_top_skip= split_top_skip; +if(holding_inserts<=0) +/*1018:*/ +#line 19840 "tex.w" + +{r= link(page_ins_head); +while(r!=page_ins_head) +{if(best_ins_ptr(r)!=null) +{n= qo(subtype(r));ensure_vbox(n); +if(box(n)==null)box(n)= new_null_box(); +p= box(n)+list_offset; +while(link(p)!=null)p= link(p); +last_ins_ptr(r)= p; +} +r= link(r); +} +} + +/*:1018*/ +#line 19770 "tex.w" +; +q= hold_head;link(q)= null;prev_p= page_head;p= link(prev_p); +while(p!=best_page_break) +{if(type(p)==ins_node) +{if(holding_inserts<=0) +/*1020:*/ +#line 19866 "tex.w" + +{r= link(page_ins_head); +while(subtype(r)!=subtype(p))r= link(r); +if(best_ins_ptr(r)==null)wait= true; +else{wait= false;s= last_ins_ptr(r);link(s)= ins_ptr(p); +if(best_ins_ptr(r)==p) +/*1021:*/ +#line 19882 "tex.w" + +{if(type(r)==split_up) +if((broken_ins(r)==p)&&(broken_ptr(r)!=null)) +{while(link(s)!=broken_ptr(r))s= link(s); +link(s)= null; +split_top_skip= split_top_ptr(p); +ins_ptr(p)= prune_page_top(broken_ptr(r)); +if(ins_ptr(p)!=null) +{temp_ptr= vpack(ins_ptr(p),natural); +height(p)= height(temp_ptr)+depth(temp_ptr); +free_node(temp_ptr,box_node_size);wait= true; +} +} +best_ins_ptr(r)= null; +n= qo(subtype(r)); +temp_ptr= list_ptr(box(n)); +free_node(box(n),box_node_size); +box(n)= vpack(temp_ptr,natural); +} + +/*:1021*/ +#line 19873 "tex.w" + +else{while(link(s)!=null)s= link(s); +last_ins_ptr(r)= s; +} +} +/*1022:*/ +#line 19902 "tex.w" + +link(prev_p)= link(p);link(p)= null; +if(wait) +{link(q)= p;q= p;incr(insert_penalties); +} +else{delete_glue_ref(split_top_ptr(p)); +free_node(p,ins_node_size); +} +p= prev_p + +/*:1022*/ +#line 19879 "tex.w" +; +} + +/*:1020*/ +#line 19776 "tex.w" +; +} +else if(type(p)==mark_node)/*1016:*/ +#line 19795 "tex.w" + +{if(first_mark==null) +{first_mark= mark_ptr(p); +add_token_ref(first_mark); +} +if(bot_mark!=null)delete_token_ref(bot_mark); +bot_mark= mark_ptr(p);add_token_ref(bot_mark); +} + +/*:1016*/ +#line 19778 "tex.w" +; +prev_p= p;p= link(prev_p); +} +split_top_skip= save_split_top_skip; +/*1017:*/ +#line 19815 "tex.w" + +if(p!=null) +{if(link(contrib_head)==null) +if(nest_ptr==0)tail= page_tail; +else contrib_tail= page_tail; +link(page_tail)= link(contrib_head); +link(contrib_head)= p; +link(prev_p)= null; +} +save_vbadness= vbadness;vbadness= inf_bad; +save_vfuzz= vfuzz;vfuzz= max_dimen; +box(255)= vpackage(link(page_head),best_size,exactly,page_max_depth); +vbadness= save_vbadness;vfuzz= save_vfuzz; +if(last_glue!=max_halfword)delete_glue_ref(last_glue); +/*991:*/ +#line 19388 "tex.w" + +page_contents= empty;page_tail= page_head;link(page_head)= null; +last_glue= max_halfword;last_penalty= 0;last_kern= 0; +page_depth= 0;page_max_depth= 0 + +/*:991*/ +#line 19829 "tex.w" +; +if(q!=hold_head) +{link(page_head)= link(hold_head);page_tail= q; +} + +/*:1017*/ +#line 19783 "tex.w" +; +/*1019:*/ +#line 19854 "tex.w" + +r= link(page_ins_head); +while(r!=page_ins_head) +{q= link(r);free_node(r,page_ins_node_size);r= q; +} +link(page_ins_head)= page_ins_head + +/*:1019*/ +#line 19784 "tex.w" + + +/*:1014*/ +#line 19741 "tex.w" +; +if((top_mark!=null)&&(first_mark==null)) +{first_mark= top_mark;add_token_ref(top_mark); +} +if(output_routine!=null) +if(dead_cycles>=max_dead_cycles) +/*1024:*/ +#line 19927 "tex.w" + +{print_err("Output loop---");print_int(dead_cycles); + +print_str(" consecutive dead cycles"); +help3("I've concluded that your \\output is awry; it never does a") +("\\shipout, so I'm shipping \\box255 out myself. Next time") +("increase \\maxdeadcycles if you want me to be more patient!");error(); +} + +/*:1024*/ +#line 19747 "tex.w" + +else/*1025:*/ +#line 19936 "tex.w" + +{output_active= true; +incr(dead_cycles); +push_nest();mode= -vmode;prev_depth= ignore_depth;mode_line= -line; +begin_token_list(output_routine,output_text); +new_save_level(output_group);normal_paragraph(); +scan_left_brace(); +return; +} + +/*:1025*/ +#line 19748 "tex.w" +; +/*1023:*/ +#line 19916 "tex.w" + +{if(link(page_head)!=null) +{if(link(contrib_head)==null) +if(nest_ptr==0)tail= page_tail;else contrib_tail= page_tail; +else link(page_tail)= link(contrib_head); +link(contrib_head)= link(page_head); +link(page_head)= null;page_tail= page_head; +} +ship_out(box(255));box(255)= null; +} + +/*:1023*/ +#line 19749 "tex.w" +; +} + +/*:1012*/ +#line 19428 "tex.w" + +void build_page(void) +{ +pointer p; +pointer q,r; +int b,c; +int pi; +uint8_t n; +scaled delta,h,w; +if((link(contrib_head)==null)||output_active)return; +do{resume:p= link(contrib_head); +/*996:*/ +#line 19453 "tex.w" + +if(last_glue!=max_halfword)delete_glue_ref(last_glue); +last_penalty= 0;last_kern= 0; +if(type(p)==glue_node) +{last_glue= glue_ptr(p);add_glue_ref(last_glue); +} +else{last_glue= max_halfword; +if(type(p)==penalty_node)last_penalty= penalty(p); +else if(type(p)==kern_node)last_kern= width(p); +} + +/*:996*/ +#line 19439 "tex.w" +; +/*997:*/ +#line 19470 "tex.w" + +/*1000:*/ +#line 19498 "tex.w" + +switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:if(page_contents<box_there) +/*1001:*/ +#line 19519 "tex.w" + +{if(page_contents==empty)freeze_page_specs(box_there); +else page_contents= box_there; +q= new_skip_param(top_skip_code); +if(width(temp_ptr)> height(p))width(temp_ptr)= width(temp_ptr)-height(p); +else width(temp_ptr)= 0; +link(q)= p;link(contrib_head)= q;goto resume; +} + +/*:1001*/ +#line 19502 "tex.w" + +else/*1002:*/ +#line 19528 "tex.w" + +{page_total= page_total+page_depth+height(p); +page_depth= depth(p); +goto contribute; +} + +/*:1002*/ +#line 19503 "tex.w" +break; +case whatsit_node:/*1364:*/ +#line 24808 "tex.w" + +goto contribute + +/*:1364*/ +#line 19504 "tex.w" +; +case glue_node:if(page_contents<box_there)goto done1; +else if(precedes_break(page_tail))pi= 0; +else goto update_heights;break; +case kern_node:if(page_contents<box_there)goto done1; +else if(link(p)==null)return; +else if(type(link(p))==glue_node)pi= 0; +else goto update_heights;break; +case penalty_node:if(page_contents<box_there)goto done1;else pi= penalty(p);break; +case mark_node:goto contribute; +case ins_node:/*1008:*/ +#line 19615 "tex.w" + +{if(page_contents==empty)freeze_page_specs(inserts_only); +n= subtype(p);r= page_ins_head; +while(n>=subtype(link(r)))r= link(r); +n= qo(n); +if(subtype(r)!=qi(n)) +/*1009:*/ +#line 19643 "tex.w" + +{q= get_node(page_ins_node_size);link(q)= link(r);link(r)= q;r= q; +subtype(r)= qi(n);type(r)= inserting;ensure_vbox(n); +if(box(n)==null)height(r)= 0; +else height(r)= height(box(n))+depth(box(n)); +best_ins_ptr(r)= null; +q= skip(n); +if(count(n)==1000)h= height(r); +else h= x_over_n(height(r),1000)*count(n); +page_goal= page_goal-h-width(q); +page_so_far[2+stretch_order(q)]= page_so_far[2+stretch_order(q)]+stretch(q); +page_shrink= page_shrink+shrink(q); +if((shrink_order(q)!=normal)&&(shrink(q)!=0)) +{print_err("Infinite glue shrinkage inserted from ");print_esc(/*1423:*/ +#line 25165 "tex.w" +298 +/*:1423*/ +#line 19656 "tex.w" +); + +print_int(n); +help3("The correction glue for page breaking with insertions") +("must have finite shrinkability. But you may proceed,") +("since the offensive shrinkability has been made finite."); +error(); +} +} + +/*:1009*/ +#line 19622 "tex.w" +; +if(type(r)==split_up)insert_penalties= insert_penalties+float_cost(p); +else{last_ins_ptr(r)= p; +delta= page_goal-page_total-page_depth+page_shrink; + +if(count(n)==1000)h= height(p); +else h= x_over_n(height(p),1000)*count(n); +if(((h<=0)||(h<=delta))&&(height(p)+height(r)<=dimen(n))) +{page_goal= page_goal-h;height(r)= height(r)+height(p); +} +else/*1010:*/ +#line 19676 "tex.w" + +{if(count(n)<=0)w= max_dimen; +else{w= page_goal-page_total-page_depth; +if(count(n)!=1000)w= x_over_n(w,count(n))*1000; +} +if(w> dimen(n)-height(r))w= dimen(n)-height(r); +q= vert_break(ins_ptr(p),w,depth(p)); +height(r)= height(r)+best_height_plus_depth; +#ifdef STAT +if(tracing_pages> 0)/*1011:*/ +#line 19696 "tex.w" + +{begin_diagnostic();print_nl("% split");print_int(n); + +print_str(" to ");print_scaled(w); +print_char(',');print_scaled(best_height_plus_depth); +print_str(" p="); +if(q==null)print_int(eject_penalty); +else if(type(q)==penalty_node)print_int(penalty(q)); +else print_char('0'); +end_diagnostic(false); +} + +/*:1011*/ +#line 19685 "tex.w" +; +#endif + +if(count(n)!=1000) +best_height_plus_depth= x_over_n(best_height_plus_depth,1000)*count(n); +page_goal= page_goal-best_height_plus_depth; +type(r)= split_up;broken_ptr(r)= q;broken_ins(r)= p; +if(q==null)insert_penalties= insert_penalties+eject_penalty; +else if(type(q)==penalty_node)insert_penalties= insert_penalties+penalty(q); +} + +/*:1010*/ +#line 19632 "tex.w" +; +} +goto contribute; +} + +/*:1008*/ +#line 19514 "tex.w" + +default:confusion(/*1697:*/ +#line 25987 "tex.w" +572 +/*:1697*/ +#line 19515 "tex.w" +); + +} + +/*:1000*/ +#line 19474 "tex.w" +; +/*1005:*/ +#line 19562 "tex.w" + +if(pi<inf_penalty) +{/*1007:*/ +#line 19607 "tex.w" + +if(page_total<page_goal) +if((page_so_far[3]!=0)||(page_so_far[4]!=0)|| +(page_so_far[5]!=0))b= 0; +else b= badness(page_goal-page_total,page_so_far[2]); +else if(page_total-page_goal> page_shrink)b= awful_bad; +else b= badness(page_total-page_goal,page_shrink) + +/*:1007*/ +#line 19565 "tex.w" +; +if(b<awful_bad) +if(pi<=eject_penalty)c= pi; +else if(b<inf_bad)c= b+pi+insert_penalties; +else c= deplorable; +else c= b; +if(insert_penalties>=10000)c= awful_bad; + +#ifdef STAT +if(tracing_pages> 0)/*1006:*/ +#line 19593 "tex.w" + +{begin_diagnostic();print_nl("%"); +print_str(" t=");print_totals(); +print_str(" g=");print_scaled(page_goal); +print_str(" b="); +if(b==awful_bad)print_char('*');else print_int(b); + +print_str(" p=");print_int(pi); +print_str(" c="); +if(c==awful_bad)print_char('*');else print_int(c); +if(c<=least_page_cost)print_char('#'); +end_diagnostic(false); +} + +/*:1006*/ +#line 19574 "tex.w" +; +#endif + +if(c<=least_page_cost) +{best_page_break= p;best_size= page_goal; +least_page_cost= c; +r= link(page_ins_head); +while(r!=page_ins_head) +{best_ins_ptr(r)= last_ins_ptr(r); +r= link(r); +} +} +if((c==awful_bad)||(pi<=eject_penalty)) +{fire_up(p); +if(output_active)return; +goto done; +} +} + +/*:1005*/ +#line 19477 "tex.w" +; +if((type(p)<glue_node)||(type(p)> kern_node))goto contribute; +update_heights:/*1004:*/ +#line 19541 "tex.w" + +if(type(p)==kern_node)q= p; +else{q= glue_ptr(p); +page_so_far[2+stretch_order(q)]= +page_so_far[2+stretch_order(q)]+stretch(q); +page_shrink= page_shrink+shrink(q); +if((shrink_order(q)!=normal)&&(shrink(q)!=0)) +{ +print_err("Infinite glue shrinkage found on current page"); + +help4("The page about to be output contains some infinitely") +("shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.") +("Such glue doesn't belong there; but you can safely proceed,") +("since the offensive shrinkability has been made finite."); +error(); +r= new_spec(q);shrink_order(r)= normal;delete_glue_ref(q); +glue_ptr(p)= r;q= r; +} +} +page_total= page_total+page_depth+width(q);page_depth= 0 + +/*:1004*/ +#line 19480 "tex.w" +; +contribute:/*1003:*/ +#line 19534 "tex.w" + +if(page_depth> page_max_depth) +{page_total= +page_total+page_depth-page_max_depth; +page_depth= page_max_depth; +} + +/*:1003*/ +#line 19481 "tex.w" +; +/*998:*/ +#line 19486 "tex.w" + +link(page_tail)= p;page_tail= p; +link(contrib_head)= link(p);link(p)= null;goto done + +/*:998*/ +#line 19482 "tex.w" +; +done1:/*999:*/ +#line 19490 "tex.w" + +link(contrib_head)= link(p);link(p)= null;flush_node_list(p) + +/*:999*/ +#line 19483 "tex.w" +; +done: + +/*:997*/ +#line 19442 "tex.w" +; +}while(!(link(contrib_head)==null)); +/*995:*/ +#line 19449 "tex.w" + +if(nest_ptr==0)tail= contrib_head; +else contrib_tail= contrib_head + +/*:995*/ +#line 19444 "tex.w" +; +} + +/*:994*//*1030:*/ +#line 20035 "tex.w" +/*1043:*/ +#line 20361 "tex.w" + +void app_space(void) +{pointer q; +if((space_factor>=2000)&&(xspace_skip!=zero_glue)) +q= new_param_glue(xspace_skip_code); +else{if(space_skip!=zero_glue)main_p= space_skip; +else/*1042:*/ +#line 20350 "tex.w" + +{main_p= font_glue[cur_font]; +if(main_p==null) +{main_p= new_spec(zero_glue);main_k= param_base[cur_font]+space_code; +width(main_p)= font_info[main_k].sc; +stretch(main_p)= font_info[main_k+1].sc; +shrink(main_p)= font_info[main_k+2].sc; +font_glue[cur_font]= main_p; +} +} + +/*:1042*/ +#line 20367 "tex.w" +; +main_p= new_spec(main_p); +/*1044:*/ +#line 20375 "tex.w" + +if(space_factor>=2000)width(main_p)= width(main_p)+extra_space(cur_font); +stretch(main_p)= xn_over_d(stretch(main_p),space_factor,1000); +shrink(main_p)= xn_over_d(shrink(main_p),1000,space_factor) + +/*:1044*/ +#line 20369 "tex.w" +; +q= new_glue(main_p);glue_ref_count(main_p)= null; +} +link(tail)= q;tail= q; +} + +/*:1043*//*1047:*/ +#line 20413 "tex.w" + +void insert_dollar_sign(void) +{back_input();cur_tok= math_shift_token+'$'; +print_err("Missing $ inserted"); + +help2("I've inserted a begin-math/end-math symbol since I think") +("you left one out. Proceed, with fingers crossed.");ins_error(); +} + +/*:1047*//*1049:*/ +#line 20438 "tex.w" + +void you_cant(void) +{print_err("You can't use `"); + +print_cmd_chr(cur_cmd,cur_chr); +print_str("' in ");print_mode(mode); +} + +/*:1049*//*1050:*/ +#line 20446 "tex.w" + +void report_illegal_case(void) +{you_cant(); +help4("Sorry, but I'm not programmed to handle this case;") +("I'll just pretend that you didn't ask for it.") +("If you're in the wrong mode, you might be able to") +("return to the right one by typing `I}' or `I$' or `I\\par'."); +error(); +} + +/*:1050*//*1051:*/ +#line 20461 "tex.w" + +bool privileged(void) +{if(mode> 0)return true; +else{report_illegal_case();return false; +} +} + +/*:1051*//*1054:*/ +#line 20488 "tex.w" + +bool its_all_over(void) +{ +if(privileged()) +{if((page_head==page_tail)&&(head==tail)&&(dead_cycles==0)) +{return true; +} +back_input(); +tail_append(new_null_box()); +width(tail)= hsize; +tail_append(new_glue(fill_glue)); +tail_append(new_penalty(-010000000000)); +build_page(); +} +return false; +} + +/*:1054*//*1060:*/ +#line 20598 "tex.w" + +void append_glue(void) +{small_number s; +s= cur_chr; +switch(s){ +case fil_code:cur_val= fil_glue;break; +case fill_code:cur_val= fill_glue;break; +case ss_code:cur_val= ss_glue;break; +case fil_neg_code:cur_val= fil_neg_glue;break; +case skip_code:scan_glue(glue_val);break; +case mskip_code:scan_glue(mu_val); +} +tail_append(new_glue(cur_val)); +if(s>=skip_code) +{decr(glue_ref_count(cur_val)); +if(s> skip_code)subtype(tail)= mu_glue; +} +} + +/*:1060*//*1061:*/ +#line 20617 "tex.w" + +void append_kern(void) +{quarterword s; +s= cur_chr;scan_dimen(s==mu_glue,false,false); +tail_append(new_kern(cur_val));subtype(tail)= s; +} + +/*:1061*//*1064:*/ +#line 20661 "tex.w" + +void off_save(void) +{pointer p; +if(cur_group==bottom_level) +/*1066:*/ +#line 20700 "tex.w" + +{print_err("Extra ");print_cmd_chr(cur_cmd,cur_chr); + +help1("Things are pretty mixed up, but I think the worst is over."); +error(); +} + +/*:1066*/ +#line 20665 "tex.w" + +else{back_input();p= get_avail();link(temp_head)= p; +print_err("Missing "); +/*1065:*/ +#line 20681 "tex.w" + +switch(cur_group){ +case semi_simple_group:{info(p)= cs_token_flag+frozen_end_group; +print_esc(/*1538:*/ +#line 25510 "tex.w" +413 +/*:1538*/ +#line 20684 "tex.w" +); + +}break; +case math_shift_group:{info(p)= math_shift_token+'$';print_char('$'); + +}break; +case math_left_group:{info(p)= cs_token_flag+frozen_right;link(p)= get_avail(); +p= link(p);info(p)= other_token+'.';print_esc(/*1710:*/ +#line 26026 "tex.w" +585 +/*:1710*/ +#line 20691 "tex.w" +); + + +}break; +default:{info(p)= right_brace_token+'}';print_char('}'); + +} +} + +/*:1065*/ +#line 20668 "tex.w" +; +print_str(" inserted");ins_list(link(temp_head)); +help5("I've inserted something that you may have forgotten.") +("(See the <inserted text> above.)") +("With luck, this will get me unwedged. But if you") +("really didn't forget anything, try typing `2' now; then") +("my insertion and my current dilemma will both disappear."); +error(); +} +} + +/*:1064*//*1069:*/ +#line 20736 "tex.w" + +void extra_right_brace(void) +{print_err("Extra }, or forgotten "); + +switch(cur_group){ +case semi_simple_group:print_esc(/*1538:*/ +#line 25510 "tex.w" +413 +/*:1538*/ +#line 20741 "tex.w" +);break; +case math_shift_group:print_char('$');break; +case math_left_group:print_esc(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 20743 "tex.w" +); +} +help5("I've deleted a group-closing symbol because it seems to be") +("spurious, as in `$x}$'. But perhaps the } is legitimate and") +("you forgot something else, as in `\\hbox{$x}'. In such cases") +("the way to recover is to insert both the forgotten and the") +("deleted material, e.g., by typing `I$}'.");error(); +incr(align_state); +} + +/*:1069*//*1070:*/ +#line 20756 "tex.w" + +void normal_paragraph(void) +{if(looseness!=0)eq_word_define(int_base+looseness_code,0); +if(hang_indent!=0)eq_word_define(dimen_base+hang_indent_code,0); +if(hang_after!=1)eq_word_define(int_base+hang_after_code,1); +if(par_shape_ptr!=null)eq_define(par_shape_loc,shape_ref,null); +} + +/*:1070*//*1075:*/ +#line 20877 "tex.w" + +void box_end(int box_context) +{pointer p; +if(box_context<box_flag)/*1076:*/ +#line 20892 "tex.w" + +{if(cur_box!=null) +{shift_amount(cur_box)= box_context; +if(abs(mode)==vmode) +{append_to_vlist(cur_box); +if(adjust_tail!=null) +{if(adjust_head!=adjust_tail) +{link(tail)= link(adjust_head);tail= adjust_tail; +} +adjust_tail= null; +} +if(mode> 0)build_page(); +} +else{if(abs(mode)==hmode)space_factor= 1000; +else{p= new_noad(); +math_type(nucleus(p))= sub_box; +info(nucleus(p))= cur_box;cur_box= p; +} +link(tail)= cur_box;tail= cur_box; +} +} +} + +/*:1076*/ +#line 20881 "tex.w" + +else if(box_context<ship_out_flag)/*1077:*/ +#line 20915 "tex.w" + +if(box_context<box_flag+256) +eq_define(box_base-box_flag+box_context,box_ref,cur_box); +else geq_define(box_base-box_flag-256+box_context,box_ref,cur_box) + +/*:1077*/ +#line 20882 "tex.w" +; +else if(cur_box!=null) +if(box_context> ship_out_flag)/*1078:*/ +#line 20920 "tex.w" + +{/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 20921 "tex.w" +; +if(((cur_cmd==hskip)&&(abs(mode)!=vmode))|| +((cur_cmd==vskip)&&(abs(mode)==vmode))) +{append_glue();subtype(tail)= box_context-(leader_flag-a_leaders); +leader_ptr(tail)= cur_box; +} +else{print_err("Leaders not followed by proper glue"); + +help3("You should say `\\leaders <box or rule><hskip or vskip>'.") +("I found the <box or rule>, but there's no suitable") +("<hskip or vskip>, so I'm ignoring these leaders.");back_error(); +flush_node_list(cur_box); +} +} + +/*:1078*/ +#line 20884 "tex.w" + +else ship_out(cur_box); +} + +/*:1075*//*1079:*/ +#line 20941 "tex.w" + +void begin_box(int box_context) +{ +pointer p,q; +int m; +halfword k; +eight_bits n; +switch(cur_chr){ +case box_code:{scan_eight_bit_int();cur_box= box(cur_val); +box(cur_val)= null; +}break; +case copy_code:{scan_eight_bit_int();cur_box= copy_node_list(box(cur_val)); +}break; +case last_box_code:/*1080:*/ +#line 20965 "tex.w" + +{cur_box= null; +if(abs(mode)==mmode) +{you_cant();help1("Sorry; this \\lastbox will be void.");error(); +} +else if((mode==vmode)&&(head==tail)) +{you_cant(); +help2("Sorry...I usually can't take things from the current page.") +("This \\lastbox will therefore be void.");error(); +} +else{if(!is_char_node(tail)) +if((type(tail)==hlist_node)||(type(tail)==vlist_node)) +/*1081:*/ +#line 20981 "tex.w" + +{q= head; +do{p= q; +if(!is_char_node(q))if(type(q)==disc_node) +{for(m= 1;m<=replace_count(q);m++)p= link(p); +if(p==tail)goto done; +} +q= link(p); +}while(!(q==tail)); +cur_box= tail;shift_amount(cur_box)= 0; +tail= p;link(p)= null; +done:;} + +/*:1081*/ +#line 20977 "tex.w" +; +} +} + +/*:1080*/ +#line 20955 "tex.w" +break; +case vsplit_code:/*1082:*/ +#line 20996 "tex.w" + +{scan_eight_bit_int();n= cur_val; +if(!scan_keyword(/*1642:*/ +#line 25822 "tex.w" +517 +/*:1642*/ +#line 20998 "tex.w" +)) + +{print_err("Missing `to' inserted"); + +help2("I'm working on `\\vsplit<box number> to <dimen>';") +("will look for the <dimen> next.");error(); +} +scan_normal_dimen; +cur_box= vsplit(n,cur_val); +} + +/*:1082*/ +#line 20956 "tex.w" +break; +default:/*1083:*/ +#line 21012 "tex.w" + +{k= cur_chr-vtop_code;saved(0)= box_context; +if(k==hmode) +if((box_context<box_flag)&&(abs(mode)==vmode)) +scan_spec(adjusted_hbox_group,true); +else scan_spec(hbox_group,true); +else{if(k==vmode)scan_spec(vbox_group,true); +else{scan_spec(vtop_group,true);k= vmode; +} +normal_paragraph(); +} +push_nest();mode= -k; +if(k==vmode) +{prev_depth= ignore_depth; +if(every_vbox!=null)begin_token_list(every_vbox,every_vbox_text); +} +else{space_factor= 1000; +if(every_hbox!=null)begin_token_list(every_hbox,every_hbox_text); +} +return; +} + +/*:1083*/ +#line 20957 "tex.w" + +} +box_end(box_context); +} + +/*:1079*//*1084:*/ +#line 21034 "tex.w" + +void scan_box(int box_context) + +{/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 21037 "tex.w" +; +if(cur_cmd==make_box)begin_box(box_context); +else if((box_context>=leader_flag)&&((cur_cmd==hrule)||(cur_cmd==vrule))) +{cur_box= scan_rule_spec();box_end(box_context); +} +else{ +print_err("A <box> was supposed to be here"); + +help3("I was expecting to see \\hbox or \\vbox or \\copy or \\box or") +("something like that. So you might find something missing in") +("your output. But keep trying; you can fix this later.");back_error(); +} +} + +/*:1084*//*1086:*/ +#line 21064 "tex.w" + +void package(small_number c) +{scaled h; +pointer p; +scaled d; +d= box_max_depth;unsave();save_ptr= save_ptr-3; +if(mode==-hmode)cur_box= hpack(link(head),saved(2),saved(1)); +else{cur_box= vpackage(link(head),saved(2),saved(1),d); +if(c==vtop_code)/*1087:*/ +#line 21082 "tex.w" + +{h= 0;p= list_ptr(cur_box); +if(p!=null)if(type(p)<=rule_node)h= height(p); +depth(cur_box)= depth(cur_box)-h+height(cur_box);height(cur_box)= h; +} + +/*:1087*/ +#line 21072 "tex.w" +; +} +pop_nest();box_end(saved(0)); +} + +/*:1086*//*1091:*/ +#line 21110 "tex.w" + +small_number norm_min(int h) +{if(h<=0)return 1;else if(h>=63)return 63; +else return h; +} + +void new_graf(bool indented) +{prev_graf= 0; +if((mode==vmode)||(head!=tail)) +tail_append(new_param_glue(par_skip_code)); +push_nest();mode= hmode;space_factor= 1000;set_cur_lang;clang= cur_lang; +prev_graf= (norm_min(left_hyphen_min)*0100+norm_min(right_hyphen_min)) +*0200000+cur_lang; +if(indented) +{tail= new_null_box();link(head)= tail;width(tail)= par_indent; +} +if(every_par!=null)begin_token_list(every_par,every_par_text); +if(nest_ptr==1)build_page(); +} + +/*:1091*//*1093:*/ +#line 21133 "tex.w" + +void indent_in_hmode(void) +{pointer p,q; +if(cur_chr> 0) +{p= new_null_box();width(p)= par_indent; +if(abs(mode)==hmode)space_factor= 1000; +else{q= new_noad();math_type(nucleus(q))= sub_box; +info(nucleus(q))= p;p= q; +} +tail_append(p); +} +} + +/*:1093*//*1095:*/ +#line 21161 "tex.w" + +void head_for_vmode(void) +{if(mode<0) +if(cur_cmd!=hrule)off_save(); +else{print_err("You can't use `"); +print_esc(/*1543:*/ +#line 25525 "tex.w" +418 +/*:1543*/ +#line 21166 "tex.w" +);print_str("' here except with leaders"); + +help2("To put a horizontal rule in an hbox or an alignment,") +("you should use \\leaders or \\hrulefill (see The TeXbook)."); +error(); +} +else{back_input();cur_tok= par_token;back_input();token_type= inserted; +} +} + +/*:1095*//*1096:*/ +#line 21176 "tex.w" + +void end_graf(void) +{if(mode==hmode) +{if(head==tail)pop_nest(); +else line_break(widow_penalty); +normal_paragraph(); +error_count= 0; +} +} + +/*:1096*//*1099:*/ +#line 21196 "tex.w" + +void begin_insert_or_adjust(void) +{if(cur_cmd==vadjust)cur_val= 255; +else{scan_eight_bit_int(); +if(cur_val==255) +{print_err("You can't ");print_esc(/*1390:*/ +#line 25066 "tex.w" +265 +/*:1390*/ +#line 21201 "tex.w" +);print_int(255); + +help1("I'm changing to \\insert0; box 255 is special."); +error();cur_val= 0; +} +} +saved(0)= cur_val;incr(save_ptr); +new_save_level(insert_group);scan_left_brace();normal_paragraph(); +push_nest();mode= -vmode;prev_depth= ignore_depth; +} + +/*:1099*//*1101:*/ +#line 21233 "tex.w" + +void make_mark(void) +{pointer p; +p= scan_toks(false,true);p= get_node(small_node_size); +type(p)= mark_node;subtype(p)= 0; +mark_ptr(p)= def_ref;link(tail)= p;tail= p; +} + +/*:1101*//*1103:*/ +#line 21247 "tex.w" + +void append_penalty(void) +{scan_int();tail_append(new_penalty(cur_val)); +if(mode==vmode)build_page(); +} + +/*:1103*//*1105:*/ +#line 21266 "tex.w" + +void delete_last(void) +{ +pointer p,q; +int m; +if((mode==vmode)&&(tail==head)) +/*1106:*/ +#line 21287 "tex.w" + +{if((cur_chr!=glue_node)||(last_glue!=max_halfword)) +{you_cant(); +help2("Sorry...I usually can't take things from the current page.") +("Try `I\\vskip-\\lastskip' instead."); +if(cur_chr==kern_node)help_line[0]= +("Try `I\\kern-\\lastkern' instead."); +else if(cur_chr!=glue_node)help_line[0]= +("Perhaps you can make the output routine do it."); +error(); +} +} + +/*:1106*/ +#line 21272 "tex.w" + +else{if(!is_char_node(tail))if(type(tail)==cur_chr) +{q= head; +do{p= q; +if(!is_char_node(q))if(type(q)==disc_node) +{for(m= 1;m<=replace_count(q);m++)p= link(p); +if(p==tail)return; +} +q= link(p); +}while(!(q==tail)); +link(p)= null;flush_node_list(tail);tail= p; +} +} +} + +/*:1105*//*1110:*/ +#line 21330 "tex.w" + +void unpackage(void) +{ +pointer p; +uint8_t c; +c= cur_chr;scan_eight_bit_int();p= box(cur_val); +if(p==null)return; +if((abs(mode)==mmode)||((abs(mode)==vmode)&&(type(p)!=vlist_node))|| +((abs(mode)==hmode)&&(type(p)!=hlist_node))) +{print_err("Incompatible list can't be unboxed"); + +help3("Sorry, Pandora. (You sneaky devil.)") +("I refuse to unbox an \\hbox in vertical mode or vice versa.") +("And I can't open any boxes in math mode."); +error();return; +} +if(c==copy_code)link(tail)= copy_node_list(list_ptr(p)); +else{link(tail)= list_ptr(p);box(cur_val)= null; +free_node(p,box_node_size); +} +while(link(tail)!=null)tail= link(tail); +} + +/*:1110*//*1113:*/ +#line 21363 "tex.w" + +void append_italic_correction(void) +{ +pointer p; +internal_font_number f; +if(tail!=head) +{if(is_char_node(tail))p= tail; +else if(type(tail)==ligature_node)p= lig_char(tail); +else return; +f= font(p); +tail_append(new_kern(char_italic(f)(char_info(f)(character(p))))); +subtype(tail)= explicit; +} +} + +/*:1113*//*1117:*/ +#line 21397 "tex.w" + +void append_discretionary(void) +{int c; +tail_append(new_disc()); +if(cur_chr==1) +{c= hyphen_char[cur_font]; +if(c>=0)if(c<256)pre_break(tail)= new_character(cur_font,c); +} +else{incr(save_ptr);saved(-1)= 0;new_save_level(disc_group); +scan_left_brace();push_nest();mode= -hmode;space_factor= 1000; +} +} + +/*:1117*//*1119:*/ +#line 21417 "tex.w" + +void build_discretionary(void) +{ +pointer p,q; +int n; +unsave(); +/*1121:*/ +#line 21459 "tex.w" + +q= head;p= link(q);n= 0; +while(p!=null) +{if(!is_char_node(p))if(type(p)> rule_node) +if(type(p)!=kern_node)if(type(p)!=ligature_node) +{print_err("Improper discretionary list"); + +help1("Discretionary lists must contain only boxes and kerns."); +error(); +begin_diagnostic(); +print_nl("The following discretionary sublist has been deleted:"); + +show_box(p); +end_diagnostic(true); +flush_node_list(p);link(q)= null;goto done; +} +q= p;p= link(q);incr(n); +} +done: + +/*:1121*/ +#line 21425 "tex.w" +; +p= link(head);pop_nest(); +switch(saved(-1)){ +case 0:pre_break(tail)= p;break; +case 1:post_break(tail)= p;break; +case 2:/*1120:*/ +#line 21437 "tex.w" + +{if((n> 0)&&(abs(mode)==mmode)) +{print_err("Illegal math ");print_esc(/*1400:*/ +#line 25096 "tex.w" +275 +/*:1400*/ +#line 21439 "tex.w" +); + +help2("Sorry: The third part of a discretionary break must be") +("empty, in math formulas. I had to delete your third part."); +flush_node_list(p);n= 0;error(); +} +else link(tail)= p; +if(n<=max_quarterword)replace_count(tail)= n; +else{print_err("Discretionary list is too long"); + +help2("Wow---I never thought anybody would tweak me here.") +("You can't seriously need such a huge discretionary list?"); +error(); +} +if(n> 0)tail= q; +decr(save_ptr);return; +} + +/*:1120*/ +#line 21431 "tex.w" +; +} +incr(saved(-1));new_save_level(disc_group);scan_left_brace(); +push_nest();mode= -hmode;space_factor= 1000; +} + +/*:1119*//*1123:*/ +#line 21493 "tex.w" + +void make_accent(void) +{double s,t; +pointer p,q,r; +internal_font_number f; +scaled a,h,x,w,delta; +four_quarters i; +scan_char_num();f= cur_font;p= new_character(f,cur_val); +if(p!=null) +{x= x_height(f);s= slant(f)/float_constant(65536); + +a= char_width(f)(char_info(f)(character(p))); +do_assignments(); +/*1124:*/ +#line 21513 "tex.w" + +q= null;f= cur_font; +if((cur_cmd==letter)||(cur_cmd==other_char)||(cur_cmd==char_given)) +q= new_character(f,cur_chr); +else if(cur_cmd==char_num) +{scan_char_num();q= new_character(f,cur_val); +} +else back_input() + +/*:1124*/ +#line 21507 "tex.w" +; +if(q!=null)/*1125:*/ +#line 21529 "tex.w" + +{t= slant(f)/float_constant(65536); + +i= char_info(f)(character(q)); +w= char_width(f)(i);h= char_height(f)(height_depth(i)); +if(h!=x) +{p= hpack(p,natural);shift_amount(p)= x-h; +} +delta= round((w-a)/float_constant(2)+h*t-x*s); + + +r= new_kern(delta);subtype(r)= acc_kern;link(tail)= r;link(r)= p; +tail= new_kern(-a-delta);subtype(tail)= acc_kern;link(p)= tail;p= q; +} + +/*:1125*/ +#line 21508 "tex.w" +; +link(tail)= p;tail= p;space_factor= 1000; +} +} + +/*:1123*//*1127:*/ +#line 21557 "tex.w" + +void align_error(void) +{if(abs(align_state)> 2) +/*1128:*/ +#line 21577 "tex.w" + +{print_err("Misplaced ");print_cmd_chr(cur_cmd,cur_chr); + + + +if(cur_tok==tab_token+'&') +{help6("I can't figure out why you would want to use a tab mark") +("here. If you just want an ampersand, the remedy is") +("simple: Just type `I\\&' now. But if some right brace") +("up above has ended a previous alignment prematurely,") +("you're probably due for more error messages, and you") +("might try typing `S' now just to see what is salvageable."); +} +else{help5("I can't figure out why you would want to use a tab mark") +("or \\cr or \\span just now. If something like a right brace") +("up above has ended a previous alignment prematurely,") +("you're probably due for more error messages, and you") +("might try typing `S' now just to see what is salvageable."); +} +error(); +} + +/*:1128*/ +#line 21560 "tex.w" + +else{back_input(); +if(align_state<0) +{print_err("Missing { inserted"); + +incr(align_state);cur_tok= left_brace_token+'{'; +} +else{print_err("Missing } inserted"); + +decr(align_state);cur_tok= right_brace_token+'}'; +} +help3("I've put in what seems to be necessary to fix") +("the current column of the current alignment.") +("Try to go on, since this might almost work.");ins_error(); +} +} + +/*:1127*//*1129:*/ +#line 21602 "tex.w" + +void no_align_error(void) +{print_err("Misplaced ");print_esc(/*1549:*/ +#line 25543 "tex.w" +424 +/*:1549*/ +#line 21604 "tex.w" +); + +help2("I expect to see \\noalign only after the \\cr of") +("an alignment. Proceed, and I'll ignore this case.");error(); +} +void omit_error(void) +{print_err("Misplaced ");print_esc(/*1552:*/ +#line 25552 "tex.w" +427 +/*:1552*/ +#line 21610 "tex.w" +); + +help2("I expect to see \\omit only after tab marks or the \\cr of") +("an alignment. Proceed, and I'll ignore this case.");error(); +} + +/*:1129*//*1131:*/ +#line 21632 "tex.w" + +void do_endv(void) +{base_ptr= input_ptr;input_stack[base_ptr]= cur_input; +while((input_stack[base_ptr].index_field!=v_template)&& +(input_stack[base_ptr].loc_field==null)&& +(input_stack[base_ptr].state_field==token_list))decr(base_ptr); +if((input_stack[base_ptr].index_field!=v_template)|| +(input_stack[base_ptr].loc_field!=null)|| +(input_stack[base_ptr].state_field!=token_list)) +fatal_error("(interwoven alignment preambles are not allowed)"); + +if(cur_group==align_group) +{end_graf(); +if(fin_col())fin_row(); +} +else off_save(); +} + +/*:1131*//*1135:*/ +#line 21667 "tex.w" + +void cs_error(void) +{print_err("Extra ");print_esc(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 21669 "tex.w" +); + +help1("I'm ignoring this, since I wasn't doing a \\csname."); +error(); +} + +/*:1135*//*1136:*/ +#line 21685 "tex.w" + +void push_math(group_code c) +{push_nest();mode= -mmode;incompleat_noad= null;new_save_level(c); +} + +/*:1136*//*1138:*/ +#line 21698 "tex.w" + +void init_math(void) +{ +scaled w; +scaled l; +scaled s; +pointer p; +pointer q; +internal_font_number f; +int n; +scaled v; +scaled d; +get_token(); +if((cur_cmd==math_shift)&&(mode> 0))/*1145:*/ +#line 21756 "tex.w" + +{if(head==tail) +{pop_nest();w= -max_dimen; +} +else{line_break(display_widow_penalty); +/*1146:*/ +#line 21776 "tex.w" + +v= shift_amount(just_box)+2*quad(cur_font);w= -max_dimen; +p= list_ptr(just_box); +while(p!=null) +{/*1147:*/ +#line 21793 "tex.w" + +reswitch:if(is_char_node(p)) +{f= font(p);d= char_width(f)(char_info(f)(character(p))); +goto found; +} +switch(type(p)){ +case hlist_node:case vlist_node:case rule_node:{d= width(p);goto found; +} +case ligature_node:/*652:*/ +#line 12994 "tex.w" + +{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p); +p= lig_trick;goto reswitch; +} + +/*:652*/ +#line 21801 "tex.w" + +case kern_node:case math_node:d= width(p);break; +case glue_node:/*1148:*/ +#line 21815 "tex.w" + +{q= glue_ptr(p);d= width(q); +if(glue_sign(just_box)==stretching) +{if((glue_order(just_box)==stretch_order(q))&& +(stretch(q)!=0)) +v= max_dimen; +} +else if(glue_sign(just_box)==shrinking) +{if((glue_order(just_box)==shrink_order(q))&& +(shrink(q)!=0)) +v= max_dimen; +} +if(subtype(p)>=a_leaders)goto found; +} + +/*:1148*/ +#line 21804 "tex.w" +break; +case whatsit_node:/*1361:*/ +#line 24797 "tex.w" +d= 0 + +/*:1361*/ +#line 21805 "tex.w" +;break; +default:d= 0; +} + +/*:1147*/ +#line 21781 "tex.w" +; +if(v<max_dimen)v= v+d; +goto not_found; +found:if(v<max_dimen) +{v= v+d;w= v; +} +else{w= max_dimen;goto done; +} +not_found:p= link(p); +} +done: + +/*:1146*/ +#line 21763 "tex.w" +; +} + +/*1149:*/ +#line 21833 "tex.w" + +if(par_shape_ptr==null) +if((hang_indent!=0)&& +(((hang_after>=0)&&(prev_graf+2> hang_after))|| +(prev_graf+1<-hang_after))) +{l= hsize-abs(hang_indent); +if(hang_indent> 0)s= hang_indent;else s= 0; +} +else{l= hsize;s= 0; +} +else{n= info(par_shape_ptr); +if(prev_graf+2>=n)p= par_shape_ptr+2*n; +else p= par_shape_ptr+2*(prev_graf+2); +s= mem[p-1].sc;l= mem[p].sc; +} + +/*:1149*/ +#line 21766 "tex.w" +; +push_math(math_shift_group);mode= mmode; +eq_word_define(int_base+cur_fam_code,-1); +eq_word_define(dimen_base+pre_display_size_code,w); +eq_word_define(dimen_base+display_width_code,l); +eq_word_define(dimen_base+display_indent_code,s); +if(every_display!=null)begin_token_list(every_display,every_display_text); +if(nest_ptr==1)build_page(); +} + +/*:1145*/ +#line 21711 "tex.w" + +else{back_input();/*1139:*/ +#line 21716 "tex.w" + +{push_math(math_shift_group);eq_word_define(int_base+cur_fam_code,-1); +if(every_math!=null)begin_token_list(every_math,every_math_text); +} + +/*:1139*/ +#line 21712 "tex.w" +; +} +} + +/*:1138*//*1142:*/ +#line 21740 "tex.w" + +void start_eq_no(void) +{saved(0)= cur_chr;incr(save_ptr); +/*1139:*/ +#line 21716 "tex.w" + +{push_math(math_shift_group);eq_word_define(int_base+cur_fam_code,-1); +if(every_math!=null)begin_token_list(every_math,every_math_text); +} + +/*:1139*/ +#line 21743 "tex.w" +; +} + +/*:1142*//*1151:*/ +#line 21877 "tex.w" + +void scan_math(pointer p) +{ +int c; +restart:/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 21881 "tex.w" +; +reswitch:switch(cur_cmd){ +case letter:case other_char:case char_given:{c= ho(math_code(cur_chr)); +if(c==0100000) +{/*1152:*/ +#line 21906 "tex.w" + +{cur_cs= cur_chr+active_base; +cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs); +x_token();back_input(); +} + +/*:1152*/ +#line 21885 "tex.w" +; +goto restart; +} +}break; +case char_num:{scan_char_num();cur_chr= cur_val;cur_cmd= char_given; +goto reswitch; +} +case math_char_num:{scan_fifteen_bit_int();c= cur_val; +}break; +case math_given:c= cur_chr;break; +case delim_num:{scan_twenty_seven_bit_int();c= cur_val/010000; +}break; +default:/*1153:*/ +#line 21915 "tex.w" + +{back_input();scan_left_brace(); +saved(0)= p;incr(save_ptr);push_math(math_group);return; +} + +/*:1153*/ +#line 21897 "tex.w" + +} +math_type(p)= math_char;character(p)= qi(c%256); +if((c>=var_code)&&fam_in_range)fam(p)= cur_fam; +else fam(p)= (c/256)%16; +} + +/*:1151*//*1155:*/ +#line 21945 "tex.w" + +void set_math_char(int c) +{pointer p; +if(c>=0100000) +/*1152:*/ +#line 21906 "tex.w" + +{cur_cs= cur_chr+active_base; +cur_cmd= eq_type(cur_cs);cur_chr= equiv(cur_cs); +x_token();back_input(); +} + +/*:1152*/ +#line 21949 "tex.w" + +else{p= new_noad();math_type(nucleus(p))= math_char; +character(nucleus(p))= qi(c%256); +fam(nucleus(p))= (c/256)%16; +if(c>=var_code) +{if(fam_in_range)fam(nucleus(p))= cur_fam; +type(p)= ord_noad; +} +else type(p)= ord_noad+(c/010000); +link(tail)= p;tail= p; +} +} + +/*:1155*//*1159:*/ +#line 22017 "tex.w" + +void math_limit_switch(void) +{ +if(head!=tail)if(type(tail)==op_noad) +{subtype(tail)= cur_chr;return; +} +print_err("Limit controls must follow a math operator"); + +help1("I'm ignoring this misplaced \\limits or \\nolimits command.");error(); +} + +/*:1159*//*1160:*/ +#line 22033 "tex.w" + +void scan_delimiter(pointer p,bool r) +{if(r)scan_twenty_seven_bit_int(); +else{/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 22036 "tex.w" +; +switch(cur_cmd){ +case letter:case other_char:cur_val= del_code(cur_chr);break; +case delim_num:scan_twenty_seven_bit_int();break; +default:cur_val= -1; +} +} +if(cur_val<0)/*1161:*/ +#line 22051 "tex.w" + +{print_err("Missing delimiter (. inserted)"); + +help6("I was expecting to see something like `(' or `\\{' or") +("`\\}' here. If you typed, e.g., `{' instead of `\\{', you") +("should probably delete the `{' by typing `1' now, so that") +("braces don't get unbalanced. Otherwise just proceed.") +("Acceptable delimiters are characters whose \\delcode is") +("nonnegative, or you can use `\\delimiter <delimiter code>'."); +back_error();cur_val= 0; +} + +/*:1161*/ +#line 22044 "tex.w" +; +small_fam(p)= (cur_val/04000000)%16; +small_char(p)= qi((cur_val/010000)%256); +large_fam(p)= (cur_val/256)%16; +large_char(p)= qi(cur_val%256); +} + +/*:1160*//*1163:*/ +#line 22066 "tex.w" + +void math_radical(void) +{tail_append(get_node(radical_noad_size)); +type(tail)= radical_noad;subtype(tail)= normal; +mem[nucleus(tail)].hh= empty_field; +mem[subscr(tail)].hh= empty_field; +mem[supscr(tail)].hh= empty_field; +scan_delimiter(left_delimiter(tail),true);scan_math(nucleus(tail)); +} + +/*:1163*//*1165:*/ +#line 22079 "tex.w" + +void math_ac(void) +{if(cur_cmd==accent) +/*1166:*/ +#line 22096 "tex.w" + +{print_err("Please use ");print_esc(/*1545:*/ +#line 25531 "tex.w" +420 +/*:1545*/ +#line 22097 "tex.w" +); +print_str(" for accents in math mode"); + +help2("I'm changing \\accent to \\mathaccent here; wish me luck.") +("(Accents are not the same in formulas as they are in text.)"); +error(); +} + +/*:1166*/ +#line 22082 "tex.w" +; +tail_append(get_node(accent_noad_size)); +type(tail)= accent_noad;subtype(tail)= normal; +mem[nucleus(tail)].hh= empty_field; +mem[subscr(tail)].hh= empty_field; +mem[supscr(tail)].hh= empty_field; +math_type(accent_chr(tail))= math_char; +scan_fifteen_bit_int(); +character(accent_chr(tail))= qi(cur_val%256); +if((cur_val>=var_code)&&fam_in_range)fam(accent_chr(tail))= cur_fam; +else fam(accent_chr(tail))= (cur_val/256)%16; +scan_math(nucleus(tail)); +} + +/*:1165*//*1172:*/ +#line 22143 "tex.w" + +void append_choices(void) +{tail_append(new_choice());incr(save_ptr);saved(-1)= 0; +push_math(math_choice_group);scan_left_brace(); +} + +/*:1172*//*1174:*/ +#line 22152 "tex.w" + +/*1184:*/ +#line 22297 "tex.w" + +pointer fin_mlist(pointer p) +{pointer q; +if(incompleat_noad!=null)/*1185:*/ +#line 22306 "tex.w" + +{math_type(denominator(incompleat_noad))= sub_mlist; +info(denominator(incompleat_noad))= link(head); +if(p==null)q= incompleat_noad; +else{q= info(numerator(incompleat_noad)); +if(type(q)!=left_noad)confusion(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 22311 "tex.w" +); + +info(numerator(incompleat_noad))= link(q); +link(q)= incompleat_noad;link(incompleat_noad)= p; +} +} + +/*:1185*/ +#line 22300 "tex.w" + +else{link(tail)= p;q= link(head); +} +pop_nest();return q; +} + +/*:1184*/ +#line 22153 "tex.w" + +void build_choices(void) +{ +pointer p; +unsave();p= fin_mlist(null); +switch(saved(-1)){ +case 0:display_mlist(tail)= p;break; +case 1:text_mlist(tail)= p;break; +case 2:script_mlist(tail)= p;break; +case 3:{script_script_mlist(tail)= p;decr(save_ptr);return; +} +} +incr(saved(-1));push_math(math_choice_group);scan_left_brace(); +} + +/*:1174*//*1176:*/ +#line 22176 "tex.w" + +void sub_sup(void) +{small_number t; +pointer p; +t= empty;p= null; +if(tail!=head)if(scripts_allowed(tail)) +{p= supscr(tail)+cur_cmd-sup_mark; +t= math_type(p); +} +if((p==null)||(t!=empty))/*1177:*/ +#line 22189 "tex.w" + +{tail_append(new_noad()); +p= supscr(tail)+cur_cmd-sup_mark; +if(t!=empty) +{if(cur_cmd==sup_mark) +{print_err("Double superscript"); + +help1("I treat `x^1^2' essentially like `x^1{}^2'."); +} +else{print_err("Double subscript"); + +help1("I treat `x_1_2' essentially like `x_1{}_2'."); +} +error(); +} +} + +/*:1177*/ +#line 22185 "tex.w" +; +scan_math(p); +} + +/*:1176*//*1181:*/ +#line 22246 "tex.w" + +void math_fraction(void) +{small_number c; +c= cur_chr; +if(incompleat_noad!=null) +/*1183:*/ +#line 22278 "tex.w" + +{if(c>=delimited_code) +{scan_delimiter(garbage,false);scan_delimiter(garbage,false); +} +if(c%delimited_code==above_code)scan_normal_dimen; +print_err("Ambiguous; you need another { and }"); + +help3("I'm ignoring this fraction specification, since I don't") +("know whether a construction like `x \\over y \\over z'") +("means `{x \\over y} \\over z' or `x \\over {y \\over z}'."); +error(); +} + +/*:1183*/ +#line 22251 "tex.w" + +else{incompleat_noad= get_node(fraction_noad_size); +type(incompleat_noad)= fraction_noad; +subtype(incompleat_noad)= normal; +math_type(numerator(incompleat_noad))= sub_mlist; +info(numerator(incompleat_noad))= link(head); +mem[denominator(incompleat_noad)].hh= empty_field; +mem[left_delimiter(incompleat_noad)].qqqq= null_delimiter; +mem[right_delimiter(incompleat_noad)].qqqq= null_delimiter; +link(head)= null;tail= head; +/*1182:*/ +#line 22265 "tex.w" + +if(c>=delimited_code) +{scan_delimiter(left_delimiter(incompleat_noad),false); +scan_delimiter(right_delimiter(incompleat_noad),false); +} +switch(c%delimited_code){ +case above_code:{scan_normal_dimen; +thickness(incompleat_noad)= cur_val; +}break; +case over_code:thickness(incompleat_noad)= default_code;break; +case atop_code:thickness(incompleat_noad)= 0; +} + +/*:1182*/ +#line 22261 "tex.w" +; +} +} + +/*:1181*//*1191:*/ +#line 22361 "tex.w" + +void math_left_right(void) +{small_number t; +pointer p; +t= cur_chr; +if((t==right_noad)&&(cur_group!=math_left_group)) +/*1192:*/ +#line 22381 "tex.w" + +{if(cur_group==math_shift_group) +{scan_delimiter(garbage,false); +print_err("Extra ");print_esc(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 22384 "tex.w" +); + +help1("I'm ignoring a \\right that had no matching \\left."); +error(); +} +else off_save(); +} + +/*:1192*/ +#line 22367 "tex.w" + +else{p= new_noad();type(p)= t; +scan_delimiter(delimiter(p),false); +if(t==left_noad) +{push_math(math_left_group);link(head)= p;tail= p; +} +else{p= fin_mlist(p);unsave(); +tail_append(new_noad());type(tail)= inner_noad; +math_type(nucleus(tail))= sub_mlist; +info(nucleus(tail))= p; +} +} +} + +/*:1191*//*1194:*/ +#line 22398 "tex.w" + +void after_math(void) +{bool l; +bool danger; +int m; +pointer p; +pointer a; +/*1198:*/ +#line 22482 "tex.w" + +pointer b; +scaled w; +scaled z; +scaled e; +scaled q; +scaled d; +scaled s; +small_number g1,g2; +pointer r; +pointer t; + +/*:1198*/ +#line 22405 "tex.w" + +danger= false; +/*1195:*/ +#line 22428 "tex.w" + +if((font_params[fam_fnt(2+text_size)]<total_mathsy_params)|| +(font_params[fam_fnt(2+script_size)]<total_mathsy_params)|| +(font_params[fam_fnt(2+script_script_size)]<total_mathsy_params)) +{print_err("Math formula deleted: Insufficient symbol fonts"); + +help3("Sorry, but I can't typeset math unless \\textfont 2") +("and \\scriptfont 2 and \\scriptscriptfont 2 have all") +("the \\fontdimen values needed in math symbol fonts."); +error();flush_math();danger= true; +} +else if((font_params[fam_fnt(3+text_size)]<total_mathex_params)|| +(font_params[fam_fnt(3+script_size)]<total_mathex_params)|| +(font_params[fam_fnt(3+script_script_size)]<total_mathex_params)) +{print_err("Math formula deleted: Insufficient extension fonts"); +help3("Sorry, but I can't typeset math unless \\textfont 3") +("and \\scriptfont 3 and \\scriptscriptfont 3 have all") +("the \\fontdimen values needed in math extension fonts."); +error();flush_math();danger= true; +} + +/*:1195*/ +#line 22408 "tex.w" +; +m= mode;l= false;p= fin_mlist(null); +if(mode==-m) +{/*1197:*/ +#line 22467 "tex.w" + +{get_x_token(); +if(cur_cmd!=math_shift) +{print_err("Display math should end with $$"); + +help2("The `$' that I just saw supposedly matches a previous `$$'.") +("So I shall assume that you typed `$$' both times."); +back_error(); +} +} + +/*:1197*/ +#line 22411 "tex.w" +; +cur_mlist= p;cur_style= text_style;mlist_penalties= false; +mlist_to_hlist();a= hpack(link(temp_head),natural); +unsave();decr(save_ptr); +if(saved(0)==1)l= true; +danger= false; +/*1195:*/ +#line 22428 "tex.w" + +if((font_params[fam_fnt(2+text_size)]<total_mathsy_params)|| +(font_params[fam_fnt(2+script_size)]<total_mathsy_params)|| +(font_params[fam_fnt(2+script_script_size)]<total_mathsy_params)) +{print_err("Math formula deleted: Insufficient symbol fonts"); + +help3("Sorry, but I can't typeset math unless \\textfont 2") +("and \\scriptfont 2 and \\scriptscriptfont 2 have all") +("the \\fontdimen values needed in math symbol fonts."); +error();flush_math();danger= true; +} +else if((font_params[fam_fnt(3+text_size)]<total_mathex_params)|| +(font_params[fam_fnt(3+script_size)]<total_mathex_params)|| +(font_params[fam_fnt(3+script_script_size)]<total_mathex_params)) +{print_err("Math formula deleted: Insufficient extension fonts"); +help3("Sorry, but I can't typeset math unless \\textfont 3") +("and \\scriptfont 3 and \\scriptscriptfont 3 have all") +("the \\fontdimen values needed in math extension fonts."); +error();flush_math();danger= true; +} + +/*:1195*/ +#line 22418 "tex.w" +; +m= mode;p= fin_mlist(null); +} +else a= null; +if(m<0)/*1196:*/ +#line 22455 "tex.w" + +{tail_append(new_math(math_surround,before)); +cur_mlist= p;cur_style= text_style;mlist_penalties= (mode> 0);mlist_to_hlist(); +link(tail)= link(temp_head); +while(link(tail)!=null)tail= link(tail); +tail_append(new_math(math_surround,after)); +space_factor= 1000;unsave(); +} + +/*:1196*/ +#line 22422 "tex.w" + +else{if(a==null)/*1197:*/ +#line 22467 "tex.w" + +{get_x_token(); +if(cur_cmd!=math_shift) +{print_err("Display math should end with $$"); + +help2("The `$' that I just saw supposedly matches a previous `$$'.") +("So I shall assume that you typed `$$' both times."); +back_error(); +} +} + +/*:1197*/ +#line 22423 "tex.w" +; +/*1199:*/ +#line 22498 "tex.w" + +cur_mlist= p;cur_style= display_style;mlist_penalties= false; +mlist_to_hlist();p= link(temp_head); +adjust_tail= adjust_head;b= hpack(p,natural);p= list_ptr(b); +t= adjust_tail;adjust_tail= null; +w= width(b);z= display_width;s= display_indent; +if((a==null)||danger) +{e= 0;q= 0; +} +else{e= width(a);q= e+math_quad(text_size); +} +if(w+q> z) +/*1201:*/ +#line 22534 "tex.w" + +{if((e!=0)&&((w-total_shrink[normal]+q<=z)|| +(total_shrink[fil]!=0)||(total_shrink[fill]!=0)|| +(total_shrink[filll]!=0))) +{free_node(b,box_node_size); +b= hpack(p,z-q,exactly); +} +else{e= 0; +if(w> z) +{free_node(b,box_node_size); +b= hpack(p,z,exactly); +} +} +w= width(b); +} + +/*:1201*/ +#line 22511 "tex.w" +; +/*1202:*/ +#line 22558 "tex.w" + +d= half(z-w); +if((e> 0)&&(d<2*e)) +{d= half(z-w-e); +if(p!=null)if(!is_char_node(p))if(type(p)==glue_node)d= 0; +} + +/*:1202*/ +#line 22513 "tex.w" +; +/*1203:*/ +#line 22571 "tex.w" + +tail_append(new_penalty(pre_display_penalty)); +if((d+s<=pre_display_size)||l) +{g1= above_display_skip_code;g2= below_display_skip_code; +} +else{g1= above_display_short_skip_code; +g2= below_display_short_skip_code; +} +if(l&&(e==0)) +{shift_amount(a)= s;append_to_vlist(a); +tail_append(new_penalty(inf_penalty)); +} +else tail_append(new_param_glue(g1)) + +/*:1203*/ +#line 22514 "tex.w" +; +/*1204:*/ +#line 22585 "tex.w" + +if(e!=0) +{r= new_kern(z-w-e-d); +if(l) +{link(a)= r;link(r)= b;b= a;d= 0; +} +else{link(b)= r;link(r)= a; +} +b= hpack(b,natural); +} +shift_amount(b)= s+d;append_to_vlist(b) + +/*:1204*/ +#line 22515 "tex.w" +; +/*1205:*/ +#line 22597 "tex.w" + +if((a!=null)&&(e==0)&&!l) +{tail_append(new_penalty(inf_penalty)); +shift_amount(a)= s+z-width(a); +append_to_vlist(a); +g2= 0; +} +if(t!=adjust_head) +{link(tail)= link(adjust_head);tail= t; +} +tail_append(new_penalty(post_display_penalty)); +if(g2> 0)tail_append(new_param_glue(g2)) + +/*:1205*/ +#line 22516 "tex.w" +; +resume_after_display() + +/*:1199*/ +#line 22424 "tex.w" +; +} +} + +/*:1194*//*1200:*/ +#line 22519 "tex.w" + +void resume_after_display(void) +{if(cur_group!=math_shift_group)confusion(/*1742:*/ +#line 26122 "tex.w" +617 +/*:1742*/ +#line 22521 "tex.w" +); + +unsave();prev_graf= prev_graf+3; +push_nest();mode= hmode;space_factor= 1000;set_cur_lang;clang= cur_lang; +prev_graf= (norm_min(left_hyphen_min)*0100+norm_min(right_hyphen_min)) +*0200000+cur_lang; +/*443:*/ +#line 8804 "tex.w" + +{get_x_token();if(cur_cmd!=spacer)back_input(); +} + +/*:443*/ +#line 22527 "tex.w" +; +if(nest_ptr==1)build_page(); +} + +/*:1200*//*1211:*/ +#line 22716 "tex.w" + +/*1215:*/ +#line 22781 "tex.w" + +void get_r_token(void) +{ +restart:do{get_token(); +}while(!(cur_tok!=space_token)); +if((cur_cs==0)||(cur_cs> frozen_control_sequence)) +{print_err("Missing control sequence inserted"); + +help5("Please don't say `\\def cs{...}', say `\\def\\cs{...}'.") +("I've inserted an inaccessible control sequence so that your") +("definition will be completed without mixing me up too badly.") +("You can recover graciously from this error, if you're") +("careful; see exercise 27.2 in The TeXbook."); + +if(cur_cs==0)back_input(); +cur_tok= cs_token_flag+frozen_protection;ins_error();goto restart; +} +} + +/*:1215*//*1229:*/ +#line 22992 "tex.w" + +void trap_zero_glue(void) +{if((width(cur_val)==0)&&(stretch(cur_val)==0)&&(shrink(cur_val)==0)) +{add_glue_ref(zero_glue); +delete_glue_ref(cur_val);cur_val= zero_glue; +} +} + +/*:1229*//*1236:*/ +#line 23072 "tex.w" + +void do_register_command(small_number a) +{ +pointer l,q,r,s; +uint8_t p; +q= cur_cmd; +/*1237:*/ +#line 23101 "tex.w" + +{if(q!=register) +{get_x_token(); +if((cur_cmd>=assign_int)&&(cur_cmd<=assign_mu_glue)) +{l= cur_chr;p= cur_cmd-assign_int;goto found; +} +if(cur_cmd!=register) +{print_err("You can't use `");print_cmd_chr(cur_cmd,cur_chr); + +print_str("' after ");print_cmd_chr(q,0); +help1("I'm forgetting what you said and not changing anything."); +error();return; +} +} +p= cur_chr;scan_eight_bit_int(); +switch(p){ +case int_val:l= cur_val+count_base;break; +case dimen_val:l= cur_val+scaled_base;break; +case glue_val:l= cur_val+skip_base;break; +case mu_val:l= cur_val+mu_skip_base; +} +} +found: + +/*:1237*/ +#line 23078 "tex.w" +; +if(q==register)scan_optional_equals(); +else if(scan_keyword(/*1761:*/ +#line 26179 "tex.w" +636 +/*:1761*/ +#line 23080 "tex.w" +))do_nothing; + +arith_error= false; +if(q<multiply)/*1238:*/ +#line 23125 "tex.w" + +if(p<glue_val) +{if(p==int_val)scan_int();else scan_normal_dimen; +if(q==advance)cur_val= cur_val+eqtb[l].i; +} +else{scan_glue(p); +if(q==advance)/*1239:*/ +#line 23134 "tex.w" + +{q= new_spec(cur_val);r= equiv(l); +delete_glue_ref(cur_val); +width(q)= width(q)+width(r); +if(stretch(q)==0)stretch_order(q)= normal; +if(stretch_order(q)==stretch_order(r))stretch(q)= stretch(q)+stretch(r); +else if((stretch_order(q)<stretch_order(r))&&(stretch(r)!=0)) +{stretch(q)= stretch(r);stretch_order(q)= stretch_order(r); +} +if(shrink(q)==0)shrink_order(q)= normal; +if(shrink_order(q)==shrink_order(r))shrink(q)= shrink(q)+shrink(r); +else if((shrink_order(q)<shrink_order(r))&&(shrink(r)!=0)) +{shrink(q)= shrink(r);shrink_order(q)= shrink_order(r); +} +cur_val= q; +} + +/*:1239*/ +#line 23131 "tex.w" +; +} + +/*:1238*/ +#line 23083 "tex.w" + +else/*1240:*/ +#line 23151 "tex.w" + +{scan_int(); +if(p<glue_val) +if(q==multiply) +if(p==int_val)cur_val= mult_integers(eqtb[l].i,cur_val); +else cur_val= nx_plus_y(eqtb[l].i,cur_val,0); +else cur_val= x_over_n(eqtb[l].i,cur_val); +else{s= equiv(l);r= new_spec(s); +if(q==multiply) +{width(r)= nx_plus_y(width(s),cur_val,0); +stretch(r)= nx_plus_y(stretch(s),cur_val,0); +shrink(r)= nx_plus_y(shrink(s),cur_val,0); +} +else{width(r)= x_over_n(width(s),cur_val); +stretch(r)= x_over_n(stretch(s),cur_val); +shrink(r)= x_over_n(shrink(s),cur_val); +} +cur_val= r; +} +} + +/*:1240*/ +#line 23084 "tex.w" +; +if(arith_error) +{print_err("Arithmetic overflow"); + +help2("I can't carry out that multiplication or division,") +("since the result is out of range."); +if(p>=glue_val)delete_glue_ref(cur_val); +error();return; +} +if(p<glue_val)word_define(l,cur_val); +else{trap_zero_glue();define(l,glue_ref,cur_val); +} +} + +/*:1236*//*1243:*/ +#line 23203 "tex.w" + +void alter_aux(void) +{halfword c; +if(cur_chr!=abs(mode))report_illegal_case(); +else{c= cur_chr;scan_optional_equals(); +if(c==vmode) +{scan_normal_dimen;prev_depth= cur_val; +} +else{scan_int(); +if((cur_val<=0)||(cur_val> 32767)) +{print_err("Bad space factor"); + +help1("I allow only values in the range 1..32767 here."); +int_error(cur_val); +} +else space_factor= cur_val; +} +} +} + +/*:1243*//*1244:*/ +#line 23223 "tex.w" + +void alter_prev_graf(void) +{uint8_t p; +nest[nest_ptr]= cur_list;p= nest_ptr; +while(abs(nest[p].mode_field)!=vmode)decr(p); +scan_optional_equals();scan_int(); +if(cur_val<0) +{print_err("Bad ");print_esc(/*1554:*/ +#line 25558 "tex.w" +429 +/*:1554*/ +#line 23230 "tex.w" +); + +help1("I allow only nonnegative values here."); +int_error(cur_val); +} +else{nest[p].pg_field= cur_val;cur_list= nest[nest_ptr]; +} +} + +/*:1244*//*1245:*/ +#line 23239 "tex.w" + +void alter_page_so_far(void) +{uint8_t c; +c= cur_chr;scan_optional_equals();scan_normal_dimen; +page_so_far[c]= cur_val; +} + +/*:1245*//*1246:*/ +#line 23246 "tex.w" + +void alter_integer(void) +{uint8_t c; +c= cur_chr;scan_optional_equals();scan_int(); +if(c==0)dead_cycles= cur_val; +else insert_penalties= cur_val; +} + +/*:1246*//*1247:*/ +#line 23254 "tex.w" + +void alter_box_dimen(void) +{small_number c; +eight_bits b; +c= cur_chr;scan_eight_bit_int();b= cur_val;scan_optional_equals(); +scan_normal_dimen; +if(box(b)!=null)mem[box(b)+c].sc= cur_val; +} + +/*:1247*//*1257:*/ +#line 23340 "tex.w" + +void new_font(small_number a) +{ +pointer u; +scaled s; +int f; +str_number t; +uint8_t old_setting; +str_number flushable_string; +if(job_name==0)open_log_file(); + + +get_r_token();u= cur_cs; +if(u>=hash_base)t= text(u); +else if(u>=single_base) +if(u==null_cs)t= /*1764:*/ +#line 26188 "tex.w" +639 +/*:1764*/ +#line 23355 "tex.w" +;else t= u-single_base; +else{old_setting= selector;selector= new_string; +print_str("FONT");print(u-active_base);selector= old_setting; + +str_room(1);t= make_string(); +} +define(u,set_font,null_font);scan_optional_equals();scan_file_name(); +/*1258:*/ +#line 23369 "tex.w" + +name_in_progress= true; +if(scan_keyword(/*1765:*/ +#line 26191 "tex.w" +640 +/*:1765*/ +#line 23371 "tex.w" +))/*1259:*/ +#line 23386 "tex.w" + +{scan_normal_dimen;s= cur_val; +if((s<=0)||(s>=01000000000)) +{print_err("Improper `at' size ("); +print_scaled(s);print_str("pt), replaced by 10pt"); + +help2("I can only handle fonts at positive sizes that are") +("less than 2048pt, so I've changed what you said to 10pt."); +error();s= 10*unity; +} +} + +/*:1259*/ +#line 23371 "tex.w" + + +else if(scan_keyword(/*1766:*/ +#line 26194 "tex.w" +641 +/*:1766*/ +#line 23373 "tex.w" +)) + +{scan_int();s= -cur_val; +if((cur_val<=0)||(cur_val> 32768)) +{print_err("Illegal magnification has been changed to 1000"); + +help1("The magnification ratio must be between 1 and 32768."); +int_error(cur_val);s= -1000; +} +} +else s= -1000; +name_in_progress= false + +/*:1258*/ +#line 23362 "tex.w" +; +/*1260:*/ +#line 23402 "tex.w" + +flushable_string= str_ptr-1; +for(f= font_base+1;f<=font_ptr;f++) +if(str_eq_str(font_name[f],cur_name)&&str_eq_str(font_area[f],cur_area)) +{if(cur_name==flushable_string) +{flush_string;cur_name= font_name[f]; +} +if(s> 0) +{if(s==font_size[f])goto common_ending; +} +else if(font_size[f]==xn_over_d(font_dsize[f],-s,1000)) +goto common_ending; +} + +/*:1260*/ +#line 23364 "tex.w" +; +f= read_font_info(u,cur_name,cur_area,s); +common_ending:equiv(u)= f;eqtb[font_id_base+f]= eqtb[u];font_id_text(f)= t; +} + +/*:1257*//*1265:*/ +#line 23445 "tex.w" + +void new_interaction(void) +{print_ln(); +interaction= cur_chr; +/*75:*/ +#line 1788 "tex.w" + +if(interaction==batch_mode)selector= no_print;else selector= term_only + +/*:75*/ +#line 23449 "tex.w" +; +if(log_opened)selector= selector+2; +} + +/*:1265*/ +#line 22717 "tex.w" + +void prefixed_command(void) +{ +small_number a; +internal_font_number f; +int j; +font_index k; +pointer p,q; +int n; +bool e; +a= 0; +while(cur_cmd==prefix) +{if(!odd(a/cur_chr))a= a+cur_chr; +/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 22730 "tex.w" +; +if(cur_cmd<=max_non_prefixed_command) +/*1212:*/ +#line 22744 "tex.w" + +{print_err("You can't use a prefix with `"); + +print_cmd_chr(cur_cmd,cur_chr);print_char('\''); +help1("I'll pretend you didn't say \\long or \\outer or \\global."); +back_error();return; +} + +/*:1212*/ +#line 22732 "tex.w" +; +} +/*1213:*/ +#line 22752 "tex.w" + +if((cur_cmd!=def)&&(a%4!=0)) +{print_err("You can't use `");print_esc(/*1743:*/ +#line 26125 "tex.w" +618 +/*:1743*/ +#line 22754 "tex.w" +);print_str("' or `"); +print_esc(/*1744:*/ +#line 26128 "tex.w" +619 +/*:1744*/ +#line 22755 "tex.w" +);print_str("' with `"); + +print_cmd_chr(cur_cmd,cur_chr);print_char('\''); +help1("I'll pretend you didn't say \\long or \\outer here."); +error(); +} + +/*:1213*/ +#line 22734 "tex.w" +; +/*1214:*/ +#line 22769 "tex.w" + +if(global_defs!=0) +if(global_defs<0) +{if(global)a= a-4; +} +else{if(!global)a= a+4; +} + +/*:1214*/ +#line 22735 "tex.w" +; +switch(cur_cmd){ +/*1217:*/ +#line 22806 "tex.w" + +case set_font:define(cur_font_loc,data,cur_chr);break; + +/*:1217*//*1218:*/ +#line 22813 "tex.w" + +case def:{if(odd(cur_chr)&&!global&&(global_defs>=0))a= a+4; +e= (cur_chr>=2);get_r_token();p= cur_cs; +q= scan_toks(true,e);define(p,call+(a%4),def_ref); +}break; + +/*:1218*//*1221:*/ +#line 22830 "tex.w" + +case let:{n= cur_chr; +get_r_token();p= cur_cs; +if(n==normal) +{do{get_token(); +}while(!(cur_cmd!=spacer)); +if(cur_tok==other_token+'=') +{get_token(); +if(cur_cmd==spacer)get_token(); +} +} +else{get_token();q= cur_tok;get_token();back_input(); +cur_tok= q;back_input(); +} +if(cur_cmd>=call)add_token_ref(cur_chr); +define(p,cur_cmd,cur_chr); +}break; + +/*:1221*//*1224:*/ +#line 22899 "tex.w" + +case shorthand_def:{n= cur_chr;get_r_token();p= cur_cs;define(p,relax,256); +scan_optional_equals(); +switch(n){ +case char_def_code:{scan_char_num();define(p,char_given,cur_val); +}break; +case math_char_def_code:{scan_fifteen_bit_int();define(p,math_given,cur_val); +}break; +default:{scan_eight_bit_int(); +switch(n){ +case count_def_code:define(p,assign_int,count_base+cur_val);break; +case dimen_def_code:define(p,assign_dimen,scaled_base+cur_val);break; +case skip_def_code:define(p,assign_glue,skip_base+cur_val);break; +case mu_skip_def_code:define(p,assign_mu_glue,mu_skip_base+cur_val);break; +case toks_def_code:define(p,assign_toks,toks_base+cur_val); +} +} +} +}break; + +/*:1224*//*1225:*/ +#line 22919 "tex.w" + +case read_to_cs:{scan_int();n= cur_val; +if(!scan_keyword(/*1642:*/ +#line 25822 "tex.w" +517 +/*:1642*/ +#line 22921 "tex.w" +)) + +{print_err("Missing `to' inserted"); + +help2("You should have said `\\read<number> to \\cs'.") +("I'm going to look for the \\cs now.");error(); +} +get_r_token(); +p= cur_cs;read_toks(n,p);define(p,call,cur_val); +}break; + +/*:1225*//*1226:*/ +#line 22936 "tex.w" + +case toks_register:case assign_toks:{q= cur_cs; +if(cur_cmd==toks_register) +{scan_eight_bit_int();p= toks_base+cur_val; +} +else p= cur_chr; +scan_optional_equals(); +/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 22943 "tex.w" +; +if(cur_cmd!=left_brace)/*1227:*/ +#line 22960 "tex.w" + +{if(cur_cmd==toks_register) +{scan_eight_bit_int();cur_cmd= assign_toks;cur_chr= toks_base+cur_val; +} +if(cur_cmd==assign_toks) +{q= equiv(cur_chr); +if(q==null)define(p,undefined_cs,null); +else{add_token_ref(q);define(p,call,q); +} +goto done; +} +} + +/*:1227*/ +#line 22945 "tex.w" +; +back_input();cur_cs= q;q= scan_toks(false,false); +if(link(def_ref)==null) +{define(p,undefined_cs,null);free_avail(def_ref); +} +else{if(p==output_routine_loc) +{link(q)= get_avail();q= link(q); +info(q)= right_brace_token+'}'; +q= get_avail();info(q)= left_brace_token+'{'; +link(q)= link(def_ref);link(def_ref)= q; +} +define(p,call,def_ref); +} +}break; + +/*:1226*//*1228:*/ +#line 22975 "tex.w" + +case assign_int:{p= cur_chr;scan_optional_equals();scan_int(); +word_define(p,cur_val); +}break; +case assign_dimen:{p= cur_chr;scan_optional_equals(); +scan_normal_dimen;word_define(p,cur_val); +}break; +case assign_glue:case assign_mu_glue:{p= cur_chr;n= cur_cmd;scan_optional_equals(); +if(n==assign_mu_glue)scan_glue(mu_val);else scan_glue(glue_val); +trap_zero_glue(); +define(p,glue_ref,cur_val); +}break; + +/*:1228*//*1232:*/ +#line 23035 "tex.w" + +case def_code:{/*1233:*/ +#line 23053 "tex.w" + +if(cur_chr==cat_code_base)n= max_char_code; +else if(cur_chr==math_code_base)n= 0100000; +else if(cur_chr==sf_code_base)n= 077777; +else if(cur_chr==del_code_base)n= 077777777; +else n= 255 + +/*:1233*/ +#line 23036 "tex.w" +; +p= cur_chr;scan_char_num();p= p+cur_val;scan_optional_equals(); +scan_int(); +if(((cur_val<0)&&(p<del_code_base))||(cur_val> n)) +{print_err("Invalid code (");print_int(cur_val); + +if(p<del_code_base)print_str("), should be in the range 0.."); +else print_str("), should be at most "); +print_int(n); +help1("I'm going to use 0 instead of that illegal code value."); +error();cur_val= 0; +} +if(p<math_code_base)define(p,data,cur_val); +else if(p<del_code_base)define(p,data,hi(cur_val)); +else word_define(p,cur_val); +}break; + +/*:1232*//*1234:*/ +#line 23060 "tex.w" + +case def_family:{p= cur_chr;scan_four_bit_int();p= p+cur_val; +scan_optional_equals();scan_font_ident();define(p,data,cur_val); +}break; + +/*:1234*//*1235:*/ +#line 23067 "tex.w" + +case register:case advance:case multiply:case divide:do_register_command(a);break; + +/*:1235*//*1241:*/ +#line 23176 "tex.w" + +case set_box:{scan_eight_bit_int(); +if(global)n= 256+cur_val;else n= cur_val; +scan_optional_equals(); +if(set_box_allowed)scan_box(box_flag+n); +else{print_err("Improper ");print_esc(/*1558:*/ +#line 25570 "tex.w" +433 +/*:1558*/ +#line 23181 "tex.w" +); + +help2("Sorry, \\setbox is not allowed after \\halign in a display,") +("or between \\accent and an accented character.");error(); +} +}break; + +/*:1241*//*1242:*/ +#line 23196 "tex.w" + +case set_aux:alter_aux();break; +case set_prev_graf:alter_prev_graf();break; +case set_page_dimen:alter_page_so_far();break; +case set_page_int:alter_integer();break; +case set_box_dimen:alter_box_dimen();break; + +/*:1242*//*1248:*/ +#line 23265 "tex.w" + +case set_shape:{scan_optional_equals();scan_int();n= cur_val; +if(n<=0)p= null; +else{p= get_node(2*n+1);info(p)= n; +for(j= 1;j<=n;j++) +{scan_normal_dimen; +mem[p+2*j-1].sc= cur_val; +scan_normal_dimen; +mem[p+2*j].sc= cur_val; +} +} +define(par_shape_loc,shape_ref,p); +}break; + +/*:1248*//*1252:*/ +#line 23298 "tex.w" + +case hyph_data:if(cur_chr==1) +{ +#ifdef INIT +new_patterns();goto done; +#endif +print_err("Patterns can be loaded only by INITEX"); + +help0;error(); +do{get_token();}while(!(cur_cmd==right_brace)); +return; +} +else{new_hyph_exceptions();goto done; +}break; + +/*:1252*//*1253:*/ +#line 23316 "tex.w" + +case assign_font_dimen:{find_font_dimen(true);k= cur_val; +scan_optional_equals();scan_normal_dimen;font_info[k].sc= cur_val; +}break; +case assign_font_int:{n= cur_chr;scan_font_ident();f= cur_val; +scan_optional_equals();scan_int(); +if(n==0)hyphen_char[f]= cur_val;else skew_char[f]= cur_val; +}break; + +/*:1253*//*1256:*/ +#line 23337 "tex.w" + +case def_font:new_font(a);break; + +/*:1256*//*1264:*/ +#line 23442 "tex.w" + +case set_interaction:new_interaction();break; + +/*:1264*/ +#line 22737 "tex.w" + +default:confusion(/*1750:*/ +#line 26146 "tex.w" +625 +/*:1750*/ +#line 22738 "tex.w" +); + +} +done:/*1269:*/ +#line 23467 "tex.w" + +if(after_token!=0) +{cur_tok= after_token;back_input();after_token= 0; +} + +/*:1269*/ +#line 22741 "tex.w" +; +} + +/*:1211*//*1270:*/ +#line 23475 "tex.w" + +void do_assignments(void) +{ +loop{/*404:*/ +#line 8257 "tex.w" + +do{get_x_token(); +}while(!((cur_cmd!=spacer)&&(cur_cmd!=relax))) + +/*:404*/ +#line 23478 "tex.w" +; +if(cur_cmd<=max_non_prefixed_command)return; +set_box_allowed= false;prefixed_command();set_box_allowed= true; +} +} + +/*:1270*//*1275:*/ +#line 23503 "tex.w" + +void open_or_close_in(void) +{uint8_t c; +uint8_t n; +c= cur_chr;scan_four_bit_int();n= cur_val; +if(read_open[n]!=closed) +{a_close(&read_file[n]);read_open[n]= closed; +} +if(c!=0) +{scan_optional_equals();scan_file_name(); +if(cur_ext==empty_string)cur_ext= /*1637:*/ +#line 25807 "tex.w" +512 +/*:1637*/ +#line 23513 "tex.w" +; +pack_cur_name; +if(a_open_in(&read_file[n]))read_open[n]= just_open; +} +} + +/*:1275*//*1279:*/ +#line 23535 "tex.w" + +void issue_message(void) +{uint8_t old_setting; +uint8_t c; +str_number s; +c= cur_chr;link(garbage)= scan_toks(false,true); +old_setting= selector;selector= new_string; +token_show(def_ref);selector= old_setting; +flush_list(def_ref); +str_room(1);s= make_string(); +if(c==0)/*1280:*/ +#line 23550 "tex.w" + +{if(term_offset+length(s)> max_print_line-2)print_ln(); +else if((term_offset> 0)||(file_offset> 0))print_char(' '); +slow_print(s);update_terminal; +} + +/*:1280*/ +#line 23545 "tex.w" + +else/*1283:*/ +#line 23565 "tex.w" + +{print_err("");slow_print(s); +if(err_help!=null)use_err_help= true; +else if(long_help_seen)help1("(That was another \\errmessage.)") +else{if(interaction<error_stop_mode)long_help_seen= true; +help4("This error message was generated by an \\errmessage") +("command, so I can't give any explicit help.") +("Pretend that you're Hercule Poirot: Examine all clues,") + +("and deduce the truth by order and method."); +} +error();use_err_help= false; +} + +/*:1283*/ +#line 23546 "tex.w" +; +flush_string; +} + +/*:1279*//*1288:*/ +#line 23602 "tex.w" + +void shift_case(void) +{pointer b; +pointer p; +halfword t; +eight_bits c; +b= cur_chr;p= scan_toks(false,false);p= link(def_ref); +while(p!=null) +{/*1289:*/ +#line 23621 "tex.w" + +t= info(p); +if(t<cs_token_flag+single_base) +{c= t%256; +if(equiv(b+c)!=0)info(p)= t-c+equiv(b+c); +} + +/*:1289*/ +#line 23610 "tex.w" +; +p= link(p); +} +back_list(link(def_ref));free_avail(def_ref); +} + +/*:1288*//*1293:*/ +#line 23657 "tex.w" + +void show_whatever(void) +{ +pointer p; +switch(cur_chr){ +case show_lists:{begin_diagnostic();show_activities(); +}break; +case show_box_code:/*1296:*/ +#line 23707 "tex.w" + +{scan_eight_bit_int();begin_diagnostic(); +print_nl("> \\box");print_int(cur_val);print_char('='); +if(box(cur_val)==null)print_str("void"); +else show_box(box(cur_val)); +} + +/*:1296*/ +#line 23664 "tex.w" +break; +case show_code:/*1294:*/ +#line 23688 "tex.w" + +{get_token(); +if(interaction==error_stop_mode)wake_up_terminal; +print_nl("> "); +if(cur_cs!=0) +{sprint_cs(cur_cs);print_char('='); +} +print_meaning();goto common_ending; +} + +/*:1294*/ +#line 23665 "tex.w" + +default:/*1297:*/ +#line 23714 "tex.w" + +{p= the_toks(); +if(interaction==error_stop_mode)wake_up_terminal; +print_nl("> ");token_show(temp_head); +flush_list(link(temp_head));goto common_ending; +} + +/*:1297*/ +#line 23666 "tex.w" + +} +/*1298:*/ +#line 23721 "tex.w" + +end_diagnostic(true);print_err("OK"); + +if(selector==term_and_log)if(tracing_online<=0) +{selector= term_only;print_str(" (see the transcript file)"); +selector= term_and_log; +} + +/*:1298*/ +#line 23668 "tex.w" +; +common_ending:if(interaction<error_stop_mode) +{help0;decr(error_count); +} +else if(tracing_online> 0) +{ +help3("This isn't an error message; I'm just \\showing something.") +("Type `I\\show...' to show more (e.g., \\show\\cs,") +("\\showthe\\count10, \\showbox255, \\showlists)."); +} +else{ +help5("This isn't an error message; I'm just \\showing something.") +("Type `I\\show...' to show more (e.g., \\show\\cs,") +("\\showthe\\count10, \\showbox255, \\showlists).") +("And type `I\\tracingonline=1\\show...' to show boxes and") +("lists on your terminal as well as in the transcript file."); +} +error(); +} + +/*:1293*//*1302:*/ +#line 23755 "tex.w" + +#ifdef INIT +void store_fmt_file(void) +{ +int j,k,l; +pointer p,q; +int x; +four_quarters w; +/*1304:*/ +#line 23812 "tex.w" + +if(save_ptr!=0) +{print_err("You can't dump inside a group"); + +help1("`{...\\dump}' is a no-no.");succumb; +} + +/*:1304*/ +#line 23763 "tex.w" +; +/*1328:*/ +#line 24208 "tex.w" + +selector= new_string; +print_str(" (preloaded format=");print(job_name);print_char(' '); +print_int(year);print_char('.'); +print_int(month);print_char('.');print_int(day);print_char(')'); +if(interaction==batch_mode)selector= log_only; +else selector= term_and_log; +str_room(1); +format_ident= make_string(); +pack_job_name(format_extension); +while(!w_open_out(&fmt_file)) +prompt_file_name("format file name",format_extension); +print_nl("Beginning to dump on file "); + +slow_print(w_make_name_string(&fmt_file));flush_string; +print_nl("");slow_print(format_ident) + +/*:1328*/ +#line 23765 "tex.w" +; +/*1307:*/ +#line 23849 "tex.w" + +dump_int(0); +dump_int(mem_bot); +dump_int(mem_top); +dump_int(eqtb_size); +dump_int(hash_prime); +dump_int(hyph_size) + +/*:1307*/ +#line 23766 "tex.w" +; +/*1309:*/ +#line 23882 "tex.w" + +dump_int(pool_ptr); +dump_int(str_ptr); +for(k= 0;k<=str_ptr;k++)dump_int(str_start[k]); +k= 0; +while(k+4<pool_ptr) +{dump_four_ASCII;k= k+4; +} +k= pool_ptr-4;dump_four_ASCII; +print_ln();print_int(str_ptr);print_str(" strings of total length "); +print_int(pool_ptr) + +/*:1309*/ +#line 23767 "tex.w" +; +/*1311:*/ +#line 23917 "tex.w" + +sort_avail();var_used= 0; +dump_int(lo_mem_max);dump_int(rover); +p= mem_bot;q= rover;x= 0; +do{for(k= p;k<=q+1;k++)dump_wd(mem[k]); +x= x+q+2-p;var_used= var_used+q-p; +p= q+node_size(q);q= rlink(q); +}while(!(q==rover)); +var_used= var_used+lo_mem_max-p;dyn_used= mem_end+1-hi_mem_min; +for(k= p;k<=lo_mem_max;k++)dump_wd(mem[k]); +x= x+lo_mem_max+1-p; +dump_int(hi_mem_min);dump_int(avail); +for(k= hi_mem_min;k<=mem_end;k++)dump_wd(mem[k]); +x= x+mem_end+1-hi_mem_min; +p= avail; +while(p!=null) +{decr(dyn_used);p= link(p); +} +dump_int(var_used);dump_int(dyn_used); +print_ln();print_int(x); +print_str(" memory locations dumped; current usage is "); +print_int(var_used);print_char('&');print_int(dyn_used) + +/*:1311*/ +#line 23768 "tex.w" +; +/*1313:*/ +#line 23962 "tex.w" + +/*1315:*/ +#line 23980 "tex.w" + +k= active_base; +do{j= k; +while(j<int_base-1) +{if((equiv(j)==equiv(j+1))&&(eq_type(j)==eq_type(j+1))&& +(eq_level(j)==eq_level(j+1)))goto found1; +incr(j); +} +l= int_base;goto done1; +found1:incr(j);l= j; +while(j<int_base-1) +{if((equiv(j)!=equiv(j+1))||(eq_type(j)!=eq_type(j+1))|| +(eq_level(j)!=eq_level(j+1)))goto done1; +incr(j); +} +done1:dump_int(l-k); +while(k<l) +{dump_wd(eqtb[k]);incr(k); +} +k= j+1;dump_int(k-l); +}while(!(k==int_base)) + +/*:1315*/ +#line 23963 "tex.w" +; +/*1316:*/ +#line 24002 "tex.w" + +do{j= k; +while(j<eqtb_size) +{if(eqtb[j].i==eqtb[j+1].i)goto found2; +incr(j); +} +l= eqtb_size+1;goto done2; +found2:incr(j);l= j; +while(j<eqtb_size) +{if(eqtb[j].i!=eqtb[j+1].i)goto done2; +incr(j); +} +done2:dump_int(l-k); +while(k<l) +{dump_wd(eqtb[k]);incr(k); +} +k= j+1;dump_int(k-l); +}while(!(k> eqtb_size)) + +/*:1316*/ +#line 23964 "tex.w" +; +dump_int(par_loc);dump_int(write_loc); +/*1318:*/ +#line 24038 "tex.w" + +dump_int(hash_used);cs_count= frozen_control_sequence-1-hash_used; +for(p= hash_base;p<=hash_used;p++)if(text(p)!=0) +{dump_int(p);dump_hh(hash[p]);incr(cs_count); +} +for(p= hash_used+1;p<=undefined_control_sequence-1;p++)dump_hh(hash[p]); +dump_int(cs_count); +print_ln();print_int(cs_count);print_str(" multiletter control sequences") + +/*:1318*/ +#line 23966 "tex.w" + + +/*:1313*/ +#line 23769 "tex.w" +; +/*1320:*/ +#line 24054 "tex.w" + +dump_int(fmem_ptr); +for(k= 0;k<=fmem_ptr-1;k++)dump_wd(font_info[k]); +dump_int(font_ptr); +for(k= null_font;k<=font_ptr;k++) +/*1322:*/ +#line 24071 "tex.w" + +{dump_qqqq(font_check[k]); +dump_int(font_size[k]); +dump_int(font_dsize[k]); +dump_int(font_params[k]); +dump_int(hyphen_char[k]); +dump_int(skew_char[k]); +dump_int(font_name[k]); +dump_int(font_area[k]); +dump_int(font_bc[k]); +dump_int(font_ec[k]); +dump_int(char_base[k]); +dump_int(width_base[k]); +dump_int(height_base[k]); +dump_int(depth_base[k]); +dump_int(italic_base[k]); +dump_int(lig_kern_base[k]); +dump_int(kern_base[k]); +dump_int(exten_base[k]); +dump_int(param_base[k]); +dump_int(font_glue[k]); +dump_int(bchar_label[k]); +dump_int(font_bchar[k]); +dump_int(font_false_bchar[k]); +print_nl("\\font");print_esc(font_id_text(k));print_char('='); +print_file_name(font_name[k],font_area[k],empty_string); +if(font_size[k]!=font_dsize[k]) +{print_str(" at ");print_scaled(font_size[k]);print_str("pt"); +} +} + +/*:1322*/ +#line 24059 "tex.w" +; +print_ln();print_int(fmem_ptr-7);print_str(" words of font info for "); +print_int(font_ptr-font_base);print_str(" preloaded font"); +if(font_ptr!=font_base+1)print_char('s') + +/*:1320*/ +#line 23770 "tex.w" +; +/*1324:*/ +#line 24128 "tex.w" + +dump_int(hyph_count); +for(k= 0;k<=hyph_size;k++)if(hyph_word[k]!=0) +{dump_int(k);dump_int(hyph_word[k]);dump_int(hyph_list[k]); +} +print_ln();print_int(hyph_count);print_str(" hyphenation exception"); +if(hyph_count!=1)print_char('s'); +if(trie_not_ready)init_trie(); +dump_int(trie_max); +for(k= 0;k<=trie_max;k++)dump_hh(trie[k]); +dump_int(trie_op_ptr); +for(k= 1;k<=trie_op_ptr;k++) +{dump_int(hyf_distance[k]); +dump_int(hyf_num[k]); +dump_int(hyf_next[k]); +} +print_nl("Hyphenation trie of length ");print_int(trie_max); + +print_str(" has ");print_int(trie_op_ptr);print_str(" op"); +if(trie_op_ptr!=1)print_char('s'); +print_str(" out of ");print_int(trie_op_size); +for(k= 255;k>=0;k--)if(trie_used[k]> min_quarterword) +{print_nl(" ");print_int(qo(trie_used[k])); +print_str(" for language ");print_int(k); +dump_int(k);dump_int(qo(trie_used[k])); +} + +/*:1324*/ +#line 23771 "tex.w" +; +/*1326:*/ +#line 24198 "tex.w" + +dump_int(interaction);dump_int(format_ident);dump_int(69069); +tracing_stats= 0 + +/*:1326*/ +#line 23772 "tex.w" +; +/*1329:*/ +#line 24225 "tex.w" + +w_close(&fmt_file) + +/*:1329*/ +#line 23773 "tex.w" +; +} +#endif + +/*:1302*//*1348:*/ +#line 24663 "tex.w" + +/*1349:*/ +#line 24684 "tex.w" + +void new_whatsit(small_number s,small_number w) +{pointer p; +p= get_node(w);type(p)= whatsit_node;subtype(p)= s; +link(tail)= p;tail= p; +} + +/*:1349*//*1350:*/ +#line 24694 "tex.w" + +void new_write_whatsit(small_number w) +{new_whatsit(cur_chr,w); +if(w!=write_node_size)scan_four_bit_int(); +else{scan_int(); +if(cur_val<0)cur_val= 17; +else if(cur_val> 15)cur_val= 16; +} +write_stream(tail)= cur_val; +} + +/*:1350*/ +#line 24664 "tex.w" + +void do_extension(void) +{int k; +pointer p; +switch(cur_chr){ +case open_node:/*1351:*/ +#line 24705 "tex.w" + +{new_write_whatsit(open_node_size); +scan_optional_equals();scan_file_name(); +open_name(tail)= cur_name;open_area(tail)= cur_area;open_ext(tail)= cur_ext; +} + +/*:1351*/ +#line 24669 "tex.w" +break; +case write_node:/*1352:*/ +#line 24715 "tex.w" + +{k= cur_cs;new_write_whatsit(write_node_size); +cur_cs= k;p= scan_toks(false,false);write_tokens(tail)= def_ref; +} + +/*:1352*/ +#line 24670 "tex.w" +break; +case close_node:/*1353:*/ +#line 24720 "tex.w" + +{new_write_whatsit(write_node_size);write_tokens(tail)= null; +} + +/*:1353*/ +#line 24671 "tex.w" +break; +case special_node:/*1354:*/ +#line 24727 "tex.w" + +{new_whatsit(special_node,write_node_size);write_stream(tail)= null; +p= scan_toks(false,true);write_tokens(tail)= def_ref; +} + +/*:1354*/ +#line 24672 "tex.w" +break; +case immediate_code:/*1375:*/ +#line 24950 "tex.w" + +{get_x_token(); +if((cur_cmd==extension)&&(cur_chr<=close_node)) +{p= tail;do_extension(); +out_what(tail); +flush_node_list(tail);tail= p;link(p)= null; +} +else back_input(); +} + +/*:1375*/ +#line 24673 "tex.w" +break; +case set_language_code:/*1377:*/ +#line 24978 "tex.w" + +if(abs(mode)!=hmode)report_illegal_case(); +else{new_whatsit(language_node,small_node_size); +scan_int(); +if(cur_val<=0)clang= 0; +else if(cur_val> 255)clang= 0; +else clang= cur_val; +what_lang(tail)= clang; +what_lhm(tail)= norm_min(left_hyphen_min); +what_rhm(tail)= norm_min(right_hyphen_min); +} + +/*:1377*/ +#line 24674 "tex.w" +break; +default:confusion(/*1788:*/ +#line 26260 "tex.w" +663 +/*:1788*/ +#line 24675 "tex.w" +); + +} +} + +/*:1348*//*1376:*/ +#line 24964 "tex.w" + +void fix_language(void) +{ASCII_code l; +if(language<=0)l= 0; +else if(language> 255)l= 0; +else l= language; +if(l!=clang) +{new_whatsit(language_node,small_node_size); +what_lang(tail)= l;clang= l; +what_lhm(tail)= norm_min(left_hyphen_min); +what_rhm(tail)= norm_min(right_hyphen_min); +} +} + +/*:1376*/ +#line 20035 "tex.w" + +/*1068:*/ +#line 20717 "tex.w" + +void handle_right_brace(void) +{pointer p,q; +scaled d; +int f; +switch(cur_group){ +case simple_group:unsave();break; +case bottom_level:{print_err("Too many }'s"); + +help2("You've closed more groups than you opened.") +("Such booboos are generally harmless, so keep going.");error(); +}break; +case semi_simple_group:case math_shift_group:case math_left_group:extra_right_brace();break; +/*1085:*/ +#line 21055 "tex.w" + +case hbox_group:package(0);break; +case adjusted_hbox_group:{adjust_tail= adjust_head;package(0); +}break; +case vbox_group:{end_graf();package(0); +}break; +case vtop_group:{end_graf();package(vtop_code); +}break; + +/*:1085*//*1100:*/ +#line 21212 "tex.w" + +case insert_group:{end_graf();q= split_top_skip;add_glue_ref(q); +d= split_max_depth;f= floating_penalty;unsave();decr(save_ptr); + +p= vpack(link(head),natural);pop_nest(); +if(saved(0)<255) +{tail_append(get_node(ins_node_size)); +type(tail)= ins_node;subtype(tail)= qi(saved(0)); +height(tail)= height(p)+depth(p);ins_ptr(tail)= list_ptr(p); +split_top_ptr(tail)= q;depth(tail)= d;float_cost(tail)= f; +} +else{tail_append(get_node(small_node_size)); +type(tail)= adjust_node; +subtype(tail)= 0; +adjust_ptr(tail)= list_ptr(p);delete_glue_ref(q); +} +free_node(p,box_node_size); +if(nest_ptr==0)build_page(); +}break; +case output_group:/*1026:*/ +#line 19949 "tex.w" + +{if((loc!=null)|| +((token_type!=output_text)&&(token_type!=backed_up))) +/*1027:*/ +#line 19969 "tex.w" + +{print_err("Unbalanced output routine"); + +help2("Your sneaky output routine has problematic {'s and/or }'s.") +("I can't handle that very well; good luck.");error(); +do{get_token(); +}while(!(loc==null)); +} + +/*:1027*/ +#line 19952 "tex.w" +; +end_token_list(); +end_graf();unsave();output_active= false;insert_penalties= 0; +/*1028:*/ +#line 19978 "tex.w" + +if(box(255)!=null) +{print_err("Output routine didn't use all of "); +print_esc(/*1437:*/ +#line 25207 "tex.w" +312 +/*:1437*/ +#line 19981 "tex.w" +);print_int(255); + +help3("Your \\output commands should empty \\box255,") +("e.g., by saying `\\shipout\\box255'.") +("Proceed; I'll discard its present contents."); +box_error(255); +} + +/*:1028*/ +#line 19955 "tex.w" +; +if(tail!=head) +{link(page_tail)= link(head); +page_tail= tail; +} +if(link(page_head)!=null) +{if(link(contrib_head)==null)contrib_tail= page_tail; +link(page_tail)= link(contrib_head); +link(contrib_head)= link(page_head); +link(page_head)= null;page_tail= page_head; +} +pop_nest();build_page(); +} + +/*:1026*/ +#line 21231 "tex.w" +break; + +/*:1100*//*1118:*/ +#line 21414 "tex.w" + +case disc_group:build_discretionary();break; + +/*:1118*//*1132:*/ +#line 21650 "tex.w" + +case align_group:{back_input();cur_tok= cs_token_flag+frozen_cr; +print_err("Missing ");print_esc(/*1670:*/ +#line 25906 "tex.w" +545 +/*:1670*/ +#line 21652 "tex.w" +);print_str(" inserted"); + +help1("I'm guessing that you meant to end an alignment here."); +ins_error(); +}break; + +/*:1132*//*1133:*/ +#line 21658 "tex.w" + +case no_align_group:{end_graf();unsave();align_peek(); +}break; + +/*:1133*//*1168:*/ +#line 22111 "tex.w" + +case vcenter_group:{end_graf();unsave();save_ptr= save_ptr-2; +p= vpack(link(head),saved(1),saved(0));pop_nest(); +tail_append(new_noad());type(tail)= vcenter_noad; +math_type(nucleus(tail))= sub_box;info(nucleus(tail))= p; +}break; + +/*:1168*//*1173:*/ +#line 22149 "tex.w" + +case math_choice_group:build_choices();break; + +/*:1173*//*1186:*/ +#line 22323 "tex.w" + +case math_group:{unsave();decr(save_ptr); +math_type(saved(0))= sub_mlist;p= fin_mlist(null);info(saved(0))= p; +if(p!=null)if(link(p)==null) +if(type(p)==ord_noad) +{if(math_type(subscr(p))==empty) +if(math_type(supscr(p))==empty) +{mem[saved(0)].hh= mem[nucleus(p)].hh; +free_node(p,noad_size); +} +} +else if(type(p)==accent_noad)if(saved(0)==nucleus(tail)) +if(type(tail)==ord_noad)/*1187:*/ +#line 22338 "tex.w" + +{q= head;while(link(q)!=tail)q= link(q); +link(q)= p;free_node(tail,noad_size);tail= p; +} + +/*:1187*/ +#line 22335 "tex.w" +; +}break; + +/*:1186*/ +#line 20730 "tex.w" + +default:confusion(/*1711:*/ +#line 26029 "tex.w" +586 +/*:1711*/ +#line 20731 "tex.w" +); + +} +} + +/*:1068*/ +#line 20036 "tex.w" + +void main_control(void) +{ + + + + +int t; +if(every_job!=null)begin_token_list(every_job,every_job_text); +big_switch:get_x_token(); +reswitch:/*1031:*/ +#line 20071 "tex.w" + +if(interrupt!=0)if(OK_to_interrupt) +{back_input();check_interrupt;goto big_switch; +} +#ifdef DEBUG +if(panicking)check_mem(false); +#endif +if(tracing_commands> 0)show_cur_cmd_chr() + +/*:1031*/ +#line 20046 "tex.w" +; +switch(abs(mode)+cur_cmd){ +case hmode+letter:case hmode+other_char:case hmode+char_given:goto main_loop; +case hmode+char_num:{scan_char_num();cur_chr= cur_val;goto main_loop;} +case hmode+no_boundary:{get_x_token(); +if((cur_cmd==letter)||(cur_cmd==other_char)||(cur_cmd==char_given)|| +(cur_cmd==char_num))cancel_boundary= true; +goto reswitch; +} +case hmode+spacer:if(space_factor==1000)goto append_normal_space; +else app_space();break; +case hmode+ex_space:case mmode+ex_space:goto append_normal_space; +/*1045:*/ +#line 20385 "tex.w" + +any_mode(relax):case vmode+spacer:case mmode+spacer:case mmode+no_boundary:do_nothing; +any_mode(ignore_spaces):{/*406:*/ +#line 8269 "tex.w" + +do{get_x_token(); +}while(!(cur_cmd!=spacer)) + +/*:406*/ +#line 20387 "tex.w" +; +goto reswitch; +} +case vmode+stop:if(its_all_over())return;break; +/*1048:*/ +#line 20432 "tex.w" + +case vmode+vmove:case hmode+hmove:case mmode+hmove:any_mode(last_item): + +/*:1048*//*1098:*/ +#line 21193 "tex.w" + +case vmode+vadjust: + +/*:1098*//*1111:*/ +#line 21353 "tex.w" +case vmode+ital_corr: + +/*:1111*//*1144:*/ +#line 21749 "tex.w" +non_math(eq_no): + +/*:1144*/ +#line 20391 "tex.w" +any_mode(mac_param): +report_illegal_case();break; +/*1046:*/ +#line 20403 "tex.w" + +non_math(sup_mark):non_math(sub_mark):non_math(math_char_num): +non_math(math_given):non_math(math_comp):non_math(delim_num): +non_math(left_right):non_math(above):non_math(radical): +non_math(math_style):non_math(math_choice):non_math(vcenter): +non_math(non_script):non_math(mkern):non_math(limit_switch): +non_math(mskip):non_math(math_accent): +case mmode+endv:case mmode+par_end:case mmode+stop:case mmode+vskip:case mmode+un_vbox: +case mmode+valign:case mmode+hrule + +/*:1046*/ +#line 20393 "tex.w" +:insert_dollar_sign();break; +/*1056:*/ +#line 20521 "tex.w" + +case vmode+hrule:case hmode+vrule:case mmode+vrule:{tail_append(scan_rule_spec()); +if(abs(mode)==vmode)prev_depth= ignore_depth; +else if(abs(mode)==hmode)space_factor= 1000; +}break; + +/*:1056*//*1057:*/ +#line 20532 "tex.w" + +case vmode+vskip:case hmode+hskip:case mmode+hskip:case mmode+mskip:append_glue();break; +any_mode(kern):case mmode+mkern:append_kern();break; + +/*:1057*//*1063:*/ +#line 20645 "tex.w" + +non_math(left_brace):new_save_level(simple_group);break; +any_mode(begin_group):new_save_level(semi_simple_group);break; +any_mode(end_group):if(cur_group==semi_simple_group)unsave(); +else off_save();break; + +/*:1063*//*1067:*/ +#line 20714 "tex.w" + +any_mode(right_brace):handle_right_brace();break; + +/*:1067*//*1073:*/ +#line 20858 "tex.w" + +case vmode+hmove:case hmode+vmove:case mmode+vmove:{t= cur_chr; +scan_normal_dimen; +if(t==0)scan_box(cur_val);else scan_box(-cur_val); +}break; +any_mode(leader_ship):scan_box(leader_flag-a_leaders+cur_chr);break; +any_mode(make_box):begin_box(0);break; + +/*:1073*//*1090:*/ +#line 21101 "tex.w" + +case vmode+start_par:new_graf(cur_chr> 0);break; +case vmode+letter:case vmode+other_char:case vmode+char_num:case vmode+char_given: +case vmode+math_shift:case vmode+un_hbox:case vmode+vrule: +case vmode+accent:case vmode+discretionary:case vmode+hskip:case vmode+valign: +case vmode+ex_space:case vmode+no_boundary: +{back_input();new_graf(true); +}break; + +/*:1090*//*1092:*/ +#line 21130 "tex.w" + +case hmode+start_par:case mmode+start_par:indent_in_hmode();break; + +/*:1092*//*1094:*/ +#line 21150 "tex.w" + +case vmode+par_end:{normal_paragraph(); +if(mode> 0)build_page(); +}break; +case hmode+par_end:{if(align_state<0)off_save(); + +end_graf(); +if(mode==vmode)build_page(); +}break; +case hmode+stop:case hmode+vskip:case hmode+hrule:case hmode+un_vbox:case hmode+halign:head_for_vmode();break; + +/*:1094*//*1097:*/ +#line 21189 "tex.w" + +any_mode(insert):case hmode+vadjust:case mmode+vadjust:begin_insert_or_adjust();break; +any_mode(mark):make_mark();break; + +/*:1097*//*1102:*/ +#line 21244 "tex.w" + +any_mode(break_penalty):append_penalty();break; + +/*:1102*//*1104:*/ +#line 21260 "tex.w" + +any_mode(remove_item):delete_last();break; + +/*:1104*//*1109:*/ +#line 21327 "tex.w" + +case vmode+un_vbox:case hmode+un_hbox:case mmode+un_hbox:unpackage();break; + +/*:1109*//*1112:*/ +#line 21359 "tex.w" + +case hmode+ital_corr:append_italic_correction();break; +case mmode+ital_corr:tail_append(new_kern(0))break; + +/*:1112*//*1116:*/ +#line 21391 "tex.w" + +case hmode+discretionary:case mmode+discretionary:append_discretionary();break; + +/*:1116*//*1122:*/ +#line 21482 "tex.w" + +case hmode+accent:make_accent();break; + +/*:1122*//*1126:*/ +#line 21552 "tex.w" + +any_mode(car_ret):any_mode(tab_mark):align_error();break; +any_mode(no_align):no_align_error();break; +any_mode(omit):omit_error();break; + +/*:1126*//*1130:*/ +#line 21619 "tex.w" + +case vmode+halign:case hmode+valign:init_align();break; +case mmode+halign:if(privileged()) +if(cur_group==math_shift_group)init_align(); +else off_save();break; +case vmode+endv:case hmode+endv:do_endv();break; + +/*:1130*//*1134:*/ +#line 21664 "tex.w" + +any_mode(end_cs_name):cs_error();break; + +/*:1134*//*1137:*/ +#line 21695 "tex.w" + +case hmode+math_shift:init_math();break; + +/*:1137*//*1140:*/ +#line 21725 "tex.w" + +case mmode+eq_no:if(privileged()) +if(cur_group==math_shift_group)start_eq_no(); +else off_save();break; + +/*:1140*//*1150:*/ +#line 21863 "tex.w" + +case mmode+left_brace:{tail_append(new_noad()); +back_input();scan_math(nucleus(tail)); +}break; + +/*:1150*//*1154:*/ +#line 21927 "tex.w" + +case mmode+letter:case mmode+other_char:case mmode+char_given: +set_math_char(ho(math_code(cur_chr)));break; +case mmode+char_num:{scan_char_num();cur_chr= cur_val; +set_math_char(ho(math_code(cur_chr))); +}break; +case mmode+math_char_num:{scan_fifteen_bit_int();set_math_char(cur_val); +}break; +case mmode+math_given:set_math_char(cur_chr);break; +case mmode+delim_num:{scan_twenty_seven_bit_int(); +set_math_char(cur_val/010000); +}break; + +/*:1154*//*1158:*/ +#line 22011 "tex.w" + +case mmode+math_comp:{tail_append(new_noad()); +type(tail)= cur_chr;scan_math(nucleus(tail)); +}break; +case mmode+limit_switch:math_limit_switch();break; + +/*:1158*//*1162:*/ +#line 22063 "tex.w" + +case mmode+radical:math_radical();break; + +/*:1162*//*1164:*/ +#line 22076 "tex.w" + +case mmode+accent:case mmode+math_accent:math_ac();break; + +/*:1164*//*1167:*/ +#line 22105 "tex.w" + +case mmode+vcenter:{scan_spec(vcenter_group,false);normal_paragraph(); +push_nest();mode= -vmode;prev_depth= ignore_depth; +if(every_vbox!=null)begin_token_list(every_vbox,every_vbox_text); +}break; + +/*:1167*//*1171:*/ +#line 22133 "tex.w" + +case mmode+math_style:tail_append(new_style(cur_chr))break; +case mmode+non_script:{tail_append(new_glue(zero_glue)); +subtype(tail)= cond_math_glue; +}break; +case mmode+math_choice:append_choices();break; + +/*:1171*//*1175:*/ +#line 22173 "tex.w" + +case mmode+sub_mark:case mmode+sup_mark:sub_sup();break; + +/*:1175*//*1180:*/ +#line 22243 "tex.w" + +case mmode+above:math_fraction();break; + +/*:1180*//*1190:*/ +#line 22358 "tex.w" + +case mmode+left_right:math_left_right();break; + +/*:1190*//*1193:*/ +#line 22394 "tex.w" + +case mmode+math_shift:if(cur_group==math_shift_group)after_math(); +else off_save();break; + +/*:1193*/ +#line 20394 "tex.w" + +/*1210:*/ +#line 22681 "tex.w" + +any_mode(toks_register): +any_mode(assign_toks): +any_mode(assign_int): +any_mode(assign_dimen): +any_mode(assign_glue): +any_mode(assign_mu_glue): +any_mode(assign_font_dimen): +any_mode(assign_font_int): +any_mode(set_aux): +any_mode(set_prev_graf): +any_mode(set_page_dimen): +any_mode(set_page_int): +any_mode(set_box_dimen): +any_mode(set_shape): +any_mode(def_code): +any_mode(def_family): +any_mode(set_font): +any_mode(def_font): +any_mode(register): +any_mode(advance): +any_mode(multiply): +any_mode(divide): +any_mode(prefix): +any_mode(let): +any_mode(shorthand_def): +any_mode(read_to_cs): +any_mode(def): +any_mode(set_box): +any_mode(hyph_data): +any_mode(set_interaction):prefixed_command();break; + +/*:1210*//*1268:*/ +#line 23463 "tex.w" + +any_mode(after_assignment):{get_token();after_token= cur_tok; +}break; + +/*:1268*//*1271:*/ +#line 23484 "tex.w" + +any_mode(after_group):{get_token();save_for_after(cur_tok); +}break; + +/*:1271*//*1274:*/ +#line 23500 "tex.w" + +any_mode(in_stream):open_or_close_in();break; + +/*:1274*//*1276:*/ +#line 23522 "tex.w" + +any_mode(message):issue_message();break; + +/*:1276*//*1285:*/ +#line 23589 "tex.w" + +any_mode(case_shift):shift_case();break; + +/*:1285*//*1290:*/ +#line 23631 "tex.w" + +any_mode(xray):show_whatever();break; + +/*:1290*/ +#line 20395 "tex.w" + +/*1347:*/ +#line 24660 "tex.w" + +any_mode(extension):do_extension(); + +/*:1347*/ +#line 20396 "tex.w" + + +/*:1045*/ +#line 20058 "tex.w" + +} +goto big_switch; +main_loop:/*1034:*/ +#line 20136 "tex.w" + +adjust_space_factor; +main_f= cur_font; +bchar= font_bchar[main_f];false_bchar= font_false_bchar[main_f]; +if(mode> 0)if(language!=clang)fix_language(); +fast_get_avail(lig_stack);font(lig_stack)= main_f;cur_l= qi(cur_chr); +character(lig_stack)= cur_l; +cur_q= tail; +if(cancel_boundary) +{cancel_boundary= false;main_k= non_address; +} +else main_k= bchar_label[main_f]; +if(main_k==non_address)goto main_loop_move2; +cur_r= cur_l;cur_l= non_char; +goto main_lig_loop1; + +main_loop_wrapup:/*1035:*/ +#line 20194 "tex.w" + +wrapup(rt_hit) + +/*:1035*/ +#line 20153 "tex.w" +; +main_loop_move:/*1036:*/ +#line 20197 "tex.w" + + +if(lig_stack==null)goto reswitch; +cur_q= tail;cur_l= character(lig_stack); +main_loop_move1:if(!is_char_node(lig_stack))goto main_loop_move_lig; +main_loop_move2:if((cur_chr<font_bc[main_f])||(cur_chr> font_ec[main_f])) +{char_warning(main_f,cur_chr);free_avail(lig_stack);goto big_switch; +} +main_i= char_info(main_f)(cur_l); +if(!char_exists(main_i)) +{char_warning(main_f,cur_chr);free_avail(lig_stack);goto big_switch; +} +link(tail)= lig_stack;tail= lig_stack + +/*:1036*/ +#line 20156 "tex.w" +; +main_loop_lookahead:/*1038:*/ +#line 20229 "tex.w" + +get_next(); +if(cur_cmd==letter)goto main_loop_lookahead1; +if(cur_cmd==other_char)goto main_loop_lookahead1; +if(cur_cmd==char_given)goto main_loop_lookahead1; +x_token(); +if(cur_cmd==letter)goto main_loop_lookahead1; +if(cur_cmd==other_char)goto main_loop_lookahead1; +if(cur_cmd==char_given)goto main_loop_lookahead1; +if(cur_cmd==char_num) +{scan_char_num();cur_chr= cur_val;goto main_loop_lookahead1; +} +if(cur_cmd==no_boundary)bchar= non_char; +cur_r= bchar;lig_stack= null;goto main_lig_loop; +main_loop_lookahead1:adjust_space_factor; +fast_get_avail(lig_stack);font(lig_stack)= main_f; +cur_r= qi(cur_chr);character(lig_stack)= cur_r; +if(cur_r==false_bchar)cur_r= non_char + +/*:1038*/ +#line 20158 "tex.w" +; +main_lig_loop:/*1039:*/ +#line 20258 "tex.w" + +if(char_tag(main_i)!=lig_tag)goto main_loop_wrapup; +if(cur_r==non_char)goto main_loop_wrapup; +main_k= lig_kern_start(main_f)(main_i);main_j= font_info[main_k].qqqq; +if(skip_byte(main_j)<=stop_flag)goto main_lig_loop2; +main_k= lig_kern_restart(main_f)(main_j); +main_lig_loop1:main_j= font_info[main_k].qqqq; +main_lig_loop2:if(next_char(main_j)==cur_r) +if(skip_byte(main_j)<=stop_flag) +/*1040:*/ +#line 20284 "tex.w" + +{if(op_byte(main_j)>=kern_flag) +{wrapup(rt_hit); +tail_append(new_kern(char_kern(main_f)(main_j)));goto main_loop_move; +} +if(cur_l==non_char)lft_hit= true; +else if(lig_stack==null)rt_hit= true; +check_interrupt; +switch(op_byte(main_j)){ +qi(case 1):qi(case 5):{cur_l= rem_byte(main_j); +main_i= char_info(main_f)(cur_l);ligature_present= true; +}break; +qi(case 2):qi(case 6):{cur_r= rem_byte(main_j); +if(lig_stack==null) +{lig_stack= new_lig_item(cur_r);bchar= non_char; +} +else if(is_char_node(lig_stack)) +{main_p= lig_stack;lig_stack= new_lig_item(cur_r); +lig_ptr(lig_stack)= main_p; +} +else character(lig_stack)= cur_r; +}break; +qi(case 3):{cur_r= rem_byte(main_j); +main_p= lig_stack;lig_stack= new_lig_item(cur_r); +link(lig_stack)= main_p; +}break; +qi(case 7):qi(case 11):{wrapup(false); +cur_q= tail;cur_l= rem_byte(main_j); +main_i= char_info(main_f)(cur_l);ligature_present= true; +}break; +default:{cur_l= rem_byte(main_j);ligature_present= true; +if(lig_stack==null)goto main_loop_wrapup; +else goto main_loop_move1; +} +} +if(op_byte(main_j)> qi(4)) +if(op_byte(main_j)!=qi(7))goto main_loop_wrapup; +if(cur_l<non_char)goto main_lig_loop; +main_k= bchar_label[main_f];goto main_lig_loop1; +} + +/*:1040*/ +#line 20268 "tex.w" +; +if(skip_byte(main_j)==qi(0))incr(main_k); +else{if(skip_byte(main_j)>=stop_flag)goto main_loop_wrapup; +main_k= main_k+qo(skip_byte(main_j))+1; +} +goto main_lig_loop1 + +/*:1039*/ +#line 20160 "tex.w" +; +main_loop_move_lig:/*1037:*/ +#line 20214 "tex.w" + +main_p= lig_ptr(lig_stack); +if(main_p> null)tail_append(main_p); +temp_ptr= lig_stack;lig_stack= link(temp_ptr); +free_node(temp_ptr,small_node_size); +main_i= char_info(main_f)(cur_l);ligature_present= true; +if(lig_stack==null) +if(main_p> null)goto main_loop_lookahead; +else cur_r= bchar; +else cur_r= character(lig_stack); +goto main_lig_loop + +/*:1037*/ +#line 20162 "tex.w" + + +/*:1034*/ +#line 20062 "tex.w" +; +append_normal_space:/*1041:*/ +#line 20336 "tex.w" + +if(space_skip==zero_glue) +{/*1042:*/ +#line 20350 "tex.w" + +{main_p= font_glue[cur_font]; +if(main_p==null) +{main_p= new_spec(zero_glue);main_k= param_base[cur_font]+space_code; +width(main_p)= font_info[main_k].sc; +stretch(main_p)= font_info[main_k+1].sc; +shrink(main_p)= font_info[main_k+2].sc; +font_glue[cur_font]= main_p; +} +} + +/*:1042*/ +#line 20338 "tex.w" +; +temp_ptr= new_glue(main_p); +} +else temp_ptr= new_param_glue(space_skip_code); +link(tail)= temp_ptr;tail= temp_ptr; +goto big_switch + +/*:1041*/ +#line 20064 "tex.w" +; +} + +/*:1030*//*1284:*/ +#line 23582 "tex.w" +void give_err_help(void) +{token_show(err_help); +} + +/*:1284*//*1303:*/ +#line 23787 "tex.w" +/*523:*/ +#line 10180 "tex.w" + +bool open_fmt_file(void) +{ +uint16_t j; +j= loc; +if(buffer[loc]=='&') +{incr(loc);j= loc;buffer[last]= ' '; +while(buffer[j]!=' ')incr(j); +pack_buffered_name(0,loc,j-1); +if(w_open_in(&fmt_file))goto found; +pack_buffered_name(format_area_length,loc,j-1); + +if(w_open_in(&fmt_file))goto found; +wake_up_terminal; +wterm_ln("Sorry, I can't find that format; will try PLAIN."); + +update_terminal; +} + +pack_buffered_name(format_default_length-format_ext_length,1,0); +if(!w_open_in(&fmt_file)) +{wake_up_terminal; +wterm_ln("I can't find the PLAIN format file!"); + + +return false; +} +found:loc= j;return true; +} + +/*:523*/ +#line 23787 "tex.w" + +bool load_fmt_file(void) +{ +int j,k; +pointer p,q; +int x; +four_quarters w; +/*1308:*/ +#line 23863 "tex.w" + +x= fmt_file.d.i; +if(x!=0)goto bad_fmt; +undump_int(x); +if(x!=mem_bot)goto bad_fmt; +undump_int(x); +if(x!=mem_top)goto bad_fmt; +undump_int(x); +if(x!=eqtb_size)goto bad_fmt; +undump_int(x); +if(x!=hash_prime)goto bad_fmt; +undump_int(x); +if(x!=hyph_size)goto bad_fmt + +/*:1308*/ +#line 23794 "tex.w" +; +/*1310:*/ +#line 23899 "tex.w" + +undump_size(0)(pool_size)("string pool size")(pool_ptr); +undump_size(0)(max_strings)("max strings")(str_ptr); +for(k= 0;k<=str_ptr;k++)undump(0)(pool_ptr)(str_start[k]); +k= 0; +while(k+4<pool_ptr) +{undump_four_ASCII;k= k+4; +} +k= pool_ptr-4;undump_four_ASCII; +init_str_ptr= str_ptr;init_pool_ptr= pool_ptr + +/*:1310*/ +#line 23795 "tex.w" +; +/*1312:*/ +#line 23940 "tex.w" + +undump(lo_mem_stat_max+1000)(hi_mem_stat_min-1)(lo_mem_max); +undump(lo_mem_stat_max+1)(lo_mem_max)(rover); +p= mem_bot;q= rover; +do{for(k= p;k<=q+1;k++)undump_wd(mem[k]); +p= q+node_size(q); +if((p> lo_mem_max)||((q>=rlink(q))&&(rlink(q)!=rover)))goto bad_fmt; +q= rlink(q); +}while(!(q==rover)); +for(k= p;k<=lo_mem_max;k++)undump_wd(mem[k]); +if(mem_min<mem_bot-2) +{p= llink(rover);q= mem_min+1; +link(mem_min)= null;info(mem_min)= null; +rlink(p)= q;llink(rover)= q; +rlink(q)= rover;llink(q)= p;link(q)= empty_flag; +node_size(q)= mem_bot-q; +} +undump(lo_mem_max+1)(hi_mem_stat_min)(hi_mem_min); +undump(null)(mem_top)(avail);mem_end= mem_top; +for(k= hi_mem_min;k<=mem_end;k++)undump_wd(mem[k]); +undump_int(var_used);undump_int(dyn_used) + +/*:1312*/ +#line 23796 "tex.w" +; +/*1314:*/ +#line 23968 "tex.w" + +/*1317:*/ +#line 24021 "tex.w" + +k= active_base; +do{undump_int(x); +if((x<1)||(k+x> eqtb_size+1))goto bad_fmt; +for(j= k;j<=k+x-1;j++)undump_wd(eqtb[j]); +k= k+x; +undump_int(x); +if((x<0)||(k+x> eqtb_size+1))goto bad_fmt; +for(j= k;j<=k+x-1;j++)eqtb[j]= eqtb[k-1]; +k= k+x; +}while(!(k> eqtb_size)) + +/*:1317*/ +#line 23969 "tex.w" +; +undump(hash_base)(frozen_control_sequence)(par_loc); +par_token= cs_token_flag+par_loc; +undump(hash_base)(frozen_control_sequence)(write_loc); +/*1319:*/ +#line 24047 "tex.w" + +undump(hash_base)(frozen_control_sequence)(hash_used);p= hash_base-1; +do{undump(p+1)(hash_used)(p);undump_hh(hash[p]); +}while(!(p==hash_used)); +for(p= hash_used+1;p<=undefined_control_sequence-1;p++)undump_hh(hash[p]); +undump_int(cs_count) + +/*:1319*/ +#line 23973 "tex.w" + + +/*:1314*/ +#line 23797 "tex.w" +; +/*1321:*/ +#line 24064 "tex.w" + +undump_size(7)(font_mem_size)("font mem size")(fmem_ptr); +for(k= 0;k<=fmem_ptr-1;k++)undump_wd(font_info[k]); +undump_size(font_base)(font_max)("font max")(font_ptr); +for(k= null_font;k<=font_ptr;k++) +/*1323:*/ +#line 24102 "tex.w" + +{undump_qqqq(font_check[k]); +undump_int(font_size[k]); +undump_int(font_dsize[k]); +undump(min_halfword)(max_halfword)(font_params[k]); +undump_int(hyphen_char[k]); +undump_int(skew_char[k]); +undump(0)(str_ptr)(font_name[k]); +undump(0)(str_ptr)(font_area[k]); +undump(0)(255)(font_bc[k]); +undump(0)(255)(font_ec[k]); +undump_int(char_base[k]); +undump_int(width_base[k]); +undump_int(height_base[k]); +undump_int(depth_base[k]); +undump_int(italic_base[k]); +undump_int(lig_kern_base[k]); +undump_int(kern_base[k]); +undump_int(exten_base[k]); +undump_int(param_base[k]); +undump(min_halfword)(lo_mem_max)(font_glue[k]); +undump(0)(fmem_ptr-1)(bchar_label[k]); +undump(min_quarterword)(non_char)(font_bchar[k]); +undump(min_quarterword)(non_char)(font_false_bchar[k]); +} + +/*:1323*/ +#line 24069 "tex.w" + + +/*:1321*/ +#line 23798 "tex.w" +; +/*1325:*/ +#line 24157 "tex.w" + +undump(0)(hyph_size)(hyph_count); +for(k= 1;k<=hyph_count;k++) +{undump(0)(hyph_size)(j); +undump(0)(str_ptr)(hyph_word[j]); +undump(min_halfword)(max_halfword)(hyph_list[j]); +} +undump_size(0)(trie_size)("trie size")(j); +#ifdef INIT +trie_max= j; +#endif +for(k= 0;k<=j;k++)undump_hh(trie[k]); +undump_size(0)(trie_op_size)("trie op size")(j); +#ifdef INIT +trie_op_ptr= j; +#endif +for(k= 1;k<=j;k++) +{undump(0)(63)(hyf_distance[k]); +undump(0)(63)(hyf_num[k]); +undump(min_quarterword)(max_quarterword)(hyf_next[k]); +} +#ifdef INIT +for(k= 0;k<=255;k++)trie_used[k]= min_quarterword; +#endif + +k= 256; +while(j> 0) +{undump(0)(k-1)(k);undump(1)(j)(x); +#ifdef INIT +trie_used[k]= qi(x); +#endif + +j= j-x;op_start[k]= qo(j); +} +#ifdef INIT +trie_not_ready= false +#endif + +/*:1325*/ +#line 23799 "tex.w" +; +/*1327:*/ +#line 24202 "tex.w" + +undump(batch_mode)(error_stop_mode)(interaction); +undump(0)(str_ptr)(format_ident); +undump_int(x); +if((x!=69069)||eof(fmt_file))goto bad_fmt + +/*:1327*/ +#line 23800 "tex.w" +; +return true; +bad_fmt:wake_up_terminal; +wterm_ln("(Fatal format file error; I'm stymied)"); + +return false; +} + +/*:1303*//*1330:*/ +#line 24235 "tex.w" +/*1333:*/ +#line 24329 "tex.w" + +void close_files_and_terminate(void) +{int k; +/*1378:*/ +#line 24990 "tex.w" + +for(k= 0;k<=15;k++)if(write_open[k])a_close(&write_file[k]) + +/*:1378*/ +#line 24332 "tex.w" +; +#ifdef STAT +if(tracing_stats> 0)/*1334:*/ +#line 24351 "tex.w" + +if(log_opened) +{wlog_ln(" "); +wlog_ln("Here is how much of TeX's memory you used:"); + +wlog(" %d string",str_ptr-init_str_ptr); +if(str_ptr!=init_str_ptr+1)wlog("s"); +wlog_ln(" out of %d",max_strings-init_str_ptr); +wlog_ln(" %d string characters out of %d",pool_ptr-init_pool_ptr, +pool_size-init_pool_ptr); +wlog_ln(" %d words of memory out of %d",lo_mem_max-mem_min+mem_end-hi_mem_min+2, +mem_end+1-mem_min); +wlog_ln(" %d multiletter control sequences out of %d",cs_count,hash_size); +wlog(" %d words of font info for %d font",fmem_ptr,font_ptr-font_base); +if(font_ptr!=font_base+1)wlog("s"); +wlog_ln(", out of %d for %d",font_mem_size,font_max-font_base); +wlog(" %d hyphenation exception",hyph_count); +if(hyph_count!=1)wlog("s"); +wlog_ln(" out of %d",hyph_size); +wlog_ln(" %di,%dn,%dp,%db,%ds stack positions out of %di,%dn,%dp,%db,%ds", +max_in_stack,max_nest_stack, +max_param_stack, +max_buf_stack+1, +max_save_stack+6, +stack_size, +nest_size, +param_size, +buf_size, +save_size); +} + +/*:1334*/ +#line 24334 "tex.w" +; +#endif +wake_up_terminal;/*642:*/ +#line 12800 "tex.w" + +while(cur_s> -1) +{if(cur_s> 0)dvi_out(pop) +else{dvi_out(eop);incr(total_pages); +} +decr(cur_s); +} +if(total_pages==0)print_nl("No pages of output."); + +else{dvi_out(post); +dvi_four(last_bop);last_bop= dvi_offset+dvi_ptr-5; +dvi_four(25400000);dvi_four(473628672); +prepare_mag();dvi_four(mag); +dvi_four(max_v);dvi_four(max_h); +dvi_out(max_push/256);dvi_out(max_push%256); +dvi_out((total_pages/256)%256);dvi_out(total_pages%256); +/*643:*/ +#line 12831 "tex.w" + +while(font_ptr> font_base) +{if(font_used[font_ptr])dvi_font_def(font_ptr); +decr(font_ptr); +} + +/*:643*/ +#line 12816 "tex.w" +; +dvi_out(post_post);dvi_four(last_bop);dvi_out(id_byte); +k= 4+((dvi_buf_size-dvi_ptr)%4); +while(k> 0) +{dvi_out(223);decr(k); +} +/*599:*/ +#line 11982 "tex.w" + +if(dvi_limit==half_buf)write_dvi(half_buf,dvi_buf_size-1); +if(dvi_ptr> 0)write_dvi(0,dvi_ptr-1) + +/*:599*/ +#line 12822 "tex.w" +; +print_nl("Output written on ");slow_print(output_file_name); + +print_str(" (");print_int(total_pages);print_str(" page"); +if(total_pages!=1)print_char('s'); +print_str(", ");print_int(dvi_offset+dvi_ptr);print_str(" bytes)."); +b_close(&dvi_file); +} + +/*:642*/ +#line 24336 "tex.w" +; +if(log_opened) +{wlog_cr;a_close(&log_file);selector= selector-2; +if(selector==term_only) +{print_nl("Transcript written on "); + +slow_print(log_name);print_char('.'); +} +} +} + +/*:1333*//*1335:*/ +#line 24385 "tex.w" + +void final_cleanup(void) +{ +small_number c; +c= cur_chr; +if(job_name==0)open_log_file(); +while(input_ptr> 0) +if(state==token_list)end_token_list();else end_file_reading(); +while(open_parens> 0) +{print_str(" )");decr(open_parens); +} +if(cur_level> level_one) +{print_nl("(");print_esc(/*1782:*/ +#line 26242 "tex.w" +657 +/*:1782*/ +#line 24397 "tex.w" +); +print_str("inside a group at level "); + +print_int(cur_level-level_one);print_char(')'); +} +while(cond_ptr!=null) +{print_nl("(");print_esc(/*1782:*/ +#line 26242 "tex.w" +657 +/*:1782*/ +#line 24403 "tex.w" +); +print_str("when ");print_cmd_chr(if_test,cur_if); +if(if_line!=0) +{print_str(" on line ");print_int(if_line); +} +print_str(" was incomplete)"); +if_line= if_line_field(cond_ptr); +cur_if= subtype(cond_ptr);temp_ptr= cond_ptr; +cond_ptr= link(cond_ptr);free_node(temp_ptr,if_node_size); +} +if(history!=spotless) +if(((history==warning_issued)||(interaction<error_stop_mode))) +if(selector==term_and_log) +{selector= term_only; +print_nl("(see the transcript file for additional information)"); + +selector= term_and_log; +} +if(c==1) +{ +#ifdef INIT +for(c= top_mark_code;c<=split_bot_mark_code;c++) +if(cur_mark[c]!=null)delete_token_ref(cur_mark[c]); +if(last_glue!=max_halfword)delete_glue_ref(last_glue); +store_fmt_file();return; +#endif +print_nl("(\\dump is performed only by INITEX)");return; + +} +} + +/*:1335*//*1336:*/ +#line 24434 "tex.w" + +#ifdef INIT +void init_prim(void) +{no_new_control_sequence= false; +/*226:*/ +#line 4700 "tex.w" + +primitive(/*1405:*/ +#line 25111 "tex.w" +280 +/*:1405*/ +#line 4701 "tex.w" +,assign_glue,glue_base+line_skip_code); + +primitive(/*1406:*/ +#line 25114 "tex.w" +281 +/*:1406*/ +#line 4703 "tex.w" +,assign_glue,glue_base+baseline_skip_code); + +primitive(/*1407:*/ +#line 25117 "tex.w" +282 +/*:1407*/ +#line 4705 "tex.w" +,assign_glue,glue_base+par_skip_code); + +primitive(/*1408:*/ +#line 25120 "tex.w" +283 +/*:1408*/ +#line 4707 "tex.w" +,assign_glue,glue_base+above_display_skip_code); + +primitive(/*1409:*/ +#line 25123 "tex.w" +284 +/*:1409*/ +#line 4709 "tex.w" +,assign_glue,glue_base+below_display_skip_code); + +primitive(/*1410:*/ +#line 25126 "tex.w" +285 +/*:1410*/ +#line 4711 "tex.w" +, +assign_glue,glue_base+above_display_short_skip_code); + +primitive(/*1411:*/ +#line 25129 "tex.w" +286 +/*:1411*/ +#line 4714 "tex.w" +, +assign_glue,glue_base+below_display_short_skip_code); + +primitive(/*1412:*/ +#line 25132 "tex.w" +287 +/*:1412*/ +#line 4717 "tex.w" +,assign_glue,glue_base+left_skip_code); + +primitive(/*1413:*/ +#line 25135 "tex.w" +288 +/*:1413*/ +#line 4719 "tex.w" +,assign_glue,glue_base+right_skip_code); + +primitive(/*1414:*/ +#line 25138 "tex.w" +289 +/*:1414*/ +#line 4721 "tex.w" +,assign_glue,glue_base+top_skip_code); + +primitive(/*1415:*/ +#line 25141 "tex.w" +290 +/*:1415*/ +#line 4723 "tex.w" +,assign_glue,glue_base+split_top_skip_code); + +primitive(/*1416:*/ +#line 25144 "tex.w" +291 +/*:1416*/ +#line 4725 "tex.w" +,assign_glue,glue_base+tab_skip_code); + +primitive(/*1417:*/ +#line 25147 "tex.w" +292 +/*:1417*/ +#line 4727 "tex.w" +,assign_glue,glue_base+space_skip_code); + +primitive(/*1418:*/ +#line 25150 "tex.w" +293 +/*:1418*/ +#line 4729 "tex.w" +,assign_glue,glue_base+xspace_skip_code); + +primitive(/*1419:*/ +#line 25153 "tex.w" +294 +/*:1419*/ +#line 4731 "tex.w" +,assign_glue,glue_base+par_fill_skip_code); + +primitive(/*1420:*/ +#line 25156 "tex.w" +295 +/*:1420*/ +#line 4733 "tex.w" +,assign_mu_glue,glue_base+thin_mu_skip_code); + +primitive(/*1421:*/ +#line 25159 "tex.w" +296 +/*:1421*/ +#line 4735 "tex.w" +,assign_mu_glue,glue_base+med_mu_skip_code); + +primitive(/*1422:*/ +#line 25162 "tex.w" +297 +/*:1422*/ +#line 4737 "tex.w" +,assign_mu_glue,glue_base+thick_mu_skip_code); + + +/*:226*//*230:*/ +#line 4821 "tex.w" + +primitive(/*1426:*/ +#line 25174 "tex.w" +301 +/*:1426*/ +#line 4822 "tex.w" +,assign_toks,output_routine_loc); + +primitive(/*1427:*/ +#line 25177 "tex.w" +302 +/*:1427*/ +#line 4824 "tex.w" +,assign_toks,every_par_loc); + +primitive(/*1428:*/ +#line 25180 "tex.w" +303 +/*:1428*/ +#line 4826 "tex.w" +,assign_toks,every_math_loc); + +primitive(/*1429:*/ +#line 25183 "tex.w" +304 +/*:1429*/ +#line 4828 "tex.w" +,assign_toks,every_display_loc); + +primitive(/*1430:*/ +#line 25186 "tex.w" +305 +/*:1430*/ +#line 4830 "tex.w" +,assign_toks,every_hbox_loc); + +primitive(/*1431:*/ +#line 25189 "tex.w" +306 +/*:1431*/ +#line 4832 "tex.w" +,assign_toks,every_vbox_loc); + +primitive(/*1432:*/ +#line 25192 "tex.w" +307 +/*:1432*/ +#line 4834 "tex.w" +,assign_toks,every_job_loc); + +primitive(/*1433:*/ +#line 25195 "tex.w" +308 +/*:1433*/ +#line 4836 "tex.w" +,assign_toks,every_cr_loc); + +primitive(/*1434:*/ +#line 25198 "tex.w" +309 +/*:1434*/ +#line 4838 "tex.w" +,assign_toks,err_help_loc); + + +/*:230*//*238:*/ +#line 5154 "tex.w" + +primitive(/*1446:*/ +#line 25234 "tex.w" +321 +/*:1446*/ +#line 5155 "tex.w" +,assign_int,int_base+pretolerance_code); + +primitive(/*1447:*/ +#line 25237 "tex.w" +322 +/*:1447*/ +#line 5157 "tex.w" +,assign_int,int_base+tolerance_code); + +primitive(/*1448:*/ +#line 25240 "tex.w" +323 +/*:1448*/ +#line 5159 "tex.w" +,assign_int,int_base+line_penalty_code); + +primitive(/*1449:*/ +#line 25243 "tex.w" +324 +/*:1449*/ +#line 5161 "tex.w" +,assign_int,int_base+hyphen_penalty_code); + +primitive(/*1450:*/ +#line 25246 "tex.w" +325 +/*:1450*/ +#line 5163 "tex.w" +,assign_int,int_base+ex_hyphen_penalty_code); + +primitive(/*1451:*/ +#line 25249 "tex.w" +326 +/*:1451*/ +#line 5165 "tex.w" +,assign_int,int_base+club_penalty_code); + +primitive(/*1452:*/ +#line 25252 "tex.w" +327 +/*:1452*/ +#line 5167 "tex.w" +,assign_int,int_base+widow_penalty_code); + +primitive(/*1453:*/ +#line 25255 "tex.w" +328 +/*:1453*/ +#line 5169 "tex.w" +, +assign_int,int_base+display_widow_penalty_code); + +primitive(/*1454:*/ +#line 25258 "tex.w" +329 +/*:1454*/ +#line 5172 "tex.w" +,assign_int,int_base+broken_penalty_code); + +primitive(/*1455:*/ +#line 25261 "tex.w" +330 +/*:1455*/ +#line 5174 "tex.w" +,assign_int,int_base+bin_op_penalty_code); + +primitive(/*1456:*/ +#line 25264 "tex.w" +331 +/*:1456*/ +#line 5176 "tex.w" +,assign_int,int_base+rel_penalty_code); + +primitive(/*1457:*/ +#line 25267 "tex.w" +332 +/*:1457*/ +#line 5178 "tex.w" +,assign_int,int_base+pre_display_penalty_code); + +primitive(/*1458:*/ +#line 25270 "tex.w" +333 +/*:1458*/ +#line 5180 "tex.w" +,assign_int,int_base+post_display_penalty_code); + +primitive(/*1459:*/ +#line 25273 "tex.w" +334 +/*:1459*/ +#line 5182 "tex.w" +,assign_int,int_base+inter_line_penalty_code); + +primitive(/*1460:*/ +#line 25276 "tex.w" +335 +/*:1460*/ +#line 5184 "tex.w" +, +assign_int,int_base+double_hyphen_demerits_code); + +primitive(/*1461:*/ +#line 25279 "tex.w" +336 +/*:1461*/ +#line 5187 "tex.w" +, +assign_int,int_base+final_hyphen_demerits_code); + +primitive(/*1462:*/ +#line 25282 "tex.w" +337 +/*:1462*/ +#line 5190 "tex.w" +,assign_int,int_base+adj_demerits_code); + +primitive(/*1463:*/ +#line 25285 "tex.w" +338 +/*:1463*/ +#line 5192 "tex.w" +,assign_int,int_base+mag_code); + +primitive(/*1464:*/ +#line 25288 "tex.w" +339 +/*:1464*/ +#line 5194 "tex.w" +,assign_int,int_base+delimiter_factor_code); + +primitive(/*1465:*/ +#line 25291 "tex.w" +340 +/*:1465*/ +#line 5196 "tex.w" +,assign_int,int_base+looseness_code); + +primitive(/*1466:*/ +#line 25294 "tex.w" +341 +/*:1466*/ +#line 5198 "tex.w" +,assign_int,int_base+time_code); + +primitive(/*1467:*/ +#line 25297 "tex.w" +342 +/*:1467*/ +#line 5200 "tex.w" +,assign_int,int_base+day_code); + +primitive(/*1468:*/ +#line 25300 "tex.w" +343 +/*:1468*/ +#line 5202 "tex.w" +,assign_int,int_base+month_code); + +primitive(/*1469:*/ +#line 25303 "tex.w" +344 +/*:1469*/ +#line 5204 "tex.w" +,assign_int,int_base+year_code); + +primitive(/*1470:*/ +#line 25306 "tex.w" +345 +/*:1470*/ +#line 5206 "tex.w" +,assign_int,int_base+show_box_breadth_code); + +primitive(/*1471:*/ +#line 25309 "tex.w" +346 +/*:1471*/ +#line 5208 "tex.w" +,assign_int,int_base+show_box_depth_code); + +primitive(/*1472:*/ +#line 25312 "tex.w" +347 +/*:1472*/ +#line 5210 "tex.w" +,assign_int,int_base+hbadness_code); + +primitive(/*1473:*/ +#line 25315 "tex.w" +348 +/*:1473*/ +#line 5212 "tex.w" +,assign_int,int_base+vbadness_code); + +primitive(/*1474:*/ +#line 25318 "tex.w" +349 +/*:1474*/ +#line 5214 "tex.w" +,assign_int,int_base+pausing_code); + +primitive(/*1475:*/ +#line 25321 "tex.w" +350 +/*:1475*/ +#line 5216 "tex.w" +,assign_int,int_base+tracing_online_code); + +primitive(/*1476:*/ +#line 25324 "tex.w" +351 +/*:1476*/ +#line 5218 "tex.w" +,assign_int,int_base+tracing_macros_code); + +primitive(/*1477:*/ +#line 25327 "tex.w" +352 +/*:1477*/ +#line 5220 "tex.w" +,assign_int,int_base+tracing_stats_code); + +primitive(/*1478:*/ +#line 25330 "tex.w" +353 +/*:1478*/ +#line 5222 "tex.w" +,assign_int,int_base+tracing_paragraphs_code); + +primitive(/*1479:*/ +#line 25333 "tex.w" +354 +/*:1479*/ +#line 5224 "tex.w" +,assign_int,int_base+tracing_pages_code); + +primitive(/*1480:*/ +#line 25336 "tex.w" +355 +/*:1480*/ +#line 5226 "tex.w" +,assign_int,int_base+tracing_output_code); + +primitive(/*1481:*/ +#line 25339 "tex.w" +356 +/*:1481*/ +#line 5228 "tex.w" +,assign_int,int_base+tracing_lost_chars_code); + +primitive(/*1482:*/ +#line 25342 "tex.w" +357 +/*:1482*/ +#line 5230 "tex.w" +,assign_int,int_base+tracing_commands_code); + +primitive(/*1483:*/ +#line 25345 "tex.w" +358 +/*:1483*/ +#line 5232 "tex.w" +,assign_int,int_base+tracing_restores_code); + +primitive(/*1484:*/ +#line 25348 "tex.w" +359 +/*:1484*/ +#line 5234 "tex.w" +,assign_int,int_base+uc_hyph_code); + +primitive(/*1485:*/ +#line 25351 "tex.w" +360 +/*:1485*/ +#line 5236 "tex.w" +,assign_int,int_base+output_penalty_code); + +primitive(/*1486:*/ +#line 25354 "tex.w" +361 +/*:1486*/ +#line 5238 "tex.w" +,assign_int,int_base+max_dead_cycles_code); + +primitive(/*1487:*/ +#line 25357 "tex.w" +362 +/*:1487*/ +#line 5240 "tex.w" +,assign_int,int_base+hang_after_code); + +primitive(/*1488:*/ +#line 25360 "tex.w" +363 +/*:1488*/ +#line 5242 "tex.w" +,assign_int,int_base+floating_penalty_code); + +primitive(/*1489:*/ +#line 25363 "tex.w" +364 +/*:1489*/ +#line 5244 "tex.w" +,assign_int,int_base+global_defs_code); + +primitive(/*1490:*/ +#line 25366 "tex.w" +365 +/*:1490*/ +#line 5246 "tex.w" +,assign_int,int_base+cur_fam_code); + +primitive(/*1491:*/ +#line 25369 "tex.w" +366 +/*:1491*/ +#line 5248 "tex.w" +,assign_int,int_base+escape_char_code); + +primitive(/*1492:*/ +#line 25372 "tex.w" +367 +/*:1492*/ +#line 5250 "tex.w" +,assign_int,int_base+default_hyphen_char_code); + +primitive(/*1493:*/ +#line 25375 "tex.w" +368 +/*:1493*/ +#line 5252 "tex.w" +,assign_int,int_base+default_skew_char_code); + +primitive(/*1494:*/ +#line 25378 "tex.w" +369 +/*:1494*/ +#line 5254 "tex.w" +,assign_int,int_base+end_line_char_code); + +primitive(/*1495:*/ +#line 25381 "tex.w" +370 +/*:1495*/ +#line 5256 "tex.w" +,assign_int,int_base+new_line_char_code); + +primitive(/*1496:*/ +#line 25384 "tex.w" +371 +/*:1496*/ +#line 5258 "tex.w" +,assign_int,int_base+language_code); + +primitive(/*1497:*/ +#line 25387 "tex.w" +372 +/*:1497*/ +#line 5260 "tex.w" +,assign_int,int_base+left_hyphen_min_code); + +primitive(/*1498:*/ +#line 25390 "tex.w" +373 +/*:1498*/ +#line 5262 "tex.w" +,assign_int,int_base+right_hyphen_min_code); + +primitive(/*1499:*/ +#line 25393 "tex.w" +374 +/*:1499*/ +#line 5264 "tex.w" +,assign_int,int_base+holding_inserts_code); + +primitive(/*1500:*/ +#line 25396 "tex.w" +375 +/*:1500*/ +#line 5266 "tex.w" +,assign_int,int_base+error_context_lines_code); + + +/*:238*//*248:*/ +#line 5419 "tex.w" + +primitive(/*1503:*/ +#line 25405 "tex.w" +378 +/*:1503*/ +#line 5420 "tex.w" +,assign_dimen,dimen_base+par_indent_code); + +primitive(/*1504:*/ +#line 25408 "tex.w" +379 +/*:1504*/ +#line 5422 "tex.w" +,assign_dimen,dimen_base+math_surround_code); + +primitive(/*1505:*/ +#line 25411 "tex.w" +380 +/*:1505*/ +#line 5424 "tex.w" +,assign_dimen,dimen_base+line_skip_limit_code); + +primitive(/*1506:*/ +#line 25414 "tex.w" +381 +/*:1506*/ +#line 5426 "tex.w" +,assign_dimen,dimen_base+hsize_code); + +primitive(/*1507:*/ +#line 25417 "tex.w" +382 +/*:1507*/ +#line 5428 "tex.w" +,assign_dimen,dimen_base+vsize_code); + +primitive(/*1508:*/ +#line 25420 "tex.w" +383 +/*:1508*/ +#line 5430 "tex.w" +,assign_dimen,dimen_base+max_depth_code); + +primitive(/*1509:*/ +#line 25423 "tex.w" +384 +/*:1509*/ +#line 5432 "tex.w" +,assign_dimen,dimen_base+split_max_depth_code); + +primitive(/*1510:*/ +#line 25426 "tex.w" +385 +/*:1510*/ +#line 5434 "tex.w" +,assign_dimen,dimen_base+box_max_depth_code); + +primitive(/*1511:*/ +#line 25429 "tex.w" +386 +/*:1511*/ +#line 5436 "tex.w" +,assign_dimen,dimen_base+hfuzz_code); + +primitive(/*1512:*/ +#line 25432 "tex.w" +387 +/*:1512*/ +#line 5438 "tex.w" +,assign_dimen,dimen_base+vfuzz_code); + +primitive(/*1513:*/ +#line 25435 "tex.w" +388 +/*:1513*/ +#line 5440 "tex.w" +, +assign_dimen,dimen_base+delimiter_shortfall_code); + +primitive(/*1514:*/ +#line 25438 "tex.w" +389 +/*:1514*/ +#line 5443 "tex.w" +, +assign_dimen,dimen_base+null_delimiter_space_code); + +primitive(/*1515:*/ +#line 25441 "tex.w" +390 +/*:1515*/ +#line 5446 "tex.w" +,assign_dimen,dimen_base+script_space_code); + +primitive(/*1516:*/ +#line 25444 "tex.w" +391 +/*:1516*/ +#line 5448 "tex.w" +,assign_dimen,dimen_base+pre_display_size_code); + +primitive(/*1517:*/ +#line 25447 "tex.w" +392 +/*:1517*/ +#line 5450 "tex.w" +,assign_dimen,dimen_base+display_width_code); + +primitive(/*1518:*/ +#line 25450 "tex.w" +393 +/*:1518*/ +#line 5452 "tex.w" +,assign_dimen,dimen_base+display_indent_code); + +primitive(/*1519:*/ +#line 25453 "tex.w" +394 +/*:1519*/ +#line 5454 "tex.w" +,assign_dimen,dimen_base+overfull_rule_code); + +primitive(/*1520:*/ +#line 25456 "tex.w" +395 +/*:1520*/ +#line 5456 "tex.w" +,assign_dimen,dimen_base+hang_indent_code); + +primitive(/*1521:*/ +#line 25459 "tex.w" +396 +/*:1521*/ +#line 5458 "tex.w" +,assign_dimen,dimen_base+h_offset_code); + +primitive(/*1522:*/ +#line 25462 "tex.w" +397 +/*:1522*/ +#line 5460 "tex.w" +,assign_dimen,dimen_base+v_offset_code); + +primitive(/*1523:*/ +#line 25465 "tex.w" +398 +/*:1523*/ +#line 5462 "tex.w" +,assign_dimen,dimen_base+emergency_stretch_code); + + +/*:248*//*265:*/ +#line 5701 "tex.w" + +primitive(' ',ex_space,0); + +primitive('/',ital_corr,0); + +primitive(/*1530:*/ +#line 25486 "tex.w" +405 +/*:1530*/ +#line 5706 "tex.w" +,accent,0); + +primitive(/*1531:*/ +#line 25489 "tex.w" +406 +/*:1531*/ +#line 5708 "tex.w" +,advance,0); + +primitive(/*1532:*/ +#line 25492 "tex.w" +407 +/*:1532*/ +#line 5710 "tex.w" +,after_assignment,0); + +primitive(/*1533:*/ +#line 25495 "tex.w" +408 +/*:1533*/ +#line 5712 "tex.w" +,after_group,0); + +primitive(/*1534:*/ +#line 25498 "tex.w" +409 +/*:1534*/ +#line 5714 "tex.w" +,begin_group,0); + +primitive(/*1535:*/ +#line 25501 "tex.w" +410 +/*:1535*/ +#line 5716 "tex.w" +,char_num,0); + +primitive(/*1526:*/ +#line 25474 "tex.w" +401 +/*:1526*/ +#line 5718 "tex.w" +,cs_name,0); + +primitive(/*1536:*/ +#line 25504 "tex.w" +411 +/*:1536*/ +#line 5720 "tex.w" +,delim_num,0); + +primitive(/*1537:*/ +#line 25507 "tex.w" +412 +/*:1537*/ +#line 5722 "tex.w" +,divide,0); + +primitive(/*1527:*/ +#line 25477 "tex.w" +402 +/*:1527*/ +#line 5724 "tex.w" +,end_cs_name,0); + +primitive(/*1538:*/ +#line 25510 "tex.w" +413 +/*:1538*/ +#line 5726 "tex.w" +,end_group,0); + +text(frozen_end_group)= /*1538:*/ +#line 25510 "tex.w" +413 +/*:1538*/ +#line 5728 "tex.w" +;eqtb[frozen_end_group]= eqtb[cur_val]; +primitive(/*1539:*/ +#line 25513 "tex.w" +414 +/*:1539*/ +#line 5729 "tex.w" +,expand_after,0); + +primitive(/*1540:*/ +#line 25516 "tex.w" +415 +/*:1540*/ +#line 5731 "tex.w" +,def_font,0); + +primitive(/*1541:*/ +#line 25519 "tex.w" +416 +/*:1541*/ +#line 5733 "tex.w" +,assign_font_dimen,0); + +primitive(/*1542:*/ +#line 25522 "tex.w" +417 +/*:1542*/ +#line 5735 "tex.w" +,halign,0); + +primitive(/*1543:*/ +#line 25525 "tex.w" +418 +/*:1543*/ +#line 5737 "tex.w" +,hrule,0); + +primitive(/*1544:*/ +#line 25528 "tex.w" +419 +/*:1544*/ +#line 5739 "tex.w" +,ignore_spaces,0); + +primitive(/*1390:*/ +#line 25066 "tex.w" +265 +/*:1390*/ +#line 5741 "tex.w" +,insert,0); + +primitive(/*1401:*/ +#line 25099 "tex.w" +276 +/*:1401*/ +#line 5743 "tex.w" +,mark,0); + +primitive(/*1545:*/ +#line 25531 "tex.w" +420 +/*:1545*/ +#line 5745 "tex.w" +,math_accent,0); + +primitive(/*1546:*/ +#line 25534 "tex.w" +421 +/*:1546*/ +#line 5747 "tex.w" +,math_char_num,0); + +primitive(/*1547:*/ +#line 25537 "tex.w" +422 +/*:1547*/ +#line 5749 "tex.w" +,math_choice,0); + +primitive(/*1548:*/ +#line 25540 "tex.w" +423 +/*:1548*/ +#line 5751 "tex.w" +,multiply,0); + +primitive(/*1549:*/ +#line 25543 "tex.w" +424 +/*:1549*/ +#line 5753 "tex.w" +,no_align,0); + +primitive(/*1550:*/ +#line 25546 "tex.w" +425 +/*:1550*/ +#line 5755 "tex.w" +,no_boundary,0); + +primitive(/*1551:*/ +#line 25549 "tex.w" +426 +/*:1551*/ +#line 5757 "tex.w" +,no_expand,0); + +primitive(/*1392:*/ +#line 25072 "tex.w" +267 +/*:1392*/ +#line 5759 "tex.w" +,non_script,0); + +primitive(/*1552:*/ +#line 25552 "tex.w" +427 +/*:1552*/ +#line 5761 "tex.w" +,omit,0); + +primitive(/*1436:*/ +#line 25204 "tex.w" +311 +/*:1436*/ +#line 5763 "tex.w" +,set_shape,0); + +primitive(/*1553:*/ +#line 25555 "tex.w" +428 +/*:1553*/ +#line 5765 "tex.w" +,break_penalty,0); + +primitive(/*1554:*/ +#line 25558 "tex.w" +429 +/*:1554*/ +#line 5767 "tex.w" +,set_prev_graf,0); + +primitive(/*1555:*/ +#line 25561 "tex.w" +430 +/*:1555*/ +#line 5769 "tex.w" +,radical,0); + +primitive(/*1556:*/ +#line 25564 "tex.w" +431 +/*:1556*/ +#line 5771 "tex.w" +,read_to_cs,0); + +primitive(/*1557:*/ +#line 25567 "tex.w" +432 +/*:1557*/ +#line 5773 "tex.w" +,relax,256); + +text(frozen_relax)= /*1557:*/ +#line 25567 "tex.w" +432 +/*:1557*/ +#line 5775 "tex.w" +;eqtb[frozen_relax]= eqtb[cur_val]; +primitive(/*1558:*/ +#line 25570 "tex.w" +433 +/*:1558*/ +#line 5776 "tex.w" +,set_box,0); + +primitive(/*1559:*/ +#line 25573 "tex.w" +434 +/*:1559*/ +#line 5778 "tex.w" +,the,0); + +primitive(/*1435:*/ +#line 25201 "tex.w" +310 +/*:1435*/ +#line 5780 "tex.w" +,toks_register,0); + +primitive(/*1402:*/ +#line 25102 "tex.w" +277 +/*:1402*/ +#line 5782 "tex.w" +,vadjust,0); + +primitive(/*1560:*/ +#line 25576 "tex.w" +435 +/*:1560*/ +#line 5784 "tex.w" +,valign,0); + +primitive(/*1561:*/ +#line 25579 "tex.w" +436 +/*:1561*/ +#line 5786 "tex.w" +,vcenter,0); + +primitive(/*1562:*/ +#line 25582 "tex.w" +437 +/*:1562*/ +#line 5788 "tex.w" +,vrule,0); + + +/*:265*//*334:*/ +#line 7198 "tex.w" + +primitive(/*1569:*/ +#line 25603 "tex.w" +444 +/*:1569*/ +#line 7199 "tex.w" +,par_end,256); + +par_loc= cur_val;par_token= cs_token_flag+par_loc; + +/*:334*//*376:*/ +#line 7848 "tex.w" + +primitive(/*1570:*/ +#line 25606 "tex.w" +445 +/*:1570*/ +#line 7849 "tex.w" +,input,0); + +primitive(/*1571:*/ +#line 25609 "tex.w" +446 +/*:1571*/ +#line 7851 "tex.w" +,input,1); + + +/*:376*//*384:*/ +#line 7933 "tex.w" + +primitive(/*1572:*/ +#line 25612 "tex.w" +447 +/*:1572*/ +#line 7934 "tex.w" +,top_bot_mark,top_mark_code); + +primitive(/*1573:*/ +#line 25615 "tex.w" +448 +/*:1573*/ +#line 7936 "tex.w" +,top_bot_mark,first_mark_code); + +primitive(/*1574:*/ +#line 25618 "tex.w" +449 +/*:1574*/ +#line 7938 "tex.w" +,top_bot_mark,bot_mark_code); + +primitive(/*1575:*/ +#line 25621 "tex.w" +450 +/*:1575*/ +#line 7940 "tex.w" +,top_bot_mark,split_first_mark_code); + +primitive(/*1576:*/ +#line 25624 "tex.w" +451 +/*:1576*/ +#line 7942 "tex.w" +,top_bot_mark,split_bot_mark_code); + + +/*:384*//*411:*/ +#line 8378 "tex.w" + +primitive(/*1501:*/ +#line 25399 "tex.w" +376 +/*:1501*/ +#line 8379 "tex.w" +,register,int_val); + +primitive(/*1524:*/ +#line 25468 "tex.w" +399 +/*:1524*/ +#line 8381 "tex.w" +,register,dimen_val); + +primitive(/*1423:*/ +#line 25165 "tex.w" +298 +/*:1423*/ +#line 8383 "tex.w" +,register,glue_val); + +primitive(/*1424:*/ +#line 25168 "tex.w" +299 +/*:1424*/ +#line 8385 "tex.w" +,register,mu_val); + + +/*:411*//*416:*/ +#line 8472 "tex.w" + +primitive(/*1577:*/ +#line 25627 "tex.w" +452 +/*:1577*/ +#line 8473 "tex.w" +,set_aux,hmode); + +primitive(/*1578:*/ +#line 25630 "tex.w" +453 +/*:1578*/ +#line 8475 "tex.w" +,set_aux,vmode); + +primitive(/*1579:*/ +#line 25633 "tex.w" +454 +/*:1579*/ +#line 8477 "tex.w" +,set_page_int,0); + +primitive(/*1580:*/ +#line 25636 "tex.w" +455 +/*:1580*/ +#line 8479 "tex.w" +,set_page_int,1); + +primitive(/*1581:*/ +#line 25639 "tex.w" +456 +/*:1581*/ +#line 8481 "tex.w" +,set_box_dimen,width_offset); + +primitive(/*1582:*/ +#line 25642 "tex.w" +457 +/*:1582*/ +#line 8483 "tex.w" +,set_box_dimen,height_offset); + +primitive(/*1583:*/ +#line 25645 "tex.w" +458 +/*:1583*/ +#line 8485 "tex.w" +,set_box_dimen,depth_offset); + +primitive(/*1584:*/ +#line 25648 "tex.w" +459 +/*:1584*/ +#line 8487 "tex.w" +,last_item,int_val); + +primitive(/*1585:*/ +#line 25651 "tex.w" +460 +/*:1585*/ +#line 8489 "tex.w" +,last_item,dimen_val); + +primitive(/*1586:*/ +#line 25654 "tex.w" +461 +/*:1586*/ +#line 8491 "tex.w" +,last_item,glue_val); + +primitive(/*1587:*/ +#line 25657 "tex.w" +462 +/*:1587*/ +#line 8493 "tex.w" +,last_item,input_line_no_code); + +primitive(/*1588:*/ +#line 25660 "tex.w" +463 +/*:1588*/ +#line 8495 "tex.w" +,last_item,badness_code); + + +/*:416*//*468:*/ +#line 9273 "tex.w" + +primitive(/*1605:*/ +#line 25711 "tex.w" +480 +/*:1605*/ +#line 9274 "tex.w" +,convert,number_code); + +primitive(/*1606:*/ +#line 25714 "tex.w" +481 +/*:1606*/ +#line 9276 "tex.w" +,convert,roman_numeral_code); + +primitive(/*1607:*/ +#line 25717 "tex.w" +482 +/*:1607*/ +#line 9278 "tex.w" +,convert,string_code); + +primitive(/*1608:*/ +#line 25720 "tex.w" +483 +/*:1608*/ +#line 9280 "tex.w" +,convert,meaning_code); + +primitive(/*1609:*/ +#line 25723 "tex.w" +484 +/*:1609*/ +#line 9282 "tex.w" +,convert,font_name_code); + +primitive(/*1610:*/ +#line 25726 "tex.w" +485 +/*:1610*/ +#line 9284 "tex.w" +,convert,job_name_code); + + +/*:468*//*487:*/ +#line 9589 "tex.w" + +primitive(/*1611:*/ +#line 25729 "tex.w" +486 +/*:1611*/ +#line 9590 "tex.w" +,if_test,if_char_code); + +primitive(/*1612:*/ +#line 25732 "tex.w" +487 +/*:1612*/ +#line 9592 "tex.w" +,if_test,if_cat_code); + +primitive(/*1613:*/ +#line 25735 "tex.w" +488 +/*:1613*/ +#line 9594 "tex.w" +,if_test,if_int_code); + +primitive(/*1614:*/ +#line 25738 "tex.w" +489 +/*:1614*/ +#line 9596 "tex.w" +,if_test,if_dim_code); + +primitive(/*1615:*/ +#line 25741 "tex.w" +490 +/*:1615*/ +#line 9598 "tex.w" +,if_test,if_odd_code); + +primitive(/*1616:*/ +#line 25744 "tex.w" +491 +/*:1616*/ +#line 9600 "tex.w" +,if_test,if_vmode_code); + +primitive(/*1617:*/ +#line 25747 "tex.w" +492 +/*:1617*/ +#line 9602 "tex.w" +,if_test,if_hmode_code); + +primitive(/*1618:*/ +#line 25750 "tex.w" +493 +/*:1618*/ +#line 9604 "tex.w" +,if_test,if_mmode_code); + +primitive(/*1619:*/ +#line 25753 "tex.w" +494 +/*:1619*/ +#line 9606 "tex.w" +,if_test,if_inner_code); + +primitive(/*1620:*/ +#line 25756 "tex.w" +495 +/*:1620*/ +#line 9608 "tex.w" +,if_test,if_void_code); + +primitive(/*1621:*/ +#line 25759 "tex.w" +496 +/*:1621*/ +#line 9610 "tex.w" +,if_test,if_hbox_code); + +primitive(/*1622:*/ +#line 25762 "tex.w" +497 +/*:1622*/ +#line 9612 "tex.w" +,if_test,if_vbox_code); + +primitive(/*1623:*/ +#line 25765 "tex.w" +498 +/*:1623*/ +#line 9614 "tex.w" +,if_test,ifx_code); + +primitive(/*1624:*/ +#line 25768 "tex.w" +499 +/*:1624*/ +#line 9616 "tex.w" +,if_test,if_eof_code); + +primitive(/*1625:*/ +#line 25771 "tex.w" +500 +/*:1625*/ +#line 9618 "tex.w" +,if_test,if_true_code); + +primitive(/*1626:*/ +#line 25774 "tex.w" +501 +/*:1626*/ +#line 9620 "tex.w" +,if_test,if_false_code); + +primitive(/*1627:*/ +#line 25777 "tex.w" +502 +/*:1627*/ +#line 9622 "tex.w" +,if_test,if_case_code); + + +/*:487*//*491:*/ +#line 9678 "tex.w" + +primitive(/*1628:*/ +#line 25780 "tex.w" +503 +/*:1628*/ +#line 9679 "tex.w" +,fi_or_else,fi_code); + +text(frozen_fi)= /*1628:*/ +#line 25780 "tex.w" +503 +/*:1628*/ +#line 9681 "tex.w" +;eqtb[frozen_fi]= eqtb[cur_val]; +primitive(/*1629:*/ +#line 25783 "tex.w" +504 +/*:1629*/ +#line 9682 "tex.w" +,fi_or_else,or_code); + +primitive(/*1630:*/ +#line 25786 "tex.w" +505 +/*:1630*/ +#line 9684 "tex.w" +,fi_or_else,else_code); + + +/*:491*//*553:*/ +#line 10835 "tex.w" + +primitive(/*1639:*/ +#line 25813 "tex.w" +514 +/*:1639*/ +#line 10836 "tex.w" +,set_font,null_font); + +text(frozen_null_font)= /*1639:*/ +#line 25813 "tex.w" +514 +/*:1639*/ +#line 10838 "tex.w" +;eqtb[frozen_null_font]= eqtb[cur_val]; + +/*:553*//*780:*/ +#line 15416 "tex.w" + +primitive(/*1669:*/ +#line 25903 "tex.w" +544 +/*:1669*/ +#line 15417 "tex.w" +,tab_mark,span_code); + +primitive(/*1670:*/ +#line 25906 "tex.w" +545 +/*:1670*/ +#line 15419 "tex.w" +,car_ret,cr_code); + +text(frozen_cr)= /*1670:*/ +#line 25906 "tex.w" +545 +/*:1670*/ +#line 15421 "tex.w" +;eqtb[frozen_cr]= eqtb[cur_val]; +primitive(/*1671:*/ +#line 25909 "tex.w" +546 +/*:1671*/ +#line 15422 "tex.w" +,car_ret,cr_cr_code); + +text(frozen_end_template)= /*1672:*/ +#line 25912 "tex.w" +547 +/*:1672*/ +#line 15424 "tex.w" +;text(frozen_endv)= /*1672:*/ +#line 25912 "tex.w" +547 +/*:1672*/ +#line 15424 "tex.w" +; +eq_type(frozen_endv)= endv;equiv(frozen_endv)= null_list; +eq_level(frozen_endv)= level_one; +eqtb[frozen_end_template]= eqtb[frozen_endv]; +eq_type(frozen_end_template)= end_template; + +/*:780*//*983:*/ +#line 19251 "tex.w" + +primitive(/*1689:*/ +#line 25963 "tex.w" +564 +/*:1689*/ +#line 19252 "tex.w" +,set_page_dimen,0); + +primitive(/*1690:*/ +#line 25966 "tex.w" +565 +/*:1690*/ +#line 19254 "tex.w" +,set_page_dimen,1); + +primitive(/*1691:*/ +#line 25969 "tex.w" +566 +/*:1691*/ +#line 19256 "tex.w" +,set_page_dimen,2); + +primitive(/*1692:*/ +#line 25972 "tex.w" +567 +/*:1692*/ +#line 19258 "tex.w" +,set_page_dimen,3); + +primitive(/*1693:*/ +#line 25975 "tex.w" +568 +/*:1693*/ +#line 19260 "tex.w" +,set_page_dimen,4); + +primitive(/*1694:*/ +#line 25978 "tex.w" +569 +/*:1694*/ +#line 19262 "tex.w" +,set_page_dimen,5); + +primitive(/*1695:*/ +#line 25981 "tex.w" +570 +/*:1695*/ +#line 19264 "tex.w" +,set_page_dimen,6); + +primitive(/*1696:*/ +#line 25984 "tex.w" +571 +/*:1696*/ +#line 19266 "tex.w" +,set_page_dimen,7); + + +/*:983*//*1052:*/ +#line 20471 "tex.w" + +primitive(/*1698:*/ +#line 25990 "tex.w" +573 +/*:1698*/ +#line 20472 "tex.w" +,stop,0); + +primitive(/*1699:*/ +#line 25993 "tex.w" +574 +/*:1699*/ +#line 20474 "tex.w" +,stop,1); + + +/*:1052*//*1058:*/ +#line 20547 "tex.w" + +primitive(/*1700:*/ +#line 25996 "tex.w" +575 +/*:1700*/ +#line 20548 "tex.w" +,hskip,skip_code); + +primitive(/*1701:*/ +#line 25999 "tex.w" +576 +/*:1701*/ +#line 20550 "tex.w" +,hskip,fil_code); + +primitive(/*1702:*/ +#line 26002 "tex.w" +577 +/*:1702*/ +#line 20552 "tex.w" +,hskip,fill_code); + +primitive(/*1703:*/ +#line 26005 "tex.w" +578 +/*:1703*/ +#line 20554 "tex.w" +,hskip,ss_code); + +primitive(/*1704:*/ +#line 26008 "tex.w" +579 +/*:1704*/ +#line 20556 "tex.w" +,hskip,fil_neg_code); + +primitive(/*1705:*/ +#line 26011 "tex.w" +580 +/*:1705*/ +#line 20558 "tex.w" +,vskip,skip_code); + +primitive(/*1706:*/ +#line 26014 "tex.w" +581 +/*:1706*/ +#line 20560 "tex.w" +,vskip,fil_code); + +primitive(/*1707:*/ +#line 26017 "tex.w" +582 +/*:1707*/ +#line 20562 "tex.w" +,vskip,fill_code); + +primitive(/*1708:*/ +#line 26020 "tex.w" +583 +/*:1708*/ +#line 20564 "tex.w" +,vskip,ss_code); + +primitive(/*1709:*/ +#line 26023 "tex.w" +584 +/*:1709*/ +#line 20566 "tex.w" +,vskip,fil_neg_code); + +primitive(/*1393:*/ +#line 25075 "tex.w" +268 +/*:1393*/ +#line 20568 "tex.w" +,mskip,mskip_code); + +primitive(/*1396:*/ +#line 25084 "tex.w" +271 +/*:1396*/ +#line 20570 "tex.w" +,kern,explicit); + +primitive(/*1397:*/ +#line 25087 "tex.w" +272 +/*:1397*/ +#line 20572 "tex.w" +,mkern,mu_glue); + + +/*:1058*//*1071:*/ +#line 20804 "tex.w" + +primitive(/*1712:*/ +#line 26032 "tex.w" +587 +/*:1712*/ +#line 20805 "tex.w" +,hmove,1); + +primitive(/*1713:*/ +#line 26035 "tex.w" +588 +/*:1713*/ +#line 20807 "tex.w" +,hmove,0); + +primitive(/*1714:*/ +#line 26038 "tex.w" +589 +/*:1714*/ +#line 20809 "tex.w" +,vmove,1); + +primitive(/*1715:*/ +#line 26041 "tex.w" +590 +/*:1715*/ +#line 20811 "tex.w" +,vmove,0); + + +primitive(/*1437:*/ +#line 25207 "tex.w" +312 +/*:1437*/ +#line 20814 "tex.w" +,make_box,box_code); + +primitive(/*1716:*/ +#line 26044 "tex.w" +591 +/*:1716*/ +#line 20816 "tex.w" +,make_box,copy_code); + +primitive(/*1717:*/ +#line 26047 "tex.w" +592 +/*:1717*/ +#line 20818 "tex.w" +,make_box,last_box_code); + +primitive(/*1687:*/ +#line 25957 "tex.w" +562 +/*:1687*/ +#line 20820 "tex.w" +,make_box,vsplit_code); + +primitive(/*1718:*/ +#line 26050 "tex.w" +593 +/*:1718*/ +#line 20822 "tex.w" +,make_box,vtop_code); + +primitive(/*1688:*/ +#line 25960 "tex.w" +563 +/*:1688*/ +#line 20824 "tex.w" +,make_box,vtop_code+vmode); + +primitive(/*1719:*/ +#line 26053 "tex.w" +594 +/*:1719*/ +#line 20826 "tex.w" +,make_box,vtop_code+hmode); + +primitive(/*1720:*/ +#line 26056 "tex.w" +595 +/*:1720*/ +#line 20828 "tex.w" +,leader_ship,a_leaders-1); + +primitive(/*1721:*/ +#line 26059 "tex.w" +596 +/*:1721*/ +#line 20830 "tex.w" +,leader_ship,a_leaders); + +primitive(/*1722:*/ +#line 26062 "tex.w" +597 +/*:1722*/ +#line 20832 "tex.w" +,leader_ship,c_leaders); + +primitive(/*1723:*/ +#line 26065 "tex.w" +598 +/*:1723*/ +#line 20834 "tex.w" +,leader_ship,x_leaders); + + +/*:1071*//*1088:*/ +#line 21092 "tex.w" + +primitive(/*1724:*/ +#line 26068 "tex.w" +599 +/*:1724*/ +#line 21093 "tex.w" +,start_par,1); + +primitive(/*1725:*/ +#line 26071 "tex.w" +600 +/*:1725*/ +#line 21095 "tex.w" +,start_par,0); + + +/*:1088*//*1107:*/ +#line 21300 "tex.w" + +primitive(/*1726:*/ +#line 26074 "tex.w" +601 +/*:1726*/ +#line 21301 "tex.w" +,remove_item,penalty_node); + +primitive(/*1727:*/ +#line 26077 "tex.w" +602 +/*:1727*/ +#line 21303 "tex.w" +,remove_item,kern_node); + +primitive(/*1728:*/ +#line 26080 "tex.w" +603 +/*:1728*/ +#line 21305 "tex.w" +,remove_item,glue_node); + +primitive(/*1729:*/ +#line 26083 "tex.w" +604 +/*:1729*/ +#line 21307 "tex.w" +,un_hbox,box_code); + +primitive(/*1730:*/ +#line 26086 "tex.w" +605 +/*:1730*/ +#line 21309 "tex.w" +,un_hbox,copy_code); + +primitive(/*1731:*/ +#line 26089 "tex.w" +606 +/*:1731*/ +#line 21311 "tex.w" +,un_vbox,box_code); + +primitive(/*1732:*/ +#line 26092 "tex.w" +607 +/*:1732*/ +#line 21313 "tex.w" +,un_vbox,copy_code); + + +/*:1107*//*1114:*/ +#line 21381 "tex.w" + +primitive('-',discretionary,1); + +primitive(/*1400:*/ +#line 25096 "tex.w" +275 +/*:1400*/ +#line 21384 "tex.w" +,discretionary,0); + + +/*:1114*//*1141:*/ +#line 21730 "tex.w" + +primitive(/*1733:*/ +#line 26095 "tex.w" +608 +/*:1733*/ +#line 21731 "tex.w" +,eq_no,0); + +primitive(/*1734:*/ +#line 26098 "tex.w" +609 +/*:1734*/ +#line 21733 "tex.w" +,eq_no,1); + + +/*:1141*//*1156:*/ +#line 21966 "tex.w" + +primitive(/*1649:*/ +#line 25843 "tex.w" +524 +/*:1649*/ +#line 21967 "tex.w" +,math_comp,ord_noad); + +primitive(/*1650:*/ +#line 25846 "tex.w" +525 +/*:1650*/ +#line 21969 "tex.w" +,math_comp,op_noad); + +primitive(/*1651:*/ +#line 25849 "tex.w" +526 +/*:1651*/ +#line 21971 "tex.w" +,math_comp,bin_noad); + +primitive(/*1652:*/ +#line 25852 "tex.w" +527 +/*:1652*/ +#line 21973 "tex.w" +,math_comp,rel_noad); + +primitive(/*1653:*/ +#line 25855 "tex.w" +528 +/*:1653*/ +#line 21975 "tex.w" +,math_comp,open_noad); + +primitive(/*1654:*/ +#line 25858 "tex.w" +529 +/*:1654*/ +#line 21977 "tex.w" +,math_comp,close_noad); + +primitive(/*1655:*/ +#line 25861 "tex.w" +530 +/*:1655*/ +#line 21979 "tex.w" +,math_comp,punct_noad); + +primitive(/*1656:*/ +#line 25864 "tex.w" +531 +/*:1656*/ +#line 21981 "tex.w" +,math_comp,inner_noad); + +primitive(/*1658:*/ +#line 25870 "tex.w" +533 +/*:1658*/ +#line 21983 "tex.w" +,math_comp,under_noad); + +primitive(/*1657:*/ +#line 25867 "tex.w" +532 +/*:1657*/ +#line 21985 "tex.w" +,math_comp,over_noad); + +primitive(/*1735:*/ +#line 26101 "tex.w" +610 +/*:1735*/ +#line 21987 "tex.w" +,limit_switch,normal); + +primitive(/*1661:*/ +#line 25879 "tex.w" +536 +/*:1661*/ +#line 21989 "tex.w" +,limit_switch,limits); + +primitive(/*1662:*/ +#line 25882 "tex.w" +537 +/*:1662*/ +#line 21991 "tex.w" +,limit_switch,no_limits); + + +/*:1156*//*1169:*/ +#line 22120 "tex.w" + +primitive(/*1645:*/ +#line 25831 "tex.w" +520 +/*:1645*/ +#line 22121 "tex.w" +,math_style,display_style); + +primitive(/*1646:*/ +#line 25834 "tex.w" +521 +/*:1646*/ +#line 22123 "tex.w" +,math_style,text_style); + +primitive(/*1647:*/ +#line 25837 "tex.w" +522 +/*:1647*/ +#line 22125 "tex.w" +,math_style,script_style); + +primitive(/*1648:*/ +#line 25840 "tex.w" +523 +/*:1648*/ +#line 22127 "tex.w" +,math_style,script_script_style); + + +/*:1169*//*1178:*/ +#line 22219 "tex.w" + +primitive(/*1736:*/ +#line 26104 "tex.w" +611 +/*:1736*/ +#line 22220 "tex.w" +,above,above_code); + +primitive(/*1737:*/ +#line 26107 "tex.w" +612 +/*:1737*/ +#line 22222 "tex.w" +,above,over_code); + +primitive(/*1738:*/ +#line 26110 "tex.w" +613 +/*:1738*/ +#line 22224 "tex.w" +,above,atop_code); + +primitive(/*1739:*/ +#line 26113 "tex.w" +614 +/*:1739*/ +#line 22226 "tex.w" +,above,delimited_code+above_code); + +primitive(/*1740:*/ +#line 26116 "tex.w" +615 +/*:1740*/ +#line 22228 "tex.w" +,above,delimited_code+over_code); + +primitive(/*1741:*/ +#line 26119 "tex.w" +616 +/*:1741*/ +#line 22230 "tex.w" +,above,delimited_code+atop_code); + + +/*:1178*//*1188:*/ +#line 22347 "tex.w" + +primitive(/*1659:*/ +#line 25873 "tex.w" +534 +/*:1659*/ +#line 22348 "tex.w" +,left_right,left_noad); + +primitive(/*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 22350 "tex.w" +,left_right,right_noad); + +text(frozen_right)= /*1660:*/ +#line 25876 "tex.w" +535 +/*:1660*/ +#line 22352 "tex.w" +;eqtb[frozen_right]= eqtb[cur_val]; + +/*:1188*//*1208:*/ +#line 22651 "tex.w" + +primitive(/*1743:*/ +#line 26125 "tex.w" +618 +/*:1743*/ +#line 22652 "tex.w" +,prefix,1); + +primitive(/*1744:*/ +#line 26128 "tex.w" +619 +/*:1744*/ +#line 22654 "tex.w" +,prefix,2); + +primitive(/*1745:*/ +#line 26131 "tex.w" +620 +/*:1745*/ +#line 22656 "tex.w" +,prefix,4); + +primitive(/*1746:*/ +#line 26134 "tex.w" +621 +/*:1746*/ +#line 22658 "tex.w" +,def,0); + +primitive(/*1747:*/ +#line 26137 "tex.w" +622 +/*:1747*/ +#line 22660 "tex.w" +,def,1); + +primitive(/*1748:*/ +#line 26140 "tex.w" +623 +/*:1748*/ +#line 22662 "tex.w" +,def,2); + +primitive(/*1749:*/ +#line 26143 "tex.w" +624 +/*:1749*/ +#line 22664 "tex.w" +,def,3); + + +/*:1208*//*1219:*/ +#line 22821 "tex.w" + +primitive(/*1752:*/ +#line 26152 "tex.w" +627 +/*:1752*/ +#line 22822 "tex.w" +,let,normal); + +primitive(/*1753:*/ +#line 26155 "tex.w" +628 +/*:1753*/ +#line 22824 "tex.w" +,let,normal+1); + + +/*:1219*//*1222:*/ +#line 22863 "tex.w" + +primitive(/*1754:*/ +#line 26158 "tex.w" +629 +/*:1754*/ +#line 22864 "tex.w" +,shorthand_def,char_def_code); + +primitive(/*1755:*/ +#line 26161 "tex.w" +630 +/*:1755*/ +#line 22866 "tex.w" +,shorthand_def,math_char_def_code); + +primitive(/*1756:*/ +#line 26164 "tex.w" +631 +/*:1756*/ +#line 22868 "tex.w" +,shorthand_def,count_def_code); + +primitive(/*1757:*/ +#line 26167 "tex.w" +632 +/*:1757*/ +#line 22870 "tex.w" +,shorthand_def,dimen_def_code); + +primitive(/*1758:*/ +#line 26170 "tex.w" +633 +/*:1758*/ +#line 22872 "tex.w" +,shorthand_def,skip_def_code); + +primitive(/*1759:*/ +#line 26173 "tex.w" +634 +/*:1759*/ +#line 22874 "tex.w" +,shorthand_def,mu_skip_def_code); + +primitive(/*1760:*/ +#line 26176 "tex.w" +635 +/*:1760*/ +#line 22876 "tex.w" +,shorthand_def,toks_def_code); + + +/*:1222*//*1230:*/ +#line 23003 "tex.w" + +primitive(/*1441:*/ +#line 25219 "tex.w" +316 +/*:1441*/ +#line 23004 "tex.w" +,def_code,cat_code_base); + +primitive(/*1445:*/ +#line 25231 "tex.w" +320 +/*:1445*/ +#line 23006 "tex.w" +,def_code,math_code_base); + +primitive(/*1442:*/ +#line 25222 "tex.w" +317 +/*:1442*/ +#line 23008 "tex.w" +,def_code,lc_code_base); + +primitive(/*1443:*/ +#line 25225 "tex.w" +318 +/*:1443*/ +#line 23010 "tex.w" +,def_code,uc_code_base); + +primitive(/*1444:*/ +#line 25228 "tex.w" +319 +/*:1444*/ +#line 23012 "tex.w" +,def_code,sf_code_base); + +primitive(/*1502:*/ +#line 25402 "tex.w" +377 +/*:1502*/ +#line 23014 "tex.w" +,def_code,del_code_base); + +primitive(/*1438:*/ +#line 25210 "tex.w" +313 +/*:1438*/ +#line 23016 "tex.w" +,def_family,math_font_base); + +primitive(/*1439:*/ +#line 25213 "tex.w" +314 +/*:1439*/ +#line 23018 "tex.w" +,def_family,math_font_base+script_size); + +primitive(/*1440:*/ +#line 25216 "tex.w" +315 +/*:1440*/ +#line 23020 "tex.w" +,def_family,math_font_base+script_script_size); + + +/*:1230*//*1250:*/ +#line 23288 "tex.w" + +primitive(/*1683:*/ +#line 25945 "tex.w" +558 +/*:1683*/ +#line 23289 "tex.w" +,hyph_data,0); + +primitive(/*1684:*/ +#line 25948 "tex.w" +559 +/*:1684*/ +#line 23291 "tex.w" +,hyph_data,1); + + +/*:1250*//*1254:*/ +#line 23325 "tex.w" + +primitive(/*1762:*/ +#line 26182 "tex.w" +637 +/*:1762*/ +#line 23326 "tex.w" +,assign_font_int,0); + +primitive(/*1763:*/ +#line 26185 "tex.w" +638 +/*:1763*/ +#line 23328 "tex.w" +,assign_font_int,1); + + +/*:1254*//*1262:*/ +#line 23424 "tex.w" + +primitive(/*1383:*/ +#line 25045 "tex.w" +258 +/*:1383*/ +#line 23425 "tex.w" +,set_interaction,batch_mode); + +primitive(/*1384:*/ +#line 25048 "tex.w" +259 +/*:1384*/ +#line 23427 "tex.w" +,set_interaction,nonstop_mode); + +primitive(/*1385:*/ +#line 25051 "tex.w" +260 +/*:1385*/ +#line 23429 "tex.w" +,set_interaction,scroll_mode); + +primitive(/*1767:*/ +#line 26197 "tex.w" +642 +/*:1767*/ +#line 23431 "tex.w" +,set_interaction,error_stop_mode); + + +/*:1262*//*1272:*/ +#line 23490 "tex.w" + +primitive(/*1768:*/ +#line 26200 "tex.w" +643 +/*:1768*/ +#line 23491 "tex.w" +,in_stream,1); + +primitive(/*1769:*/ +#line 26203 "tex.w" +644 +/*:1769*/ +#line 23493 "tex.w" +,in_stream,0); + + +/*:1272*//*1277:*/ +#line 23525 "tex.w" + +primitive(/*1770:*/ +#line 26206 "tex.w" +645 +/*:1770*/ +#line 23526 "tex.w" +,message,0); + +primitive(/*1771:*/ +#line 26209 "tex.w" +646 +/*:1771*/ +#line 23528 "tex.w" +,message,1); + + +/*:1277*//*1286:*/ +#line 23592 "tex.w" + +primitive(/*1772:*/ +#line 26212 "tex.w" +647 +/*:1772*/ +#line 23593 "tex.w" +,case_shift,lc_code_base); + +primitive(/*1773:*/ +#line 26215 "tex.w" +648 +/*:1773*/ +#line 23595 "tex.w" +,case_shift,uc_code_base); + + +/*:1286*//*1291:*/ +#line 23639 "tex.w" + +primitive(/*1774:*/ +#line 26218 "tex.w" +649 +/*:1774*/ +#line 23640 "tex.w" +,xray,show_code); + +primitive(/*1775:*/ +#line 26221 "tex.w" +650 +/*:1775*/ +#line 23642 "tex.w" +,xray,show_box_code); + +primitive(/*1776:*/ +#line 26224 "tex.w" +651 +/*:1776*/ +#line 23644 "tex.w" +,xray,show_the_code); + +primitive(/*1777:*/ +#line 26227 "tex.w" +652 +/*:1777*/ +#line 23646 "tex.w" +,xray,show_lists); + + +/*:1291*//*1344:*/ +#line 24626 "tex.w" + +primitive(/*1783:*/ +#line 26245 "tex.w" +658 +/*:1783*/ +#line 24627 "tex.w" +,extension,open_node); + +primitive(/*1568:*/ +#line 25600 "tex.w" +443 +/*:1568*/ +#line 24629 "tex.w" +,extension,write_node);write_loc= cur_val; + +primitive(/*1784:*/ +#line 26248 "tex.w" +659 +/*:1784*/ +#line 24631 "tex.w" +,extension,close_node); + +primitive(/*1785:*/ +#line 26251 "tex.w" +660 +/*:1785*/ +#line 24633 "tex.w" +,extension,special_node); + +primitive(/*1786:*/ +#line 26254 "tex.w" +661 +/*:1786*/ +#line 24635 "tex.w" +,extension,immediate_code); + +primitive(/*1787:*/ +#line 26257 "tex.w" +662 +/*:1787*/ +#line 24637 "tex.w" +,extension,set_language_code); + + +/*:1344*/ +#line 24438 "tex.w" +; +no_new_control_sequence= true; +} +#endif + +/*:1336*//*1338:*/ +#line 24491 "tex.w" + +#ifdef DEBUG +void debug_help(void) +{ +int k,l,m,n; +loop{wake_up_terminal; +print_nl("debug # (-1 to exit):");update_terminal; + +if(fscanf(term_in.f," %d",&m)<1|| +m<0)return; +else if(m==0) +{goto breakpoint; +breakpoint:m= 0; +} +else{fscanf(term_in.f," %d",&n); +switch(m){ +/*1339:*/ +#line 24515 "tex.w" + +case 1:print_word(mem[n]);break; +case 2:print_int(info(n));break; +case 3:print_int(link(n));break; +case 4:print_word(eqtb[n]);break; +case 5:print_word(font_info[n]);break; +case 6:print_word(save_stack[n]);break; +case 7:show_box(n);break; + +case 8:{breadth_max= 10000;depth_threshold= pool_size-pool_ptr-10; +show_node_list(n); +}break; +case 9:show_token_list(n,null,1000);break; +case 10:slow_print(n);break; +case 11:check_mem(n> 0);break; +case 12:search_mem(n);break; +case 13:{fscanf(term_in.f," %d",&l);print_cmd_chr(n,l); +}break; +case 14:for(k= 0;k<=n;k++)print(buffer[k]);break; +case 15:{font_in_short_display= null_font;short_display(n); +}break; +case 16:panicking= !panicking;break; + +/*:1339*/ +#line 24507 "tex.w" + +default:print_str("?"); +} +} +} +} +#endif + +/*:1338*/ +#line 24235 "tex.w" + + +/*:1330*//*1332:*/ +#line 24289 "tex.w" +int main(void){ +history= fatal_error_stop; +t_open_out; +if(ready_already==314159)goto start_of_TEX; +/*14:*/ +#line 473 "tex.w" + +bad= 0; +if((half_error_line<30)||(half_error_line> error_line-15))bad= 1; +if(max_print_line<60)bad= 2; +if(dvi_buf_size%8!=0)bad= 3; +if(mem_bot+1100> mem_top)bad= 4; +if(hash_prime> hash_size)bad= 5; +if(max_in_open>=128)bad= 6; +if(mem_top<256+11)bad= 7; + +/*:14*//*111:*/ +#line 2452 "tex.w" + +#ifdef INIT +if((mem_min!=mem_bot)||(mem_max!=mem_top))bad= 10; +#endif + +if((mem_min> mem_bot)||(mem_max<mem_top))bad= 10; +if((min_quarterword> 0)||(max_quarterword<127))bad= 11; +if((min_halfword> 0)||(max_halfword<32767))bad= 12; +if((min_quarterword<min_halfword)|| +(max_quarterword> max_halfword))bad= 13; +if((mem_min<min_halfword)||(mem_max>=max_halfword)|| +(mem_bot-mem_min> max_halfword+1))bad= 14; +if((font_base<min_quarterword)||(font_max> max_quarterword))bad= 15; +if(font_max> font_base+256)bad= 16; +if((save_size> max_halfword)||(max_strings> max_halfword))bad= 17; +if(buf_size> max_halfword)bad= 18; +if(max_quarterword-min_quarterword<255)bad= 19; + +/*:111*//*290:*/ +#line 6246 "tex.w" + +if(cs_token_flag+undefined_control_sequence> max_halfword)bad= 21; + +/*:290*//*521:*/ +#line 10144 "tex.w" + +if(format_default_length> file_name_size)bad= 31; + +/*:521*//*1249:*/ +#line 23283 "tex.w" + +if(2*max_halfword<mem_top-mem_min)bad= 41; + +/*:1249*/ +#line 24293 "tex.w" + +if(bad> 0) +{wterm_ln("Ouch---my internal constants have been clobbered!" +"---case %d",bad); + +exit(0); +} +initialize(); +#ifdef INIT +init_prim(); +init_str_ptr= str_ptr;init_pool_ptr= pool_ptr;fix_date_and_time(); +#endif +ready_already= 314159; +start_of_TEX:/*55:*/ +#line 1438 "tex.w" + +selector= term_only;tally= 0;term_offset= 0;file_offset= 0; + +/*:55*//*61:*/ +#line 1588 "tex.w" + +wterm("%s",banner); +if(format_ident==0)wterm_ln(" (no format preloaded)"); +else{slow_print(format_ident);print_ln(); +} +update_terminal; + +/*:61*//*527:*/ +#line 10278 "tex.w" + +job_name= 0;name_in_progress= false;log_opened= false; + +/*:527*//*533:*/ +#line 10347 "tex.w" +output_file_name= 0; + +/*:533*/ +#line 24306 "tex.w" +; +/*1337:*/ +#line 24450 "tex.w" + +{/*331:*/ +#line 7153 "tex.w" + +{input_ptr= 0;max_in_stack= 0; +in_open= 0;open_parens= 0;max_buf_stack= 0; +param_ptr= 0;max_param_stack= 0; +first= buf_size;do{buffer[first]= 0;decr(first);}while(!(first==0)); +scanner_status= normal;warning_index= null;first= 1; +state= new_line;start= 1;index= 0;line= 0;name= 0; +force_eof= false; +align_state= 1000000; +if(!init_terminal())exit(0); +limit= last;first= last+1; +} + +/*:331*/ +#line 24451 "tex.w" +; +if((format_ident==0)||(buffer[loc]=='&')) +{if(format_ident!=0)initialize(); +if(!open_fmt_file())exit(0); +if(!load_fmt_file()) +{w_close(&fmt_file);exit(0); +} +w_close(&fmt_file); +while((loc<limit)&&(buffer[loc]==' '))incr(loc); +} +if(end_line_char_inactive)decr(limit); +else buffer[limit]= end_line_char; +fix_date_and_time(); +/*765:*/ +#line 15078 "tex.w" + +magic_offset= str_start[math_spacing]-9*ord_noad + +/*:765*/ +#line 24464 "tex.w" +; +/*75:*/ +#line 1788 "tex.w" + +if(interaction==batch_mode)selector= no_print;else selector= term_only + +/*:75*/ +#line 24465 "tex.w" +; +if((loc<limit)&&(cat_code(buffer[loc])!=escape))start_input(); + +} + +/*:1337*/ +#line 24307 "tex.w" +; +history= spotless; +main_control(); +final_cleanup(); +close_files_and_terminate(); +ready_already= 0; +return 0;} + +/*:1332*/ |