7.3 Velocimacro Trivia

Velocimacros must be defined before they are first used in a template. This means that your inline #macro() declarations must be found by the Engine before usage.

This is important to remember if you try to #parse() a template containing inline #macro() directives. Because the #parse() invocation happens at runtime, and the parser looks at the macro definitions earlier, at parsetime. So loading a set of macro definitions using #parse() does not work. If you need to use a set of macros on more than one template, declare it as a Velomacro Library in the Velocity configuration.