Ceci est une ancienne révision du document !
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.
Avec l'extension keyval
Les utilisateurs de disposent d'un moyen de sortir de cette syntaxe de commande barbare : l'extension keyval. Avec celle-ci et un peu de programmation, il est possible d'écrire des commandes assez sophistiquées, dont l'appel pourrait ressembler à :
\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