KaTeXの設定

ウェブ上で数式を表現できるのはうれしい。いまはまだほんの一部で実験しているだけだが,いつかはこれを利用してコンテンツをつくりたい。

しばらく前までは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でも,これに近い設定をしている。これについては,別にまとめたい。