diff options
Diffstat (limited to 'info/digests/tex-implementors/tex.dif')
-rw-r--r-- | info/digests/tex-implementors/tex.dif | 801 |
1 files changed, 801 insertions, 0 deletions
diff --git a/info/digests/tex-implementors/tex.dif b/info/digests/tex-implementors/tex.dif new file mode 100644 index 0000000000..fe3c882a07 --- /dev/null +++ b/info/digests/tex-implementors/tex.dif @@ -0,0 +1,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 |