December 2023

M T W T F S S
    123
45678910
11121314151617
18192021222324
252627282930 31

Page Summary

Expand Cut Tags

No cut tags
Monday, February 14th, 2022 21:19
 Вообще конечно, «возвращаться» в ЖЖ/DW после какого-то перерыва ощущается довольно странно, уж очень непохоже на все другие современные платформы, как будто заглянул в какую-то параллельную вселенную. Неудивительно, что новые люди сюда почти не приходят, а старые понемного уходят, кто в мир иной, кто ещё куда.

Ну да ладно, не будем о грустном.

Для первого поста почти что за полгода у меня сегодня весьма узкая и скорее всего мало кому интересная тема: изображение математических формул в online-документах.

Собственно, это один из тех забавных случаев, когда о каком-то событии совершенно неожиданно узнаёшь только спустя весьма продолжительное время, вот например в данном случае, почти что спустя десятилетие: в конце 2013 года разработчики браузера Chrome объявили, что более не планируют поддерживать в своём браузере Web-стандарт MathML.


О чем здесь речь?

Собственно говоря, очевидно, что если у нас есть некий универсальный формат для представления текста и разного рода графики (ну то есть, HTML), он должен был бы в идеале предоставлять какие-то возможности для включения математических формул (помимо использования вставленных картинок, как оно и делалось в ранние годы интернета и как и сейчас приходится делать в ЖЖ/DW).

Неудивительно поэтому, что разработка встроенного формата MathML началась стазу же, как только вообще устаканилось понимание, что интернет требует неких согласованных стандартов, и как только XML утвердился как универсальный формат для текстового представления любых структурированных документов; ну то есть, в конце 90-х.

Википедия:

MathML 1 was released as a W3C recommendation in April 1998 as the first XML language to be recommended by the W3C. Version 1.01 of the format was released in July 1999 and version 2.0 appeared in February 2001. […] Version 3 of the MathML specification was released as a W3C recommendation on 20 October 2010 […] The Second Edition of MathML 3.0 was published as a W3C Recommendation on 10 April 2014. The specification was approved as an ISO/IEC international standard 40314:2015 on 23 June 2015.

Итак, прошло четверть века; срок, прямо скажем, немаленький с точки зрения интернет-технологий, чтобы не сказать огромный. Ну и что мы имеет сегодня?

Совершенно удивительным образом, почти ничего. Стандарт пребывает в каком-то странном состоянии между жизнью и смертью.

Вот есть вроде бы вполне детальная страница MathML Test Suite 2.0, находящаяся не где-нибудь, а прямо на официальном сайте World Wide Web Consortium w3.org. Надо заметить, сама страница при этом выглядит так, как будто была сделана каким-то студеном лет 15 назад и с тех пор ни разу не обновлялась, ну да ладно.

При попытке открыть эту страницу в разных браузерах сразу же выясняется, что Firefox рисует все формулы весьма точно и профессионально, Safari … ну…. вроде бы поддерживает всё что нужно, но полное ощущение, что это сделано опять же каким-то студентом между делом, кое-как, «чтобы было», и больше это никто никак не проверял и не чинил.

Что же до браузера Google Chrome, они добавили поддержку MathML в 24-й версии, в начале 2013 года. А в 25-й
версии, в марте того же года, убрали.

Что же собственно случилось?

Честно говоря, непонятно. Разработчики, со существу, сослались на то, что математические формулы никому не нужны, а если вдруг понадобятся, то всегда можно использовать популярную JS-библиотеку MathJax. Что звучит не слишком убедительно, потому-то, во-первых, речь идёт об официальном стандарте W3C, а зачем нужны стандарты, если каждый будет решать, нужно это или нет? Ну и потом, использование JS не везде возможно (например, это никак не помогает в ЖЖ/DW) и не всегда вполне оптимально.

При этом, что интересно, в базе данных багов Chrome есть один из самых ранних багов, за номером 666 6606, Missing MathML implementation. Баг не закрыт, и активное обсуждение идёт до сих пор, то есть уже 13 лет. Как я понимаю, сейчас считается, что реализация поддержки MathML блокирована аж 30 другими багами (самый старый из которых 6-летней давности). Ну то есть, рано или поздно мы видимо дождёмся реализации MathML в Хроме. В 30-х годах? 40-х? Кто знает. Будем ждать и надеяться.


На самом деле, MathML это довольно забавная идея. С одной стороны, писать математический текст вручную в формате XML это удовольствие ещё то; сравните например несложную формулу (конформное дробно-линейное отображение круга в себя)

w = \frac{z - a}{1 - \bar{a}z}

Записанную в LaTeX’е

  w = \frac{z - a}{1 - \bar{a}z}

И то же самое в MathML:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>w</mi>
    <mo>=</mo>
    <mfrac>
      <mrow>
        <mi>z</mi>
        <mo>-</mo>
        <mi>a</mi>
      </mrow>
      <mrow>
        <mn>1</mn>
        <mo>-</mo>
        <mover accent="true">
          <mrow>
            <mi>a</mi>
          </mrow>
          <mo>_</mo>
        </mover>
        <mi>z</mi>
      </mrow>
    </mfrac>
  </mrow>
</math>

С другой стороны, понятно, что такой формат потенциально открывает массу новых возможностей, которые просто невозможно реализовать в формате TeX/LaTeX (который ведёт свою историю с 70-х годов).

Мы как-то все привыкли, что веб-технологии двигаются только вперёд; оказывается, не всегда. Некоторые, как оказалось, застревают в пути на неопределённый срок.


Tuesday, February 15th, 2022 20:34 (UTC)
Я вам как человек с ISO-10303 в анамнезе чего скажу - главное в стандартах то, что их много и можно выбрать на свой вкус :)