我要定义一个宏专门用来吃分段符号

如果不是分段符号,则保留并退出这个宏的处理。否则的话,需要一直吃下去。


1.宏的定义


\long\def\filter#1{\ifx#1\par\expandafter\filter\else#1\fi}

解释如下:

1.1.\long的作用,一般的宏是不允许使用分段符号\par来充当参数的。要允许宏接收分段符号充当参数,那就在\def前面增加一个\long

1.2.\def的作用:

  1.2.1.\def后面的\filter是宏名;

  1.2.2.#1是输入模板(用来和输入的内容做匹配这样才能提取参数)

  1.2.3.{...}这个是输出模板

1.3.大括号里面的输出模板

  1.3.1.\ifx#1\par.A..\else.B..\fi:这个负责把输入的参数和\par进行比较,匹配得上就执行A部分,匹配不上就执行B部分

  1.3.2.\expandafter\filter这个是让\filter延迟展开,也就是先处理后面的\else。否则的话:\fiter会把\else当成输入进行过滤。

1.4.expand后面的filter为什么没有提供参数?此时的filter被延迟展开了,等后面的token生成出来了,自然会继续处理。并且把后面生成的符号当做输入处理。

2.宏的测试

{\filter






%在这之前的所有空白都会被吃掉




test
}

你可能感兴趣的:(Latex,Latex)