A package for managing a static, mathematically-inclined web log
Haskell HTML CSS
Switch branches/tags
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



mathblog is a Haskell program targeted at people who want to write statically-generated, mathematically-themed weblogs. It supports:

  • Extended Markdown input syntax as supported by the Pandoc library

  • Inline and block-level TeX math rendered by MathJax or LaTeX

  • Function graphing with TikZ / pgfplots LaTeX packages

  • Integration of Javascript-based web services such as Disqus

  • Template-based document rendering with support for layout and style customization

Getting Started

See the manual PDF in doc/.

Project vision

I wrote mathblog with a very specific set of requirements in mind, motivated by the following principles:

  • A blog should be easy to create, host, and update.

  • A blog should be easy to maintain.

  • I should be able to edit posts in my editor of choice and write them in an intelligent textual markup language.

  • It should be easy to embed high-quality mathematical symbols and equations in the blog posts.

As a result, mathblog has the following properties:

  • The software is composed of a single executable which will automatically take care of creating your blog and regenerating pages when your post markup changes.

  • All content is stored in plain text files and is generated statically. No database or web framework is used.

  • A mathblog can be hosted with a simple static fileserver such as thttpd, Lighttpd, or Apache.

  • Blog posts are written in the Markdown format with extensions, as supported by the Pandoc document converter.

  • Math is embedded with $...$ or \(...\) for inline math and $$...$$ or \[...\] for block-level math.

These properties have some nice advantages; your blog content is cacheable and can be subjected to revision control. Posts are easy to edit and editing doesn't require a web browser. The static file representation model means you can compose a blog post on your laptop and get it just right using a local installation of mathblog, then push it up to your server to post it to your public blog.


mathblog takes advantage of three primary software components:

  • Pandoc, a document-processing library.

  • Math typesetting packages:

    • MathJax if you choose mathjax for the value of the mathBackend configuration setting. mathblog uses the MathJax CDN for MathJax resources.
  • Function graph plotting packages:

    • The TikZ and pgfplots LaTeX packages if you set tikz = yes in your config. This is the recommended backend for function graph plotting.