Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

emem is a trivial Markdown to HTML converter. This library leverages on markdown-clj, and hiccup to produce HTML.



[emem "0.2.50-SNAPSHOT"]





Install Nix, if you don’t have it, yet:

$ curl | bash

Then, install emem with:

$ nix-env -iA nixpkgs.emem


If you can’t use Nix, or you just want the JAR file, you can build a standalone JAR file that contains all the dependencies. To create one, install Leiningen, first. To build the JAR, run the following command inside the checkout directory:

$ lein uberjar

This command generates two JAR files. The file that we need is the standalone one—./target/uberjar/emem-0.2.50-SNAPSHOT-standalone.jar. Copy this file to ~/bin, as emem.jar.

$ cp target/uberjar/emem-0.2.50-*-standalone.jar ~/bin/emem.jar

Next, create a shell script to ease typing.

$ emacs ~/bin/emem

Then, put the following:

java -jar $HOME/bin/emem.jar $@

Save your changes, then make it executable:

$ chmod +x ~/bin/emem

Windows 32-bit PE

Once you have the standalone JAR, creating a Windows exe is relatively easy. Download Launch4j and use it to create the executable. The bare-minimum fields are:

  • Basic > Output file
  • Basic > Jar
  • Header > Header type
  • JRE > Min JRE version

The Output file and Jar fields are self-explanatory. For Header type, select Console, while for Min JRE version, specify 1.1.0.


If you are unable to build a JAR or EXE, you may download a binary release.



To convert to README.html:

$ emem

To convert all .md files in the current directory:

$ emem .

To convert and embed the CSS data to a standalone README.html:

$ emem -s

To convert all .md files in the directory ~/Desktop/notes/:

$ emem ~/Desktop/notes/

To convert all .md files in the current directory, and output them to the html/ directory:

$ emem -d html .

To change the top-level CSS:

$ emem -M custom.css

To change the syntax highlighter CSS:

$ emem -S zenburn

To list the available syntax highlighter styles:

$ emem -L | paste - - | expand -t 35

To inline CSS:

$ emem -C 'html { color: #FFF; background: #000; }'

To use full page width:

$ emem -f

To build in continuous mode:

$ emem -c ~/Desktop/notes/

In continuous mode emem will wait for changes to your files. When a change has been detected, it automatically rebuilds the HTML files. It will remain to monitor for changes, until Ctrl-C is pressed. The continuous mode works great when used with browser extensions that reload a page when a page gets updated. The ones I can suggest are:

When ran without arguments, emem will accept input from stdin. The following command accepts any Markdown-valid input, including regular text, then outputs to screen the raw HTML equivalent, using the -w option. It will remain to accept input, until Ctrl-D is pressed:

$ emem -w
# foo

The following is an equivalent command of the above:

$ echo '# foo\n**bold**\n_emph_' | emem -w

To learn more about the available options:

$ emem -h

An example of how emem is used to generate pages can be found here.

A short tutorial for common use cases is available here.


Add the following expression to (ns ...):

(:require [emem.core :as mm])

To convert to README.html:

(mm/convert "")

To convert to foo.html:

(mm/convert "" "foo.html")

To convert multiple files:

(mm/convert ["" "" ""])

To convert multiple files, to different output names:

(mm/convert ["" "" ""]
            ["mu.html" "ka.html" "mo.html"])

To merge multiple files, to reminders.html:

(mm/convert ["" "" ""]
            :merge true
            :out "reminders.html")

To convert a Markdown string to an HTML string:

(mm/markdown "# Blah")

To learn more about the available options:

(doc mm/convert)



Copyright 2015–2017 Rommel Martinez

Distributed under the Eclipse Public License