[texhax] Is redefining primitives a good idea?

Michael Barr 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.

Michael Barr

An ostrich is more intelligent than the average congressman.  The
ostrich does not bury its head in the sand.

More information about the texhax mailing list