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 14:10] – Ajout \NewDocumentCommand 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 50: | Ligne 76: | ||
<code latex> | <code latex> | ||
\NewDocumentCommand\thing{o m}{% | \NewDocumentCommand\thing{o m}{% | ||
- | | + | |
} | } | ||
</ | </ | ||
Ligne 60: | Ligne 86: | ||
<code latex> | <code latex> | ||
\NewDocumentCommand\thing{O{valeur par défaut} m}{% | \NewDocumentCommand\thing{O{valeur par défaut} m}{% | ||
- | | + | |
} | } | ||
</ | </ | ||
+ | Il est même possible d' | ||
+ | <WRAP column 60ex> | ||
+ | <code latex> | ||
+ | \NewDocumentCommand\thing{ | ||
+ | O{valeur par défaut} | ||
+ | O{un autre défaut} | ||
+ | m | ||
+ | }{% | ||
+ | premier argument optionnel entre crochets : \textbf{# | ||
+ | second argument optionnel entre crochets : \textbf{# | ||
+ | argument obligatoire : \textbf{#3} | ||
+ | } | ||
+ | |||
+ | \thing[le premier argument]{% | ||
+ | j'ai défini le premier argument entre crochets mais | ||
+ | pas le second} | ||
+ | |||
+ | \thing[le premier argument][le second argument]{% | ||
+ | j'ai défini les deux arguments optionnels} | ||
+ | |||
+ | \thing[][le second argument]{le premier argument | ||
+ | est vide} | ||
+ | |||
+ | \thing[valeur par défaut][le second argument]{% | ||
+ | pour obtenir la valeur par défaut du premier | ||
+ | argument et définir le second argument, j'ai | ||
+ | dû indiquer explicitement la valeur par défaut} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \thispagestyle{empty} | ||
+ | \setlength{\parskip}{10pt} | ||
+ | \setlength{\parindent}{0pt} | ||
+ | \def\thing[# | ||
+ | premier argument optionnel entre crochets : \textbf{# | ||
+ | second argument optionnel entre crochets : \textbf{# | ||
+ | argument obligatoire : \textbf{#3} } | ||
+ | |||
+ | \begin{document} | ||
+ | |||
+ | \thing[le premier argument][un autre défaut]{j' | ||
+ | |||
+ | \thing[le premier argument][le second argument]{j' | ||
+ | |||
+ | \thing[][le second argument]{le premier argument est vide} | ||
+ | |||
+ | \thing[valeur par défaut][le second argument]{pour obtenir la valeur par défaut du premier argument et définir le second argument, j'ai dû indiquer explicitement la valeur par défaut} | ||
+ | |||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear/> | ||
----- | ----- |