В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Парадигма | императив , набор текста |
---|---|
Разработано | Джон Д. Хобби |
Разработчик | Taco Hoekwater, Луиджи Скарсо |
Впервые появился | 1994 ( 1994 ) |
Стабильный релиз | 1.8 / 17 июня 2013 г. ( 2013-06-17 ) |
Предварительный релиз | 2.0rc2 / 19 февраля 2018 г. ( 2018-02-19 ) |
Дисциплина набора текста | утка , динамичная , сильная |
ОС | Кроссплатформенный |
Лицензия | LGPL |
Веб-сайт | tug.org/metapost |
Под влиянием | |
Метафонт |
MetaPost относится как к языку программирования , так и к интерпретатору языка программирования MetaPost. Оба произошли от языка и интерпретатора Metafont Дональда Кнута . MetaPost создает векторные графические диаграммы из геометрического/алгебраического описания. Язык разделяет декларативный синтаксис Metafont для управления линиями, кривыми, точками и геометрическими преобразованиями. Однако,
Многие ограничения MetaPost вытекают из особенностей Metafont. Например, MetaPost не поддерживает все особенности PostScript . В частности, контуры могут иметь только один сегмент (так что области просто соединены ), а области могут быть заполнены только однородными цветами. PostScript уровня 1 поддерживает мозаичные узоры, а PostScript 3 поддерживает затенение по Гуро .
MetaPost распространяется со многими дистрибутивами фреймворка TeX и Metafont, например, он включен в дистрибутивы MiKTeX и TeX Live .
Инкапсулированный постскриптум, созданный Metapost, может быть включен в документы LaTeX , ConTeXt и TeX с помощью стандартных команд включения графики. Инкапсулированный вывод постскриптума также может быть использован с движком PDFTeX , таким образом, напрямую давая PDF . Эта возможность реализована в ConTeXt и графическом пакете LaTeX и может быть использована из простого TeX с помощью макроса supp-pdf.tex.
ConTeXt и LuaTeX поддерживают включение кода MetaPost во входной файл. Включение кода MetaPost в LaTeX также возможно с помощью пакетов LaTeX, например gmp
или mpgraphics
.
Это один файлпример.mpкоторый при обработке интерпретатором MetaPost (через команду mpost
в Linux ) создает три файла epsпример.1,пример.2,пример.3. Они изображены справа.
преобразовать координаты страницы ; координаты страницы : = идентичность масштабировано на 10 мм смещено ( 100 мм , 150 мм ) ; beginfig ( 1 ) fill ( ( 0,0 ) - ( 2,0 ) - ( 2,1 ) - ( 1,1 ) - ( 1,2 ) - ( 0,2 ) -цикл ) преобразованные координаты страницы с цветом зеленый ; draw ( ( 2,0 ) .. ( 2,1 ) .. ( 1,1 ) .. ( 1,2 ) .. ( 0,2 ) ) преобразованные координаты страницы ; drawarrow ( ( 0,0 ) - ( 2,2 ) ) преобразованные координаты страницы ; endfig ; beginfig ( 2 ) нарисовать ( для i = 0 до 7 : dir ( 135 i ) -- endfor cycle ) преобразованные pagecoords ; endfig ; pagecoords := identity масштабировано на 15 мм смещено ( 100 мм , 150 мм ); beginfig ( 3 ); % объявить пути, которые будут использоваться path p [], p [] t ; % установить точки, определив отношения z1 =( 0 , 0 ); z2 = z1 + 2 up ; z3 = z1 + any * dir ( 60 )= z2 + any * dir ( - 50 ); z4 = z3 + ( - 1.5 , - . 5 ); z5 = z1 + dir ( 135 ); z0 = any [ z1 , z2 ]= any [ z3 , z4 ]; % настройка путей p0 = fullcircle yscaled . 5 rotated 45 shifted z0 ; p1 = z2 --- z4 .. z0 .. z3 --- z1 ; p2 = p1 cutbefore p0 cutafter p0 ; p3 = p0 cutbefore p1 cutafter p1 ; p4 = p2 --- p3 --- cycle ; % определение преобразованных версий путей и точек для i = 0 до 4 : p [ i ] t = p [ i ] transformed pagecoords ; endfor для i = 0 до 5 : z [ i ] t = z [ i ] преобразованные координаты страницы ; endfor % сделать что-нибудь нарисовать заполнить p4t цветом ( 1 , 1 , 0.2 ); нарисовать z1t --- z2t цветом . 5 белым ; нарисовать z3t --- z4t цветом . 5 белым ; взять ручкукруг ; нарисовать p0t штриховой с точками масштабированными . 3 ; нарисовать p1t равномерно штриховой ; нарисовать p2t синим цветом ; нарисовать p3t красным цветом ; label.lrt ( btex $ z_0 $ etex , z0t ) ; label.llft ( btex $ z_1 $ etex , z1t ) ; label.top ( btex $ z_2 $ etex , z2t ) ; label.rt ( btex $ z_3 $ etex , z3t ) ; label.llft ( btex $ z_4 $ etex , z4t ) ; для i = 0 до 4 : drawdot z [ i ] t withpen pencircle scaled 2 ; endfor endfig ; пока
Полученные три файла eps можно использовать в TeX с помощью команды LaTeX\includegraphics
, ConTeXt , команды \externalfigure
Plain TeX \epsfbox
или (в Plain pdftex) \convertMPtoPDF
команды изsupp-pdf.texДля просмотра или печати третьей диаграммы это включение необходимо, поскольку шрифты TeX ( Computer Modern ) не включены в файлы eps, создаваемые MetaPost по умолчанию.