In MojoMojo, you can write wiki pages using HTML and one of two popular lightweight markup languages: Textile and Markdown. HTML is also available, for a few good reasons.
Textile2 is an extension to Textile, adding extended blocks (blocks that can contain a newline). MultiMarkdown is an extension to Markdown, adding support for tables, footnotes, bibliography, automatic cross-references, glossaries, appendices, definition lists, math syntax, anchor and image attributes, and document metadata.
To play with the markup languages, you can use the Markdown testbed or the Textile 2 web page.
Generally, Markdown is bit more cryptic but more powerful, while Textile is simpler and easier to read. Textile is meant to be combined with HTML for more complex documents. Below are the basic differences between the two syntaxes.
h1. h2. h3. h4. h5. h6.
# ## ### #### ##### ######
Markdown makes it difficult to read what section level your at as you go deeper then the 5th heading. On the other hand, Markdown offers a more visual syntax for level 1 headings,
Main Header ========
and for level 2 headings:
Sub Header --------
Some complaints against the Markdown link syntax include forgetting which goes first (the link title or the URL) and what types of brackets are around each. Other complaints are the need to escape parentheses in URLs (which are valid characters), when the
[link title]<URL> syntax would have been much better.
Complaints against Textile include the need to escape a double quote in the link title (
"How free markets "address" health care":http://krugman.blogs.nytimes.com/2009/07/25/why-markets-cant-cure-healthcare/), and unclear end of links: some parsers may include the final period in
"Foo Bar":http://foo.com/bar., while others may not. Markdown is more powerful and clearer.
"http://mojomojo.org/":http://mojomojo.org/(note that some implementations, but not the one MojoMojo uses, automatically hyperlink URLs, which makes it impossible to disable automatic hyperlinking via the markup)
The Textile markup has longer historical backing with _ and * being used way before HTML to convey "underline" and "bold".
Markdown justifies its choice in the light of semantic markup: thinking in terms of "bold" and "italic" is not semantic; other media (e.g. speech synthesizers for the visually impaired) cannot render "bold" or "italic". The semantic meaning is "emphasis" and "strong emphasis". Markdown is semantic.
Textile doesn't interpret emphasis right inside parentheses: neither
(_italics_) will be rendered with formatting; instead, the two strings will be output verbatim.
==around whatever content you don't want to Textile
<div>. This comes in handy when pasting chunks of HTML like counters or comment widgets. To force Markdown to interpret markup in
<div>s, add a markdown="1" attribute to the div. (Note: this doesn't currently work in Text::Markdown (the module used by MojoMojo), but is being worked on).
_will be rendered literally, not as an underscore)
<del>). Markdown is not processed within block-level HTML tags (
` etc.). While you can't use a Markdown-stylelink` inside an HTML table, for example, this is flagged as a feature request for Text::Markdown.
as the footnote anchor and
fn1. My foonotewhere the footnote text should appear. On the other hand, it is impossible to define named footnotes, which are extensively used on Wikipedia in large documents, or when one reference substantiates multiple facts.
[^my_footnote] ... [^my_footnote]: A note about my foot. A multiple references to the same footnote bug in MultiMarkdown causes the footnote to be repeated for each reference, and the anchor counter to increase.
<tbody>sections). No vertical alignment or row spanning. Pipe characters in text within table cells must be escaped as
|(backslash-escaping doesn't work in this case with MultiMarkdown).
Example copied from the MultiMarkdown syntax guide:
|First Header||Second Header||Third Header|
|And more||And more|
Textile2: newlines break lists. It thus becomes impossible to render blockquotes or blocks of code in lists because the "bq." or "bc." block signature requires being surrounded by blank lines, and blank lines break lists:
# First, bq. Avoid problems, and you'll never be the one who overcame them. -- Richard Bach # Second item, but will be numbered "1" bq. There is no elevator to success. You have to take the stairs.
To achieve this, one must fall back to HTML.
Markdown's documentation explicitly tells how to "put a blockquote within a list item" (or a code section). This very list including the code section above has been written using Markdown.
You can submit your preference for Markdown vs. Textile at the Mark-it-up survey.
Author: Dan Dascalescu
Thanks to Mateu X. Hunter for the initial draft.