Skip to content

0xpcut/wypst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

06bcd07 · Jun 16, 2024
Jan 21, 2024
May 3, 2024
Jan 21, 2024
May 3, 2024
May 3, 2024
May 3, 2024
May 3, 2024
Dec 5, 2023
May 3, 2024
Jun 16, 2024
May 3, 2024
May 3, 2024
May 3, 2024
Dec 5, 2023
May 3, 2024

Repository files navigation

wypst

Typst math typesetting for the web.

Current Project Status

I feel like there's something like 20% of work left to get Wypst in a more stable state, but for some months now I haven't been able to allocate the necessary time to do it.

There's still no conclusive roadmap for native HTML export in Typst, and because this project gained some traction, I'll make a commitment to complete all unimplemented functionality, fix issues, and add whatever is needed to achieve equivalency of obsidian-wypst to obsidian-typst.

Usage

You can load this library either by using a script tag, or installing it with npm.

Script tag (simple usage)

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/wypst.min.css" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/wypst.min.js" crossorigin="anonymous"></script>

<script>
    wypst.initialize().then(() => {
        wypst.renderToString("x + y"); // Test it out!
    })
</script>

Keep in mind that the javascript file is 17M, so if your internet is slow it might take some seconds to load.

npm package (advanced usage)

If having the wasm inlined directly is an incovenience, install the npm package

npm install wypst

You may then load the wasm binary

import wypst from 'wypst';
import wasm from 'wypst/dist/wypst.wasm';

await wypst.initialize(wasm);
wypst.renderToString("x + y"); // Test it out!

Keep in mind that you will probably need to tell your bundler how to load a .wasm file. If you have difficulties you can open an issue.

Rendering Typst Math

To render a Typst math expression, you can use either render or renderToString, as the example below shows:

wypst.render('sum_(n >= 1) 1/n^2 = pi^2/6', element); // Renders into the HTML element
wypst.renderToString('sum_(n >= 1) 1/n^2 = pi^2/6'); // Renders into an HTML string

Contributing

All help is welcome. Please see CONTRIBUTING.