# rehype-typst **[rehype](https://github.com/rehypejs/rehype)** plugin to render elements with a `language-math` class with [Typst](https://github.com/typst/typst). ## Contents - [rehype-typst](#rehype-typst) - [Contents](#contents) - [What is this?](#what-is-this) - [When should I use this?](#when-should-i-use-this) - [Install](#install) - [Use](#use) - [API](#api) - [`unified().use(rehypeTypst[, options])`](#unifieduserehypetypst-options) - [Returns](#returns) - [Markdown](#markdown) - [HTML](#html) ## What is this? This package is a [unified](https://unifiedjs.com/explore/package/unified/) ([rehype](https://github.com/rehypejs/rehype)) plugin to render math. You can add classes to HTML elements, use fenced code in markdown, or combine with [remark-math](https://github.com/remarkjs/remark-math) for a `$C$` syntax extension. ## When should I use this? This project is useful as it renders math with Typst at compile time, which means that there is no client side JavaScript needed. ## Install This package is [ESM only](https://nodejs.org/api/esm.html#modules-ecmascript-modules). In Node.js (version 16+), install with [npm](https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager): ```sh npm install @myriaddreamin/rehype-typst ``` ## Use Say our document `input.html` contains: ```html
Lift(L) can be determined by Lift Coefficient
(C_L) like the following equation.
L = 1/2 rho v^2 S C_L
```
…and our module `example.js` contains:
```js
import rehypeTypst from '@myriaddreamin/rehype-typst'
import rehypeParse from 'rehype-parse'
import rehypeStringify from 'rehype-stringify'
import {read, write} from 'to-vfile'
import {unified} from 'unified'
const file = await unified()
.use(rehypeParse, {fragment: true})
.use(rehypeTypst)
.use(rehypeStringify)
.process(await read('input.html'))
file.basename = 'output.html'
await write(file)
```
…then running `node example.js` creates an `output.html` and open `output.html` in a browser to see the rendered math.
## API
This package exports no identifiers.
The default export is `rehypeTypst`.
### `unified().use(rehypeTypst[, options])`
Render elements with a `language-math` (or `math-display`, `math-inline`)
class with [Typst](https://github.com/typst/typst).
###### Returns
Transform ([`Transformer`][unified-transformer]).
## Markdown
This plugin supports the syntax extension enabled by
[remark-math](https://github.com/remarkjs/remark-math).
It also supports math generated by using fenced code:
````markdown
```math
C_L
```
````
## HTML
The content of any element with a `language-math`, `math-inline`, or
`math-display` class is transformed.
The elements are replaced by what Typst renders.
Either a `math-display` class or using `` will
result in “display” math: math that is a centered block on its own line.
[unified-transformer]: https://github.com/unifiedjs/unified#transformer