Hexoで数式を記事に挿入する方法

MarkdownでHexoの記事を書いているとき数式を入力するに少し苦戦したのでまとめておきます.

目次

方法

準備

MathJaxというライブラリを用います. 以下のコードをMarkdownの記事の上にコピペします.

1
2
3
4
5
6
7
8
9
10
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$', '$'] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
}
});
</script>

数式の記述

あとは記事の中でTexの記法で数式を記述するだけです.

$$で囲むと数式を独立させることができます.

1
$$ \int^{b}_{a}f(x)dx = \int^{c}_{a}f(x)dx + \int^{b}_{c}f(x)dx $$
(実際にMarkdownで入力する際には_で囲った部分が斜体になるのでバックスラッシュでエスケープ(アンダーバーの前にバックスラッシュを入力)してください.)

出力 \[ \int^{b}\_{a}f(x)dx = \int^{c}\_{a}f(x)dx + \int^{b}\_{c}f(x)dx \]

$で囲むと数式を文の中に埋め込めます.

1
積分の公式として$ \int^{b}_{a}f(x)dx = \int^{c}_{a}f(x)dx + \int^{b}_{c}f(x)dx $は重要である.

出力 積分の公式として$ ^{b}_{a}f(x)dx = ^{c}_{a}f(x)dx + ^{b}_{c}f(x)dx $は重要である.

2024/02/11追記

上記の方法では数式がちゃんと表示されたりされなかったり、更新したらちゃんと治ったり治らなかったりと安定しなかったので他の方法を探した結果、以下の方法で解消しました。

まずhexoのメインディレクトリで

1
npm install hexo-renderer-mathjax --save
次に「node_modules/hexo-renderer-mathjax/mathjax.html」という」ファイルの中で
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-MML-AM_CHTML"></script>
を追加します。元々同様の記述がある場合はそれを削除します。

"hexo generate"→"hexo deploy"して数式が表示されることを確認します。数式が表示されていないときは表示されるまで繰り返し"hexo generate"→"hexo deploy"するとなぜか治ります。