Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

Pure Python library for LaTeX to MathML conversion.

# latex2mathml

Pure Python library for LaTeX to MathML conversion.

## Usage

import latex2mathml.converter

latex_input = "<your_latex_string>"
mathml_output = latex2mathml.converter.convert(latex_input)


## Examples

### Identifiers, Numbers and Operators

LaTeX Input MathML Output
x
$<mrow> <mi>x</mi> </mrow>$

xyz
$<mrow> <mi>x</mi> <mi>y</mi> <mi>z</mi> </mrow>$

3

$<mrow> <mn>3</mn> </mrow>$

444

$<mrow> <mn>444</mn> </mrow>$

12.34

$<mrow> <mn>12.34</mn> </mrow>$

12x

$<mrow> <mn>12</mn> <mi>x</mi> </mrow>$

3-2

$<mrow> <mn>3</mn> <mo>−</mo> <mn>2</mn> </mrow>$


### Subscripts and Superscripts

LaTeX Input MathML Output
a_b
$<mrow> <msub> <mi>a</mi> <mi>b</mi> </msub> </mrow>$

a^b
$<mrow> <msup> <mi>a</mi> <mi>b</mi> </msup> </mrow>$

a_b^c
$<mrow> <msubsup> <mi>a</mi> <mi>b</mi> <mi>c</mi> </msubsup> </mrow>$


### Fractions

LaTeX Input MathML Output
\frac{1}{2}

$<mrow> <mfrac> <mrow> <mn>1</mn> </mrow> <mrow> <mn>2</mn> </mrow> </mfrac> </mrow>$


### Roots

LaTeX Input MathML Output
\sqrt{2}

$<mrow> <msqrt> <mrow> <mn>2</mn> </mrow> </msqrt> </mrow>$

\sqrt[3]{2}

$<mrow> <mroot> <mrow> <mn>2</mn> </mrow> <mrow> <mn>3</mn> </mrow> </mroot> </mrow>$


### Matrices

LaTeX Input MathML Output
\begin{matrix}a & b \\ c & d \end{matrix}
$<mrow> <mtable> <mtr> <mtd> <mi>a</mi> </mtd> <mtd> <mi>b</mi> </mtd> </mtr> <mtr> <mtd> <mi>c</mi> </mtd> <mtd> <mi>d</mi> </mtd> </mtr> </mtable> </mrow>$

\begin{matrix*}[r]a & b \\ c & d \end{matrix*}
<mrow> <mtable> <mtr> <mtd columnalign='right'> <mi>a</mi> </mtd> <mtd columnalign='right'> <mi>b</mi> </mtd> </mtr> <mtr> <mtd columnalign='right'> <mi>c</mi> </mtd> <mtd columnalign='right'> <mi>d</mi> </mtd> </mtr> </mtable> </mrow>

A_{m,n} =
\begin{bmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots  & \vdots  & \ddots & \vdots  \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n}
\end{bmatrix}

$<mrow> <msub> <mi>A</mi> <mrow> <mi>m</mi> <mi>,</mi> <mi>n</mi> </mrow> </msub> <mo>=</mo> <mo>[</mo> <mtable> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>,</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>,</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>1</mn> <mi>,</mi> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>,</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>,</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mn>2</mn> <mi>,</mi> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮</mo> </mtd> <mtd> <mo>⋮</mo> </mtd> <mtd> <mo>⋱</mo> </mtd> <mtd> <mo>⋮</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>,</mi> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>,</mi> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯</mo> </mtd> <mtd> <msub> <mi>a</mi> <mrow> <mi>m</mi> <mi>,</mi> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow>$


### Unit Testing

pytest -v --show-capture=no --cov="." --cov-report=html --html=result/report.html --self-contained-html tests