MathJax3 を使う

作成日:2019-11-13
最終更新日:

MathJax3 による表現

2019 年まで、数式は MathJax のバージョン 2を使っていた。 ただし、表記法は TeX ではなく ASCIIMath を使っていた。 MathJax はバージョン 3 になったが、ASCIIMath の表記法が残念なものになった。これを本稿で説明する。

MathJax (www.mathjax.org) のページは英語である。

MathJax の使い方

MathJax はリモートにあるサーバを使うのがよさそうだ。 これには、<head> と </head> の間で、次の行を書けばよい。

        <script>
                MathJax = {
                  loader: {load: ['input/asciimath', 'output/chtml', 'ui/menu']},
                };
        </script>
        <script type="text/javascript" id="MathJax-script" async
                  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/startup.js">
        </script>

バージョン 2 とは異なる実装になっている。その理由は、 Loading the AsciiMath Component (docs.mathjax.org) という項に書かれている。 以下、拙訳をつけてみる。

AsciiMath 入力 jax はまだバージョン3に完全には移植されていない。 代わりに、AsciiMath コンポーネントはバージョン2にある AsciiMath 入力 jax と、 バージョン3フレームワークにパッチされたレガシーバージョン2コードの一部を使う。 この方法は、バージョン3の純粋なソリューションよりも効率が低く、 やや大きく、構成プロセスが複雑になる可能性がある。 AsciiMath の完全な移植は、将来のバージョン3のリリースで計画されている。
AsciiMath はバージョン 3 に完全には移植されていないため、 結合されたコンポーネントにはバージョン3が含まれていない。 したがって、AsciiMath 表記を使用するには、 MathJax 構成のローダーブロック内のロード配列に input / asciimath を追加して、 MathJax wを自分でロードする必要がある(例は上記)。

ここで、AsciiMath 入力 jax という用語が頻出するが、AsciiMath 形式での入力を、 MathJax が解釈できる jax という形式に変換する、ぐらいの意味にとっておけばよいと思う。

事例の対比:基本編

MathJax バージョン 2と比べると、バージョン 2 が TeX でいう別行立て数式モードだったのに対し、 バージョン 3 ではインライン数式モードになったように見える。たとえば、 字が小さくなったこと、総和の上下の添え字が、シグマの真上や真下でなく、 右側の添字のように扱われていることから判断した。

なお、バージョン 3 になって、同じページでの ASCIIMath 形式と LaTeX 形式の混在ができなくなった。 ただし、はっきりとは示されていない。

文字入力 (ASCIIMath 入力)表現説明備考
a+b+3`a+b-3`加法、減法
a b`a b`乗法
1/2+1/x-x/3`1/2+1/x-x/3`除法
(a+b)-3`(a+b)-3`カッコ
(x-1)/3+1/(a+b)-(x+3)/(x-c)`(x-1)/3+1/(a+b)-(x+3)/(x-c)`分数と式
x^2-3^x`x^2-3^x`べき乗
sqrt(x)+sqrt(2)`sqrt(x)+sqrt(2)`根号
a=b`a=b`等号
a gt b`a gt b`不等号
a ge b`a ge b`等号つき不等号
a lt b`a lt b`不等号
a le b`a le b`等号つき不等号
f(x)`f(x)`関数
x^(y-1/3)`x^(y-1/3)`分数のべき乗
root(3)(x)+root(a)(3)`root(3)(x)+root(a)(3)`平方根、n 乗根
sin(x+3)`sin(x+3)`三角関数
pi`pi`円周率
log_3(x)`log_3(x)`対数
log_e(x)+e^x`log_e(x)+e^x`自然対数
sin^-1(x)`sin^-1(x)`逆三角関数
sum_(i=1)^20k_i`sum_(i=1)^20k_i`数列の和
prod_(i=1)^20k_i`prod_(i=1)^20k_i`数列の積
{::}_(\ n)C_r`{::}_(\ n)C_r`組み合わせの数 ダミーの囲みを作ってその右側として表した文字を左側添字とする
{::}^(\ t)A`{::}^(\ t)A`行列の転置同上
vec v`vec v`矢線ベクトル
(a_x,a_y+b_y)`(a_x,a_y+b_y) `成分ベクトル
((x,3),(1,y))`((x,3),(1,y)) `行列1
[[x,3],[1,y]]`[[x,3],[1,y]] `行列2
|(x,3),(1,y)|`|(x,3),(1,y)|`行列式det((x,3),(1,y)) は不可
dy/dx`dy/dx`微分
intf(x)dx`intf(x)dx`不定積分
int_0^1f(x)dx`int_0^1f(x)dx`定積分
int_1^oo1/x^2dx`int_1^oo1/x^2dx`無限大
abs(-x)`abs(-x)`絶対値
norm(x)`norm(x)`ノルム
lim_(x->0)sin(x)`lim_(x->0)sin(x)`極限
4+3i`4+3i`虚数
(delz)/(delx)`(delz)/(delx)`偏微分
(d^2y)/dx^2`(d^2y)/dx^2`2 階微分
|\ |`|\ |`半角スペース
|quad|`|quad|`半角 * 2 スペース
a times b`a times b`乗算
a div b`a div b`除算

事例の対比:応用編

下記は、基本編以外の記号である。ASCIIMath (asciimath.org) を参考にした。

文字入力表現説明
bbA bba`bbA bba`太字
bbbC bbbN bbbQ bbbR bbbZ`bbbC bbbN bbbQ bbbR bbbZ`二度打ち体
ccA ccB ccC ccE ccF ccH ccI ccL ccM ccR ccS`ccA ccB ccC ccE ccF ccH ccI ccL ccM ccR ccS` スクリプト体
frA frB frC frH frI frR frZ`frA frB frC frH frI frR frZ`フラクトゥール
sfA sfa`sfA sfa`サンセリフ
ttA tta`ttA tta`テレタイプ
dotA dota`dotA dota`(時間に関する)一階微分
ddotA ddota`ddotA ddota`(時間に関する)二階微分
|__x__|`|__x__|`床関数。実数 `x` に対する `x` 以下の最大の整数
|~x~|`|~x~|`天井関数。実数 `x` に対する `x` 以上の最小の整数
f(x)={(sin x/x,x!=0),(1,x=0):}`f(x)={(sin x/x,x!=0),(1,x=0):}` 場合分け(右側に見えないカッコ :} を使う)
nn`nn`集合の交わり
nnn`nnn`集合の交わり(`sum` のように添字集合とともに用いる)
uu`uu`集合の結び
uuu`uuu`集合の結び(`sum` のように添字集合とともに用いる)
sub`sub``A sub B` , A は B に含まれる
sup`sup``A sup B` , A は B を含む
x in X`x in X``x in X` , x は X の要素である
x notin X`x notin X``x notin X` , x は X の要素でない
underset(y in C)(min) norm(x - y)`underset(y in C)(min) norm(x - y)`最小値
obrace(1+2+3+4)^("4 terms")`obrace(1+2+3+4)^("4 terms")`上カッコ
ubrace(1+2+3+4)_("4 terms")`ubrace(1+2+3+4)_("4 terms")`下カッコ
color(red)(x)`color(red)(x)`(red|yellow|green|blue|orange|white|black|gray)など
cancel(x)`cancel(x)`

まりんきょ学問所コンピュータの部屋マーク付け言語手習い > MathJax3 を使う


MARUYAMA Satosi