Search
Write a publication
Pull to refresh

Добавление математических формул на сайт

Бывает, что контент веб-сайта требует большого количества математических формул. Самым естественным способом их вёрстки является LaTeX. Например, научный форум dxdy требует оформлять все формулы в постах именно через TeX. Как же рендерить формулы TeXa?
На Хабре уже есть статья, в которой даётся краткий обзор существующих online-сервисов для преобразования формул в картинки (рендеринга). Здесь будет подробнее рассмотрен один из этих сервисов, предоставлямый сайтом CodeCogs.com.

Online LaTeX Equation Editor

Для вёрстки формул в одиночном порядке имеется страница Online LaTeX Equation Editor. Она представляет из себя некое подобие визуального редактора. Здесь есть кнопки для специальных символов, математических функций, матриц, смены шрифтов; помимо того, можно открыть отдельный тулбар с образцами формул из разных областей, таких как алгебра, анализ, физика, химия и т. д.

image

Необходимо отметить, что эта страница может быть «встроена» в ваш сайт в качестве pop-up окна. Для этого достаточно подключить в веб-страницу их скрипт (последняя версия которого доступна по адресу http://latex.codecogs.com/editor3.js) и вызвать в каком-нибудь событии (при щелчке на какую-нибудь кнопку формы, например) функцию OpenLatexEditor('testbox','latex',''), где testbox — id вашего текстового поля (<TEXTAREA>), в которое вставится набранный код. В данном случае это будет код на LaTeX, но это можно изменить, например, чтобы возвращался готовый HTML-код, размещающий нужную картинку. Полное описание параметров функции можно посмотреть здесь.

Возможности рендерера

По странице редактора можно видеть, насколько широки возможности движка.
  • Рендеринг картинки в 6 разных форматах: GIF, PNG, PDF, SWF, EMF, SVG. Создатели сервиса рекомендуют SVG, ибо это векторный формат и формулы в таком случае не теряют качества при изменении масштаба страницы.
  • Выбор из 5 разных шрифтов (среди которых Comic Sans, да-да!).
  • Выбор из 6 размеров шрифта, от 5 до 20 pt.
  • Возможность выбора разрешения изображения.
  • Выбор из 6 цветов фона, в том числе прозрачного. Вкупе с возможностью менять цвет текста это даёт возможность использовать формулы и на сайтах, предпочитающих белому фону цветной или тёмный.
  • Выбор между строчным и выключным видом формулы (соответственно конструкциям TeX'а $inline formula$ и $$outline formula$$).
Правда, сервис не умеет работать с кириллицей.

Есть у движка и некоторое ограничение. Бесплатно он готов получать от вашего сайта не больше 3000 запросов на рендеринг картинок в день. Впрочем, CodeCogs позволяет купить лицензию, повышающую этот показатель до 20 000 и даже 30 000 в день.

Выравнивание изображений в строке

Если вы будете вставлять изображения с формулами в текст, вы заметите, что многие формулы смещаются с положенных мест. Это связано с CSS-свойством vertical-align соответствующего элемента <IMG>. Так, например, формулы image и image ведут себя совершенно по-разному в связи с разной высотой картинок. Для исправления этой проблемы есть два пути.

Первый из них — скрипт (подробное описание здесь), написанный создателями движка, который пробегает по всем изображениям страницы и в тех, адреса которых ведут на CodeCogs.com, автоматически выставляет нужное смещение. Сами авторы говорят, что работа его далека от идеала и он требует доработки.

Второй — подглядеть смещение в файле http://latex.codecogs.com/gif.json?formula. Например, для формулы image мы получим следующее:

ParseEqn({ "latex": { "type":"gif", "equation":"\\frac{x}{y}", "site":"unknown", "file":"2b2cbdca03e1406378c8b4402b419d67.gif", "url":"http://www.codecogs.com/eq/2b/2b2cbdca03e1406378c8b4402b419d67.gif", "width":"8", "height":"22", "baseline":"8" } });

Это JSON-структура, и искомое смещение находится в поле baseline.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.