Курсова робота: MathML (Mathematical Markup Language). Основні способи вставки формул в html-документи Можливості сучасних браузерів при роботі з MathML

.

необхідність розмітки MathML викликана тим, що формат HTML, незважаючи на безліч чудових властивостей, має досить-таки обмежені можливості передачі математичних позначень. Найчастіше формули на HTML-сторінках подаються у вигляді графіки (растрової або векторної), але цей спосіб має очевидні недоліки. Наприклад, формулу-малюнок практично неможливо відредагувати, а якість її при друку зазвичай залишає бажати кращого. Розвиток ідей і призвело до створення цілого сімейства мов математичної розмітки, до яких відноситься і MathML.Розробники усвідомлювали глибину проблематики і поставили собі за мету створити специфікацію, що задовольняє наступним обмеженим, але все ж досить важливим вимогам:

ü легкість освоєння і ручного набору основних математичних позначень

ü максимальна сумісність з іншими математичними форматами, яка повинна забезпечуватися відповідними конвертами

ü можливість виведення формул на різні термінальні пристрої

ü підтримка розширюваності, т. е. введення нових символів, схем.

Загальний принципвикористання MathML полягає в тому, що математичні конструкції вбудовуються в звичайний HTML-документ і відтворюються при завантаженні документа з мережі.

Мова MathML пропонує гнучку і расширяемую систему запису математичного матеріалу, таким чином взаємодія з зовнішніми програмами і здійснювати високоякісне відображення в різних інформаційних середовищах. Загальний принцип використання MathML складається у встановленні математичних конструкцій в XHTML / HTML-документ.Створення веб-сторінок з використанням MathML можливо трьома способами: HTML + презентаційний MathML, XHTML + презентаційний MathML, XML + MathML

Для перетворення математичних виразів в MathML існує безлічутиліт. основними браузерами , Безпосередньо підтримують MathML, є останні версії Mozilla і його різновиди. Багато інші браузери підтримують цей формат при установці відповіднихплагінів . Крім того, MathML підтримується основними офісними програмами, такими як Microsoft Word і OpenOffice.org , А також математичними програмними продуктами наприклад, Mathematica, Maple. MathML - про чень потужний і універсальний мову розмітки формул. Правда, редактувати формули (ічитати) досить важко. Мова MathML побудований по XML-технології і для завдання фрагментів формул використовуються свої теги.

Приклад опису простої формули

x

+

3

приклад 2

Вставка формул в html-документи за допомогою розмітки TeX

TeX- це популярна мова розмітки, який використовують багато людей, особливо в математичному світі, текстовий процесор, система форматування документів.

Пакет дозволяє автоматизувати багато завдань набору тексту і підготовки статей, включаючи набір тексту на декількох мовах, нумерацію розділів і формул, перехресні посилання, розміщення ілюстрацій і таблиць на сторінці, ведення бібліографії та ін.

Формули в LaTeX набираються за допомогою спеціальних команд. Наприклад, формула длянормального розподілу в LaTeX буде виглядати так: \ frac (1) (\ sigma \ sqrt (2 \ pi)) \ exp \ left (- \ frac ((x- \ mu) ^ 2) (2 \ sigma ^ 2) \ right)

а відображатися буде так:

Вихідний код математичної формули записується всередині тега ... Прогалини ігноруються (ТеХ їх зробить сам). Порожні рядки не дозволяються.

