MK勉強記

Notionの数式をreact-markdownでブログに表示させる

作成日:2024-05-01

default photo

モチベーション

研究や数検等のアウトプットで数式を使った記事を投稿したいが、

Xn+Yn=ZnX^n+Y^n=Z^n

今のコードであるとNotionで書いた上記の式はnotion2mdを使っているので以下のように変換されそのまま表示されてしまう。

$$ X^n+Y^n=Z^n $$

それをうまくreact-markdownで数式にもどしたい。

前提

Notionからmdへの変換は以下のライブラリ(notion2md)

react-markdownはすでに使っているので説明はしない

Notionの内容をreactで表示する方法は以下に軽くまとめてます。

追加した部分

インストール

remark-mathとrehype-katexをインストールする

npm install remark-math rehype-katex

公式がこれ

コード

import rehypeKatex from 'rehype-katex' import remarkMath from 'remark-math' import 'katex/dist/katex.min.css'// <-これをimportしないと数式がなぜか2つ表示される // 省略 // remarkPluginsにremarkMath、rehypePluginsにrehypeKatexを追加する <ReactMarkdown remarkPlugins={[remarkGfm, remarkMath]} rehypePlugins={[rehypeRaw, rehypeKatex]} className='markdown' components={ { h2: H2, h3: H3, ul: Ul, code: Code, a: A } }> {data.body} </ReactMarkdown> // 省略

ハマったところ

コメントアウトで注釈を入れたが、以下のcssをインポートしないと表示しなくてよい文字列が表示されてしまう

import 'katex/dist/katex.min.css'

↓こんな感じで表示されちゃう

%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3.png

参考

Profile

profile photo

地方公立大学院修士2年。

今年は「知識の幅を縦に広げること」が目標で、低レイヤ、OS、ミドルウェア、コンテナ、ネットワーク、データベース、SEO対策の勉強しています。

情報処理安全確保支援士と応用情報は合格しています。

研究として楕円曲線暗号、耐量子暗号、格子暗号や格子基底簡約アルゴリズム、同種写像暗号について学習しています。

普段はアルバイトでFlutter/Go/GCP/Next.js/Reactを使っています。