1% eptexdir/etex.ch0: changefile used to build e-pTeX, see eptexdir/eptex-base.ch for details. 2% Public domain. Originally written by Peter Breitenlohner <tex-live@tug.org>. 3 4@x [10] m.135 l.2895 - e-TeX TeXXeT 5|fil|, |fill|, or |filll|). The |subtype| field is not used in \TeX. 6@y 7|fil|, |fill|, or |filll|). The |subtype| field is not used. 8@z 9 10@x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters 11@d int_pars=web2c_int_pars {total number of integer parameters} 12@# 13@d etex_int_base=tex_int_pars {base for \eTeX's integer parameters} 14@y 15@d int_pars=web2c_int_pars {total number of integer parameters} 16@d count_base=int_base+int_pars {256 user \.{\\count} registers} 17@z 18 19@x [26.413] 20 {fetch an internal parameter} 21label exit; 22var m:halfword; {|chr_code| part of the operand token} 23@!q,@!r:pointer; {general purpose indices} 24@!tx:pointer; {effective tail node} 25@y 26 {fetch an internal parameter} 27var m:halfword; {|chr_code| part of the operand token} 28@z 29 30@x [26.413] 31exit:end; 32@y 33end; 34@z 35 36@x [26.420] 37begin scan_register_num; fetch_box(q); 38if q=null then cur_val:=0 @+else cur_val:=mem[q+m].sc; 39@y 40begin scan_eight_bit_int; 41if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc; 42@z 43 44@x [26.424] 45legal in similar contexts. 46 47@y 48legal in similar contexts. 49@z 50 51@x [26.424] 52@d find_effective_tail==find_effective_tail_eTeX 53 54@y 55@z 56 57@x [26.424] 58 find_effective_tail; 59@y 60@z 61 62@x [26.424] 63 if not is_char_node(tx)and(mode<>0) then 64 case cur_chr of 65 int_val: if type(tx)=penalty_node then cur_val:=penalty(tx); 66 dimen_val: if type(tx)=kern_node then cur_val:=width(tx); 67 glue_val: if type(tx)=glue_node then 68 begin cur_val:=glue_ptr(tx); 69 if subtype(tx)=mu_glue then cur_val_level:=mu_val; 70@y 71 if not is_char_node(tail)and(mode<>0) then 72 case cur_chr of 73 int_val: if type(tail)=penalty_node then cur_val:=penalty(tail); 74 dimen_val: if type(tail)=kern_node then cur_val:=width(tail); 75 glue_val: if type(tail)=glue_node then 76 begin cur_val:=glue_ptr(tail); 77 if subtype(tail)=mu_glue then cur_val_level:=mu_val; 78@z 79 80@x [26.424] 81 else if (mode=vmode)and(tx=head) then 82@y 83 else if (mode=vmode)and(tail=head) then 84@z 85 86@x [27.468] 87@d etex_convert_base=5 {base for \eTeX's command codes} 88@d eTeX_revision_code=etex_convert_base {command code for \.{\\eTeXrevision}} 89@d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes} 90@d job_name_code=etex_convert_codes {command code for \.{\\jobname}} 91@y 92@d job_name_code=5 {command code for \.{\\jobname}} 93@z 94 95@x [30.581] 96var old_setting: integer; {saved value of |tracing_online|} 97@y 98@z 99 100@x [32.619] 101save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; 102prev_p:=this_box+list_offset; 103@<Initialize |hlist_out| for mixed direction typesetting@>; 104left_edge:=cur_h; 105@y 106save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h; 107@z 108 109@x [32.620] 110 prev_p:=link(prev_p); {N.B.: not |prev_p:=p|, |p| might be |lig_trick|} 111@y 112@z 113 114@x [32.624] l.13005 - pTeX: output a box(and dir_node) with disp 115 cur_h:=edge; cur_v:=base_line; 116@y 117 cur_h:=edge+width(p); cur_v:=base_line; 118@z 119 120@x [33.649] 121exit: if TeXXeT_en then @<Check for LR anomalies at the end of |hpack|@>; 122hpack:=r; 123@y 124exit: hpack:=r; 125@z 126 127@x [44.977] 128q:=prune_page_top(q,saving_vdiscards>0); 129p:=list_ptr(v); free_node(v,box_node_size); 130if q<>null then q:=vpack(q,natural); 131change_box(q); {the |eq_level| of the box stays the same} 132@y 133q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size); 134if q=null then box(n):=null {the |eq_level| of the box stays the same} 135else box(n):=vpack(q,natural); 136@z 137 138@x [47.1079] 139@!r:pointer; {running behind |p|} 140@!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?} 141@!tx:pointer; {effective tail node} 142@y 143@z 144 145@x [47.1080] 146@d check_effective_tail(#)==find_effective_tail_eTeX 147@d fetch_effective_tail==fetch_effective_tail_eTeX 148 149@y 150@z 151@x [47.1080] 152else begin check_effective_tail(goto done); 153 if not is_char_node(tx) then 154 if (type(tx)=hlist_node)or(type(tx)=vlist_node) then 155 @<Remove the last box, unless it's part of a discretionary@>; 156 done:end; 157@y 158else begin if not is_char_node(tail) then 159 if (type(tail)=hlist_node)or(type(tail)=vlist_node) then 160 @<Remove the last box, unless it's part of a discretionary@>; 161 end; 162@z 163 164@x [47.1081] 165begin fetch_effective_tail(goto done); 166cur_box:=tx; shift_amount(cur_box):=0; 167end 168@y 169begin q:=head; 170repeat p:=q; 171if not is_char_node(q) then if type(q)=disc_node then 172 begin for m:=1 to replace_count(q) do p:=link(p); 173 if p=tail then goto done; 174 end; 175q:=link(p); 176until q=tail; 177cur_box:=tail; shift_amount(cur_box):=0; 178tail:=p; link(p):=null; 179done:end 180@z 181 182@x [47.1096] 183 else line_break(false); 184@y 185 else line_break(widow_penalty); 186@z 187 188@x [47.1105] 189@!r:pointer; {running behind |p|} 190@!fm:boolean; {a final \.{\\beginM} \.{\\endM} node pair?} 191@!tx:pointer; {effective tail node} 192@y 193@z 194 195@x [47.1105] 196else begin check_effective_tail(return); 197 if not is_char_node(tx) then if type(tx)=cur_chr then 198 begin fetch_effective_tail(return); 199 flush_node_list(tx); 200@y 201else begin if not is_char_node(tail) then if type(tail)=cur_chr then 202 begin q:=head; 203 repeat p:=q; 204 if not is_char_node(q) then if type(q)=disc_node then 205 begin for m:=1 to replace_count(q) do p:=link(p); 206 if p=tail then return; 207 end; 208 q:=link(p); 209 until q=tail; 210 link(p):=null; flush_node_list(tail); tail:=p; 211@z 212 213@x [47.1110] 214else begin link(tail):=list_ptr(p); change_box(null); 215@y 216else begin link(tail):=list_ptr(p); box(cur_val):=null; 217@z 218 219@x [48.1145] 220else begin line_break(true);@/ 221@y 222else begin line_break(display_widow_penalty);@/ 223@z 224 225@x [49.1247] 226if b<>null then mem[b+c].sc:=cur_val; 227@y 228if box(b)<>null then mem[box(b)+c].sc:=cur_val; 229@z 230 231