
# Math Markdown


The aim of the Math Markdown library is
to provide a tool for rendering Markdown
text with embedded math-mode TeX, e.g.,

```
This **is** a test: $a^2 + b^2 = c^2$.
```

At the moment, the "version" of Markdown
we have implemented is primitive. Nonetheless, it is quite serviceable.  See
[markdown.minilatex.app](https://markdown.minilatex.app)
for a working example.

We will be working to expand the coverage
of Math Markdown.

## Example

To convert text to Html, do something like this:

```
MMarkdown.toHtml [ ] "This **is** a test: $a^2 + b^2 = c^2$."
```

## Demo app

There is a demo in `./app`.  To run
it, go into that folder and say `sh make.sh`.  Then
double-click on `index.html`.

## Markdown extensions

I am trying to be conservative about extensions to
Markdown.  However, there is one that I thought
important enough to add: poetry blocks.  These
are like quotation blocks, except that they begin
with ">>" instead of ">".  Line endings are respected
in poetry blocks.

## Technical stuff: the Differ module

Math Markdown exposes only two modules — `MMarkdown` and `Differ`.
The purpose of the Differ module is to speed up the parse-render
operation by reparsing and rerendering only text that has been
changed.  This module is used in the demo app.

I addition increased speed, using `Differ` results in a smoother
user experience, since only small parts of the document being
edited need to be re-processed.
