https://github.com/md2docx/math
Plugin to convert mathematical expressions in Markdown (MDAST) to DOCX using LaTeX-style syntax. Integrates seamlessly with mdast2docx.
https://github.com/md2docx/math
Last synced: 10 months ago
JSON representation
Plugin to convert mathematical expressions in Markdown (MDAST) to DOCX using LaTeX-style syntax. Integrates seamlessly with mdast2docx.
- Host: GitHub
- URL: https://github.com/md2docx/math
- Owner: md2docx
- License: mpl-2.0
- Created: 2025-03-25T18:56:48.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-07T01:08:37.000Z (10 months ago)
- Last Synced: 2025-08-07T03:08:54.054Z (10 months ago)
- Language: TypeScript
- Size: 1.44 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: contributing.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# `@m2d/math` 
[](https://github.com/md2docx/math/actions/workflows/test.yml) [](https://codecov.io/gh/md2docx/math) [](https://www.npmjs.com/package/@m2d/math)  
> A plugin that transforms LaTeX-style math (inline and block) into DOCX-compatible equations using docx.
> This package expects that the math nodes have already been extracted using `remark-math` plugin.
---
## 📦 Installation
```bash
npm install @m2d/math
```
```bash
pnpm add @m2d/math
```
```bash
yarn add @m2d/math
```
---
## 🚀 Overview
The `@m2d/math` plugin for [`mdast2docx`](https://github.com/mayankchaudhari/mdast2docx) enables support for **LaTeX math rendering** in DOCX exports. It parses inline and block-level math expressions written in LaTeX syntax and converts them into proper Word-compatible Math elements using the `docx` library.
> Supports superscripts, subscripts, fractions, radicals, summations, symbols, and more.
---
## ✨ Features
- Parses LaTeX-style math expressions
- Converts math to `docx.MathRun`, `docx.MathFraction`, `docx.MathRadical`, etc.
- Supports inline and block math (`$...$`, `$$...$$`)
- Supports standard math macros like `\frac`, `\sqrt`, `\sum`, `\alpha`, and many others
- Handles superscripts (`^`) and subscripts (`_`) intelligently
- Gracefully ignores unsupported macros like `\left`, `\right`, etc.
---
## 🛠️ Usage
```ts
import { toDocx } from "@m2d/core";
import { mathPlugin } from "@m2d/math";
const plugins = [mathPlugin()];
const buffer = await toDocx(mdastTree, {
plugins,
});
```
---
## 🧪 Example
### Input Markdown (via MDAST)
```md
This is inline math: $E = mc^2$
$$
\frac{a^2 + b^2}{c^2} = 1
$$
```
### Output DOCX
- Inline math (`$E = mc^2$`) → `E = mc²` as a Word MathRun.
- Block math renders as full equation paragraphs.
---
## ⚙️ Internals
- Uses [`latex-math`](https://www.npmjs.com/package/latex-math) to parse LaTeX math AST.
- Converts LaTeX nodes to `docx.MathRun[]` elements.
- Supports common math macros with fallback to Unicode symbols via an internal symbol map.
- Integrates seamlessly with `@m2d/core`.
---
## 🧩 Supported Macros
Includes (but not limited to):
```
\frac, \sqrt, \sum, \int, \alpha, \beta, \theta, \leq, \geq, \neq, \infty, \cdot
```
---
## **⚠️ Limitations**
- Does not support full LaTeX environments (`\begin{align}`, etc.)
- Complex expressions may need pre-processing
- Does not render styled math (`\textcolor`, etc.)
---
## ⭐ Support Us
If you find this useful:
- ⭐ Star [mdast2docx](https://github.com/tiny-md/mdast2docx) on GitHub
- ❤️ Consider [sponsoring](https://github.com/sponsors/mayank1513)
---
## 🧾 License
MIT © [Mayank Chaudhari](https://github.com/mayankchaudhari)
---
Made with 💖 by Mayank Kumar Chaudhari