![将带有可选参数的宏放入另一个宏的参数中](https://linux22.com/image/299388/%E5%B0%86%E5%B8%A6%E6%9C%89%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0%E7%9A%84%E5%AE%8F%E6%94%BE%E5%85%A5%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%AE%8F%E7%9A%84%E5%8F%82%E6%95%B0%E4%B8%AD.png)
我只想将带有可选参数的宏作为可选参数传递。如果您查看下面的最小示例,如果我[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}}]