Курсова робота: MathML (Mathematical Markup Language). Математика та інтернет: які програми варто використовувати? Атрибути, спільні для всіх елементів MathML

З розвитком математичної символіки вироблялися та вдосконалювалися способи
її зберігання та передачі. Наприклад, математики стародавнього Вавилона робили свої записи.
на глиняних табличках, у період пізнього середньовіччя з'являються перші друковані
книги, і нарешті, сучасна епоха характеризується все зростаючим потоком електронних
публікацій. Саме пошуки адекватних методів оформлення математичних текстів
в 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 не "розуміють",
однак для них є спеціальні
модулі, що підключаються - від 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 поступиться місцем більш потужної і досконалої технології. Проте вже зараз можна з упевненістю сказати, що глибокі ідеї, закладені в цю мову, слугуватимуть міцною основою для створення майбутніх методів представлення складних науково-технічних документів.

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

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

Мови розмітки на основі XML:

  • Wireless Markup Language (WML): формат даних для (бездротових) пристроїв, що працюють з протоколом WAP ( мобільні телефони);
  • Synchronized Multimedia Integration Language (SMIL):
  • Задає тимчасову розмітку, зовнішній вигляд тощо. для мультимедійних презентацій;
  • Визначає порядок відтворення мультимедійних файлів;
  • Для перегляду потрібен SMIL-сумісний програвач (AMBULANT, MS IE6);
  • Керівництво та приклади: http://www.multimedia4everyone.com/
  • Scalable Vector Graphics (SVG): для опису двовимірної векторної графіки;
  • Mathematical Markup Language (MathML): для опису математичних позначень (формул);
  • Chemical Markup Language (CML): для представлення хімічних формул;
  • інші.

Серед цілей, які ставилися робочою групою W3C з математики під час створення MathML, були:

  • забезпечення кодування матеріалів математичного характеру для комунікацій усіх рівнів освітнього та наукового типу;
  • забезпечення кодування як математичної символіки, і її значень;
  • підтримка створення шаблонів та інших прийомів математичного редагування;
  • забезпечення перетворення в інші математичні формати як суто презентаційного, так і семантичного характеру, а також - з цих форматів у мову математичної розмітки, що створюється. Формати виводу повинні містити засоби для відображенняграфічної інформації
  • синтезу мови, представлення тексту у формі, придатної для введення її в системи комп'ютерної алгебри, сумісність з іншими мовами опису математичних текстів, такими як ТДО, можливість відображення “чистого” тексту (тобто не включає математичних символів і виразів), можливість виведення текстів на друк у різній формі, включаючи виведення за системою Брайля. При цьому перетворення між різними форматами можуть призводити до втрат інформації;
  • можливість передачі з урахуванням особливостей конкретних програм візуалізації;
  • підтримка ефективних процесів перегляду довгих математичних виразів;

забезпечення розширюваності можливостей (спосібами, які наперед не відомі).

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

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

  • на

теперішній момент

  • веб-сторінки, створені з використанням MathML, можна переглядати в наступних браузерах (знак "+" означає, що нові версії теж працюють):

o IE 5.0+ з плагіном Techexplorer

o Mozilla 0.9.9+

  • Linux/Unix:

o Netscape 6.1 з плагіном Techexplorer

o Mozilla 0.9.9+

o Amaya, всі версії (тільки Presentation MathML)

Всі елементи MathML поділяються на три групи: елементи уявлення, елементи змісту та інтерфейсні елементи.

Елементи уявлення описують візуально орієнтовану двомірну структуру математичної нотації. Наприклад, елемент mrow зазвичай застосовується для позначення горизонтального ряду частин виразу, елемент msup , який відзначає верхній індекс. Як правило, кожен елемент уявлення відповідає одному типу нотаційної схеми, такої, як ряд, верхній індекс, нижній індекс і т.д. Будь-яка формула складається з частин, які можуть складатися з найпростіших елементів, таких як цифри, літери або інші символи.

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

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

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

Токени (token elements)представляють індивідуальні символи, назви, числа, позначення тощо. В основному як зміст токени можуть мати лише символи.

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

Основні елементи

Індекси

Деякі математичні операції, які можна використовувати з тегом .

+ +
< >

.

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

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

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

Mode