feat(math): typst support(closes #1568) (#1569)
Co-authored-by: Aaron Pham <contact@aarnphm.xyz>
Co-authored-by: Aaron Pham <Aaronpham0103@gmail.com>
| | |
| | | |
| | | This plugin accepts the following configuration options: |
| | | |
| | | - `renderEngine`: the engine to use to render LaTeX equations. Can be `"katex"` for [KaTeX](https://katex.org/) or `"mathjax"` for [MathJax](https://www.mathjax.org/) [SVG rendering](https://docs.mathjax.org/en/latest/output/svg.html). Defaults to KaTeX. |
| | | - `renderEngine`: the engine to use to render LaTeX equations. Can be `"katex"` for [KaTeX](https://katex.org/), `"mathjax"` for [MathJax](https://www.mathjax.org/) [SVG rendering](https://docs.mathjax.org/en/latest/output/svg.html), or `"typst"` for [Typst](https://typst.app/) (a new way to compose LaTeX equation). Defaults to KaTeX. |
| | | - `customMacros`: custom macros for all LaTeX blocks. It takes the form of a key-value pair where the key is a new command name and the value is the expansion of the macro. For example: `{"\\R": "\\mathbb{R}"}` |
| | | |
| | | > [!note] Typst support |
| | | > |
| | | > Currently, typst doesn't support inline-math |
| | | |
| | | ## API |
| | | |
| | | - Category: Transformer |
| | |
| | | "dependencies": { |
| | | "@clack/prompts": "^0.7.0", |
| | | "@floating-ui/dom": "^1.6.12", |
| | | "@myriaddreamin/rehype-typst": "^0.5.0-rc7", |
| | | "@napi-rs/simple-git": "0.1.19", |
| | | "@tweenjs/tween.js": "^25.0.0", |
| | | "async-mutex": "^0.5.0", |
| | |
| | | "langium": "3.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/rehype-typst": { |
| | | "version": "0.5.0-rc7", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.5.0-rc7.tgz", |
| | | "integrity": "sha512-oIUmJzV8c+PZoV4TZwSupN9e06EaC2i0DpjU6NPe6y0HE7MoPOd35s6i+RjdSNPDguqBdP2MO4VaqnGahQW/ig==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@myriaddreamin/typst-ts-node-compiler": "^0.5.0-rc7", |
| | | "@types/hast": "^3.0.0", |
| | | "@types/katex": "^0.16.0", |
| | | "hast-util-from-html-isomorphic": "^2.0.0", |
| | | "hast-util-to-text": "^4.0.0", |
| | | "https-proxy-agent": "^7.0.2", |
| | | "unist-util-visit-parents": "^6.0.0", |
| | | "vfile": "^6.0.0" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler/-/typst-ts-node-compiler-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-RpMkKYyH7DDJwfX4hMhCkCbby5+rU7UMqRbCe6jmkvrW+FhW5YDxATYnRVEQLgRjbLwGDV5bECLr2/9no+Tn7A==", |
| | | "license": "Apache-2.0", |
| | | "engines": { |
| | | "node": ">= 10" |
| | | }, |
| | | "optionalDependencies": { |
| | | "@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-android-arm64": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-darwin-arm64": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-darwin-x64": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": "0.5.0-rc8", |
| | | "@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": "0.5.0-rc8" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm-eabi/-/typst-ts-node-compiler-android-arm-eabi-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-gSd1Nw4FNGixQTRo4isntK2Utupu4yfKRMTgmB6aLn57GVf6Z6NDA4YLw0lQ8dNB4OYceX1wMXmjnoLZGiTk6Q==", |
| | | "cpu": [ |
| | | "arm" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "android" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-android-arm64": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-android-arm64/-/typst-ts-node-compiler-android-arm64-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-1eSqCcLASxbdcicxFtYoXrBz4Rm7uhhWu/0DQ8Qo7bvNkzHuRtc4KkyuCZ6NCb/WzWuR4He20ySJZJRZurpgOQ==", |
| | | "cpu": [ |
| | | "arm64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "android" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-arm64": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-arm64/-/typst-ts-node-compiler-darwin-arm64-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-KKty+9lpfzogptuQs78JaFLijucrIdUxnYrCqWR2wHTgc0rnQaqHyec0HQ0oApNDc6u59xURebglQ/nHAVa+WQ==", |
| | | "cpu": [ |
| | | "arm64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "darwin" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-darwin-x64": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-darwin-x64/-/typst-ts-node-compiler-darwin-x64-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-e1P7GkyBV34h9eTDceZDC3qC0stDSN30R1gbZyniHOWu+qIKp0+RgQOLbkMj1Bk+vsOYGtb3zlqRJGEOCImz8w==", |
| | | "cpu": [ |
| | | "x64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "darwin" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm-gnueabihf/-/typst-ts-node-compiler-linux-arm-gnueabihf-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-HX19C6kWO8aeg+Ki4pQm2TTmYYLZEW653QwZEoCluAlX7O5HoGxCbsFLnE7v3+ag1dwBcoI2oH5czuKLI7GRvA==", |
| | | "cpu": [ |
| | | "arm" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "linux" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-gnu/-/typst-ts-node-compiler-linux-arm64-gnu-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-ElCka7rGGnB5nmY/Ei6fhS8JWNFRJDTagW1NM2feGvEazpMxDOQDWPg/bUXnUp7RS68L67gyXJSNFlHNWJM6/w==", |
| | | "cpu": [ |
| | | "arm64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "linux" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-arm64-musl/-/typst-ts-node-compiler-linux-arm64-musl-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-RbaI/i0rVzu2fyCcUPj89Zt/kmpHqJvxS/VRtbXR6xjXBUBisheRLvmWJrDdMMLf2mS0cwRPxQHGKCOSmB6U5A==", |
| | | "cpu": [ |
| | | "arm64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "linux" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-gnu/-/typst-ts-node-compiler-linux-x64-gnu-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-Mi2TruUZ97ZP920fMdvebRVYfMBxQZXnt14f0CqCy4tmg9sI7/ymBaGhT0vIo7A01cWr1DeTtoE4qUrOzXcDyA==", |
| | | "cpu": [ |
| | | "x64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "linux" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-linux-x64-musl/-/typst-ts-node-compiler-linux-x64-musl-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-I/GTNDl3Pb9/TyBRPtJqXuykkZ3d07PrSxnUKo1CelpJCk6S3h1BY0vl/3OwpENWGzy0FJehzkF0F8//3XzCgg==", |
| | | "cpu": [ |
| | | "x64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "linux" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-arm64-msvc/-/typst-ts-node-compiler-win32-arm64-msvc-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-G0c+IqUDPdUDnTKyFl1ajf47oGgV1asc3aYtl23U71RK4R0ILnyycgGjE/5E8hD0CLodq5xMV+zW+17TZ4VX0A==", |
| | | "cpu": [ |
| | | "arm64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "win32" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc": { |
| | | "version": "0.5.0-rc8", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/typst-ts-node-compiler-win32-x64-msvc/-/typst-ts-node-compiler-win32-x64-msvc-0.5.0-rc8.tgz", |
| | | "integrity": "sha512-qlZXCfLDUm1btpESBa4onU2ky7ALwdj369dAmgslNKyOl5JN8RYcyf9Hm7fp8WeVlxVjH2/2zJgPysAHf+SSRw==", |
| | | "cpu": [ |
| | | "x64" |
| | | ], |
| | | "license": "Apache-2.0", |
| | | "optional": true, |
| | | "os": [ |
| | | "win32" |
| | | ], |
| | | "engines": { |
| | | "node": ">= 10" |
| | | } |
| | | }, |
| | | "node_modules/@napi-rs/simple-git": { |
| | | "version": "0.1.19", |
| | | "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.19.tgz", |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/mdast-util-find-and-replace/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/mdast-util-find-and-replace/node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", |
| | | "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0", |
| | | "unist-util-is": "^6.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/mdast-util-from-markdown": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/mdast-util-phrasing/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/mdast-util-to-hast": { |
| | | "version": "13.2.0", |
| | | "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-katex/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/rehype-katex/node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-katex/node_modules/unist-util-visit-parents": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", |
| | | "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0", |
| | | "unist-util-is": "^6.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-mathjax": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/rehype-mathjax/-/rehype-mathjax-6.0.0.tgz", |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-mathjax/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/rehype-mathjax/node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-mathjax/node_modules/unist-util-visit-parents": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", |
| | | "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0", |
| | | "unist-util-is": "^6.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/rehype-parse": { |
| | | "version": "9.0.0", |
| | | "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/unist-util-find-after/node_modules/unist-util-is": { |
| | | "node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/unist-util-is/node_modules/@types/unist": { |
| | | "version": "3.0.3", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", |
| | | "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/unist-util-modify-children": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/unist-util-visit/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/unist-util-visit/node_modules/unist-util-is": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", |
| | | "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0" |
| | | }, |
| | | "funding": { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { |
| | | "node_modules/unist-util-visit-parents": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", |
| | | "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@types/unist": "^3.0.0", |
| | | "unist-util-is": "^6.0.0" |
| | |
| | | "url": "https://opencollective.com/unified" |
| | | } |
| | | }, |
| | | "node_modules/unist-util-visit-parents/node_modules/@types/unist": { |
| | | "version": "3.0.3", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", |
| | | "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/unist-util-visit/node_modules/@types/unist": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", |
| | | "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" |
| | | }, |
| | | "node_modules/universalify": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", |
| | |
| | | "dependencies": { |
| | | "@clack/prompts": "^0.7.0", |
| | | "@floating-ui/dom": "^1.6.12", |
| | | "@myriaddreamin/rehype-typst": "^0.5.0-rc7", |
| | | "@napi-rs/simple-git": "0.1.19", |
| | | "@tweenjs/tween.js": "^25.0.0", |
| | | "async-mutex": "^0.5.0", |
| | |
| | | import remarkMath from "remark-math" |
| | | import rehypeKatex from "rehype-katex" |
| | | import rehypeMathjax from "rehype-mathjax/svg" |
| | | //@ts-ignore |
| | | import rehypeTypst from "@myriaddreamin/rehype-typst" |
| | | import { QuartzTransformerPlugin } from "../types" |
| | | import { KatexOptions } from "katex" |
| | | import { Options as MathjaxOptions } from "rehype-mathjax/svg" |
| | | //@ts-ignore |
| | | import { Options as TypstOptions } from "@myriaddreamin/rehype-typst" |
| | | |
| | | interface Options { |
| | | renderEngine: "katex" | "mathjax" |
| | | renderEngine: "katex" | "mathjax" | "typst" |
| | | customMacros: MacroType |
| | | katexOptions: Omit<KatexOptions, "macros" | "output"> |
| | | mathJaxOptions: Omit<MathjaxOptions, "macros"> |
| | | typstOptions: TypstOptions |
| | | } |
| | | |
| | | interface MacroType { |
| | |
| | | return [remarkMath] |
| | | }, |
| | | htmlPlugins() { |
| | | if (engine === "katex") { |
| | | return [[rehypeKatex, { output: "html", macros }]] |
| | | } else { |
| | | return [[rehypeMathjax, { macros }]] |
| | | switch (engine) { |
| | | case "katex": { |
| | | return [[rehypeKatex, { output: "html", macros, ...(opts?.katexOptions ?? {}) }]] |
| | | } |
| | | case "typst": { |
| | | return [[rehypeTypst, opts?.typstOptions ?? {}]] |
| | | } |
| | | case "mathjax": { |
| | | return [[rehypeMathjax, { macros, ...(opts?.mathJaxOptions ?? {}) }]] |
| | | } |
| | | default: { |
| | | return [[rehypeMathjax, { macros, ...(opts?.mathJaxOptions ?? {}) }]] |
| | | } |
| | | } |
| | | }, |
| | | externalResources() { |
| | | if (engine === "katex") { |
| | | switch (engine) { |
| | | case "katex": |
| | | return { |
| | | css: [ |
| | | { |
| | | // base css |
| | | content: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css", |
| | | }, |
| | | ], |
| | | css: [{ content: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" }], |
| | | js: [ |
| | | { |
| | | // fix copy behaviour: https://github.com/KaTeX/KaTeX/blob/main/contrib/copy-tex/README.md |
| | | src: "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/contrib/copy-tex.min.js", |
| | | src: "https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/copy-tex.min.js", |
| | | loadTime: "afterDOMReady", |
| | | contentType: "external", |
| | | }, |
| | | ], |
| | | } |
| | | } else { |
| | | return {} |
| | | default: |
| | | return { css: [], js: [] } |
| | | } |
| | | }, |
| | | } |