Co-authored-by: Aaron Pham <contact@aarnphm.xyz> Co-authored-by: Aaron Pham <Aaronpham0103@gmail.com>
This commit is contained in:
		@@ -11,9 +11,13 @@ This plugin adds LaTeX support to Quartz. See [[features/Latex|Latex]] for more
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										362
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										362
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -11,6 +11,7 @@
 | 
			
		||||
      "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",
 | 
			
		||||
@@ -714,6 +715,220 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -3956,36 +4171,6 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -4270,23 +4455,6 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -5474,36 +5642,6 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -5523,36 +5661,6 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -7285,10 +7393,11 @@
 | 
			
		||||
      "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"
 | 
			
		||||
      },
 | 
			
		||||
@@ -7297,6 +7406,12 @@
 | 
			
		||||
        "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",
 | 
			
		||||
@@ -7381,27 +7496,11 @@
 | 
			
		||||
      "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"
 | 
			
		||||
@@ -7411,6 +7510,17 @@
 | 
			
		||||
        "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",
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,7 @@
 | 
			
		||||
  "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",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,20 @@
 | 
			
		||||
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 {
 | 
			
		||||
@@ -21,32 +30,37 @@ export const Latex: QuartzTransformerPlugin<Partial<Options>> = (opts) => {
 | 
			
		||||
      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: [] }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user