WordPressで数式を書きたい(KaTeX)

スポンサーリンク

WordPressで数式を書きたい!

数式はインラインでもかけます。3/4ではなく \({\Large\frac{3}{4}}\) です。2次方程式の解の公式は \(x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a}\) です。

$$x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a}$$

\[\sin^2 \theta + \cos^2 \theta = 1\]

ということで、WordPressにLaTeX記法を導入する方法をメモ

スポンサーリンク

MathJax

まずはMathJaxというJavaScriptライブラリ。これは、MathJax-LaTeXというWordPressプラグインで簡単導入できます。

MathJax-LaTeX
This plugin enables MathJax ( functionality for WordPress (

これを投入した後、

[mathjax]

というショートコードに続けて数式を書くだけ。こんな感じ

[mathjax]
$$\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}=\begin{pmatrix} 2.7688 & 1.7517 & 1.1301 \\ 1.0000 & 4.5906 & 0.060067 \\ 0.0000 & 0.056507 & 5.5942 \end{pmatrix}\begin{pmatrix} R_{\mathrm{CIE}} \\ G_{\mathrm{CIE}} \\ B_{\mathrm{CIE}} \end{pmatrix}\tag{1}$$

私もこれを長らく使っていました。

ですが、処理が重い。ということで、「KaTeX」というJavaScriptライブラリを導入しました。厳密にはLaTeXではないらしいのですが、記事サイトnoteでも数式記入の仕組みに採用されてるので、noteに合わせるということで。

KaTeX

参考サイト1

Claude 3.5 SonnetでのんぺちぱーがWordPressプラグインを改造してKaTeX環境を構築した話

参考サイト2

WordPressでLaTeXを使う
数式を用いる記事を書く場合,ブログ上でLaTeXの数式コマンドの設定は必須です.この記事ではWordPressでMathJaxを用いてLaTeXを使用できるようにします.MathJaxとはMathJaxはwebブラウザ上で動作するLaTeX...

参考サイト3

Auto-render Extension · KaTeX
This is an extension to automatically render all of the math inside of text. It

WordPressプラグインで簡単投入できればいいんですが、どうやらKaTeXプラグインは存在するものの、かなり古い。まあべつにプラグイン入れるまでもないので、直接コードを書きます。

私は、参考サイトの人とおなじように、Cocoonというテーマを使ってます。なので、Cocoon Child: head-insert.php (tmp-user/head-insert.php)に下記コードを挿入。


    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/katex.min.css" integrity="sha384-Htz9HMhiwV8GuQ28Xr9pEs1B4qJiYu/nYLLwlDklR53QibDfmQzi7rYxXhMH/5/u" crossorigin="anonymous">

    <!-- The loading of KaTeX is deferred to speed up page rendering -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/katex.min.js" integrity="sha384-bxmi2jLGCvnsEqMuYLKE/KsVCxV3PqmKeK6Y6+lmNXBry6+luFkEOsmp5vD9I/7+" crossorigin="anonymous"></script>

    <!-- To automatically render math in text elements, include the auto-render extension: -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"
        onload="renderMathInElement(document.body);"></script>

なので下記のようになります。

<?php
//ヘッダー部分(<head></head>内)にタグを挿入したいときは、このテンプレートに挿入(ヘッダーに挿入する解析タグなど)
//子テーマのカスタマイズ部分を最小限に抑えたい場合に有効なテンプレートとなります。
//例:<script type="text/javascript">解析コード</script>
?>
<?php if (!is_user_administrator()) :
//管理者以外カウントしたくない場合は
//↓ここに挿入?>

<?php endif; ?>
<?php //ログインユーザーも含めてカウントする場合は以下に挿入 ?>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/katex.min.css" integrity="sha384-Htz9HMhiwV8GuQ28Xr9pEs1B4qJiYu/nYLLwlDklR53QibDfmQzi7rYxXhMH/5/u" crossorigin="anonymous">

    <!-- The loading of KaTeX is deferred to speed up page rendering -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/katex.min.js" integrity="sha384-bxmi2jLGCvnsEqMuYLKE/KsVCxV3PqmKeK6Y6+lmNXBry6+luFkEOsmp5vD9I/7+" crossorigin="anonymous"></script>

    <!-- To automatically render math in text elements, include the auto-render extension: -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.15/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"
        onload="renderMathInElement(document.body);"></script>

コードは、KaTeX公式サイト(参考サイト3)からコピペです。

これで、

$$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$

のようにドルドルで挟むか、

\[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]

のようにエスケープ角カッコで数式になります。

インライン数式にしたければ

数式\(x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\)です。

のように、エスケープ丸カッコで書けます。

ちなみに、複数行にわたる場合は、エスケープを2回書かないといけません。あと、コードが複数行になるとうまくいかない?ので一行で書くようにしましょう。

数式例

WordPressで数式\(x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a}\)を書きたい!

$$x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a}$$

\[\sin^2 \theta + \cos^2 \theta = 1\]

$$\mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}$$

$$\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}=\begin{pmatrix} 2.7688 & 1.7517 & 1.1301 \\ 1.0000 & 4.5906 & 0.060067 \\ 0.0000 & 0.056507 & 5.5942 \end{pmatrix}\begin{pmatrix} R_{\mathrm{CIE}} \\ G_{\mathrm{CIE}} \\ B_{\mathrm{CIE}} \end{pmatrix}\tag{1}$$
$$\begin{pmatrix} R_{\mathrm{CIE}} \\ G_{\mathrm{CIE}} \\ B _{\mathrm{CIE}}\end{pmatrix}=\begin{pmatrix} 0.41847 & -0.15866 & -0.082835 \\ -0.091169 & 0.25243 & 0.015708 \\ 0.00092090 & -0.0025498 & 0.17860 \end{pmatrix}\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}\tag{2}$$

\[\lim_{x \to 0} (1+x)^{\frac{1}{x}} = e \]

$$\mathbf{a} \cdot \mathbf{b} = |\mathbf{a}| |\mathbf{b}| \cos \theta$$

$$P(A \cap B) = P(A)P(B)$$

\[\frac{\mathrm{d}y}{\mathrm{d}x} = 3x^2 + 2x + 1\]
\[\int_0^1 x^2 \, \mathrm{d}x = \frac{1}{3}\]

$$\ket{\Psi} = \ket{\mathbf{r}} \otimes \ket{\uparrow} \quad \text{or} \quad \ket{\Psi} = \ket{\mathbf{r}} \otimes \ket{\downarrow}$$

\[ c = \pm\sqrt{a^2 + b^2} \]

コメント

タイトルとURLをコピーしました