見出し画像

MathMLを表示できるブラウザを比べてみた

MathMLを表示できる主なブラウザとしては、最も古くから対応しているFirefox、Macで利用できるSafari、最近対応したChromeがあります。また、他にMathMLを表示する方法としてMathJaxを利用することもできます。

今回は、このFirefoxSafariChromeMathJaxを比較してみたいと思います。なお、比較に使用したもののバージョンなどは、Firefox(Windows版バージョン:129.0.1)、Safari(iPhone版iOSバージョン:17.6.1)、Chrome(Windows版バージョン:127.0.6533.120)、MathJax(Chromeで表示、バージョン:2.7.7)です。

今回比較したのは筆者が書いたMathMLサンプル集で公開している数式です。


2次方程式の解の公式

まず、2次方程式の解の公式について比較してみます。この数式の表示に用いたMathMLのコードを示します。なお、こちらはFirefoxSafariChrome用のコードで、MathJaxでは、<mo linebreak="newline"/>が利用できることから、<mtable>で配置するのではなく、<mo linebreak="newline"/>で改行を行っています。

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mtable>
    <mtr>
      <mtd>
        <mtext>2次方程式の解の公式</mtext>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mi>a</mi>
        <mo>&#x02062;</mo>
        <msup>
          <mi>x</mi>
          <mn>2</mn>
        </msup>
        <mo>+</mo>
        <mi>b</mi>
        <mo>&#x02062;</mo>
        <mi>x</mi>
        <mo>+</mo>
        <mi>c</mi>
        <mo>=</mo>
        <mn>0</mn>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mi>x</mi>
        <mo>=</mo>
        <mfrac>
          <mrow>
            <mo>-</mo>
            <mi>b</mi>
            <mo>&#x000B1;</mo>
            <msqrt>
              <mrow>
                <msup>
                  <mi>b</mi>
                  <mn>2</mn>
                </msup>
                <mo>-</mo>
                <mn>4</mn>
                <mo>&#x02062;</mo>
                <mi>a</mi>
                <mo>&#x02062;</mo>
                <mi>c</mi>
              </mrow>
            </msqrt>
          </mrow>
          <mrow>
            <mn>2</mn>
            <mo>&#x02062;</mo>
            <mi>a</mi>
          </mrow>
        </mfrac>
      </mtd>
    </mtr>
  </mtable>
</math>

2次方程式の解の公式の各ブラウザによる表示例は、次のとおりです。

2次方程式の解の公式のFirefoxによる表示例
2次方程式の解の公式のSafariによる表示例
2次方程式の解の公式のChromeによる表示例
2次方程式の解の公式のMathJaxによる表示例

Firefoxで表示したものは、"-"記号が小さく$${b^2}$$の2が大きくなっています。Chromeで表示したものは、ルートの下がかなり長くなっています。MathJaxで表示したものは、ルートの横線と$${b^2}$$の間が詰まっています。この中でSafariで表示したものが一番きれいに感じられます。

mphantomによる位置揃え

続いて、mphantomによる位置揃えを比較してみます。表示に用いたMathMLのコードは次のとおりです。

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mtable>
    <mtr>
      <mtd>
        <mtext>mphantomによる位置揃え</mtext>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mfrac>
          <mrow>
            <mn>3</mn>
            <mo>&#x02062;</mo>
            <mi>a</mi>
            <mphantom>
              <mo>+</mo>
              <mn>3</mn>
              <mo>&#x02062;</mo>
              <mi>b</mi>
            </mphantom>
            <mo>-</mo>
            <mphantom>
              <mn>5</mn>
            <mo>&#x02062;</mo>
            </mphantom>
            <mi>c</mi>
          </mrow>
          <mrow>
            <mn>2</mn>
            <mo>&#x02062;</mo>
            <mi>a</mi>
            <mo>+</mo>
            <mn>3</mn>
            <mo>&#x02062;</mo>
            <mi>b</mi>
            <mo>+</mo>
            <mn>5</mn>
            <mo>&#x02062;</mo>
            <mi>c</mi>
          </mrow>
        </mfrac>
      </mtd>
    </mtr>
  </mtable>
</math>

mphantomによる位置揃えの各ブラウザによる表示例は、次のとおりです。

mphantomによる位置揃えのFirefoxによる表示例
mphantomによる位置揃えのSafariによる表示例
mphantomによる位置揃えのChromeによる表示例
mphantomによる位置揃えのMathJaxによる表示例

FirefoxChromeで表示したものは、"+"に比べ"-"が小さく、結果として揃っていない状況です。

インライン形式の総和と分数

最後に、インライン形式の総和と分数を比較してみます。表示に用いたMathMLのコードは次のとおりです。

<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">
  <mtext>インライン形式の総和と分数:</mtext>
  <munderover>
    <mo>&#x02211;</mo>
    <mrow>
      <mi>i</mi>
      <mo>=</mo>
      <mn>1</mn>
    </mrow>
    <mi>n</mi>
  </munderover>
  <mfrac>
    <mn>1</mn>
    <mrow>
      <mi>i</mi>
      <mo>+</mo>
      <mn>1</mn>
    </mrow>
  </mfrac>
</math>

インライン形式の総和と分数の各ブラウザによる表示例は、次のとおりです。

インライン形式の総和と分数のFirefoxによる表示例
インライン形式の総和と分数のSafariによる表示例
インライン形式の総和と分数のChromeによる表示例
インライン形式の総和と分数のMathJaxによる表示例

Firefoxでは、そもそもインライン形式になっていません。さらにΣ記号の上・下でn・i=1が分子・分母の1・i+1に比べて大きいです。SafariChromeMathJaxはインライン形式になっています。なお、Σの上端とnの上端が、Safariでは揃うようになっていて、他のものは揃わないようになっているようです。

FirefoxでΣ記号の上下の添え字がインライン形式で表示されないのは、Firefoxが初期設定でmovablelimits="false"となっているためのようです。movablelimits="true"と明示するとインライン形式で表示されるようです。

まとめ

FirefoxSafariChromeMathJaxを比較してみたところ、SafariMathJaxがきれいな数式で表示されるようです。個人的な好みの問題もありますが、Safariが一番洗練された表示であるように感じました。

いいなと思ったら応援しよう!