Maruku is a Markdown interpreter written in Ruby.
Last release is version 0.7.2 – 2014-05-26.
Install using rubygems:
$ gem install maruku
Use this command to update to latest version:
$ gem update maruku
The official repository has moved to GitHub: https://github.com/bhollis/maruku
Maruku allows you to write in an easy-to-read-and-write syntax, like this:
Then it can be translated to HTML:
or LaTeX, which is then converted to PDF:
Maruku implements:
the original Markdown syntax (HTML or PDF), translated by Maruku.
all the improvements in PHP Markdown Extra.
a new meta-data syntax
Authors: Maruku has been developed so far by Andrea Censi. The current maintaner is Ben Hollis. Many other people contributed patches; a partial list is in the AUTHORS file in the source distribution.
The name of the game: Maruku is the romaji transliteration of the katakana transliteration of “Mark”, the first word in Markdown. I chose this name because Ruby is Japanese, and also the sillable “ru” appears in Maruku.
Table of contents: (auto-generated by Maruku!)
This is the basic usage:
require 'rubygems'
require 'maruku'
doc = Maruku.new(markdown_string)
puts doc.to_html
The method to_html
outputs only an HTML fragment, while the method to_html_document
outputs a complete XHTML 1.0 document:
puts doc.to_html_document
There is one command-line program installed: maruku
.
Without arguments, it converts Markdown to HTML:
$ maruku file.md # creates file.html
With the --pdf
arguments, it converts Markdown to LaTeX, then calls pdflatex
to transform to PDF:
$ maruku --pdf file.md # creates file.tex and file.pdf
Supported syntax
Output
XHTML
syntax
library.LaTeX
listings
package.Misc
Experimental features (not released yet)
ritex
, itex2mml
, blahtex
.blahtex
.Maruku implements a syntax that allows to attach “meta” information to objects.
See this proposal for how to attach metadata to the elements.
See the documentation for supported attributes.
Meta-data for the document itself is specified through the use of email headers:
Title: A simple document containing meta-headers
CSS: style.css
Content of the document
When creating the document through
Maruku.new(s).to_html_document
the title and stylesheet are added as expected.
Meta-data keys are assumed to be case-insensitive.
If you create a list, and then set the toc
attribute, when rendering Maruku will create an auto-generated table of contents.
* This will become a table of contents (this text will be scraped).
{:toc}
You can see an example of this at the beginning of this document.
If you want to use HTML entities, go on! We will take care of the translation to LaTeX:
Entity | Result |
---|---|
© | © |
£ | £ |
λ | λ |
— | — |
See the list of supported entities (pdf).
code
Note that this header contains formatting and it still works, also in the table of contents.
And This is a link with all sort of weird stuff
in the text.
tables
Col1 | Very very long head | Very very long head|
-----|:-------------------:|-------------------:|
cell | center-align | right-align |
Col1 | Very very long head | Very very long head |
---|---|---|
cell | center-align | right-align |
footnotes 1
* footnotes [^foot]
[^foot]: I really was missing those.
Markdown inside HTML elements
<div markdown="1" style="border: solid 1px black">
This is a div with Markdown **strong text**
</div>
This is a div with Markdown strong text
header ids
## Download ## {#download}
For example, a link to the download header.
definition lists
Definition list
: something very hard to parse
abbreviations or ABB for short.
I really was missing those. ↩