换行符分隔的宏参数

换行符分隔的宏参数

是否可以定义一个采用换行符分隔参数的宏?

\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

相关内容