1. Maruku: a Markdown-superset interpreter

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

2. Maruku features

data flow

Maruku allows you to write in an easy-to-read-and-write syntax, like this:

This document in Markdown

Then it can be translated to HTML:

This document in HTML

or LaTeX, which is then converted to PDF:

This document in PDF

Maruku implements:

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!)

2.1. Usage

2.1.1. Embedded 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

2.1.2. From the command line

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

2.2. Maruku summary of features

Experimental features (not released yet)

2.2.1. New meta-data syntax

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


the title and stylesheet are added as expected.

Meta-data keys are assumed to be case-insensitive.

2.2.2. Automatic generation of the table of contents

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).

You can see an example of this at the beginning of this document.

2.2.3. Use HTML entities

If you want to use HTML entities, go on! We will take care of the translation to LaTeX:


See the list of supported entities (pdf).

2.2.4. This header contains emphasis strong text and 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.

2.3. Examples of PHP Markdown Extra syntax

  1. I really was missing those.