With the exception of the markup supported within FootNotes, the MoinWiki and CreoleWiki parsers have identical macro syntax and features. The contents of this MoinWiki page will yield similar results when copied to a CreoleWiki page.
Features that are not working correctly are marked with MOINTODO:
There are four built-in macros.
The number of levels in the table of contents can be limited by passing an integer parameter.
Markup:
<<TableOfContents(3)>>
Result:
See TOC floated to right.
Markup:
Footnotes can be placed by using the macro syntax.<<FootNote(A macro is enclosed in double angle brackets, and '''may''' have markup.)>> By default footnotes are placed at the bottom of the page. Explicit placement of footnotes is accomplished by calling the macro without a parameter: <<FootNote()>> Subsequent footnotes<<FootNote(This footnote is placed at bottom of page by default.)>> will be numbered starting with 1 and placed at the bottom of the page by default.
Result:
Footnotes can be placed by using the macro syntax. 1
By default footnotes are placed at the bottom of the page. Explicit placement of footnotes is accomplished by calling the macro without a parameter:
1 A macro is enclosed in double angle brackets, and may have markup.
Subsequent footnotes 1 will be numbered starting with 1 and placed at the bottom of the page by default.
Markup:
Use a BR macro <<BR>>to force a line break.
Result:
Use a BR macro
to force a line break.
Markup:
Include an image (very similar to transclusion):
<<Include(help-common/logo.png)>>
- - - - end of <Include(help-common/logo.png)> - - - -
Include all items with names beginning with "archive" within all namespaces. Any regex will work,
but first character must be "^". Name and Namespace are separate Whoosh index fields, attempts
to include a leading namespace will fail.
<<Include(^archive)>>
- - - - end of <Include(^archive)> - - - -
Include a page with a heading level 6 inside a comment. Click the "Comments"
link inside Item Views to show/hide the inclusion.
{{{{#!wiki comment/dashed
<<Include(help-en/InclusionForMoinWikiMacros,My Favorite Page, 6)>>
}}}}
- - - - end of <Include(help-en/InclusionForMoinWikiMacros,My Favorite Page, 6)> - - - -Result:
Include an image (very similar to transclusion):

