TeX - ! Extra alignment tab has been changed to \cr

Doug McKenna doug at mathemaesthetics.com
Tue Jul 9 01:10:13 CEST 2019


Carlos - 

>| For example, if you were to ask me right off the bat, whose 
>| implementations and by drawing a comparison among the 
>| \settabs of Plain and the \tabular of LaTeX makes any sense, 
>| any sense at all, it would be the former. Not because is simply 
>| Knuth's, but simply because is vanilla, in which the complexity 
>| added by further macros that later became LaTeX, do not disturb 
>| the engine. 

I don't know much about the innards of various macro packages, but the whole point of the TeX language is that such packages are essentially language extensions. Although such packages can have their own level of testing against inconsistencies and bad input, it's not easy for a high-level macro to know when the TeX interpreter has reported a low-level error. The point being that if a higher-level set of macros (in LaTeX or plain or opmac or wherever) is allowing an inconsistency that is not being caught at that high level before presenting whatever state to the low-level, pedal-to-the-metal TeX interpreter, the low-level error message is not going to be as helpful as a user would want. 

But it is not the low-level TeX interpreter's responsibility to fix the situation (i.e., a bug), it is the higher-level macro library's responsibility. (In a perfect world, that is.) 

>| I never ventured out to ask or read or research or further look 
>| what computer had Knuth used for writing TeX, but the 
>| implementation of a \cr obviously calls for a Macintosh. 
>| Perhaps is just a mere coincidence, but what a coincidence 
>| that is, that the naming would match such convention on that 
>| very particular system! 

It is true that Classic Macintosh files ended lines with a single carriage return character, instead of the historical CR-LF sequence from the teletype days, and instead of using a linefeed character as became the standard in Unix systems. They're now all kind of merged into the single idea of a "newline" ('\n') in computer code. 

But Knuth wrote much of TeX long before there was a Macintosh (and a usable Macintosh didn't happen until 1986 or later, depending on one's definition of "usable"). He and his colleagues were undoubtedly using mainframes and/or minicomputers at the Stanford Computer Science Dept. Recall that they actually hacked the Pascal compiler at the time so as to be able to record TeX subroutine call usage statistics. I'm not sure how possible that would have been on a Mac at that time, because users didn't have access to the Pascal compiler's source (One reason that Apple's early Macintosh team settled on using Pascal was because the UCSD compiler was free, whereas licensing a C compiler at that time would have cost a couple of hundred bucks. Sigh.) 

Knuth unified the newline mess by creating a character category called "end of line" (internally, using catcode 5). But all such raw input characters are only temporary, because end-of-line characters (whatever they are) get converted at a very low level during interpretation into either a space character or, when paired, a command called \par (paragraph). Internally, Knuth created a symbol in the WEB source code, "car_ret" for this category, and then *reused* that symbol value (5) at a higher level to represent the \cr and \crcr primitive alignment commands in the language, for no particular reason other than they were conceptually related (one less symbol to declare). But as I wrote previously, the higher level \cr and \crcr commands don't have anything really to do with line ends. They have to do with row or column ends in a horizontal or vertical alignment context. 

Doug McKenna 
Mathemaesthetics, Inc. 

P.S. The reason my recently released self-typesetting eBook isn't on other platforms has to do with its extremely complicated graphics, not with its typesetting library, which is system-agnostic in the extreme. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://tug.org/pipermail/texhax/attachments/20190708/2cbf4c24/attachment.html>


More information about the texhax mailing list