Title: Math support in Maruku
LaTeX preamble: math_preamble.tex
LaTeX use listings: true
CSS: math.css style.css
use numbered headers: true

Math support in Maruku
======================

This document describes Maruku's support of inline LaTeX-style math.

There are many subtleties of which one must care for 
correctly serving the XHTML+MathML document to browsers.
In fact, *this documentation is __not__ enough to get you started*, 
unless you feel very adventurous.

* toc
{:toc}

Syntax
---------------------------------------

### Inline math

Inline math is contained inside couples of `$`. 

Everything inside will be passed as-is to LaTeX: no Markdown
interpretation will take place.

	Example: $x^{n}+y^{n} \neq z^{n}$ for $n \geq 3$

> Example: $x^{n}+y^{n} \neq z^{n}$ for $n \geq 3$

### Equations 

Equations are specified using either the `$$ ... $$` or `\[ ... \]`
LaTeX notation. Equations can span multiple lines.

	\[ 
	\sum_{n=1}^\infty \frac{1}{n} 
	\text{ is divergent, but } 
	\lim_{n \to \infty} \sum_{i=1}^n \frac{1}{i} - \ln n \text{exists.} 
	\]

> \[ 
> 	\sum_{n=1}^\infty \frac{1}{n} 
> 	\text{ is divergent, but } 
> 	\lim_{n \to \infty} \sum_{i=1}^n \frac{1}{i} - \ln n \quad \text{exists.} 
> \]

Some random AMSTeX symbols:

	$$ \beth \Subset \bigtriangleup \bumpeq \ggg \pitchfork $$ 

$$ \beth \Subset \bigtriangleup \bumpeq \ggg \pitchfork $$ 


## Cross references ## {#cross}

Create a label for an equation in two ways:

*	LaTeX style:
	
		Consider \eqref{a}:
	
		$$ \alpha = \beta  \label{a} $$

*	More readable style:

		Consider (eq:a):

		$$ \alpha = \beta $$        (a)
	 
You can mix the two.

Labels will work as expected also in the PDF output, whatever
style you use: Maruku will insert the necessary `\label` commands.

The following are 4 equations, labeled A,B,C,D:

$$ \alpha $$ (A)

\[ 
	\beta
\] (B) 

$$ \gamma \label{C} $$

\[ 
	\delta \label{D}
\]

You can now refer to (eq:A), (eq:B), \eqref{C}, \eqref{D}.


Enabling the extension
---------------------------------------

### On the command line 

Use the `-m` option to choose the kind of output. Possible choices are:

`--math-engine itex2mml` : Outputs MathML using [itex2mml](#using_itex2mml).  
`--math-engine ritex` : Outputs MathML using [ritex](#using_ritex).  
`--math-engine blahtex` : Outputs MathML using [blahtex](#using_blahtex).  
`--math-images blahtex` : Outputs PNGs  using [blahtex](#using_blahtex).

### With embedded Maruku

You have to enable the math extension like this:

	require 'maruku'          # loads maruku
	require 'maruku/ext/math' # loads the math extension

Use the following to choose the engine:

	MaRuKu::Globals[:html_math_engine] = 'itex2mml'
	MaRuKu::Globals[:html_png_engine] =  'blahtex'
	
Available MathML engines are 'none', 'itex2mml', 'blahtex'.
'blahtex' is the only PNG engine available.
	
External libraries needed
-------------------------

To output MathML or PNGs, it is needed to install one of the following libraries

### Using `itex2mml` ### {#using_itex2mml}

itex2mml supports much more LaTeX commands/environments than ritex.

Install itextomml with 

	$ gem install itextomml

This is a summary of the available LaTeX commands:

> <http://golem.ph.utexas.edu/~distler/blog/itex2MMLcommands.html>

Moreover, [Jacques Distler] is integrating Maruku+itex2mml+[Instiki].
You can find more information here:

> <http://golem.ph.utexas.edu/wiki/instiki/show/HomePage>

[Jacques Distler]: http://golem.ph.utexas.edu/~distler
[instiki]: http://golem.ph.utexas.edu/wiki/instiki/show/HomePage

### Using `ritex` ### {#using_ritex}

Install with 

	$ gem install ritex

ritex's abilities are very limited, but it is the easiest to install since, unlike `itextomml`, it is a pure-ruby implementation.

### Using `blahtex` ### {#using_blahtex}

Download from <http://www.blahtex.org>. Make sure you have
the command-line `blahtex` in your path.


Subtleties
----------

### Serving the right content/type ###


* Mozilla wants files to have the `.xhtml` extension.

...

### Where PNGS are put ###

*	`Globals[:math_png_dir]`

*	`Globals[:math_png_dir_url]`


### Styling equations ####

...

### Aligning PNGs ####


*	using `ex`

*	**IE7 bug**

...