Skip to content

Commit

Permalink
feat: browser Tex2SVG
Browse files Browse the repository at this point in the history
  • Loading branch information
Dup4 committed Jun 1, 2022
1 parent 8e97a28 commit e36de45
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
53 changes: 53 additions & 0 deletions packages/mathjax-render/src/browser/Tex2SVG.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { mathjax } from "mathjax-full/js/mathjax";
import { TeX } from "mathjax-full/js/input/tex";
import { SVG } from "mathjax-full/js/output/svg";
import { browserAdaptor } from "mathjax-full/js/adaptors/browserAdaptor";
import { HTMLHandler } from "mathjax-full/js/handlers/html/HTMLHandler";
import { SafeHandler } from "mathjax-full/js/ui/safe/SafeHandler";

import { AllPackages } from "../AllPackages";

mathjax.handlers.register(SafeHandler(new HTMLHandler(browserAdaptor())));

const mathDocument = mathjax.document(document, {
InputJax: new TeX({
packages: AllPackages,
}),
OutputJax: new SVG(),
});

// Add CSS styles
mathDocument.updateDocument();

export function Tex2SVG(math: string, display: boolean) {
try {
const wrapper = mathDocument.convert(math, {
display,
});

const title = document.createElement("title");
title.innerText = math;

const defsElement = wrapper.getElementsByTagName("defs")[0];
defsElement.parentNode.insertBefore(title, defsElement);

return wrapper;
} catch (e) {
console.log(e);

const wrapper = document.createElement("mjx-container");
wrapper.className = "MathJax";
wrapper.setAttribute("jax", "SVG");
if (display) wrapper.setAttribute("display", "true");

const message = document.createElement("span");
message.innerText = `Failed to render math, ${String(e)}`;
message.style.fontWeight = "bold";
message.style.display = "inline-block";
message.style.border = "2px solid var(--theme-foreground)";
message.style.padding = "0 4px";

wrapper.appendChild(message);
return wrapper;
}
}
3 changes: 3 additions & 0 deletions packages/mathjax-render/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
"src"
],
"compilerOptions": {
"lib": [
"dom"
],
"baseUrl": ".",
"paths": {
"@/*": [
Expand Down

0 comments on commit e36de45

Please sign in to comment.