具有两个参数的宏

具有两个参数的宏

我想定义一个接受两个输入的宏

\Make{a}{b~\theint}

其中宏定义为

```
\newcounter{int}
\newcommand{\Make}[2][]{
\thispagestyle{empty}
\par\medskip{
\textbf{\small #2 -- Fall 2020} \par
    \setcounter{int}{1}   
    \loop
    \input{#1}
  \newpage
 \addtocounter{int}{1}\ifnum\value{int}<8
    \repeat
 } \rmfamily}{\medskip}
```

但我收到错误,输入命令中的文件未找到

答案1

\Make定义为接受两个参数,其中第一个参数是可选的,因为它具有以下结构:

\newcommand{\Make}[2][]{%
  % <your definition>
}

因此,使用两个强制参数调用\Make{<a>}{<b>}它将有效地忽略<b>的一部分\Make,并分配#1(可选参数)一个空/空白值和#2= <a>。将您的定义更改为以下内容:

\newcommand{\Make}[2]{%
  % <your definition>
}

还请注意此处的用法%。参见%行尾的百分号 ( ) 有什么用?(为什么我的宏会产生额外的空间?)

相关内容