% eptexdir/etex.ch0: changefile used to build e-pTeX, see eptexdir/eptex-base.ch for details. % Public domain. Originally written by Peter Breitenlohner . @x [10] m.135 l.2895 - e-TeX TeXXeT |fil|, |fill|, or |filll|). The |subtype| field is not used in \TeX. @y |fil|, |fill|, or |filll|). The |subtype| field is not used. @z @x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters @d int_pars=web2c_int_pars {total number of integer parameters} @# @d etex_int_base=tex_int_pars {base for \eTeX's integer parameters} @y @d int_pars=web2c_int_pars {total number of integer parameters} @d count_base=int_base+int_pars {256 user \.{\\count} registers} @z @x [26.413] {fetch an internal parameter} label exit; var m:halfword; {|chr_code| part of the operand token} @!q,@!r:pointer; {general purpose indices} @!tx:pointer; {effective tail node} @y {fetch an internal parameter} var m:halfword; {|chr_code| part of the operand token} @z @x [26.413] exit:end; @y end; @z @x @d badness_code=input_line_no_code+1 {code for \.{\\badness}} @y @d badness_code=glue_val+2 {code for \.{\\badness}} @z @x [26.420] begin scan_register_num; fetch_box(q); if q=null then cur_val:=0 @+else cur_val:=mem[q+m].sc; @y begin scan_eight_bit_int; if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc; @z @x [26.424] legal in similar contexts. @y legal in similar contexts. @z @x [26.424] @d find_effective_tail==find_effective_tail_eTeX @y @z @x if m>=eTeX_glue then @@; else if m>=eTeX_dim then begin case m of @/@@/ end; {there are no other cases} cur_val_level:=dimen_val; end else begin case m of input_line_no_code: cur_val:=line; badness_code: cur_val:=last_badness; @/@@/ end; {there are no other cases} @y begin if cur_chr=input_line_no_code then cur_val:=line else cur_val:=last_badness; {|cur_chr=badness_code|} @z @x [26.424] find_effective_tail; @y @z @x [26.424] if not is_char_node(tx)and(mode<>0) then case cur_chr of int_val: if type(tx)=penalty_node then cur_val:=penalty(tx); dimen_val: if type(tx)=kern_node then cur_val:=width(tx); glue_val: if type(tx)=glue_node then begin cur_val:=glue_ptr(tx); if subtype(tx)=mu_glue then cur_val_level:=mu_val; @y if not is_char_node(tail)and(mode<>0) then case cur_chr of int_val: if type(tail)=penalty_node then cur_val:=penalty(tail); dimen_val: if type(tail)=kern_node then cur_val:=width(tail); glue_val: if type(tail)=glue_node then begin cur_val:=glue_ptr(tail); if subtype(tail)=mu_glue then cur_val_level:=mu_val; @z @x [26.424] else if (mode=vmode)and(tx=head) then @y else if (mode=vmode)and(tail=head) then @z @x [27.468] @d etex_convert_base=5 {base for \eTeX's command codes} @d eTeX_revision_code=etex_convert_base {command code for \.{\\eTeXrevision}} @d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes} @d job_name_code=etex_convert_codes {command code for \.{\\jobname}} @y @d job_name_code=5 {command code for \.{\\jobname}} @z @x [30.581] var old_setting: integer; {saved value of |tracing_online|} @y @z @x [32.619] save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; prev_p:=this_box+list_offset; @; left_edge:=cur_h; @y save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h; @z @x [32.620] prev_p:=link(prev_p); {N.B.: not |prev_p:=p|, |p| might be |lig_trick|} @y @z @x [32.624] l.13005 - pTeX: output a box(and dir_node) with disp cur_h:=edge; cur_v:=base_line; @y cur_h:=edge+width(p); cur_v:=base_line; @z @x [33.649] exit: if TeXXeT_en then @; hpack:=r; @y exit: hpack:=r; @z @x [44.977] q:=prune_page_top(q,saving_vdiscards>0); p:=list_ptr(v); free_node(v,box_node_size); if q<>null then q:=vpack(q,natural); change_box(q); {the |eq_level| of the box stays the same} @y q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size); if q=null then box(n):=null {the |eq_level| of the box stays the same} else box(n):=vpack(q,natural); @z @x [47.1079] @!r:pointer; {running behind |p|} @!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?} @!tx:pointer; {effective tail node} @y @z @x [47.1080] @d check_effective_tail(#)==find_effective_tail_eTeX @d fetch_effective_tail==fetch_effective_tail_eTeX @y @z @x [47.1080] else begin check_effective_tail(goto done); if not is_char_node(tx) then if (type(tx)=hlist_node)or(type(tx)=vlist_node) then @; done:end; @y else begin if not is_char_node(tail) then if (type(tail)=hlist_node)or(type(tail)=vlist_node) then @; end; @z @x [47.1081] begin fetch_effective_tail(goto done); cur_box:=tx; shift_amount(cur_box):=0; end @y begin q:=head; repeat p:=q; if not is_char_node(q) then if type(q)=disc_node then begin for m:=1 to replace_count(q) do p:=link(p); if p=tail then goto done; end; q:=link(p); until q=tail; cur_box:=tail; shift_amount(cur_box):=0; tail:=p; link(p):=null; done:end @z @x [47.1096] else line_break(false); @y else line_break(widow_penalty); @z @x [47.1105] @!r:pointer; {running behind |p|} @!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?} @!tx:pointer; {effective tail node} @y @z @x [47.1105] else begin check_effective_tail(return); if not is_char_node(tx) then if type(tx)=cur_chr then begin fetch_effective_tail(return); flush_node_list(tx); @y else begin if not is_char_node(tail) then if type(tail)=cur_chr then begin q:=head; repeat p:=q; if not is_char_node(q) then if type(q)=disc_node then begin for m:=1 to replace_count(q) do p:=link(p); if p=tail then return; end; q:=link(p); until q=tail; link(p):=null; flush_node_list(tail); tail:=p; @z @x [47.1110] else begin link(tail):=list_ptr(p); change_box(null); @y else begin link(tail):=list_ptr(p); box(cur_val):=null; @z @x [48.1145] else begin line_break(true);@/ @y else begin line_break(display_widow_penalty);@/ @z @x [49.1247] if b<>null then mem[b+c].sc:=cur_val; @y if box(b)<>null then mem[box(b)+c].sc:=cur_val; @z