A trivial Markdown to HTML converter
CSS Clojure
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
project.clj Fix --lang bug Dec 4, 2017



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 http://nixos.org/nix/install | 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 README.md to README.html:

$ emem README.md

To convert all .md files in the current directory:

$ emem .

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

$ emem -s README.md

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 list.md

To change the syntax highlighter CSS:

$ emem -S zenburn repairs.md

To list the available syntax highlighter styles:

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

To inline CSS:

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

To use full page width:

$ emem -f README.md

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 README.md to README.html:

(mm/convert "README.md")

To convert README.md to foo.html:

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

To convert multiple files:

(mm/convert ["foo.md" "bar.md" "baz.md"])

To convert multiple files, to different output names:

(mm/convert ["foo.md" "bar.md" "baz.md"]
            ["mu.html" "ka.html" "mo.html"])

To merge multiple files, to reminders.html:

(mm/convert ["buy.md" "projects.md" "fitness.md"]
            :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