- - - - end of <Include(help-common/logo.png)> - - - -
Include all items with names beginning with "archive" within all namespaces. Any regex will work, but first character must be "^". Name and Namespace are separate Whoosh index fields, attempts to include a leading namespace will fail.
| Size | Timestamp | Name |
| 6190 | 2011-08-22 21:40:04 | images/moinmoin.png |
| 7029 | 2011-03-12 13:09:51 | images/moinmoin.svg |
| Size | Timestamp | Name |
| 6190 | 2011-08-22 23:40:04 | images/moinmoin.png |
| 7029 | 2011-03-12 14:09:52 | images/moinmoin.svg |
- - - - end of <Include(^archive)> - - - -
Include a page and a heading level 6 inside a comment. Click the "Comments" link inside Item Views to show/hide the inclusion.
- - - - end of <Include(help-en/InclusionForMoinWikiMacros,My Favorite Page, 6)> - - - -
MOINTODO: Some of the moin 1.9 parameters documented in https://moinmo.in/HelpOnMacros/Include are not supported. These include: from, to, sort, items, skipitems, titlesonly, and editlink.
Anchors are created (but invisible of course). Click here to scroll the window to the anchor following Result below.
Markup:
<<Anchor(anchorname)>>
Result:
Markup:
<<Date()>> <<Date(1434563755)>> <<Date(2002-01-23T12:34:56)>> Do this after <<Date()>> but before <<Date(2022-01-23T12:34:56)>>.
Result:
Do this after 2026-01-16z but before 2022-01-23z.
Markup:
<<DateTime()>> <<DateTime(1434563755)>> <<DateTime(2002-01-23T12:34:56)>> Do this after <<DateTime()>> but before <<DateTime(2022-01-23T12:34:56)>>.
Result:
Do this after 2026-01-16 16:39:12z but before 2022-01-23 12:34:56z.
The FontAwesome macro displays FontAwesome fonts. See https://fontawesome.com/search?o=r&m=free for the list of the 2,018 fonts available with FontAwesome version 6.
The format of the macro is:
<<FontAwesome(name,color,size)>>
The color and size parameters are optional.
The FontAwesome “name” parameter may include multiple space-separated names. The free fonts are divided into 3 groups: solid, regular (outline), and brands. If the name field consists of a single font name, then the font from the the solid group is displayed. To display a font from the regular group, add “regular” to the name field. To display a font from the brands group, add “brands”.
The FontAwesome color field may be an HTML color name or a hex digit color code with a leading #: #f00 or #F80000. The size field must be an unsigned decimal integer or float that will adjust the size of the character relative to the current font size: 2 or 2.0 will create double the character size, .5 will create a character half the current size.
Markup:
<<FontAwesome(thumbs-up,#f00,2)>> is similar to
<<FontAwesome(regular thumbs-up,red,2)>> but different from these spinners
<<FontAwesome(spin spinner,plum,2.5)>> <<FontAwesome(fan spin-reverse,orange,2.5)>>Result:
Loads I18N texts. If this browser is set to German/Deutsch the macro output will be: Einstellungen ("Settings" is included in the translation files).
Markup:
<<GetText(Settings)>>
Result:
For GetVal to work, there must be either a ConfigDict or WikiDict defined (see config docs). This example depends upon an item named help-en/WikiDict having specific metadata. See configuration docs for details.
Markup:
<<GetVal(help-en/WikiDict,var1)>>
Result:
The Icon macro displays an icon. The complete list of available icons are listed within /Icons.
Markup:
Here is the moin icon: <<Icon(moin-logo.png)>>
Result:
Here is the moin icon: ![]()
This section is partitioned into subsections, one for each ItemPageList parameter.
Most of the examples below search for descendents under the top-level "OtherTextItems" item, the only sample-wiki item that contains a significant number of descendents.
Markup:
The default is the current page: <<ItemList()>> An empty string gives the wiki root. <<ItemList(item="")>> An item that does not exist (potentially due to ACLs) produces a warning: <<ItemList(item="DoesNotExist")>> An item that has no children (potentially due to ACLs) produces a message stating so: <<ItemList(item="Home/subitem")>>
Result:
The default is the current page:
<<ItemList()>>
Item does not exist or read access blocked by ACLs: +slideshow/help-en/MoinWikiMacros
An empty string gives the wiki root. The output is suppressed here because it can produce a very long result list.
An item that does not exist (potentially due to ACLs) produces a warning:
<<ItemList(item="DoesNotExist")>>
Item does not exist or read access blocked by ACLs: DoesNotExist
An item that has no children (potentially due to ACLs) produces a message stating so:
<<ItemList(item="Home/subitem")>>
Item does not exist or read access blocked by ACLs: Home/subitem
Lists are unordered (ordered="False") by default (see above for examples).
Markup:
An ordered list: <<ItemList(item="help-en/OtherTextItems", ordered="True")>>
Result:
An ordered list:
Search for items where the descendent's name begins with the letter 'P'. Note that using the "startswith" parameter is more efficient than the equivalent "regex" expression:
Markup:
<<ItemList(item="help-en/OtherTextItems", startswith="P")>>
Result:
Markup:
Those items containing the string "Text" anywhere in the full path name:
<<ItemList(item="help-en/OtherTextItems", regex="Text")>>
Those items containing the string "Text" only in the descendent's name:
<<ItemList(item="help-en/OtherTextItems", regex="^.*/.*Text")>>
Those items containing a vowel as the 3rd-to-last character:
<<ItemList(item="help-en/OtherTextItems", regex="(?i)[aeiou].{2}$")>>Result:
Those items containing the string "Text" anywhere in the full path name:
Those items containing the string "Text" only in the descendent's name:
Those items containing a vowel as the 3rd-to-last character:
All of the following examples display just the "PlainText" item, except for the last example that displays the subitems of help-en/creole.
Markup:
Displayed using "FullPath" (the default, see examples above): <<ItemList(item="help-en/OtherTextItems", regex="PlainText", display="FullPath")>> Displayed using "ChildPath": <<ItemList(item="help-en/OtherTextItems", regex="PlainText", display="ChildPath")>> Displayed using "ChildName": <<ItemList(item="help-en/OtherTextItems", regex="PlainText", display="ChildName")>> Displayed using "UnCameled": <<ItemList(item="help-en/OtherTextItems", regex="PlainText", display="UnCameled")>> Displayed using "ItemTitle": <<ItemList(item="help-en/creole", display="ItemTitle")>>
Result:
Displayed using "FullPath":
Displayed using "ChildPath":
Displayed using "ChildName":
Displayed using "UnCameled":
Displayed using "ItemTitle":
The MailTo macro exports different markup when the user is logged in.
Markup:
<<MailTo(user AT example DOT org)>> <<MailTo(user AT example DOT org, write me)>>
Result:
<user AT example DOT org> write me <user AT example DOT org>The MonthCalendar macro is for those who need a calendar wiki integration or want to use MoinMoin as a Personal Information Manager.
Markup:
<<MonthCalendar(item,year,month,month_offset,fixed_height,anniversary)>>
For more details see /MonthCalendar
Create a H1 look-alike that will not be included in TableOfContents.
Markup:
<<PageTitle(My Page Title)>>
Result
Markup:
One random item: <<RandomItem()>> Five random items: <<RandomItem(5)>>
Result:
One random item:
Five random items:
This macro randomly selects a quote from a list in the specified item (default: FortuneCookies in the current namespace).
Markup:
A random Quote: Quote 1.: <<RandomQuote()>> Quote 2.: <<RandomQuote(help-en/FortuneCookies)>>
Result:
Two random quotes:
Try out MoinMoin version 2.0, see install docs at moin-20.readthedocs.io
The RandomQuote macro uses the item FortuneCookies by default
This macro displays the contents of the metadata defined in the "usergroup" attribute. Because this item has no metadata usergroup attribute, the result shown below represents sample output.
Markup:
<<ShowUserGroup()>>
Result:
['JillDoe', 'JaneDoeGroup', '+JohnDoe']
This macro displays the contents of the metadata defined in the "wikidict" attribute. Because this item has no metadata usergroup attribute, the result shown below represents sample output.
Markup:
<<ShowWikiDict()>>
Result:
{'dog': 'Hund', 'cat': 'Katze'}
A slideshow can be defined on a single wiki page, with the slides separated by level 1 and 2 headings. The text before the first heading is ignored. The macro creates a link to start the presentation.
Navigating through the slides works by various means:
Markup:
<<SlideShow()>>
Result:
TitleIndex gives a List of all Itemnames in the current namespace grouped by initials.
Markup:
<<TitleIndex()>>
Result:
Index of Namespace 'help-en' top | F | H | I | M | O | S | T | W | c | d | h | i | m | r | bottom
.top | F | H | I | M | O | S | T | W | c | d | h | i | m | r | bottom
Markup:
Verbatim macro Returns `same` __text__ '''as''' entered <<Verbatim(Returns `same` __text__ '''as''' entered)>> <<Verbatim(<script>alert(1);</script>)>>
Result:
Verbatim macro Returns same text as entered
1 This footnote is placed at bottom of page by default.
My Favorite Page
Level 1 on the included page
some text
Level 2 on the included page