<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF76:MetaPost - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF76:MetaPost&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 20:57:49 GMT</lastBuildDate>
		<item>
			<title>Lockal: {{Цикл/MetaPost}}</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF76:MetaPost&amp;diff=4639&amp;oldid=prev</link>
			<description>&lt;p&gt;{{Цикл/MetaPost}}&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 19:14, 16 мая 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Цикл/MetaPost}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Введение в MetaPost ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Введение в MetaPost ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''Каждая иллюстрация – это целая история. '''Евгений Балдин''' начинает урок рисования для закоренелых ТеХнарей.''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''Каждая иллюстрация – это целая история. '''Евгений Балдин''' начинает урок рисования для закоренелых ТеХнарей.''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 16 May 2008 19:14:36 GMT</pubDate>			<dc:creator>Lockal</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF76:MetaPost</comments>		</item>
		<item>
			<title>Yaleks: /* Чуть-чуть о META */</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF76:MetaPost&amp;diff=4632&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Чуть-чуть о META&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 15:15, 16 мая 2008&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 277:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 277:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Набор стандартных вычислительных операций расширен с учётом&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Набор стандартных вычислительных операций расширен с учётом&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;специализации языка. В частности, например, поддерживаются операции пифагорова сложения a++b=(&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a2&lt;/del&gt;+&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;b2&lt;/del&gt;)1/2, пифагорова вычитания&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;специализации языка. В частности, например, поддерживаются операции пифагорова сложения a++b=(&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;/ins&gt;+&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;/ins&gt;)1/2, пифагорова вычитания&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;a+-+b=(&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a2&lt;/del&gt;-&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;b2&lt;/del&gt;)1/2, целочисленное деление div и возведение в степень&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;a+-+b=(&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;/ins&gt;-&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;b&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;/ins&gt;)1/2, целочисленное деление div и возведение в степень&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;x**y=xy.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;x**y=xy.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 288:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 288:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Программу MetaPost можно использовать в режиме калькулятора&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Программу MetaPost можно использовать в режиме калькулятора&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;для вычислений на языке META. Это позволяет проверить правильность ваших предположений относительно языка. Пример сеанса представлен ниже:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;для вычислений на языке META. Это позволяет проверить правильность ваших предположений относительно языка. Пример сеанса представлен ниже:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;latex&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;text&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;baldin@evgueni:~$ mpost&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;baldin@evgueni:~$ mpost&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This is MetaPost, Version 0.901 (Web2C 7.5.5)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This is MetaPost, Version 0.901 (Web2C 7.5.5)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 16 May 2008 15:15:19 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF76:MetaPost</comments>		</item>
		<item>
			<title>Yaleks: Новая: == Введение в MetaPost == ''Каждая иллюстрация – это целая история. '''Евгений Балдин''' начинает урок рисован...</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF76:MetaPost&amp;diff=4624&amp;oldid=prev</link>
			<description>&lt;p&gt;Новая: == Введение в MetaPost == ''Каждая иллюстрация – это целая история. '''Евгений Балдин''' начинает урок рисован...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Введение в MetaPost ==&lt;br /&gt;
