[tex-k] Bug-report for the TeXbook: Not all non-primitive control-sequences are defined, ultimately, in terms of the primitive ones.

Paul Vojta vojta at math.berkeley.edu
Tue Dec 13 09:13:16 CET 2022

On Sun, Dec 11, 2022 at 03:27:23PM +0100, ud.usenetcorrespondence at web.de wrote:
> Laurence.Finston at gmx.net wrote.
> > I am quite certain that the use of \def, \edef, \xdef or \let was not meant,
> > but rather that the expansion of the macros was meant.  The passage is a
> > restatement of how macro languages in general work:  tokens are expanded
> > until they can't be expanded anymore and the remaining primitives or "terminal
> > symbols" are then passed to the compiler.
> > Ulrich is correct, primitives are not only control sequences, they are also
> > plain characters, the beginning-of-group and end-of-group tokens, the
> > enter-math-mode and exit-math-mode characters, etc.  It's another way of
> > putting what he otherwise describes as TeX's "mouth" and "stomach" (perhaps
> > not his most appetizing image) --- what other people call  scanning and parsing.


I believe that the sentence in question might have been written more
precisely as:

	All other control sequences are defined, ultimately, such that
	the only control sequences are the primitive ones.

Or, more pedantically, as:

	All other control sequences ultimately expand to a token string
	in which the only control sequences are the primitive ones.

However, I don't believe that a change is warranted.

Chapter 3 is all about control sequences, so "in terms of" is implicitly
restricted to control sequences.  This is supported by (and communicated by)
the last sentence:

	For example, \input is a primitive operation, but \’ and \" are not;
	the latter are defined in terms of an \accent primitive.

Note that (from plain.tex):

	\def\'#1{{\accent19 #1}}
	\def\"#1{{\accent"7F #1}}

so the characters 1, 9, 7, F, etc. occurring in the definitions of \' and \"
are excluded from consideration.


Paul Vojta

More information about the tex-k mailing list.