diff options
Diffstat (limited to 'Build/source/texk/web2c/eptexdir/etex.ch0')
-rw-r--r-- | Build/source/texk/web2c/eptexdir/etex.ch0 | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/Build/source/texk/web2c/eptexdir/etex.ch0 b/Build/source/texk/web2c/eptexdir/etex.ch0 index 900b02c1715..cb2f8795e87 100644 --- a/Build/source/texk/web2c/eptexdir/etex.ch0 +++ b/Build/source/texk/web2c/eptexdir/etex.ch0 @@ -14,6 +14,7 @@ {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} @@ -27,8 +28,10 @@ end; @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 @@ -39,29 +42,32 @@ if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc; @z @x [26.424] - begin find_effective_tail(return); - 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; - end; + 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; - end; @z @x [26.424] - end; {there are no other cases} - end + else if (mode=vmode)and(tx=head) then @y - end {there are no other cases} + else if (mode=vmode)and(tail=head) then @z @x [27.468] @@ -129,19 +135,17 @@ else box(n):=vpack(q,natural); @y @z @x [47.1080] - begin find_effective_tail(goto done); +else begin find_effective_tail; + if not is_char_node(tx) then if (type(tx)=hlist_node)or(type(tx)=vlist_node) then - @<Remove the last box, unless it's part of a discretionary@>; - done:end; @y +else begin if not is_char_node(tail) then if (type(tail)=hlist_node)or(type(tail)=vlist_node) then - @<Remove the last box, unless it's part of a discretionary@>; @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; @@ -153,7 +157,6 @@ 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] @@ -170,11 +173,10 @@ done:end @z @x [47.1105] -else if not is_char_node(tail) then - begin find_effective_tail(return); - if type(tx)<>cur_chr then return; - fetch_effective_tail(return); - flush_node_list(tx); +else begin find_effective_tail; + 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; @@ -186,7 +188,6 @@ else begin if not is_char_node(tail) then if type(tail)=cur_chr then q:=link(p); until q=tail; link(p):=null; flush_node_list(tail); tail:=p; - end; @z @x [47.1110] |