''Каждая иллюстрация – это целая история. '''Евгений Балдин''' начинает урок рисования для закоренелых ТеХнарей.''&lt;br /&gt;
&lt;br /&gt;
Люди делятся на тех, кто умеет рисовать, и тех, кто не умеет.&lt;br /&gt;
Причём вторых большинство. В этом нет ничего плохого или&lt;br /&gt;
хорошего – такова жизнь. Хороший иллюстратор – редкость.&lt;br /&gt;
&lt;br /&gt;
Компьютерные технологии дают возможность создавать высококачественные документы особенно не концентрируясь на проблеме оформления. Всю черновую работу делает за вас компьютер. Например,&lt;br /&gt;
система LaTeX фактически заменяет собой электронную типографию,&lt;br /&gt;
но, к сожалению, создание иллюстраций выносится за рамки этого&lt;br /&gt;
процесса. Умение иллюстрировать свой текст является необходимым&lt;br /&gt;
навыком для тех, кто хочет делать свои книги самостоятельно от начала и до конца. Часто бывает, что основной смысл несут в себе именно&lt;br /&gt;
рисунки.&lt;br /&gt;
&lt;br /&gt;
Создание иллюстраций – это длительный и тяжёлый процесс, но&lt;br /&gt;
если целью стоит совершенство вашей книги, то потраченное время&lt;br /&gt;
того стоит. Обучение в изостудии в младших классах подняло мой уровень рисования с «никуда не годного» до «терпимого, если отойти на&lt;br /&gt;
сто метров». Как художник я совершенно безнадёжен, но иллюстрации&lt;br /&gt;
мне приходится делать довольно часто. В основном это несложные&lt;br /&gt;
картинки к задачам по физике. Когда мне говорят, что мои рисунки к&lt;br /&gt;
задачам вызывают чувство зависти – с одной стороны, мне приятно,&lt;br /&gt;
но с другой – очень тяжело объяснить, как же я этого достиг. Цель этого текста – популяризовать создание иллюстраций с помощью&lt;br /&gt;
MetaPost.&lt;br /&gt;
&lt;br /&gt;
Желание контролировать всё в процессе создания книги привело&lt;br /&gt;
Дональда Э. Кнута (Donald E. Knuth) к созданию программ TeX и&lt;br /&gt;
METAFONT.&lt;br /&gt;
&lt;br /&gt;
Изначально METAFONT предназначался для создания шрифтов и&lt;br /&gt;
результатом его работы был растр с изображением шрифта. Позже&lt;br /&gt;
аспирант Д. Э. Кнута Джон Хобби (John Hobby) модифицировал&lt;br /&gt;
METAFONT таким образом, что результатом работы программы стала&lt;br /&gt;
картинка в формате EPS (Encusulated PostScript).&lt;br /&gt;
MetaPost – это программа для тех, кто может объяснить компьютеру, что он хочет. MetaPost чрезвычайно полезен в тех случаях, когда&lt;br /&gt;
картинку проще описать логически, нежели образно. Даже если Вы не&lt;br /&gt;
умеете рисовать, результат может получиться вполне приличный, потому что «виртуальный карандаш» под управлением компьютера дрожать не будет.&lt;br /&gt;
&lt;br /&gt;
MetaPost проектировался как простая программа, которую можно&lt;br /&gt;
относительно быстро настроить под свои нужды. Он вполне обозрим и&lt;br /&gt;
компактен. Многие «правильные» программы, работающие с векторной графикой, такие как gnuplot и xfig, умеют экспортировать в формат MetaPost.&lt;br /&gt;
&lt;br /&gt;
=== Здравствуй, мир ===&lt;br /&gt;
Когда изучается новая программная технология первое, что надо сделать – это сказать: «Здравствуй мир!». Что мы и сделаем, правда,&lt;br /&gt;
пока на английском. Для этого следует создать файл helloworld.mp&lt;br /&gt;
со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
%Для просмотра&lt;br /&gt;
prologues := 1;&lt;br /&gt;
%Простой Hello World&lt;br /&gt;
beginfig(1);&lt;br /&gt;
label(“Hello World! “,(0,0));&lt;br /&gt;
endfig;&lt;br /&gt;
% «конец обработки» – необходимо вставить в конце файла&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Далее скомпилируем этот код:&lt;br /&gt;
 &amp;gt; mpost helloworld.mp&lt;br /&gt;
