20

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?

2 Answers 2

21

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.

2
  • 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. Commented Nov 9, 2015 at 11:29
  • 1
    @FilippoAlbertoEdoardo chapter 12 (esp page 76) Commented Nov 9, 2015 at 11:53
8

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

rendering of above example, showing that the second case has more space between the dots

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .