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:30] – [Avec \NewDocumentCommand] typo 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... | ||
| - | typo===== Avec \NewDocumentCommand ===== | + | typ |
| + | o | ||
| + | ===== Avec \NewDocumentCommand ===== | ||
| La macro '' | La macro '' | ||
| Ligne 66: | Ligne 92: | ||
| 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 | + | |
| - | | + | |
| </ | </ | ||
| </ | </ | ||

