VS Code はデフォルトで KaTeX
をレンダラに使っているらしい。KaTeX
についてはよく分かっていないので今回は MathJax
を利用したい。
このためには、Markdown Preview Enhanced を使えば良いらしい。KaTeX
がデフォルトのレンダラであることは同じだが、MathJax
レンダラも使える。インストール後は既存のプレビューボタンに追加して、紛らわしくも同じデザインの・・・プレビューボタンが追加される。
Preferences
-> Settings
から Markdown-preview-enhanced: Math Rendering Option
を見つけて、これを MathJax
にすることでレンダラが切り替わる。
次に View -> Command Palette から Markdown Preview Enhanced: Open MathJax Config
を起動して設定を追記する。例えば以下のようにすれば良さそうだ:
module.exports = { extensions: ['tex2jax.js'], jax: ['input/TeX','output/HTML-CSS'], messageStyle: 'none', tex2jax: { processEnvironments: false, processEscapes: true }, TeX: { macros: { C: ["\\mathbb C"], Q: ["\\mathbb Q"], Z: ["\\mathbb Z"], dom: ["\\mathcal{D}"], del: ["\\partial"], bm: ["\\boldsymbol#1", 1], ket: ["\\left|#1\\right\\rangle", 1], bra: ["\\left\\langle#1\\right|", 1], braket: ["\\left\\langle#1\\right\\rangle", 1], }, extensions: ['AMSmath.js', 'AMSsymbols.js', 'noErrors.js', 'noUndefined.js'], }, 'HTML-CSS': { availableFonts: ['TeX'] } }
理屈はよく分かっていないが、extensions
の最後に記載された noUndefined.js
がこれをロードした時点で定義されていないコマンドを未定義のものとし、その上で AS IS で表示するように仕向けるようである。よって、ユーザー定義のマクロは extensions
の前に置いておいたほうが良さそうに見える。また、他の extension で定義されるコマンドより先行して定義することで自分好みのレンダリングに仕向けることもできる。(例えば、\Z
はどれかの extension で定義されているようで、これを上書きしたいなら先行定義すれば良い)
KaTeX
のほうがレンダリング速度は速いと感じるのだが、とりあえず仕方がない。
KaTeX
のほうの設定は ~/.local/state/mume/katex_config.js
を変更して、
module.exports = { macros: { "\\C": "\\mathbb{C}" } }
などとすれば良さそうだが、最初から幾つか効いているようだが・・・どうなっているのだろう?