Comment détecter un argument vide?

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
}

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 \LaTeX memoir.

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


Sources:

2_programmation/macros/detecter_que_quelque_chose_est_vide.txt · Dernière modification : 2022/10/04 14:17 de dbitouze
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0