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

Doug McKenna doug at mathemaesthetics.com
Wed Dec 14 18:30:37 CET 2022

I agree I was missing something, and as Heiko corrected, whatever is between \csname and \endcsname, even if empty, is equivalent to a \relax.

But ... TeX's source code, contains the following:

@<Basic printing...@>=
procedure print_cs(@!p:integer); {prints a purported control sequence}
begin if p<hash_base then {single character}
  if p>=single_base then
    if p=null_cs then
      begin print_esc("csname"); print_esc("endcsname"); print_char(" ");

and similar tests elsewhere.

In other words, the control sequence |null_cs| with no characters to its name is always output to the world as the two primitive CSes, "\csname\endcsname".  So I guess the pertinent question is, can |null_cs|'s meaning be redefined?  If not, isn't it "a primitive" CS?

Hence my confusion and the dangers of concluding that all the wording in The TeXbook can easily be made self-consistent without a whole lot of lengthy qualifications that likely would likely affect the book's pagination.

Doug McKenna

More information about the tex-k mailing list.