#  Inline Attribute Lists


[Mmark](https://github.com/miekg/mmark) is a powerful markdown parser.

With Inline Attribute Lists ([IALs](http://kramdown.gettalong.org/syntax.html#block-ials))
you can add extra information to block elements, think of extra classes, attributes or an ID.
In Mmark these have the syntax: `{#id .class attr="key"}`. And should be specified *before* a
block level element.

These will mostly be backend specific, i.e. a `{color="blue"}` might do something in HTML5 output,
but does nothing in the XML v2 output. Worse yet; the XML might not validate anymore. Mmark try to
help here by white listing the allowed attributes for an element (this happens in each renderer and
is currently a work in progress).

Prime example is the difference between [XMLv2](https://tools.ietf.org/html/rfc7749) and
[XMLv3](https://tools.ietf.org/html/draft-iab-xml2rfc-03) input for list, where we have the
`style` (v2) and `type` (v3) attribute for list styling. Mmark will drop `style` in v3 and use
`type` and vice versa .

So you can just specify both and Mmark will do the "right thing" &trade;.

# BlockCode

In a blockcode you can specify the language of the block:

    ~~~ go
    // Go stuff here
    ~~~

Mmark will treat the `type` attribute in the same way as this language specifier, i.e. for XML
output this will become: `type="go"` and in HTML this will be `class="language-go`. So the following
is equivalent:

    {type="go"}
    ~~~
    // Go stuff here
    ~~~

The language specifier has precedence over the `type=` attribute.

Further more there is `prefix=".."` which allows the source code to be prefix with a string (at the
beginning of each line). This is handled by Mmark and the attribute `prefix` is dropped from the
final output.

Then there is `callout=".."` which enables
[callouts](https://miek.nl/2015/september/27/callouts-in-figures-in-mmark/) parsing in Mmark.
This is handled by Mmark and the attribute `callout` is dropped from the final
output.

Things like `align` are supported by each renderer and don't require special support from Mmark.

# Lists

An list in XML v2 supports only two attributes: `style` and `counter`. Style allows you to define
different bullet styles, i.e. `<list style="format (%I)">`. Counter is used to have a document wide
lists that keeps on incrementing. In Mmark you are better of using an example list.

For v3 there was a slight renaming, counter became group, style became type. Spacing and start were
added, spacing adds extra blank lines between the items and start allows you to specify with what
number to start (*not* supported in XML v2). Mmark is smart enough to detect the starting number of
a list:

~~~
2. item1
3. item2
~~~

will set `start=2` for you. Again for groups you're better of using example lists.

Also [see this blog post](https://miek.nl/2015/september/24/lists-in-lists-with-style/) on styling
lists.

