Date:     1 Apr 90                              Message No:     025
 
To:       TeX implementors and distributors
 
From:     Barbara Beeton
 
Subject:  TeX memory capacity; new errata; MF 2.0 changes; WEAVE 3.1
 
 
Now that implementation of TeX 3.0 is underway, I'd like to plan to
publish a new edition of the memory capacity charts that appeared in
TUGboat 7#1 (pp 67-70).  I would like to include all implementations
of TeX 3.0 that have passed the TRIP test.  The next issue is probably
too early to have complete information, so I will ask now for you to
send me the block of code from your change file (or the equivalent)
giving the memory values so that it can be included in the fall issue.
Please make sure you include the following: machine and operating
system for which this implementation is intended, version distributed,
and form of files distributed (e.g., web, exec, exec only).  The
editorial deadline for the fall issue is September 11.
 
One area of memory that is coming under increasing strain is the hash
size.  Syntheses of LaTeX and AMS-TeX must resort to modular design to
avoid overflowing the allowable number of control sequence names.
TEX.WEB for 3.0 still only provides 2100 entries of hash_size (although
the comment that this is generous has been removed).  I don't know of
any actual implementation that provides fewer than 2500 entries, and
most implementations, i suspect, provide even more.  (At the AMS, we
use hash_size=5000 and hash_prime=4253.)  I would like to encourage
all implementors to provide a large enough hash_size (and other memory
values) to accommodate reasonably straightforward use of LaTeX on
book-size documents.  I will ask Frank Mittelbach and Rainer Schoepf
for their recommendations.
 
Some macro packages like PicTeX simply need all the memory they can get.
Most C versions have been extended to provide main memory beyond 64K,
and some implementations for other systems as well.  If you have such
a version, or know about one, please send me whatever information you
have.  (This information will also be included in the memory chart
mentioned earlier.)  In particular, i have received an inquiry asking
whether there are any huge implementations for the PC.
 
TeX 3.0 contains new features for multilingual hyphenation, but it is
likely that the memory allocations for patterns (trie_size, trie_op_size,
others?) will have to be increased.  (I have also received an inquiry
on this topic.)  Since i have no experience with multilingual TeX, I
would appreciate receiving relevant information from anyone who does.
 
