WordPressにMathJaxを導入する3つの方法を比較
この記事では、WordPress上で数式を書くためのプログラム「MathJax」の導入方法を3つ比較しています。
「プラグインを使う方法」、「カスタムHTMLブロックにコードを書く方法」、「アクションフックを使う方法」について、下記に焦点をあてています。
- 導入や設定が容易か
- テーマを変更しても表示が崩れないか
- MathJaxの仕様変更に対応しやすいか
- その他の将来的なリスクはあるか
なお、この記事の執筆時(2022年11月)では、MathJaxの最新バージョンは「3.2.2」です。
プラグインを使う方法
導入や設定の容易さ
プラグインは、最も簡単にMathJaxを導入できる方法です。
記事執筆時点(2022年11月)の有効インストール数で上位2つのプラグインは、次の2つ。
- MathJax-LaTeX(有効インストール数 9,000+)
- Simple MathJax(有効インストール数 3,000+)
このうち、Simple MathJaxの設定画面には、色々な設定(遅延組版など)のためにコードを書きこむ欄があり、設定しやすいので、Simple MathJaxの利用を前提に説明します。
それぞれの導入方法・設定方法については、別記事で紹介していますので、下記をご覧ください。
テーマ変更による表示の崩れ
WordPressのテーマを変更しても、プラグインの有効化には影響がないので数式の表示が崩れることはありません。
ただし、テーマを変更するとCSSに記載したコードは消えるので、CSSを書き直す必要があります。(これはどの方法にも共通しています。)
また、テーマとプラグインとの相性が悪いと、プラグインが機能しなくなる可能性はあります。
MathJax仕様変更への対応
Simple MathJaxの設定画面上で、CDN(MathJaxを利用するためにアクセスするWebアドレス)の書き換えができるので仕様変更には対応できると言えます。
📌NOTE |
---|
Simple MathJaxは、初期設定でMathJaxの最新版(執筆時バージョン3.22)を読み込みますが、バージョン2やバージョン3.xxを指定して読み込むことができます。具体的なやり方は別記事で紹介しています。 |
ただ、MathJaxやWordPressに大幅な変更があった場合にプラグインを継続利用できるかは、プラグインの開発者次第なので、評価しづらいと言えます。
プラグインの持続可能性は、プラグインの更新頻度やフォーラムで開発者が質問に回答しているかといった観点で判断するしかありません。
その他の将来的なリスク
何らかの理由で、将来的にプラグインが利用できなくなるリスクはあります。
しかし、MathJaxの記法はプラグインでもアクションフックでも共通なので、移行する方法を知っていればそれほど問題にはならないと思います。
カスタムHTMLブロックにコードを書く方法
導入や設定の容易さ
記事のどこかに「カスタムHTMLブロック」を追加し、下記のコードをペーストするだけで、MathJaxを導入することができます。
1 | MathJax = { |
📌NOTE | ||
---|---|---|
コードの解説は、次のとおりです。
|
テーマ変更による表示の崩れ
テーマを変更しても記事内に書かれたコードには影響がないため、表示が崩れることはありません。
ただし、上述のとおりCSSは書き直す必要があります。
MathJax仕様変更への対応
MathJaxの仕様変更があった場合は、各記事のカスタムHTMLブロックに書かれたコードを1つ1つ書き直す必要があり、手間がかかります。
しかし、下記のとおり、あらかじめ再利用ブロックを利用しておけば、すべての記事のカスタムHTMLブロックを一括で書き換えることができます。
- MathJaxを読み込むコードを書いたカスタムHTMLブロックを再利用ブロックに登録する。
- 数式を書いた記事には、その再利用ブロックをどこかに追加する。
- 追加した再利用ブロックは「通常ブロックに変換せず」、記事を保存する。
- もし、MathJaxの仕様が変更されたら、再利用ブロックのコードを書き換える。
ただ、将来的な仕様変更に備えて再利用ブロックを使わざるを得ないことに懸念があります。
過去にWordPressのバージョンアップで再利用ブロックが消えるという事件がありました。
その他の将来的なリスク
本来は<head>に記載すべきコードを<body>に記載するため、WordPressの仕様変更などで将来的に問題となることが懸念されます。
MathJaxの公式サイトでも、下記のとおりヘッダーに書くことを勧めています。
It can also go in the \ if necessary, but the head is to be preferred.
https://docs.mathjax.org/en/latest/web/start.html#using-mathjax-from-a-content-delivery-network-cdn
アクションフックを使う方法
導入や設定の容易さ
アクションフックでMathJaxを導入するには、子テーマの作成とfunction.phpへのコード追記が必要となるため、WordPress初心者にはやや難しいでしょう。
📌NOTE |
---|
|
具体的なMathJaxの導入方法は、子テーマを作り、子テーマのfunction.phpに、下記のコードをコピペするだけです。
1 | //アクションフックでMathjaxが使えるようにスクリプトを<head></head>に挿入する |
ちなみに、コードのうち「add_action(…);」という部分でアクションフックによるプログラムの追加・実行をしています。
テーマ変更による表示の崩れ
テーマを変更すると、function.phpも変更されてしまい数式が表示されなくなります。
このため、変更後のテーマのfunction.phpにコードをコピペする必要が生じてしまいます。
MathJax仕様変更への対応
function.phpのコードを書き換えるだけでMathJaxの仕様変更には対応可能です。
その他の将来的なリスク
私が調べた限りでは、将来的なリスクは特にありません。
まとめと結論
まとめると下記の表のとおりです。
プラグインSimple MathJax | カスタムHTMLブロック | アクションフック | |
---|---|---|---|
導入や詳細設定の容易さ | 〇 プラグイン設定画面にコードをペースト | △ コードをカスタムHTMLブロックにペースト | × 子テーマの追加とfunction.phpの編集 |
テーマ変更による表示の崩れ | 〇 崩れない | 〇 崩れない | × 要書き直し |
MathJaxの仕様変更への対応 | 〇 プラグイン設定画面でCDNを書き換え | △ 再利用ブロックでコードを書き換え | △ function.phpでコード書き換え |
その他の将来的なリスク | △ プラグインの停止 | △ 本来はヘッダーに書くべき | 〇 リスクなし |
総合評価 | 〇 | △ | × |
MathJaxを導入・設定する方法は「プラグイン」が最適だと私は考えます。
理由は、プラグインが将来の仕様変更に最も簡単に対応できそうだからです。その中でもSimple MathJaxは、不具合がなく、ショートコードも不要で、別記事で紹介しているとおり、高速化のための遅延読み込みも実装できます。
カスタムHTMLブロックにコードを書く方法については、再利用ブロックを使わざるを得ないことが不採用の決定的理由です。ただ、他の方法と違って、数式の無いページにはMathJaxを読み込むコードが記載されないので、Webサイトの軽量化が図られます。
アクションフックを使う方法は、最も堅牢な方法とも考えられますが、プラグインに比べると手間が多いです。ただ、プラグインを使いたくない場合やプラグインが使えなくなった場合にはよい選択肢になります。