LaTeX の数式を Web ページに 表示するには、ブラウザで TeX を動かすのではなく、JavaScript の数式レンダラを使います。二大標準は MathJax(最も高機能)と KaTeX(最速)。どちらも LaTeX の数式記法を受け取ります。このページで両者を比べます。
MathJax
MathJax(v3)は、LaTeX 数式(さらに MathML・AsciiMath)を HTML/CSS・SVG・MathML に描画します。MathML 出力は スクリーンリーダー対応 に有用。LaTeX 数式の 互換性が最も広く(amsmath、自作マクロ、\label/\eqref まで)、v3 の書き直しで以前の速度差もかなり縮まりました。スクリプト読込前に window.MathJax オブジェクトで設定します(区切り記号・パッケージなど)。
<script>
window.MathJax = { tex: { inlineMath: [["$","$"]], displayMath: [["$$","$$"]] } };
</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>KaTeX
KaTeX(Khan Academy 製)は 高速・軽量 なレンダラ——同期描画でリフローが起きず、サイズも小さい。LaTeX 数式の大きな 部分集合 に対応しますが、すべてではありません(とくに \label/\eqref の数式参照は不可)。数式が大量で速度が要るときに最適。CSS と JS、そして自動描画拡張(renderMathInElement)を読み込みます。
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex/dist/contrib/auto-render.min.js"
onload="renderMathInElement(document.body);"></script>設定・互換性・選び方
区切り記号:行内は $...$ か \(...\)、別行は $$...$$ か \[...\]。どれを有効にするか選びます(MathJax は設定オブジェクト、KaTeX は renderMathInElement の delimiters)。互換性:どちらも LaTeX の 数式だけ を受け取り(文書全体ではない)、本物の TeX エンジンは動かさず JS で数式組版を再実装しています。コマンドの網羅は MathJax が広め。文書全体 を忠実に Web 化したいなら、変換ツール(tex4ht/LaTeXML)を使います(→「LaTeX → HTML」)。
- 互換性・MathML(アクセシビリティ)・
\eqref→ MathJax。 - 速度・軽さ・大量の数式 → KaTeX。
- 文書全体を Web 化 → 変換ツール(→「LaTeX → HTML」)。