fix: #37 LaTex bugs

change: from katex to mathjax
This commit is contained in:
xiangyu 2022-06-03 14:50:50 +08:00
parent fcc1060c6b
commit bb68f1f7bb
6 changed files with 35 additions and 56 deletions

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var l in n)("object"==typeof exports?exports:e)[l]=n[l]}}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={},t={inline:["$","$"],display:["$$","$$"]},n=function(e,n){void 0===n&&(n=t);for(var l=e.querySelectorAll(".katex-mathml + .katex-html"),r=0;r<l.length;r++){var i=l[r];i.remove?i.remove(null):i.parentNode.removeChild(i)}for(var o=e.querySelectorAll(".katex-mathml"),a=0;a<o.length;a++){var d=o[a],f=d.querySelector("annotation");f&&(d.replaceWith?d.replaceWith(f):d.parentNode.replaceChild(f,d),f.innerHTML=n.inline[0]+f.innerHTML+n.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),s=0;s<c.length;s++){var p=c[s];p.innerHTML=n.display[0]+p.innerHTML.substr(n.inline[0].length,p.innerHTML.length-n.inline[0].length-n.inline[1].length)+n.display[1]}return e};return document.addEventListener("copy",(function(e){var t=window.getSelection();if(!t.isCollapsed){var l=t.getRangeAt(0).cloneContents();if(l.querySelector(".katex-mathml")){for(var r=[],i=0;i<l.childNodes.length;i++)r.push(l.childNodes[i].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",n(l).textContent),e.preventDefault()}}})),e=e.default}()}));

File diff suppressed because one or more lines are too long

View File

@ -26,7 +26,6 @@
"@syncfusion/ej2-navigations": "^20.1.51",
"compressing": "^1.5.1",
"esbuild": "^0.14.34",
"katex": "^0.15.6",
"replace-in-file": "^6.3.2",
"tree-model": "^1.0.7"
},

View File

@ -1,4 +1,3 @@
import renderMathInElement from "katex/contrib/auto-render";
import { AddonBase, EditorMessage } from "./base";
class AddonEvents extends AddonBase {
@ -392,28 +391,39 @@ class AddonEvents extends AddonBase {
`;
_window.document.body.append(style);
const texStyle = _window.document.createElement("link");
texStyle.setAttribute("rel", "stylesheet");
texStyle.setAttribute(
"href",
"chrome://Knowledge4Zotero/content/lib/css/katex.min.css"
);
_window.document.body.append(texStyle);
if (!_window.document.getElementById("MathJax-script")) {
const messageScript = _window.document.createElement("script");
messageScript.innerHTML = `
window.addEventListener('message', (e)=>{
if(e.data.type === "renderLaTex"){
console.log("renderLaTex");
MathJax.typeset([window.document.getElementById("texView")])
}
}, false)
MathJax = {
tex: {
inlineMath: [ // start/end delimiter pairs for in-line math
['$', '$']
],
displayMath: [ // start/end delimiter pairs for display math
['$$', '$$']
],
},
startup: {
typeset: false, // Perform initial typeset?
}
};
`;
_window.document.head.append(messageScript);
const copytexStyle = _window.document.createElement("link");
copytexStyle.setAttribute("rel", "stylesheet");
copytexStyle.setAttribute(
"href",
"chrome://Knowledge4Zotero/content/lib/css/copy-tex.css"
);
_window.document.body.append(copytexStyle);
const copytexScript = _window.document.createElement("script");
copytexScript.setAttribute(
"src",
"chrome://Knowledge4Zotero/content/lib/js/copy-tex.min.js"
);
_window.document.head.append(copytexScript);
const mathScript = _window.document.createElement("script");
mathScript.setAttribute("id", "MathJax-script");
mathScript.setAttribute(
"src",
"chrome://Knowledge4Zotero/content/lib/js/tex-svg.js"
);
_window.document.head.append(mathScript);
}
message.content.editorInstance._knowledgeUIInitialized = true;
@ -524,18 +534,7 @@ class AddonEvents extends AddonBase {
}
Zotero.debug("Knowledge4Zotero: latex view on.");
const viewNode = editorElement.cloneNode(true) as HTMLElement;
renderMathInElement(viewNode, {
// customised options
// • auto-render specific keys, e.g.:
delimiters: [
{ left: "$$", right: "$$", display: true },
{ left: "$", right: "$", display: false },
{ left: "\\(", right: "\\)", display: false },
{ left: "\\[", right: "\\]", display: true },
],
// • rendering keys, e.g.:
throwOnError: false,
});
this._Addon.views.switchEditorTexView(instance, true, viewNode);
this._Addon.views.changeEditorButtonView(
instance._iframeWindow.document.getElementById("knowledge-switchTex"),

View File

@ -215,6 +215,7 @@ class AddonViews extends AddonBase {
editorCore.after(viewNode);
editorCore.style.visibility = "hidden";
viewNode.scrollTop = editorCore.scrollTop;
instance._iframeWindow.postMessage({ type: "renderLaTex" }, "*");
} else {
if (this._texNotes.includes(instance._item.id)) {
this._texNotes.splice(this._texNotes.indexOf(instance._item.id), 1);