From 959fc726b7c617a68ce20e497d30fcd9eeb9aad6 Mon Sep 17 00:00:00 2001 From: Montagnard <928786745@qq.com> Date: Mon, 22 Dec 2025 01:55:59 +0800 Subject: [PATCH 1/3] Add support for TikzJax. --- .eleventy.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 1 + package.json | 1 + 3 files changed, 67 insertions(+) diff --git a/.eleventy.js b/.eleventy.js index 2c381874e..57399831c 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -7,6 +7,7 @@ const tocPlugin = require("eleventy-plugin-nesting-toc"); const { parse } = require("node-html-parser"); const htmlMinifier = require("html-minifier-terser"); const pluginRss = require("@11ty/eleventy-plugin-rss"); +const tex2svg = require("node-tikzjax").default; const { headerToId, namedHeadingsFilter } = require("./src/helpers/utils"); const { @@ -202,6 +203,11 @@ module.exports = function (eleventyConfig) { )}`; return res } + if (token.info === "tikz") { + const code = token.content.trim(); + const codeEscaped = md.utils.escapeHtml(code); + return `
TikZ render failed. See build log.\n\n${(texSource)}`);
+ }
+ }
+
+ return root.toString();
+ };
+ })());
+
eleventyConfig.addPassthroughCopy("src/site/img");
eleventyConfig.addPassthroughCopy("src/site/scripts");
eleventyConfig.addPassthroughCopy("src/site/styles/_theme.*.css");
diff --git a/package-lock.json b/package-lock.json
index 995776466..a257d9de2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,6 +26,7 @@
"markdown-it-mathjax3": "^4.3.1",
"markdown-it-plantuml": "^1.4.1",
"markdown-it-task-checkbox": "^1.0.6",
+ "node-tikzjax": "^1.0.3",
"npm-run-all": "^4.1.5",
"rimraf": "^4.4.1"
},
diff --git a/package.json b/package.json
index 584bbd56d..1763de96c 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"markdown-it-mathjax3": "^4.3.1",
"markdown-it-plantuml": "^1.4.1",
"markdown-it-task-checkbox": "^1.0.6",
+ "node-tikzjax": "^1.0.3",
"npm-run-all": "^4.1.5",
"rimraf": "^4.4.1"
}
From 3b79f881c8100e779151d504b2af166f2535a9d8 Mon Sep 17 00:00:00 2001
From: Montagnard <928786745@qq.com>
Date: Mon, 22 Dec 2025 02:58:53 +0800
Subject: [PATCH 2/3] Use Base64 to store TikZJax code.
---
.eleventy.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.eleventy.js b/.eleventy.js
index 57399831c..ea73b1014 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -205,8 +205,8 @@ module.exports = function (eleventyConfig) {
}
if (token.info === "tikz") {
const code = token.content.trim();
- const codeEscaped = md.utils.escapeHtml(code);
- return `TikZ render failed. See build log.\n\n${(texSource)}`);
+ // Escape texSource to be interpreted as HTML properly.
+ // https://stackoverflow.com/a/7382028
+ const texSource_escaped = texSource
+ .replaceAll("&", "&")
+ .replaceAll("<", "<")
+ .replaceAll(">", ">")
+ .replaceAll('"', """)
+ .replaceAll("'", "'");
+ block.replaceWith(`TikZ render failed. See build log.\n\n${(texSource_escaped)}`);
}
}
@@ -591,6 +581,31 @@ module.exports = function (eleventyConfig) {
};
})());
+ eleventyConfig.addTransform("htmlMinifier", async (content, outputPath) => {
+ if (
+ (process.env.NODE_ENV === "production" || process.env.ELEVENTY_ENV === "prod") &&
+ outputPath &&
+ outputPath.endsWith(".html")
+ ) {
+ try {
+ return await htmlMinifier.minify(content, {
+ useShortDoctype: true,
+ removeComments: true,
+ collapseWhitespace: true,
+ conservativeCollapse: true,
+ preserveLineBreaks: true,
+ minifyCSS: true,
+ minifyJS: true,
+ keepClosingSlash: true,
+ });
+ } catch {
+ // If the html minifying fails for some reason due to some malformed text, just return the content as is.
+ return content;
+ }
+ }
+ return content;
+ });
+
eleventyConfig.addPassthroughCopy("src/site/img");
eleventyConfig.addPassthroughCopy("src/site/scripts");
eleventyConfig.addPassthroughCopy("src/site/styles/_theme.*.css");
diff --git a/package-lock.json b/package-lock.json
index a257d9de2..2a604ae94 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,7 +26,7 @@
"markdown-it-mathjax3": "^4.3.1",
"markdown-it-plantuml": "^1.4.1",
"markdown-it-task-checkbox": "^1.0.6",
- "node-tikzjax": "^1.0.3",
+ "node-tikzjax": "^1.0.5",
"npm-run-all": "^4.1.5",
"rimraf": "^4.4.1"
},
diff --git a/package.json b/package.json
index 1763de96c..119d2e6fc 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
"markdown-it-mathjax3": "^4.3.1",
"markdown-it-plantuml": "^1.4.1",
"markdown-it-task-checkbox": "^1.0.6",
- "node-tikzjax": "^1.0.3",
+ "node-tikzjax": "^1.0.5",
"npm-run-all": "^4.1.5",
"rimraf": "^4.4.1"
}