В результате полученный файл helloworld.1 можно посмотреть с&lt;br /&gt;
помощью любой программой понимающей PostScript, например, с&lt;br /&gt;
помощью gv:&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Img 76 116 1.png|center|frame|Первый Hello World на MetaPost]]&lt;br /&gt;
&lt;br /&gt;
Разнообразим пример. Создадим файл linuxformat.mp со следующим содержимым:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
% А теперь мы его завращали и раскрасили&lt;br /&gt;
beginfig(1);&lt;br /&gt;
for alpha:=90 step -3 until 0:&lt;br /&gt;
label(btex Linux Format etex&lt;br /&gt;
scaled (5*(1-alpha/100)) rotated alpha,(0,0))&lt;br /&gt;
withcolor (max(1-alpha/45,0)*red+&lt;br /&gt;
min(alpha/45,2-alpha/45)*green+&lt;br /&gt;
max(alpha/45-1,0)*blue);&lt;br /&gt;
endfor;&lt;br /&gt;
endfig;&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Скомпилируем код и результат преобразуем в pdf:&lt;br /&gt;
 &amp;gt; mpost linuxformat.mp&lt;br /&gt;
 &amp;gt; pstopdf linuxformat.1&lt;br /&gt;
Полученный в результате этой операции файл linuxformat-1.pdf&lt;br /&gt;
можно посмотреть, например, с помощью программы acroread или&lt;br /&gt;
xpdf.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Img 76 117 1.jpg|center|frame|«Продвинутый» Hello World на MetaPost]]&lt;br /&gt;
&lt;br /&gt;
Всё, что находится между btex и etex обрабатываются внешней&lt;br /&gt;
программой. По умолчанию это TeX. Чтобы воспользоваться возможностями LaTeX, надо в самом начале linuxformat.mp строчки вида:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
verbatimtex \documentclass{article}&lt;br /&gt;
\begin{document}&lt;br /&gt;
etex;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Эти строчки указывают mpost, что при обработке любых текстовых&lt;br /&gt;
вставок им должны предшествовать команды&lt;br /&gt;
\documentclass{article} и \begin{document}.&lt;br /&gt;
&lt;br /&gt;
Добавим в linuxformat.mp ещё один рисунок. Для этого скопируем уже имеющийся код первого рисунка, вставим его до заключительной команды «end.» и немного подправим первые три строчки:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
%Математика вместо Hello World&lt;br /&gt;
beginfig(2);&lt;br /&gt;
for alpha:=90 step -9 until 0:&lt;br /&gt;
label(btex \(f(x)=\frac{1}{\sqrt{2\pi}\,\sigma}&lt;br /&gt;
\int\limits_{-\infty}^{\infty}&lt;br /&gt;
e^{-\frac{x^2}{2\sigma^2}}dx\) etex&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Создание новых картинок на базе уже имеющегося кода в MetaPost –&lt;br /&gt;
обычное дело. Со временем накапливается своя библиотечка примитивов, что сильно облегчает создание новых иллюстраций. Кажущаяся&lt;br /&gt;
сложность выражений компенсируется исключительной гибкостью&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Img 76 117 2.jpg|center|frame|Математическая вставка]]&lt;br /&gt;
&lt;br /&gt;
Вместо того чтобы запускать mpost с опцией -tex=latex, можно&lt;br /&gt;
установить переменную окружения TEX равную latex. В bash это можно&lt;br /&gt;
сделать так:&lt;br /&gt;
 &amp;gt; export TEX=latex&lt;br /&gt;
