summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/eptexdir/etex.ch0
blob: 124e04796f6b9ea19dfe862f090f27b6d08f0575 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
% eptexdir/etex.ch0: changefile used to build e-pTeX, see eptexdir/eptex-base.ch for details.
% Public domain. Originally written by Peter Breitenlohner <tex-live@tug.org>.

@x [17.236] l.4960 - first web2c, then e-TeX additional integer parameters
@d int_pars=web2c_int_pars {total number of integer parameters}
@#
@d etex_int_base=tex_int_pars {base for \eTeX's integer parameters}
@y
@d int_pars=web2c_int_pars {total number of integer parameters}
@d count_base=int_base+int_pars {256 user \.{\\count} registers}
@z

@x [26.413]
  {fetch an internal parameter}
label exit;
var m:halfword; {|chr_code| part of the operand token}
@!tx:pointer; {effective tail node}
@y
  {fetch an internal parameter}
var m:halfword; {|chr_code| part of the operand token}
@z

@x [26.413]
exit:end;
@y
end;
@z

@x [26.420]
if q=null then cur_val:=0 @+else cur_val:=mem[q+m].sc;
@y
if box(cur_val)=null then cur_val:=0 @+else cur_val:=mem[box(cur_val)+m].sc;
@z

@x [26.424]
@d set_effective_tail==set_effective_tail_eTeX

@y
@z

@x [26.424]
    begin set_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;
@y
    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
@y
    end {there are no other cases}
@z

@x [27.468]
@d etex_convert_base=5 {base for \eTeX's command codes}
@d eTeX_revision_code=etex_convert_base {command code for \.{\\eTeXrevision}}
@d etex_convert_codes=etex_convert_base+1 {end of \eTeX's command codes}
@d job_name_code=etex_convert_codes {command code for \.{\\jobname}}
@y
@d job_name_code=5 {command code for \.{\\jobname}}
@z

@x [30.581]
var old_setting: integer; {saved value of |tracing_online|}
@y
@z

@x [32.619]
save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v;
prev_p:=this_box+list_offset;
@<Initialize |hlist_out| for mixed direction typesetting@>;
left_edge:=cur_h;
@y
save_loc:=dvi_offset+dvi_ptr; base_line:=cur_v; left_edge:=cur_h;
@z

@x [32.620]
  prev_p:=link(prev_p); {N.B.: not |prev_p:=p|, |p| might be |lig_trick|}
@y
@z

@x [32.624] l.13005 - pTeX: output a box(and dir_node) with disp
  cur_h:=edge; cur_v:=base_line;
@y
  cur_h:=edge+width(p); cur_v:=base_line;
@z

@x [33.649]
exit: if TeXXeT_en then @<Check for LR anomalies at the end of |hpack|@>;
hpack:=r;
@y
exit: hpack:=r;
@z

@x [44.977]
q:=prune_page_top(q,saving_vdiscards>0);
p:=list_ptr(v); free_node(v,box_node_size);
if q<>null then q:=vpack(q,natural);
change_box(q); {the |eq_level| of the box stays the same}
@y
q:=prune_page_top(q); p:=list_ptr(v); free_node(v,box_node_size);
if q=null then box(n):=null {the |eq_level| of the box stays the same}
else box(n):=vpack(q,natural);
@z

@x [47.1080]
    begin if (type(tail)=math_node)and(subtype(tail)=end_M_code) then
      remove_end_M;
@y
@z
@x [47.1080]
    if LR_temp<>null then insert_end_M;
    end;
@y
@z

@x [47.1096]
  else line_break(false);
@y
  else line_break(widow_penalty);
@z

@x [47.1105]
else  begin if not is_char_node(tail) then
  begin if (type(tail)=math_node)and(subtype(tail)=end_M_code) then
    remove_end_M;
  if type(tail)=cur_chr then
@y
else  begin if not is_char_node(tail) then if type(tail)=cur_chr then
@z
@x [47.1105]
  if LR_temp<>null then insert_end_M;
  end;
@y
@z

@x [47.1110]
else  begin link(tail):=list_ptr(p); change_box(null);
@y
else  begin link(tail):=list_ptr(p); box(cur_val):=null;
@z

@x [48.1145]
else  begin line_break(true);@/
@y
else  begin line_break(display_widow_penalty);@/
@z

@x [49.1247]
if b<>null then mem[b+c].sc:=cur_val;
@y
if box(b)<>null then mem[box(b)+c].sc:=cur_val;
@z