## Mathjax, kramdown and Octopress

I’ve never planned on writing a blog post on such an issue; however making Mathjax work with kramdown and Octopress was a pain in the neck for the past couple hours, which led me to.

Warning: This blog post was written for Kramdown v0.14, which was updated to v1.0.0 on March 10, 2013.

### Configuration

My initial Mathjax configuration was done in the following three steps.

#### 1. Use kramdown

- Install kramdown with
`gem install kramdown`

^{1} - In
`_config.yml`

, change the markdown parser from`rdiscount`

to`kramdown`

. - In
`Gemfile`

, change`gem 'rdiscount'`

to`gem 'kramdown', '~> 0.13.8'`

.

#### 2. Include mathjax

- To
`source/_includes/custom/head.html`

, append the code below:

#### 3. Fix right-click bug

- This bug is well-known. In
`sass/base/_theme.scss`

, apply the change below.

### Problem

The problem was simple: *Mathjax collided with kramdown*.

In particular, kramdown seemed to have trouble with inline expressions, parsing LaTex expressions as below.

- INPUT:
`random variables $X_1, X_2, X_3$ from`

- OUTPUT: random variables $X_1, X_2, X_3$ from

### Solutions

There are two possible solutions. ^{2}

#### 1. Escape Markdown syntax

Octopress converts *markdown* to *html* on the server, and Mathjax renders LaTeX on the client. Then the actual solution is as simple as the problem: *escape Markdown syntax in the LaTex expressions*.

- INPUT:
`random variables $X\_1, X\_2, X\_3$ from`

- OUTPUT: random variables $X_1, X_2, X_3$ from

#### 2. Use double dollar sign

This is mentioned in the kramdown documentation. You can use this regardless of the mathjax configuration that assigns a single dollar sign for inline math expressions.

- INPUT:
`random variables $$X_1, X_2, X_3$$ from`

- OUTPUT: random variables from

I’ve tried using maruku instead of kramdown as some blogs said, and maruku was actually good at parsing inline equations. However, I had trouble producing new lines in block equations. Nonetheless, I’d be careful to mention one is better than the other; both maruku and kramdown are in active development, and state support to LaTeX expressions

*out-of-the-box*. ↩A SO answer mentioned wrapping Mathjax syntax with

`<div></div>`

; however this method did not seem elegant, and failed to work in some circumstances. ↩