[comp.text.tex] TeXhax Digest V90 #66

TeXhax@CS.WASHINGTON.EDU (TeXhax Digest) (10/19/90)

TeXhax Digest    Thursday,  October 18, 1990  Volume 90 : Issue 66

Moderators: Tiina Modisett and Pierre MacKay

%%% The TeXhax digest is brought to you as a service of the TeX Users Group %%%
%%%       in cooperation with the UnixTeX distribution service at the       %%%
%%%                      University of Washington                           %%%

Today's Topics:         

                                TeX syntax
    Updates to WEB sources of TeX, MF, etc; VMS changes files for these.

-----------------------------------------------------------------------------

Date: Mon, 08 Oct 90 14:36:14 EST
From: "Michael Barr, Math Dept, McGill University"
             <INHB@MUSICB.MCGILL.CA>
Subject: TeX syntax
Keywords: TeX, syntax

The enclosed is a modified version of a letter that I sent to Frank
Mittelbach as a response to his article in the most recent Tugboat.  His
reply suggested that I submit it as a letter to Tugboat, but that would
require that find my documentation for using Canada Post.  I thought I
would try it out on TeXhax first.

The proximate cause of my writing this is that I have just spent an
unpleasant four hours hours tracking down a missing number bug in some
macros I am writing that turned out to be a number that had got
inadvertently enclosed in a pair of braces.  This illustrates some of
the problems with TeX syntax.  Sometimes braces are necessary; mostly
they are neutral (an extra pair doesn't hurt anything) and sometimes
they are forbidden.  Error messages are often not at all helpful since
the error is reported long after it happens.  Also, they often don't
give enough of the context, especially when similar code appears several
times in a macro.  Finally, I discovered that \tracingmacros would be a
LOT more useful if the level of tracing could be set.  In fact, the
simplest would be that setting \tracingmacros=n simply reported exactly
n levels of threading.  As it is, there is simply too much reported,
especially when using LaTeX, as I am.

The letter follows:

I read your extremely interesting article in the most recent Tugboat and
I would like to make some comments.  I realize that your concerns are
more global and mine are more local; nonetheless if there is going to be
a new, incompatible version of TeX (and I think that your arguments
for that are compelling) there are certain issues that are perhaps
relatively minor in the greater scheme of things, but are important for
my particular applications.

Here for my particular concerns.  The most important thing I do is to
set commutative diagrams.  To this end I have written a package of
diagram macros which was originally based on the LaTeX picture mode.
The trouble is that to use the \picture mode, you have to give the size
of the picture beforehand.  The reasons appear to be because of the lack
of support in Tex for a picture box in which items can be placed ad lib
while the size of the box is automatically computed.  In order to get
around this I reimplemented the picture mode with code that keeps a
running track of the size of the box being created.  I have actually
done only a small part of it, the part that I need for my macros.
Clearly it should all be done by a TeX primitive, probably a \pbox
inside of which things can be placed as in the TeXbook's \point example,
except that the box dimensions are kept.  Here is a portion of my code:

\newcount\wideness \newcount\leftwidth \newcount\rightwidth
\newcount\highness \newcount\topheight \newcount\botheight

\def\ratchet#1#2{\ifnum#1<#2 \global #1=#2 \fi}

\def\putbox(#1,#2)#3{%
\horsize{\wideness}{#3} \divide\wideness by 2
{\advance\wideness by #1 \ratchet{\rightwidth}{\wideness}}
{\advance\wideness by -#1 \ratchet{\leftwidth}{\wideness}}
\vertsize{\highness}{#3} \divide\highness by 2
{\advance\highness by #2 \ratchet{\topheight}{\highness}}
{\advance\highness by -#2 \ratchet{\botheight}{\highness}}
\put(#1,#2){\makebox(0,0){$#3$}}}

\def\putlbox(#1,#2)#3{%
\horsize{\wideness}{#3}
{\advance\wideness by #1 \ratchet{\rightwidth}{\wideness}}
{\ratchet{\leftwidth}{-#1}}
\vertsize{\highness}{#3} \divide\highness by 2
{\advance\highness by #2 \ratchet{\topheight}{\highness}}
{\advance\highness by -#2 \ratchet{\botheight}{\highness}}
\put(#1,#2){\makebox(0,0)[l]{$#3$}}}

\def\putrbox(#1,#2)#3{%
\horsize{\wideness}{#3}
{\ratchet{\rightwidth}{#1}}
{\advance\wideness by -#1 \ratchet{\leftwidth}{\wideness}}
\vertsize{\highness}{#3} \divide\highness by 2
{\advance\highness by #2 \ratchet{\topheight}{\highness}}
{\advance\highness by -#2 \ratchet{\botheight}{\highness}}
\put(#1,#2){\makebox(0,0)[r]{$#3$}}}

The resultant code works well, but you should bring a book to have
something to do while it is compiling.  This is something that is
begging to be done as a primitive operation.

By the way, I think Lamport made a bad error in having coordinates that
go from bottom to top.  When I got my first computer, I was, as a
mathematician, put off by the fact that the coordinate system in BASIC
goes from top to bottom.  Later I came to realize that for text this is
the appropriate coordinate system.  Lamport copied the mathematician's
coordinate system without realizing that for textual elements it is
simply inappropriate.  He did other questionable things (redefining the
accent primitives inside the tabbing environment, for one), but that
seems to cause me the most trouble.

There are various other things that I think ought to be TeX primitives.
They are simply too important to leave to be implemented in TeX' macro
language.  For example, loops and tests should be primitive.  Loops in
particular do not always work reliably.  There should be support for
optional and variable numbers of parameters.  The LaTeX \@ifnextchar
macro ought to be made a primitive.  I still don't understand how it
works.  More generally, nearly all of the dirty tricks ought to be made
into clean tricks.  Much of the code and discussion is simply
incomprehensible.

I guess I can summarize a lot of what I have said by saying that TeX
macros ought to be more transparent.  It ought to be possible to do
simply anything that is simple to describe, instead of having to fool
TeX into doing it.

One thing that I personally would welcome is a primitive for making
diagonal rules.  The would probably necessitate changing the output
drivers.  For example, I am currently implementing dashed arrrows in my
commutative diagrams.  For horizontal and vertical arrows, this is not
too bad.  For diagonal arrows, I am stymied by the fact that the
smallest size diagonal lines in the LaTeX line fonts are rather large,
much larger than desirable.  It could be done with sprites or Bezier
splines, but that would take an incredible amount of memory.  This could
be done with the more recent large memory models, but is still
inelegant.  Another capability that would make life easier, but would
require a change in the device drivers is to allow opaque boxes that
could be placed on top of other boxes.   I could be wrong, but I have
the impression that some laser printers allow one to directly describe
such opaque elements.

LaTeX requires that you use a special macro to redefine things, as does
AMSTeX.  TeX allows redefinitions freely.  None takes the obviously best
approach of allowing redefinitions, but reporting them as warnings.
This is a simple change that would be easy to implement and cause no
significant incompatibility.

Incidentally, I found your hanging punctuation rather odd looking.  That
is never done in North America and, although I could no doubt get used
to it, it certainly didn't seem to me to be a mark of fine typesetting.
Which proves something about the need to stay flexible, no dougt.

Michael Barr

------------------------------------------------------------------------

Date: Wed, 3 OCT 90 17:49:31 BST
From: TEX@rmcs.cranfield.ac.uk
Subject: Updates to WEB sources of TeX, MF, etc; VMS changes files for these.
Keywords: Aston archive

I have installed the following new and changed files in the Aston TeX
archive.  They are available for NIFTP, using the account PUBLIC,
password PUBLIC, on Uk.Ac.Aston.TeX.

Files, which are all ASCII, may also be retrieved using the TeXserver;
send a message to <TeXserver@Uk.Ac.Aston.TeX>, with the first non-blank
line of your message reading "FILES", and the names of the wanted files
themselves on successive lines of the message.  The TeXserver supports
wildcards, so you could fetch:
    [TEX-ARCHIVE.TEX.V3.VMS]*.*
etc.

NOTE:

The version of METAFONT for VMS [PD V2.1c] in this listing has a
bug which will cause an access violation unless one has a supported
graphics device; even specifying /NODISPLAY doesn't prevent the error.

The MF.CH file in the Aston Archive
   ([TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF.CH)
has now been corrected, and is now at [VMS PD V2.1d] instead of the stated
V2.1c.


(Error history for Computer Modern font family)
[TEX-ARCHIVE.DIGESTS.UPDATES]CM85.BUG                      81  24-SEP-1990 15:34

(Reverse-time ordered listing of entire Labrea archive at 1300BST on 24-Sep)
[TEX-ARCHIVE.DIGESTS.UPDATES]LABREA-RT.900924-1200Z       501  24-SEP-1990 16:05
(Ditto, but in alphabetical order)
[TEX-ARCHIVE.DIGESTS.UPDATES]LABREA.900924-1200Z          501  24-SEP-1990 15:48

(Error history of METAFONT)
[TEX-ARCHIVE.DIGESTS.UPDATES]MF84.BUG                     160  24-SEP-1990 15:38

(Error history of TeX)
[TEX-ARCHIVE.DIGESTS.UPDATES]TEX82.BUG                    598  24-SEP-1990 15:46

(Source of The \MF book: this is copyright, and may not be TeX'ed)
[TEX-ARCHIVE.METAFONT.DOC]MFBOOK.TEX                     1891  24-SEP-1990 14:11

(Canonical WEB source of METAFONT V2.7)
[TEX-ARCHIVE.METAFONT.MFDIR.V2]MF.WEB                    1856  24-SEP-1990 14:03

(Files for performing the TRAP test on \MF\ V2.7)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAP.FOT                4  24-SEP-1990 15:10
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAP.LOG              250  24-SEP-1990 15:10
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAP.MF                24  24-SEP-1990 15:17
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAP.PL                22  24-SEP-1990 15:18
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAP.TYP               10  24-SEP-1990 15:18
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAPIN.LOG             10  24-SEP-1990 15:19

(Description of the TRAP test)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.TRAP]TRAPMAN.TEX            37  24-SEP-1990 15:19

(Files for building \MF\ V2.7 under VAX/VMS...)

(Command file to compile & link \MF\ itself)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]COMPILE_MF.COM           1   3-SEP-1990 10:49
(MMS Description files for automating the building of \MF, GFware, etc)
(Available in two versions, for those that use logical names of the   )
(form TEX$INPUTS and TEX_INPUTS, respectively)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]DESCRIP.MMS$MF          54  28-SEP-1990 17:59
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]DESCRIP.MMS_MF          54  28-SEP-1990 18:01
(File used by \MF\ at run-time to locate graphics library appropriate )
(to the graphics output device: not needed if you use the DESCRIP.MMS )
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]GLIB_INDEX.DAT           2   3-SEP-1990 10:50
(Graphics library to support the GraphOn Model 140 terminal)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]GO140.CH                 0   3-SEP-1990 10:50
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]GO140.WEB               35   3-SEP-1990 10:50
(Linker options file required when linking \MF\ and the libraries for )
(the graphics output device: not needed if you use the DESCRIP.MMS    )
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]GRLIB.OPT                1   3-SEP-1990 10:52
(mode_defs in use at RMCS [and many more besides])
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]LOCAL.MF                46  28-SEP-1990 18:20
(Command procedure to build a graphics library)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MAKELIB.COM              1   3-SEP-1990 10:52
(Machine-code versions of some of \MF's inner loop routines; 30% speedup)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF-EXTRA.MAR            16   3-SEP-1990 10:52
(Change file [for WEBmerge] to make TRAPpable version of \MF)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF-TRAP.CH              13  25-SEP-1990 17:27
(Change file for \MF\ under VMS: use Pascal v4.0 or later)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF.CH                  349  28-SEP-1990 18:15
(Command-definition files for the VMS verbs MF and INIMF; two versions)
(for sites using TEX$INPUTS or TEX_INPUTS logicals)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF.CLD$                 21  26-SEP-1990 18:01
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]MF.CLD_                 21  26-SEP-1990 18:01
(Graphics library to support Visual Technology's Model 550 terminal)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]VIS550.CH                0  28-SEP-1990 18:14
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]VIS550.WEB              49  28-SEP-1990 18:14
(Description of this implementation)
[TEX-ARCHIVE.METAFONT.MFDIR.V2.VMS]VMS_MF_NOTES.TXT        18  26-SEP-1990 18:54

(New version of macros for MFT setting of Computer Modern font programs)
[TEX-ARCHIVE.METAFONT.TEXFILES]CMBASE.MFT                   8  24-SEP-1990 12:15

(Updates and extensions to error history of TeX)
[TEX-ARCHIVE.TEX.DOC]ERRATA.FIVE                           87  24-SEP-1990 15:35
[TEX-ARCHIVE.TEX.DOC]ERRATA.TEX                            29  24-SEP-1990 15:36
[TEX-ARCHIVE.TEX.DOC]ERRORLOG.TEX                         246  24-SEP-1990 15:38

(Source of The \TeX book: this is copyright, and may not be TeX'ed)
[TEX-ARCHIVE.TEX.DOC]TEXBOOK.TEX                         2779  24-SEP-1990 12:32

(Updated Plain.TeX; required by TeX v3.1 when building formats)
[TEX-ARCHIVE.TEX.V3]PLAIN.TEX                              89  24-SEP-1990 12:15

(Canonical WEB source of TeX v3.1)
[TEX-ARCHIVE.TEX.V3]TEX.WEB                              2073  24-SEP-1990 12:29

(Files to perform the TRIP test on TeX v3.1)
[TEX-ARCHIVE.TEX.V3.TRIP]TRIP.FOT                           5  24-SEP-1990 13:45
[TEX-ARCHIVE.TEX.V3.TRIP]TRIP.LOG                         378  24-SEP-1990 13:45
[TEX-ARCHIVE.TEX.V3.TRIP]TRIP.PL                           36  24-SEP-1990 13:44
[TEX-ARCHIVE.TEX.V3.TRIP]TRIP.TEX                          46  24-SEP-1990 13:57
[TEX-ARCHIVE.TEX.V3.TRIP]TRIP.TYP                          39  24-SEP-1990 13:59
[TEX-ARCHIVE.TEX.V3.TRIP]TRIPIN.LOG                        27  24-SEP-1990 14:01
(Description of the TRIP test)
[TEX-ARCHIVE.TEX.V3.TRIP]TRIPMAN.TEX                       39  24-SEP-1990 14:02

(Files for building TeX v3.1 under VAX/VMS...)

(Command procedure to build [just] TeX itself)
[TEX-ARCHIVE.TEX.V3.VMS]COMPILE_TEX.COM                     1   3-SEP-1990 10:48
(MMS Description files for automating the building of TeX, WEBware, etc)
(Available in two versions, for those that use logical names of the   )
(form TEX$INPUTS and TEX_INPUTS, respectively)
[TEX-ARCHIVE.TEX.V3.VMS]DESCRIP.MMS$TEX                    61  26-SEP-1990 17:58
[TEX-ARCHIVE.TEX.V3.VMS]DESCRIP.MMS_TEX                    61  26-SEP-1990 18:00
(Change file [for WEBmerge] to build a TRIPpable version of TeX v3.1)
[TEX-ARCHIVE.TEX.V3.VMS]TEX-TRIP.CH                         9  25-SEP-1990 17:38
(Change file for TeX v3.1 under VMS; use Pascal v4.0 or later)
[TEX-ARCHIVE.TEX.V3.VMS]TEX.CH                            333  28-SEP-1990 18:07
(Command-definition file for new DCL verbs TEX, LATEX, SLITEX, etc)
[TEX-ARCHIVE.TEX.V3.VMS]TEX.CLD$                           34  26-SEP-1990 18:01
[TEX-ARCHIVE.TEX.V3.VMS]TEX.CLD_                           34  26-SEP-1990 18:02
(Description of this implementation of TeX)
[TEX-ARCHIVE.TEX.V3.VMS]VMS_TEX_NOTES.TXT                  13  26-SEP-1990 18:51

(Updated macros for use by WEAVE/TeX)
[TEX-ARCHIVE.TEX.V3]WEBMAC.TEX                             21  24-SEP-1990 12:16

(New version of DVItype [v3.4]...)
[TEX-ARCHIVE.TOOLS.DVIWARE.NEW]DVITYPE.WEB                209  24-SEP-1990 18:19
(Change file for the above under VMS)
[TEX-ARCHIVE.TOOLS.DVIWARE.NEW.VMS]DVITYPE.CH              28  25-SEP-1990 17:15

(New versions of GFtoDVI [v3.0] and GFtoPK [v2.3])
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]GFTODVI.WEB               377  24-SEP-1990 12:18
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]GFTOPK.WEB                187  24-SEP-1990 12:23

(New version of MFT [v2.0; no VMS changes for this yet] and its macros)
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]MFT.WEB                   152  24-SEP-1990 12:17
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]PLAIN.MFT                   4  24-SEP-1990 12:15

(New versions of PLtoTF [v3.3] and TFtoPL [v3.1])
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]PLTOTF.WEB                197  24-SEP-1990 18:19
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]TFTOPL.WEB                122  24-SEP-1990 18:26

(New versions of VFtoVP and VPtoVF [both v1.2; no VMS changes for these yet])
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]VFTOVP.WEB                181  24-SEP-1990 18:27
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW]VPTOVF.WEB                249  24-SEP-1990 18:31

(Change files for the above utilities)
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW.VMS]GFTODVI.CH             30  25-SEP-1990 17:25
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW.VMS]GFTOPK.CH              26  25-SEP-1990 17:26
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW.VMS]PLTOTF.CH              11  25-SEP-1990 17:15
[TEX-ARCHIVE.TOOLS.FONTWARE.NEW.VMS]TFTOPL.CH              12  25-SEP-1990 17:16

(Updated manual for using WEB)
[TEX-ARCHIVE.WEB.DOC]WEBMAN.TEX                           179  24-SEP-1990 15:29

(New versions of Tangle [v4.1] and Weave [v4.2])
[TEX-ARCHIVE.WEB.NEW]TANGLE.WEB                           263  24-SEP-1990 15:19
[TEX-ARCHIVE.WEB.NEW]WEAVE.WEB                            377  24-SEP-1990 15:20

(Changes for the above under VMS)
[TEX-ARCHIVE.WEB.NEW.VMS]TANGLE.CH                         26  25-SEP-1990 17:15
[TEX-ARCHIVE.WEB.NEW.VMS]WEAVE.CH                          31  25-SEP-1990 17:16

Total of 73 files, 15760 blocks


Any problems with access, or with using the VMS changes, please feel
free to contact me.
                               Brian {Hamilton Kelly}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ JANET:     tex@uk.ac.cranfield.rmcs                                     +
+ BITNET:    tex%uk.ac.cranfield.rmcs@ac.uk                               +
+ INTERNET:  tex%uk.ac.cranfield.rmcs@nsfnet-relay.ac.uk                  +
+ UUCP:      ...!mcvax!rmcs.cranfield.ac.uk!tex                           +
+         OR ...!ukc!rmcs.cranfield.ac.uk!tex                             +
+ Smail:     School of Electrical Engineering & Science, Royal Military   +
+            College of Science, Shrivenham, SWINDON SN6 8LA, U.K.        +
+ Phone:     Swindon (0793) 785252 (UK), +44-793-785252 (International)   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-----------------------------------------------------------------------

%%% Further information about the TeXhax Digest, the TeX
%%% Users Group, and the latest software versions is available
%%% in every tenth issue of the TeXhax Digest.
%%%
%%% Concerning subscriptions, address changes, unsubscribing:
%%%
%%%  BITNET: send a one-line mail message to LISTSERV@xxx
%%%         SUBSCRIBE TEX-L <your name>    % to subscribe
%%%      or UNSUBSCRIBE TEX-L
%%%
%%% Internet: send a similar one line mail message to
%%%           TeXhax-request@cs.washington.edu
%%% JANET users may choose to use
%%%           texhax-request@uk.ac.nsf
%%% All submissions to: TeXhax@cs.washington.edu
%%%
%%% Back issues available for FTPing as:
%%%          machine:              directory:  filename:
%%%   JUNE.CS.WASHINGTON.EDU          TeXhax/TeXhaxyy.nnn
%%%              yy = last two digits of current year
%%%                       nnn = issue number
%%%
%%%\bye
%%%

End of TeXhax Digest
**************************
-------