diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-03-30 16:16:28 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-03-30 16:16:28 +0000 |
commit | b2025034e6288855de53c9fe2aecbd555ba065f6 (patch) | |
tree | 9c78f2eb5d3567220d2ddfd3a2bb2dd17a804449 /Build/source/texk/web2c/eptexdir/eptex.ech | |
parent | e21b96f32d8c9ed4ca242796e353cfb6ff5fe43c (diff) |
e-TeX, pTeX, e-pTeX: Handle disp_node from discretionary
git-svn-id: svn://tug.org/texlive/trunk@21892 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/eptexdir/eptex.ech')
-rw-r--r-- | Build/source/texk/web2c/eptexdir/eptex.ech | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/Build/source/texk/web2c/eptexdir/eptex.ech b/Build/source/texk/web2c/eptexdir/eptex.ech index 3e381fae846..53738c2e0a5 100644 --- a/Build/source/texk/web2c/eptexdir/eptex.ech +++ b/Build/source/texk/web2c/eptexdir/eptex.ech @@ -59,23 +59,31 @@ begin scan_eight_bit_int; q:=box(cur_val); begin scan_register_num; fetch_box(q); @z +@x [26.424] l.8508 - e-pTeX: TeXXeT and disp_node +node of the current list. +@y +node of the current list. +The macro |find_effective_tail_epTeX| sets |tx| to the last non-\.{\\endM} +non-|disp_node| of the current list. +@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|} +@d find_effective_tail_epTeX== tx:=tail; +if not is_char_node(tx) then if type(tx)=disp_node then tx:=prev_node; 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; + if (type(tx)=disp_node)or + ((type(tx)=math_node)and(subtype(tx)=end_M_code)) then + begin tx:=head; q:=link(head); + while q<>prev_node do + begin if is_char_node(q) then tx:=q + else if (type(q)<>disp_node)and + ((type(tx)<>math_node)or(subtype(tx)<>end_M_code)) then tx:=q; end; - if not is_char_node(tx) then - if type(tx)=disp_node then tx:=prev_node; - end + q:=link(q); + end @# @d find_effective_tail==find_effective_tail_epTeX @z @@ -102,15 +110,20 @@ if not is_char_node(tx) then @x @d box_lr(#) == (qo(subtype(#))) {direction mode of a box} @d set_box_lr(#) == subtype(#):=set_box_lr_end +@d set_box_lr_end(#) == qi(#) @y @d box_lr(#) == ((qo(subtype(#)))div 8) {direction mode of a box} -@d set_box_lr(#) == subtype(#):=box_dir(#)+8*set_box_lr_end +@d set_box_lr(#) == subtype(#):=box_dir(#)+set_box_lr_end +@d set_box_lr_end(#) == qi(8*(#)) @z @x [45.996] l.19420 last_node_type:=type(p)+1; @y -last_node_type:=type(p)+1; +if type(p)<dir_node then last_node_type:=type(p)+1 +else if type(p)=dir_node then last_node_type:=type(list_ptr(p))+1 +else if type(p)<disp_node then last_node_type:=type(p) +else last_node_type:=type(p)-1; {no |disp_node| in a vertical list} @z @x [47.1079] l.20920 @@ -124,6 +137,7 @@ last_node_type:=type(p)+1; @z @x [47.1080] l.20940 +@d check_effective_tail==check_effective_tail_pTeX @d fetch_effective_tail==fetch_effective_tail_pTeX @y @d fetch_effective_tail_epTeX(#)== {extract |tx|, @@ -200,6 +214,7 @@ if fm>0 then {drop \.{\\beginM} \.{\\endM} pair} flush_node_list(t); end @# +@d check_effective_tail(#)==find_effective_tail_epTeX @d fetch_effective_tail==fetch_effective_tail_epTeX @z |