mirror of
https://gitlab.com/MisterBiggs/brain-quartz.git
synced 2025-07-22 22:31:26 +00:00
.github
content
docs
quartz
cli
components
i18n
plugins
emitters
filters
transformers
citations.ts
description.ts
frontmatter.ts
gfm.ts
index.ts
lastmod.ts
latex.ts
linebreaks.ts
links.ts
ofm.ts
oxhugofm.ts
syntax.ts
toc.ts
index.ts
types.ts
vfile.ts
processors
static
styles
util
bootstrap-cli.mjs
bootstrap-worker.mjs
build.ts
cfg.ts
depgraph.test.ts
depgraph.ts
worker.ts
.gitattributes
.gitignore
.npmrc
.prettierignore
.prettierrc
CODE_OF_CONDUCT.md
Dockerfile
LICENSE.txt
README.md
globals.d.ts
index.d.ts
package-lock.json
package.json
quartz.config.ts
quartz.layout.ts
tsconfig.json
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import remarkMath from "remark-math"
|
|
import rehypeKatex from "rehype-katex"
|
|
import rehypeMathjax from "rehype-mathjax/svg"
|
|
import { QuartzTransformerPlugin } from "../types"
|
|
|
|
interface Options {
|
|
renderEngine: "katex" | "mathjax"
|
|
}
|
|
|
|
export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
|
|
const engine = opts?.renderEngine ?? "katex"
|
|
return {
|
|
name: "Latex",
|
|
markdownPlugins() {
|
|
return [remarkMath]
|
|
},
|
|
htmlPlugins() {
|
|
if (engine === "katex") {
|
|
return [[rehypeKatex, { output: "html" }]]
|
|
} else {
|
|
return [rehypeMathjax]
|
|
}
|
|
},
|
|
externalResources() {
|
|
if (engine === "katex") {
|
|
return {
|
|
css: [
|
|
// base css
|
|
"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/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",
|
|
loadTime: "afterDOMReady",
|
|
contentType: "external",
|
|
},
|
|
],
|
|
}
|
|
} else {
|
|
return {}
|
|
}
|
|
},
|
|
}
|
|
}
|