2015年4月25日

KaTeXとMathJaxで一部だけ数式処理

引き続きブログカスタマイズな話.前回の設定だとKaTeXは(標準のMathJaxのtex2jaxと同様に)全体の数式を処理する.通常のWebページだとそれでよいと思うが,こういうのでは記事のみ処理された方がよいと思うので,そうしてある.特にコメント内は処理されない.</body>直前の<script></script>内のコードはこんな感じ.

var elts = document.getElementsByClassName('post-body');
var opt = {
    delimiters: [
        {left: "$$", right: "$$", display: true},
        {left: "\\[", right: "\\]", display: true},
        {left: "\\(", right: "\\)", display: false},
        {left: "$", right: "$", display: false}
]};
for(var i = 0 ; i < elts.length ; ++i){
    renderMathInElement(elts[i],opt);
}

記事本体は<div class="post-body"></div>で囲まれているので,そこだけ処理するようにしている.renderMathInElementが指定された場所しか処理しないことを利用.前回はdocument.body,つまり<body></body>内を全て処理している.JavaScriptプログラミングを要求はされるが,柔軟な処理が可能.

MathJaxで同じことをするにはtex2jaxの設定を使う.上のように特定の場所のみ処理するよりも,特定の場所を除外した方が楽にかけるようだ.コメントは<div class="comments"></div>で囲まれているようなので,こんな感じだろうか.

MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ['$','$'], ['\\(','\\)'] ],
        ignoreClass: "comments"
    }
});

実際にここで試したわけじゃないので知らない.他にもいくつかオプションがあるようなので,うまく使えば特定の場所だけ処理するようなのも可能なんだろうか?

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です