If the text string == (or nothing) follows the macro name, the expression
that follows is the entire text of the macro body. If the text string +=
follows the macro name, then more than one such definition is allowed
(but not required) in the document and the body of the macro consists of
the concatenation of all such expressions in the order in which they occur
in the input file. Such a macro is said to be additive and is
. Thus a macro body can either be defined in one place using one
definition (using ==) or it can be
throughout the input file in a
sequence of one or more macro definitions (using +=). If neither == and
+= are present, FunnelWeb assumes a default of ==.
Macros attached to product files cannot be additively defined. Additively
defined macros can have parameter lists and @Z and @M attributes, but
these must be specified only in the first definition of the macro. However,
+= must appear in each definition.
An ordinary macro definition can have from zero to five @L library level
markers. These define the macro definition s library level. A macro having
a particular name may be defined up to once at each library level, and each
such definition may be multipart (additive). At tangle time, the definition
having the lowest library level is used, with all other definitions of the
same name being completely ignored. This feature allows the creation of
general purpose include files that contain macro definitions that can be
overridden by definitions of the same name in the including file. Similarly,
it allows the creation of include files containing macro definitions that
override definitions in the including file. How you use the library macro
feature is up to you.
In the example below, the ugly duckling macro will be expanded to swan
because the swan definition has the lowest library level.
Note that the library macro facility imposes no requirement on the order of
appearance of the various macros of the same name; all that matters is the
library level. This means that macros defined in an include file that is
included at the
of a main file can be overridden by macros appearing
earlier in the main file.
http://www.ross.net/funnelweb/reference/parser_macros.html (2 of 3) [3/3/2000 10:46:46 PM]