ВдохновленПочему Metapost дискриминирует?, я хотел бы узнать Metapostдалеколучше, чем сейчас. Все, что я действительно знаю, это то, что Metapost — это язык для описания графики, а Metafont используется специально для описания шрифтов.
Так что же такое Metapost/Metafont?
- имеют ли Metafont/Metapost схожий синтаксис, как следует из названий?
- Включены ли в популярные дистрибутивы TeX инструменты для работы с ними и их компиляции?
- Есть ли что-то вроде «Hello World» для этих систем? (Различные примеры с Metapost можно найти по всему сайту, но, похоже, с Metafont их не так много.)
- может ли pdfTeX использовать шрифты, созданные с помощью Metafont, без особых хлопот?
- (то же самое касается Metapost, но, похоже, многочисленные примеры на этом сайте говорят сами за себя)
решение1
METAFONT был разработан Кнутом как компаньон TeX. Его задача — создавать шрифты из «математически описанных» форм. Выходные данные METAFONT — это набор растровых глифов; задавая подходящие параметры и если описание символов тщательное, выходные данные можно настроить в соответствии с любым конкретным печатающим устройством (например, разрешение очень важно, но это не единственный аспект, о котором нужно заботиться).
Metapost — это программа, напрямую полученная из METAFONT; изначально она была написана Джоном Хобби, который внес ценный вклад в METAFONT. Так что да, их синтаксис похож: язык фактически тот же, но Metapost добавляет несколько примитивов, а также типы данных (цвета RGB и CMYK — это соответственно тройки и четверки, которые не используются в METAFONT). И наоборот, некоторые функции METAFONT бессмысленны в Metapost
Выходные данные Metapost представляют собой простую форму Postscript, и в этом заключается главное различие между двумя программами: выходные данные Metapost представляют собой векторную графику, тогда как METAFONT выводит только растры.
Metapost может взаимодействовать с TeX для получения метрик символов и включения типа в свой вывод. Это невозможно в METAFONT (ну, есть несколько статей TUGboat, описывающих умное использование METAFONT).
Шрифты, созданные METAFONT, можно использовать с
pdftex
: все, что возможно в Knuth TeX, возможно и сpdftex
. Однако шрифты являются растровыми, поэтому для хорошего вывода необходимо генерировать их версии с высоким разрешением;pdftex
для этого есть несколько примитивов:\pdfpkresolution
и\pdfpkmode
, которые используются для генерации растровых изображений по запросу из источников.Вывод Metapost, представляющий собой (инкапсулированный) Postscript, может быть напрямую включен в
latex
; но, поскольку он использует ограниченный набор функций Postscript, его также можно включитьpdflatex
через набор макросов TeX, изначально написанных для ConTeXt.«Hello world» для METAFONT можно найти в книге METAFONTbook, но она не так проста, как аналогичный тестовый документ для (La)TeX.
"Hello world" для Metapost можно написать "легко". Напишите следующий
hello.mp
документ:prologues:=3; % include all fonts outputtemplate:="%j-%c.mps"; % output file will be hello-1.mps beginfig(1); draw(0,0)--(3cm,0)--(3cm,3cm)--(0,3cm)--cycle; label(btex Hello world! etex, (1.5cm,1.5cm)); endfig; end.
Запустить
mpost hello
и затемepstopdf hello-1.mps
получитьhello-1.pdf
для предварительного просмотра
Полная документация по Metapost доступна в дистрибутивах TeX (для TeX Live сделайте texdoc metapost
).
решение2
Интуитивно понятный визуальный обзор -http://www.metaflop.com/modulator- обязательно включите анатомию.
решение3
Чтобы расширить комментарий Герберта и в качестве дополнения к комментарию egreg, вот фрагмент кода, который позволит напрямую обрабатывать MetaPost
код в LuaLaTeX, без необходимости во внешних инструментах. Частично благодаряluamplib
, пакет/интерфейс поддержки для mplib
библиотеки Lua, встроенная версия MetaPost:
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
label ("Insert MP code here", (10,10));
endfig;
\end{mplibcode}
\end{document}