Peter Breitenlohner (see question in message #24) has informed me that
he received a reply from Don Knuth confirming that his numbers are right.
The correction has been made in the most recent trip.log, and probably
trap.log as well, though Peter had not seen that yet.
 
Enclosed is the full listing of the latest ERRATA.TEX from labrea.
Don decided to start a new file after publication of the last errata
list with TUGboat 10 #3; that instalment corresponds to ERRATA.FIV.
Note that, unlike previous errata listings, this one contains the
instruction (represented by the caret, ^ ) to place a term in the index.
This probably won't do anything more than put spurious entries into the
index file that's generated when you run the errata through TeX, but it
was a surprise to me, so I thought it worth mentioning.  I did make one
change, namely to put a % in front of the ^L page markers that appear
above every volume break.
 
The second enclosure consists of the latest additions to MF84.BUG.
Please note that number 553 reported in message 23 has been superseded.
The change first reported is actually in the new MF.WEB file, so it is
not lost, just apparently considered by Don to be a "cosmetic change".
 
Two more enclosures contain changes to bring WEAVE.WEB to version 3.1,
and the changes to WEBMAC.TEX to support the new WEAVE.
 
The differences between version 2.0 of MF.WEB and the last one reported
to you, version 1.7, will be sent separately in 4 parts.  (I am keeping
the files to under 30Kb as requested by Wayne Sullivan.)
 
 
########################################################################
 
% Bugs (sigh) in Computers \& Typesetting --- the most recent errata
 
\input manmac
\font\sltt=cmsltt10
\font\niness=cmss9
\font\ninessi=cmssi9
\proofmodefalse
\raggedbottom
\output{\hsize=29pc \onepageout{\unvbox255\kern-\dimen@ \vfil}}
 
\def\today{\number\day\
  \ifcase\month\or
  Jan\or Feb\or Mar\or Apr\or May\or Jun\or
  Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi
  \ \number\year}
 
\def\cutpar{{\parfillskip=0pt\par}}
 
\def\rhead{Bugs in {\tensl Computers \& Typesetting as of \today}}
\def\bugonpage#1(#2) \par{\bigbreak\tenpoint
  \hrule width\hsize
  \line{\lower3.5pt\vbox to13pt{}Page #1\hfil(#2)}\hrule width\hsize
  \nobreak\medskip}
\def\buginvol#1(#2) \par{\bigbreak\penalty-1000\tenpoint
  \hrule width\hsize
  \line{\lower3.5pt\vbox to13pt{}Volume #1\hfil(#2)}\hrule width\hsize
  \nobreak\medskip}
\def\slMF{{\manual 89:;}\-{\manual <=>:}} % slant the logo
\def\0{\raise.7ex\hbox{$\scriptstyle\#$}}
\newcount\nn
\newdimen\nsize \newdimen\msize \newdimen\ninept \ninept=9pt
\newbox\eqbox \setbox\eqbox=\hbox{\kern2pt\eightrm=\kern2pt}
 
\tenpoint
\noindent This is a list of all corrections made to {\sl Computers \&
Typesetting}, Volumes A,~C, and E\null, since 30 September 1989 (when
the revisions for \TeX\ Version 3.0 and \MF\ Version 2.0 were made).
Corrections made to the softcover version of {\sl The \TeX book\/} are
the same as corrections to Volume~A\null. Corrections to the softcover
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,
have been made to Volumes B~and~D because of the upgrades to \TeX\ and
\MF\null.  Readers who need up-to-date information on the \TeX\ and
\MF\ programs should refer to the |WEB| source files until new
printings of Volumes B~and~D are issued. \looseness=-1
 
%
% volume A
 
\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)
 
\ninepoint
Commands like |\mathchardef\alpha="010B| are used in
Appendix~B to define\cutpar
 
\bugonpage A171, lines 24--26 (3/13/90)
 
\ninepoint\noindent
formula produces a result exactly equivalent to
`|\left(|\<subformula>|\right)|', when the \<subformula> 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)
 
\ninepoint\noindent
line if you insert
`^|\noalign||{|^|\break||}|'
after the |\cr| for that line. You can prohibit {\sl all\/} breaks
in an |\eqalignno| if you set ^|\interdisplaylinepenalty||=10000|; or you
can enclose the whole works in a ^|\vbox|:
 
\bugonpage A233, bottom 9 lines, and top three on next page (12/2/89)
 
\danger The |\+| macro in Appendix~B works
by putting the \<text> for each column that's followed by~|&|
into an hbox as follows:
\begindisplay
|\hbox to |\<column width>|{|\<text>|\hss}|
\enddisplay
The ^|\hss| means that the text is normally flush left, and that it can
extend to the right of its box. Since |\hfill| is ``more infinite'' than
|\hss| in its ability to stretch, it has the effect of right-justifying or
centering as stated above. Note that |\hfill| doesn't shrink, but |\hss|
does; if the text doesn't fit in its column, it will stick out at the right.
You could cancel the shrinkability of |\hss| by adding ^|\hfilneg|; then
an oversize text would produce an overfull box.
You could also center some text by putting `|\hss|' before it and just
`|&|' after it; in that case the text would be allowed to extend to the
left and right of its column.
 The last column of a |\+|~line (i.e., the column entry that is
followed by |\cr|) is treated differently: The
\<text> is simply put into an hbox with its natural~width.\looseness=-1
 
\bugonpage A254, line 5 from the bottom (10/5/89)
 
\ninepoint\noindent
|\vsize| hasn't changed, and if all insertions have been
held in place, the same page break\cutpar
 
\bugonpage A286, lines 30--32 (3/13/90)
 
\ninepoint\noindent
reading and expanding this \cstok{par}
token, \TeX\ will see the \<vertical command> 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)
 
\ninepoint\noindent
streams used by ^|\read| and ^|\write|, to math
^{families} used by ^|\fam|, to sets of hyphenation rules used by
^|\language|, and to insertions (which require
^|\box|, ^|\count|, ^|\dimen|, and ^|\skip| registers all having the
same number).
 
\bugonpage A346, line 20 from the bottom (12/3/89)
 
\ninepoint\noindent
manent value. These macros use registers
|\count10| through |\count20| to hold the\cutpar
 
\bugonpage A346, lines 8--13 from the bottom (12/3/89)
 
\ninepoint\noindent
number was allocated. The inside story of how allocation is actually performed
should be irrelevant when the allocation macros are used at a higher level;
you mustn't assume that |plain.tex| really does allocation in any
particular way.
\beginlines
|\count10=22 % this counter allocates \count registers 23, 24, 25, ...|
\endgroup
 
\bugonpage A347, lines 2--5 (12/3/89)
 
\ninepoint{\parindent=0pt
|\count19=0  % this counter allocates language codes 1, 2, 3, ...|\parbreak
|\count20=255 % this counter allocates insertions 254, 253, 252, ...|\parbreak
|\countdef\insc@unt=20 % nickname for the insertion counter|\parbreak
|\countdef\allocationnumber=21 % the most recent allocation|\parbreak
|\countdef|^|\m@ne||=22 \m@ne=-1 % a handy constant|\par}
 
\bugonpage A347, new line after former line 17 (12/3/89)
 
\ninepoint\noindent
|\outer\def|^|\newlanguage||{\alloc@9\language\chardef\@cclvi}|
 
\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)
 
