[texhax] Is redefining primitives a good idea?
barr at math.mcgill.ca
Tue Apr 24 15:04:42 CEST 2012
IMHO, redefining primitives is a kind of vandalism, that the AMS (and
AFAIK only the AMS) does all too often. They "undefined" \over and its
relatives (\overwithdelimiters,...) on the grounds (I got this explanation
from the late Michael Downes) that \over as defined caused the engine to
overwork because it could not know which of the four possible font sizes
to use until it was finished, hence had to essentially use \mathchoice
internally. This may have been a reason in 1990, but is no longer a
reason today. A book I published then took about to tex; now it compiles
in less than a minute.
I was helping a colleague prepare a book for AMS publication and he had
used \over over and over. Eventually, by delving deep into amstex, I
discovered that they had \let\over something else and used that something
else to define \frac. So what this was was discipline for the use of some
future program that would replace tex. Some of those future programs now
exist; I wonder whether they have eliminated \over.
Another thing the AMS has done is outlaw the use of the plain \matrix and
its relatives. In a book I published in 2002, with the AMS, there were
dozens of instances of \pmatrix and the book wouldn't compile under
I just copied Knuth's original definition into my file. But this cannot
be done with primitives.
Bottom line: it is a terrible thing to redefine or undefine primitives.
An ostrich is more intelligent than the average congressman. The
ostrich does not bury its head in the sand.
More information about the texhax