I wanted to try out switching to KaTeX from MathJax for our libigl tutorial. KaTeX needs a little bit of javascript besides the including the script to know to iterate over all class=math
tags and render the latex code.
Also, it seems that markdown translates \\(x+y\\)
into <span class=math>\(x+y\)</span>
and the \(
parenthesis throw off the KaTeX. You get an error like:
ParseError: KaTeX parse error: Expected 'EOF', got '\(' at position 2: \(x+y
So my header to switch from mathjax simply iterates over all math tags on document load using jquery and strips these parenthesis (which I expect on all tags):
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
$(function(){
$(".math").each(function() {
var texTxt = $(this).text();
texTxt = texTxt.slice(2,-2);
el = $(this).get(0);
if(el.tagName == "DIV"){
addDisp = "\\displaystyle";
} else {
addDisp = "";
}
try {
katex.render(addDisp+texTxt, el);
}
catch(err) {
$(this).html("<span class='err'>"+err);
}
});
});
</script>
I didn't invest much more into bulletproofing this because it seems like KaTeX is still in its infancy in terms of LaTeX support. It doesn't support unicode characters (e.g. ∑, ∆, π) or common tags like \mathbf
or \begin{cases}
. Hopefully it will eventually, it is much faster than MathJax for the simple equations.