Тег MathML: проблема растяжения атрибута - PullRequest
0 голосов
/ 26 сентября 2019

Мне было интересно, в следующем примере, почему атрибут stretchy тега mo дает похожее отображение.Я думал, что вторая MathML ниже (с <mo stretchy="false">∑</mo> будет отображать верхний и нижний пределы сверху и снизу символа суммирования (как показано на рисунке 2 ниже). Но оба примера (с <mo stretchy="true">∑</mo> и <mo stretchy="false">∑</mo>соответственно) вместо этого отображаются ограничения по сторонам символа суммирования:

Примечание : я использую MathJax

HTML с MathML

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>MathJax TeX to MathML Page</title>
    <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
    </script>
</head>
<body>
    <p>With stretchy="true"</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><msubsup><mo stretchy="true">∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi></mrow></msubsup><mrow><mfenced separators="|"><mrow><mfrac linethickness="0pt"><mrow><mi>n</mi></mrow><mrow><mi>k</mi></mrow></mfrac></mrow></mfenced><msup><mrow><mi>x</mi></mrow><mrow><mi>k</mi></mrow></msup><msup><mrow><mi>a</mi></mrow><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup></mrow></mrow></math>
    <p>With stretchy="false"</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><munderover><mo stretchy="false">∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi></mrow></munderover><mrow><msup><mrow><mi>r</mi></mrow><mrow><mi>k</mi></mrow></msup></mrow></mrow></math>
</body>
</html>

Отображение вышеуказанного HTML [с использованием MathJax]:

enter image description here

Требуемое отображение второго MathML <mo stretchy="false">∑</mo>):

enter image description here

1 Ответ

1 голос
/ 27 сентября 2019

Вы использовали неправильный атрибут.Вы хотите не strethy="false", а movablelimits="false" (или используйте <math display="block"> или <mstyle displaystyle="true"> вокруг выражения).

Например:

<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/mml-chtml.js"></script>

<p>
<b>movablelimits="false"</b>
<br>

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <munderover>
    <mo movablelimits="false">∑</mo>
    <mrow>
      <mi>k</mi>
      <mo>=</mo>
      <mn>0</mn>
    </mrow>
    <mi>n</mi>
  </munderover>
  <msup>
    <mi>r</mi>
    <mi>k</mi>
  </msup>
</math>

</p><p>

<b>display="block"</b>
<br>

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <munderover>
    <mo>∑</mo>
    <mrow>
      <mi>k</mi>
      <mo>=</mo>
      <mn>0</mn>
    </mrow>
    <mi>n</mi>
  </munderover>
  <msup>
    <mi>r</mi>
    <mi>k</mi>
  </msup>
</math>

</p><p>

<b>mstyle displaystyle="true"</b>
<br>

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="true">
  <munderover>
    <mo>∑</mo>
    <mrow>
      <mi>k</mi>
      <mo>=</mo>
      <mn>0</mn>
    </mrow>
    <mi>n</mi>
  </munderover>
  <msup>
    <mi>r</mi>
    <mi>k</mi>
  </msup>
  </mstyle>
</math>

</p>

Обратите внимание, однако, что они генерируют различный вывод.Первый использует меньший знак суммирования (так как это встроенный математический стиль), второй использует отдельную строку с математическим центром в нем, а третий - встроенный, но использует правила макета в режиме отображения.

...