Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Plain Tex defines \quad so:

\def\quad{\hskip1em\relax}

Why is the \relax there? It's usually used as a token that can't be expanded, serving as a "do nothing" operation after macro expansion is finished. But that use seems redundant, because it follows a command, namely \hskip.

The macro is defined alongside \enskip and \qquad in plain.tex, and in Latex in ltspace.dtx.

An idle question, but I guess the reason for it will be worth knowing.

share|improve this question

1 Answer 1

up vote 24 down vote accepted

So that \quad doesn't eat following text while assembling the argument of \hskip:

\documentclass{article}
\begin{document}

\def\quad{\hskip1em\relax}

\quad plus 1em text

\def\quad{\hskip1em}

\quad plus 1em text
\end{document}
share|improve this answer
1  
This is a general feature of TeX skips: see also how LaTeX defines a number of wrappers so that 'escape' does not take place. –  Joseph Wright Sep 14 '10 at 13:10
    
Thank you. I guess this highlights the risks associated with designing robust macros. –  Charles Stewart Sep 14 '10 at 13:28
10  
Welcome to my world :-) –  Joseph Wright Sep 14 '10 at 17:12
    
Very nice example. Thank you. –  Todd Lehman Dec 29 '11 at 15:00
1  
Fischer's explanation above can also be seen on the dangerous bend in pg. 71 of Knuth's The TeXbook. –  Mafra Dec 2 '12 at 1:32

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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