19

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?
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.

  • 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
  • 1
    @FilippoAlbertoEdoardo chapter 12 (esp page 76) – David Carlisle Nov 9 '15 at 11:53
7

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.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.