МетаПост
В данной статье поднимается несколько вопросов. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Парадигма | императив , набор текста |
---|---|
Разработано | Джон Д. Хобби |
Разработчик | Тако Хукуотер, Луиджи Скарсо |
Впервые появился | 1994 |
Стабильная версия | 1,8
/ 17 июня 2013 г |
Предварительный выпуск | 2.0rc2
/ 19 февраля 2018 г |
Дисциплина набора текста | утка , динамичная , сильная |
ТЫ | Кросс-платформенный |
Лицензия | LGPL |
Веб-сайт | парень |
Под влиянием | |
Метафонт |
MetaPost относится как к языку программирования , так и к интерпретатору языка программирования MetaPost. Оба они созданы на основе Кнута Дональда Metafont языка и интерпретатора . MetaPost создает векторные графические диаграммы на основе геометрического/алгебраического описания. Язык использует декларативный синтаксис Metafont для управления линиями, кривыми, точками и геометрическими преобразованиями. Однако,
- Metafont настроен на создание шрифтов в виде файлов изображений (в формате .gf) со связанными файлами метрик шрифта (в формате .tfm), тогда как MetaPost создает EPS , SVG или PNG. файлы
- Вывод Metafont состоит из шрифтов с фиксированным разрешением в растровом формате, тогда как вывод MetaPost представляет собой векторную графику (линии, кривые Безье ).
- Вывод Metafont монохромный, тогда как MetaPost использует RGB или CMYK . цвета
- Язык MetaPost может включать в диаграммы текстовые метки, либо строки из указанного шрифта, либо что-либо еще, что можно набрать с помощью TeX .
- Начиная с версии 1.8, Metapost поддерживает 64-битную арифметику с плавающей запятой (по умолчанию: 32-битная арифметика с фиксированной запятой).
Многие ограничения MetaPost вытекают из особенностей Metafont. Например, MetaPost поддерживает не все возможности PostScript . В частности, пути могут иметь только один сегмент (так что регионы просто соединяются ), а регионы можно закрашивать только однородными цветами. PostScript уровня 1 поддерживает мозаичные узоры, а PostScript 3 поддерживает затенение по Гуро .
Доступность и использование [ править ]
MetaPost распространяется со многими дистрибутивами фреймворка TeX и Metafont, например, он включен в дистрибутивы MiKTeX и TeX Live .
Инкапсулированный постскриптум, созданный Metapost, может быть включен в документы LaTeX , ConTeXt и TeX с помощью стандартных команд включения графики. Инкапсулированный вывод postscript также можно использовать с движком PDFTeX , таким образом напрямую создавая PDF . Эта возможность реализована в ConTeXt и графическом пакете LaTeX и может использоваться из простого TeX через файл макроса supp-pdf.tex.
ConTeXt и LuaTeX поддерживают включение кода MetaPost во входной файл. Включение кода MetaPost в LaTeX также возможно с помощью LaTeX-пакетов, например gmp
или mpgraphics
.
Примеры [ править ]
Это один файл example.mp который при обработке интерпретатором MetaPost (через команду mpost
в Linux ) создает три файла eps. пример.1 , пример.2 , пример.3 . Они изображены справа.
преобразовать координаты страницы ;
pagecoords := идентичность масштабирована на 10 мм и смещена ( 100 мм , 150 мм );
Beginfig ( 1 )
fill (( 0 , 0 ) — ( 2 , 0 ) — ( 2 , 1 ) — ( 1 , 1 ) — ( 1 , 2 ) — ( 0 , 2 ) — цикл )
преобразованные координаты страницы цвета зеленого ;
нарисовать (( 2 , 0 )..( 2 , 1 )..( 1 , 1 )..( 1 , 2 )..( 0 , 2 ))
преобразованные координаты страницы ;
drawarrow ( 0,0 ( ) - ( 2,2 ) страницы ) преобразует координаты ;
конецфига ;
Beginfig ( 2 )
Draw ( для i = 0 до 7 : dir ( 135i ) ) - endfor цикла ;
преобразует координаты страницы
конецфига ;
pagecoords := идентичность масштабирована на 15 мм и смещена ( 100 мм , 150 мм );
началорис ( 3 );
% объявляем пути, которые будут использоваться
path p [], p [] t ;
% задаем точки, определяя отношения
z1 =( 0 , 0 ); z2 = z1 + 2 вверх ;
z3 = z1 + что угодно * dir ( 60 ) = z2 + что угодно * dir ( - 50 );
z4 = z3 + ( - 1,5 , - . 5 );
z5 = z1 + реж ( 135 );
z0 = что угодно [ z1 , z2 ] = что угодно [ z3 , z4 ];
% настроить пути
p0 = полнокруговой yscaled . 5 повернуто 45 сдвинуто z0 ;
р1 = z2 --- z4 .. z0 .. z3 --- z1 ;
p2 = p1 срез до p0 срез после p0 ;
p3 = p0 срез до p1 срез после p1 ;
p4 = p2 --- p3 --- цикл ;
% определяет преобразованные версии путей и точек
для i = 0 до 4 : p [ i ] t = p [ i ] преобразованные координаты страницы ; 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 цветом красным ;
этикетка . lrt ( btex $ z_0 $ etex , z0t );
этикетка . llft ( btex $ z_1 $ etex , z1t );
этикетка . верх ( btex $ z_2 $ etex , z2t );
этикетка . rt ( btex $ z_3 $ etex , z3t );
этикетка . llft ( btex $ z_4 $ etex , z4t );
для i = 0 до 4 :
нарисуйте точку z [ i ] t с перьевым кружком в масштабе 2 ;
конец для
концафига ;
пока
Полученные три файла eps можно использовать в TeX через LaTeX . \includegraphics
, ConTeXt команда \externalfigure
, Обычный TeX \epsfbox
команду или (в формате Plain pdftex) \convertMPtoPDF
команда от супп-pdf.tex . Для просмотра или печати третьей диаграммы это включение необходимо, так как шрифты TeX ( Computer Modern ) по умолчанию не включены в файлы eps, создаваемые MetaPost.
См. также [ править ]
Ссылки [ править ]
- Хаген, Ганс. «МетаФун» (модули для Метапоста).
- Кнут, Дональд (1986). Книга МЕТАФОНТ . Компьютеры и набор текста . Том. К. Аддисон-Уэсли . ISBN 0-201-13444-6 .
- «Комплексная сеть архивов T E X» ( CTAN ). Репозиторий исходного кода T E X и сотен дополнений и файлов стилей.
- «(La)TeX Navigator предоставляет 305 простых примеров MetaPost» . Архивировано из оригинала 27 июля 2013 г. Проверено 17 ноября 2006 г.
- Хукуотер, Тако (2006). «Развития MetaPost — осень 2006 г.» (PDF) . БУКСИР . 27 (1).
Внешние ссылки [ править ]
- Группа пользователей TeX ( TUG ) http://www.tug.org/ имеет страницу, посвященную MetaPost: http://www.tug.org/metapost.html