МетаПост
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Парадигма | императив , набор текста |
---|---|
Разработано | Джон Д. Хобби |
Разработчик | Тако Хукуотер, Луиджи Скарсо |
Впервые появился | 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 . Они изображены справа.

transform pagecoords;
pagecoords:=identity scaled 10mm shifted (100mm,150mm);
beginfig (1)
fill ((0,0)--(2,0)--(2,1)--(1,1)--(1,2)--(0,2)--cycle)
transformed pagecoords withcolor green;
draw ((2,0)..(2,1)..(1,1)..(1,2)..(0,2))
transformed pagecoords;
drawarrow ((0,0)--(2,2)) transformed pagecoords;
endfig;
beginfig (2)
draw (for i=0 upto 7: dir (135i)-- endfor cycle)
transformed pagecoords;
endfig;
pagecoords:=identity scaled 15mm shifted (100mm,150mm);
beginfig (3);
% declare paths to be used
path p[],p[]t;
% set up points by defining relationships
z1=(0,0); z2=z1+2up;
z3=z1+whatever*dir (60)=z2+whatever*dir (-50);
z4=z3+(-1.5,-.5);
z5=z1+dir (135);
z0=whatever[z1,z2]=whatever[z3,z4];
% set up paths
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;
% define transformed versions of paths and points
for i=0 upto 4: p[i]t=p[i] transformed pagecoords; endfor
for i=0 upto 5: z[i]t=z[i] transformed pagecoords; endfor
% do some drawing
fill p4t withcolor (1,1,0.2);
draw z1t---z2t withcolor .5white;
draw z3t---z4t withcolor .5white;
pickup pencircle;
draw p0t dashed withdots scaled .3;
draw p1t dashed evenly;
draw p2t withcolor blue;
draw p3t withcolor red;
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);
for i=0 upto 4:
drawdot z[i]t withpen pencircle scaled 2;
endfor
endfig;
bye
Полученные три файла 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