\ignorespaces & \ignorespacesafterend (LaTeX2e unofficial reference manual (November 2018))

Previous: \protect, Up: Definitions [Contents][Index]

### 12.12 `\ignorespaces & \ignorespacesafterend`

Synopsis:

    \ignorespaces

or

    \ignorespacesafterend

Both commands cause LaTeX to ignore spaces after the end of the command up until the first non-space character. The first is a command from Plain TeX, and the second is LaTeX-specific.

The `ignorespaces` is often used when defining commands via `\newcommand`, or `\newenvironment`, or `\def`. The example below illustrates. It allows a user to show the points values for quiz questions in the margin but it is inconvenient because, as shown in the `enumerate` list, users must not put any space between the command and the question text.

    \newcommand{\points}[1]{\makebox[0pt]{\makebox[10em][l]{#1~pts}}
    \begin{enumerate}
      \item\points{10}no extra space output here
      \item\points{15} extra space between the number and the `extra'
    \end{enumerate}

The solution is to change to this.

    \newcommand{\points}[1]{%
      \makebox[0pt]{\makebox[10em][l]{#1~pts}}\ignorespaces}

A second example shows spaces being removed from the front of text. The commands below allow a user to uniformly attach a title to names. But, as given, if a title accidentally starts with a space then `\fullname` will reproduce that.

    \makeatletter
    \newcommand{\honorific}[1]{\def\@honorific{#1}} % remember title
    \newcommand{\fullname}[1]{\@honorific~#1}       % put title before name
    \makeatother
    \begin{tabular}{|l|}
    \honorific{Mr/Ms}  \fullname{Jones} \\  % no extra space here
    \honorific{ Mr/Ms} \fullname{Jones}     % extra space before title
    \end{tabular}

To fix this, change to `\newcommand{\fullname}[1]{\ignorespaces\@honorific~#1}`.

The `\ignorespaces` is also often used in a `\newenvironment` at the end of the begin clause, that is, as part of the second argument, as in `\begin{newenvironment}{env name}{... \ignorespaces}{...}`.

To strip spaces off the end of an environment use `\ignorespacesafterend`. An example is that this will show a much larger vertical space between the first and second environments than between the second and third.

    \newenvironment{eq}{\begin{equation}}{\end{equation}}
    \begin{eq}
    e=mc^2
    \end{eq}
    \begin{equation}
    F=ma
    \end{equation}
    \begin{equation}
    E=IR
    \end{equation}

Putting a comment character `%` immediately after the `\end{eq}` will make the vertical space disappear, but that is inconvenient. The solution is to change to `\newenvironment{eq}{\begin{equation}}{\end{equation}\ignorespacesafterend}`.

Unofficial LaTeX2e reference manual