Как видно из предыдущего примера, MetaPost и LaTeX умеют&lt;br /&gt;
неплохо работать вместе. Усовершенствуем немного linuxformat.mp.&lt;br /&gt;
Заменим первые три строчки в файле на следующий код:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
verbatimtex \input{preheader}&lt;br /&gt;
\begin{document}&lt;br /&gt;
etex;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и создадим файл preheader.tex с примерно следующим&lt;br /&gt;
содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
\documentclass[12pt]{article}&lt;br /&gt;
% стандартная простейшая русификация&lt;br /&gt;
\usepackage[warn]{mathtext}&lt;br /&gt;
\usepackage[T2A]{fontenc}&lt;br /&gt;
\usepackage[koi8-r]{inputenc}&lt;br /&gt;
\usepackage[english,russian]{babel}&lt;br /&gt;
\usepackage{indentfirst}%first paragraph indent&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Это стандартный заголовок для файлов LaTeX. Если Вы набираете&lt;br /&gt;
свои тексты в LaTeX, то можете поместить в preheader.tex всю свою&lt;br /&gt;
преамбулу и включить её с помощью команды \input. Это позволит&lt;br /&gt;
создавать текстовые вставки в картинках MetaPost тем же шрифтом,&lt;br /&gt;
что и в обычном тексте, а также позволит пользоваться любыми предопределёнными вами командами.&lt;br /&gt;
&lt;br /&gt;
Следует обратить внимание, что чем больше будет разрастаться&lt;br /&gt;
заголовок, тем дольше будет обрабатываться META-код. Для увеличения скорости лучше всего воспользоваться классом minimal вместо&lt;br /&gt;
article и убрать все ненужные для рисования картинок пакеты.&lt;br /&gt;
&lt;br /&gt;
Добавим третью картинку в linuxformat.mp, чуть изменив первоначальный код:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
verbatimtex \input{preheader}&lt;br /&gt;
\begin{document}&lt;br /&gt;
etex;&lt;br /&gt;
...&lt;br /&gt;
%изменим направление вращения&lt;br /&gt;
beginfig(3) ;&lt;br /&gt;
for alpha:=-90 step 3 until 0:&lt;br /&gt;
label(btex LinuxFormat в России etex&lt;br /&gt;
scaled (5*(1+alpha/100)) rotated alpha,(0,0))&lt;br /&gt;
withcolor (max(1+alpha/45,0)*red+&lt;br /&gt;
min(-alpha/45,2+alpha/45)*green+&lt;br /&gt;
max(-alpha/45-1,0)*blue);&lt;br /&gt;
endfor;&lt;br /&gt;
endfig ;&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Теперь мы можем говорить по русски.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:Img 76 117 3.jpg|center|frame|Говорим по русски]]&lt;br /&gt;
&lt;br /&gt;
=== MetaPost-конвейер ===&lt;br /&gt;
[[Изображение:Img 76 118 1.png|center|]]&lt;br /&gt;
Чуть подробнее остановимся на том, что же происходит. На вход программы MetaPost подаётся «META-картинка». «META-картинка» — это текстовый mp-файл с инструкциями на языке META. В одном mp-файле можно хранить несколько описаний картинок. При компиляции с помощью mpost создаются файлы с тем же именем, что и у исходного файла, но с расширениями в виде чисел, которые указываются в декларации beginfig. Результирующие файлы сразу можно вставлять в LaTeX-тексты с помощью обычного \includegraphics. Для этого достаточно в заголовок tex-файла добавить команду&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;\DeclareGraphicsRule{*}{eps}{*}{}&amp;lt;/source&amp;gt;&lt;br /&gt;
От «правильных» eps-файлов они отличаются только тем, что в&lt;br /&gt;
них не «внедрены» шрифты, поэтому просмотреть их без дополнительной обработки не удастся.&lt;br /&gt;
&lt;br /&gt;
Шрифты можно внедрить посредством программ latex и dvips с&lt;br /&gt;
результатом в виде eps-файла или скрипта mptopdf с результатом в&lt;br /&gt;
виде pdf-файла. Эти картинки уже можно просматривать любой программой, которая поддерживает данные векторные форматы.&lt;br /&gt;
&lt;br /&gt;
=== Среда разработки ===&lt;br /&gt;
Удобная среда разработки – понятие весьма относительное. Удобство&lt;br /&gt;
зависит исключительно от ваших предпочтений. Здесь будет представлена среда удобная для меня. Подробности настройки и установки упоминаемых здесь пакетов выходят за рамки этого текста.&lt;br /&gt;
&lt;br /&gt;
В качестве базовой операционной системы я использую Linux. Это&lt;br /&gt;
предоставляет в мое распоряжение стандартные средства обработки&lt;br /&gt;
текстовых данных, которые поставляются с этой системой. Например,&lt;br /&gt;
ниже будет упомянута утилита make, которая позволяет автоматизировать ряд стандартных действий.&lt;br /&gt;
&lt;br /&gt;
В качестве базового дистрибутива LaTeX я использую дистрибутив&lt;br /&gt;
TeX Live. На сегодня этот дистрибутив является наиболее полным из&lt;br /&gt;
дистрибутивов LaTeX. Установочный образ для CD можно взять на&lt;br /&gt;
любом из CTAN-архивов (Comprehensive TeX Archive Network).&lt;br /&gt;
В качестве базового редактора я использую emacs. Если вы работаете с текстами в LaTeX-формате, то при настройке этого редактора&lt;br /&gt;
следует включить пакеты auctex&amp;lt;ref&amp;gt;Продвинутая система для работы с проектами LaTeX.&amp;lt;/ref&amp;gt; и reftex&amp;lt;ref&amp;gt;Автоматизация работы со ссылками.&amp;lt;/ref&amp;gt; . Emacs имеет простейшую встроенную поддержку для редактирования файлов в формате&lt;br /&gt;
MetaPost.&lt;br /&gt;
&lt;br /&gt;
Для автоматизации создания eps-картинок я использую Makefile&lt;br /&gt;
примерно следующего вида:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#временный файл&lt;br /&gt;
tmp_file := tmp_file&lt;br /&gt;
#программы&lt;br /&gt;
LATEX := latex&lt;br /&gt;
MPOST := mpost -tex=latex&lt;br /&gt;
DVIPS := dvips&lt;br /&gt;
all:&lt;br /&gt;
@echo “run: make mpfile.n.eps”&lt;br /&gt;
%.eps: % preheader.tex&lt;br /&gt;
@echo “\input{preheader}”&amp;gt;$(tmp_file).tex&lt;br /&gt;
@echo “\DeclareGraphicsRule{*}{eps}{*}{}”&amp;gt;&amp;gt;\&lt;br /&gt;
$(tmp_file).tex&lt;br /&gt;
@echo “\nofiles”&amp;gt;&amp;gt;$(tmp_file).tex&lt;br /&gt;
@echo “\begin{document}”&amp;gt;&amp;gt; $(tmp_file).tex&lt;br /&gt;
@echo “\thispagestyle{empty}”&amp;gt;&amp;gt; $(tmp_file).tex&lt;br /&gt;
@echo “\includegraphics{$(basename $@)}”&amp;gt;&amp;gt;\&lt;br /&gt;
$(tmp_file).tex&lt;br /&gt;
@echo “\end{document}”&amp;gt;&amp;gt; $(tmp_file).tex&lt;br /&gt;
@$(LATEX) $(tmp_file)&lt;br /&gt;
@$(DVIPS) -E -o $@ $(tmp_file)&lt;br /&gt;
@rm $(tmp_file).*&lt;br /&gt;
clean:&lt;br /&gt;
@rm -f mpx* *~ *.log *.mpx&lt;br /&gt;
@rm -f $(tmp_file).*&lt;br /&gt;
#Зависимости для mpost-картинок.&lt;br /&gt;
#По одной для каждого числа из beginfig&lt;br /&gt;
%.1: %.mp preheader.tex preheader.mp&lt;br /&gt;
$(MPOST) $&amp;lt;&lt;br /&gt;
...&lt;br /&gt;
%.64: %.mp preheader.tex preheader.mp&lt;br /&gt;
$(MPOST) $&amp;lt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Чтобы на выходе получить готовую eps-картинку с уже «внедрёнными» шрифтами, которую можно вставить уже куда угодно достаточно выполнить следующую команду:&lt;br /&gt;
 &amp;gt; make &amp;lt;имя mp-файлы&amp;gt;.&amp;lt;номер картинки&amp;gt;.eps&lt;br /&gt;
