Text formatter tools
It is nearly eight years since I wrote the answer below, I no longer use Grutatxt and now almost exclusively use MultiMarkdown, which adds a number of useful extensions to Markdown - the extended feature I use most is tables.
There are a number of extensions to Markdown which are not 100% compatible but which can be used almost interchangeably if you take care to use a common subset of features
- MultiMarkdown
- Github-flavored Markdown
- PHP Markdown Extra
There is good support for supersets of Markdown in many applications and languages. I've used PHP, Perl and Go (golang) support for extended Markdown
There are many desktop and mobile apps that support Markdown editing with live previews etc. I still use a plain-text editor though.
I personally don't use Pandoc but I believe it is well-maintained and probably the most versatile lightweight markup processor. It should be on anyone's shortlist.
I suggest starting by looking at Markdown, Textile and Grutatxt. But there are many:
List of plain-text markup and tools
- AFT written in Perl. Outputs html, latex, lout, RTF
- APTconvert no longer available? See Doxia below
- APT
- ASCIIDoc Outputs DocBook
- BBcode (alt)
- BHL An add-on for the EMACS editor
- Bobcat
- Creole
- Crossmark
- Deplate Written in Ruby. Outputs LaTex, HTML, DocBook
- Docfrac
- Doxia reads APT and others
- epydoc Mainly for Python API documentation
- etText Written in Perl. Outputs HTML
- gema Macro processor with templates for markup conversion
- Groff
- Grutatxt
- Highlight 160 programming languages to HTML, XHTML, RTF, TeX, LaTeX, SVG, BBCode and XML
- Lout similar to LaTex, outputs PS
- Markdown Written in Perl. Outputs HTML only. Used on SuperUser.com
- MultiMarkdown Extends Markdown with tables etc
- o7acode Outputs HTML only?
- otl Very configurable
- Pandoc Written in Haskell
- Pod Written in Perl
- Proletext Uses spaces and tabs as markup :(
- Regexxer Search/Replacer
- ReST Written in Python. Outputs only HTML?
- rdoc Written in Ruby
- setext
- sisu (alt)
- skribe
- spip More of a CMS?
- stx2any Converts structured text (stx) into other formats
- texy
- Textile
- text2html Written in Perl?
- txt2html
- txt2tags Not customizable
- Yodl
- Xilize Similar to textile markup
- Zoem Used to generate HTML or troff.
Other lists
- https://stackoverflow.com/questions/659227/compare-and-contrast-the-lightweight-markup-languages-textile-markdown-and-res
- https://stackoverflow.com/questions/2158312/language-for-plain-text-documentation
- http://en.wikipedia.org/wiki/List_of_lightweight_markup_languages
- http://outl.sourceforge.net/lightweight.html
- http://www.i-freeware-download.com/info/Lightweight-markup-language-ifpd-10420.aspx
Grutatxt
I like Grutatxt because it seems to me to be nearest to unadorned plain text and so the plain text is very readable.
I use GrutaTxt to generate HTML and PDF (via LaTeX) It handles tables quite well which Markdown doesn't so far as I know. I have a Perl script to add a table of contents and plug in a CSS stylesheet. I use recode to convert character encodings to UTF8. I have all this in a simple makefile so I can just edit the text file and type make
to publish it as a web page (and PDF simultaneously).
Comparison of markup for GrutaTxt, ASCIIDOC and APT
NL
= new line, SP
= space character(s)
Title
Markdown Title NL =====
Grutatxt Title NL =====
ASCIIDOC Title NL =====
APT --- NL Title NL --- NL Author NL --- NL Date
H1
Markdown Head NL ==== or # Head #
Grutatxt Head NL ====
ASCIIDOC Head NL ---- or == Head
APT * Head
H2
Markdown Head NL ---- or ## Head ##
Grutatxt Head NL ----
ASCIIDOC Head NL ~~~~ or === Head
APT ** Head
H3
Markdown ### Head ###
Grutatxt Head NL ~~~~
ASCIIDOC head NL ^^^^ or ==== Head
APT *** Head
H4
Markdown -
Grutatxt -
ASCIIDOC Head NL ++++ or ===== Head
APT **** Head
Bold
Markdown **word**
Grutatxt *word*
ASCIIDOC .word
APT <<word>>
Italic
Markdown *word*
Grutatxt _word_
ASCIIDOC -
APT <word>
Code
Markdown `words`
Grutatxt `words'
ASCIIDOC `words`
APT <<<words>>>
Line Break
Markdown words SP SP NL
Grutatxt -
ASCIIDOC -
APT words \ NL words
Non breaking space
Markdown -
Grutatxt -
ASCIIDOC -
APT word\ word
Comment
Markdown -
Grutatxt -
ASCIIDOC -
APT ~~ comments
HyperLink
Markdown [name](http://a.b.c)
Grutatxt http://a.b.c(name)
ASCIIDOC <<a.b.c, name>>
APT http://a.b.c
{{{http://a.b.c}name}}
Anchor
Markdown -
Grutatxt -
ASCIIDOC [[name]]
APT {name}
Unordered List
Markdown SP SP - words
Grutatxt SP * words
ASCIIDOC SP - words
APT SP * words
Ordered List
Markdown SP SP 1. words
Grutatxt SP # words
ASCIIDOC -
APT [[1]] words
Definition
Markdown -
Grutatxt SP * term: definition
ASCIIDOC term:: NL definition
APT [term] definition
Table
Markdown -
Grutatxt +---+---+
| a | b |
+---+---+
ASCIIDOC ~~~~~
h,h,h
~~~~~
a,b,c
d,e,f
~~~~~
APT *---*---+---:
|ctr|lft|rgt|
*---*---+---:
caption
Image
Markdown ![alt](http://a.b.c.png)
Grutatxt << NL <img src="cow.jpg" /> NL >>
ASCIIDOC -
APT [cow.jpg] caption
Preformatted
Markdown SP SP SP SP words or <pre> NL words NL </pre>
Grutatxt SP words
ASCIIDOC SP words
APT --- NL words NL ---
Horizontal Rule
Markdown NL ------ NL
Grutatxt ____
ASCIIDOC -
APT ====
Citation
Markdown -
Grutatxt ``words
ASCIIDOC -
APT -