This is the stable v0.5 spec of Creole (2007-Feb-27). Also see reasoning for more information about individual markup elements.
Changes from Creole 0.4:
- space as escape character before ending triple curly braces in nowiki (see Add No Wiki Escape Proposal)
- embedded nowiki/preformatted is allowed in tables
- Changed: "Any markup except for images within a link will not be parsed." -> "At least images inside links must be supported. Parsing other markup within a link is not required (optional)."
- equal sign directly following pipe defines a table header (see Talk.Table)
- relaxed the "no markup allowed" rules
Overview
- Single element examples
- Bold and Italics
- Bold
- Italics
- Bold Italics
- Lists
- Unordered Lists
- Ordered Lists
- Headings
- Links - Internal and External
- Paragraphs
- Line breaks
- Preformatted
- Escaping preformatted/nowiki
- Horizontal Rule
- Image (inline)
- Tables
- Placeholder
- Mixed syntax examples
- Bold and/or italic links
- Bold, Italics, Links, Pre in Lists
Single element examples#
Bold and Italics#
Bold and italic text can be used inside paragraphs, list items and table cells. Links appearing inside bold and/or italic text should also become bold and/or italic. The bold/italic text will end at the end of paragraphs, list items and table cells -- thus it cannot span several of them.
Bold#
Creole:
**bold**
Recommended XHTML:
<strong>bold</strong>
Sample Output: bold
Italics#
Ignore for italics processing if immediately following http: or ftp:
Creole:
//italics//
Recommended XHTML:
<em>italics</em>
Sample Output: italics
Creole:
Bold and italics should //be able// to cross lines. But, should //not be... ...able// to cross paragraphs.
Recommended XHTML:
<p> Bold and italics should <em>be able</em> to cross lines. </p> <p> But, should //not be... </p> <p> ...able// to cross paragraphs. </p>
Sample output:
Bold and italics should be
able to cross lines.
But, should not be...
...able to cross paragraphs.
Bold Italics#
Creole:**//bold italics//** //**bold italics**// //This is **also** good.//
Recommended XHTML:
<strong><em>bold italics</em></strong> <em><strong>bold italics</strong></em> <em>This is <strong>also</strong> good.</em>
Sample Output:
Bold italics
Bold italics
This is also good
Unacceptable:
**//bold italics**// //**bold italics//**
Lists#
Bold, italics, links, nowiki can be used in list items, but they cannot span several list items. Whitespace is optional before and after the * or # characters, however a space is required afterwards if someone wishes to start a list element with bold text. A list element ends at the end of a line, although it can contain line breaks forced with \\. It is recommended to have support for a depth of at least five levels of nesting. Any line that does not start with a * or # (optionally preceded with some whitespace) ends the list.About unordered lists and bold: a line starting with (including optional whitespace before and afterwards), immediately following any list element on a line above, will be treated as a nested unordered list element. Otherwise it will be treated as the beginning of bold text. Also note that bold and/or italics cannot span lines in a list.
Unordered Lists#
Creole:
* Item 1 ** Item 1.1 * Item 2
Recommended XHTML:
<ul> <li>Item 1 <ul> <li>Item 1.1</li> </ul> </li> <li>Item 2</li> </ul>
Sample Output:
- Item 1
- Item 1.1
- Item 2
Ordered Lists#
Creole:
# Item 1 ## Item 1.1 # Item 2
Recommended XHTML:
<ol> <li>Item 1 <ol> <li>Item 1.1</li> </ol> </li> <li>Item 2</li> </ol>
Sample Output:
- Item 1
- Item 1.1
- Item 2
Headings#
Only three different sized levels of headings are required. Closing (right-side) equal signs are optional, don't need to be balanced and don't impact the kind of heading generated. Whitespace is not allowed before the left-side equal signs. Only whitespace characters are permitted after the closing equal signs. No markup has to be parsed within headings.
Creole:
= Level 1 (largest) = == Level 2 == === Level 3 === ==== Level 4 ==== ===== Level 5 ===== ====== Level 6 ====== === Also level 3 === Also level 3 = === Also level 3 == === **not** //parsed// ===
Recommended XHTML:
<h1>Level 1 (largest)</h1> <h2>Level 2</h2> <h3>Level 3</h3> <h4>Level 4</h4> <h5>Level 5</h5> <h6>Level 6</h6> <h3>Also level 3</h3> <h3>Also level 3</h3> <h3>Also level 3</h3> <h3>**not** //parsed//</h3>
Links - Internal and External#
Links can appear in paragraphs (also inside bold and italic text), list items and table cells. The links are bold or italic if they are part of bold or italic text. At least images inside links must be supported. Parsing other markup within a link is not required (optional).
Free-standing urls should be detected and turned into links. Single punctuation characters (,.?!:;"') at the end of urls should not be considered part of the url.
Creole:
[[link]] [[MyBigPage|Go to my page]] [[http://www.wikicreole.org/]] http://www.rawlink.org/, http://www.another.rawlink.org [[http://www.wikicreole.org/|Visit the WikiCreole website]] [[Weird Stuff|**Weird** //Stuff//]]
Recommended XHTML:
<a href="http://www.examplewiki.com/link">link</a> <a href="http://www.examplewiki.com/MyBigPage">Go to my page</a> <a href="http://www.wikicreole.org/">http://www.wikicreole.org/</a> <a href="http://www.rawlink.org/">http://www.rawlink.org/</a>, <a href="http://www.another.rawlink.org">http://www.another.rawlink.org</a> <a href="http://www.wikicreole.org/">Visit the WikiCreole website</a> <a href="http://www.examplewiki.com/Weird_Stuff">**Weird** //Stuff//</a>
Sample Output:
link
Go to my page
http://www.wikicreole.org/
http://www.rawlink.org/, http://www.another.rawlink.org
Visit the WikiCreole website
__Weird__ ''Stuff''
Paragraphs#
One or more blank lines end paragraphs. A list, table or preformatted block end paragraphs too.
Creole:
This is my text. This is more text.
Recommended XHTML:
<p>This is my text.</p> <p>This is more text.</p>
Sample Output: This is my text.
This is more text.
Line breaks#
There was a long discussion whether to use blog-style or wiki-style (legacy-style) line breaks. We decided to change the original blog-style line break recommendation (treat linebreaks as line breaks) from Creole 0.3 to the wiki-style linebreaks recommendation. Wikis must support forced line break syntax \\ .
We encourage engine developers that have already implemented the Creole 0.3 style (blog-style) line breaks not to throw away their implementation, but to add an option so that administrators can choose in which mode to run their installation. This way we hope to gain more experience with blog-style line breaks. In a blog-style line break mode, the forced line break syntax must be supported, so that line breaks will properly migrate when people copy text from a wiki with forced line break characters. Reasoning
\\ (wiki-style) for line breaks.
Creole:
This is the first line,\\and this is the second.
Recommended XHTML:
This is the first line,<br /> and this is the second.
Sample Output:
This is the first line,
and this is the second.
Creole:
* This is a single list item followed by a paragraph?
Recommended XHTML:
<ul> <li>This is a single list item</li> </ul> <p> followed by a paragraph </p>
Sample Output:
- This is a single list item
Preformatted#
This works in-line or as a block. No wiki markup is interpreted between these characters and all characters become monospace. As a block, the three curly braces should be on one line by itself to open and another line of three curly braces should be on a line by itself to close.
Creole:
{{{ //This// does **not** get [[formatted]] }}}
Recommended XHTML:
<pre> //This// does **not** get [[formatted]] </pre>
Sample Output:
//This// does **not** get [[formatted]]
Escaping preformatted/nowiki#
The preformatted/nowiki markup syntax requires some kind of an escaping mechanism. Fortunately, the escaping is only necessary when there is "}}}" at the beginning of a line present in the block. In this case, to avoid treating the braces as markup for the end of the block, it needs to be indented with a single space. Furthermore, any line consisting of only indented three closing curly braces will have one space removed from the indentation -- to allow representing any possible text inside the preformatted block.
So, for example, this markup:
{{{ int main(int argc, char *argv[]) { if argc>0 { if argc<=1 { --argc; }}} }}}
will produce this result:
<pre> int main(int argc, char *argv[]) { if argc>0 { if argc<=1 { --argc; }}} </pre>
Creole:
Some examples of markup are: {{{** <i>this</i> ** }}}
Recommended XHTML:
Some examples of markup are: <tt>** <i>this</i> **</tt>
Sample output:
Some examples of markup are: ** <i>this</i> **
Horizontal Rule#
Whitespace is optional before and after the hyphens, but no whitespace is allowed between them. The four hyphens must be the only characters (other than whitespace) on that line.
Creole:
----Recommended XHTML:
<hr />
Image (inline)#
Creole:
{{myimage.png|this is my image}}
Recommended XHTML:
<img src="myimage.png" alt="this is my image"/>
Tables#
All cells are separated by single pipes. The ending pipe is optional. You can embed links, bold, italics, monospace, line breaks and preformatted/nowiki in table cells. Equal sign directly following pipe defines a header. Headers can be arranged horizontally or vertically. Comparison details found on List Of Table Markups
Creole:
|=Heading Col 1 |=Heading Col 2 | |Cell 1.1 |Two lines\\in Cell 1.2 | |Cell 2.1 |Cell 2.2 |
Recommended XHTML:
<table> <tr> <th>Heading Col 1</th> <th>Heading Col 2</th> </tr> <tr> <td>Cell 1.1</td> <td>Two lines\\in Cell 1.2</td> </tr> <tr> <td>Cell 2.1</td> <td>Cell 2.2</td> </tr> </table>
Sample output:
Heading Col 1 | Heading Col 2 |
---|---|
Cell 1.1 | Two lines in Cell 1.2 |
Cell 2.1 | Cell 2.2 |
Placeholder#
When there is something advanced, a placeholder will show up, so users will not be confused seeing more than one syntax. (optional for wiki developers)
Creole:
<<x>>
Mixed syntax examples#
Bold and/or italic links#
Creole://[[Important page|this link is italicized]]// **[[Important page]]** //**[[Important page]]**//
Recommended XHTML:
<em><a href="http://www.examplewiki.com/Important_Page">this link is italicized</a></em> <strong><a href="http://www.examplewiki.com/Important_page">Important page</a></strong> <em><strong><a href="http://www.examplewiki.com/Important_page">Important page</a></strong></em>
Sample Output:
this link is italicized
Important page
Important page
Bold, Italics, Links, Pre in Lists#
Creole:* **bold** item * //italic// item # item about a [[certain page]] # {{{ //this// is **not** [[processed]] }}}
Recommended XHTML:
<ul> <li><strong>bold</strong> item</li> <li><em>italic</em> item</li> </ul> <ol> <li>item about a <a href="http://www.examplewiki.com/certain_page">certain page</a></li> <li><tt>//this// is **not** [[processed]]</tt></li> </ol>
Sample Output:
- bold item
- italic item
- item about a certain page
- //this// is **not** [[processed]]