From dd0ed622db05246c65cfec9450bf7c20ce1995b0 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Mon, 28 Mar 2011 07:58:06 +0000 Subject: e-TeX, pTeX, and e-pTeX: reformulate and fix bugs from r21810, r21817, and r21837 git-svn-id: svn://tug.org/texlive/trunk@21859 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/eptexdir/eptex.ech | 72 ++++++++++++++++++------------ 1 file changed, 43 insertions(+), 29 deletions(-) (limited to 'Build/source/texk/web2c/eptexdir/eptex.ech') 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_valdisp_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_valdisp_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 -- cgit v1.2.3