TeX 宏编程的技巧很多,其中之一就是定界符来分割参数,减少宏层面的判断,以此减少编译时间。
对于方括号可选参数的判断,一般是使用 \futurelet
primitive 来实现的,最典型的就是 LaTeX 内核中的 \@ifnextchar
、\@ifstar
。cmd
(xparse
)提供了可展开的可选参数接口,但是其实现非常复杂,而且也有一定局限性。
本例提供了三个可展开的方括号参数解析宏,它们只需要线性时间即可完成(3-5)次宏展开,其实现方式正是使用有定界符的参数,不使用任何宏层面的判断,而且可以直接用于 \edef
、\xdef
中。
末尾的 test case 显示了其应有效果。
暂无评论