PandocでHTML出力する時の数式の扱い


基本はMath rendering in HTMLに記載の通り。

--mathjax--katexはJavaScriptやCSSの読み込みをするだけで数式部分の出力は変わらないと思ってたけど、そうでもなかったのでメモがてら全パターンを試す。

エンジン指定なし

ユニコード文字に置換して頑張ってからSpanに入れる。

pandoc -t html <<< "$\alpha$"
pandoc -t html <<< "\$$\alpha\$$"
## <p><span class="math inline"><em>α</em></span></p>
## <p><br /><span class="math display"><em>α</em></span><br /></p>

ただし複雑な数式になるとうまくいかないことも。

pandoc -t html <<< "$\sum_{i=0}{i}$"
pandoc -t html <<< "$\sum_{i=0}^{10}{i}$"
## <p><span class="math inline">∑<sub><em>i</em> = 0</sub><em>i</em></span></p>
## [WARNING] Could not convert TeX math '\sum_{i=0}^{10}{i}', rendering as TeX
## <p><span class="math inline">$\sum_{i=0}^{10}{i}$</span></p>

mathjax

数式を\(\)とか\[\]で囲んでからSpanに入れる。

pandoc -t html --mathjax <<< "$\alpha$"
pandoc -t html --mathjax <<< "\$$\alpha\$$"
## <p><span class="math inline">\(\alpha\)</span></p>
## <p><span class="math display">\[\alpha\]</span></p>

mathml

ユニコード文字に置換したり、math要素に入れたり、何かと異色。

pandoc -t html --mathml <<< "$\alpha$"
pandoc -t html --mathml <<< "\$$\alpha\$$"
## <p><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>α</mi><annotation encoding="application/x-tex">\alpha</annotation></semantics></math></p>
## <p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>α</mi><annotation encoding="application/x-tex">\alpha</annotation></semantics></math></p>

webtex

数式をURLエンコードしてWeb API経由で画像化する。アクセシビリティの観点から、代替文に数式が文字列として入る。

pandoc -t html --webtex <<< "$\alpha$"
pandoc -t html --webtex <<< "\$$\alpha\$$"
## <p><img style="vertical-align:middle" src="https://latex.codecogs.com/png.latex?%5Calpha" alt="\alpha" title="\alpha" /></p>
## <p><br /><img style="vertical-align:middle" src="https://latex.codecogs.com/png.latex?%5Calpha" alt="\alpha" title="\alpha" /><br /></p>

katex

数式をそのままSpanで囲う

pandoc -t html --katex <<< "$\alpha$"
pandoc -t html --katex <<< "\$$\alpha\$$"
## <p><span class="math inline">\alpha</span></p>
## <p><span class="math display">\alpha</span></p>

gladtex

数式をeq要素で囲う。

pandoc -t html --gladtex <<< "$\alpha$"
pandoc -t html --gladtex <<< "\$$\alpha\$$"
## <p><eq env="math">\alpha</eq></p>
## <p><eq env="displaymath">\alpha</eq></p>