Обычно, mp-файлам даются короткие имена.&lt;br /&gt;
Если в качестве результирующего формата картинок вас интересует PDF, то в Makefile можно добавить что-то вроде:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
MPTOPDF := mptopdf&lt;br /&gt;
MV := mv&lt;br /&gt;
%.pdf: % preheader.tex&lt;br /&gt;
@$(MPTOPDF) $&amp;lt;&lt;br /&gt;
@$(MV) `echo $&amp;lt; | sed -e \&lt;br /&gt;
“s/\.\([0-9]\+\)$$/-\1.pdf/”` $&amp;lt;.pdf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Чуть-чуть о META ===&lt;br /&gt;
В качестве базового языка, инструкции которого подаются на вход программы MetaPost используется язык META.&lt;br /&gt;
&lt;br /&gt;
Язык META поддерживает следующие типы данных:&lt;br /&gt;
* boolean объект булева типа, то есть либо true, либо false,&lt;br /&gt;
* numeric обычное число (по умолчанию, если переменная не описана, то она имеет тип numeric),&lt;br /&gt;
* pair точка – пара чисел (x, y) в случае декартовых координат или (R*dir ) в случае полярных координат,&lt;br /&gt;
* pen перо – то, чем компьютер рисует (в подавляющем большинстве случаев используется круглое перо pencircle),&lt;br /&gt;
* color цвет – тройка чисел (r, g, b),&lt;br /&gt;
* path путь – совокупность точек с описанием соединения между ними,&lt;br /&gt;
* picture картинка – совокупность путей и точек,&lt;br /&gt;
* string строка – ASCII-строка,&lt;br /&gt;
* transform преобразования – линейные преобразования, которые можно применять к объектам типа pair, pen, path и picture.&lt;br /&gt;
Имена переменных в META могут состоять из нескольких лексем.&lt;br /&gt;
Лексемы могут быть либо буквенными, либо числовыми. Например,&lt;br /&gt;
переменная x1l состоит из трёх лексем. Её можно переписать более&lt;br /&gt;
понятным способом x[1].l, то есть числовая лексема по сути указывает&lt;br /&gt;
на номер элемента в массиве, а следующая за ней буква уточняет элемент структуры. Возможность упускать «[].» в написании имён переменных упрощает в некоторых случаях восприятие кода (x1l – это x-координата границы линии слева по направлению движения для первой точки пути z[]) и сокращает объём программы. В замен, если Вам&lt;br /&gt;
нужны просто переменные без подобных особенностей, то Вам придётся ограничиться только буквенными комбинациями.&lt;br /&gt;
&lt;br /&gt;
Все переменные необходимо объявлять перед использованием.&lt;br /&gt;
Исключением являются переменные типа numeric. Массивы объявляются и используются следующим образом:&lt;br /&gt;
 pair w[];&lt;br /&gt;
 w1:=(10,5);&lt;br /&gt;
 w[2]=w[1];&lt;br /&gt;