\ninepoint\noindent
|  \noindent{\bf#1.\enspace}{\sl#2\par}%|
 
\bugonpage A363, lines 8--9 from the bottom (12/8/89)
 
{\ninepoint\parindent=0pt
|  \if@mid \dimen@=\ht0 \advance\dimen@ by\dp\z@ |%
 |\advance\dimen@ by12\p@|\parbreak%
|    \advance\dimen@ by\pagetotal \advance\dimen@ by-\pageshrink|
\par}
 
\bugonpage A375, line 27 (10/30/89)
 
\ninepoint\noindent
depending on whether or not |\t|~contains
an asterisk. \ (Do you see why?) \ And here's\cutpar
 
\bugonpage A393, lines 3--5 from the bottom (12/3/89)
 
\ninepoint
|\hskip-.17em plus-3em minus.11em|\par
|\vadjust{}\penalty10000|\par
|\leaders\copy\dbox\hskip3.3\wd\dbox plus1fil minus.3\wd\dbox|
 
\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)
 
\def\\#1{$_{\kern\scriptspace#1}$}
\ninepoint\indent
{\qquad\tt\\0h\\0e\\0n\\5a\\0t\\0 \\1n\\0a\\0 \\0n\\2a\\0t\\0
  \\1t\\0i\\0o\\0 \\2i\\0o\\0 \\0o\\2n\\0}
 
\bugonpage A450, line 14 (12/3/89)
 
\ninepoint
{\tt.\\0h\\0y$_3$p\\0h\\0e\\2n\\5a\\4t\\2i\\0o\\2n\\0.}
 
\bugonpage A450, lines 19 and 20 (12/3/89)
 
\ninepoint\vskip-10pt
\begindisplay
\tt\\0o\\2n\\0
\\0o\\0n\\1c\\0
\\1c\\0a\\0
\\1n\\0a\\0
\\0n\\2a\\0t\\0
\\1t\\0i\\0o\\0
\\2i\\0o\\0
\\0o\\2n\\0
\enddisplay
and this yields `{\tt\\0c\\0o\\2n\\1c\\0a\\0t\\0e\\1n\\2a\\1t\\2i\\0o\\2n\\0}',
i.e., `|con-cate-na-tion|'.
 
\bugonpage A455, last lines before the quotes (11/30/89)
 
\ninepoint\noindent
sit yourself (even in restricted horizontal mode) by saying
^|\setlanguage|\<number>;\break
 this changes the current language but it
does not change |\language|. Each what-\break
sit records the current
|\lefthyphenmin| and |\righthyphenmin|.
 
