Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
2_programmation:macros:definir_une_macro_a_plus_de_9_arguments [2018/12/02 22:41]
jejust
2_programmation:macros:definir_une_macro_a_plus_de_9_arguments [2021/10/21 12:01]
bdumont [Avec l'extension keyval] Renvoi vers un nouvel article dédié à cette question
Ligne 1: Ligne 1:
-====== How to break the 9-argument limit ======+====== Comment dépasser la limite des arguments pour une commande? ======
  
- +Si vous y réfléchissezvous vous rendrez compte que la syntaxe de définition de commande dans <latex>\TeX</latex> (avec ''\def'') et <latex>\LaTeX</latex> (avec ''\newcommand'') a une conséquence importante 
-If you think about ityou will realise that Knuth's command +
-definition syntax:+
  
 <code latex> <code latex>
-\def\blah#1#2 ... #9{<macro body>}+\def\truc#1#2 ... #9{Contenu de la commande}
 </code> </code>
-is intrinsically limited to just 9 arguments.  There's no direct way 
-round this: how would you express a 10th argument? --- and ensure that 
-the syntax didn't gobble some other valid usage? 
  
-If you really must have more than 9 arguments, the way to go is:+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 : 
  
 <code latex> <code latex>
-\def\blah#1#2 ... #9{%+\def\truc#1#2 ... #9{%
   \def\ArgI{{#1}}%   \def\ArgI{{#1}}%
   \def\ArgII{{#2}}%   \def\ArgII{{#2}}%
   ...   ...
   \def\ArgIX{{#9}}%   \def\ArgIX{{#9}}%
-  \BlahRelay+  \TrucBis
 } }
-\def\BlahRelay#1#2#3{% +\def\TrucBis#1#2#3{% 
-  % arguments 1-are now in +  % Les arguments 1 à sont maintenant dans  
-  %   \ArgI-\ArgIX +  % \ArgI-\ArgIX. 
-  % arguments 10-12 are in +  % Les arguments 10 à 12 sont maintenant dans 
-  %   #1-#3 +  % #1 à #3. 
-  <macro body>%+  Texte de la commande%
 } }
 </code> </code>
  
-This technique is easily extendible by concert pianists of the TeX +Cette technique est facilement extensible par les spécialites de <latex>\TeX</latex> mais elle n'est pas vraiment recommandée.
-keyboard, but is really hard to recommend.+
  
-LaTeX users have the small convenience of merely giving a number of +===== En définissant des arguments clé-valeur =====
-arguments in the ''\newcommand'' that defines each part of the +
-relaying mechanism: Knuth's restriction applies to ''\newcommand'' +
-just as it does to ''\def'' However, LaTeX users also have the +
-way out of such barbarous command syntax: the [[ctanpkg>keyval|keyval]] +
-package.  With [[ctanpkg>keyval|keyval]], and a bit of programming, one can +
-write really quite sophisticated commands, whose invocation might look +
-like:+
  
 +En [[2_programmation:macros:arguments-cle-valeur|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 :
  
 <code latex> <code latex>
-\flowerinstance{species=Primula veris, +\instancefleur{espece=Primula veris, 
-  family=Primulaceae, +  famille=Primulaceae, 
-  location=Coldham's Common, +  localisation=Coldham's Common, 
-  locationtype=Common grazing land+  typeemplacement=Paturage
-  date=1995/04/24+  date=24/04/1995
-  numplants=50, +  nombre=50, 
-  soiltype=alkaline+  typesol=alkaline
 } }
 </code> </code>
  
-The merit of such verbosity is that it is self-explanatorythe typist +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 ! 
-doesn't have to remember that argument twelve is ''soiltype'', and so +
-on: the commands may be copied from field notes quickly and +
-accurately.+
  
- +----- 
- +//Source :// [[faquk>FAQ-moren9|How to break the 9-argument limit]]
---- +
- +
-//Source:// [[faquk>FAQ-moren9|How to break the 9-argument limit]]+
  
 {{htmlmetatags>metatag-keywords=(LaTeX,programming) {{htmlmetatags>metatag-keywords=(LaTeX,programming)
-metatag-og:title=(How to break the 9-argument limit)+metatag-og:title=(Comment dépasser la limite des arguments pour une commande)
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
- 
2_programmation/macros/definir_une_macro_a_plus_de_9_arguments.txt · Dernière modification: 2021/10/21 12:01 de bdumont
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0