# Macro with optional arguments into arguments of another macro

I just want to pass as an optional argument, a macro with an optional argument. If you look at the minimal exampel below, if I use [scale=1] in the optional arguement of the new macro it does not work.

Another point that I do not understand, is that I defined an optional arguments. So why does it work if I use brace instead of squarre paranthesis.

\documentclass{minimal}
\usepackage{graphicx}
\newcommand{\test}[1][]{#1}

\begin{document}
un test

% does not work
\test[\includegraphics[scale=1]{logo}]

% work
\test[\includegraphics{logo}]
\test{\includegraphics[scale=1]{logo}}
\test{\includegraphics{logo}}
\end{document}

• You can also use a temporary variable: \def\tmp{\includegraphics[scale=1]{logo}} \test[\tmp] Perhaps this is functionally equivalent to David's answer. Oct 9 '14 at 13:46

An optional argument ends at the first top level ] it does not count matching [] pairs.
\test[{\includegraphics[scale=1]{logo}}]