diff --git a/.eleventy.js b/.eleventy.js index 0e65e05..9ca6496 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,5 +1,6 @@ const Image = require("@11ty/eleventy-img"); const path = require("path"); +const markdownItKatex = require("@vscode/markdown-it-katex").default; function imageShortcode(src, alt, sizes = "100vw") { const inputPath = path.join("img", src); @@ -54,6 +55,17 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPassthroughCopy("img"); eleventyConfig.addPassthroughCopy("favicon.svg"); + // KaTeX: render $$...$$ at build time into static markup. Ship katex.min.css + // plus its fonts/ as a sibling so the stylesheet's url(fonts/...) resolves. + eleventyConfig.addPassthroughCopy({ + "node_modules/katex/dist/katex.min.css": "css/katex.min.css", + "node_modules/katex/dist/fonts": "css/fonts", + }); + + eleventyConfig.amendLibrary("md", (md) => { + md.use(markdownItKatex, { throwOnError: false, errorColor: "#cc0000" }); + }); + eleventyConfig.addShortcode("image", imageShortcode); eleventyConfig.addShortcode("heroImage", heroImageShortcode); diff --git a/_includes/base.njk b/_includes/base.njk index 00ad2ca..07f0f60 100644 --- a/_includes/base.njk +++ b/_includes/base.njk @@ -6,6 +6,7 @@ {% if title %}{{ title }} — un:prompted{% else %}un:prompted{% endif %} +