diff options
Diffstat (limited to 'info/digests/tex-implementors/message.11')
-rw-r--r-- | info/digests/tex-implementors/message.11 | 1052 |
1 files changed, 1052 insertions, 0 deletions
diff --git a/info/digests/tex-implementors/message.11 b/info/digests/tex-implementors/message.11 new file mode 100644 index 0000000000..870000a1c2 --- /dev/null +++ b/info/digests/tex-implementors/message.11 @@ -0,0 +1,1052 @@ +Date: 23 Dec 88 Message No: 011 + +To: TeX implementors and distributors + +From: Barbara Beeton + +Subject: TeX 2.95, MF 1.7, changes to CM fonts, TANGLE 2.9 + + +As you were warned last week, TeX has again been modified, to handle the +change first made in 2.94 more robustly. The change also affects MF, +which is now at version 1.7. Updates to TeX82.BUG, MF84.BUG, TeX.WEB, +MF.WEB and ERRATA.TEX are given below; note that these changes reverse +some of the changes made in TeX 2.94 and MF 1.6, so be particularly +careful applying them if you are using the line numbers for reference. + +Some fixes have been made to bugs in the CM fonts. These changes affect +the following files: + + BIGOP.MF + CMBASE.MF + ROMANL.MF + SYM.MF + SYMBOL.MF + +The changes are posted in CM85.BUG and also in ERRATA.TEX. The changes +given in CM85.BUG for BIGOP and ROMANL are clear, and since there are +many similar code lines in these .MF files that could lead to the changes +being applied to the wrong character descriptions, I am not providing +difference lists for these. Difference lists are provided for CMBASE.MF +and SYM and SYMBOL.MF, where the changes are more extensive, or more +clearly followed from the complete list of differences. + +Finally, TANGLE has been modified to permit references to non-numeric macros +before their definitions. The changes (version 2.9) are listed below. + +All relevant files are now up to date at SCORE. + +As usual, I'd appreciate an acknowledgement that you have received +this message. + +And I'd like to wish everyone the very best of holidays. + + +######################################################################## + +Additions to TEX82.BUG + +349. By popular request, undo #347 and fix the bug a more complex way. +@x module 71 [this undoes change #347] +if not input_ln(term_in,true) then t_open_in; +@y +if not input_ln(term_in,true) then fatal_error("End of file on the terminal!"); +@z +@x module 92 [now we get to the new stuff] +begin if job_name>0 then selector:=term_and_log +@y +begin if log_opened then selector:=term_and_log +@z +@x module 93 + error; +@y + if log_opened then error; +@z +@x module 527 +@!job_name:str_number; {principal file name} +@y +@!job_name:str_number; {principal file name} +@!log_opened:boolean; {has the transcript file been opened?} +@z +@x module 528 +@<Initialize the output...@>=job_name:=0; name_in_progress:=false; +@y +@<Initialize the output...@>= +job_name:=0; name_in_progress:=false; log_opened:=false; +@z +@x module 534 +selector:=log_only; +@y +selector:=log_only; log_opened:=true; +@z +@x module 535 +begin if interaction<scroll_mode then {bypass |fatal_error|} + begin selector:=term_only; print_err("I can't write on file `"); +@.I can't write on file x@> + print_file_name(cur_name,cur_area,cur_ext); print("'.");@/ + job_name:=0; history:=fatal_error_stop; jump_out; + end; {abort the program without a log file} +@y +begin selector:=term_only; +@z +@x module 1265 [this change is optional, but it's a slight improvement] +if job_name<>0 then selector:=selector+2; +@y +if log_opened then selector:=selector+2; +@z +@x module 1333 +if job_name>0 then +@y +if log_opened then +@z +@x module 1334 +if job_name>0 then {the log file is open} +@y +if log_opened then +@z + +350. (I sincerely hope that there won't be any more) + + +######################################################################## + +Differences between TEX.WEB 2.94 and 2.95 + +;COMPARISON OF TX:<TEX.WEB>TEX.WEB.10 AND TX:<TEX.NEW>TEX.WEB.1 +;OPTIONS ARE /E /3 + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 1-33 (2181) +% A reward of $81.92 will be paid to the first finder of any remaining bug. +**** FILE TX:<TEX.NEW>TEX.WEB.1, 1-32 (2179) +% Version 2.95 solves that problem a better way (December 1988). + +% A reward of $81.92 will be paid to the first finder of any remaining bug. +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 2-93 (9365) +@d banner=='This is TeX, Version 2.94' {printed when \TeX\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +**** FILE TX:<TEX.NEW>TEX.WEB.1, 2-93 (9431) +@d banner=='This is TeX, Version 2.95' {printed when \TeX\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 7-319 (85645) +begin if job_name>0 then selector:=term_and_log +else selector:=term_only; +**** FILE TX:<TEX.NEW>TEX.WEB.1, 7-319 (85711) +begin if log_opened then selector:=term_and_log +else selector:=term_only; +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 7-329 (85988) + error; + @!debug if interaction>batch_mode then debug_help;@+gubed@;@/ +**** FILE TX:<TEX.NEW>TEX.WEB.1, 7-329 (86054) + if log_opened then error; + @!debug if interaction>batch_mode then debug_help;@+gubed@;@/ +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 30-312 (429711) +@ Initially |job_name=0|; it becomes nonzero as soon as the true name is known. +**** FILE TX:<TEX.NEW>TEX.WEB.1, 30-311 (429794) +@!log_opened:boolean; {has the transcript file been opened?} + +@ Initially |job_name=0|; it becomes nonzero as soon as the true name is known. +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 30-316 (429948) +@<Initialize the output...@>=job_name:=0; name_in_progress:=false; + +@ Here is a routine that manufactures the output file names, assuming that +**** FILE TX:<TEX.NEW>TEX.WEB.1, 30-317 (430095) +@<Initialize the output...@>= +job_name:=0; name_in_progress:=false; log_opened:=false; + +@ Here is a routine that manufactures the output file names, assuming that +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 30-399 (433094) +selector:=log_only; +@<Print the banner line, including the date and time@>; +**** FILE TX:<TEX.NEW>TEX.WEB.1, 30-401 (433262) +selector:=log_only; log_opened:=true; +@<Print the banner line, including the date and time@>; +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 30-413 (433677) +Therefore the program is careful not to call |prompt_file_name| if a +fatal error could result. + +The normal idea of |batch_mode| is that nothing at all should be written +**** FILE TX:<TEX.NEW>TEX.WEB.1, 30-415 (433863) +The |prompt_file_name| routine can result in a |fatal_error|, but the |error| +routine will not be invoked because |log_opened| will be false. + +The normal idea of |batch_mode| is that nothing at all should be written +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 30-426 (434205) +begin if interaction<scroll_mode then {bypass |fatal_error|} + begin selector:=term_only; print_err("I can't write on file `"); +@.I can't write on file x@> + print_file_name(cur_name,cur_area,cur_ext); print("'.");@/ + job_name:=0; history:=fatal_error_stop; jump_out; + end; {abort the program without a log file} +prompt_file_name("transcript file name",".log"); +**** FILE TX:<TEX.NEW>TEX.WEB.1, 30-428 (434438) +begin selector:=term_only; +prompt_file_name("transcript file name",".log"); +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 50-796 (956324) +if job_name<>0 then selector:=selector+2; +end; +**** FILE TX:<TEX.NEW>TEX.WEB.1, 50-796 (956264) +if log_opened then selector:=selector+2; +end; +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 52-107 (986057) +if job_name>0 then + begin wlog_cr; a_close(log_file); selector:=selector-2; +**** FILE TX:<TEX.NEW>TEX.WEB.1, 52-107 (985996) +if log_opened then + begin wlog_cr; a_close(log_file); selector:=selector-2; +*************** + +**** FILE TX:<TEX.WEB>TEX.WEB.10, 52-122 (986549) +if job_name>0 then {the log file is open} + begin wlog_ln(' '); +**** FILE TX:<TEX.NEW>TEX.WEB.1, 52-122 (986488) +if log_opened then + begin wlog_ln(' '); +*************** + + +######################################################################## + +Additions to MF84.BUG + +546. By popular request, undo #544 and fix the bug a more complex way. +@x module 66 [this undoes chan44] +if not input_ln(term_in,true) n_in; +@y +if not input_ln(term_in,true) then fatal_error("End of file on the terminal!"); +@z +@x module 87 [now we get to the new stuff] +begin if job_name>0 selector:=term_and_log +@y +begin if log_opened then selector:=term_and_log +@z +@x module 88 + error; +@y + if log_opened then error; +@z +@x module 782 +@!job_name:str_number; {principal file name} +@y +@!job_name:str_number; {principal file name} +@!log_opened:boolean; {has the transcript file been opened?} +@z +@x module 783 +@<Initialize the output...@>=job_name:=0; +@y +@<Initialize the output...@>=job_name:=0; log_opened:=false; +@z +@x module 788 +selector:=log_only; +@y +selector:=log_only; log_opened:=true; +@z +@x module 789 +begin if interaction<scroll_mode then {bypass |fatal_error|} + begin selector:=term_only; print_err("I can't write on file `"); +@.I can't write on file x@> + print_file_name(cur_name,cur_area,cur_ext); print("'.");@/ + job_name:=0; history:=fatal_error_stop; jump_out; + end; {abort the program without a log file} +@y +begin selector:=term_only; +@z +@x module 1023 [this change is optional, but it's a slight improvement] + if job_name<>0 then selector:=selector+2; +@y + if log_opened then selector:=selector+2; +@z +@x module 1205 +if job_name>0 then +@y +if log_opened then +@z +@x module 1208 +if job_name>0 then {the log file is open} +@y +if log_opened then +@z + +547. (I sincerely hope that there won't be any more) + + +######################################################################## + +Differences between MF.WEB 1.6 and 1.7 + +;COMPARISON OF PS:<TEX.MF>MF.WEB.5 AND PS:<TEX.NEW>MF.WEB.1 +;OPTIONS ARE /E /3 + +**** FILE PS:<TEX.MF>MF.WEB.5, 1-18 (1093) +% A few "harmless" optimizations have been made without changing versions. +**** FILE PS:<TEX.NEW>MF.WEB.1, 1-18 (1093) +% Version 1.7 solves that problem a better way (December 1988). +% A few "harmless" optimizations have been made without changing versions. +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 2-81 (7745) +@d banner=='This is METAFONT, Version 1.6' {printed when \MF\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +**** FILE PS:<TEX.NEW>MF.WEB.1, 2-81 (7810) +@d banner=='This is METAFONT, Version 1.7' {printed when \MF\ starts} + +@ Different \PASCAL s have slightly different conventions, and the present +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 7-324 (80761) +begin if job_name>0 then selector:=term_and_log +else selector:=term_only; +**** FILE PS:<TEX.NEW>MF.WEB.1, 7-324 (80826) +begin if log_opened then selector:=term_and_log +else selector:=term_only; +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 7-334 (81103) + error; + @!debug if interaction>batch_mode then debug_help;@+gubed@;@/ +**** FILE PS:<TEX.NEW>MF.WEB.1, 7-334 (81168) + if log_opened then error; + @!debug if interaction>batch_mode then debug_help;@+gubed@;@/ +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 39-307 (650905) +@!log_name:str_number; {full name of the log file} +**** FILE PS:<TEX.NEW>MF.WEB.1, 39-307 (650989) +@!log_opened:boolean; {has the transcript file been opened?} +@!log_name:str_number; {full name of the log file} +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 39-313 (651196) +@<Initialize the output...@>=job_name:=0; + +@ Here is a routine that manufactures the output file names, assuming that +**** FILE PS:<TEX.NEW>MF.WEB.1, 39-314 (651342) +@<Initialize the output...@>=job_name:=0; log_opened:=false; + +@ Here is a routine that manufactures the output file names, assuming that +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 39-386 (653986) +selector:=log_only; +@<Print the banner line, including the date and time@>; +**** FILE PS:<TEX.NEW>MF.WEB.1, 39-387 (654151) +selector:=log_only; log_opened:=true; +@<Print the banner line, including the date and time@>; +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 39-399 (654528) +Therefore the program is careful not to call |prompt_file_name| if a +fatal error could result. + +The normal idea of |batch_mode| is that nothing at all should be written +**** FILE PS:<TEX.NEW>MF.WEB.1, 39-400 (654711) +The |prompt_file_name| routine can result in a |fatal_error|, but the |error| +routine will not be invoked because |log_opened| will be false. + +The normal idea of |batch_mode| is that nothing at all should be written +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 39-412 (655056) +begin if interaction<scroll_mode then {bypass |fatal_error|} + begin selector:=term_only; print_err("I can't write on file `"); +@.I can't write on file x@> + print_file_name(cur_name,cur_area,cur_ext); print("'.");@/ + job_name:=0; history:=fatal_error_stop; jump_out; + end; {abort the program without a log file} +prompt_file_name("transcript file name",".log"); +**** FILE PS:<TEX.NEW>MF.WEB.1, 39-413 (655286) +begin selector:=term_only; +prompt_file_name("transcript file name",".log"); +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 45-46 (803909) + if job_name<>0 then selector:=selector+2; + get_x_next; +**** FILE PS:<TEX.NEW>MF.WEB.1, 45-46 (803846) + if log_opened then selector:=selector+2; + get_x_next; +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 50-116 (916496) +if job_name>0 then + begin wlog_cr; +**** FILE PS:<TEX.NEW>MF.WEB.1, 50-116 (916432) +if log_opened then + begin wlog_cr; +*************** + +**** FILE PS:<TEX.MF>MF.WEB.5, 50-161 (918333) +if job_name>0 then {the log file is open} + begin wlog_ln(' '); +**** FILE PS:<TEX.NEW>MF.WEB.1, 50-161 (918269) +if log_opened then + begin wlog_ln(' '); +*************** + + +######################################################################## + +Extracts from ERRATA.TeX (differences as compared with previous version) + +;COMPARISON OF TX:<TEX.DOC>ERRATA.TEX.14 AND TX:<TEX.DOC>ERRATA.NEW.1 +;OPTIONS ARE /E /3 + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 2-83 (4289) +\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 2-83 (4289) +\bugonpage A464, left column, under Displays (12/8/88) + +\eightpoint\indent\quad +non-centered, 186, 326, 375--376, 420--421. + +\bugonpage A465, entry for {\tt\char`\\everymath} (12/12/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 3-6 (5033) +\bugonpage B2, line 32 (11/6/88) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]2.94\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B30, line 3 from the bottom (11/6/88) + +\ninepoint\noindent\hskip10pt +{\bf if} $\lnot\\{input\_ln}(\\{term\_in},\\{true})$ + {\bf then} \\{t\_open\_in}; + +\bugonpage B38, lines 7--9 from the bottom (11/6/88) + +\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.] + +\bugonpage B52, line 5 (8/13/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 3-6 (5163) +\bugonpage B2, line 32 (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]TeX,\]Version\]2.95\char'23}\quad +$\{\,$printed when \TeX\ starts$\,\}$ + +\bugonpage B38, lines 7--9 from the bottom (11/6/88) + +\tenpoint\noindent[Delete this paragraph; it is being moved to page B214.] + +\bugonpage B38, line 5 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$ + +\bugonpage B39, line 5 (12/14/88) + +\ninepoint\noindent\kern50pt +{\bf if\/} \\{log\_opened} {\bf then} \\{error}; + +\bugonpage B52, line 5 (8/13/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 3-193 (11136) +\bugonpage B214, new paragraph after line 3 (11/6/88) + +\tenpoint\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 3-197 (11385) +\bugonpage B211, new line of code before the mini-index (12/14/88) + +\ninepoint\noindent +\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$ + +\bugonpage B212, line 5 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{job\_name}\gets0$; \ $\\{name\_in\_progress}\gets\\{false}$; \ +$\\{log\_opened}\gets\\{false}$; + +\bugonpage B213, line 24 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \ +$\\{selector}\gets\\{log\_only}$; \ +$\\{log\_opened}\gets\\{true}$; + +\bugonpage B214, lines 2 and 3 (12/14/88) + +\tenpoint\noindent +messages or even to \\{show\_context}. +The \\{prompt\_file\_name} routine can result in a \\{fatal\_error}, +but the \\{error} +routine will not be invoked because \\{log\_opened} will be false. +\par\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 3-201 (11451) +\bugonpage B214, lines 8--9 (11/6/88) + +\ninepoint\noindent\hskip20pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; \ + \\{print\_err}({\tt\char`\"I\]can't\]write\]on\]file\]`\char`\"});\par +\noindent\hskip20pt + \\{print\_file\_name}$(\\{cur\_name},\\{cur\_area},\\{cur\_ext})$; \ + \\{print}({\tt\char`\"'.\char`\"}); + +\bugonpage B224, second-last line (4/28/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 3-228 (12455) +\bugonpage B214, lines 7--11 reduce to a single line (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; + +\bugonpage B224, second-last line (4/28/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 3-390 (17709) +\bugonpage B547, right column (9/20/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 3-413 (18534) +\bugonpage B507, line 13 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$; + +\bugonpage B527, line 21 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage B528, line 5 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage B547, right column (9/20/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 3-417 (18382) +\bugonpage B559, right column (8/13/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 3-455 (19571) +\bugonpage B559, new entry (12/14/88) + +\eightpoint\noindent +\\{log\_opened}, 92--93, $\underline{527}$, 528, 534--535, 1265, 1333--1334. + +\bugonpage B559, right column (8/13/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 5-6 (20908) +\bugonpage D2, line 27 (11/6/88) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]METAFONT,\]Version\]1.6\char'23}\quad +$\{\,$printed when \MF\ starts$\,\}$ + +\bugonpage D28, line 7 from the bottom (11/6/88) + +\ninepoint\noindent\hskip10pt +{\bf if} $\lnot\\{input\_ln}(\\{term\_in},\\{true})$ + {\bf then} \\{t\_open\_in}; + +\bugonpage D36, lines 3--5 (11/6/88) +\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.] + +\bugonpage D66, lines 34--35 (7/9/88) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 5-6 (22240) +\bugonpage D2, line 27 (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf define} $\\{banner}\equiv\hbox{\tt\char'23}$% +{\tt This\]is\]METAFONT,\]Version\]1.7\char'23}\quad +$\{\,$printed when \MF\ starts$\,\}$ + +\bugonpage D36, lines 3--5 (11/6/88) + +\tenpoint\noindent[Delete this paragraph; it is being moved to page D349.] + +\bugonpage D36, line 7 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf begin if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{term\_and\_log}$ + +\bugonpage D36, line 16 (12/14/88) + +\ninepoint\noindent\kern50pt +{\bf if\/} \\{log\_opened} {\bf then} \\{error}; + +\bugonpage D66, lines 34--35 (7/9/88) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 5-32 (21773) +\bugonpage D349, new paragraph after line 7 (11/6/88) + +\tenpoint\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 5-36 (23209) +\bugonpage D347, new line of code after line 5 (12/14/88) + +\ninepoint\noindent +\\{log\_opened}: \\{boolean};\quad$\{\,$has the transcript file been opened?$\,\}$ + +\bugonpage D347, line 11 (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{job\_name}\gets0$; \ +$\\{log\_opened}\gets\\{false}$; + +\bugonpage D348, line 4 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +$\\{log\_name}\gets\\{a\_make\_name\_string}(\\{log\_file})$; \ +$\\{selector}\gets\\{log\_only}$; \ +$\\{log\_opened}\gets\\{true}$; + +\bugonpage D349, lines 6 and 7 (12/14/88) + +\tenpoint\noindent +print error messages or even to \\{show\_context}. +The \\{prompt\_file\_name} routine can result in a \\{fatal\_error}, +but the \\{error} +routine will not be invoked because \\{log\_opened} will be false. +\par\noindent\hskip10pt +The normal idea of \\{batch\_mode} is that nothing at all should be written +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 5-40 (22088) +\bugonpage D349, lines 12--13 (11/6/88) + +\ninepoint\noindent\hskip20pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; \ + \\{print\_err}({\tt\char`\"I\]can't\]write\]on\]file\]`\char`\"});\par +\noindent\hskip20pt + \\{print\_file\_name}$(\\{cur\_name},\\{cur\_area},\\{cur\_ext})$; \ + \\{print}({\tt\char`\"'.\char`\"}); + +\bugonpage D420, bottom line (5/25/88) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 5-67 (24256) +\bugonpage D349, lines 11--15 reduce to a single line (12/14/88) + +\ninepoint\noindent\hskip10pt +{\bf begin} $\\{selector}\gets\\{term\_only}$; + +\bugonpage D420, bottom line (5/25/88) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 5-63 (22896) +\bugonpage D545, left column (10/31/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 5-86 (24884) +\bugonpage D444, line 8 from the bottom (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} $\\{selector}\gets\\{selector}+2$; + +\bugonpage D510, line 14 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage D511, line 11 (12/14/88) + +\ninepoint\noindent\kern10pt +{\bf if\/} \\{log\_opened} {\bf then} + +\bugonpage D530, new entry (12/14/88) + +\eightpoint\noindent +\\{log\_opened}, 87--88, $\underline{782}$, 783, 788--789, 1023, 1205, 1208. + +\bugonpage D545, left column (10/31/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 6-21 (23635) +\bugonpage E353, lines 38--39 (8/12/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 6-21 (26146) +\bugonpage E333, line 11 (12/11/88) + +\ninepoint +\line{{\bf if\/} not \\{monospace}: + $r:={\rm hround}(x_5+x_1)+l$; {\bf fi}\hfill + \% change width for better fit} + +\bugonpage E353, lines 38--39 (8/12/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 6-46 (24394) +\bugonpage E485, line 4 (8/7/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 6-53 (27077) +\bugonpage E471, line 5 (12/11/88) + +\ninepoint\noindent +$x_2=\\{good}.x\,.5w$; \ $\\{center\_on}(x_2)$; + +\bugonpage E471, insert two lines below the rule at bottom of page (12/11/88) + +\ninepoint +\line{{\bf def\/} +\\{center\_on}({\bf expr} $x) =\null$ +{\bf if\/} not \\{monospace}:\hfill \% change width for symmetric fit} +\leftline{\kern10pt + $r:=r+2x-w$; \ $w:=2x$; \ {\bf fi} {\bf enddef};} + +\bugonpage E477, line 20 (12/11/87) + +\ninepoint\noindent +$x_4=x_8=\\{good}.x\,.5w$; \ $\\{center\_on}(x_4)$; \ +$x_2=w-x_6=\\{good}.x(x_4+a)$; + +\bugonpage E483, third line of elementary division operator (12/11/88) + +\ninepoint\noindent +$x_3-.5\\{dot\_size}={\rm hround}(.5w-.5\\{dot\_size})$; \ +$\\{center\_on}(x_3)$; + +\bugonpage E485, line 4 (8/7/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 6-58 (24810) +\bugonpage E550, new line after line 23 (8/15/87) +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 6-91 (28231) +\bugonpage E515, lines 5 and 12 (12/11/88) + +\ninepoint\noindent +$.5[x_1,x_2]=x_3=\\{good}.x\,.5w$; \ +$\\{center\_on}(x_3)$; \ $\\{lft}\,x_1={\rm hround}(.5w-u*{\rm sqrt}48)$; + +\bugonpage E521, lines 4 and 14 (12/12/88) + +\ninepoint\noindent +$x_1=x_2=\\{good}.x\,.5w$; \ +$\\{center\_on}(x_1)$; \ $\\{lft}\,x_3={\rm hround}\,u$; \ $x_4=w-x_3$; + +\bugonpage E537, line 6 (12/11/88) + +\ninepoint\noindent +$x_1=x_2=x_3=x_4$; \ +$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \ +$\\{center\_on}(x_1)$; + +\bugonpage E537, line 19 (12/11/88) + +\ninepoint\noindent +$x_1=x_2=x_3$; \ +$x_1-.5\\{stem}={\rm hround}(.5w-.5\\{stem})$; \ +$\\{center\_on}(x_1)$; + +\bugonpage E539, line 4 (12/11/88) + +\ninepoint\noindent +$x_1=x_4=x_{30}=x_{33}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E539, line 21 (12/11/88) + +\ninepoint\noindent +$x_1=x_4=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E541, line 4 (12/11/88) + +\ninepoint\noindent +$x_1=x_5=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E541, line 17 (12/11/88) + +\ninepoint\noindent +$x_1=x_{10}=\\{good}.x\,.5w$; \ $\\{center\_on}(x_1)$; + +\bugonpage E550, new line after line 23 (8/15/87) +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 6-62 (24960) + {\bf if} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor} +\smallskip\noindent +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 6-141 (29521) + {\bf if\/} $\hbox{\$}<3$: $\hbox{\$}:=3$; {\bf fi endfor} +\smallskip\noindent +*************** + +**** FILE TX:<TEX.DOC>ERRATA.TEX.15, 6-71 (25320) + \\{cap\_bar},\\{cap\_band}$; + +\bye +**** FILE TX:<TEX.DOC>ERRATA.NEW.1, 6-150 (29883) + \\{cap\_bar},\\{cap\_band})$; + +\bugonpage E572, new entry at bottom (12/11/88) + +\eightpoint\noindent +\\{center\_on}, $\underline{473}$, 477, 483, 515, 521, 537--541. + +\bye +*************** + + +######################################################################## + +Additions to CM85.BUG + +@x in BIGOP, the \displaystyle coproduct sign +lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround cap_jut; +@y +lft x11=hround u; x1l-x11=x2l-x12=x22-x2r=hround 1.6cap_jut; +@z + +@x in ROMANL, the letter m +if not monospace: r:=hround(x5+x1)-l; fi % change width for better fit +@y +if not monospace: r:=hround(x5+x1)+l; fi % change width for better fit +@z + +@x a new routine for CMBASE, following change_width +@y +def center_on(expr x) = if not monospace: % change width for symmetric fit + r:=r+2x-w; w:=2x; fi enddef; +@z +@x in SYMBOL, the elementary division operator +x3-.5dot_size=hround(.5w-.5dot_size); w:=r:=2x3; +@y +x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3); +@z +Similarly, whenever the construction "w:=r:=2x*" appears, change it to +"center_on(x*)". This happens in the programs for elementary division operator +(as noted above), large triangle, large inverted triangle, lattice top, +lattice bottom, dagger mark, double dagger mark, club/diamond/heart/spade suit +(all in SYMBOL), plus the diamond operator and universal quantifier in SYM. +The following additional change needs to be made in the programs +for lattice top and lattice bottom: +@x +x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=r-x3; +@y +x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3; +@z + +(I sincerely hope there won't be any more!) + + +######################################################################## + +Differences in CMBASE.MF + +;COMPARISON OF PS:<TEX.CM>CMBASE.MF.11 AND PS:<TEX.CM>CMBASE.MF.12 +;OPTIONS ARE /E /3 + +**** FILE PS:<TEX.CM>CMBASE.MF.11, 1-490 (21001) +def padded expr del_sharp = +**** FILE PS:<TEX.CM>CMBASE.MF.12, 1-490 (21001) +def center_on(expr x) = if not monospace: % change width for symmetric fit + r:=r+2x-w; w:=2x; fi enddef; + +def padded expr del_sharp = +*************** + + +######################################################################## + +Differences in SYM.MF + +;COMPARISON OF PS:<TEX.CM>SYM.MF.8 AND PS:<TEX.CM>SYM.MF.9 +;OPTIONS ARE /E /3 + +**** FILE PS:<TEX.CM>SYM.MF.8, 1-218 (9135) +x2=good.x .5w; w:=r:=2x2; +lft x1=0; x3=w-x1; +**** FILE PS:<TEX.CM>SYM.MF.9, 1-218 (9135) +x2=good.x .5w; center_on(x2); +lft x1=0; x3=w-x1; +*************** + +**** FILE PS:<TEX.CM>SYM.MF.8, 1-354 (14154) +x4=x8=good.x .5w; w:=r:=2x4; x2=w-x6=good.x(x4+a); +y2=y6=.5[y4,y8]=math_axis; y8=good.y(y2+a); +**** FILE PS:<TEX.CM>SYM.MF.9, 1-354 (14158) +x4=x8=good.x .5w; center_on(x4); x2=w-x6=good.x(x4+a); +y2=y6=.5[y4,y8]=math_axis; y8=good.y(y2+a); +*************** + + +######################################################################## + +Differences in SYMBOL.MF + +;COMPARISON OF PS:<TEX.CM>SYMBOL.MF.7 AND PS:<TEX.CM>SYMBOL.MF.8 +;OPTIONS ARE /E /3 + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-47 (1929) +x3-.5dot_size=hround(.5w-.5dot_size); w:=r:=2x3; +y3+.5dot_size=vround(math_spread[.5x_hei+.5dot_size); +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-47 (1929) +x3-.5dot_size=hround(.5w-.5dot_size); center_on(x3); +y3+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]+.5dot_size); +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-500 (21343) +.5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*sqrt48); +draw z1--zle; % stroke +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-500 (21347) +.5[x1,x2]=x3=good.x .5w; center_on(x3); lft x1=hround(.5w-u*sqrt48); +draw z1--z2--z3--cycle; % stroke +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-508 (21625) +.5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*sqrt48); +draw z1--z2--z3--cycle; % stroke +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-508 (21633) +.5[x1,x2]=x3=good.x .5w; center_on(x3); lft x1=hround(.5w-u*sqrt48); +draw z1--z2--z3--cycle; % stroke +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-615 (26376) +x1=x2=good.x .5w; w:=r:=2x1; lft x3=hround u; x4=r-x3; +bot y1=0; y2-y1=x4-x3; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-615 (26388) +x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3; +bot y1=0; y2-y1=x4-x3; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-626 (26691) +x1=x2=good.x .5w; w:=r:=2x1; lft x3=hround u; x4=r-x3; +bot y1=0; y2-y1=x4-x3; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-626 (26707) +x1=x2=good.x .5w; center_on(x1); lft x3=hround u; x4=w-x3; +bot yy2-y1=x4-x3; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-932 (39305) +x1=x2=x3=x4; x1-.5stem=hround(.5w-.5stem); w:=r:=2x1; +x5-.5stem=hround u; x6=w-x5; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-932 (39325) +x1=x2=x3=x4; x1-.5stem=hround(.5w-.5stem); center_on(x1); +x5-.5hround u; x6=w-x5; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-946 (39921) +x1=x2=x3; x1-.5stem=hround(.5w-.5stem); w:=r:=2x1; +x4-.5hround u; x5=w-x4; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-946 (39945) +x1=x2=x3; x1-.5stem=hround(.5w-.5stem); center_on(x1); +x4-.5d u; x5=w-x4; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-979 (41448) +x1=x4=x30=x33=good.x .5w; w:=r:=2x1; +x2=good.x(x1-.5u)-eps; lft x1-rt x10=hround .5pt; lft x12=hround .5u; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-979 (41476) +x1=x4=x30=x33=good.x .5w; center_on(x1); +x2=good.x(x1-.5u)-eps; lft x1-rt x10=hround .5pt; lft x12=hround .5u; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-997 (42416) +x1=x4=good.x .5w; w:=r:=2x1; +lft x2=hround u; x3=w-x2; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-997 (42448) +x1=x4=good.x .5w; center_on(x1); +lft x2=hround u; x3=w-x2; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-1009 (42973) +x1=x5=good.x .5w; w:=r:=2x1; +lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-1009 (43009) +x1=x5=good.x .5w; center_on(x1); +lft x7=hround u; x8=4u; x2+x8=x3+x7=x4+x6=w; +*************** + +**** FILE PS:<TEX.CM>SYMBOL.MF.7, 1-1023 (43554) +x1=x10=good.x .5w; w:=r:=2x1; +x2=good.x(x1-.5u)-eps; lft x1-rt x6=hround .5pt; x5=x6; +**** FILE PS:<TEX.CM>SYMBOL.MF.8, 1-1023 (43594) +x1=x10=good.x .5w; center_on(x1); +x2=good.x(x1-.5u)-eps; lft x1-rt x6=hround .5pt; x5=x6; +*************** + + +######################################################################## + +Differences between TANGLE.WEB 2.8 and 2.9 + +;COMPARISON OF PS:<TEX.WEB>TANGLE.WEB.4 AND PS:<TEX.NEW>TANGLE.WEB.1 +;OPTIONS ARE /E /3 + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-15 (889) +% Here is TeX material that gets inserted after \input webmac +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 1-14 (887) +% Version 2.9 allows nonnumeric macros before their definition (December, 1988). +% Here is TeX material that gets inserted after \input webmac +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-32 (1590) + \centerline{(Version 2.8)} + \vfill} +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 1-33 (1672) + \centerline{(Version 2.9)} + \vfill} +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-61 (2855) +@d banner=='This is TANGLE, Version 2.8' + +@ The program begins with a fairly normal header, made up of pieces that +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 2-26 (2936) +@d banner=='This is TANGLE, Version 2.9' + +@ The program begins with a fairly normal header, made up of pieces that +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-1003 (43139) +if p<>name_ptr then @<Give double-definition error and change |p| to type |t|@> +else @<Enter a new identifier into the table at position |p|@>; +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 7-114 (43215) +if p<>name_ptr then + @<Give double-definition error, if necessary, and change |p| to type |t|@> +else @<Enter a new identifier into the table at position |p|@>; +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-1026 (43934) +@ If a macro has appeared before it was defined, \.{TANGLE} will +still work all right; after all, such behavior is typical of the replacement +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 7-138 (44028) +@ If a nonnumeric macro has appeared before it was defined, \.{TANGLE} will +still work all right; after all, such behavior is typical of the replacement +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-1031 (44245) +so \.{TANGLE} finds it simplest to make a blanket rule that macros should +be defined before they are used. The following routine gives an error message +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 7-143 (44350) +so \.{TANGLE} finds it simplest to make a blanket rule that numeric macros should +be defined before they are used. The following routine gives an error message +*************** + +**** FILE PS:<TEX.WEB>TANGLE.WEB.4, 1-1037 (44544) + begin err_print('! This identifier has already appeared'); +@.This identifier has already...@> +**** FILE PS:<TEX.NEW>TANGLE.WEB.1, 7-149 (44657) + begin if t=numeric then err_print('! This identifier has already appeared'); +@.This identifier has already...@> +*************** + + +######################################################################## + + +[ end of message 011 ] +------- |