Infix for All (leaves) <p><code>Infix[]</code> works only at first level:</p> <pre><code>Infix[(c a^b)^d] (* -&gt; (a^b c) ~Power~ d *) </code></pre> <p>As I want to (don't ask why) get the full expression switched to infix notation, I tried something like:</p> <pre><code>SetAttributes[toInfx, HoldAll]; toInfx[expr_] := Module[{prfx, infx}, prfx = Level[expr, {0, Infinity}]; infx = Infix /@ prfx /. {Infix[a_Symbol] -&gt; a, Infix[a_?NumericQ] -&gt; a}; Fold[ReplaceAll[#1, #2] &amp;, expr, Reverse@Thread[Rule[prfx, infx]]] ] k = toInfx[(c a^b)^d] (* -&gt; (c ~Times~ (a ~Power~ b)) ~Power~ d *) </code></pre> <p>But this has two evident problems, because</p> <ol> <li><code>(c a^b)^d == a~Power~b~Times~c~Power~d</code><br> So what I get is not an efficient use of infix.</li> <li>It is not robust, and fails for easy expressions such as <code>k = toInfx[a/b + ArcTan[a/b]]</code></li> </ol> <p>Is there an easy way to get <code>Infix[]</code> working for All (leaves)?</p>