Програми, поддържащи mathml. Подготовка на математически текстове с помощта на MathML

Тази страница обяснява как да пишете математически изрази с помощта на MathML. Подобно на HTML, основните елементи на MathML са тагове и атрибути. Един HTML документ става сложен, когато съдържа структури като списъци или таблици, но за щастие има много прости генератори, базирани на нотация, WYSIWYG редактори и други системи за управление на съдържанието, които ви помагат да създавате уеб страници.

Математическата нотация е още по-сложна със структури като дроби, квадратни корени или матрици, които вероятно ще изискват собствени етикети. Следователно инструментите за разработка, свързани с MathML, са много важни. Ние описваме някои от тези инструменти по-долу. По-специално, екипът на Mozilla MathML разработи TeXZilla (конвертор на Javascript Unicode LaTeX към MathML), който е предназначен за използване в много от сценариите, описани тук. Разбира се, този списък в никакъв случай не е изчерпателен и ви препоръчваме да проверите списъка със софтуер W3C MathML, където може да намерите някои други инструменти.

Имайте предвид, че MathML е добре интегриран в HTML5. По-специално, можете да използвате общи уеб инструменти като CSS, DOM, Javascript или SVG. Тази тема е извън обхвата на този документ, но всеки с основни познания по уеб езици може лесно да комбинира тези инструменти с MathML. Разгледайте нашите примери за повече подробности.

Използване на MathML MathML в HTML страници

Можете да използвате Presentation MathML в HTML5 документи:

MathML в HTML5 MathML в HTML5

Корен квадратен от две: 2

Content MathML не се поддържа от браузъри. Препоръчително е да конвертирате оформлението си от Content MathML в Presentation MathML, преди да го публикувате, например с помощта на лист със стилове. Инструментите, споменати на тази страница, генерират Presentation MathML.

Опции за браузъри без поддръжка на MathML

За съжаление, някои браузъри не могат да показват MathML изрази или имат ограничена поддръжка. Следователно ще трябва да използвате MathML polyfill, за да осигурите някакъв резервен вариант за изобразяване. Ако имате нужда само от основни математически конструкции, като тези, използвани в тази MDN wiki, тогава може да е достатъчен малък лист със стилове mathml.css. За да го използвате, просто вмъкнете един ред в главата на вашия документ:

Ако имате нужда от по-сложни конструкции, тогава можете вместо това да използвате по-богатата библиотека MathJax като MathML polyfill:

Имайте предвид, че тези два скрипта разпознават елементите mspace или mpadded (вижте таблицата за съвместимост на браузъра на тези страници). Има и подобен скрипт, който показва предупреждение в горната част на страницата за браузъри без добра поддръжка на MathML и позволява на потребителите да изберат една от следните опции:

Ако не искате да използвате тази GitHub връзка, но вместо това искате да интегрирате тези polyfills или нещо друго във вашия проект, тогава може да ви е необходим скрипт, който проверява нивото на поддръжка на MathML. Например, следната функция тества поддръжката на MathML чрез тестване на елемента mspace (можете да замените mspace с mpadded):

