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
See the manual PDF in doc/.
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 themathBackend
configuration setting. mathblog uses the MathJax CDN for MathJax resources.
- MathJax if you choose
-
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.
- The TikZ and pgfplots LaTeX packages if you set