\bugonpage A467, right column (12/3/89)
 
\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
|\hfilneg|, 72, 100, 233, 283, 285, 290, 397.
 
\bugonpage A468, right column (12/2/89)
 
\eightpoint
|\interdisplaylinepenalty|, {\it193}, 349, 362.
 
\bugonpage A469, left column (12/3/89)
 
\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
|\language| (hyphenation method), 273, 346, $\underline{455}$.
 
\bugonpage A469, right column (10/30/89)
 
\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
|\lefthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
 
\bugonpage A472, left column (12/3/89)
 
\eightpoint
|\newlanguage|, 346, $\underline{347}$.
 
\bugonpage A476, left column (10/30/89)
 
\eightpoint\indent\hbox to0pt{\hss\lower1pt\hbox{*}}%
|\righthyphenmin|, 273, {\it364}, $\underline{454}$, 455.
 
\bugonpage A479, new entry (3/13/90)
 
\eightpoint
|\topglue|, {\it340}, $\underline{352}$.
 
\bugonpage A480, right column (3/13/90)
 
\eightpoint
|\vglue|, $\underline{352}$, {\it408}.
 
\bugonpage A483, the Providence lines (10/8/89)
 
\noindent[Change the first one to
\begintt
Providence RI 02940\kern.05em-9506, USA.
\endtt
Then the second one will be
\begindisplay
Providence RI 02940\kern.05em-9506, USA.
\enddisplay
The second line will also appear on page C361.]
 
%
% volume B
\hsize=35pc
\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\to{\mathrel{.\,.}} % double dot, used only in math mode
 
 
%
% volume C
\hsize=29pc
\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
 
\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)
 
\ninepoint\noindent
| define_whole_vertical_blacker_pixels(vair,slab,| $\cdots$ |);|
 
\bugonpage C315, line 9 from the bottom (1/2/90)
 
\ninepoint\noindent
units of printer's points):
 
\bugonpage C337, line 4 from the bottom (1/7/90)
 
\ninepoint\noindent
|\def\startfont{\font\testfont=\fontname \spaceskip=0pt|
 
%
% Volume D
\hsize=35pc
\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\to{\mathrel{.\,.}} % double dot, used only in math mode
 
%
% volume E
\hsize=29pc
\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
 
%
\bye
 
 
########################################################################
 
Additions to MF84.BUG as of 25 Mar 90
 
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
  @<Abandon edges command because there's no variable@>
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 @<Augment some edges by others@>
@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
  @<Abandon edges command because there's no variable@>
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 @<Augment some edges by others@>
@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)
 
 
########################################################################
 
Differences between WEAVE.WEB versions 3.0 and 3.1
 
;COMPARISON OF TX:<TEX.TEX>WEAVE-40.WEB.1 AND TX:<TEX.NEW>WEAVE-41.WEB.1
;OPTIONS ARE    /E /3
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-22 (1401)
% Version 3, for Sewell's book, fixed a long-line bug in input_ln (March, 1989).
% Version 3.1 fixed a bug for programs with only one module (April, 1989).
% Version 4 was major change to allow 8-bit input (September, 1989).
 
% Here is TeX material that gets inserted after \input webmac
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-22 (1401)
% Version 3, for Sewell's book, fixed long-line bug in input_ln (March, 1989).
% Version 3.1 fixed a bug for programs with only one module (April, 1989).
% Version 4 was major change to allow 8-bit input (September, 1989).
% Version 4.1, for Breitenlohner, avoids English-only output (March, 1990).
 
% Here is TeX material that gets inserted after \input webmac
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-45 (2420)
  \centerline{(Version 4)}
  \vfill}
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-46 (2495)
  \centerline{(Version 4.1)}
  \vfill}
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-72 (3524)
@d banner=='This is WEAVE, Version 4'
 
@ The program begins with a fairly normal header, made up of pieces that
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-73 (3601)
@d banner=='This is WEAVE, Version 4.1'
 
