The use of callouts in Mmark came from Asciidoc, they are “… a mechanism for annotating verbatim text”. In mmark they work like this.

In a codeblocks you can use <1>, or <2>, etc. to create a callout. After the codeblock/figure you can reference it. An example:

    Code  <1>
    More  <1>
    Not a callout \<3>

As you can see in <1> but not in \<1>. There is no <3>.

This will be rendered as:

                         Code  <1>
                         More  <2>
                         Not a callout <3>

As you can see in (1, 2) but not in <1>.  There is no <3>.

A callout can be escaped with a backslash. The backslash will be removed in the output (both in sourcecode and text). The callout identifiers will be remembered until the next code block.

Note that callouts are only detected with the IAL {callout="yes"} before the codeblock (or any other non-empty value).

Now, you don’t usually want to globber your sourcecode with callouts as this will lead to code that does not compile. To fix this the callout needs to be placed in a comment, but then your source show useless empty comments. To fix this mmark can optionally detect (and remove!) the comment and the callout, leaving your example pristine. This can be enabled by setting {callout="//"} for instance. The allowed comment patterns are //, /*, #, % and ;.