Peut-on construire un appel de macro dans une macro ? Par exemple une macro (macroUn) avec deux arguments, le premier pour le nom d'une autre macro (macroDeux) et le second pour l'argument de cette seconde macro.
Est-il possible de faire en sorte que l'appel à macro 1 Ouvrir dans l'éditeur Overleaf
\macroUn{macroDeux}{argument macroDeux} se traduise par un appel à macro 2 avec son argument : Ouvrir dans l'éditeur Overleaf
\documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \newcommand\macroDeux[1]{#1} \newcommand\macroUn[2]{\textbackslash#1\{#2\}} \begin{document} Testing \verb|\macroUN{macroDeux}{789}|: \macroUn{macroDeux}{789} % Ne fonctionne pas, c'est du texte non interprété Ca ne fonctionne pas, \verb|\macroDeux{789}| est du texte non interprété. \end{document} Posée 05 Nov '17, 15:01 idefix |
Il y a deux façons pour réaliser ça :
ECM Ouvrir dans l'éditeur Overleaf
\documentclass{article} \newcommand{\macroDeux}[1]{**#1**} \newcommand{\macroUn}[2]{#1{#2}} \begin{document} \macroUn{\macroDeux}{foo} \macroUn{\emph}{foo} \end{document}
ECM Ouvrir dans l'éditeur Overleaf
\documentclass{article} \newcommand{\macroDeux}[1]{**#1**} \newcommand{\macroUn}[2]{\csname #1\endcsname{#2}} \begin{document} \macroUn{macroDeux}{foo} \macroUn{emph}{foo} \end{document} Publiée 05 Nov '17, 16:22 touhami A quoi sert
(05 Nov '17, 16:48)
idefix
Désolé c'est ma faute, j'ai oublié de substituer, chez moi
(05 Nov '17, 21:50)
touhami
|
Résumé des possibilités (j'ai tenté une dernière, mais qui ne fonctionne pas) Ouvrir dans l'éditeur Overleaf
\documentclass{article} %% macro appelée \newcommand{\macroDeux}[1]{**#1**} %% Pour appel AVEC DEUX arguements et AVEC backslach \newcommand{\macroUn}[2]{#1{#2}} %% Pour appel AVEC DEUX arguements et SANS backslach \newcommand{\macroUnBis}[2]{\csname #1\endcsname{#2}} %% Pour appel avec UN SEUL argument et AVEC backslash \newcommand{\macroUnTer}[1]{#1} %% Pour appel avec UN SEUL argument et SANS backslash (ne fonctionne pas) \newcommand{\macroUnFour}[1]{\csname #1\endcsname} \begin{document} % Appel DEUX arguments et AVEC backslach Testing appel de \verb|\macroUn{\macroDeux}{foo}| : \macroUn{\macroDeux}{foo} % Appel DEUX arguments et SANS backslash Testing appel de \verb|\macroUnBis{macroDeux}{foo}| : \macroUnBis{macroDeux}{foo} % Autre solution avec UN SEUL argument et appel AVEC backslash Testing appel de \verb|\macroUnTer{\macroDeux{foo}}| : \macroUnTer{\macroDeux{foo}} % Autre solution avec UN SEUL argument et appel SANS backslash (ne fonctionne pas) Testing appel de \verb|\macroUnFour{macroDeux{foo}}| : \macroUnFour{macroDeux{foo}} Cette derni\`ere que j'ai essay\'e d'adapter ne fonctionne pas %\CMD{\cmd}{foo} %\CMD{\emph}{foo} \end{document} On obtient : Publiée 05 Nov '17, 17:52 idefix Vous pouvez aussi définir la commande avec
(05 Nov '17, 21:57)
touhami
|
Il y a-t-il une raison à ne pas appeler macroDeux avec la contre oblique? (
\macroUn{\macroDeux}{argument macroDeux}
)Non aucune raison. Du coup cela va fonctionner merci