Взаимодействие переменных, чисел и операторов вполне естественно, но достаточно нетривиально. Описание этого достойно отдельного раздела. В любом случае следует действовать по правилу: если&lt;br /&gt;
сомневаетесь, то расставляйте скобки в нужных местах.&lt;br /&gt;
&lt;br /&gt;
В META можно опускать некоторые из операторов для сокращения&lt;br /&gt;
записей, например, 2*x соответствует записи 2x. Но будьте осторожны: 1/2x это 0.5x, что более естественно с точки зрения математики,&lt;br /&gt;
но не программирования. В META сначала обрабатываются числовые&lt;br /&gt;
лексемы.&lt;br /&gt;
&lt;br /&gt;
Набор стандартных вычислительных операций расширен с учётом&lt;br /&gt;
специализации языка. В частности, например, поддерживаются операции пифагорова сложения a++b=(a2+b2)1/2, пифагорова вычитания&lt;br /&gt;
a+-+b=(a2-b2)1/2, целочисленное деление div и возведение в степень&lt;br /&gt;
x**y=xy.&lt;br /&gt;
&lt;br /&gt;
В языке присутствуют операторы цикла, условных переходов и&lt;br /&gt;
тому подобное. Отличительной особенностью META является возможность решать линейные уравнения. Например, выражение вида&lt;br /&gt;
C=1/2[A,B] означает, что точка C находится ровно посередине между&lt;br /&gt;
точками A и B.&lt;br /&gt;
&lt;br /&gt;
Программу MetaPost можно использовать в режиме калькулятора&lt;br /&gt;
для вычислений на языке META. Это позволяет проверить правильность ваших предположений относительно языка. Пример сеанса представлен ниже:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
baldin@evgueni:~$ mpost&lt;br /&gt;
This is MetaPost, Version 0.901 (Web2C 7.5.5)&lt;br /&gt;
**\relax&lt;br /&gt;
*a:=10;&lt;br /&gt;
*b:=8;&lt;br /&gt;
*c:=a+-+b;&lt;br /&gt;
*show c;&lt;br /&gt;
&amp;gt;&amp;gt; 6&lt;br /&gt;
*show (3-sqrt 5)/2;&lt;br /&gt;
&amp;gt;&amp;gt; 0.38197&lt;br /&gt;
*show angle(1,sqrt 3);&lt;br /&gt;
&amp;gt;&amp;gt; 60.00008&lt;br /&gt;
*show 2**10;&lt;br /&gt;
&amp;gt;&amp;gt; 1024.00003&lt;br /&gt;
*show infinity;&lt;br /&gt;
&amp;gt;&amp;gt; 4095.99998&lt;br /&gt;
*show epsilon;&lt;br /&gt;
&amp;gt;&amp;gt; 0.00002&lt;br /&gt;
*show infinity-infinity;&lt;br /&gt;
&amp;gt;&amp;gt; 0&lt;br /&gt;
*end&lt;br /&gt;
Transcript written on mpout.log.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
После вывода приглашения ** следует набрать команду \relax.&lt;br /&gt;
Далее можно вводить команды MetaPost. Делать это надо аккуратно,&lt;br /&gt;
так как этот режим не поддерживает «истории команд» – в начале не&lt;br /&gt;
предполагалось, что MetaPost можно будет использовать и так. С помощью команды show можно вывести результат на экран. Закончить&lt;br /&gt;
сеанс можно с помощью команды end.&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что на просьбу вывести бесконечность (infinity)&lt;br /&gt;
MetaPost выдал 4095.99998 — это максимальное значение, которое&lt;br /&gt;
может принимать переменная типа numeric. Причём в процессе&lt;br /&gt;
вычисления результат может превышать «бесконечность», но ответ&lt;br /&gt;
должен быть меньше или равен её, иначе будет выдана ошибка.&lt;br /&gt;
Минимальный шаг изменения типа numeric равен epsilon, или точнее&lt;br /&gt;
1/256/256. При создании рисунка эти ограничения не существенны, так&lt;br /&gt;
как диапазон изменения чисел вполне велик, чтобы вместить все элементы. Но в любом случае это тоже необходимо учитывать.&lt;br /&gt;
&lt;br /&gt;
Если Вы хотите вычислить однострочное выражение, то на первоначальное приглашение ** можно ввести expr. В этом случае mpost&lt;br /&gt;
считает файл expr.mf и на любое ваше действие будет выдаваться&lt;br /&gt;
ответ:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
baldin@evgueni:~$ mpost&lt;br /&gt;
This is MetaPost, Version 0.901 (Web2C 7.5.5)&lt;br /&gt;
**expr&lt;br /&gt;
(/usr/local/texlive/2005/texmf-dist/metafont/base/expr.mf&lt;br /&gt;
gimme an expr: 2(a+3b)-2b&lt;br /&gt;
&amp;gt;&amp;gt; 4b+2a&lt;br /&gt;
gimme an expr: 1/3[a,b]&lt;br /&gt;
&amp;gt;&amp;gt; 0.33333b+0.66667a&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Литература ===&lt;br /&gt;
Язык META, который используется в MetaPost за некоторыми исключениями полностью соответствует диалекту META, который используется&lt;br /&gt;
в программе создания шрифтов METAFONT.&lt;br /&gt;
&lt;br /&gt;
Основной книгой по языку META является «Всё про METAFONT»&lt;br /&gt;
Дональда Э. Кнута. В 2003 году издательством Вильямс был выпущен&lt;br /&gt;
русский перевод этой классической книги (ISBN 5-8459-0442-0).&lt;br /&gt;
Исходники англоязычного оригинала «The METAFONT book» можно&lt;br /&gt;
найти на любом CTAN архиве. Эта книга, как и другие произведения Д.&lt;br /&gt;
Э. Кнута имеет несколько уровней сложностей. Даже с нулевым&lt;br /&gt;
начальным уровнем знания предмета вы можете прочитать книгу полностью — её строение это позволяет, но для дальнейшего продвижения эту книгу придётся перечитывать не один раз. Каждое прочтение&lt;br /&gt;
приносит новое понимание. Если Вы имеете хоть какое-то отношение к&lt;br /&gt;
программированию, то книги Д.Э. Кнута надо читать. Именно благодаря подобным людям информатика может претендовать на&lt;br /&gt;
фундаментальность.&lt;br /&gt;
&lt;br /&gt;
На русском языке информацию о MetaPost можно найти в&lt;br /&gt;
«Путеводителе по пакету LaTeX и его графическим расширениям»&lt;br /&gt;
М.Гуссенса, С.Ратца и Ф.Миттельбаха от издательства Мир (ISBN 5-03-003388-2).&lt;br /&gt;
&lt;br /&gt;
Все остальные источники в основном англоязычные. Прежде всего&lt;br /&gt;
это «A User’s Manual for MetaPost» Джона Хобби (Jhon D. Hobby) –&lt;br /&gt;
файл mpman.pdf. Этот текст можно найти в документации к дистрибутиву MetaPost. Этому тексту предшествовало несколько «основополагающих» статей, которые при желании можно легко найти в интернете.&lt;br /&gt;
Очень качественным руководством пользователя отметился Андрэ Хек&lt;br /&gt;
(Andr Heck)&lt;br /&gt;
http://remote.science.uva.nl/~heck/Courses/mptut.pdf&lt;br /&gt;
Также представляет интерес книга «Metafun» от Ганса Хагена (Hans&lt;br /&gt;
Hagen) – она находится в открытом доступе, имя файла metafun-p.pdf.&lt;br /&gt;
&lt;br /&gt;
В интернете можно найти интересный ресурс под названием&lt;br /&gt;
«MetaPost : examples» от Vincent Zoonekynd&lt;br /&gt;
http://zoonek.free.fr/LaTeX/.&lt;br /&gt;
Это страничка с огромным количеством простых примеров. Небольшое&lt;br /&gt;
неудобство состоит в том, что это франкоговорящий ресурс, с другой&lt;br /&gt;
стороны, текста там немного. Зеркало примеров расположено, например, здесь http://tex.loria.fr/prod-graph/zoonekynd/MetaPost/MetaPost.html.&lt;br /&gt;
&lt;br /&gt;
Ко всей перечисленной электронной документации можно&lt;br /&gt;
получить доступ через страничку CTAN, посвящённую&lt;br /&gt;
MetaPost: http://www.tug.org/MetaPost.html.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 16 May 2008 09:42:30 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF76:MetaPost</comments>		</item>
	</channel>
</rss>