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(|\|\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) \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 \ for each column that's followed by~|&| into an hbox as follows: \begindisplay |\hbox to |\|{|\|\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 \ 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 \ 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|\;\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 @ 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) ######################################################################## Differences between WEAVE.WEB versions 3.0 and 3.1 ;COMPARISON OF TX:WEAVE-40.WEB.1 AND TX:WEAVE-41.WEB.1 ;OPTIONS ARE /E /3 **** FILE TX: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: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:WEAVE-40.WEB.1, 1-45 (2420) \centerline{(Version 4)} \vfill} **** FILE TX:WEAVE-41.WEB.1, 1-46 (2495) \centerline{(Version 4.1)} \vfill} *************** **** FILE TX: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: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: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: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:WEAVE-40.WEB.1, 1-4461 (175460) out4(" ")("s")("e")("c"); out4("t")("i")("o")("n"); @; **** FILE TX:WEAVE-41.WEB.1, 1-4461 (175508) @; *************** **** FILE TX:WEAVE-40.WEB.1, 1-4472 (175912) out("~"); loop@+ begin out_mod(num(cur_xref)-flag); **** FILE TX:WEAVE-41.WEB.1, 1-4471 (175907) @.\\As@> @.\\Us@> loop@+ begin out_mod(num(cur_xref)-flag); *************** **** FILE TX: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: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:WEBMAC.CM.1 AND TX:WEBMAC.TEX.1 ;OPTIONS ARE /E /3 **** FILE TX:WEBMAC.CM.1, 1-2 (63) \xdef\fmtversion{\fmtversion+WEBMAC1.4} \parskip 0pt % no stretch between paragraphs **** FILE TX:WEBMAC.TEX.1, 1-2 (63) \xdef\fmtversion{\fmtversion+WEBMAC4.0} % identifies current set of macros \parskip 0pt % no stretch between paragraphs *************** **** FILE TX:WEBMAC.CM.1, 1-58 (2559) \def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1 #2.\par}} \def\lapstar{\rlap{*}} **** FILE TX:WEBMAC.TEX.1, 1-58 (2594) \def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} \def\lapstar{\rlap{*}} *************** **** FILE TX: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: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:WEBMAC.CM.1, 1-68 (3169) \def\F{\defin{format}} % format definition **** FILE TX: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: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: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: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: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 ]