ウェブ上で数式を表現できるのはうれしい。いまはまだほんの一部で実験しているだけだが,いつかはこれを利用してコンテンツをつくりたい。
しばらく前まではMathJaxを使っていた。でも,軽快であるという噂にひかれて,最近はKaTeXを使っている。そのKaTeXの設定を記録しておく。基本的には,KaTeXに関わるものだけを記述した。
中途半端な技量と,ネットで調べたことをつなぎ合わせた程度のものであるが,私自身の環境の記録なので勘弁を。
まずはヘッダー部分。次のようにして,KaTeXを使えるようにした。
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.css" integrity="sha384-Um5gpz1odJg5Z4HAmzPtgZKdTBHZdw8S29IecapCSB31ligYPhHQZMIlWLYQGVoc" crossorigin="anonymous"> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.js" integrity="sha384-YNHdsYkH6gMx9y3mRkmcJ2mFUjTd0qNQQvY9VYZgQd7DcN7env35GzlmFaZ23JGp" crossorigin="anonymous"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/contrib/auto-render.min.js" integrity="sha384-vZTG03m+2yp6N6BNi5iM4rW4oIwk5DfcNdFfxkk9ZWpDriOkXX8voJBFrAO7MpVl" crossorigin="anonymous"></script>
そして,ボディの最後。次のようにして,自分の設定を追加した。
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
{left: "$$", right: "$$", display: true},
{left: "\\[", right: "\\]", display: true},
{left: "$", right: "$", display: false},
{left: "\\(", right: "\\)", display: false}
],
fleqn: true,
macros: {
"\\unit": "\\,\\mathrm{#1}",
"\\unitbf": "\\,\\mathbf{#1}",
"\\chemf": "\\mathsf{#1}",
"\\chemfbf": "\\mathbf{#1}",
}
});
});
</script>$$〜$$,\[〜\]で独立行数式(ディスプレイ),$〜$,\(〜\)で行内数式(インライン)とし,数式のインデントを指定するようにした。
また,いつもTeXの文書で使っている,単位記号と化学式の設定も加えた。単位記号を立体(ローマン体)にし,数値との間にアキが入る設定と,化学式を立体のサンセリフ体にする設定。それぞれの太字もある。ただし,サンセリフ体の太字が出せない(私には)ので,化学式の太字はセリフ体の太字になっている。ふだんTeXで使っている設定はほかにもあるので,徐々に加えていきたいと思う。
KaTeXはbm.styも使えるようで,数式自体の太字にも対応できる。ただ,私のTeXの環境はlualatexで,unicodemathを使って太字を実現している。なので,太字についても,\bm{〜}とするのではなく,TeXの環境と共通のコマンドをつくりたいと思っています。
このようにマクロにしておくと,TeXの環境が変わっても,マクロの設定を修正するだけで,同じソースが使えて便利である。でも,多用すると,何が何だかわからなくなることもありそう。この辺りもこれから検討していきたい。
なお,Visual Studio Codeの拡張機能であるMarkdown Preview Enhancedでも,これに近い設定をしている。これについては,別にまとめたい。