|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
This function will define a new macro. You must provide a name for the macro. You do not specify any arguments, though the invocation may specify a set of name/value pairs that are to be active during the processing of the macro.
[+ define foo +] ... macro body with macro functions ... [+ enddef +] ... [+ foo bar='raw text' baz=<<text expression>> +]
Once the macro has been defined, this new macro can be invoked by
specifying the macro name as the first token after the start macro
marker. Alternatively, you may make the invocation explicitly invoke a
defined macro by specifying
INVOKE in the macro invocation. If
you do that, the macro name can be computed with an expression that gets
evaluated every time the INVOKE macro is encountered. See section 3.6.16 INVOKE - Invoke a User Defined Macro.
Any remaining text in the macro invocation will be used to create new name/value pairs that only persist for the duration of the processing of the macro. The expressions are evaluated the same way basic expressions are evaluated. See section 3.3 Macro Expression Syntax.
The resulting definitions are handled much like regular definitions, except: