WebサイトでLaTeXライクに数式を書くには,MathJaxを用います.
このページは,HexoでMathJaxを使用するための備忘録です.

目次

  1. Hexo5系でhexo-filter-mathJaxを使う場合
  2. Hexo5系でhexo-mathを使う場合
  3. Hexo4系のログ

Hexo5系でhexo-filter-mathJaxを使う場合

hexo-filter-mathJaxは,数式の書き方をLaTeXにできるだけ近づけることを目指しているプラグインです.

対象のブログでhexo-filter-mathJaxをインストールします.

npm install hexo-filter-mathjax --save

必要に応じて,ブログの_config.ymlを追記・編集します.
以下はデフォルト値です.

mathjax:
tags: none # または'ams'または'all'
single_dollars: true # インラインを$記号で宣言するか
cjk_width: 0.9 # アジア圏で使われるCJKの相対字幅
normal_width: 0.6 # 通常の相対字幅
append_css: true # CSSを各ページに入れるか
every_page: false # フロントマターで設定することなしに任意のページでmathjaxのレンダリングを行うか

ここで,every_page: falseなら,投稿記事のymlでmathjax: trueとした場合のみmathjaxのレンダリングが行われます.

LaTeXで添字に使う_\begin{eqnarray*}等の環境で使われる*\によってエスケープしなくて済むため,レンダラーにはhexo-renderer-markedではなくhexo-renderer-pandocを使うことが推奨されています.
(もしPandocが入っていないないならインストールが必要です.
CentOS8の場合であれば,公式では

wget https://github.com/jgm/pandoc/releases/download/2.10.1/pandoc-2.10.1-linux-amd64.tar.gz
tar xvzf pandoc-2.10.1-linux-amd64.tar.gz --strip-components 1 -C /usr/local

のようにすると説明されています.)

hexo-renderer-markedをアンインストールしてhexo-renderer-markdown-itを使ってみたところ,アスタリスクのエスケープこそ必要でしたが,アンダーバーは多くの場合でLaTeXライクにそのまま使えました.

式中の改行\\ はマークダウンのエスケープの関係で\\\\ となるので注意してください.

Hexo5系でhexo-mathを使う場合

hexo-mathは,hexoでデフォルトにインストールされるhexo-renderer-markedと両立して数式を書くことを目指したプラグインです.

対象のブログでhexo-mathをインストールします.

npm install hexo-math --save

ブログの_config.ymlで,例えば,以下を書き足します.

math:
mathjax:
css: 'https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css'
options:
conversion:
display: false
tex:
svg:

記事内では次のように式を書きます.

{% mathjax %}
y = f(x)
{% endmathjax %}

数式のレンダリングを行いたくない記事では,記事のyml内で

mathjax: false

とします.

Hexo4系のログ

まず,対象のブログでhexo-mathhexo-renderer-mathjaxをインストールします.

npm install hexo-math --save
npm install hexo-renderer-mathjax --save

次に,ブログの_config.ymlで例えば以下を書き足します.

math:
engine: 'mathjax'
mathjax:
src: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML
config:
tex2jax:
inlineMath: [ ['$','$'], ["\\(","\\)"] ]
displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
TeX:
Macros:
diff: \mathrm{d}
tdf: ['\frac{\diff #1}{\diff #2}', 2]

最後の部分はマクロの書き方の例で,全微分の形を作ってみました

tdfは引数を2つとると指定しています.

サーバでMathJaxを動かすには,サーバでのパスを調べて,

src: パス/MathJax.js?config=TeX-AMS_CHTML

とします.
MathJaxのディレクトリには,各ディレクトリに755,ファイルには644でパーミッションを与えておくことが必要です.