Je cherche à créer une commande, sans l'appel à des extensions particulières, du type : Ouvrir dans l'éditeur Overleaf
\macommande[champ optionnel]{champ obligatoire} avec le comportement qui suit :
Ça revient un peu à la commande Comment faire ? |
Voici une solution : Ouvrir dans l'éditeur Overleaf
\newcommand{\macommande}[2][]{% \if\relax\detokenize{#1}\relax pas de champ optionnel donc champ obligatoire = #2\else champ optionnel existe et = #1\fi et champ obligatoire = #2} ECM Ouvrir dans l'éditeur Overleaf
\documentclass{article} \newcommand{\macommande}[2][]{% \if\relax\detokenize{#1}\relax champ optionnel= #2\else champ optionnel= #1\fi et champ obligatoire = #2} \begin{document} \macommande[11]{12} \macommande{12} \end{document} Remarque On peut aussi définir cette commande par Ouvrir dans l'éditeur Overleaf
\newcommand{\macommande}[2][]{% \ifx\relax#1\relax champ optionnel= #2\else champ optionnel= #1\fi et champ obligatoire = #2} oui mais il faudrait stocker les champs #1 et #2 pour les utiliser plus tard. Imaginons \montitre[titre court]{titre long} qui créé les chaînes \montitrecourt et \montitrelong qui peuvent ensuite être utilisées dans disons \cfoot{\montitrecourt} (pour illustrer) où \montitrelong est toujours "titre long" alors que \montitrecourt est "titre court" (quand il est indiqué) ou "titrelong" autrement? Sans le champ optionnel, la commande pourrait être 2
@pluton je n'ai pas bien compris (merci de préciser) mais voila
donc par exemple
parfait, c'est bien la dernière idée qui convient. |
Ma solution : Ouvrir dans l'éditeur Overleaf
\documentclass{minimal} \makeatletter \newcommand\macommande[2][\@nil]{% \def\@tempa{#1}% \ifx\@tempa\@nnil Argument optionnel absent, argument obligatoire = ``#2''.% \else Argument optionnel pr\'esent = ``#1'', argument obligatoire = ``#2''.% \fi } \makeatother \begin{document} \begin{enumerate} \item \macommande[toto]{tata} \item \macommande[]{tata} \item \macommande{tata} \end{enumerate} \end{document} |