groff 为宏编写者提供了一个有用的扩展,即可以定义一个宏,该宏在输入文件中存在空白行时执行。 此功能首先在准备宏命令文件本身时很有用,因为任何渗入的空白行都会出现在输出文档中。 稍后,空白行宏可以重新分配给例如用户的文档的默认段落格式。
在宏集合顶部附近定义的以下宏将通过stderr警告用户文件中存在任何空白行
\# continuing the alias scheme: .ALIAS BLANKMAC blm .ALIAS MESSAGE tm .ALIASNR _FILE .F .ALIASNR _LINE .c \# define the macro: .MACRO GOTBLANK __END__ . MESSAGE \ Notice: blank line in file \\n[_FILE], line \\n[_LINE]. .__END__ \# assign this macro to fire at blank lines: .BLANKMAC GOTBLANK在宏命令文件末尾,空白行宏可以重新分配给另一个宏,例如默认段落控制
.BLANKMAC <p>还要从这个例子中注意到,在 groff 处理期间报告消息的技术可以构建到任何宏定义中。
.MACRO MYMACRO __END__Groff 启用了\\$0宏内部的转义符来列出调用宏的名称。 在开发宏时,这些消息可用于显示内部变量的状态,并在其他方面帮助调试。
(some stuff here) . MESSAGE Execution of \\$0 in file \\n[_FILE], line \\n[_LINE]. (some more stuff) .__END__