Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
2_programmation:macros:definir_une_macro_a_plus_de_9_arguments [2018/05/22 19:41] joseph.wright |
2_programmation:macros:definir_une_macro_a_plus_de_9_arguments [2018/12/02 22:41] jejust |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | # How to break the 9-argument limit | + | ====== |
If you think about it, you will realise that Knuth' | If you think about it, you will realise that Knuth' | ||
definition syntax: | definition syntax: | ||
- | ```latex | + | |
+ | < | ||
\def\blah# | \def\blah# | ||
- | ``` | + | </ |
is intrinsically limited to just 9 arguments. | is intrinsically limited to just 9 arguments. | ||
- | round this: how would you express a 10th argument?& | + | round this: how would you express a 10th argument? |
the syntax didn't gobble some other valid usage? | the syntax didn't gobble some other valid usage? | ||
If you really must have more than 9 arguments, the way to go is: | If you really must have more than 9 arguments, the way to go is: | ||
- | <!-- {% raw %} --> | + | |
- | ```latex | + | |
+ | < | ||
\def\blah# | \def\blah# | ||
\def\ArgI{{# | \def\ArgI{{# | ||
Ligne 27: | Ligne 30: | ||
<macro body>% | <macro body>% | ||
} | } | ||
- | ``` | + | </code> |
- | <!-- {% endraw %} --> | + | |
This technique is easily extendible by concert pianists of the TeX | This technique is easily extendible by concert pianists of the TeX | ||
keyboard, but is really hard to recommend. | keyboard, but is really hard to recommend. | ||
LaTeX users have the small convenience of merely giving a number of | LaTeX users have the small convenience of merely giving a number of | ||
- | arguments in the `\newcommand` that defines each part of the | + | arguments in the '' |
- | relaying mechanism: Knuth' | + | relaying mechanism: Knuth' |
- | just as it does to `\def`. However, LaTeX users also have the | + | just as it does to '' |
- | way out of such barbarous command syntax: the [`keyval`](http:// | + | way out of such barbarous command syntax: the [[ctanpkg> |
- | package. | + | package. |
write really quite sophisticated commands, whose invocation might look | write really quite sophisticated commands, whose invocation might look | ||
like: | like: | ||
- | <!-- {% raw %} --> | + | |
- | ```latex | + | |
+ | < | ||
\flowerinstance{species=Primula veris, | \flowerinstance{species=Primula veris, | ||
family=Primulaceae, | family=Primulaceae, | ||
Ligne 50: | Ligne 54: | ||
soiltype=alkaline | soiltype=alkaline | ||
} | } | ||
- | ``` | + | </code> |
- | <!-- {% endraw %} --> | + | |
The merit of such verbosity is that it is self-explanatory: | The merit of such verbosity is that it is self-explanatory: | ||
- | doesn' | + | doesn' |
on: the commands may be copied from field notes quickly and | on: the commands may be copied from field notes quickly and | ||
accurately. | accurately. | ||
- | * faq-mac-prog.tex (q-keyval): tweak words about getoptk | ||
- | ---- | + | --- |
+ | |||
+ | //Source:// [[faquk> | ||
- | Content last updated: 2014-06-10 | + | {{htmlmetatags> |
+ | metatag-og:title=(How to break the 9-argument limit) | ||
+ | metatag-og: | ||
+ | }} | ||