Функция hasMathMLSupport() ( var div = document.createElement("div"), box; div.innerHTML = ""; document.body.appendChild(div); box = div.firstChild.firstChild.getBoundingClientRect(); document.body .removeChild(div); return Math.abs(box.height - 23) -1 && ua.indexOf("Chrome") === -1;

Математически шрифтове

За да получите добро оформление или да осигурите желания стил, е важно да имате математически шрифтове. Винаги е добра идея да предоставите връзка към ръководството за шрифтове на MDN, така че вашите посетители да могат да проверят дали подходящите шрифтове са инсталирани на тяхната система. Също така е добра идея да имате резервно копие на вашите уеб шрифтове.

Преди Gecko 31.0 (Firefox 31.0 / Thunderbird 31.0 / SeaMonkey 2.28) беше досадно да се инсталират математически шрифтове (вижте инструкциите за инсталиране на шрифтове за Mozilla 2.0). За Gecko 31.0 (Firefox 31.0 / Thunderbird 31.0 / SeaMonkey 2.28) това е много по-просто и съвместимо с всички машини за уеб изобразяване с поддръжка на MathML. Например, тук е минимален стилов лист за използване на шрифта Latin Modern за текст и шрифта Latin Modern Math за математически изрази:

@namespace url("http://www.w3.org/1999/xhtml"); @namespace m url("http://www.w3.org/1998/Math/MathML"); тяло, m|mtext (семейство шрифтове: Latin Modern; ) m|math (семейство шрифтове: Latin Modern Math;)

MathML в XML документи (XHTML, EPUB и др.)

Ако по някаква причина трябва да използвате MathML в XML документи, не забравяйте да следвате обичайните изисквания: добре оформен документ, използвайки правилния MIME тип, пространството от имена MathML "http://www.w3.org/1998/Math /MathML" с основен елемент. Например XHTML версията на предишния пример изглежда така:

XHTML+MathML Пример XHTML+MathML Пример

Корен квадратен от две: 2

MathML в имейл клиенти и клиенти за незабавни съобщения

Съвременните имейл клиенти могат да изпращат и получават имейли във формат HTML5, което означава, че могат да използват MathML изрази. Не забравяйте да активирате опциите „изпрати като HTML“ и „преглед като HTML“. В Thunderbird можете да използвате командата Insert HTML, за да вмъкнете HTML + MathML код. MathBird е удобна добавка за Thunderbird за вмъкване на такива MathML изрази, използвайки синтаксис за въвеждане на AsciiMath. Освен това, полето за въвеждане LaTeX-to-MathML също е интегрирано в SeaMonkey от версия 2.28 и в Thunderbird от версия 31. От друга страна, обработката на MathML кода и качеството на MathML изобразяването зависи от имейл клиента. Дори ако вашият браузър поддържа MathML, вашият имейл може да ви попречи да изпращате или получавате съобщения с MathML вътре.

Базираните на Gecko клиенти за незабавни съобщения могат да интегрират базиран на Javascript конвертор от текст към MathML (вижте по-долу) и да показват MathML изрази, генерирани от обикновен IM текст. Например, има добавка, наречена Instantbird, която обработва LaTeX изрази.

Преобразуване от прост синтаксис

Има много прости синтактични системи (например wiki или синтаксис за маркиране) за генериране на HTML страници. Същото важи и за MathML: например ASCII синтаксисът, използван в калкулаторите или по-мощният език LaTeX, е много популярен сред научната общност. В този раздел представяме някои от тези инструменти за конвертиране от обикновен синтаксис в MathML.

  • плюсове:
    • Писането на математически изрази може да изисква само стандартен текстов редактор.
    • Налични са много инструменти, някои от които са съвместими с класическия работен процес LaTeX към pdf.
    • Това ви дава достъп до разширени макро възможности, подобни на макросите на LaTeX.
  • минуси:
    • Може да бъде по-трудно за използване: хората трябва да научат синтаксиса, печатните грешки в кода могат лесно да доведат до грешки при анализиране или изобразяване и т.н.
    • Интерфейсът не е удобен за потребителя: има само редактор на код без незабавно показване на математическия израз.
    • Нито един от синтаксисите не е стандартизиран, което затруднява кръстосаната съвместимост между конверторите. Дори популярният език LaTeX продължава да се актуализира с нови пакети.
Конверсия от страна на клиента

В уеб средата най-очевидният метод за конвертиране на прост синтаксис в DOM дърво е използването на Javascript и, разбира се, много библиотеки са разработени за изпълнение на тази задача.

  • плюсове:
    • Много лесна настройка: просто трябва да качите няколко Javascript и CSS файла и/или да добавите връзки към главата на документа.
    • Това е чисто уеб решение: всичко се прави от браузърите и не е необходимо да се инсталират или компилират други програми.
  • минуси:
    • Това няма да работи, ако потребителят е деактивирал Javascript.
    • MathML кодът не се поддържа от уеб роботи (като математически търсачки или новинарски агрегатори). По-конкретно, вашето съдържание няма да се показва правилно на Planet.
    • Преобразуването трябва да се извършва при всяко зареждане на страницата, може да е бавно и да е в конфликт с HTML анализ (напр. "
Споделете