MetaPost

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
MetaPost
Парадигма імперативне програмування і декларативне програмування
Дата появи 1994
Система типізації качина типізація, динамічна типізація[d] і строга типізація
Під впливом від Metafont
Мова реалізації C
Ліцензія GNU Lesser General Public License

MetaPost — мова програмування, схожа на мову програмування системи METAFONT, та єдина відома система, яка реалізує цю мову програмування. Призначенням мови та системи є створення технічних ілюстрацій для включення в документи. Основною відмінністю від METAFONT є те, що MetaPost видає файли у форматі Encapsulated PostScript, а не растрові зображення.

Призначення та застосування[ред. | ред. код]

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

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

Хоча, як правило pdfTeX[en] не здатен обробляти графічні файли у форматі PostScript, MetaPost створює настільки прості файли що pdfTeX може обробляти їх без зайвих проблем (використовуючи код, запозичений у ConTeXt[en]).

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

Приклад роботи[ред. | ред. код]

Після обробки наведеного нижче тексту програми, MetaPost створить EPS файл, назва якого складатиметься із назви вихідного файлу, плюс аргумент макроса beginfig.

Отримане зображення після інтерпретації програми та растеризації.
beginfig(1);
  path p;
  p = (-1 cm,0)..(0,-1 cm)..(1 cm,0); 
  fill p{up}..(0,0){-1,-2}..{up}cycle;
  draw p..(0,1 cm)..cycle;
endfig;
end

Джерела інформації[ред. | ред. код]

Посилання[ред. | ред. код]