TeX 3.0 (message 3 of 5) This is the first of three patch sets to bring TeX 2.993 files up to TeX version 3.0. It assumes you have applied the patches in message 2 (or already had those changes in your files). Give patch the "-p" flag to indicate how many components of pathnames should be ignored. Generally, "patch -p0" should be used. diff -rc1 ../old/cm/romanl.mf ./cm/romanl.mf *** ../old/cm/romanl.mf Fri Aug 11 12:01:41 1989 --- ./cm/romanl.mf Sun Mar 25 12:59:21 1990 *************** *** 300,302 **** pos3(dot_diam,0); pos4(dot_diam,90); ! if serifs: x3r=max(x1r,x1+.5(dot_diam-tiny)-.2jut) else: x3=x1-.5 fi; top y4r=h+1; --- 300,303 ---- pos3(dot_diam,0); pos4(dot_diam,90); ! if serifs: x3r=max(x1r,hround(x1+.5dot_diam-.2jut)-.5tiny) ! else: x3=x1-.5 fi; top y4r=h+1; diff -rc1 ../old/cm/symbol.mf ./cm/symbol.mf *** ../old/cm/symbol.mf Sat Aug 12 20:27:43 1989 --- ./cm/symbol.mf Sun Mar 25 12:59:29 1990 *************** *** 1,3 **** % This file defines the symbols of a \TeX\ math symbol font. ! % Character codes \0000--\00100 and \0133--\0177 are generated. --- 1,3 ---- % This file defines the symbols of a \TeX\ math symbol font. ! % Character codes \0000--\0100 and \0133--\0177 are generated. diff -rc1 ../old/errata/cm85.bug ./errata/cm85.bug *** ../old/errata/cm85.bug Fri Aug 11 22:11:28 1989 --- ./errata/cm85.bug Sun Mar 25 12:59:38 1990 *************** *** 1106,1107 **** --- 1106,1116 ---- + @x in ROMANL, the letter i (this change by Jonathan Kew makes the dot rounder) + if serifs: x3r=max(x1r,x1+.5(dot_diam-tiny)-.2jut) else: x3=x1-.5 fi; + @y + if serifs: x3r=max(x1r,hround(x1+.5dot_diam-.2jut)-.5tiny) + else: x3=x1-.5 fi; + @z + + -----------Here I draw the line with respect to further changes + (I sincerely hope there won't be any more!) diff -rc1 ../old/errata/errata.tex ./errata/errata.tex *** ../old/errata/errata.tex Sun Jan 7 16:09:20 1990 --- ./errata/errata.tex Sun Mar 25 12:59:43 1990 *************** *** 40,42 **** version of {\sl The \slMF\kern1ptbook\/} are the same as corrections ! to Volume~C\null. Some of the corrections below may have already been made in reprintings of the books. Hundreds of changes, too many to list here, --- 40,42 ---- version of {\sl The \slMF\kern1ptbook\/} are the same as corrections ! to Volume~C\null. Some of the corrections below have already been made in reprintings of the books. Hundreds of changes, too many to list here, *************** *** 49,50 **** --- 49,56 ---- + \bugonpage A99, line 4 from the bottom (2/22/90) + + \ninepoint\indent + to be chosen because there was no feasible + way to keep total demerits small. + \bugonpage A156, line 2 (11/18/89) *************** *** 55,56 **** --- 61,70 ---- + \bugonpage A171, lines 24--26 (3/13/90) + + \ninepoint\noindent + formula produces a result exactly equivalent to + `|\left(|\|\right)|', when the \ doesn't end + with Punct, except that the {delimiters} are forced to + be of the |\big| size regardless of the height and depth of the subformula. + \bugonpage A193, lines 16--18 (12/2/89) *************** *** 92,93 **** --- 106,133 ---- + \bugonpage A286, lines 30--32 (3/13/90) + + \ninepoint\noindent + reading and expanding this \cstok{par} + token, \TeX\ will see the \ token again. \ (The current + meaning of the control sequence ^|\par| will be used; \cstok{par} might no + longer stand for \TeX's |\par| primitive.) + + \bugonpage A290, lines 12--13 (3/24/90) + + \ninepoint\noindent + simply a single Ord atom without subscripts or superscripts, + or an Acc whose nucleus is an Ord, the + enclosing braces are effectively removed. + + \bugonpage A340, nonblank line 11 (3/13/90) + + \tenpoint\noindent + |\topglue 1in % This makes an inch of blank space (1in=2.54cm).| + + \bugonpage A342, line 6 ( 3/13/90) + + \tenpoint\noindent + |\topglue| but not |\hglue|. It does not + illustrate |\raggedright| setting of para-\cutpar + \bugonpage A346, lines 20--21 (12/3/89) *************** *** 132,133 **** --- 172,178 ---- + \bugonpage A352, new line before line 6 from the bottom (3/13/90) + + \ninepoint\noindent + |\def\topglue{\nointerlineskip \vglue-\topskip \vglue} % for top of page| + \bugonpage A355, line 8 from the bottom (12/3/89) *************** *** 158,159 **** --- 203,210 ---- + \bugonpage A444, line 4 (3/13/90) + + \ninepoint\noindent + Shift box~$x$ down by ${1\over2}\bigl(h(x)-d(x)\bigr) + -a$, where $a=\sigma_{22}$, so that the operator character\cutpar + \bugonpage A450, line 8 (12/3/89) *************** *** 226,227 **** --- 277,287 ---- + \bugonpage A479, new entry (3/13/90) + + \eightpoint + |\topglue|, {\it340}, $\underline{352}$. + + \bugonpage A480, right column (3/13/90) + + \eightpoint + |\vglue|, $\underline{352}$, {\it408}. *************** *** 249,250 **** --- 309,334 ---- + \bugonpage C220, top line (3/13/90) + + \ninepoint\noindent + modes you get into by hitting + `|S|', `|R|', or `|Q|', respectively, in response to error messages\cutpar + + \bugonpage C252, line 16 (3/13/90) + + \ninepoint\indent + | for i:=1 upto n_windows: display blankpicture inwindow i; endfor| + + \bugonpage C264, lines 4--6 from the bottom (3/24/90) + + \ninepoint\noindent + |vardef |^|counterclockwise|| primary c =|\par\noindent + | if turningcheck>0:|\par\noindent + | interim |^|autorounding||:=0;|\par\noindent + | if |^|turningnumber|| c <= 0: reverse fi fi c enddef;| + + \bugonpage C306, line 6 (3/13/90) + + \ninepoint\noindent + | ligtable "'": "'" =: oct"042", % close quotes| + \bugonpage C309, second line from bottom (11/18/89) *************** *** 272,273 **** --- 356,408 ---- \def\dashto{\mathrel{\hbox{-\kern-.05em}\mkern3.9mu\hbox{-\kern-.05em}}} + + \bugonpage E325, line 13 (3/13/90) + + \ninepoint\noindent + {\bf if} \\{serifs}: $x_{3r}=\max(x_{1r},{\rm hround}(x_1+.5\\{dot\_diam} + -.2\\{jut})-.5\\{tiny})$\par\noindent + {\bf else}: $x_3=x_1-.5$ {\bf fi}; + + \bugonpage E483, line 4 (3/13/90) + + \ninepoint + \rightline{\% Character codes \oct{000}--\oct{100} and \oct{133}--\oct{177} + are generated.} + + \bugonpage E544, line 5 (3/13/90) + + \ninepoint\noindent + \hskip 3em\vdots\hskip2em\raise2pt\hbox{(the rest of the + program for `$\gamma$' in |greekl| comes here)} + + \bugonpage E557, line 9 (3/13/90) + + \ninepoint + \rightline{\sl`Nevermore---Ah nevermore.'\thinspace''} + + \bugonpage E558, line 21 (3/13/90) + + \eightpoint\noindent + |Clasp a rare and radiant maiden whom the angels name Lenore."| + + \bugonpage E570, lines 27--28 look better with proper skewchars (3/13/90) + + \begingroup + \tenpoint\bf + \textfont0=\tenbf \scriptfont0=\sevenbf + \font\boldi=cmmib10 \font\boldsy=cmbsy10 + \skewchar\boldi='177 \skewchar\boldsy='60 + \textfont1=\boldi + \textfont2=\boldsy + \noindent Here's some bold 10-point math: + ${\hat A}^\Gamma_0 + +{\check B}^\Delta_1 + -{\tilde C}^\Theta_2 + \times{\acute D}^\Lambda_3 + /{\grave E}^\Xi_4 + \oplus{\dot F}^\Pi_5 + \ominus{\ddot G}^\Sigma_6 + \otimes{\breve H}^\Phi_7 + \oslash{\bar I}^\Psi_8 + \odot{\vec J}^{\,\Omega}_9$. + \endgroup diff -rc1 ../old/errata/errorlog.tex ./errata/errorlog.tex *** ../old/errata/errorlog.tex Sun Jan 7 22:23:03 1990 --- ./errata/errorlog.tex Sun Mar 25 13:00:08 1990 *************** *** 1430,1432 **** G552. Give more power to |\let|: the right-hand side needn't be a control ! sequence. @1221 I553. Amend \\{show_context} to say --- 1430,1432 ---- G552. Give more power to |\let|: the right-hand side needn't be a control ! sequence. @1221 I553. Amend \\{show_context} to say *************** *** 2252,2254 **** A854. Replace my stupid algorithm ! for fixed-point multiplication of negatives (W. G. Sullivan). @572 * 12 Dec 1987 --- 2252,2254 ---- A854. Replace my stupid algorithm ! for fixed-point multiplication of negatives (WGS). @572 * 12 Dec 1987 *************** *** 2295,2297 **** * 17 Feb 1989 ! D870. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding inaccessible |\aftergroup| tokens (FM and RS). @280 --- 2295,2297 ---- * 17 Feb 1989 ! D870\>758. Avoid spurious error message for |\aftergroup\relax\dump| by avoiding inaccessible |\aftergroup| tokens (FM and RS). @280 *************** *** 2308,2310 **** mechanism has been fully initialized, for example when the ! command line exceeds the buffer size (W. G. Sullivan). @31 * 16 Aug 1989 --- 2308,2310 ---- mechanism has been fully initialized, for example when the ! command line exceeds the buffer size (WGS). @31 * 16 Aug 1989 *************** *** 2312,2314 **** * 31 Aug 1989 ! C441\>876. Increase the number of tokens shown by \\{token\_show} (J. Lavagnino). @295 --- 2312,2314 ---- * 31 Aug 1989 ! C876\>441. Increase the number of tokens shown by \\{token\_show} (J. Lavagnino). @295 *************** *** 2316,2318 **** # The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties ! party! I agreed that some extensions for non-English languages ought to be made while I still knew how to do them. (In other words, --- 2316,2318 ---- # The recent TUG meeting turned out to be an extend-\TeX-for-the-nineties ! party! I agreed that some extensions for non-English languages ought to be made while I still knew how to do them. (In other words, *************** *** 2319,2321 **** I broke my firm commitment to keeping \TeX\ completely stable; ! but in this case nobody objected.) The following nine changes were coded during the month of September. --- 2319,2321 ---- I broke my firm commitment to keeping \TeX\ completely stable; ! but in this case nobody objected.) The following eleven changes were coded during the month of September. *************** *** 2324,2326 **** G879. Install major change allowing multiple hyphenation tables ! (M. Ferguson). @923 G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923 --- 2324,2326 ---- G879. Install major change allowing multiple hyphenation tables ! (M. Ferguson). @923 G880. Introduce new parameters |\lefthyphenmin| and |\righthyphenmin|. @923 *************** *** 2327,2329 **** G881. Introduce major new ligature capabilities including implicit ! boundary characters. @908,1037 G882. Install new |\inputlineno| feature suggested by MDS. @424 --- 2327,2329 ---- G881. Introduce major new ligature capabilities including implicit ! boundary characters. @908,1037 G882. Install new |\inputlineno| feature suggested by MDS. @424 *************** *** 2333,2336 **** G886. Install new |\errorcontextlines| feature suggested by FM. @311 ! S887. Recover from anomaly when |char_warning| in hyphenation clobbers ! |old_setting|. @863 P888. Make it easier to change the format extension (Don Hosek). @520,1328 --- 2333,2336 ---- G886. Install new |\errorcontextlines| feature suggested by FM. @311 ! S887. Recover from anomaly when hyphenation |char_warning| clobbers ! |old_setting|. @863 P888. Make it easier to change the format extension (Don Hosek). @520,1328 *************** *** 2339,2344 **** * 22 Nov 1989 ! S890\>856. Prevent \\{save\_stack} conflicts in cases like ! |{\hbox\expandafter{\csname\endcsname}}| (W. G. Sullivan). @645,1117 S891\>858. System-dependent parts of file names must be addressed relatively, ! not absolutely (FM and RS). @516,517 * 3 Dec 1989 --- 2339,2345 ---- * 22 Nov 1989 ! S890\>856. Prevent \\{save\_stack} conflicts in ! |{\hbox\expandafter{\csname\endcsname}}| and\kern-3pt\break ! similar constructions (WGS). @645,1117 S891\>858. System-dependent parts of file names must be addressed relatively, ! not absolutely (FM and RS). @516,517 * 3 Dec 1989 *************** *** 2345,2353 **** G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376 ! S893. Distinguish |\par| from characters on |\if| tests. (M. van Leeuwen). @334 S894\>378. Alignments need to be more robust against malicious ! attacks (M. van Leeuwen). @782 ! C895. Don't let kerns in discretionaries disappear at breaks (M. van Leeuwen). ! @869 Q896\>881. Make the new hyphenation reconstruction procedure less cautious, ! so that it doesn't lose hyphens found by the old method. @914 * 11 Dec 1989 --- 2346,2353 ---- G892\>880. Allow different hyphenmins in the same paragraph (M. Ferguson). @1376 ! S893. Distinguish |\par| from characters on |\if| tests. (MVL). @334 S894\>378. Alignments need to be more robust against malicious ! attacks (MVL). @782 ! C895. Don't let kerns in discretionaries disappear at breaks (MVL). @869 Q896\>881. Make the new hyphenation reconstruction procedure less cautious, ! so that it doesn't lose hyphens found by the old method. @914 * 11 Dec 1989 *************** *** 2355,2359 **** * 18 Dec 1989 ! G898. Allow access to page totals in \output routines (FM and Chris Rowley). ! @421 ! # We're now up to Version 3.0; I sincerely hope all bugs have been found. --- 2355,2378 ---- * 18 Dec 1989 ! G898. Allow access to page totals in |\output| routines (FM and Chris Rowley). ! @421 ! * 22 Jan 1990 ! R899\>611. Recognize more cases of unbalanced |\output| (CET). @1026 ! * 29 Jan 1990 ! S900\>758. Make |\aftergroup| work properly after |\eqno| (Michael Downes). ! @1194 ! * 1 Feb 1990 ! S901\>878. Fix one more case of \\{end\_line\_char\_inactive} (WGS). @360 ! * 22 Feb 1990 ! R902. Don't lose the last active node when total demerits are very high (FM). ! @836,854 ! * 13 Mar 1990 ! D903. Doublecheck math fonts after making equation number (MVL). @1194 ! D904. Don't forget to rule out charnodes before testing \\{type} (MVL). ! @805,1202 ! * 23 Mar 1990 ! F905\>881. Don't change the font of punctuation preceding a hyphenated word ! (Scott C. Allendorf). @903 ! I906. Balance the parentheses shown on the terminal during normal runs. @1335 ! E907. Optimize |\ifx\p\q| after |\let\p=\q| (MVL). @508 ! S907. Treat migration properly in displays (MVL). @1199,1205 # We're now up to Version 3.0; I sincerely hope all bugs have been found. *************** *** 2371,2371 **** --- 2390,2392 ---- PB Peter Breitenlohner (ditto) + WGS Wayne G. Sullivan (ditto) + MVL Marc van Leeuwen diff -rc1 ../old/errata/mf84.bug ./errata/mf84.bug *** ../old/errata/mf84.bug Mon Jan 22 10:10:06 1990 --- ./errata/mf84.bug Sun Mar 25 14:01:42 1990 *************** *** 1791,1799 **** ! 553. (Change made by Joe Weening as per message from DEK.) ! @x module 1119 ! @!excess:halfword; {the list is this much too long} @y ! @!excess:integer; {the list is this much too long} @z ! 554. (I sincerely hope that there won't be any more) --- 1791,1856 ---- ! 553. Global variable used prematurely in do_add_to (Alan Jeffrey, 9 Feb 90) ! @x module 403 ! @!cur_path_type:double_path_code..also_code; {likewise} @y ! @!cur_path_type:double_path_code..contour_code; {likewise} @z + @x module 1059 + begin get_x_next; var_flag:=thing_to_add; scan_primary; + if cur_type<>token_list then + @ + else begin lhs:=cur_exp; cur_path_type:=cur_mod;@/ + cur_type:=vacuous; get_x_next; scan_expression; + if cur_path_type=also_code then @ + @y + @!add_to_type:double_path_code..also_code; {modifier of \&{addto}} + begin get_x_next; var_flag:=thing_to_add; scan_primary; + if cur_type<>token_list then + @ + else begin lhs:=cur_exp; add_to_type:=cur_mod;@/ + cur_type:=vacuous; get_x_next; scan_expression; + if add_to_type=also_code then @ + @z + @x module 1064 + else begin lhs:=null; + @y + else begin lhs:=null; cur_path_type:=add_to_type; + @z + + 554. Balance the parens showing on the terminal (for Lispers). + @x module 631 + @!in_open : 0..max_in_open; {the number of lines in the buffer, less one} + @y + @!in_open : 0..max_in_open; {the number of lines in the buffer, less one} + @!open_parens : 0..max_in_open; {the number of open text files} + @z + @x module 657 + in_open:=0; max_buf_stack:=0; + @y + in_open:=0; open_parens:=0; max_buf_stack:=0; + @z + @x module 681 + begin print_char(")"); force_eof:=false; + update_terminal; {show user that file has been read} + @y + begin print_char(")"); decr(open_parens); + update_terminal; {show user that file has been read} + force_eof:=false; + @z + @x module 793 + print_char("("); print(name); update_terminal; + @y + print_char("("); incr(open_parens); print(name); update_terminal; + @z + @x module 1209 + if job_name=0 then open_log_file; + @y + if job_name=0 then open_log_file; + while open_parens>0 do + begin print(" )"); decr(open_parens); + end; + @z + + -----------Here I draw the line with respect to further changes ! 555. (I sincerely hope that there won't be any more) diff -rc1 ../old/errata/tex82.bug ./errata/tex82.bug *** ../old/errata/tex82.bug Mon Jan 8 06:27:02 1990 --- ./errata/tex82.bug Sun Mar 25 13:00:46 1990 *************** *** 7831,7833 **** ! 380. (I sincerely hope that there won't be any more) --- 7831,8118 ---- ! 380. Slightly more robust recovery and detection of \output anomalies. ! (Suggested by Chris Thompson, provoked by George Russell, January 1990) ! @x module 1026 ! begin if loc<>null then @; ! @y ! begin if (loc<>null) or ! ((token_type<>output_text)and(token_type<>backed_up)) then ! @; ! @z ! @x module 1027 ! help2("Your sneaky output routine has fewer real {'s than }'s.")@/ ! @y ! help2("Your sneaky output routine has problematic {'s and/or }'s.")@/ ! @z ! ! 381. \eqno\aftergroup*$$ should yield * after the $$ (Michael Downes, 29 Jan 90) ! @x module 1194 ! begin cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false; ! @y ! begin @; ! cur_mlist:=p; cur_style:=text_style; mlist_penalties:=false; ! @z ! @x ibid ! else begin @; ! @y ! else begin if a=null then @; ! @z ! ! 382. Missed a case in the 8-bit change (Wayne Sullivan, 1 Feb 1990) ! @x module 360 ! begin if (end_line_char<0)or(end_line_char>127) then incr(limit); ! @y ! begin if end_line_char_inactive then incr(limit); ! @z ! ! 383. Linebreaking needs to be more robust when total demerits get ! very high (Frank Mittelbach, 22 Feb 1990) ! @x module 830 ! @!artificial_badness:boolean; {has |b| been forced to zero?} ! @y ! @!artificial_demerits:boolean; {has |d| been forced to zero?} ! @z ! @x module 833 (this change is cosmetic only) ! @!minimal_demerits:array[very_loose_fit..tight_fit] of scaled; {best total ! demerits known for current line class and position, given the fitness} ! @!minimum_demerits:scaled; {best total demerits known for current line class ! @y ! @!minimal_demerits:array[very_loose_fit..tight_fit] of integer; {best total ! demerits known for current line class and position, given the fitness} ! @!minimum_demerits:integer; {best total demerits known for current line class ! @z ! @x module 836 here we want to ensure that total_demerits < awful_bad ! minimum_demerits:=minimum_demerits+abs(adj_demerits); ! @y ! if abs(adj_demerits)>=awful_bad-minimum_demerits then ! minimum_demerits:=awful_bad-1 ! else minimum_demerits:=minimum_demerits+abs(adj_demerits); ! @z ! @x module 851 ! begin @!stat artificial_badness:=false;@+tats@/ ! @y ! begin artificial_demerits:=false;@/ ! @z ! @x module 854 ! begin b:=0; {set badness zero, this break is forced} ! @!stat artificial_badness:=true;@+tats ! end ! @y ! artificial_demerits:=true {set demerits zero, this break is forced} ! @z ! @x module 855 ! @; ! @y ! if artificial_demerits then d:=0 ! else @; ! @z ! @x module 856 ! if artificial_badness then print_char("*")@+else print_int(b); ! @.*\relax@> ! print(" p="); print_int(pi); ! print(" d="); print_int(d); ! @y ! if b>inf_bad then print_char("*")@+else print_int(b); ! @.*\relax@> ! print(" p="); print_int(pi); print(" d="); ! if artificial_demerits then print_char("*")@+else print_int(d); ! @z ! @x module 859 ! d:=line_penalty+b; d:=d*d; ! @y ! begin d:=line_penalty+b; ! if abs(d)>=10000 then d:=100000000@+else d:=d*d; ! @z ! @x ibid ! if abs(fit_class-fitness(r))>1 then d:=d+adj_demerits ! @y ! if abs(fit_class-fitness(r))>1 then d:=d+adj_demerits; ! end ! @z ! ! 384. Math fonts may disappear outside of \eqno (Marc van Leeuwen). ! @x module 1194 ! if danger then flush_math; ! @y ! danger:=false; ! @; ! @z ! ! 385. Forgot to rule out charnode when testing for node type (Marc van Leeuwen). ! @x module 805 ! begin if type(q)=unset_node then ! @ ! else if type(q)=rule_node then ! @; ! @y ! begin if not is_char_node(q) then ! if type(q)=unset_node then ! @ ! else if type(q)=rule_node then ! @; ! @z ! @x module 903 ! if type(hb)=ligature_node then if odd(subtype(hb)) then ! @y ! if not is_char_node(hb) then ! if type(hb)=ligature_node then if odd(subtype(hb)) then ! @z ! @x module 1202 ! if p<>null then if type(p)=glue_node then d:=0; ! @y ! if p<>null then if not is_char_node(p) then if type(p)=glue_node then d:=0; ! @z ! ! 386. Don't change the font of punctuation before a hyphenated word ! (Scott Allendorf, reported 7 Mar 90) ! @x module 895 ! label common_ending,done,found,found1,not_found,not_found+1,exit; ! @y ! label common_ending,done,found,found1,found2,not_found,exit; ! @z ! @x module 903 ! if is_char_node(ha) then ! begin init_list:=ha; init_lig:=false; hu[0]:=qo(character(ha)); ! end ! else if type(ha)=ligature_node then ! begin init_list:=lig_ptr(ha); init_lig:=true; init_lft:=(subtype(ha)>1); ! hu[0]:=qo(character(lig_char(ha))); ! if init_list=null then if init_lft then ! begin hu[0]:=256; init_lig:=false; ! end; {in this case a ligature will be reconstructed from scratch} ! free_node(ha,small_node_size); ! end ! else goto not_found+1; {no punctuation found} ! s:=cur_p; {we have |cur_p<>ha| because |type(cur_p)=glue_node|} ! while link(s)<>ha do s:=link(s); ! j:=0; goto common_ending; ! not_found+1: j:=1; s:=ha; init_list:=null; ! if not is_char_node(r) then if type(r)=ligature_node then ! if subtype(r)>1 then ! begin j:=0; hu[0]:=256; init_lig:=false; ! end; ! @y ! if is_char_node(ha) then ! if font(ha)<>hf then goto found2 ! else begin init_list:=ha; init_lig:=false; hu[0]:=qo(character(ha)); ! end ! else if type(ha)=ligature_node then ! if font(lig_char(ha))<>hf then goto found2 ! else begin init_list:=lig_ptr(ha); init_lig:=true; init_lft:=(subtype(ha)>1); ! hu[0]:=qo(character(lig_char(ha))); ! if init_list=null then if init_lft then ! begin hu[0]:=256; init_lig:=false; ! end; {in this case a ligature will be reconstructed from scratch} ! free_node(ha,small_node_size); ! end ! else begin {no punctuation found; look for left boundary} ! if not is_char_node(r) then if type(r)=ligature_node then ! if subtype(r)>1 then goto found2; ! j:=1; s:=ha; init_list:=null; goto common_ending; ! end; ! s:=cur_p; {we have |cur_p<>ha| because |type(cur_p)=glue_node|} ! while link(s)<>ha do s:=link(s); ! j:=0; goto common_ending; ! found2: s:=ha; j:=0; hu[0]:=256; init_lig:=false; init_list:=null; ! @z ! ! 387. Balance the parens showing on the terminal (for Lispers). ! @x module 304 ! @!in_open : 0..max_in_open; {the number of lines in the buffer, less one} ! @y ! @!in_open : 0..max_in_open; {the number of lines in the buffer, less one} ! @!open_parens : 0..max_in_open; {the number of open text files} ! @z ! @x module 331 ! in_open:=0; max_buf_stack:=0; ! @y ! in_open:=0; open_parens:=0; max_buf_stack:=0; ! @z ! @x module 362 ! begin print_char(")"); force_eof:=false; ! update_terminal; {show user that file has been read} ! @y ! begin print_char(")"); decr(open_parens); ! update_terminal; {show user that file has been read} ! force_eof:=false; ! @z ! @x module 537 ! print_char("("); print(name); update_terminal; state:=new_line; ! @y ! print_char("("); incr(open_parens); print(name); update_terminal; ! state:=new_line; ! @z ! @x module 1334 ! if job_name=0 then open_log_file; ! @y ! if job_name=0 then open_log_file; ! while open_parens>0 do ! begin print(" )"); decr(open_parens); ! end; ! @z ! ! 388. Optimize \ifx\p\q after \let\p=\q (Marc van Leeuwen says that ! AmS-TeX uses this a lot). ! @x module 508 ! while (p<>null)and(q<>null) do ! if info(p)<>info(q) then p:=null ! else begin p:=link(p); q:=link(q); ! end; ! b:=((p=null)and(q=null)); ! @y ! if p=q then b:=true ! else begin while (p<>null)and(q<>null) do ! if info(p)<>info(q) then p:=null ! else begin p:=link(p); q:=link(q); ! end; ! b:=((p=null)and(q=null)); ! end; ! @z ! @x module 538 (while we're at it, might as well optimize this too) ! begin if not input_ln(cur_file,false) then do_nothing; ! @y ! begin if input_ln(cur_file,false) then do_nothing; ! @z ! @x module 1020 (and this) ! else begin wait:=false; s:=ins_ptr(p); ! link(last_ins_ptr(r)):=s; s:=last_ins_ptr(r); ! @y ! else begin wait:=false; s:=last_ins_ptr(r); link(s):=ins_ptr(p); ! @z ! ! 389. Treat migration properly in displays (Marc van Leeuwen). ! @x module 1199 (a bad bug that really has bitten) ! adjust_tail:=adjust_head; b:=hpack(p,natural); ! @y ! adjust_tail:=adjust_head; b:=hpack(p,natural); p:=list_ptr(b); ! @z ! @x module 1204 ! shift_amount(b):=s+d; append_to_vlist(b); ! if t<>adjust_head then ! begin link(tail):=link(adjust_head); tail:=t; ! end ! @y ! shift_amount(b):=s+d; append_to_vlist(b) ! @z ! @x module 1205 ! tail_append(new_penalty(post_display_penalty)); ! end ! else begin tail_append(new_penalty(post_display_penalty)); ! tail_append(new_param_glue(g2)); ! end ! @y ! g2:=0; ! end; ! if t<>adjust_head then {migrating material comes after equation number} ! begin link(tail):=link(adjust_head); tail:=t; ! end; ! tail_append(new_penalty(post_display_penalty)); ! if g2>0 then tail_append(new_param_glue(g2)) ! @z ! ! -----------Here I draw the line with respect to further changes ! ! 390. (I sincerely hope that there won't be any more) diff -rc1 ../old/lib/plain.mf ./lib/plain.mf *** ../old/lib/plain.mf Sat Oct 7 12:41:16 1989 --- ./lib/plain.mf Sun Mar 25 15:31:10 1990 *************** *** 3,5 **** % And don't modify the file under any circumstances. ! string base_name, base_version; base_name="plain"; base_version="1.7"; --- 3,5 ---- % And don't modify the file under any circumstances. ! string base_name, base_version; base_name="plain"; base_version="2.0"; *************** *** 112,115 **** vardef counterclockwise primary c = ! interim autorounding:=0; ! if turningnumber c <= 0: reverse fi c enddef; --- 112,116 ---- vardef counterclockwise primary c = ! if turningcheck>0: ! interim autorounding:=0; ! if turningnumber c <= 0: reverse fi fi c enddef; *************** *** 214,216 **** ! def fix_units = % define the conversion factors, given pixels_per_inch mm:=pixels_per_inch/25.4; cm:=pixels_per_inch/2.54; --- 215,217 ---- ! def fix_units = % define the conversion factors, given pixels_per_inch mm:=pixels_per_inch/25.4; cm:=pixels_per_inch/2.54; diff -rc1 ../old/lib/plain.tex ./lib/plain.tex *** ../old/lib/plain.tex Fri Dec 8 20:13:14 1989 --- ./lib/plain.tex Sun Mar 25 13:06:55 1990 *************** *** 541,542 **** --- 541,543 ---- + \def\topglue{\nointerlineskip\vglue-\topskip\vglue} % for top of page \def\vglue{\afterassignment\vgl@\skip@=} diff -rc1 ../old/lib/testfont.tex ./lib/testfont.tex *** ../old/lib/testfont.tex Sun Jan 7 16:03:18 1990 --- ./lib/testfont.tex Sun Mar 25 13:06:57 1990 *************** *** 10,11 **** --- 10,12 ---- \doublehyphendemerits=30000 + \hyphenation{prom-i-nent} diff -rc1 ../old/lib/webmac.tex ./lib/webmac.tex *** ../old/lib/webmac.tex Sat Feb 8 13:24:31 1986 --- ./lib/webmac.tex Sun Mar 25 13:06:58 1990 *************** *** 1,3 **** % standard macros for WEB listings (in addition to PLAIN.TEX) ! \xdef\fmtversion{\fmtversion+WEBMAC1.4} \parskip 0pt % no stretch between paragraphs --- 1,3 ---- % standard macros for WEB listings (in addition to PLAIN.TEX) ! \xdef\fmtversion{\fmtversion+WEBMAC4.0} % identifies current set of macros \parskip 0pt % no stretch between paragraphs *************** *** 57,59 **** \def\to{\mathrel{.\,.}} % double dot, used only in math mode ! \def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1 #2.\par}} \def\lapstar{\rlap{*}} --- 57,59 ---- \def\to{\mathrel{.\,.}} % double dot, used only in math mode ! \def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} \def\lapstar{\rlap{*}} *************** *** 61,63 **** \def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format' ! \def\A{\note{See also}} % cross-reference for multiply defined section names \def\B{\mathopen{\.{@\{}}} % begin controlled comment --- 61,64 ---- \def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format' ! \def\A{\note{See also section}} % crossref for doubly defined section name ! \def\As{\note{See also sections}} % crossref for multiply defined section name \def\B{\mathopen{\.{@\{}}} % begin controlled comment *************** *** 67,68 **** --- 68,71 ---- \def\E{\cdot10^} % exponent in floating point constant + \def\ET{ and~} % conjunction between two section numbers + \def\ETs{, and~} % conjunction between the last two of several section numbers \def\F{\defin{format}} % format definition *************** *** 95,97 **** \def\T{\mathclose{\.{@\}}}} % terminate controlled comment ! \def\U{\note{This code is used in}} % cross-reference for uses of sections \let\V=\lor % logical or --- 98,101 ---- \def\T{\mathclose{\.{@\}}}} % terminate controlled comment ! \def\U{\note{This code is used in section}} % crossref for use of a section ! \def\Us{\note{This code is used in sections}} % crossref for uses of a section \let\V=\lor % logical or *************** *** 185,187 **** \linepenalty=10 % try to conserve lines ! \def\U{\note{Used in}} % cross-reference for uses of sections \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry} --- 189,192 ---- \linepenalty=10 % try to conserve lines ! \def\U{\note{Used in section}} % crossref for use of a section ! \def\Us{\note{Used in sections}} % crossref for uses of a section \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry} diff -rc1 ../old/local/etc/vftovp.ch ./local/etc/vftovp.ch *** ../old/local/etc/vftovp.ch Tue Jan 2 14:56:23 1990 --- ./local/etc/vftovp.ch Sun Mar 25 13:19:26 1990 *************** *** 5,6 **** --- 5,7 ---- % 12/11/89 (don) Initial version + % 3/23/90 (don) Fixed coredump problem when no args given *************** *** 49,50 **** --- 50,60 ---- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % [3] Add a label + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + @x + @=final_end; + @y + @=final_end-1, final_end; + @z + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % [4] Increase name_length *************** *** 98,100 **** print_ln('Usage: vftovp '); ! goto final_end; end; --- 108,110 ---- print_ln('Usage: vftovp '); ! goto final_end-1; end; *************** *** 102,104 **** if testreadaccess(vf_name) then reset(vf_file, vf_name) ! else begin print_ln('I can''t read the VF file!'); goto final_end; end; --- 112,114 ---- if testreadaccess(vf_name) then reset(vf_file, vf_name) ! else begin print_ln('I can''t read the VF file!'); goto final_end-1; end; *************** *** 105,107 **** if testreadaccess(tfm_name) then reset(tfm_file, tfm_name) ! else begin print_ln('I can''t read the TFM file!'); goto final_end; end; --- 115,117 ---- if testreadaccess(tfm_name) then reset(tfm_file, tfm_name) ! else begin print_ln('I can''t read the TFM file!'); goto final_end-1; end; *************** *** 315,317 **** @y ! final_end: print_ln(' '); out_ln; end. @z --- 325,327 ---- @y ! final_end: out_ln; final_end-1: print_ln(' '); end. @z diff -rc1 ../old/local/lib/picmac.tex ./local/lib/picmac.tex *** ../old/local/lib/picmac.tex Sun Mar 25 12:54:18 1990 --- ./local/lib/picmac.tex Sun Mar 25 12:55:10 1990 *************** *** 0 **** --- 1,178 ---- + % Pictures (a subset of \LaTeX's conventions) + \catcode`@=11 % enable private control sequences + \def\wlog#1{} % don't put allocation info into the log + + \newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill \def\hsss{\hskip\hsssglue} + + \newdimen\unitlength \newdimen\linethickness + \newdimen\@picheight \newdimen\@xdim \newdimen\@ydim \newdimen\@len \newdimen\@save + \newcount\@multicount \newcount\@xarg \newcount\@yarg + \newbox\@picbox \newbox\@mpbox + + \font\tenln=line10 \font\tenlnw=linew10 + \font\tencirc=lcircle10 \font\tencircw=lcirclew10 + + \def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc + \linethickness=\fontdimen8\linefont} + \def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw + \linethickness=\fontdimen8\linefont} + \thinlines + + \def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength + \setbox\@picbox=\hbox to#1\unitlength\bgroup \let\line=\@line + \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces} + \def\endpicture{\egroup\hss\egroup + \ht\@picbox=\@picheight \dp\@picbox=\z@ + \leavevmode\box\@picbox} + + \def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces} + + \def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5 + \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}% + \loop\ifnum\@multicount>0 + \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}% + \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength + \advance\@multicount\m@ne \repeat\ignorespaces} + + \def\makebox(#1,#2)#3{\setbox\@picbox=\hbox to#1\unitlength{\hss#3\hss}% + \@ydim=\ht\@picbox \advance\@ydim-\dp\@picbox + \ht\@picbox=#2\unitlength \dp\@picbox=\z@ + \leavevmode\lower.5\@ydim\box\@picbox} + + \newif\ifneg + \def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode + \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi + \ifnum\@xarg=0 \@vline + \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi + \ifneg\kern-\@len\else\@save=\@ydim\fi} + \def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg + \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg} + + \def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len} + \def\@vline{\kern-.5\linethickness\vrule width\linethickness + \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len + \kern-.5\linethickness} + + \def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8 + \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9 + \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}% + \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight + \else \@picheight=\ht\@picbox \fi + \@xdim=\wd\@picbox \@save=\@ydim + \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox + \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat + \advance\@xdim-\@len \kern-\@xdim + \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim + \raise\@ydim\box\@picbox} + + \def\vector(#1,#2)#3{\@line(#1,#2){#3}% + \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi} + \def\@hvector{\ifneg\rlap{\linefont\char27}\else + \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug + \def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}% + \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox + \raise\@len\box\@picbox\fi} + + \def\@svector{\setbox\@picbox=\hbox to\z@{\linefont + \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi + \ifneg\multiply\@xarg16 \multiply\@yarg2 + \else\hss % \llap + \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29 + \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20 + \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi + \advance\count@\@xarg \advance\count@\@yarg \char\count@ + \ifneg\hss\fi}% \rlap + \raise\@save\box\@picbox} + + \def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc} + \def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc} + \def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox + \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi} + \def\@bigdc{\ifnum\count@<'160 \@bigcirc + \else \@len=15\@xdim \@diskcirc\fi} + \def\@smalldc{{\advance\@len-.5\@xdim + \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat + \hbox{\circlefont\char\count@}}} + \def\@bigcirc{{\circlefont\count@=15 + \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox + \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi + \advance\@len-.125\wd\@picbox + \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat + \@ydim=.5\@xdim \advance\@ydim.5\linethickness + \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}% + \nointerlineskip + \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}% + \kern-\@ydim\lower\@ydim\box\@picbox}} + + \newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr + \ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue + \def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength + {\circlefont \setbox\@picbox=\hbox{\char0} + \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi + \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi + \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi + \count@=39 + \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox + \advance\count@-4 \repeat + \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@ + \kern\wd\@picbox}% + \@save=.5\wd\@picbox \advance\@save-.5\linethickness + \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save + \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}% + \advance\count@\m@ne + \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save + \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}% + \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2 + \setbox\@picbox=\vbox{\box0\nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi + \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi + \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip\box2}% + \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode + \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}} + + \def\cpic#1\endcpic{\vcenter{\hbox{\beginpicture#1\endpicture}}} + + % Squines (quadratic splines) + % example of use: to plot f(x) between x0 and x1, you can say + % \put(0,0){\squine(x0,xm,x1,y0,ym,y1)}, where y0=f(x0), y1=f(x1) + % xm=(y0-y1+s1x1-s0x0)/(s1-s0), ym=(s0(s1x1-y1)-s1(s0x0-y0))/(s1-s0), + % s0=f'(x0), and s1=f'(x1). + + \newdimen\@xi \newdimen\@xii \newdimen\@xiii \newdimen\@xiv + \newdimen\@xpt \newdimen\@xoldpt + \newdimen\@yi \newdimen\@yii \newdimen\@yiii \newdimen\@yiv + \newdimen\@ypt \newdimen\@yoldpt + \def\squine(#1,#2,#3,#4,#5,#6){\setbox\@picbox\hbox{\tencirc q}% + \global\@xoldpt=#1\unitlength \global\@yoldpt=#4\unitlength \kern\@xoldpt + \@xi=\@xoldpt \@xii=#2\unitlength \@xiii=#3\unitlength + \@yi=\@yoldpt \@yii=#5\unitlength \@yiii=#6\unitlength + \squinerec + \@xpt=#3\unitlength \@ypt=#6\unitlength \@addpoint + \raise\@ypt\copy\@picbox} + \newif\iffar + \def\squinerec{\farfalse \testnear\@xi\@xiii \testnear\@yi\@yiii + \iffar \decast \fi} + \def\testnear#1#2{\@save=#1\advance\@save-#2% + \ifdim\@save<\z@ \@save=-\@save\fi \ifdim\@save>\p@ \fartrue \fi} + \def\decast{\@xpt=\@xi \advance\@xpt\@xii \divide\@xpt2 + \advance\@xii\@xiii \divide\@xii2 + \@xiv=\@xpt \advance\@xiv\@xii \divide\@xiv2 + \@ypt=\@yi \advance\@ypt\@yii \divide\@ypt2 + \advance\@yii\@yiii \divide\@yii2 + \@yiv=\@ypt \advance\@yiv\@yii \divide\@yiv2 + \begingroup\@xii=\@xpt \@xiii=\@xiv + \@yii=\@ypt \@yiii=\@yiv \squinerec\endgroup + \@xpt=\@xiv \@ypt=\@yiv \@addpoint + \@xi=\@xiv \@yi=\@yiv \squinerec} + \def\@addpoint{%\message{(\the\@xpt,\the\@ypt)}% + \global\advance\@xoldpt-\@xpt \wd\@picbox=-\@xoldpt + \raise\@yoldpt\copy\@picbox \global\@xoldpt=\@xpt \global\@yoldpt=\@ypt} + + \catcode`\@=12 % disable private control sequences diff -rc1 ../old/local/mf/inimf.ch ./local/mf/inimf.ch *** ../old/local/mf/inimf.ch Wed Dec 20 09:01:22 1989 --- ./local/mf/inimf.ch Sun Mar 25 13:19:35 1990 *************** *** 5,6 **** --- 5,7 ---- % + % fixed max_buf_stack logic (it was one too high) on 1/22/90 --- don % brought up to version 1.9 on 12/20/89 --- don *************** *** 94,98 **** @x ! @d banner=='This is METAFONT, Version 1.9' {printed when \MF\ starts} @y ! @d banner=='This is METAFONT, Version 1.9 for SunOS' {printed when \MF\ starts} --- 95,99 ---- @x ! @d banner=='This is METAFONT, Version 2.0' {printed when \MF\ starts} @y ! @d banner=='This is METAFONT, Version 2.0 for SunOS' {printed when \MF\ starts} *************** *** 587,590 **** line_read(f,buf_size); ! if last>=max_buf_stack then begin ! max_buf_stack:=last+1; if max_buf_stack>=buf_size then --- 588,591 ---- line_read(f,buf_size); ! if last>max_buf_stack then begin ! max_buf_stack:=last; if max_buf_stack>=buf_size then diff -rc1 ../old/local/mf/mf.pool ./local/mf/mf.pool *** ../old/local/mf/mf.pool Sat Oct 21 18:30:31 1989 --- ./local/mf/mf.pool Sun Mar 25 13:19:38 1990 *************** *** 816,817 **** --- 816,818 ---- 22Transcript written on + 02 ) 19(end occurred when *************** *** 822,823 **** 21debug # (-1 to exit): ! *493813446 --- 823,824 ---- 21debug # (-1 to exit): ! *415546872 diff -rc1 ../old/local/mf/plain.log ./local/mf/plain.log *** ../old/local/mf/plain.log Sat Oct 14 16:36:40 1989 --- ./local/mf/plain.log Sun Mar 25 13:19:41 1990 *************** *** 1,2 **** ! This is METAFONT, Version 1.8 for SunOS (INIMF) 14 OCT 1989 16:36 **plain \input art \dump --- 1,2 ---- ! This is METAFONT, Version 2.0 for SunOS (INIMF) 25 MAR 1990 01:30 **plain \input art \dump *************** *** 3,5 **** (/home/tex/dist/lib/plain.mf ! Preloading the plain base, version 1.7: preliminaries, basic constants and mathematical macros, --- 3,5 ---- (/home/tex/dist/lib/plain.mf ! Preloading the plain base, version 2.0: preliminaries, basic constants and mathematical macros, *************** *** 12,16 **** Beginning to dump on file plain.base ! (preloaded base=plain 89.10.14) ! 1393 strings of total length 23020 ! 5044 memory locations dumped; current usage is 1406&3503 516 symbolic tokens --- 12,16 ---- Beginning to dump on file plain.base ! (preloaded base=plain 90.3.25) ! 1394 strings of total length 23021 ! 5051 memory locations dumped; current usage is 1408&3508 516 symbolic tokens diff -rc1 ../old/local/tex/initex.ch ./local/tex/initex.ch *** ../old/local/tex/initex.ch Tue Dec 12 00:18:57 1989 --- ./local/tex/initex.ch Sun Mar 25 13:19:49 1990 *************** *** 73,74 **** --- 73,75 ---- % (10/29/89) don Upped fontmax to 127 and fontmemsize to 40000 + % (1/23/90) don Fixed max_buf_stack logic (it was one too high) *************** *** 95,99 **** @x ! @d banner=='This is TeX, Version 2.993' {printed when \TeX\ starts} @y ! @d banner=='This is TeX, Version 2.993 for SunOS' {printed when \TeX\ starts} @z --- 96,100 ---- @x ! @d banner=='This is TeX, Version 3.0' {printed when \TeX\ starts} @y ! @d banner=='This is TeX, Version 3.0 for SunOS' {printed when \TeX\ starts} @z *************** *** 274,276 **** @d hash_size=2100 {maximum number of control sequences; it should be at most ! about |(mem_max-mem_min)/10|, but 2100 is already quite generous} @d hash_prime=1777 {a prime number equal to about 85\pct! of |hash_size|} --- 275,277 ---- @d hash_size=2100 {maximum number of control sequences; it should be at most ! about |(mem_max-mem_min)/10|} @d hash_prime=1777 {a prime number equal to about 85\pct! of |hash_size|} *************** *** 286,288 **** @d hash_size=4000 {maximum number of control sequences; it should be at most ! about |(mem_max-mem_min)/10|, but 2100 is already quite generous} @d hash_prime=3443 {a prime number equal to about 85\pct! of |hash_size|} --- 287,289 ---- @d hash_size=4000 {maximum number of control sequences; it should be at most ! about |(mem_max-mem_min)/10|} @d hash_prime=3443 {a prime number equal to about 85\pct! of |hash_size|} *************** *** 624,627 **** line_read(f,buf_size); ! if last>=max_buf_stack then begin ! max_buf_stack:=last+1; if max_buf_stack>=buf_size then --- 625,628 ---- line_read(f,buf_size); ! if last>max_buf_stack then begin ! max_buf_stack:=last; if max_buf_stack>=buf_size then diff -rc1 ../old/local/tex/plain.log ./local/tex/plain.log *** ../old/local/tex/plain.log Mon Jan 8 00:31:09 1990 --- ./local/tex/plain.log Sun Mar 25 13:19:52 1990 *************** *** 1,2 **** ! This is TeX, Version 2.993 for SunOS (INITEX) 8 JAN 1990 00:30 **plain \dump --- 1,2 ---- ! This is TeX, Version 3.0 for SunOS (INITEX) 24 MAR 1990 22:56 **plain \dump *************** *** 43,48 **** Beginning to dump on file plain.fmt ! (preloaded format=plain 90.1.8) ! 1958 strings of total length 27665 ! 4824 memory locations dumped; current usage is 110&4711 ! 920 multiletter control sequences \font\nullfont=nullfont --- 43,48 ---- Beginning to dump on file plain.fmt ! (preloaded format=plain 90.3.24) ! 1960 strings of total length 27678 ! 4831 memory locations dumped; current usage is 110&4718 ! 921 multiletter control sequences \font\nullfont=nullfont diff -rc1 ../old/local/tex/tex.pool ./local/tex/tex.pool *** ../old/local/tex/tex.pool Mon Jan 8 06:27:57 1990 --- ./local/tex/tex.pool Sun Mar 25 13:19:59 1990 *************** *** 748,750 **** 25Unbalanced output routine ! 55Your sneaky output routine has fewer real {'s than }'s. 41I can't handle that very well; good luck. --- 748,750 ---- 25Unbalanced output routine ! 58Your sneaky output routine has problematic {'s and/or }'s. 41I can't handle that very well; good luck. *************** *** 1011,1012 **** --- 1011,1013 ---- 22Transcript written on + 02 ) 13end occurred *************** *** 1034,1035 **** 16output file name ! *024428112 --- 1035,1036 ---- 16output file name ! *498792723 diff -rc1 ../old/local/web/weave.ch ./local/web/weave.ch *** ../old/local/web/weave.ch Mon Oct 16 22:01:13 1989 --- ./local/web/weave.ch Sun Mar 25 13:20:04 1990 *************** *** 55,56 **** --- 55,57 ---- % 10/16/89 don fixed bug when ".web" and ".ch" are explicitly stated + % 3/25/90 don changed version number to 4.1 *************** *** 73,77 **** @x ! @d banner=='This is WEAVE, Version 4' @y ! @d banner=='This is WEAVE, Version 4 for SunOS' @z --- 74,78 ---- @x ! @d banner=='This is WEAVE, Version 4.1' @y ! @d banner=='This is WEAVE, Version 4.1 for SunOS' @z