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.

\newcommand\macroUn[2]{\#1{#2}} % (Ca ne fonctionne pas)

Est-il possible de faire en sorte que l'appel à macro 1

Ouvrir dans l'éditeur Overleaf
\macroUn{macroDeux}{argument macroDeux}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

se traduise par un appel à macro 2 avec son argument : \macroDeux{argument macroDeux}

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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Posée 05 Nov '17, 15:01

idefix's gravatar image

idefix
955134151
Taux d'acceptation : 14%

Modifiée 05 Nov '17, 16:10

1

Il y a-t-il une raison à ne pas appeler macroDeux avec la contre oblique? (\macroUn{\macroDeux}{argument macroDeux})

(05 Nov '17, 15:25) Nikopol Nikopol's gravatar image

Non aucune raison. Du coup cela va fonctionner merci

(05 Nov '17, 16:20) idefix idefix's gravatar image

Il y a deux façons pour réaliser ça :

  • \newcommand{\macroUn}[2]{#1{#2}} et (c'est #1 et non pas \#1). Dans ce cas il faut utiliser la commande avec la syntaxe \macroUn{\macroDeux}{foo}.

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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • \newcommand{\macroUn}[2]{\csname #1\endcsname{#2}}. Dans ce cas la commande à utiliser avec la syntaxe \macroUn{macroDeux}{foo}.

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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien permanent

Publiée 05 Nov '17, 16:22

touhami's gravatar image

touhami
9.9k410
Taux d'acceptation : 51%

Modifiée 05 Nov '17, 21:52

A quoi sert \CMD et \cmd ? Tel quel (avec CMD et cmd) la compilation ne fonctionne pas. Merci pour les deux solutions possibles. Exactement ce que je voulais. Et ça fonctionne très bien.

(05 Nov '17, 16:48) idefix idefix's gravatar image

Désolé c'est ma faute, j'ai oublié de substituer, chez moi \cmd=\macroDeux et \CMD=\macroUn.

(05 Nov '17, 21:50) touhami touhami's gravatar image

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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

On obtient :

alt text

Lien permanent

Publiée 05 Nov '17, 17:52

idefix's gravatar image

idefix
955134151
Taux d'acceptation : 14%

Modifiée 05 Nov '17, 18:15

Vous pouvez aussi définir la commande avec \newcommand{\macroUn}[1]{\csname #1\endcsname} et l'utiliser avec deux arguments \macroUn{emph}{foo}

(05 Nov '17, 21:57) touhami touhami's gravatar image
Votre réponse
[Masquer l'aperçu]

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Mots-clés de la question :

×12

Question posée : 05 Nov '17, 15:01

Question vue : 5,159 fois

Dernière mise à jour : 05 Nov '17, 21:57

C'est votre première visite ici ? Consultez la FAQ !

×