Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
2_programmation:macros:arguments_optionnels_comme_pour_section [2021/09/03 15:19] – [Avec \NewDocumentCommand] Plusieurs arguments entre crochets bdumont | 2_programmation:macros:arguments_optionnels_comme_pour_section [2021/10/21 11:50] (Version actuelle) – [Avec \NewDocumentCommand] réduction de taille de colonne pour affichage côte à côte bdumont | ||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
ne fonctionnent pas vraiment comme l' | ne fonctionnent pas vraiment comme l' | ||
En effet, la valeur par défaut de l' | En effet, la valeur par défaut de l' | ||
- | est celle l' | + | est celle de l' |
- | que vous connaissiez à l' | + | au contraire, '' |
+ | de l' | ||
- | $\Reponse$ | + | L' |
+ | <WRAP column 70ex> | ||
<code latex> | <code latex> | ||
\documentclass{article} | \documentclass{article} | ||
Ligne 28: | Ligne 30: | ||
\end{document} | \end{document} | ||
</ | </ | ||
+ | </ | ||
+ | <WRAP column> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | |||
+ | \newcommand\thing[2][\DefaultOpt]{% | ||
+ | \def\DefaultOpt{# | ||
+ | optional arg: #1, mandatory arg: #2% | ||
+ | } | ||
+ | |||
+ | \begin{document} | ||
+ | \thispagestyle{empty} | ||
+ | \thing{manda}% #1=#2 | ||
+ | |||
+ | \thing[opti]{manda}% # | ||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear/> | ||
+ | |||
- | $\Reponse$ | + | Le code source de \LaTeX |
il utilise une macro '' | il utilise une macro '' | ||
été écrit dans LaTeX : | été écrit dans LaTeX : | ||
<code latex> | <code latex> | ||
+ | \makeatletter | ||
\newcommand\thing{\@dblarg\@thing} | \newcommand\thing{\@dblarg\@thing} | ||
\newcommand\@thing[2][\@error]{% | \newcommand\@thing[2][\@error]{% | ||
optional arg: #1, mandatory arg: #2% | optional arg: #1, mandatory arg: #2% | ||
} | } | ||
+ | \makeatother | ||
</ | </ | ||
Ligne 44: | Ligne 68: | ||
est appelée, un bug apparaît dans le code utilisateur... | est appelée, un bug apparaît dans le code utilisateur... | ||
+ | typ | ||
+ | o | ||
===== Avec \NewDocumentCommand ===== | ===== Avec \NewDocumentCommand ===== | ||
Ligne 64: | Ligne 90: | ||
</ | </ | ||
- | Il est même possible d' | + | Il est même possible d' |
- | <WRAP column | + | <WRAP column |
<code latex> | <code latex> | ||
\NewDocumentCommand\thing{ | \NewDocumentCommand\thing{ | ||
Ligne 79: | Ligne 105: | ||
\thing[le premier argument]{% | \thing[le premier argument]{% | ||
- | j'ai défini le premier argument entre crochets mais pas le second} | + | j'ai défini le premier argument entre crochets mais |
+ | | ||
\thing[le premier argument][le second argument]{% | \thing[le premier argument][le second argument]{% | ||
j'ai défini les deux arguments optionnels} | j'ai défini les deux arguments optionnels} | ||
- | \thing[][le second argument]{le premier argument est vide} | + | \thing[][le second argument]{le premier argument |
+ | | ||
\thing[valeur par défaut][le second argument]{% | \thing[valeur par défaut][le second argument]{% | ||
- | pour obtenir la valeur par défaut du premier | + | pour obtenir la valeur par défaut du premier |
- | définir le second argument, j'ai dû indiquer explicitement | + | |
- | | + | |
</ | </ | ||
</ | </ |