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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
|
************
File DRB0:[BELL.WEB]TEX.WEB;2
8 % TeX is a trademark of the American Mathematical Society.
9 % METAFONT is a tradement of Addison-Wesley Publishing Company.
11 % Version 0 was released in September 1982 after it passed a variety of tests.
******
File DRB0:[BELL.WEB]TEX.WEB;1
8 % Version 0 was released in September 1982 after it passed a variety of tests.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
19 % Version 2.1 corrects anomalies in discretionary breaks (January 1987).
20 % Version 2.2 corrects "(Please type...)" with null \endlinechar (April 1987).
21 % Version 2.3 avoids incomplete page in premature termination (August 1987).
22 % Version 2.4 fixes \noaligned rules in indented displays (August 1987).
23 % Version 2.5 saves cur_order when expanding tokens (September 1987).
24 % Version 2.6 adds 10sp slop when shipping leaders (November 1987).
25 % Version 2.7 improves rounding of negative-width characters (November 1987).
27 % A reward of $40.96 will be paid to the first finder of any remaining bug.
28 % (This amount will double again in 1988.)
30 % Although considerable effort has been expended to make the TeX program
******
File DRB0:[BELL.WEB]TEX.WEB;1
17 % A reward of $10.24 will be paid to the first finder of any remaining bug.
18 % (This amount will double again in 1986.)
20 % Although considerable effort has been expended to make the TeX program
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
48 \chardef\%=`\%
50 \def\(#1){} % this is used to make section names sort themselves better
******
File DRB0:[BELL.WEB]TEX.WEB;1
39 \def\(#1){} % this is used to make section names sort themselves better
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
166 @d banner=='This is TeX, Version 2.7' {printed when \TeX\ starts}
168 @ Different \PASCAL s have slightly different conventions, and the present
******
File DRB0:[BELL.WEB]TEX.WEB;1
155 @d banner=='This is TeX, Version 2.0' {printed when \TeX\ starts}
157 @ Different \PASCAL s have slightly different conventions, and the present
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
437 if max_in_open>=128 then bad:=6;
439 @ Labels are given symbolic names by the following definitions, so that
******
File DRB0:[BELL.WEB]TEX.WEB;1
427 @ Labels are given symbolic names by the following definitions, so that
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
779 The `\\{name}' parameter, which is of type `{\bf packed array
780 $[\langle\\{any}\rangle]$ of \\{char}}', stands for the name of
781 the external file that is being opened for input or output.
******
File DRB0:[BELL.WEB]TEX.WEB;1
767 The `\\{name}' parameter, which is of type `\ignorespaces|packed
768 array[@t\<\\{any}>@>] of text_char|', stands for the name of
769 the external file that is being opened for input or output.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
873 file into available positions of the buffer array and returns the value
874 |true|, unless the file has already been entirely read, in which case it
******
File DRB0:[BELL.WEB]TEX.WEB;1
861 field into available positions of the buffer array and returns the value
862 |true|, unless the file has already been entirely read, in which case it
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
1734 when |get_token| is being used to delete a token, and/or if some fatal error
1735 occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
1736 @^recursion@>
1737 is never more than two levels deep.
1739 @<Error handling...@>=
******
File DRB0:[BELL.WEB]TEX.WEB;1
1722 when |get_token| is being used to delete a token, or if some fatal error
1723 occurs while \TeX\ is trying to fix a non-fatal one. But such recursion
1724 @^recursion@>
1725 is never more than one level deep.
1727 @<Error handling...@>=
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
2524 done, i.e., if |hi_mem_min=lo_mem_max+1|, we have to quit.
2526 @p function get_avail : pointer; {single-word node allocation}
******
File DRB0:[BELL.WEB]TEX.WEB;1
2512 done, i.e., if |hi_mem_min=low_mem_max+1|, we have to quit.
2514 @p function get_avail : pointer; {single-word node allocation}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
2674 if r=p then if rlink(p)<>p then
2675 @<Allocate entire node |p| and |goto found|@>;
******
File DRB0:[BELL.WEB]TEX.WEB;1
2662 if r=p then if ((rlink(p)<>rover) or (llink(p)<>rover)) then
2663 @<Allocate entire node |p| and |goto found|@>;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
2777 entries: The first of these has |font=font_base|, and its |link| points
2778 to the second;
2779 the second identifies the font and the character dimensions.
2780 The saving feature about oriental characters is that most of them have
2781 the same box dimensions. The |character| field of the first |char_node|
2782 is a ``\\{charext}'' that distinguishes between graphic symbols whose
2783 dimensions are identical for typesetting purposes. (See the \MF\ manual.)
2784 Such an extension of \TeX\ would not be difficult; further details are
2785 left to the reader.
2787 In order to make sure that the |character| code fits in a quarterword,
******
File DRB0:[BELL.WEB]TEX.WEB;1
2765 entries: The first of these would identify the font and the character
2766 dimensions, and it would also link to the second, where the full halfword
2767 |info| field would address the desired character. Such an extension of
2768 \TeX\ would not be difficult; further details are left to the reader.
2769 The saving feature about oriental characters is that most of them have
2770 the same box dimensions.
2772 In order to make sure that the |character| code fits in a quarterword,
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
2837 The |subtype| field is set to |min_quarterword|, since that's the desired
2838 |span_count| value if this |hlist_node| is changed to an |unset_node|.
******
File DRB0:[BELL.WEB]TEX.WEB;1
2822 The |subtype| field is set to |min_quarterword|, since that' the desired
2823 |span_count| value if this |hlist_node| is changed to an |unset_node|.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3213 harmless to let |lig_trick| and |garbage| share the same location of |mem|.
3215 @d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
******
File DRB0:[BELL.WEB]TEX.WEB;1
3198 harmless to let |lig_trick|, |garbage|, and |backup_head| share the same
3199 location of |mem|.
3201 @d zero_glue==mem_bot {specification for \.{0pt plus 0pt minus 0pt}}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3290 {previous |mem_end|, |lo_mem_max|, and |hi_mem_min|}
3291 @t\hskip1em@>@!panicking:boolean; {do we want to check memory constantly?}
******
File DRB0:[BELL.WEB]TEX.WEB;1
3276 {previous |mem_end|, |lo_mem_max|,and |hi_mem_min|}
3277 @t\hskip1em@>@!panicking:boolean; {do we want to check memory constantly?}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3441 begin while p>mem_min do
3442 begin if is_char_node(p) then
******
File DRB0:[BELL.WEB]TEX.WEB;1
3427 begin while p>null do
3428 begin if is_char_node(p) then
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3577 @p procedure show_node_list(@!p:integer); {prints a node list symbolically}
3578 label exit;
******
File DRB0:[BELL.WEB]TEX.WEB;1
3563 @p procedure show_node_list(@!p:pointer); {prints a node list symbolically}
3564 label exit;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3587 while p>mem_min do
3588 begin print_ln; print_current_string; {display the nesting history}
******
File DRB0:[BELL.WEB]TEX.WEB;1
3573 while p>null do
3574 begin print_ln; print_current_string; {display the nesting history}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
3961 @d relax=0 {do nothing ( \.{\\relax} )}
3962 @d left_brace=1 {beginning of a group ( \.\{ )}
******
File DRB0:[BELL.WEB]TEX.WEB;1
3947 @d relax=0 { do nothing ( \.{\\relax} )}
3948 @d left_brace=1 {beginning of a group ( \.\{ )}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
4091 than |max_command| so that their special nature is easily discernible.
4092 The ``expandable'' commands come first.
******
File DRB0:[BELL.WEB]TEX.WEB;1
4077 than |max_command| so that their special nature is easily discernable.
4078 The ``expandable'' commands come first.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
4396 In the first region we have 128 equivalents for ``active characters'' that
4397 act as control sequences, followed by 128 equivalents for single-character
4398 control sequences.
4400 Then comes region~2, which corresponds to the hash table that we will
******
File DRB0:[BELL.WEB]TEX.WEB;1
4382 In the first region we have 128 equivalents for single-character control
4383 sequences, followed by 128 equivalents for ``active characters'' that
4384 act as control sequences.
4386 Then comes region~2, which corresponds to the hash table that we will
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
6404 when a subfile ends. This variable has six possible values:
6406 \yskip\hang|normal|, means that a subfile can safely end here without incident.
******
File DRB0:[BELL.WEB]TEX.WEB;1
6390 when a subfile ends. This variable has five possible values:
6392 \yskip\hang|normal|, means that a subfile can safely end here without incident.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
7326 begin if (end_line_char<0)or(end_line_char>127) then incr(limit);
7327 if limit=start then {previous line was empty}
7328 print_nl("(Please type a command or say `\end')");
******
File DRB0:[BELL.WEB]TEX.WEB;1
7312 begin if limit=start then {previous line was empty}
7313 print_nl("(Please type a command or say `\end')");
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
7457 @!cvl_backup,@!radix_backup,@!co_backup:small_number;
7458 {to save |cur_val_level|, etc.}
7459 @!backup_backup:pointer; {to save |link(backup_head)|}
******
File DRB0:[BELL.WEB]TEX.WEB;1
7442 @!cvl_backup,@!radix_backup:small_number; {to save |cur_val_level| and |radix|}
7443 @!backup_backup:pointer; {to save |link(backup_head)|}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
7462 co_backup:=cur_order; backup_backup:=link(backup_head);
7463 if cur_cmd<call then @<Expand a nonmacro@>
******
File DRB0:[BELL.WEB]TEX.WEB;1
7446 backup_backup:=link(backup_head);
7447 if cur_cmd<call then @<Expand a nonmacro@>
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
7467 cur_order:=co_backup; link(backup_head):=backup_backup;
7468 end;
******
File DRB0:[BELL.WEB]TEX.WEB;1
7451 link(backup_head):=backup_backup;
7452 end;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
7730 top of\/ \TeX's input stack, so that |get_next| will proceed to read it
7731 next.
******
File DRB0:[BELL.WEB]TEX.WEB;1
7714 top of the \TeX's input stack, so that |get_next| will proceed to read it
7715 next.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
9432 if\/ \.{\\or} or \.{\\else} or \.{\\fi} occurs before the current \.{\\if}
9433 condition has been evaluated, \.{\\relax} will be inserted.
******
File DRB0:[BELL.WEB]TEX.WEB;1
9416 if \.{\\or} or \.{\\else} or \.{\\fi} occurs before the current \.{\\if}
9417 condition has been evaluated, \.{\\relax} will be inserted.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10225 is not explicitly repeated in \.{DVI} format.
10227 \yskip\hang|header[0]| is a 32-bit check sum that \TeX\ will copy into
******
File DRB0:[BELL.WEB]TEX.WEB;1
10209 is not explicitly repeated in \.{DVI} format. Extensions of \TeX\ for
10210 oriental languages should be able to identify oriental fonts by means
10211 of this additional header information.
10212 @^oriental characters@>@^Chinese characters@>@^Japanese characters@>
10214 \yskip\hang|header[0]| is a 32-bit check sum that \TeX\ will copy into
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10575 ``at'' size~|s|. If |s|~is negative, it's the negative of a scale factor
10576 to be applied to the design size; |s=-1000| is the normal case.
******
File DRB0:[BELL.WEB]TEX.WEB;1
10562 ``at'' size~|s|. If |s|~is negative, its the negative of a scale factor
10563 to be applied to the design size; |s=-1000| is the normal case.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10608 done: if file_opened then b_close(tfm_file);
10609 read_font_info:=g;
10610 end;
******
File DRB0:[BELL.WEB]TEX.WEB;1
10595 done: b_close(tfm_file); read_font_info:=g;
10596 end;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10787 quantity by the integer~|z|, which is known to be less than $2^{27}$.
10788 If $|z|<2^{23}$, the individual multiplications $b\cdot z$,
10789 $c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide |z| by 2,
******
File DRB0:[BELL.WEB]TEX.WEB;1
10773 quantity by the integer~|z|, which is known to be less than $2^{27}$. Let
10774 $\alpha=16z$. If $|z|<2^{23}$, the individual multiplications $b\cdot z$,
10775 $c\cdot z$, $d\cdot z$ cannot overflow; otherwise we will divide |z| by 2,
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10794 if $a=0$, or the same quantity minus $\alpha=2^{4+e}z^\prime$ if $a=255$.
10795 This calculation must be done exactly, in order to guarantee portability
******
File DRB0:[BELL.WEB]TEX.WEB;1
10780 if $a=0$, or the same quantity minus $\alpha$ if $a=255$.
10781 This calculation must be done exactly, in order to guarantee portability
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10815 begin alpha:=16;
10816 while z>=@'40000000 do
10817 begin z:=z div 2; alpha:=alpha+alpha;
10818 end;
10819 beta:=256 div alpha; alpha:=alpha*z;
10820 end
******
File DRB0:[BELL.WEB]TEX.WEB;1
10801 begin alpha:=16*z; beta:=16;
10802 while z>=@'40000000 do
10803 begin z:=z div 2; beta:=beta div 2;
10804 end;
10805 end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
10891 @.Missing font identifier@>
10892 help2("I was looking for a control sequence whose")@/
******
File DRB0:[BELL.WEB]TEX.WEB;1
10876 @.Undefined font code@>
10877 help2("I was looking for a control sequence whose")@/
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
11513 doing_leaders:=false; dead_cycles:=0; cur_s:=-1;
11515 @ The \.{DVI} bytes are output to a buffer instead of being written directly
******
File DRB0:[BELL.WEB]TEX.WEB;1
11498 doing_leaders:=false; dead_cycles:=0;
11500 @ The \.{DVI} bytes are output to a buffer instead of being written directly
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
11937 @!cur_s:integer; {current depth of output box nesting, initially $-1$}
11939 @ @<Initialize variables as |ship_out| begins@>=
11940 dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
11941 ensure_dvi_open;
11942 if total_pages=0 then
******
File DRB0:[BELL.WEB]TEX.WEB;1
11922 @!cur_s:integer; {current depth of output box nesting}
11924 @ @<Initialize variables as |ship_out| begins@>=
11925 dvi_h:=0; dvi_v:=0; cur_h:=h_offset; dvi_f:=null_font;
11926 cur_s:=-1; ensure_dvi_open;
11927 if total_pages=0 then
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12019 if c>=qi(128) then dvi_out(set1);
12020 dvi_out(qo(c));@/
12021 cur_h:=cur_h+char_width(f)(char_info(f)(c));
******
File DRB0:[BELL.WEB]TEX.WEB;1
12004 if c<qi(128) then dvi_out(qo(c))
12005 else begin dvi_out(set1); dvi_out(qo(c));
12006 end;
12007 cur_h:=cur_h+char_width(f)(char_info(f)(c));
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12103 begin rule_wd:=rule_wd+10; {compensate for floating-point rounding}
12104 edge:=cur_h+rule_wd; lx:=0;
12105 @<Let |cur_h| be the position of the first box, and set |leader_wd+lx|
******
File DRB0:[BELL.WEB]TEX.WEB;1
12089 begin edge:=cur_h+rule_wd; lx:=0;
12090 @<Let |cur_h| be the position of the first box, and set |leader_wd+lx|
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12110 cur_h:=edge-10; goto next_p;
12111 end;
******
File DRB0:[BELL.WEB]TEX.WEB;1
12095 cur_h:=edge; goto next_p;
12096 end;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12124 by half of the excess space not occupied by the leaders; and in the
12125 case of |x_leaders| (expanded leaders) we increase |cur_h|
******
File DRB0:[BELL.WEB]TEX.WEB;1
12109 by half of the excess space not occupied by the leaders; and in the case of
12110 case of |x_leaders| (expanded leaders) we increase |cur_h|
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12262 begin rule_ht:=rule_ht+10; {compensate for floating-point rounding}
12263 edge:=cur_v+rule_ht; lx:=0;
12264 @<Let |cur_v| be the position of the first box, and set |leader_ht+lx|
******
File DRB0:[BELL.WEB]TEX.WEB;1
12247 begin edge:=cur_v+rule_ht; lx:=0;
12248 @<Let |cur_v| be the position of the first box, and set |leader_ht+lx|
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12269 cur_v:=edge-10; goto next_p;
12270 end;
******
File DRB0:[BELL.WEB]TEX.WEB;1
12253 cur_v:=edge; goto next_p;
12254 end;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12362 dvi_out(eop); incr(total_pages); cur_s:=-1;
12363 done:
******
File DRB0:[BELL.WEB]TEX.WEB;1
12346 dvi_out(eop); incr(total_pages);
12347 done:
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12374 @.Huge page...@>
12375 help2("The page just created is more than 18 feet tall or")@/
******
File DRB0:[BELL.WEB]TEX.WEB;1
12358 help2("The page just created is more than 18 feet tall or")@/
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12381 @.The following...deleted@>
12382 show_box(p);
******
File DRB0:[BELL.WEB]TEX.WEB;1
12364 show_box(p);
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12396 while cur_s>-1 do
12397 begin if cur_s>0 then dvi_out(pop)
12398 else begin dvi_out(eop); incr(total_pages);
12399 end;
12400 decr(cur_s);
12401 end;
12402 if total_pages=0 then print_nl("No pages of output.")
******
File DRB0:[BELL.WEB]TEX.WEB;1
12378 if total_pages=0 then print_nl("No pages of output.")
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
12586 because it is a highly negative number.
12588 @<Incorporate box dimensions into the dimensions of the hbox...@>=
******
File DRB0:[BELL.WEB]TEX.WEB;1
12562 becase it is a highly negative number.
12564 @<Incorporate box dimensions into the dimensions of the hbox...@>=
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
13218 the current string would be `\.{.\^.\_/}' if |p| points to the |ord_noad| for
13219 |x| in the (ridiculous) formula
13220 `\.{\$\\sqrt\{a\^\{\\mathinner\{b\_\{c\\over x+y\}\}\}\}\$}'.
13222 @<Cases of |show_node_list| that arise...@>=
******
File DRB0:[BELL.WEB]TEX.WEB;1
13194 the current string would be `\.{.(.[/}' if |p| points to the |ord_noad| for
13195 |x| in the (ridiculous) formula `\.{\$\\sqrt\{a\^\{\{b\_\{c\\over x+y\}
13196 \}\}\}\$}'.
13198 @<Cases of |show_node_list| that arise...@>=
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
13668 their limits above and below. It takes a given box~|b| and
13669 changes it so that the new box is centered in a box of width~|w|.
13670 The centering is done by putting \.{\\hss} glue at the left and right
******
File DRB0:[BELL.WEB]TEX.WEB;1
13644 their limits above and below. It takes a given hlist box |b| and
13645 changes it so that the new box is centered in a box of width |w|.
13646 The centering is done by putting \.{\\hss} glue at the left and right
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
15406 q:=link(head); s:=head;
15407 while q<>null do
******
File DRB0:[BELL.WEB]TEX.WEB;1
15382 q:=link(head);
15383 while q<>null do
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
15413 s:=q; q:=link(q);
15414 end
******
File DRB0:[BELL.WEB]TEX.WEB;1
15389 q:=link(q);
15390 end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
15420 if o<>0 then
15421 begin r:=link(q); link(q):=null; q:=hpack(q,natural);
15422 shift_amount(q):=o; link(q):=r; link(s):=q;
15423 end;
15424 end
******
File DRB0:[BELL.WEB]TEX.WEB;1
15396 end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
15729 @!pass_number:halfword; {the number of passive nodes allocated on this pass}
15731 @ The active list also contains ``delta'' nodes that help the algorithm
******
File DRB0:[BELL.WEB]TEX.WEB;1
15701 @!pass_number:pointer; {the number of passive nodes allocated on this pass}
15703 @ The active list also contains ``delta'' nodes that help the algorithm
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
15924 @!v:pointer; {points to a glue specification or a node ahead of |cur_p|}
15925 @!t:integer; {node count, if |cur_p| is a discretionary node}
15926 @!f:internal_font_number; {used in character width calculation}
******
File DRB0:[BELL.WEB]TEX.WEB;1
15896 @!v:pointer; {points to a glue specification}
15897 @!t:quarterword; {replacement count, if |cur_p| is a discretionary node}
15898 @!f:internal_font_number; {used in character width calculation}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16048 s:=cur_p;
16049 if break_type>unhyphenated then if cur_p<>null then
16050 @<Compute the discretionary |break_width| values@>;
16051 while s<>null do
16052 begin if is_char_node(s) then goto done;
******
File DRB0:[BELL.WEB]TEX.WEB;1
16020 if (break_type=unhyphenated)or(cur_p=null) then
16021 begin s:=cur_p;
16022 while s<>null do
16023 begin if is_char_node(s) then goto done;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16062 done: end
******
File DRB0:[BELL.WEB]TEX.WEB;1
16033 end
16034 else @<Compute the discretionary |break_width| values@>;
16035 done: end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16077 plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$,
16078 minus the length of nodes that will be discarded after the discretionary break.
16080 The value of $l_0$ need not be computed, since |line_break| will put
******
File DRB0:[BELL.WEB]TEX.WEB;1
16050 plus $l_1$, so the length from |cur_p| to |cur_p| should be $\gamma+l_0+l_1-l$.
16052 The value of $l_0$ need not be computed, since |line_break| will put
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16087 begin t:=replace_count(cur_p); v:=cur_p; s:=post_break(cur_p);
16088 while t>0 do
16089 begin decr(t); v:=link(v);
16090 @<Subtract the width of node |v| from |break_width|@>;
16091 end;
16092 while s<>null do
16093 begin @<Add the width of node |s| to |break_width| and increase |t|,
16094 unless it's discardable@>;
16095 s:=link(s);
******
File DRB0:[BELL.WEB]TEX.WEB;1
16059 begin t:=replace_count(cur_p); s:=cur_p;
16060 while t>0 do
16061 begin decr(t); s:=link(s);
16062 @<Subtract the width of node |s| from |break_width|@>;
16063 end;
16064 s:=post_break(cur_p);
16065 while s<>null do
16066 begin @<Add the width of node |s| to |break_width|@>;
16067 s:=link(s);
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16098 if t=0 then s:=link(v); {more nodes may also be discardable after the break}
16099 end
******
File DRB0:[BELL.WEB]TEX.WEB;1
16070 end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16104 @<Subtract the width of node |v|...@>=
16105 if is_char_node(v) then
16106 begin f:=font(v);
16107 break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(v)));
16108 end
16109 else case type(v) of
16110 ligature_node: begin f:=font(lig_char(v));@/
16111 break_width[1]:=@|break_width[1]-
16112 char_width(f)(char_info(f)(character(lig_char(v))));
16113 end;
16114 hlist_node,vlist_node,rule_node,kern_node:
16115 break_width[1]:=break_width[1]-width(v);
16116 othercases confusion("disc1")
******
File DRB0:[BELL.WEB]TEX.WEB;1
16075 @<Subtract the width of node |s|...@>=
16076 if is_char_node(s) then
16077 begin f:=font(s);
16078 break_width[1]:=break_width[1]-char_width(f)(char_info(f)(character(s)));
16079 end
16080 else case type(s) of
16081 ligature_node: begin f:=font(lig_char(s));@/
16082 break_width[1]:=@|break_width[1]-
16083 char_width(f)(char_info(f)(character(lig_char(s))));
16084 end;
16085 hlist_node,vlist_node,rule_node,kern_node:
16086 break_width[1]:=break_width[1]-width(s);
16087 othercases confusion("disc1")
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16130 hlist_node,vlist_node,rule_node:break_width[1]:=break_width[1]+width(s);
16131 kern_node: if (t=0)and(subtype(s)<>acc_kern) then t:=-1 {discardable}
16132 else break_width[1]:=break_width[1]+width(s);
16133 othercases confusion("disc2")
16134 @:this can't happen disc2}{\quad disc2@>
16135 endcases;
16136 incr(t)
16138 @ We use the fact that |type(active)<>delta_node|.
******
File DRB0:[BELL.WEB]TEX.WEB;1
16101 hlist_node,vlist_node,rule_node,kern_node:
16102 break_width[1]:=break_width[1]+width(s);
16103 othercases confusion("disc2")
16104 @:this can't happen disc2}{\quad disc2@>
16105 endcases
16107 @ We use the fact that |type(active)<>delta_node|.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16154 else begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;@/
16155 subtype(q):=0; {the |subtype| is not used}
******
File DRB0:[BELL.WEB]TEX.WEB;1
16123 else begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;
16124 subtype(q):=0; {the |subtype| is not used}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16168 begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;@/
16169 subtype(q):=0; {the |subtype| is not used}
******
File DRB0:[BELL.WEB]TEX.WEB;1
16137 begin q:=get_node(delta_node_size); link(q):=r; type(q):=delta_node;
16138 subtype(q):=0; {the |subtype| is not used}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
16846 |disc_break:=true|@>
16847 else if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
16848 end
******
File DRB0:[BELL.WEB]TEX.WEB;1
16815 |disc_break:=true|@>;
16816 if not is_char_node(q) then
16817 if (type(q)=math_node)or(type(q)=kern_node) then width(q):=0;
16818 end
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
17175 $\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$ and $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$.
17176 Thus the insertion of a hyphen might cause effects to ripple arbitrarily
******
File DRB0:[BELL.WEB]TEX.WEB;1
17145 $\.a\,\.{b\!c}\,\.{d\!e}\,\.f$ and $\.a\,\.b\,\.-\,\.{c\!d}\,\.{e\!f}$.
17146 Thus the insertion of a hyphen might cause effects to ripple arbitrarily
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
17378 using an algorithm due to Frank~M. Liang.
17379 @^Liang, Franklin Mark@>
******
File DRB0:[BELL.WEB]TEX.WEB;1
17348 using an algorithm due to Frank M. Liang.
17349 @^Liang, Franklin Mark@>
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
17901 |trie_max>z|, since |h=z-c|. It follows that location |trie_max| will
17902 never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
******
File DRB0:[BELL.WEB]TEX.WEB;1
17871 |trie_max>z|, since |h=z+c|. It follows that location |trie_max| will
17872 never be occupied in |trie|, and we will have |trie_max>=trie_link(z)|.
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
18667 @!b,@!c:integer; {badness and cost of current page}
18668 @!pi:integer; {penalty to be added to the badness}
******
File DRB0:[BELL.WEB]TEX.WEB;1
18637 @!b,c:integer; {badness and cost of current page}
18638 @!pi:integer; {penalty to be added to the badness}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
18959 @!prev_p:pointer; {predecessor of |p|}
18960 @!n:min_quarterword..255; {insertion box number}
******
File DRB0:[BELL.WEB]TEX.WEB;1
18929 @!prev_p:pointer; {precedessor of |p|}
18930 @!n:min_quarterword..255; {insertion box number}
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
19465 width(p):=font_info[k].sc; {that's |space(f)|}
19466 stretch(p):=font_info[k+1].sc; {and |space_stretch(f)|}
19467 shrink(p):=font_info[k+2].sc; {and |space_shrink(f)|}
19468 font_glue[f]:=p;
******
File DRB0:[BELL.WEB]TEX.WEB;1
19435 width(p):=font_info[k].sc;
19436 stretch(p):=font_info[k+1].sc;
19437 shrink(p):=font_info[k+2].sc;
19438 font_glue[f]:=p;
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
22014 count_def_code: define(p,assign_int,count_base+cur_val);
******
File DRB0:[BELL.WEB]TEX.WEB;1
21984 char_def_code: define(p,char_given,cur_val);
21985 math_char_def_code: define(p,math_given,cur_val);
21986 count_def_code: define(p,assign_int,count_base+cur_val);
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
22659 ("Pretend that you're Hercule Poirot: Examine all clues,")@/
22660 @^Poirot, Hercule@>
******
File DRB0:[BELL.WEB]TEX.WEB;1
22631 ("Pretend that you're Hercule Poirot, examine all clues,")@/
22632 @^Poirot, Hercule@>
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
23377 This program doesn't bother to close the input files that may still be open.
23379 @<Last-minute...@>=
******
File DRB0:[BELL.WEB]TEX.WEB;1
23349 @<Last-minute...@>=
************
************
File DRB0:[BELL.WEB]TEX.WEB;2
23633 @d write_stream(#) == info(#+1) {stream number (0 to 17)}
23634 @d open_name(#) == link(#+1) {string number of file name to open}
******
File DRB0:[BELL.WEB]TEX.WEB;1
23603 @d write_stream(#) == info(#+1) {stream number (0 to 16)}
23604 @d open_name(#) == link(#+1) {string number of file name to open}
************
Number of difference sections found: 74
Number of difference records found: 162
DIFFERENCES /IGNORE=(SPACING,TRAILING_SPACES,BLANK_LINES)/WIDTH=132/MERGED=1/OUTPUT=DRB0:[BELL.WEB]TEX.DIF;1-
DRB0:[BELL.WEB]TEX.WEB;2-
DRB0:[BELL.WEB]TEX.WEB;1
|