4

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}
1
  • 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, 2014 at 13:46

1 Answer 1

6

An optional argument ends at the first top level ] it does not count matching [] pairs.

use

\test[{\includegraphics[scale=1]{logo}}]

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .