I included MathJax
with the script
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
This automatically replaces all math codes with the formatted tags.
MathJax
by a javascript click only, instead of upon load.MathJax
to put the formatted element at the end of the page instead of replacing the original code?From docs:
skipStartupTypeset: false
Normally MathJax will typeset the mathematics on the page as soon as the page is loaded. If you want to delay that process, in which case you will need to call
MathJax.Hub.Typeset()
yourself by hand, set this value totrue
.
The MathJax.Hub.Typeset() command also accepts a parameter that is a DOM element whose content is to be typeset. That could be a paragraph, or a element, or even a MathJax math tag. It could also be the DOM id of such an object, in which case, MathJax will look up the DOM element for you. So
MathJax.Hub.Queue(["Typeset",MathJax.Hub,"MathExample"]);
would typeset the mathematics contained in the element whose id is MathExample. This is equivalent to
var math = document.getElementById("MathExample"); MathJax.Hub.Queue(["Typeset",MathJax.Hub,math]);
If no element or element id is provided, the whole document is typeset.
MathJax.Hub.Config({
skipStartupTypeset: true,
extensions: ["tex2jax.js", "TeX/AMSmath.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [["$", "$"]],
processEscapes: true
}
});
function startTypeSetting() {
var HUB = MathJax.Hub;
HUB.Queue(["Typeset", HUB, "render-me"]);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<p id="render-me">$a+b=c$<p>
<button onClick="startTypeSetting()">Start typesetting</button>
It would be better to know what are you trying to achieve, but here are 2 ways to skip typesetting for certain tags or classes, from tex2jax preprocessors configs:
MathJax.Hub.Config({
tex2jax: {
skipTags: ["script","noscript","style","textarea","pre","code"],
ignoreClass: "tex2jax_ignore_1|tex2jax_ignore_2"
}
}
You can copy the content of element you want to render to another element and start typesetting there:
MathJax.Hub.Config({
skipStartupTypeset: true,
extensions: ["tex2jax.js", "TeX/AMSmath.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [["$", "$"]],
processEscapes: true
}
});
function startTypeSetting() {
//copy content from '#code-to-render' to '#render-point'
var text = $('#code-to-render').val()
$('#render-point').text(text)
//Start typesetting
var HUB = MathJax.Hub;
HUB.Queue(["Typeset", HUB, "render-point"]);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<textarea id="code-to-render">$a+b=c$</textarea>
<p id="render-point"></p>
<button onClick="startTypeSetting()">Start typesetting</button>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With