MultiMarkdown 3.0 Roadmap

02/03/2011 12:08:42

I wanted to take a few minutes to lay out my plans for further development of MMD 3.0. As you have probably noticed, MMD 3.0b1 is currently the latest release, though some further work on the development branch is available on the github site. Currently, I believe all of the syntax features are included and working (with exception of previously mentioned intentional changes).

XSLT Support

During the beta phase, my intention is to finish modifying the basic XSLT files (xhtml2latex.xslt, memoir.xslt, beamer.xslt) to generate nearly identical output to the mmd binary when applied to the same source file.

This means one can run:

multimarkdown -t latex file.txt > file.tex


mmd2xslt file.txt

which is basically a shortcut for:

multimarkdown file.txt | xsltproc -nonet -novalid /path/to/xhtml2latex.xslt -

(The same approach could be used for memoir.xslt or beamer.xslt.)

The first version will be faster, and relies only on a functioning installation of MMD 3. The second approach first converts to XHTML, and then applies the appropriate stylesheet (plain, memoir, or beamer) to convert the XHTML into LaTeX. This will be slower, and requires a functioning installation of xsltproc. The mmd2xslt script runs on Mac or Linux, but not on Windows. The same approach could probably be built into a .bat file, or a perl script.

The one advantage of the xslt approach is that it allows you to customize the LaTeX output for specific needs. The XSLT files written for MMD 2 will need some modifications to work properly with MMD 3, but it can be done.

I have not completely decided, but I suspect that the “official” policy towards the XSLT files will be that I will maintain the three core XSLT files and do my best to ensure that they remain compatible with “pure” MMD 3 output. The only difference might have to be slight variation in the number of newlines in certain points of the output, but nothing that changes the resulting PDF.

I plan to write several batch files for Windows that will handle the basics of these, but they will require the user to specify which version of the xslt to apply. The script for Mac/Unix reads the metadata and then chooses the correct XSLT from among the three defaults. I don’t know enough about Windows bat files to do this, and have no desire to go messing about with this. I figure any Windows users knowledgeable enough to want to customize XSLT files can come up with their own command-line workflow.

Backwards compatibility

I will need to update a few scripts to make sure that backwards compatibility is maintained for Scrivener. Even if the MultiMarkdown syntax changes a bit, and people need to change their XSLT files (or better, move away from XSLT) - the underlying mechanism needs to remain consistent so that the Scrivener application still works.

And I am not getting rid of MMD 2 - it will still be available for anyone who wants to use it.


As I put the finishing touches on MMD 3, I plan on rewriting the MultiMarkdown documentation. My goal is to have one github repository that functions as the source, likely using the github wiki to make it easy for others to contribute. This source can then easily be included in other repositories as needed, and used to generate HTML and PDF versions of the documentation.

Important considerations for the documentation:

  • write the document in such a way that it is easy to view on the github wiki which only interprets Markdown, not MultiMarkdown; but also generate appropriate PDF output

  • include a FAQ section that can easily be linked to from other web pages and documentation to keep everything in one place

  • include explanation of the differences between different versions of MultiMarkdown that are easy for beginners to use


A big part of moving to the final release will be updating everything in a consistent manner to make clear:

  • the differences between MMD 2 and MMD 3
  • the difference between the regular approach and the XSLT approach
  • how to customize LaTeX output using the new non-XSLT approach

This will include updating links and renaming repositories appropriately, and announcing those changes.

Bug Fixes

Of course, I will continue to accept bug reports and fix them as I am able. I don’t anticipate adding any new syntax features, as I believe I have now added everything from MMD 2 that needs to be migrated.

I thank everyone for the bug reports that have been submitted thus far, and for any yet to come!

Similar Pages