Главная :: Веб разработка :: MathML :: MathML: базовый синтаксис
Ночь. Сидит программист за компом, дописывает последние строчки новой программы. Но тут неожиданно звонок в дверь. Программист за дверь - а там смерть с косой, но маленькая. - Блин не вовремя ты дай допишу программу, а там и забирай меня... - Не переживай мужик, я не за тобой. Я за твоим винтом!

MathML: базовый синтаксис

Переменные задаются в элементе <mi> (mi — math identifier), числа (целые и вещественные) определяются в элементе <mn> (mn — math number), для операторов используется элемент <mo> (mo — math operator):

<math display='block'>
  <mn>2</mn>
  <mi>x</mi>
  <mo>-</mo>
  <mi>y</mi>
  <mo>=</mo>
  <mn>0</mn>
</math>
2x-y=0

Верхний индекс определяется в элементе <msup> имеющий два аргумента — выражение и индекс:

<math>
  <msup>
    <mi>x</mi>
    <mn>2</mn>
  </msup>
  <mo>+</mo>
  <msup>
    <mi>y</mi>
    <mn>2</mn>
  </msup>
  <mo>=</mo>
  <msup>
    <mi>R</mi>
    <mn>2</mn>
  </msup>
</math>
x 2 + y 2 = R 2

Аналогично, нижний индекс определяется в элементе <msub>: x0.

Если переменная имеет и нижний и верхний индекс, то используется элемент <msubsup> содержащий три аргумента — переменную, нижний индекс и верхний индекс:

<math>
  <msubsup>
    <mi>x</mi>
    <mn>0</mn>
    <mn>2</mn>
  </msubsup>
</math>
x 0 2

Отметим, что при использовании элемента <msubsup> индексы будут располагаться друг над другом, в отличии от последовательного использования элементов <msub> и <msup>, где верхний индекс будет смещен вправо относительно нижнего индекса.

Элемент <msubsup> поддерживает два свойства subscriptshift и superscriptshift, определяющие смещение нижнего индекса вниз и верхнего индекса вверх относительно базисной линии, соответственно. Элемент <msub> поддерживает свойство subscriptshift, а элемент <msup> - свойство superscriptshift.

Если аргумент содержит несколько символов или сложное выражение, то он может быть объединен в одно выражение с помощью элемента <mrow>:

<math>
  <msup>
    <mrow>
      <mo>(</mo>
      <mi>x</mi>
      <mo>+</mo>
      <mi>y</mi>
      <mo>)</mo>
    </mrow>
    <mn>2</mn>
  <msup>
</math>
( x + y ) 2

Квадратный корень от выражения дается элементом <msqrt>. Корень произвольной степени определяется в элементе <mroot>, первый аргумент определяет выражение, а второй аргумент — степень корня.

<math>
  <mroot>
    <mrow>
      <msup>
        <mi>x</mi>
        <mn>2</mn>
      </msup>
      <mo>+</mo>
      <mi>4</mi>
    </mrow>
    <mn>4</mn>
  </mroot>
  <mo>&ge;</mo>
  <msqrt>
    <mn>2</mn>
  </msqrt>
</math>
x 2 + 4 4 2

Дроби отображаются с помощью элемента <mfrac>. Первый аргумент является числителем, а второй знаменателем. Сложные аргументы задаются в элементе <mrow>. Элемент <mfrac> поддерживает следующие атрибуты:

<math>
  <mfrac>
    <mn>1</mn>
    <mi>x</mi>
  </mfrac>
  <mo>=</mo>
  <mfrac linethickness='3pt'>
    <mn>1</mn>
    <mi>x</mi>
  </mfrac>
  <mo>=</mo>
  <mfrac bevelled='true'>
    <mn>1</mn>
    <mi>x</mi>
  </mfrac>
  <mo>&ne;</mo>
  <mfrac numalign='right'>
    <mn>1</mn>
    <mrow>
      <mi>x</mi>
      <mo>+</mo>
      <mi>y</mi>
    </mrow>
  </mfrac>
</math>
1 x = 1 x = 1 x 1 x + y

Суммируем полученные в этой статье знания по базовым возможностям MathML решением квадратного уравнения ax2+bx+c=0:

<math>
  <msub>
    <mi>x</mi>
    <mrow>
      <mn>1</mn>
      <mo>,</mo>
      <mn>2</mn>
    </mrow>
  </msub>
  <mo>=</mo>
  <mfrac>
    <mrow>
      <mo>-</mo>
      <mi>b</mi>
      <mo>&plusmn;</mo>
      <msqrt>
        <mrow>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo>-</mo>
          <mn>4</mn>
          <mi>a</mi>
          <mi>c</mi>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mi>a</mi>
    </mrow>
  </mfac>
</math>
x 1 , 2 = - b ± b 2 - 4 a c 2 a