Comment dépasser la limite des 9 arguments pour une commande?
Si vous y réfléchissez, vous vous rendrez compte que la syntaxe de définition de commande dans (avec \def
) et (avec \newcommand
) a une conséquence importante :
\def\truc#1#2 ... #9{Contenu de la commande}
En effet, les commandes sont intrinsèquement limitées à 9 arguments (vous ne pouvez pas mettre un #10
qui sera lu comme #1
suivi de 0
).
Avec des commandes de base
Si vous devez vraiment avoir plus de 9 arguments, la voie à suivre est la suivante :
\def\truc#1#2 ... #9{% \def\ArgI{{#1}}% \def\ArgII{{#2}}% ... \def\ArgIX{{#9}}% \TrucBis } \def\TrucBis#1#2#3{% % Les arguments 1 à 9 sont maintenant dans % \ArgI-\ArgIX. % Les arguments 10 à 12 sont maintenant dans % #1 à #3. Texte de la commande% }
Cette technique est facilement extensible par les spécialites de mais elle n'est pas vraiment recommandée.
En définissant des arguments clé-valeur
En définissant des arguments clé-valeur, on peut s'affranchir de la limite des 9 arguments tout en facilitant l'utilisation de la commande par les utilisateurs, par exemple en permettant d'écrire ceci :
\instancefleur{espece=Primula veris, famille=Primulaceae, localisation=Coldham's Common, typeemplacement=Paturage, date=24/04/1995, nombre=50, typesol=alkaline }
Le mérite d'une telle débauche de code est simple : l'utilisateur n'a pas besoin de se souvenir de l'ordre des paramètres, par exemple que le douzième argument serait typesol
. Sans compter la lisibilité du code pour un humain !
Source : How to break the 9-argument limit