# Difference between control space and non-breaking space

In my answer to Two-column layout with left column just as wide as its content I've used non-breaking spaces ~ (ties) to align monospaced text. Actually I rather meant control spaces \ , but they're less convenient to type (and read), and line breaks were not of interest anyway. Some experiments concerning line breaking are documented in the code below.

Question: Besides their line-breaking behaviour, is there any difference between \  and ~? In particular, do (or may) they by nature have a different width?

\documentclass{article}
\usepackage{lipsum}
\usepackage{parskip}

\begin{document}

\lipsum[75]

%non-breaking space
lorem lorem lorem lorem lorem lorem lorem lorem lorem
lorem lorem lo~lo~lo~lo~lo~lo~lo~lo~ip~ip~ip~sum sum sum sum sum sum sum sum sum

lorem lorem lorem lorem lorem lorem lorem lorem lorem
lorem lorem lo~lo~lo~lo~lo~ %input line break doesn't affect non-breaking space
lo~lo~lo~ip~ip~ip~sum sum sum sum sum sum sum sum sum

lorem lorem lorem lorem lorem lorem lorem lorem lorem
lorem lorem lo~lo~lo~lo~lo  %breaks at input line break
lo~lo~lo~ip~ip~ip~sum sum sum sum sum sum sum sum sum

%breaks at protected space
lorem lorem lorem lorem lorem lorem lorem lorem lorem
lorem lorem lo~lo~lo~lo~lo\ lo~lo~lo~ip~ip~ip~sum sum sum sum sum sum sum sum sum

\end{document}


Control space \ and a tie ~ have the same width and only differ in their line-breaking behaviour. The definition of the latter, taken from latex.ltx is:

\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
\catcode \~=13
\def~{\nobreakspace{}}

• I'm wondering why it's LaTeX that defines the tie. Is it not a TeX primitive? – dgs Jun 9 '12 at 23:34
• @dgs: Yes, TeX actually defines it as \penalty\@M\ , but LaTeX redefines it. – Werner Jun 9 '12 at 23:40
• @Werner ~ is not a primitive in plain TeX, it is an active character with a macro definition (\penalty\@M\ , as you say). – Joseph Wright Jun 10 '12 at 7:30
• This answer doesn't explain the difference... What do they do different then? – Tvde1 Dec 29 '18 at 15:43
• @Tvde1: They differ in how things happen around a line-break. ~ inserts a large penalty while \ ` does not. Does this example explain it better? – Werner Dec 29 '18 at 16:05