Docusaurusで数式をクライアントサイドレンダリング(CSR)する
· 約10分
Docusaurusは静的サイトジェネレータなので、すべてのページがビルド時にレンダリングされます.
DocusaurusのマークダウンからHTMLにレンダリングする部分は remark と rehype が処理しています.数式を有効にするには、Docusaurusのドキュメント によれば、remark-math
と rehype-katex
(または rehype-mathjax
)を使います.
しかし、2,3個の数式ならともかく、それなりの数があるとビルドに時間がかかるようになり、生成されるhtmlやjsファイルが肥大化します.もちろん、数式も含めて事前にレンダリングするので、閲覧する場合はブラウザで数式の処理が入らず高速に表示できますが、個人的にはデメリットの方が大きいので、数式処理はクライアントサイドでしたいところです.ここでは、その方法を記録しておきます.
必要なスクリプトやCSSファイルを読み込む
今回は katex を使って数式処理をします.バージョンは 0.16.4
です.
必要なファイルは以下の通りです.
- //cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css
- //cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js
- //cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js
Docusaurusでこれらを読み込むようにするには docusaurus.config.js
の scripts
および stylesheets
で指定します.
./docusaurus.config.js
const config = {
scripts: [
{
src: "https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js",
integrity: "sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4",
crossorigin: "anonymous",
defer: true,
},
{
src: "https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js",
integrity: "sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05",
crossorigin: "anonymous",
defer: true,
}
],
stylesheets: [
{
href: 'https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css',
type: 'text/css',
integrity: 'sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0',
crossorigin: 'anonymous',
},
],
}