Сайт Романа ПарпалакаБлог20140122

Латех в вебе

22 января 2014 года, 12:19

Постоянные читатели помнят, что у меня есть движок сайтов S2, и он с помощью расширения s2_latex ищет в тексте страницы формулы на латехе и заменяет их на картинки. Расширение обращается к сервису codecogs.com. Этот сервис зачастую глючит, и я уже давно сделал свой, с блек-дже... качественным SVG и выравниванием по базовой линии.

Мой сервис делает из формул картинки. Вот, для примера, знакомое всем решение квадратного уравнения в SVG и PNG:

На обычных мониторах преимуществ у SVG нет. Но на ретине или при большом увеличении SVG выглядит более чем достойно. А за ретиной будущее.

В svg-файлы можно добавлять скрипты. Благодаря этому я решил проблему с базовой линией. Чтобы понять, в чем состоит эта проблема, достаточно посмотреть на любую страницу Википедии с формулами:

Символы в формулах крупнее и жирнее, чем в окружающем тексте. Они в буквальном смысле выпадают из окружающего текста. Меняем гротеск на антикву, увеличиваем кегль и добавляем выравнивание по базовой линии:

Теперь буквы в формулах аккуратно располагаются на тех же линиях, что и буквы в окружающем тексте. Чтобы заработала магия с выравниванием по базовой линии, к странице нужно подключить специальный скрипт.

У svg-формул есть существенный недостаток: многие браузеры искажают их при печати. В последних версиях IE и FF получается удовлетворительный результат. В браузерах на хромиуме лучше не распечатывать текст с формулами.

Я подготовил описание сервиса и инструкцию. Посмотреть сервис в работе можно в блоге о теоретической физике. В следующий раз я расскажу о том, как всё это работает.

Ключевые слова: веб-разработка

C Новым годом Ctrl Круговая трактриса

Поделиться

Комментарии

#1. 22 января 2014 года, 17:46. Влад пишет:
Почему не MathJax? У него самый приятный рендеринг. http://i024.radikal.ru/1401/4e/4dd615af7f29.png
Можно включить в википедии в настройках учётной записи.
#2. 22 января 2014 года, 18:10. пишет:
Когда я начинал разбираться в этом вопросе, MathJax был слишком медленным. CodeCogs был вне конкуренции. Сейчас ситуация с быстродействием у MathJax не такая плачевная.

Вообще у MathJax и svg-картинок есть свои достоинства и недостатки. Я о них как-нибудь напишу подробнее. Самое главное, что мне не нравится в MathJax — рендеринг формул в JS. Он происходит каждый раз при открытии страниц на каждом компьютере. И MathJax — это подмножество команд латеха.

У меня рендеринг происходит на сервере в полноценном латехе, результат кешируется и отдается в дальнейшем как статические файлы. В перспективе на этой же инфраструктуре можно будет делать картинки не только с формулами, но и чертежами TikZ, диаграммами Юнга и т. д.

Оставьте свой комментарий

Ваше имя:

Комментарий:

Для выделения используйте следующий код: [i]курсив[/i], [b]жирный[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Ссылку начните с http://. Других команд или HTML-тегов здесь нет.

Сколько будет 21+6?

Записи