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.
npm install @m2d/math
pnpm add @m2d/math
yarn add @m2d/math
The @m2d/math
plugin for 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.
- 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.
import { toDocx } from "@m2d/core";
import { mathPlugin } from "@m2d/math";
const plugins = [mathPlugin()];
const buffer = await toDocx(mdastTree, {
plugins,
});
This is inline math: $E = mc^2$
$$
\frac{a^2 + b^2}{c^2} = 1
$$
- Inline math (
$E = mc^2$
) →E = mc²
as a Word MathRun. - Block math renders as full equation paragraphs.
- Uses
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
.
Includes (but not limited to):
\frac, \sqrt, \sum, \int, \alpha, \beta, \theta, \leq, \geq, \neq, \infty, \cdot
- Does not support full LaTeX environments (
\begin{align}
, etc.) - Complex expressions may need pre-processing
- Does not render styled math (
\textcolor
, etc.)
If you find this useful:
- ⭐ Star mdast2docx on GitHub
- ❤️ Consider sponsoring
MIT © Mayank Chaudhari
Made with 💖 by Mayank Kumar Chaudhari