diff options
Diffstat (limited to 'Build/source/texk/web2c')
-rw-r--r-- | Build/source/texk/web2c/eptexdir/ChangeLog.TL | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/eptexdir/eptex.ech | 72 | ||||
-rw-r--r-- | Build/source/texk/web2c/eptexdir/etex.ch0 | 49 | ||||
-rw-r--r-- | Build/source/texk/web2c/eptexdir/etex.ch1 | 24 | ||||
-rw-r--r-- | Build/source/texk/web2c/etexdir/ChangeLog | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/etexdir/etex.ch | 78 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/ChangeLog | 8 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/ptex-base.ch | 86 |
8 files changed, 166 insertions, 163 deletions
diff --git a/Build/source/texk/web2c/eptexdir/ChangeLog.TL b/Build/source/texk/web2c/eptexdir/ChangeLog.TL index 2950cfccdae..ca4acea57ab 100644 --- a/Build/source/texk/web2c/eptexdir/ChangeLog.TL +++ b/Build/source/texk/web2c/eptexdir/ChangeLog.TL @@ -1,6 +1,12 @@ ChangeLog.TL: TeX Live (TL) changes for e-pTeX ============================================== +2011-03-27 Peter Breitenlohner <peb@mppmu.mpg.de> + + * eptex.ech, etex.ch[01]: Reformulate @<Fetch an item in the + current node...@>, begin_box, and delete_last to fix a bug in + \lastpenalty & Co; further reduce e-pTeX interferences. + 2011-03-25 Peter Breitenlohner <peb@mppmu.mpg.de> * eptex.ech, etex.ch[01]: Reformulate begin_box and delete_last diff --git a/Build/source/texk/web2c/eptexdir/eptex.ech b/Build/source/texk/web2c/eptexdir/eptex.ech index 8a102eb99e4..49d80ac2d75 100644 --- a/Build/source/texk/web2c/eptexdir/eptex.ech +++ b/Build/source/texk/web2c/eptexdir/eptex.ech @@ -39,43 +39,51 @@ @d set_box_dir(#) == subtype(#):=(subtype(#)div 8)*8+set_box_dir_end @z +@x [26.413] l.8343 - e-pTeX: scan_something_internal +var m:halfword; {|chr_code| part of the operand token} +@y +label exit; +var m:halfword; {|chr_code| part of the operand token} +@z + +@x [26.420] l.8474 - pTeX: Fetch a box dimension: dir_node +begin scan_eight_bit_int; q:=box(cur_val); +@y +begin scan_register_num; fetch_box(q); +@z + @x [26.424] l.8510 - e-pTeX: last node @d find_effective_tail==find_effective_tail_pTeX @y -@d find_effective_tail_epTeX(#)== {sets |tx| to last non-\.{\\endM} non-|disp_node|} -find_effective_tail_pTeX(#); -if (type(tx)=math_node)and(subtype(tx)=end_M_code) then - begin r:=head; - repeat q:=r; r:=link(q); until link(r)=tx; - if is_char_node(r) then #; - if type(r)=disp_node then - if is_char_node(q)or(q=head) then # - else tx:=q - else tx:=r; +@d find_effective_tail_epTeX== {sets |tx| to last non-\.{\\endM} non-|disp_node|} +tx:=tail; +if not is_char_node(tx) then + begin if type(tx)=disp_node then tx:=prev_node; + if not is_char_node(tx) then + if (type(tx)=math_node)and(subtype(tx)=end_M_code) then + begin r:=head; + repeat q:=r; r:=link(q); + until r=tx; + tx:=q; + end; + if not is_char_node(tx) then + if type(tx)=disp_node then tx:=prev_node; end @# @d find_effective_tail==find_effective_tail_epTeX @z -@x [26.424] l.8517 - e-pTeX: node types - if (tail=head)or(mode=0) then cur_val:=-1; -@y - if (tail=head)or(mode=0)or@| - ((tail=link(head))and not is_char_node(tail)and(type(tail)=disp_node)) - then cur_val:=-1; -@z - @x [26.424] e-pTeX: node types - last_node_type_code: if type(tx)<=unset_node then cur_val:=type(tx)+1 - else cur_val:=unset_node+2; + last_node_type_code: if type(tx)<=unset_node then cur_val:=type(tx)+1 + else cur_val:=unset_node+2; @y - last_node_type_code: if type(tx)<=unset_node then - begin if type(tx)=dir_node then tx:=list_ptr(tx); - cur_val:=type(tx); - if cur_val<dir_node then cur_val:=cur_val+1 - else if cur_val>disp_node then cur_val:=cur_val-1; - end - else cur_val:=unset_node; {\epTeX's |unset_node| is \eTeX's |unset_node+2|} + last_node_type_code: if type(tx)<=unset_node then + begin if type(tx)=dir_node then tx:=list_ptr(tx); + cur_val:=type(tx); + if cur_val<dir_node then cur_val:=cur_val+1 + else if cur_val>disp_node then cur_val:=cur_val-1; + end + else cur_val:=unset_node; {\epTeX's |unset_node| is \eTeX's |unset_node+2|} @z @x e-pTeX: if primitives - leave room for three e-TeX codes @@ -94,6 +102,12 @@ if (type(tx)=math_node)and(subtype(tx)=end_M_code) then @d set_box_lrstat_end(#) == (#) @z +@x [45.996] l.19420 +last_node_type:=type(p)+1; +@y +last_node_type:=type(p)+1; +@z + @x [47.1079] l.20920 @!fd:boolean; {a final |disp_node| pair?} @y @@ -201,10 +215,10 @@ if fm>0 then {drop \.{\\beginM} \.{\\endM} pair} @z @x e-pTeX: displacement value when typesetting right-to-left l.27798 -@!LR_temp:pointer; {holds a temporarily removed \.{\\endM} node} +@!LR_ptr:pointer; {stack of LR codes for |hpack|, |ship_out|, and |init_math|} @y @!revdisp:scaled; {temporary value of displacement} -@!LR_temp:pointer; {holds a temporarily removed \.{\\endM} node} +@!LR_ptr:pointer; {stack of LR codes for |hpack|, |ship_out|, and |init_math|} @z @x e-pTeX: reverse nodes of an hlist l.28010 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] diff --git a/Build/source/texk/web2c/eptexdir/etex.ch1 b/Build/source/texk/web2c/eptexdir/etex.ch1 index db1aa74ec32..0032ec606e5 100644 --- a/Build/source/texk/web2c/eptexdir/etex.ch1 +++ b/Build/source/texk/web2c/eptexdir/etex.ch1 @@ -24,30 +24,6 @@ @d etex_int_base=tex_int_pars {base for \eTeX's integer parameters} @z -@x [26.413] -@!q:halfword; {general purpose index} -@y -@!qx:halfword; {general purpose index} -@z - -@x [26.420] -if box(cur_val)=null then cur_val:=0 -else - begin q:=box(cur_val); - while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q); - if q=null then - begin r:=link(box(cur_val)); link(box(cur_val)):=null; - q:=new_dir_node(box(cur_val),abs(direction)); link(box(cur_val)):=r; -@y -if q=null then cur_val:=0 -else - begin qx:=q; - while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q); - if q=null then - begin r:=link(qx); link(qx):=null; - q:=new_dir_node(qx,abs(direction)); link(qx):=r; -@z - @x [27.468] @d job_name_code=10 {command code for \.{\\jobname}} @y diff --git a/Build/source/texk/web2c/etexdir/ChangeLog b/Build/source/texk/web2c/etexdir/ChangeLog index f968926cf94..2e1853d8693 100644 --- a/Build/source/texk/web2c/etexdir/ChangeLog +++ b/Build/source/texk/web2c/etexdir/ChangeLog @@ -1,3 +1,9 @@ +2011-03-27 Peter Breitenlohner <peb@mppmu.mpg.de> + + * etex.ch: Reformulate @<Fetch an item in the current node...@>, + begin_box, and delete_last to fix a bug in \lastpenalty & Co; + further reduce e-pTeX interferences. + 2011-03-24 Peter Breitenlohner <peb@mppmu.mpg.de> * etex.ch: Reformulate begin_box and delete_last to reduce diff --git a/Build/source/texk/web2c/etexdir/etex.ch b/Build/source/texk/web2c/etexdir/etex.ch index a3d4ba5cbd1..42e331cd1a0 100644 --- a/Build/source/texk/web2c/etexdir/etex.ch +++ b/Build/source/texk/web2c/etexdir/etex.ch @@ -1083,8 +1083,8 @@ var m:halfword; {|chr_code| part of the operand token} @y label exit; var m:halfword; {|chr_code| part of the operand token} +@!q,@!r:pointer; {general purpose indices} @!tx:pointer; {effective tail node} -@!q:halfword; {general purpose index} @!i:four_quarters; {character info} @z %--------------------------------------- @@ -1182,13 +1182,15 @@ else if par_shape_ptr=null then cur_val:=0 @x [26] m.424 l.8510 - e-TeX TeXXeT @<Fetch an item in the current node...@>= @y -@d find_effective_tail_eTeX(#)== {sets |tx| to last non-\.{\\endM} node} -if (type(tail)=math_node)and(subtype(tail)=end_M_code) then - begin tx:=head; - while link(tx)<>tail do tx:=link(tx); - if is_char_node(tx) then #; - end -else tx:=tail +@d find_effective_tail_eTeX== {sets |tx| to last non-\.{\\endM} node} +tx:=tail; +if not is_char_node(tx) then + if (type(tx)=math_node)and(subtype(tx)=end_M_code) then + begin r:=head; + repeat q:=r; r:=link(q); + until r=tx; + tx:=q; + end @# @d find_effective_tail==find_effective_tail_eTeX @@ -1221,15 +1223,7 @@ if m>=input_line_no_code then %--------------------------------------- @x [26] m.424 l.8517 - e-TeX last_node_type cur_val_level:=cur_chr; -@y - if cur_chr=last_node_type_code then - begin cur_val_level:=int_val; - if (tail=head)or(mode=0) then cur_val:=-1; - end - else cur_val_level:=cur_chr; -@z -%--------------------------------------- -@x [26] m.424 l.8519 - e-TeX TeXXeT, last_node_type + 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); @@ -1238,19 +1232,26 @@ if m>=input_line_no_code then if subtype(tail)=mu_glue then cur_val_level:=mu_val; end; end {there are no other cases} + else if (mode=vmode)and(tail=head) then @y - 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; - last_node_type_code: if type(tx)<=unset_node then cur_val:=type(tx)+1 - else cur_val:=unset_node+2; - end; {there are no other cases} + find_effective_tail; + if cur_chr=last_node_type_code then + begin cur_val_level:=int_val; + if (tx=head)or(mode=0) then cur_val:=-1; end + else cur_val_level:=cur_chr; + 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; + end; + last_node_type_code: if type(tx)<=unset_node then cur_val:=type(tx)+1 + else cur_val:=unset_node+2; + end {there are no other cases} + else if (mode=vmode)and(tx=head) then @z %--------------------------------------- @x [26] m.424 l.8531 - e-TeX last_node_type @@ -2349,14 +2350,13 @@ else if fm then {|r|$\to$|p=begin_M|$\to$|q=end_M|} @<If the current list ends with a box node, delete it...@>= @z %--------------------------------------- -@x [47] m.1080 l.20951 - e-TeX TeXXeT +@x [47] m.1080 l.20950 - e-TeX TeXXeT +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@>; @y - 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; @z %--------------------------------------- @x [47] m.1081 l.20957 - e-TeX TeXXeT @@ -2370,11 +2370,9 @@ q:=link(p); until q=tail; cur_box:=tail; shift_amount(cur_box):=0; tail:=p; link(p):=null; -done:end @y begin fetch_effective_tail(goto done); cur_box:=tx; shift_amount(cur_box):=0; -end @z %--------------------------------------- @x [47] m.1082 l.20972 - e-TeX sparse arrays @@ -2423,13 +2421,11 @@ 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; @y -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); @z %--------------------------------------- @x [47] m.1108 l.21299 - e-TeX saved_items diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog index cb39bd82cd5..a90820a2c25 100644 --- a/Build/source/texk/web2c/ptexdir/ChangeLog +++ b/Build/source/texk/web2c/ptexdir/ChangeLog @@ -1,3 +1,9 @@ +2011-03-27 Peter Breitenlohner <peb@mppmu.mpg.de> + + * ptex-base.ch: Reformulate @<Fetch an item in the current + node...@>, begin_box, and delete_last to fix a bug in + \lastpenalty & Co; further reduce e-pTeX interferences. + 2011-03-26 Peter Breitenlohner <peb@mppmu.mpg.de> * ptex-base.ch: Fix a bug in begin_box introduced on 2011-03-24, @@ -10,7 +16,7 @@ 2011-03-22 Peter Breitenlohner <peb@mppmu.mpg.de> -. * ptex-base.ch: Reformulate @<Fetch an item in the current + * ptex-base.ch: Reformulate @<Fetch an item in the current node...@> to reduce interferences between e-TeX and pTeX. 2011-03-18 Peter Breitenlohner <peb@mppmu.mpg.de> diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch index 69303bfbf7c..35617409489 100644 --- a/Build/source/texk/web2c/ptexdir/ptex-base.ch +++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch @@ -1914,20 +1914,20 @@ if cur_cs=0 then else cur_tok:=cs_token_flag+cur_cs; @z -@x [26.413] l.8341 - pTeX: scan_somthing_internal +@x [26.413] l.8341 - pTeX: scan_something_internal @p procedure scan_something_internal(@!level:small_number;@!negative:boolean); @y -@p @t\4@>@<Declare procedures needed in |scan_something|@>@t@>@/ +@p @t\4@>@<Declare procedures needed in |scan_something_internal|@>@t@>@/ procedure scan_something_internal(@!level:small_number;@!negative:boolean); @z -@x [26.413] l.8343 - pTeX: scan_somthing_internal +@x [26.413] l.8343 - pTeX: scan_something_internal var m:halfword; {|chr_code| part of the operand token} @y -label exit; var m:halfword; {|chr_code| part of the operand token} @!tx:pointer; {effective tail node} +@!qx:halfword; {general purpose index} @z -@x [26.413] l.8345 - pTeX: scan_somthing_internal +@x [26.413] l.8345 - pTeX: scan_something_internal begin m:=cur_chr; case cur_cmd of def_code: @<Fetch a character code from some table@>; @@ -1959,16 +1959,17 @@ else if m<math_code_base then else scanned_result(eqtb[m+cur_val].int)(int_val); @z -@x [26.420] l.8475 - pTeX: Fetch a box dimension: dir_node +@x [26.420] l.8474 - pTeX: Fetch a box dimension: dir_node +begin scan_eight_bit_int; if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc; @y -if box(cur_val)=null then cur_val:=0 -else - begin q:=box(cur_val); +begin scan_eight_bit_int; q:=box(cur_val); +if q=null then cur_val:=0 +else begin qx:=q; while (q<>null)and(box_dir(q)<>abs(direction)) do q:=link(q); if q=null then - begin r:=link(box(cur_val)); link(box(cur_val)):=null; - q:=new_dir_node(box(cur_val),abs(direction)); link(box(cur_val)):=r; + begin r:=link(qx); link(qx):=null; + q:=new_dir_node(qx,abs(direction)); link(qx):=r; cur_val:=mem[q+m].sc; delete_glue_ref(space_ptr(q)); delete_glue_ref(xspace_ptr(q)); free_node(q,box_node_size); @@ -1980,17 +1981,21 @@ else @x [26.424] l.8510 - pTeX: disp_node @<Fetch an item in the current node...@>= @y -@d find_effective_tail_pTeX(#)== {sets |tx| to last non-|disp_node|} -if type(tail)=disp_node then - if is_char_node(prev_node)or(prev_node=head) then # - else tx:=prev_node -else tx:=tail +@d find_effective_tail_pTeX== {sets |tx| to last non-|disp_node|} +tx:=tail; +if not is_char_node(tx) then if type(tx)=disp_node then tx:=prev_node @# @d find_effective_tail==find_effective_tail_pTeX @<Fetch an item in the current node...@>= @z +@x [26.424] l.8516 - pTeX: Fetch an item ...: disp_node +else begin if cur_chr=glue_val then cur_val:=zero_glue@+else cur_val:=0; +@y +else begin if cur_chr=glue_val then cur_val:=zero_glue@+else cur_val:=0; + find_effective_tail; +@z @x [26.424] l.8518 - pTeX: Fetch an item ...: disp_node if not is_char_node(tail)and(mode<>0) then case cur_chr of @@ -2001,21 +2006,19 @@ else tx:=tail if subtype(tail)=mu_glue then cur_val_level:=mu_val; end; @y - if not is_char_node(tail)and(tail<>head)and(mode<>0) then - 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; + if not is_char_node(tx)and(tx<>head)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; + end; @z -@x [26.424] l.8526 - pTeX: Fetch an item ...: disp_node - end {there are no other cases} +@x [26.424] l.8527 - pTeX: Fetch an item ...: disp_node + else if (mode=vmode)and(tail=head) then @y - end; {there are no other cases} - end + else if (mode=vmode)and(tx=head) then @z @x [26.435] l.8940 - pTeX: scan_char_num @@ -4680,14 +4683,11 @@ else prev_node:=p @x [47.1080] l.20950 - pTeX: disp_node, check head=tail 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@>; @y -else begin if not is_char_node(tail)and(head<>tail) then - begin find_effective_tail(goto done); +else begin find_effective_tail; + if not is_char_node(tx)and(head<>tx) then if (type(tx)=hlist_node)or(type(tx)=vlist_node) or(type(tx)=dir_node) then - @<Remove the last box, unless it's part of a discretionary@>; - done:end; @z @x [47.1081] l.20957 - pTeX: disp_node @@ -4712,7 +4712,7 @@ if type(cur_box)=dir_node then end else if box_dir(cur_box)=dir_default then set_box_dir(cur_box)(abs(direction)); -end +done:end @z @x [47.1083] l.20989 - pTeX: adjust_dir @@ -4925,13 +4925,11 @@ 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; @y -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); @z @x [47.1110] l.21310 -pTeX: free box node, delete kanji_skip @@ -5885,7 +5883,7 @@ end; @ |print_kansuji| procedure converts a number to KANJI number. -@ @<Declare procedures needed in |scan_something|@>= +@ @<Declare procedures needed in |scan_something_internal|@>= procedure print_kansuji(@!n:integer); var @!k:0..23; {index to current digit; we assume that $|n|<10^{23}$} @!cx: KANJI_code; {temporary register for KANJI} @@ -5977,7 +5975,7 @@ primitive("inhibitxspcode",assign_inhibit_xsp_code,inhibit_xsp_code_base); inhibit_glue: print_esc("inhibitglue"); assign_inhibit_xsp_code: print_esc("inhibitxspcode"); -@ @<Declare procedures needed in |scan_something|@>= +@ @<Declare procedures needed in |scan_something_internal|@>= function get_inhibit_pos(c:KANJI_code; n:small_number):pointer; label done, done1; var p,s:pointer; @@ -6044,7 +6042,7 @@ assign_kinsoku: case chr_code of post_break_penalty_code: print_esc("postbreakpenalty"); endcases; -@ @<Declare procedures needed in |scan_something|@>= +@ @<Declare procedures needed in |scan_something_internal|@>= function get_kinsoku_pos(c:KANJI_code; n:small_number):pointer; label done, done1; var p,s:pointer; |