yuriacats

yuriacats

KaTexをブログに導入した話

このテキストは4分で読めます。

動機

今回のブログはAWS Lambda+React製ブログの避難用ブログな訳ですが、 実際のブログでは、数学系の式を使った勉強記録も書きたかったため、数学系ライブラリーが導入されている。避難用とはいえこちらにもライブラリーの導入の必要性があった。

環境

QiitaのNextJSチュートリアルの翻訳記事 の終わった直後の環境 ここをベースにMath系ライブラリーを加えて動かせるようにしよう。

{
  "dependencies": {
    "remark-math": "^4.0.0",
    "rehype-katex": "^5.0.0",
    "remark-rehype": "^8.1.0",
    "rehype-stringify": "^8.0.0"
  }
}

上記のようにJsonに追記をし、components/layout.js にライブラリーのReadme.mdに書かれてるCSSのリンクを貼り付ける。

最後にlib/post.js のgetPostData関数のremark()関数を使っている部分に数学関係のライブラリーの 利用の記述をすることで無事利用ができるようになる。

export async function getPostData(id){
    const fullPath = path.join(postsDirectory, `${id}.md`)
    const fileContents = fs.readFileSync(fullPath, 'utf-8')

    const matterResult = matter(fileContents)

    const processedContent = await remark()
        .use(html)
        //ここからの部分を追記する
        .use(math)
        .use(remark2rehype)
        .use(katex)
        .use(stringify)
        //ここまで追記
        .process(matterResult.content)
    const contentHtml = processedContent.toString()

    return{
        id,
        contentHtml,
        ...matterResult.data
    }
}

このStyleseetはKatex用のスタイルの秘伝のタレが溢れている。Katexを用いるようなライブラリーにはちらっと追記されてたりするので注意して 自分で導入していこう。

実際に計算式を書いてみる。

Texを書きたい部分は、$$ で囲むことによりTexのコードとして認識される。例えば以下のように書くことで 一番下に書いたようなものが出力される。

$$
L = \frac{1}{2} \rho v^2 S C_L
$$
L=12ρv2SCLL = \frac{1}{2} \rho v^2 S C_L

__