ASCIIMathML から ASCIIMath へ
MathML より、また TeX よりタイプ数が少ない数式記法に ASCIIMathML という処理系があった。JavaScript で数式を解析し、自前でレンダリングまで行なっていた。
これが過去形となっているのは、JavaScript で書かれた当初の処理系はメンテナンスがされていないため、 もう ASCIIMathML は使われていないからである。
しかし、数式記法のみは他のレンダリング系でも適用可能である。幸いなことに、TeX や MathML でのレンダリングで定評のある MathJax が、 ASCIIMathML の数式記法も解釈するようになっている。 現在では、ASCIIMathML の(レンダリング部分は除いた)数式記法のみを指すときに ASCIIMath と (ML を省いて)称する。
ASCIIMath がレンダリング部分を MathJax にゆだねたことで、 ASCIIMath がほとんどのブラウザで表示できるようになった。 実際の ASCIIMath の記法と表示は、MathJax のページを参照されたい。
ASCIIMath 記法の MathJax と ASCIIMathML オリジナルレンダリングとの違い
乗算記号
乗算記号は ASCIIMath=MathJax では times のみ使える。ASCIIMathML オリジナルでは times のほか XX でも可能である。
カスタマイズ
MathJax で ASCIIMath 記法を使うとき、基本的にカスタマイズはできないと思った方がよい。 少なくとも日本語では、その情報が手に入らない。英語でも難しい。 ASCIIMath でカスタマイズをしようなどという悪だくみは起こさずに、カスタマイズは TeX 記法で行いなさい、というのが MathJax の希望だろう。
一方 ASCIIMathML では、asciimath.newcommand などを使うことで容易にカスタマイズできる。 また、自前でダウンロードした ASCIIMathML.js を直接変更することも可能である。
ASCIIMath でできないこと
もちろん、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)` | 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)) ` | 行列 | |
| |(x,3),(1,y)| | `|(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-y) | `norm(x-y)` | ノルム | |
| 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` | 乗算 | ASCIIMathML 用の a XX b は不可 |
| a -: b | `a -: b` | 除算 | MathJax 用の a div b も使える |
事例の対比:応用編
下記は、基本編以外の記号である。
| 文字入力 | 表現 | 説明 | 備考 |
|---|---|---|---|
| bbbA bbbB bbbD bbbE bbbH | `bbbA bbbB bbbD bbbE bbbH` | 二度打ち体(黒板太字) | どのアルファベット大文字でも可能 |
| CC NN QQ RR ZZ | `CC NN QQ RR ZZ` | 二度打ち体(黒板太字) | 二度打ち体が可能な大文字は左記に限られる |
| ccB ccC ccE ccF ccH ccI ccL ccM ccR | `ccB ccE ccF ccH ccI ccL ccM ccR` | カリグラフ体(スクリプト体) | |
| frC frH frI frR frZ | `frC frH frI frR frZ` | フラクトゥール | |
| dotA dota | `dotA dota` | (時間に関する)一階微分 | |
| ddotA ddota | `ddotA ddota` | (時間に関する)二階微分 | |
| -= | `-=` | 定義; (図形の)合同; (剰余の) 合同 | |
| @ | `@` | 写像 | |
| ldots cdots vdots ddots | `ldots cdots vdots ddots` | などなど | l, c, v, d はそれぞれ low, center, vertical, diagonal と思えばよい |
| A^(**) | `A^(**)` | 双対空間 | |
| A^("**") | `A^("**")` | 第二双対空間 | *** は星型アスタリスク `***` になる。 |
基本編や応用編に出ていない記号類は、http://www1.chapman.edu/~jipsen/mathml/asciimathsyntax.html を参照されたい。