UK TeX FAQ -- question 259

### Commands gobble following space

People are forever surprised that simple commands gobble the space after them: this is just the way it is. The effect arises from the way TeX works, and Lamport describes a solution (place a pair of braces after a command's invocation) in the description of LaTeX syntax. Thus the requirement is in effect part of the definition of LaTeX.

This FAQ, for example, is written with definitions that require one to type `\fred{}` for almost all macro invocations, regardless of whether the following space is required: however, this FAQ is written by highly dedicated (and, some would say, eccentric) people. Many users find all those braces become very tedious very quickly, and would really rather not type them all.

An alternative structure, that doesn't violate the design of LaTeX, is to say `\fred``\` - the `\` command is "self terminating" (like `\``\`) and you don't need braces after it. Thus one can reduce to one the extra characters one needs to type.

If even that one character is too many, the package xspace defines a command `\xspace` that guesses whether there should have been a space after it, and if so introduces that space. So "`fred`\xspace` jim`" produces "fred jim", while "`fred`\xspace`. jim`" produces "fred. jim". Which usage would of course be completely pointless; but you can incorporate `\xspace` in your own macros:

    \usepackage{xspace}
    ...
    \newcommand{\restenergy}{\ensuremath{mc^2}\xspace}
    ...
    and we find \restenergy available to us...

The `\xspace` command must be the last thing in your macro definition (as in the example); it's not completely foolproof, but it copes with most obvious situations in running text.

The xspace package doesn't save you anything if you only use a modified macro once or twice within your document, and in any case be careful with usage of `\xspace` - it offers a change in your input syntax which can be confusing, particularly if you retain some commands which don't use it. (Of course, any command built into LaTeX or into any class or package you use won't use `\xspace`: you need to think every time you use such a command.) And of course, be careful to explain what you're doing to any collaborating author!

`xspace.sty`
  Distributed as part of macros/latex/required/tools.tar.gz