# Why do we need \ldots?

While trying to understand Chapter 12 of Knuth's TeXbook about Glueing, I run into troubles in understanding why `\ldots` ends up in looking better than `...`. It seems to me that the usual period `.` has an extra-stretching option and, moreover, it is set to allow more space after it. I guess, but I am not sure, that this is part of the `\nofrenchspacing` command, where it is specified that the space after a dot should be `3@m` instead of `@m`. So, my questions are

1. First of all, am I right with the above guess that if I want to understand where TeX (or LaTeX) is told what to do with a period in non-frenchspaced text, this is in the `\nonfrenchspacing` command? Is it this after-space, which is called `spacefactor`?
2. More important: how does it come that if I put three dots in a row, they are too close apart? According to the above, there should be `3@m` after every period, so the three dots should be fine: but they aren't. Knuth says that TeX has a rule for determining the end of a sentence, but he does not tell us how (I am looking at page 73 of his TeXbook). In particular, I guess that there are two `spacefactor` commands, so to speak, one for end-of-sentence and one for middle-of-sentence. Is it possible to have some detail?

The spacefactor (`\sfcode`) does not add any space after the `.` it just increases the space that a space token after a `.` produces so in

``````This is the end. A new sentence
``````

the end of sentence space will be a bit bigger and allowed to stretch more if the sfcode of `.` is not 1000.

If you go `...` there are no space tokens between the dots so the space factor code of `.` is not used.

The texbook says that if the current value of the space factor is f then:

Take the normal space glue for the current font, and add the extra space if f >= 2000 (Each font specifies a normal space, normal stretch, normal shrink, and extra space; for example, these quantities are 3.33333pt, 1.66666pt, 1.11111pt, and 1.11111pt, respectively, in `cmr10`. […])

Then the stretch component is multiplied by f/1000, while the shrink component is multiplied by 1000/f.

Here the relevant value of f is 3000 or 1000 for `\nonfrenchspacing` or `\frenchspacing` respectively.

• Thank you, very clear indeed. Since you seem to have the TeXBook at hand, can you add a precise reference to your quotation and, may be, tell me where is the command `\sfcode` discussed? I see it has a syntax of the form `\sfcode')=0pt` but I'd like to study it in somewhat deeper detail. – Filippo Alberto Edoardo Nov 9 '15 at 11:29
• @FilippoAlbertoEdoardo chapter 12 (esp page 76) – David Carlisle Nov 9 '15 at 11:53

The key typographic difference between `...` and `\ldots` is not anything to do with the width of a subsequent space. `\ldots` puts more spacing in between the dots. Observe:

``````x...x\par
x\dots x\par
\bye
``````

renders as

(note: in plain TeX `\ldots` is math-only, you have to use `\dots` in text mode.)