Suivant: , Précédent: , Monter: Definitions   [Table des matières][Index]


12.12 \ignorespaces & \ignorespacesafterend

Synopsis :

\ignorespaces

ou

\ignorespacesafterend

Les deux commandes ont pour effet que LaTeX ignore l’espace blanc après la commande et jusqu’à rencontrer une boîte ou un caractère non blanc. La première commande est une commande primitive de TeX, et la seconde est spécifique à LaTeX.

La commande \ignorespaces est souvent utilisée quand on définit des commandes au moyen de \newcommand, ou \newenvironment, ou \def. Ceci est illustré par l’exemple plus bas. Il permet à un utilisateur d’afficher dans la marge combien de points rapporte chaque questions d’un questionnaire, mais il est malcommode parce que, comme illustré dans la liste enumerate, l’utilisateur ne doit pas mettre d’espace entre la commande et le texte de la question.

\newcommand{\points}[1]{\makebox[0pt]{\makebox[10em][l]{#1~pts}}
\begin{enumerate}
  \item\points{10}aucun espace superflu inséré ici
  \item\points{15} ici un espace superflu entre le nombre et le mot « ici »
\end{enumerate}

La solution est de modifier comme ci-dessous :

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

Dans le second exemple on illustre comment l’espace blanc est enlevé de devant le texte. Les commandes ci-dessous permettent à utilisateur d’attacher uniformément une civilité à un nom. Mais si, quand il est donné, une civilité commence accidentellement par un espace alors \nomcomplet le reproduira.

\newcommand{\honorific}[1]{\def\honorific{#1}} % mémorise le titre
\newcommand{\fullname}[1]{\honorific~#1}   % met le titre devant le nom

\begin{tabular}{|l|}
\honorific{M./Mme}  \fullname{Jean} \\  % sans espace superflu
\honorific{ M./Mme} \fullname{Jean}     % espace superflu devant la civilité
\end{tabular}

Pour réparer cela, modifier le en \newcommand{\fullname}[1]{\ignorespaces\honorific~#1}.

Le \ignorespaces est aussi souvent utilisé dans un \newenvironment à la fin de la clause begin, comme dans \begin{newenvironment}{env name}{... \ignorespaces}{...}.

Pour enlever l’espace blanc venant immédiatement après un environnement utilisez \ignorespacesafterend. Dans l’exemple ci-dessous on affiche un espace vertical bien plus grand entre le premier et le deuxième environnements qu’entre le deuxième et le troisième.

\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}

On peut faire disparaître l’espace vertical en mettant un caractère % de commentaire immédiatement après le \end{eq}, mais cela est malcommode. La solution est de modifier en \newenvironment{eq}{\begin{equation}}{\end{equation}\ignorespacesafterend}.


Suivant: , Précédent: , Monter: Definitions   [Table des matières][Index]