@ The program begins with a fairly normal header, made up of pieces that
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-4450 (175079)
`\.{\\A\ section 101.}'; `\.{\\U\ sections 370 and 1009.}';
`\.{\\A\ sections 8, 27\\*, and 64.}'.
 
@p procedure footnote(@!flag:sixteen_bits); {outputs module cross-references}
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-4451 (175158)
`\.{\\A101.}'; `\.{\\Us370\ET1009.}'; `\.{\\As8, 27\\*, 51\ETs64.}'.
 
@p procedure footnote(@!flag:sixteen_bits); {outputs module cross-references}
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-4461 (175460)
out4(" ")("s")("e")("c"); out4("t")("i")("o")("n");
@<Output all the module numbers on the reference list |cur_xref|@>;
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-4461 (175508)
@<Output all the module numbers on the reference list |cur_xref|@>;
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-4472 (175912)
out("~");
loop@+  begin out_mod(num(cur_xref)-flag);
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-4471 (175907)
@.\\As@>
@.\\Us@>
loop@+  begin out_mod(num(cur_xref)-flag);
***************
 
**** FILE TX:<TEX.TEX>WEAVE-40.WEB.1, 1-4476 (176085)
  if (num(xlink(cur_xref))>flag)or(cur_xref<>xlink(q)) then out(",");
    {not the last of two}
  out(" ");
  if num(xlink(cur_xref))<=flag then out4("a")("n")("d")("~"); {the last}
  end;
**** FILE TX:<TEX.NEW>WEAVE-41.WEB.1, 1-4476 (176089)
  if num(xlink(cur_xref))>flag then out2(",")(" ") {not the last}
  else begin out3("\")("E")("T"); {the last}
@.\\ET@>
    if cur_xref<>xlink(q) then out("s"); {the last of more than two}
@.\\ETs@>
    end;
  end;
***************
 
 
########################################################################
 
Differences between old WEBMAC.TEX and new
 
;COMPARISON OF TX:<TEX82>WEBMAC.CM.1 AND TX:<BNB.WORK>WEBMAC.TEX.1
;OPTIONS ARE    /E /3
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-2 (63)
\xdef\fmtversion{\fmtversion+WEBMAC1.4}
\parskip 0pt % no stretch between paragraphs
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-2 (63)
\xdef\fmtversion{\fmtversion+WEBMAC4.0} % identifies current set of macros
\parskip 0pt % no stretch between paragraphs
***************
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-58 (2559)
\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1 #2.\par}}
\def\lapstar{\rlap{*}}
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-58 (2594)
\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}
\def\lapstar{\rlap{*}}
***************
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-62 (2808)
\def\A{\note{See also}} % cross-reference for multiply defined section names
\def\B{\ma@\{}}egin olled comment
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-62 (2843)
\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
***************
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-68 (3169)
\def\F{\defin{format}} % format definition
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-69 (3282)
\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
***************
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-96 (4553)
\def\U{\note{This code is used in}} % cross-reference for uses of sections
\let\V=\lor % logical or
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-99 (4804)
\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
***************
 
**** FILE TX:<TEX82>WEBMAC.CM.1, 1-186 (9074)
  \def\U{\note{Used in}} % cross-reference for uses of sections
  \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry}
**** FILE TX:<BNB.WORK>WEBMAC.TEX.1, 1-190 (9406)
  \def\U{\note{Used in section}} % crossref for use of a section
  \def\Us{{Used in sections}} % cro for uses on
  \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry}
***************
 
 
########################################################################
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Character code reference
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%                       Upper case letters: ABCDEFGHIJKLMNOPQRSTUVWXYZ
%                       Lower case letters: abcdefghijklmnopqrstuvwxyz
%                                   Digits: 0123456789
% Square, curly, angle braces, parentheses: [] {} <> ()
%           Backslash, slash, vertical bar: \ / |
%                              Punctuation: . ? ! , : ;
%          Underscore, hyphen, equals sign: _ - =
%                Quotes--right left double: ' ` "
%"at", "number" "dollar", "percent", "and": @ # $ % &
%           "hat", "star", "plus", "tilde": ^ * + ~
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
[ end of message 025 ]