Comment détecter un argument vide ?#

1.  Argument réellement vide#

Si vous avez besoin de savoir quand l’argument de votre commande est vide, autrement dit distinguer \commande{} de \commande{truc}, voici une solution relativement simple :

\def\commande#1{%
  \def\tempa{}%
  \def\tempb{#1}%
  \ifx\tempa\tempb
    Cas où l'argument est vide
  \else
    Cas où l'argument est non vide
  \fi
}

2.  Argument uniquement composé d’espaces#

Le cas où vous voulez ignorer un argument qui ne consiste en rien d’autre que des espaces est plus délicat. Il est résolu par l’extension ifmtarg, qui définit les commandes \@ifmtarg et \@ifnotmtarg, dont la fonction est d’examiner leur premier argument et, selon sa valeur, de sélectionner (dans des directions opposées) leur second ou troisième argument. La documentation de l’extension, en anglais, propose des exemples simples et visuels de ce fonctionnement. Par ailleurs, le code de cette extension est également utilisé par la classe memoir.

Le document Around the bend, de Michael Downes, développe ce sujet dans sa section 2.