是否可以定义一个采用换行符分隔参数的宏?
\def\triple#1#2#3{(#1,#2,#3)}
而不是这样:
\triple
{First}
{Second}
{Third}
lorem ipsum
我希望能够写这个:
\triple
First
Second
Third
lorem ipsum
答案1
只要您没有嵌套在另一个宏中,您就可以使用,\obeylines
因此行尾就不会被标记为空格。
{\obeylines%
\gdef\triple{\bgroup\obeylines\xtriple}%
\gdef\xtriple^^M#1^^M#2^^M#3^^M{\egroup(#1,#2,#3) \ignorespaces}%
}%
Instead of this:
\triple
First
Second
Third
lorem ipsum
\bye
如果你的真实示例(如本例)中的项没有空格,则更简单的定义会用空格标记来分隔参数,而不需要\obeylines
。这会产生与上面相同的输出
\def\triple #1 #2 #3 {(#1,#2,#3) }
Instead of this:
\triple
First
Second
Third
lorem ipsum
\bye