A ``macro`` is a little bit like a ``block``, but it can't be overridden. On the
positive side you can give a macro parameters. Blocks are evaluated much later
than macros.

A macro is a compile time construct like a ``define``. **MulleScion** deviates
again from TWIG in that there is no *imports* facility.

#### Example 1
{# a macro by itself, produces no output #}
{% macro table( border, cellpadding, list) %}
<table border="{{border}}" cellpadding="{{ cellpadding }}">
 {% for i in list %}
   <tr><td >{{ i }}</td></tr>
 {% endfor %}
{% endmacro %}

#### Example 2
This value {{ list }} is from the properties file

#### Example 3
{{ table( 1, 10, @( @"VfL", @"Bochum", @"1848")) }}

#### Example 4
And {{ list }} should now be as before the macro expansion

It can be helpful to understand the technical background, how MulleScion does
macros. The parser creates objects for commands and expressions. A macro is
such a chain, that gets copy/pasted into the current parse situation whenever
a macro is called. The parameters are then used to replace identifier values.

Can macro/endmacro be used in multi-line statements ? Preferably not.