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 23:41]
jejust
2_programmation:macros:definir_une_macro_a_plus_de_9_arguments [2021/04/23 11:25] (Version actuelle)
yannick.tanguy Traduction de l'article anglais.
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 +===== Avec l'extension ​keyval ​=====
-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:+
  
 +Les utilisateurs de <​latex>​\LaTeX</​latex>​ disposent d'un moyen de sortir de cette syntaxe de commande barbare : l'​extension [[ctanpkg>​keyval]]. Avec celle-ci et un peu de programmation,​ il est possible d'​écrire des commandes assez sophistiquées,​ dont l'​appel pourrait ressembler à : 
  
 <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.1543790480.txt.gz · Dernière modification: 2018/12/02 23:41 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0