GitHub.com Markdown で利用可能な MathJax の拡張を知りたい
2022 年 5 月 19 日 以降、GitHub.com Markdown 1 では MathJax v3.2.0 が利用可能になっています。
MathJax の v3 では、拡張という形で機能をパッケージ化することで、必要な機能だけを追加できるようになっています。
この拡張は全体で 34 ありますが、GitHub.com Markdown で利用できる MathJax 拡張について明示的な記述はありませんでした。
本記事では、GitHub.com Markdown で利用可能な MathJax の拡張を明らかにします。
■ 利用可能な拡張
次の 19 の拡張が有効になっていることを確認しました。
- ams
- amscd
- boldsymbol
- braket
- bussproofs
- cancel
- cases
- centernot
- color
- empheq
- enclose
- gensymb
- mathtools
- mhchem
- textcomp (only in math mode)
- textmacros
- unicode
- upgreek
- verb
このリストを見て分かるように、require 拡張が有効になっていないため、ユーザー側から拡張を新たに有効にすることは出来ません。
また、各拡張に関して制限されているコマンドがいくつかあります。基本的に、定義に関するコマンドが制限されているようです。
拡張 | 制限されているコマンド |
---|---|
ams |
\DeclareMathOperator , \operatorname
|
color |
\colorbox , \fcolorbox , \definecolor
|
mathtools |
\DeclarePairedDelimiter , \DeclarePairedDelimiterX , \DeclarePairedDelimiterXPP
|
textcomp 拡張に関して、この拡張から提供されるコマンドは、\text
内で利用することが出来ません。(参照)
これ以外に関しても、それぞれの拡張に制限が加えられている可能性があります。
■ 利用できない拡張
次の 10 の拡張は利用できません。
- action
- bbox
- colortbl
- colorv2
- extpfeil
- html
- newcommand
- physics
- require
- setoptions
次の 5 つの拡張については、ユーザー側のコマンドによって有効となっているのか判断が付きませんでした。
- autoload
- configmacros
- noerrors
- noundefined
- tagformat
エラーが生じるような書き方をすると、コマンドがそのまま表示されたり、LaTeX のエラーメッセージが表示されます。このことを踏まえると、noerrors と noundefined 拡張が有効になっているようですが、確証が持てませんでした。
■ 調査方法
Gist 内で次のコードを Markdown として読ませました。拡張それぞれに固有のコマンドを確認することで、拡張が有効になっているかどうかを確かめます。
MathJax in Markdown(折りたたみ)
- base: $`A_b`$
- action: $`\mathip{x+1}{calcuration}`$
- ams: $`\approxeq`$
- amscd:
```math
\begin{CD}
A @>{f}>> B \\
@V{g}VV @VVV \\
C @>>> D
\end{CD}
```
- bbox: $`\bbox[red]{x+y}`$
- boldsymbol: $`\boldsymbol{A}BC`$
- braket: $`\bra{A}`$
- bussproofs:
```math
\begin{prooftree}
\AxiomC{A}
\AxiomC{B}
\BinaryInfC{D}
\end{prooftree}
```
- cancel: $`\bcancel{A}`$
- cases:
```math
\begin{numcases}{|x|=}
x, & for $x \geq 0$ \\
-x, & for $x < 0$
\end{numcases}
```
- centernot: $`\centernot{A}`$
- color: $`{\color{red}A}BC`$, $`\colorbox{red}{A}BC`$, $`\textcolor{red}{Red text}`$, $`\definecolor{mygrey}{gray}{0.75}`$, $`\fcolorbox{mygrey}{A}BC`$
- colorv2: $`\color{red}{A}BC`$
- colortbl:
```math
\begin{array}{|l|c|}
\rowcolor[gray]{.5}\columncolor{red} one & two\\
\rowcolor{lightblue} three & four\\\hline
five & six \\
\rowcolor{magenta}seven & \cellcolor{green}eight
\end{array}
```
- empheq:
```math
\begin{empheq}[left={Y=\empheqlbrace}]{align}
f(x) &= ax^2 \\
g(x) &= bx^2
\end{empheq}
```
- enclose: $`\enclose{circle}[mathcolor="red"]{A}`$
- extpfeil: $`\Newextrarrow{\xrightarpoonup}{5,10}{0x21C0}`$, $`\xrightarpoonup`$
- gensymb: $`\ohm`$
- html: $`\href{https://docs.mathjax.org/en/latest/input/tex/extensions/html.html}{ABC}`$
- mathtools: $`\eqcolon`$
- mhchem: $`\ce{CO_2}`$
- newcommand: $`\newcommand{\newcmd}{NEW COMMAND}\newcmd`$, $`\newcmd`$
```math
\newcommand{\newcmd}{NEW COMMAND}
\newcmd
```
$`\newcmd`$
- physics: $`\abs{A}`$
- setoptions:
```math
\setOptions{tagSide=left}
E = mc^2 \tag{1}
```
- textmacros: $`\text{\textit{This is not math mode}}`$
- textcomp: $`\textbackslash\textyen`$
- unicode: $`\unicode{65}`$
- upgreek: $`\upalpha`$
- verb: $`\verb|\sqrt{x}|`$
余談
基本的に必要になる拡張は有効になっているようでした。
しかしながら、newcommand 拡張が有効になっていないため、コマンドが定義できない点については不便です。
GitHub.com Markdown で利用できる MathJax では、複数のバグが存在します。
例えば、リスト内でインラインの数式とブロックの数式が混在すると、ブロックの数式が表示されません。これはすでに GitHub の Discussion #39545 に挙げられています。
この手の GitHub.com Markdown 内の MathJax に関するバグは次のリポジトリに集積されていました。
-
GitHub.com で利用できるすべての Markdown 記法を “GitHub Flavored Markdown” と差別化して “GitHub.com Markdown” と呼称しています。詳細は、GitHub.com で利用可能な Markdown 記法を知りたい を参照してください。 ↩