Переваги TEX:

  • програмні реалізації TEX є практично для всіх типів комп'ютерів
  • низькі вимоги до апаратних ресурсів (для роботи досить IBM PC сумісного комп'ютера з 286/386 процесором)
  • переносимість вихідних текстів, (результати форматування, тобто кінцевий вигляд вашого документа, буде ідентичний для все платформ)
  • при друку виходить текст типографської якості,
  • велика кількість безкоштовних реалізацій
  • можливість підготовки математичних і інших формул будь-якої складності які будуть прекрасно виглядати для друку, витрачаючи при цьому мінімум зусиль
  • розширюваність (на основі наявних базових команд можна створювати свої, більш складні)

Однією з основних функцій, закладених в TeX при його проектуванні, була можливість простого набору математичних формул.

Набір складних формул істотно легше і швидше «візуальних» редакторів (M $ Equation, MathCAD). Особливо це помітно, де потрібно вирівнювання формул відносно один одного, розстановка нумерації, а також при використанні нестандартних математичних позначень.

Формули підтримуються тільки в нотації TeX. приклад:

notation = 'TeX'> E = mc ^ 2

що буде виглядати так:

Вставка формул в html-документи у вигляді малюнків

Найпростіший спосіб - вставляти формули як растрові картинки за допомогою тега img. Зображення формули може бути отримано як вручну (з візуального редактора формул), так і автоматично. Формули подаються у вигляді вставних об'єктів, впроваджених в документ. Вони можуть містити багатоповерхові прості дроби, грецькі літери, матриці.

переваги:

відображаються так само, як і в оригіналі у всіх браузерах, що відображають картинки

порівняно легко копіюється в документи Office

недоліки:

найбільший розмір сторінки з формулами з усіх рас сматіваемих варіантів

неможливо змінити розмір формули - найчастіше вона або занадто дрібна, або занадто велика щодо тексту або занадто дрібна, або занадто велика щодо тексту

погано виглядає при виведенні на друк - не збігаються дозволу

неможливо змінити формулу без її вихідного коду і спеціальної програми

досить важко відцентрувати формулу, що знаходиться в тексті

неможливо перенести формулу за словами - розбити на кілька рядків при необхідності

Використана література.

1. Галактіон В.В. Розширювана мова розмітки XML (Extensible Mark-up Language): промисловий стандарт, що визначає архітектуру програмних засобівІнтернет наступного покоління. Повідомлення ОІЯД, Р10-2000-44, Дубна, 2000..

2. Д. Кнут. «Все про TeX.»

3. http://math.accent.kiev.ua

4. http://www.raleigh.ru/ MathML /MathML2/chapter2.html ·

5. www.elbib.ru/index.phtml?page=elbib/rus/journal/2005/

6. http://www.ibb.ru/articles/ tex /node3.phtml

До виходу HTML5 використання формул було сущим покаранням. Судіть самі: у 2005-му необхідно було мати під рукою або спеціальний браузер, або розбивати текст на власне HTML і вставки з зображень або PDF. Пошук і інші операції редагування і / або виведення на екран / папір був неоднозначною завданням, якій присвячувалися цілі монографії.

У 2012-му було вже простіше. З'явилася можливість підключати необхідні плагіни (Firemath для FireFox і Daum Equation Editor для Chrome). Але неоднозначність стандартів (і підтримки) фактично змушувала писати одну і ту ж статтю для кожного з браузерів (і для їх версій). Або зустрічати користувачів чарівним привітанням «Ваш браузер треба оновити / доповнити розширенням».

Незручно? - Так! Забирало багато часу на пошук універсального рішення? - Так! Змушує думати про те, який тип запису краще (презентаційний або змістовний), яким конвертером користуватися (а їх тільки загальновідомих з десятка півтора)? - ТАК! ТАК! ТАК!

В результаті робота по публікації перетворювалася в освоєння двох-трьох лексиконів розмітки і вивчення роботи мінімум однієї програми-перекодировщик.

Тепер, з приходом HTML5, все стало набагато простіше. У ньому з'явився новий контейнер .
Кожен допустимий екземпляр MathML повинен бути всередині цього контейнера.
Він не допускає вкладень, але всередині може бути довільне число інших дочірніх елементів.

атрибути тега

На додаток до наступних атрибутів, тег сприймає будь-які атрибути з "> .

class, id, style
За умови використання разом з таблицями стилів.
dir
Вказує напрямок формули: ltr - зліва направо або rtl - справа наліво.
ref
Використовується для установки гіперпосилання на вказаний URI.
mathbackground
Колір фону. Ви можете використовувати #rgb, #rrggbb і назви кольорів HTML.
mathcolor
Колір тексту. Ви можете використовувати #rgb, #rrggbb і назви кольорів HTML.
display
Цей атрибут визначає спосіб виведення. Можливі значення:

  • block- означає, що цей елемент буде відображатися за межами поточного діапазону тексту, як блоку, який може бути розташований в будь-якому місці без зміни змісту тексту;
  • inline-означає, що цей елемент буде відображатися всередині поточного діапазону тексту, і не можуть бути переміщені з неї без зміни значення цього тексту.

Значення за замовчуванням inline.

Mode

Застарілі значення display attribute.
Можливі значення: display (який має той же ефект, як display = "block") і inline.
overflow
Визначає, як вираз поводиться, якщо текст занадто довгий і не поміщається в зазначеному діапазоні ширини.
Можливі значення: linebreak (за замовчуванням), scroll, elide, truncate, scale.

приклади

Подання в HTML5

MathML in HTML5 a 2 + b 2 = c 2

Подання в XHTML

MathML in XHTML a 2 + b 2 = c 2
Примітки: XHTML документи з MathML повинні бути подані як application / xhtml + xml. Ви можете легко домогтися цього, добавів.xhtml розширення для локальних файлів. Для серверів Apache ви можете настроіть.htaccess файл для цього розширення на правильний тип MIME. Оскільки ми зберегли наш MathML у вигляді XML-документа, необхідно бути впевненим в правильно оформленому XML-документі.

підтримка браузерами

підтримка браузерами

повноцінні версії
елемент Chrome Firefox (Gecko) Internet Explorer Opera Safari
XHTML опис (Тільки 24-я) 1.0 (1.7 і вище) 9.5 5.1
HTML5 опис (Тільки 24-я) 4.0 (2.0) 5.1
dir 12.0 (12.0)
href WebKit bug 85733 7.0 (7.0) WebKit bug 85733
mathbackground (Тільки 24-я) 4.0 (2.0) 5.1
mathcolor (Тільки 24-я) 4.0 (2.0) 5.1
overflow

Мобільні версії

елемент Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
XHTML опис 1.0 (1.0)
HTML5 опис 4.0 (2.0)
dir 12.0 (12.0)
href 7.0 (7.0)
mathbackground 4.0 (2.0)
mathcolor 4.0 (2.0)
overflow

1.1 Математика і її система позначень

1.2 Витоки та цілі

1.2.1 Історія MathML

1.2.2 Обмеженість HTML

1.2.3 Вимоги до математичної розмітці

1.2.4 Цілі проекту MathML

1.3 Роль MathML в Мережі

1.3.1 Існуючі мови математичної розмітки

1.3.2 Механізм розширення HTML

1.3.3 Механізм розширення браузера

1.4 Огляд MathML

1.4.1 Таксономія елементів MathML

1.4.2 Розмітка уявлення

1.4.3 Розмітка змісту

1.4.4 Об'єднання подання та змісту

1.5 MathML в документах

1.6 Приклади MathML

1.6.1 Приклади розмітки уявлення

1.6.2 Приклади розмітки змісту

1.6.3 Приклади змішаної розмітки

1.7 Синтаксис і граматика MathML

1.7.2 Приклад синтаксису XML

2.1 Mozilla & Firefox

2.2 MicrosoftInternetExplorer

MathML (Mathematical Markup Language) являє собою мову розмітки математичних додатків, заснований на XML. Він був розроблений Консорціумом WWW (W3C) і прийнятий в якості Рекомендації. Поточною версією є Mathematical Markup Language (MathML) Version 2.0 (Second Edition), затвердженої 21 жовтня 2003 року.

MathML реалізує дві "точки зору" на математичну розмітку. Один з її видів - це розмітка уявлення (Presentation Markup), яка описує візуальну форму подання математичної формули. Другий - розмітка змісту (Content Markup), що виражає семантичний зміст.

MathML розглядає не тільки уявлення, а й сенс елементів формули. Також розробляється система розмітки математичної семантики, покликана доповнити MathML. Вона називається OpenMath.

1.2.1 Історія MathML

Завдання уявлення математичної інформації для комп'ютерної обробки і електронних засобів комунікації виникла задовго до появи Інтернету. Раніше загальною практикою для вчених був запис статей в якомусь вигляді, заснованому на ASCII-символах і подальша пересилання їх один одному по електронній пошті. Кілька мов математичної розмітки, зокрема T E X, вже широко використовувалися в 1992 році, ще до того, як Мережа зайняла настільки значиме положення.

З самого початку Мережа зарекомендувала себе, як дуже ефективний спосіб зробити інформацію доступною великій кількості людей. Однак, навіть при тому, що World Wide Web була спочатку задумана і реалізована вченими для вчених, можливості для включення математичних виразів в HTML були вкрай обмежені. В даний час, велика частина математичної інформації в Мережі представлена ​​у вигляді тексту з графічними зображеннями наукових виразів (в форматі GIF або JPEG) або у вигляді цілих документів в форматі PDF.

Консорціум World Wide Web (W3C) розумів, що відсутність основ для наукової комунікації є серйозною проблемою. Уже в 1994 році Dave Raggett вніс пропозицію про включення HTML Math в прототип HTML 3.0. На конференції в Дармштадті в квітні 1995 року було проведено круглий стіл з математичної розмітці. У листопаді того ж року представники Wolfram Research висунули пропозицію команді W3C про реалізацію підтримки математики в рамках HTML. Важливу роль в об'єднанні багатьох зацікавлених сторін зіграла проведена в травні 1996 року зустріч Digital Library Initiative в Champaign-Urbana. Результатом цієї зустрічі стало формування редакційної наглядової ради з HTML Math. Згодом ця робоча група розрослася, і в березні 1997 року була формально повторно сформована як перша W3C Math Working Group. Друга W3C Math Working Group була сформована в липні 1998 року.

Проект MathML відображає інтереси і думки різних груп фахівців. Багато що в розвитку MathML заслуговує спеціальної згадки. Наприклад, це стосується питання загальнодоступності, де були особливо відчутні труднощі. У цьому напрямку багато роботи виконав T. V. Raman. Neil Soiffer і Bruce Smith з Wolfram Research поділилися своїм досвідом у вирішенні проблем уявлення математичного матеріалу, накопиченим при роботі над проектом Mathematica 3.0. Їх ідеї зробили важливий вплив на структуру елементів уявлення. Paul Topping з Design Science також вніс свій внесок в математичне форматування і редагування. Багато користі витягнув MathML з партнерства з низкою членів робочих груп, пов'язаних з іншими роботами з кодування математичної інформації в SGML і в співтовариствах комп'ютерної алгебри. У їх числі StephenBuswell з StiloTechnologies, NicoPoppelier з ElsevierScienceStéphaneDalmas з INRIA (SophiaAntipolis), StanDevitt з WaterlooMaple, AngelDiaz і RobertS. Sutor з IBM, і StephenM. Watt з UniversityofWesternOntario. Також, на MathML вплинув проект OpenMath, робота робочої групи ISO 12083 та робота Stilo Technologies над фрагментом DTD для "семантичної" математики. Американське математичне товариство відігравало ключову роль в розвитку MathML. Крім іншого, головами обох W3C Math Working Group стали представники цієї організації. З травня 1996 по березень 1997 року гурт вів Ron Whitney. Patrick Ion був співголовою групи з березня 1997 до червня 1998 разом з Robert Miner з The Geometry Center, а з липня 1998 разом з Angel Diaz з IBM.

Цілі розробки MathML вимагають гнучкою і розширюваної системи запису математичного матеріалу, що дозволяє взаємодіяти з зовнішніми програмами і здійснювати високоякісне відображення в різних інформаційних середовищах. Але будь-яку мову розмітки, що задовольняє всім цим вимогам, досить складний.

У той же час, для багатьох груп користувачів, наприклад, студентів, важливо мати простий шлях для включення математичних виразів в web-сторінки. Аналогічно, для інших груп, наприклад, для користувачів системи TEX, найкращим рішенням була б система, що дозволяє безпосереднє включення в web-сторінки розмітки за допомогою мови, подібного TE X. Загалом, різним групам користувачів потрібні різні форми введення і виведення інформації, найбільш відповідні їх потребам. Отже, в ідеалі система для розміщення математичних документів в Мережі повинна надавати як спеціалізовані сервіси для введення і виведення, так і загальні сервіси для обміну інформацією та відображення в різних інформаційних середовищах.

На практиці, огляд того, що повинен забезпечувати математичний стандарт в мережі для спеціалізованих і загальних потреб, призводить до ідеї багаторівневої архітектури. Перший рівень включає стандартні потужні засоби обміну, обробки і відображення математичних даних. Другий рівень включає спеціалізовані інструменти, призначені для конкретних груп користувачів, за допомогою яких можна легко кодувати математичну інформацію для її поширення серед обмеженого кола користувачів.

MathML створений для розмітки математичної інформації на нижньому більш загальному рівнем дворівневої архітектури. Це передбачає розмітку складної нотаціонной і семантичної структури в суворої, регулярної формі, простий для обробки засобами відображення, пошуку і індексації, а також іншими математичними додатками.

Внаслідок цього, розмітка MathML немає передбачає особистої використання авторами. MathML зрозумілий для людини, що сильно допомагає при налагодженні, але у всіх випадках, за винятком найпростіших, він занадто складний для ручного кодування. Замість цього автори повинні будуть використовувати спеціальні редактори формул, конвертери і інші спеціалізовані програмні засоби для створення документів MathML. В якості альтернативи, деякі програми відображення і системи підтримки математичних документів можуть перетворювати інші вхідні формати в MathML "на льоту".

У певному сенсі MathML аналогічний іншим низькорівневим комунікативним форматам, таким як мова PostScript, розроблений Adobe. Ви можете створювати PostScript-файли різними способами, в залежності від ваших потреб: експерти створюють і правлять їх вручну, автори створюють їх за допомогою текстових процесорів, дизайнери - програмами-ілюстраторами і так далі. Якщо у вас є PostScript-файл, ви можете поширити його серед дуже великої аудиторії, так як пристрої відображення PostScript, такі як принтери і програми для перегляду на екрані, широко доступні.

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

Автори можуть створювати MathML-документи, використовуючи інструменти, краще підходять для їх потреб. Студенти можуть віддавати перевагу візуальні редактори формул, з можливістю зберігати блоки розмітки MathML в XHTML-файлі. Дослідники можуть використовувати пакети комп'ютерної алгебри, автоматично кодують математичну інформацію так, щоб колеги могли її взяти з web-сторінки і обробити. Видавці академічних журналів можуть використовувати програму, яка конвертує розмітку T E X в HTML і MathML. Незалежно від методу створення web-сторінки, що містить MathML, стають доступні всі переваги загального комунікативного шару. Різні програми, що працюють з MathML, можуть бути використані для одного і того ж документа, щоб вивести його в систему відтворення мови та на друк, а також для введення в систему комп'ютерної алгебри і для управління ним як частиною великого архіву web-документів. Для високоякісного друку математичних документів у форматі MathML часто проводиться зворотна конвертація в стандартні системи верстки, включаючи T E X, який спеціально створений для цих цілей. Нарешті, можна очікувати, що в кінцевому рахунку MathML буде інтегрований в інші області, де зустрічаються математичні формули, такі як електронні таблиці, пакети статистичної обробки даних і засоби інженерної розробки.

W3C Math Working Group співпрацює з різними софтверними компаніями для гарантії того, що скоро з'являться різні програми для роботи з MathML, включаючи як засоби створення документів, так і їх відображення. Поточний список програм, які працюють з MathML розташований на сторінці Math World Wide Web Consortium.

Первісна концепція HTML Math полягала в тому, щоб просто розширити набір тегів HTML і таким чином забезпечити безпосередню інтерпретацію в браузері. Однак ще до цього лавиноподібне зростання мережі зробив зрозумілим, що потрібно глобальний механізм розширень, а математична інформація є тільки одним з типів структурованих даних, які можуть бути інтегровані в Мережу за допомогою такого механізму.

За умови, що MathML повинен інтегруватися в Мережу як розширення, дуже важливо, щоб MathML і використовують його програми могли добре взаємодіяти з існуючої web-середовищем. Зокрема, MathML повинен розроблятися з урахуванням трьох типів взаємодії. По-перше, для створення математичного контенту важливо, щоб існуючі мови математичної розмітки могли бути перетворені в MathML, і щоб в існуючі редактори була додана можливість створення документів MathML. По-друге, має забезпечуватися можливість вставляти розмітку MathML в розмітку HTML, як її доповнення, в цьому випадку, в майбутньому, вона буде доступна для браузерів, пошукових систем і всіх типів web-додатків, які зараз працюють з HTML. І, нарешті, повинна забезпечуватися можливість відображення MathML, вбудованого в HTML, сучасними браузерами, навіть якщо результат буде далекий від ідеалу. З переходом від HTML до XHTML всі перераховані вище вимоги стануть ще більш необхідними.

World Wide Web повністю інтернаціональний. Математика - мова, що використовується у всьому світі. Математична нотація в науці і техніці тісно пов'язана з національними мовами. W3C прагне бути конструктивною силою в поширенні комунікативних можливостей в світі. Тому розробники MathML зіткнулися з проблемою інтернаціоналізації. Невідомо про несумісність цієї версії MathML з мовами з написанням зліва направо. Запис зліва направо є стандартною в MathML 2, і зрозуміло, що потреба в запису математичних формул в текстах на деяких національних мовах ще не виникала. Так звана "двунаправленная технологія" тільки розробляється, і найкраща підтримка формул в цьому контексті - завдання майбутніх розробок.

1.7.1 Синтаксис і граматика MathML

MathML заснований на (Extensible Markup Language), а значить його синтаксис підпорядковується правилам сіснтаксіса XML, і граматика визначається DTD (Document Type Definition). Іншими словами, деталі використання тегів, атрибутів, сутностей і всього іншого визначені в специфікації мови XML, а деталі, що стосуються елементів і атрибутів MathML, вкладеності елементів і так далі, визначені в MathML DTD.

W3C, намагаючись збільшити легкість і гнучкість використання XML в Мережі і підтримати створення модульних XML-додатків, виявив, що основна форма DTD не є достатньо гнучкою. Тому, було створено робочу групу W3C для розробки XML Schemas, які є документами специфікації і повинні замінити DTD. MathML 2.0 розроблений так, що математики могли використовувати всі переваги, що розвиваються Web-технологій. Таким чином, існує схема для MathML.

Також MathML визначає синтаксичні та граматичні правила, а також загальним правилам, які він успадковує як додаток XML. Ці правила дозволяють MathML представляти значно більше інформації, ніж можливо уявити за допомогою чистого XML, без введення великого числа нових елементів і використовувати значно складніші DTD або схеми. Звичайно, недоліком введення специфічних правил MathML є те, що створені документи не можуть оброблятися процесорами і валідаторами XML.

Існує два основних типи додаткових граматичних і синтаксичних правил MathML. Перший тип включає в себе установку додаткових критеріїв на значення атрибутів. Наприклад, в чистому XML неможливо вимагати, щоб значення атрибуту було позитивним цілим числом. Другий тип правил визначає більш детальні обмеження на дочірні елементи (наприклад, на їх порядок), ніж дані в DTD або навіть схемах. Наприклад, в XML не можна вказати, що перший дочірній елемент повинен оброблятися інакше, ніж інші.

1.7.2 Приклад синтаксису XML

Так як MathML заснований на XML, специфікація MathML використовує термінологію XML. Дані XML складаються з символів Unicodes (які включають в себе звичайні ASCII-символи), посилання на сутності (неформально звані сутностями), такі як<, которые обычно представляют расширенные символы, и элементы, такие как x.

Елементи часто містять в собі інші XML-дані, звані їх "змістом" або "тілом", між "відкриває" і "закриває" тегами, також як в HTML. Існують також "порожні елементи", такі як У яких відкриває тег закінчується символом />, щоб показати, що елемент не має вмісту або закриває тега. Хто відкриває тег повинен містити іменовані параметри, звані атрибутами, наприклад, fontstyle = "normal" в наведеному вище прикладі.

Так як великі і маленькі букви розрізняються в XML, то і імена елементів і атрибутів MathML є чутливими до регістру. Для зручності читання в специфікації MathML більшість з них визначені в нижньому регістрі.

У формальному обговоренні розмітки XML робиться відмінність між елементом, таким як mrow і задають його тегами і. Те, що знаходиться між тегами і, Називається вмістом або тілом елемента mrow. "Порожній елемент", наприклад none, не має тіла і визначається одним тегом виду . У цій специфікації не робитиме упору на це відмінність між тегами і елементами. Наприклад, ми іноді будемо посилатися на елементи і , Маючи на увазі елемент, якому належать ці теги. Це робиться для того, щоб посилання на елементи відрізнялися від посилань на атрибути. Проте, терміни "елемент" and "тег" будуть використовуватися в суворій відповідності з термінологією XML.

1.7.3 Дочірні елементи проти аргументів

Багато елементів MathML вимагають певного числа дочірніх елементів або привласнюють додатковий сенс дочірнім елементам, які стоять в певній позиції. Як було зазначено вище, цей тип обмежень є специфічним для MathML і не може бути заданий за допомогою синтаксису і граматики XML. Коли дочірній елемент даного елемента MathML задовольняє цим додатковим умовам, ми будемо говорити про нього як про аргументі, А не про дочірньому елементі, щоб підкреслити специфічність його використання. Зауважте, що термін "аргумент" застосовується саме в цьому технічному сенсі, якщо не вказано інше.

Деякі елементи мають інші вимоги на число або тип аргументів. Ці додаткові вимоги описуються для кожного конкретного елемента.

1.7.4 Значення атрибутів MathML

Відповідно до специфікації мови XML, атрибути елементів повинні бути задані в одній з наступних форм:

attribute-name = "value"

attribute-name = "value"

де прогалини навколо знака "=" необов'язкові.

Імена атрибутів виділені в тексті специфікації моноширінним шрифтом, так само як і приклади.

Значення атрибутів, які в MathML можуть бути рядком довільних символів, повинні бути укладені в подвійні ( ") або одинарні (") лапки. Значення атрибута може містити той тип лапок, який не використовується для укладання всього значення.

MathML використовує більш складний синтаксис для значень атрибутів, ніж загальний синтаксис XML, що задається MathML DTD. Ці додаткові правила призначені для додатків MathML, і їх порушення є помилкою MathML, однак вони не можуть бути відслідковані процесорами XML. Синтаксис значень елементів MathML визначений в таблиці атрибутів і супроводжений описом кожного елемента, використовуючи описану нижче нотацію. Коли додаток MathML обробляє значення атрибутів, всі прогалини, за винятком поділяють окремі слова або числа, ігноруються. Символьні дані можуть бути включені в значення атрибутів безпосередньо або з використанням довідкових сутностей.

Зокрема, символи ",", & і< могут быть включены в значения атрибутов MathML (когда это разрешено синтаксисом) с использованием сущностей ",",& и <, соответственно.

MathML DTD, оголошує типи більшості значень атрибутів як рядок CDATA. Це дозволяє збільшити сумісність з існуючим програмним забезпеченням на основі SGML і XML і розширювати список зумовлених значень. Подібні ж міркування можна застосувати до схем XML.

1.7.4.1 Синтаксичні нотації, що використовуються в специфікації MathML

Для опису MathML-специфічного синтаксису допустимих значень атрибутів, в цьому документі використовуються наступні угоди і нотації.

нотація Що означає
number десяткове ціле або раціональне число (рядок цифр з одного десяткового точкою), можливо, що починається зі знака "-"
unsigned-number десяткове ціле або дійсне число, без знака
integer десяткове ціле число, можливо, що починається зі знака "-"
positive-integer десяткове ціле число, без знака, що не 0
string довільна рядок (завжди повне значення атрибута)
character одиночний непробельний символ або ссилочая сутність MathML; можливо поділ пробілами
#rrggbb колір в форматі RGB; три пари шістнадцяткових цифр в прикладі # 5599dd визначають пропорцію червоного, зеленого і синього за шкалою від x00 до xFF, яка дає яскравий блакитний колір.
h-unit одиниця виміру горизонтальної довжини (допустимі одиниці виміру перераховані нижче)
v-unit одиниця виміру вертикальної довжини (допустимі одиниці виміру перераховані нижче)
css-fontfamily
css-color-name пояснюється нижче, в підрозділі про CSS
інші слова, виділені курсивом пояснюються в тексті, окремо для кожного атрибута
form + один або більше примірників "form"
form * нуль або більше примірників "form"
f1 f2 ... fn один екземпляр кожної форми, послідовно, можливо розділення пробільними символами
f1 | f2 | ... | fn будь-яка з вказаних форм
необов'язковий примірник "form"
(Form) те ж саме, що і просто form
невиділені слова слова, включених в значени атрибута дослівно (есді це не частина пояснює фрази)
символи в лапках символи, дослівно включені в значення атрибуту (наприклад, "+" or "+")

Пріоритет операція, від найвищого до наинизший:

form + або form *

f1 f2 ... fn (послідовність форм)

f1 | f2 | ... | fn (одна з форм)

Тип stringможе містити довільні символи, які визначені в значеннях атрибуту XML CDATA. У MathML немає синтаксичних правил, за якими stringможе бути частиною значення атрибута, а не всім значенням.

Сусідні ключові слова і числа в значеннях атрибутів повинні розділятися пробільними символами, за винятком наступних за числами ідентифікаторів одиниць вимірювання (що зазначено в синтаксисі символів h-unit і v-unit). Пробільні символи не потрібні, але дозволені між будь-якими перерахованими вище токенами, за винятком (для сумісності з CSS) безпосередньо перед ідентифікаторами одиниць виміру, між знаком "-" і числами, між # та rrggbb або rgb.

Значення числових атрибутів, які задають розміри і повинні залежати від поточного шрифту, можуть задаватися в пов'язаних зі шрифтом одиницях виміру або в зазначених абсолютних одиницях (описаних нижче). Горизонтальні розміри зазвичай задаються в em, а вертикальні - в ex. Ідентифікатори em або ex йдуть безпосередньо за числом. Наприклад, горизонтальні відступи від оператора "+" зазвичай задаються в em, хоча можуть використовуватися і інші одиниці виміру. Використання пов'язаних зі шрифтом одиниць вимірювання краще, ніж абсолютних, так як вони дозволяють збільшувати або зменшувати розмір відображуваного елемента в залежності від поточного розміру шрифту.

Для більшості числових атрибутів можливі значення обмежені деяким підмножиною, інші значення помилкою не є (якщо не вказано протилежне), а округлюються програмою відображення вгору або вниз до найближчого допустимого. Безліч допустимих значень може залежати від програми відображення і не визначається MathML.

Якщо числове значення відповідно до синтаксисом атрибута може містити знак мінус ( "-"), наприклад number або integer, то його використання в разі, коли негативні значення не істотні, помилкою не є. Замість цього, значення має оброблятися додатком так, як описано в попередньому параграфі. Явна вказівку знака плюс ( "+") як частини числового значення заборонено за винятком тих випадків, коли це спеціально зазначено в синтаксисі (у вигляді "+" або "+"), і його присутність може змінити сенс значення атрибута (як описано в кожному з таких атрибутів).

Символи h-unit, v-unit, css-fontfamily, і css-color-name розглядаються в наступних підрозділах.

1.7.4.2 Атрибути з одиницями вимірювання

Деякі атрибути приймають горизонтальні та вертикальні розміри як числа, за якими слід "ідентифікатор одиниці виміру" (часто званий "одиницею виміру"). Синтаксичні символи h-unit і v-unit відносяться до горизонтальних і вертикальних розмірів відповідно. Можливі одиниці виміру і розміри, до яких вони належать, перераховані в таблиці, розташованій далі; вони збігаються для горизонтальних і вертикальних розмірів, але синтаксичні символи відрізняються (як нагадування використовуваного в них напрямки).

Ідентифікатори одиниць вимірювання і їх смислове значення взяті з. Проте, синтаксис числа з наступним ідентифікатором в MathML не ідентичний синтаксису в CSS, так як числа в CSS не можуть закінчуватися десятковою крапкою і можуть починатися зі знака "+".

Допустимі горизонтальні і вертикальні одиниці виміру в MathML:

Друкарські одиниці виміру em і ex обговорюються далі в пункті "Додаткові зауваження".

% Є "відносної одиницею виміру"; коли значення атрибута задано у вигляді n% (для будь-якого числового значення n), значення визначається як значення за замовчуванням, помножене на n і поділене на 100. Значення за замовчуванням (або спосіб, яким його можна отримати, якщо воно не є константою) описано в таблиці атрибутів для кожного елемента, а його зміст описаний в наступній документації по атрибуту. (Елемент mpadded має свій синтаксис для% і не дозволяє використовувати його як ідентифікатор одиниці виміру)

Для узгодженості з CSS, одиниці вимірювання довжини в MathML можуть бути необов'язковими. Коли це так, символ одиниці виміру в синтаксисі атрибуту полягає в квадратні дужки, наприклад, число. Сенс значення атрибута без одиниць вимірювання описаний в документації для кожного атрибута; зазвичай вказане число множиться на значення за замовчуванням. (В цьому випадку число nnn без одиниці вимірювання еквівалентно числу nnn помноженому на 100 і зі знаком%. Наприклад, (еквівалентно ()

Як виняток (теж для сумісності з CSS), числові значення рівні нулю не вимагають вказівки ідентифікатора одиниці виміру навіть якщо цього вимагає синтаксис. У цьому випадку наявність або відсутність ідентифікатора одиниці виміру не грає ролі, оскільки будь-яке число помножене на 0 є 0.

Для більшості атрибутів в даній специфікації в якості стандартних одиниць вимірювання обрані одиниці, використовувані в друкарському наборі; коли не вказано конкретне значення величини, то стандартні одиниці виміру зазвичай вказані в таблиці або в описі атрибута. Найчастіше використовуються такі одиниці виміру як em або ex. Однак, можуть використовуватися будь-які одиниці, якщо в описі конкретного атрибута не вказано інше.

Відзначимо, що деякі атрибути, наприклад framespacing в , Можуть містити більше одного числового значення, після кожного з яких слід своя одиниця виміру.

Прийнято використовувати одиниці вимірювання ex в основному для завдання вертикальних розмірів, а em - для горизонтальних, хоча це не є обов'язковою вимогою. Ці одиниці виміру залежать від шрифту, який використовується для відображення елемента, в атрибутах якого вони застосовуються, і його розміру. А значить, вони повинні інтерпретуватися післятаких атрибутів, як fontfamily і fontsize, якщо вони зустрічаються в одному елементі, так як зміна поточного шрифту або його розміру може привести до зміни розміру одиниць виміру.

Визначення довжини кожної одиниці виміру (але не синтаксис MathML для значень довжини) таке ж як в CSS, за винятком тих випадків, коли шрифт встановлює спеціальні значення для em і ex, що відрізняються від значень, визначених в CSS (font size і "x" - height відповідно).

1.7.4.3 CSS-сумісні атрибути

Деякі атрибути MathML, перераховані нижче, відповідають властивостям відображення тексту, певним в CSS1. Це зроблено для того, щоб програми відображення могли запросити CSS-оточення про відповідні властивості при визначенні значень атрибутів за замовчуванням.

Можливість визначення стильових властивостей через атрибути MathML і CSS має і недоліки. Як мінімум, це заплутує, а в гіршому випадку, це призводить до випадкового зміни сенсу рівнянь при зміні CSS для всього документа. Тому, ці атрибути засуджуються. У свою чергу, MathML 2.0 вводить чотири нових математичних стильових атрибута. Ці атрибути використовують логічні значення для того, щоб краще передати абстрактні категорії використовуваних в математиці символів, і надають чіткий поділ між MathML і CSS.

Наступна таблиця показує відповідність засуджених стильових атрибутів MathML 1.01 і їх CSS-аналогів:

Порядок обробки атрибутів і стильових таблиць.

CSS або аналогічні стильові таблиці можуть задавати зміни властивостей відображення елементів MathML. Так як властивості відображення можуть змінюватися як атрибутами елемента, так і програмою відображення, необхідно визначити порядок, в якому відбуваються зміни з різних джерел. Прикладом автоматичного узгодження є ситуація з fontsize. У разі "абсолютних" змін, наприклад, установки нового значення властивості, незалежного від старого значення (на відміну від "відносних" змін, таких як інкремент або множення на число), діють лише останні абсолютні зміни, тому джерело змін з найвищим пріоритетом повинен оброблятися останнім.

У разі CSS, порядок обробки змін, що діють на властивості відображення елемента MathML, з різних джерел повинен бути наступним: (змінюється першим; найнижчий пріоритет)

Автоматичні зміни властивостей або атрибутів, заснованих на типі батьківського елемента і положенні елемента в батьківському (як згадується вище про зміни fontsize відповідно до scriptlevel; такі зміни зазвичай застосовуються самим батьківським елементом перед передачею властивостей відображення поточного елементу

З стильових таблиць читача: стилі, які НЕоголошені "важливими"

Явно задані атрибути поточного елемента MathML

З стильових таблиць читача: стилі, які оголошені "важливими" (змінюється останнім; найвищий пріоритет).

Відзначимо, що порядок змін, вироблених стильовими таблицями CSS, визначений в самих CSS (це порядок, який визначається CSS2). Наступне пояснення відноситься тільки до випадку, коли в цьому порядку відбуваються зміни, викликані точним завданням атрибутів MathML.

Пояснення: Атрибути відображення в MathML аналогічні атрибутам відображення в HTML (таким як align), які, згідно з визначеним в CSS порядку, повинні оброблятися з однаковим пріоритетом. Більш того, такий вибір черговості дозволяє читачам вирішити, визначаючи стилі CSS "важливими", які з їх установок повинні перевизначати явні установки MathML. Так як вираження MathML, що складаються з елементів змісту або подання, в першу чергу призначені для передачі сенсу, а "графічне представлення" (якщо таке є) має допомагати цьому (але не є важливим саме по собі), ймовірно, що читачі захочуть, щоб їх стильові уподобання мали пріоритети. Основним виключенням є ситуація, коли атрибути відображення передбачають зміну сенсу виразу.

1.7.4.4 Значення атрибутів за замовчуванням

Значення за замовчуванням для атрибутів MathML як правило даються разом з докладним описом відповідного елемента. Значення за замовчуванням, зазначені в таблицях атрибутів звичайним шрифтом, є точними (якщо вони не є очевидними поясненнями), виділені курсивом фрагменти описують, як значення за замовчуванням можуть бути обчислені.

Значення за замовчуванням, описані як inherited, беруться з середовища відображення, як описано для mstyle, або, в деяких окремо описаних випадках, з значень інших атрибутів навколишніх елементів, або з певної частини цих значень. Завжди використовується значення, яке може бути задано точно, якщо про таке відомо; воно ніколи не залежить від змісту або атрибутів даного елемента, тільки від його оточення. (Його сенс при використанні може, тим не менш, залежатиме від цих атрибутів або змісту)

Значення за замовчуванням, описані як automatic, повинні обчислюватися програмою відображення таким чином, щоб отримати високоякісне зображення. Спосіб, як цього домогтися, зазвичай не вказано в специфікації MathML. Завжди використовується значення, яке може бути задано точно, якщо про таке відомо; але воно зазвичай залежить від вмісту елемента і, можливо, від середовища відображення.

Інші виділені курсивом опису значень за замовчуванням, які зустрічаються в таблицях атрибутів, пояснюються окремо для кожного атрибута.

Одинарні або подвійні лапки, в які повинні бути укладені значення атрибута, розташованого в відкриваючому тезі XML, не показані в синтаксисі значень в таблиці атрибутів, але показані в тексті прикладів.

Відзначимо, що, як правило, не існує значень, які точно можуть бути присвоєні атрибутам MathML і імітують ефект їх відсутності для атрибутів, які є inherited або automatic. Вказівка ​​"inherited" або "automatic" точно не буде працювати, і взагалі заборонено. Більш того, навіть для атрибутів подання (для яких тут наведені конкретні значення за замовчуванням), повинен використовуватися елемент mstyle для зміни містяться в ньому елементів. Тому, MathML DTD визначає більшість значень за замовчуванням для атрибутів подання як #IMPLIED, що не дозволяє обробникам XML додавати до цих атрибутів будь-які спеціальні значення за замовчуванням. MathML schema працює за тими ж правилами.

1.7.4.5 Значення атрибутів в MathML DTD

У XML DTD, дозволені значення атрибутів можуть бути визначені як загальні рядка, або можуть бути різними способами обмежені (перерахуванням можливих значень, або зазначенням певного типу даних). Вибір типу атрибута XML впливає на обсяг, в якому можуть бути проведені перевірки коректності з використанням DTD.

MathML DTD визначає формальні типи атрибутів XML для всіх атрибутів MathML, включаючи в деяких випадках перерахування допустимих значень. Загалом, проте, MathML DTD є відносно нестрогим, часто визначаючи значення атрибутів як рядки; це зроблено для сумісності з парсером SGML, які допускають, щоб кілька атрибутів одного елемента MathML брали однакові значення (такі як true і false), і для того, щоб дозволити розширювати список зумовлених значень.

У той же час, навіть якщо значення атрибута може бути визначено як рядок в DTD, тільки певні значення є допустимими в MathML, як описано вище і в решти цієї специфікації. Наприклад, багато атрибутів вимагають числових значень. У наступному розділі описані допустимі значення атрибутів для кожного елемента. Проте, брак жорсткості вимог в DTD не має на увазі, що ці вимоги не є частиною MathML, або що вони не можуть бути посилені конкретною програмою відображення MathML.

Більш того, MathML DTD надається для зручності; хоча і мається на увазі повна сумісність з текстом специфікації, текст повинен бути визначальним у разі виникнення протиріч.

1.7.5 Атрибути, загальні для всіх елементів MathML

Для того щоб полегшити використання таких стильових механізмів, як XSLT і CSS2, все елементи MathML мають атрибути class, style, і id на додаток до атрибутів, описаним для кожного елемента. Програми відображення MathML, які не підтримують CSS, можуть ігнорувати ці атрибути. MathML визначає значення цих атрибутів як загальні рядка, навіть якщо стильові механізми мають для них більш строгий синтаксис. Тому, будь-яке значення для них є допустимим в MathML.

Для того щоб забезпечити сумісність з механізмами зв'язування, всі елементи MathML мають атрибут xlink: href.

Всі елементи MathML також мають атрибут xref для використання в паралельній розмітці. id також використовується в цьому контексті.

Кожен едемент MathML, як спадок від MathML 1.0, також приймає засуджений атрибут other, який передбачався для передачі нестандартних атрибутів без порушення MathML DTD. Від програм відображення MathML потрібна обробка цього атрибута лише в тому випадку, якщо вони реагіруютя на всі нестандартні атрибути MathML. Тим не Менн, використання атрибута other сильно засуджується, так як в MathML існують інші способи передати специфічну інформацію.

1.7.6 Згортання прогалин у введенні

MathML ігнорує пробільні символи, що зустрічаються поза токенов. Непробельний символи тут заборонені. Пробільні символи, що зустрічаються в змісті токенів, видаляються на кінцях, тобто віддаляються все пробільні символи на початку і кінці змісту. Пробільні символи, розташовані всередині змісту елементів MathML згортаються кононіческі, тобто кожна послідовність з 1 або більше таких символів замінюється на 1 (іноді званий порожнім символом).

У MathML, як і в XML, під пробільними символами маються на увазі простий пробіл, табуляція, новий рядок або новий рядок, тобто символи з кодами Unicode U + 0020, U + 0009, U + 000A, U + 000D відповідно.

наприклад,

(еквівалентно (, і

еквівалентно Теорема 1:.

Автори, які бажають розмістити пробільні символи на початку або наприкінці змісту токена, або послідовність більш ніж з одного пробільного символу так, щоб вони не були проігноровані, повинні використовувати або інші не відображаються пробільні символи. Наприклад, порівняйте

Теорема 1:

Під час відображення перший приклад, перед словом "Теорема" немає пробільних символів, один - між "Теорема" і "1:", і немає після "1:". У другому прикладі одиночний пробіл буде відображений перед словом "Теорема", два - перед "1:", і жодного після "1:".

Відзначимо, що атрибут xml: space в даній ситуації непридатний, тому що процесори XML передають пробільні символи в токенах процесору MathML; видалення відбувається за правилами обробки MathML.

Для пробільних символів, що зустрічаються поза змістом токенов mi, mn, mo, ms, mtext, ci, cn і annotation, повинен використовуватися елемент mspace, на противагу елементу mtext містить тільки пробільні символи

2. Можливості сучасних браузерів при роботі з MathML

В якості тестового прикладу для демонстрації можливостей браузерів була створена проста XHTML-сторінка, що містить приклади обох розміток. Наведемо основні вимоги до неї. По-перше, це повинні бути коректним XHTML-документом, тобто:

бути коректним xml-документом;

кореневих елементом повинен бути елемент html в просторі імен XHTML, наприклад:

"Http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f. Dtd">

MathML-фрагменти повинні належати простору імен MathML, наприклад:

...

Тестовий приклад, який використовується нижче: test. xhtml.

2.1 Mozilla & Firefox

Використовувана версія: Mozilla / 5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.7 5) Gecko / 20041107 Firefox / 1.0.

Mozilla і побудований на тому ж ядрі Firefox мають вбудовані можливості відображення розмітки MathML. Правда, до цих пір вони обмежені лише підтримкою розмітки уявлення. Так в нашому тестовому прикладі фрагмент розмітки уявлення відобразився правильно, чого не можна сказати про розмітку змісту.

Рішенням цієї проблеми може бути використання спеціальних XSLT-стилів "XSLT stylesheets for MathML". Такий підхід можливий, так як підтримка XSLT-трансформацій вбудована в браузер. Для цього треба завантажити набір XSLT-стилів і в першому рядку нашої сторінки вказати посилання на заголовний файл mathml. xsl:

З міркувань безпеки Mozilla дозволяє використовувати XSLT-стилі розташовані в іншому домені перегляду вихідного коду MathML з підсвічуванням виділеного фрагмента. Правда, при використанні розмітки змісту і XSLT-стилів ми побачимо не вихідний код, а результат перетворення.

З інших можливостей слід відзначити інтеграцію з пошуковими системами. При виділеному фрагменті формули контекстне меню Ви можете попросити до пошукової системи.

Але поки це заділ на майбутнє, так як поки подібний пошук результатів не дає.

2.2 MicrosoftInternetExplorer

Використовувана версія: 6.0.2800.1106 (SP1; Q867801; Q823353; Q833989)

Браузер від Microsoft не має вбудованої підтримки MathML. Для коректного відображення математичних формул можна використати безкоштовний плагін MathPlayer.


Крім власне відображення математичної розмітки він дозволяє швидко копіювати MathML-нотацію. Також можна при бажанні збільшити формулу для кращої наочності:

З недоліків слід зазначити відсутність можливості виділити або скопіювати фрагмент математичного виразу. Також немає можливості (як і в Mozilla) коректно скопіювати формулу з навколишнім текстом.

2.3 Opera

Використовувана версія: 7.54u1 (Build 3918; Platform Win32; System Windows 2000; Java not installed).

Цей браузер на даному свого розвитку етапі не має можливостей для коректного відображення розмітки MathML.

Список використаної літератури

1. Дорофєєв А.В., Федотов А.М. Електронні публікації в середовищі Internet і множинність кодувань російської мови // Обчислювальні технології, 1997, т.2, N 3, c.31-44.

2. Олійник О.В., Толкачова Е.М., Федотов А.М.Електронні видання та подання математичних текстів на WWW // Обчислювальні технології, 1997, т.2, N 3, c.60-67.

3. Шокін Ю.І., Федотов А.М., Знам'янський З.В. Електронні публікації і проблеми множинності кодувань російської мови // Інформаційні технології та обчислювальні системи, 1997, N 2, c.90-101.

4. Знаменський З.В. Стандартизація російського TeX: утопія чи неминучість // Обчислювальні технології, 1997, т.2, N 3, c.51 - 59.

5. Галактіон В.В. Розширювана мова розмітки XML (Extensible Mark-up Language): промисловий стандарт, що визначає архітектуру програмних засобів Інтернет наступного покоління. Повідомлення ОІЯД, Р10-2000-44, Дубна, 2000..

6. Митюнин В.А. Огляд засобів публікації і перегляду математичних документів в мережі Інтернет - http: // mathmag. spbu.ru/article/4/

7. Math on the Web: A Status Report - http://www.dessci.com/ webmath / status /

8. Including Math Notation in Web Pages - http://mathforum.org/typeseting/

9. MathML 1.01 - http://www.w3.org/TR/REC-MathML/

10. MathML 2.0 - http://www.w3.org/TR/MathML2/

Сразвитием математичної символіки вироблялися й удосконалювалися способи
її зберігання і передачі. Наприклад, математики стародавнього Вавилона робили свої записи
на глиняних табличках, в період пізнього середньовіччя з'являються перші друковані
книги, і нарешті, сучасна епоха характеризується все зростаючим потоком електронних
публікацій. Саме пошуки адекватних методів оформлення математичних текстів
в Internet і привели до створення мови MathML.

Необхідність в такому засобі викликана тим, що формат HTML, незважаючи на безліч чудових властивостей, має досить-таки обмежені можливості передачі математичних позначень. Найчастіше формули на HTML-сторінках подаються у вигляді графіки (растрової або векторної), але цей спосіб має очевидні недоліки. Наприклад, формулу-малюнок практично неможливо відредагувати, а якість її при друку зазвичай залишає бажати кращого. Уже виходячи з цього зрозуміло, що для Web математичну символіку бажано якось кодувати, причому максимально "прозоро" для клієнтських програм (браузерів). Розвиток цих ідей і призвело до створення цілого сімейства мов математичної розмітки, до яких відноситься і розглянутий сьогодні MathML.

Слід зазначити, що проблема подання математичної символіки в електронному вигляді не вичерпується необхідністю розробки окремої специфікації. Це складна наукова і технічна задача, поки далека від свого остаточного вирішення, що підтверджується наявністю великої кількості пропонованих підходів, найчастіше слабко узгоджених між собою. Одним з таких підходів є спеціалізовані мови розмітки, до яких відноситься і MathML. Безумовно, його розробники усвідомлювали глибину даної проблематики і поставили собі за мету створити специфікацію, що задовольняє наступним обмеженим, але все ж досить важливим вимогам:

  • легкість освоєння і ручного набору основних математичних позначень;
  • максимальна сумісність з іншими математичними форматами, яка повинна забезпечуватися відповідними конвертерами;
  • можливість виведення формул на різні термінальні пристрої;
  • підтримка розширюваності, т. е. введення нових символів, схем і т. д.

До даних цілям, які стосуються до принципів побудови специфікації, були додані і інші, пов'язані з особливостями застосування MathML в додатках. Необхідно забезпечити виведення формул на екрани і принтери з найбільш високою якістю, організувати кошти інформаційного обміну (наприклад, буферні операції копіювання / вставки фрагментів формул). Зрозуміло, що все це буде реалізовуватися розробниками прикладного програмного забезпечення, однак потенційні можливості повинні бути закладені спочатку.

У кількох словах обрисуємо місце MathML в близької до нього групи мов математичної розмітки. На відміну від цілого ряду її представників, з яких перш за все треба назвати TeX, MathML має семантичними засобами побудови математичних виразів. Якщо документ того ж TeX, по суті, являє собою детальний опис деякого тексту з точним зазначенням положення всіх його елементів, то MathML (більш прив'язаний саме до змісту) в цьому відношенні значно гнучкіша, оскільки остаточний вид документа легко може бути змінений відповідно до вимог користувача.

Відомості про MathML

Мова MathML є підмножиною розширеного мови розмітки XML, який часто служить для створення інших мов. Таке використання XML сьогодні цілком природно і добре зарекомендувало себе і в інших випадках, коли застосування HTML для передачі даних нових типів наражалося на обмеження цього формату. До теперішнього часу консорціум W3C опублікував 2-е видання версії 2.0 специфікації мови MathML, що говорить про життєздатність і стійкості проекту.

Загальний принцип використання MathML полягає в тому, що математичні конструкції вбудовуються в звичайний HTML-документ і (якщо броузер або спеціальна програма підтримує цю специфікацію) адекватно відтворюються при завантаженні документа з мережі.

Перше, з чим доводиться мати справу в MathML і що відрізняє цю мову розмітки від аналогів, - це використання двох способів кодування виразів. Один з них заснований на безпосередній передачі синтаксису формули (presentation), інший, навпаки, відображає семантику виразу (content). Простіше кажучи, перший спосіб передає запис формули поза зв'язком з її змістом, другий, навпаки, відображає її математичний зміст.

кодування синтаксису

Мал. 1

Якщо поглянути на форму представлення різних математичних виразів, то можна
помітити, що при досить великій кількості спеціальних символів існує
відносно небагато способів їх впорядкування. Так, вирази можуть будуватися
за допомогою верхніх і нижніх індексів, одна частина формули може стояти над / під інший,
вираження можуть перебувати в елементах матриці і т. д. Цей принцип і покладено
в основу кодування синтаксису, при якому математичні вирази будь-якої складності
формуються за допомогою невеликого набору шаблонів (так званих layout schemata),
що відповідають основним відносин, яке трапляється в математичних формулах.

Для демонстрації цього принципу розглянемо, як в MathML записується звичайна дріб. Вона має всього два елементи - чисельник і знаменник, що і відображено у відповідному шаблоні:

тут тег , Як уже говорилося, служить для створення власне дробу. Атрибут linethickness визначає товщину лінії розподілу, якщо його опустити, буде використано стандартне значення (на малюнку відображені обидва варіанти).

Чисельник представлений тегом , В свою чергу містить дочірні елементи. Цей тег може включати будь-яке число вкладених виразів, які створюють формулу, вирівняну по горизонталі уздовж базової лінії. У нашому випадку це сума двох змінних xі y(Сенс тегів і буде пояснений нижче). Зауважимо, що запис без тега привела б до помилки, оскільки за чисельник було б прийнято перше ж зустрілося в запису вираз ( x). Нарешті, знаменник складається з однієї змінної Z, Переданої тегом .

Основними елементами, що застосовуються в поданні MathML, є символи (tokens) і шаблони (layout schemata, згадувані вище). Перші - це елементи мови, які можуть містити тільки літери (наприклад, для позначення змінних) і власне математичні символи, але не інші елементи.

елемент використовується для введення ідентифікаторів. Він діє за таким правилом: якщо значенням елемента є один символ, він сприймається як змінна і відтворюється курсивом, якщо ж значення є рядком, воно відображається прямим шрифтом (ця властивість застосовується для запису функцій типу sin, lnта ін.). елемент призначений для відображення математичних операторів, а , З яким ми поки не зустрічалися, - для виведення чисел. Кожен з описаних елементів має певний набір атрибутів, що дозволяють змінити відображення символів, задане за замовчуванням.

Тепер познайомимося з деякими шаблонами MathML, які передають основні математичні вирази. З двома з них ми зустрілися вище: це теги для завдання звичайного дробу і вирази, вирівняного уздовж базової лінії. Інші найбільш важливі шаблони передаються наступними тегами:

  • виводить знак радикала з вкладеним виразом. аналогічний тег служить для відображення кореня n-го ступеня;
  • задає вираз, укладену в дужки. За допомогою атрибутів можна вказати роздільник для вкладених виразів і деякі інші характеристики;
  • теги для передачі верхніх / нижніх індексів. Наприклад, вираз з верхнім індексом
    (Ступінь) задається як Вирази ВЕРХНІЙ_ІНДЕКС

Є також шаблони для оформлення практично всіх найбільш важливих математичних виразів і матриць (всього близько 30 видів).

кодування семантики

Перейдемо тепер до способу кодування з використанням семантики виразів. Як зазначено вище, він відображає математичний зміст формули. Ключовим для передачі семантики є елемент . Проілюструємо його використання на простому прикладі. Наступний код створює дріб такого ж виду, що й показання на рис. 1.

Мал. 2

У нашому прикладі першим після йде елемент , що позначає
розподіл (дріб). Скажемо відразу, що при семантичному кодуванні більшість операторів
передаються мітки на кшталт , У яких перед закриває кутовий дужкою
варто коса риска (так звані "порожні" елементи). За нею йдуть
аргументи: ще один елемент , Передає оператор підсумовування x
і y, І - Z. Відповідно, сума (перший аргумент оператора ділення)
відображається як чисельник дробу, а змінна Z- як знаменник. MathML
містить близько 90 операторів, розділених на декілька категорій: арифметичні,
алгебраїчні, логічні і т. д.

В даному прикладі кожен зустрівся оператор застосовувався до пари аргументів. Але, як випливає з представленого вище загального вигляду елемента , Аргументів може бути довільне число (якщо це допускає сам оператор). Наприклад, вираз, показане на рис. 2, записується у вигляді

У двох останніх прикладах залишився без пояснення один момент - теги для передачі
буквених ідентифікаторів і чисел. це і відповідно
- повні аналоги елементів і при кодуванні синтаксису.
Зауважимо, що тег свого аналога при використанні семантики не має,
оскільки вся інформація про оператора передається спеціальним тегом оператора,
що йде після .

Для завдання структури формули може застосовуватися не тільки . Наприклад, для вираження ставлення (рівність, нерівність, включення та ін.) Є спеціальний тег . Наступний фрагмент створює формулу, показану на рис. 3.



x

y
z


тут говорить про те, що в математичний вираз входить одне з відносин, а "порожній" тег вказує на його конкретний тип - "менше". У лівій частині буде знаходитися ідентифікатор x, В правій - сума двох змінних, що визначається за допомогою знайомого нам елемента .

Наведених нами відомостей про MathML, хоча і далеко не повних, цілком достатньо для початку самостійного використання цієї мови. Тим більше що є спеціальні програмні інструменти, покликані позбавити від рутинної роботи.

ПО для роботи з MathML

На відповідній сторінці консорціуму W3C наведені посилання приблизно на
три десятка рекомендованих продуктів для роботи з MathML. Найважливішою представляється
ситуація з броузерами, оскільки вона в найбільшій мірі характеризує ступінь визнання
будь-який Web-технології. На сьогоднішній день тільки два продукти готові коректно
інтерпретувати MathML: Amaya (який можна завантажити з вузла того ж W3C) і
Mozilla. На жаль, інші розробники не поспішають включати в свої продукти підтримку
цієї перспективної технології. Найбільш популярні у нас браузери Microsoft Internet
Explorer і Netscape Navigator в базовій поставці MathML не «розуміють",
однак для них є спеціальні
Plug-in - від IBM, Design
Science, Theorist
Interactive.

Ці ж три компанії поставляють і більш повні версії свого ПО, призначені вже для створення MathML-документів. Зокрема, саме в IBM techexplorer Hypermedia Browser були підготовлені приклади до даної статті. Подібні ж завдання можна вирішувати і за допомогою менш спеціалізованих додатків. Наприклад, системи комп'ютерної математики (Mathematica, Maple, Mathcad) зазвичай забезпечують експорт своїх документів в формат HTML з MathML- "вкрапленнями".

MathML також підтримують і деякі настільні видавничі системи для підготовки
науково-технічної документації. З найбільш відомих продуктів цього класу
можна назвати WebEQ,
представляє собою пакет Java-додатків для забезпечення повного циклу набору
і публікації документів в форматах MathML і WebTeX; Wolfram
Publicon для підготовки математичних текстів презентаційного якості з
можливістю експорту в MathML; текстові процесори від MacKichan
Software, які вміють зберігати документи зі свого основного формату TeX
в MathML.

Існують також спеціальні конвертери для перетворення в / з MathML. Вихідним форматом найчастіше виступає TeX. MathML, в свою чергу, перетворюється в той же TeX або популярні графічні формати.

Однак навіть не маючи в своєму розпорядженні подібних, не завжди доступних, пакетів, після певної підготовки можна створювати MathML-документи вручну. Адже це - звичайні текстові файли, для роботи з якими (як і з HTML) досить найпростішого текстового редактора.

На закінчення ще раз підкреслимо, що MathML з'явився відносно недавно (опис версії 1.0 вийшло в 1998 г.) і знаходиться в стадії становлення. Не можна виключити того, що через кілька років MathML поступиться місцем більш потужної і досконалої технології. Однак уже зараз можна з упевненістю сказати, що глибокі ідеї, закладені в цю мову, послужать міцною основою для створення майбутніх методів представлення складних науково-технічних документів.

Хоч інтернет багато в чому створений зусиллями фізиків і математиків, шлях математичної формули на його сторінках був вельми довгий і тернистий. Тільки в останні роки можна сказати, що математичні формули міцно влаштувалися в Мережі.

Справа в тому, що в мові HTML, за допомогою якого створюються веб-сторінки, немає коштів для зображення формул. Творцям сайтів доводилося якось викручуватися: використовувати таблиці, індекси і інші обхідні шляхи. Список подібних прийомів наведено, і резюмувати його можна так - шлях важкий, а результат мізерний.

Частковим виходом з положення стала вставка формул у вигляді малюнків. Для їх створення існує чимало інструментів. Можна використовувати візуальний редактор (наприклад, Equation Editor з Microsoft Office) або перетворити формулу, набрану в LaTeX, за допомогою онлайнового конвертера. Нарешті, є Google Docs, редактор формул якого реалізує обидві ці можливості. Але підбирати розміри і позиціонувати малюнок доводилося веб-майстру. А значить, про інтерактивність сайту залишалося тільки мріяти. Для цього потрібен був мова, який дозволив би відвідувачеві сайту самому набирати формули.

Таких мов на рубежі 2000-х років існувало два: LaTeX - для візуального представлення формул, і MathML - для опису їх структури. На той час LaTeX вже багато років використовувався для підготовки математичних текстів, тому не дивно, що саме його стали використовувати для мережевої математики. Однією з перших спроб такого роду стала програма LaTeXML. Написана на Perl, вона обробляє документ LaTeX і виводить результат у файл XML. Потім її постпроцесор конвертує отриманий XML в інші текстові формати, наприклад, в HTML і XHTML (а тепер - і в MathML) або в малюнки. Результати роботи LaTeXML можна подивитися.

Порівняння записи формули вMathML іLaTeX

Однак це не вирішувало проблем з інтерактивністю. Для цього програма-обробник мала виконуватися безпосередньо в браузері. Першим на сторону клієнта перейшов jsMath Девіда Сервон (Davide Cervone). Він перетворював формули, Ви телефонували на мові LaTeX, в зображення, виконані засобами HTML і CSS. Так з'явилася можливість створювати по-справжньому інтерактивні математичні веб-сторінки.

Перший крок був зроблений, але проблем залишалося ще багато. Потрібно було домогтися, щоб програма працювала у всіх браузерах (починаючи з ветеранів, на кшталт Internet Explorer 6) і налагодити експорт формул в різні формати, в першу чергу, в MathML. Вирішити ці завдання покликаний був проект MathJax, розпочатий в 2009 році під керівництвом Американського математичного товариства за підтримки та порталу Stack Exchange. Створена в результаті бібліотека MathJax працює у всіх браузерах і вміє зберігати формули в HTML + CSS, SVG і MathML. Користувачеві не потрібно встановлювати плагіни або шрифти - тепер він просто працює.

Введення формули вMathJax ...

і її відображення

Якщо jsMath оживив математику в інтернеті, то MathJax "випустив джина з пляшки", дозволивши за короткий час реалізувати масу чудових ідей. Хочете отримати математичну освіту в Мережі? Загляньте сюди і сюди. Потрібно поспілкуватися з колегами? Будьте ласкаві. Створити публікації з «живими» кодом і формулами? Ось і ось. Цікавить система комп'ютерної алгебри на Android? Чому б і ні . Чат з математичної підтримкою? Легко. Створити блог, щоб розповісти про свою роботу? Будь ласка . А ще MathJax використовує Wikipedia, безкоштовний архів електронних публікацій arXiv і Загальноросійський математичний портал. Так MathJax став де-факто стандартом для відображення формул на веб-сторінках.

Чи означає це, що всі проблеми залишилися в минулому? Ні звичайно. так,

Сподобалася стаття? Поділіться з друзями!