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
(10 Jan '17, 21:37)
pluton
2
@pluton je n'ai pas bien compris (merci de préciser) mais voila
donc par exemple
(10 Jan '17, 22:08)
touhami
parfait, c'est bien la dernière idée qui convient.
(10 Jan '17, 22:18)
pluton
|
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} Publiée 24 Jan '17, 23:14 vincentb1 |