m4_dnl To avoid annoying conflicts with quote characters, use m4_dnl U+2068 FIRST STRONG ISOLATE and U+2069 POP DIRECTIONAL ISOLATE m4_changequote(⁨,⁩) m4_dnl We also need to avoid the comment character ever doing absolutely m4_dnl anything. I don’t think I’ll ever use ASCII character 1 (SOH) lol. m4_changecom() m4_dnl Macro to create a page footer m4_define( m4_footer, ⁨m4_define(⁨m4___caller__⁩, m4___file__)m4_include(footer.gsp)⁩ ) m4_dnl Macro to properly format code blocks m4_define( m4_fmt_code, ⁨m4_esyscmd(fmt-code "$1" m4___file__)m4_dnl⁩ ) m4_dnl Macro for generating abbrevations m4_define(m4_abbr, ⁨@abbr .m4_translit($1, A-Z2, a-zt) {-$1}⁩)