将带有可选参数的宏放入另一个宏的参数中

将带有可选参数的宏放入另一个宏的参数中

我只想将带有可选参数的宏作为可选参数传递。如果您查看下面的最小示例,如果我[scale=1]在新宏的可选参数中使用,则它不起作用。

另一点我不明白的是,我定义了一个可选参数。那么为什么如果我使用大括号而不是方括号,它就会起作用。

\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

可选参数在第一个顶层结束,]它不计算匹配[]对。

使用

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

相关内容