summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2011-03-28 07:58:06 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2011-03-28 07:58:06 +0000
commitdd0ed622db05246c65cfec9450bf7c20ce1995b0 (patch)
tree4e4bf806822fdab741bdafde4ccae985a64a1af6 /Build/source/texk/web2c
parent568ba93dc2f7b54626e711e1da207b6d5c2e1081 (diff)
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
Diffstat (limited to 'Build/source/texk/web2c')
-rw-r--r--Build/source/texk/web2c/eptexdir/ChangeLog.TL6
-rw-r--r--Build/source/texk/web2c/eptexdir/eptex.ech72
-rw-r--r--Build/source/texk/web2c/eptexdir/etex.ch049
-rw-r--r--Build/source/texk/web2c/eptexdir/etex.ch124
-rw-r--r--Build/source/texk/web2c/etexdir/ChangeLog6
-rw-r--r--Build/source/texk/web2c/etexdir/etex.ch78
-rw-r--r--Build/source/texk/web2c/ptexdir/ChangeLog8
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch86
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;