Ceci est une ancienne révision du document !

— title: Defining macros within macros category: programming tags: macros permalink: /FAQ-hash date: 2014-06-10 —

The way to think of this is that ## gets replaced by # in just the same way that #1 gets replaced by “whatever is the first argument”.

So if you define a macro: latex \newcommand\a[1]{+#1+#1+#1+}  or (using the TeX primitive \def): latex \def\a#1{+#1+#1+#1+}  and use it as \a{b}, the macro expansion produces “+b+b+b+”, as most people would expect.


+b+\newcommand{x}[1]{xxxb}

so that the new \x ignores its argument.

If we use the TeX primitive: latex \def\a#1{+#1+\def\x #1{xxx#1}}  \a{b} will expand to “+b+\def\x b{xxxb}”. This defines \x to be a macro _delimited_ by b, and taking no arguments, which is surely not what was intended!


+b+\def\x #1{xxx#1}

because #1 gets replaced by “b” and ## gets replaced by #.

To nest a definition inside a definition inside a definition then you need ####1, doubling the number of # signs; and at the next level you need 8&nbsp;#s each time, and so on.

2_composition/macros/definir_une_macro_a_l_interieur_d_une_autre_macro.1528020214.txt.gz · Dernière modification: 2018/06/03 12:03 par d.p.carlisle