Skip to content

Commit

Permalink
Support MathJaX v3
Browse files Browse the repository at this point in the history
  • Loading branch information
Bibliobibulus committed Feb 26, 2020
1 parent 6158263 commit e57eb7a
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 49 deletions.
15 changes: 8 additions & 7 deletions src/resources/hoedown.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,14 @@ var updateHtml = function(html) {
// finishLoading logic.
// MathJax may be not loaded for now.
if (VEnableMathjax && (typeof MathJax != "undefined")) {
try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset", MathJax.Hub, contentDiv, postProcessMathJax]);
} catch (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
}
MathJax.texReset();
MathJax
.typesetPromise([contentDiv])
.then(postProcessMathJax)
.catch(function (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
});
} else {
finishOneAsyncJob();
}
Expand Down
20 changes: 10 additions & 10 deletions src/resources/markdown-it.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,14 @@ var updateText = function(text) {
eles.push(texToRender[i]);
}

try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset", MathJax.Hub, eles, postProcessMathJax]);
} catch (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
}
MathJax.texReset();
MathJax
.typesetPromise(eles)
.then(postProcessMathJax)
.catch(function (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
});
} else {
finishOneAsyncJob();
}
Expand Down Expand Up @@ -244,7 +245,7 @@ var handleMetaData = function() {
};

var postProcessMathJaxWhenMathjaxReady = function() {
var all = MathJax.Hub.getAllJax();
var all = Array.from(MathJax.startup.document.math);
for (var i = 0; i < all.length; ++i) {
var node = all[i].SourceElement().parentNode;
if (VRemoveMathjaxScript) {
Expand Down Expand Up @@ -282,8 +283,7 @@ var handleMathjaxReady = function() {
}

try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset", MathJax.Hub, eles, postProcessMathJaxWhenMathjaxReady]);
MathJax.typesetPromise(eles).then(postProcessMathJaxWhenMathjaxReady);
} catch (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
Expand Down
9 changes: 8 additions & 1 deletion src/resources/markdown_template.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,14 @@
<script src="qrc:/utils/highlightjs/highlight.pack.js"></script>
<script src="qrc:/utils/clipboard.js/clipboard.min.js"></script>
<!-- EXTRA_PLACE_HOLDER -->
<script src="JS_PLACE_HOLDER" defer></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script src="JS_PLACE_HOLDER" defer id="MathJax-script"></script>
<script src="qrc:/resources/common.js" defer></script>
<script src="qrc:/resources/view_image.js" defer></script>
<script src="qrc:/resources/markdown_template.js" defer></script>
Expand Down
2 changes: 1 addition & 1 deletion src/resources/markdown_template.js
Original file line number Diff line number Diff line change
Expand Up @@ -1385,7 +1385,7 @@ var getHtmlWithInlineStyles = function(container) {
// Will be called after MathJax rendering finished.
// Make <pre><code>math</code></pre> to <p>math</p>
var postProcessMathJax = function() {
var all = MathJax.Hub.getAllJax();
var all = Array.from(MathJax.startup.document.math);
for (var i = 0; i < all.length; ++i) {
var node = all[i].SourceElement().parentNode;
if (VRemoveMathjaxScript) {
Expand Down
15 changes: 8 additions & 7 deletions src/resources/marked.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,14 @@ var updateText = function(text) {
// If you add new logics after handling MathJax, please pay attention to
// finishLoading logic.
if (VEnableMathjax) {
try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset", MathJax.Hub, contentDiv, postProcessMathJax]);
} catch (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
}
MathJax.texReset();
MathJax
.typesetPromise([contentDiv])
.then(postProcessMathJax)
.catch(function (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
});
} else {
finishOneAsyncJob();
}
Expand Down
25 changes: 11 additions & 14 deletions src/resources/mathjax_preview.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,19 +71,16 @@ var previewMathJax = function(identifier, id, timeStamp, text, isHtml) {
if (text.indexOf('$$') !== -1) {
isBlock = true;
}

try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset",
MathJax.Hub,
p,
[postProcessMathJax, identifier, id, timeStamp, p, isBlock]]);
} catch (err) {
content.setLog("err: " + err);
content.mathjaxResultReady(identifier, id, timeStamp, 'png', '');
contentDiv.removeChild(p);
delete p;
}
MathJax
.typesetPromise([p])
.then(function () {
postProcessMathJax(identifier, id, timeStamp, p, isBlock);
}).catch(function (err) {
content.setLog("err: " + err);
content.mathjaxResultReady(identifier, id, timeStamp, 'png', '');
contentDiv.removeChild(p);
delete p;
});
};

var postProcessMathJax = function(identifier, id, timeStamp, container, isBlock) {
Expand All @@ -93,7 +90,7 @@ var postProcessMathJax = function(identifier, id, timeStamp, container, isBlock)
return;
}

var hei = (isBlock ? container.clientHeight * 1.5 : container.clientHeight * 1.6) + 5;
var hei = container.clientHeight * 1.5 + (isBlock ? 20 : 5);
domtoimage.toPng(container, { height: hei }).then(function (dataUrl) {
var png = dataUrl.substring(dataUrl.indexOf(',') + 1);
content.mathjaxResultReady(identifier, id, timeStamp, 'png', png);
Expand Down
9 changes: 8 additions & 1 deletion src/resources/mathjax_preview_template.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@
<link rel="stylesheet" type="text/css" href="CSS_PLACE_HOLDER">
<script src="qrc:/resources/qwebchannel.js"></script>
<!-- EXTRA_PLACE_HOLDER -->
<script src="JS_PLACE_HOLDER" async></script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script src="JS_PLACE_HOLDER" defer id="MathJax-script"></script>
<script src="qrc:/utils/dom-to-image/dom-to-image.js" defer></script>
<script src="qrc:/resources/common.js" defer></script>
<script src="qrc:/resources/mathjax_preview.js" defer></script>
Expand Down
15 changes: 8 additions & 7 deletions src/resources/showdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,14 @@ var updateText = function(text) {
// If you add new logics after handling MathJax, please pay attention to
// finishLoading logic.
if (VEnableMathjax) {
try {
MathJax.Hub.Queue(["resetEquationNumbers",MathJax.InputJax.TeX],
["Typeset", MathJax.Hub, contentDiv, postProcessMathJax]);
} catch (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
}
MathJax.texReset();
MathJax
.typesetPromise([contentDiv])
.then(postProcessMathJax)
.catch(function (err) {
content.setLog("err: " + err);
finishOneAsyncJob();
});
} else {
finishOneAsyncJob();
}
Expand Down
2 changes: 1 addition & 1 deletion src/resources/vnote.ini
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ custom_export=
markdownit_opt=html,break,linkify,metadata

; Location and configuration for Mathjax
mathjax_javascript=https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_HTMLorMML
mathjax_javascript=https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.0.1/es5/tex-mml-chtml.js

; Styles to be removed when copied
; style1,style2,style3
Expand Down

0 comments on commit e57eb7a

Please sign in to comment.