<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF79%3AMetaPost</id>
		<title>LXF79:MetaPost - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF79%3AMetaPost"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;action=history"/>
		<updated>2026-05-13T10:38:17Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4642&amp;oldid=prev</id>
		<title>Lockal: {{Цикл/MetaPost}}</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4642&amp;oldid=prev"/>
				<updated>2008-05-16T19:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;{{Цикл/MetaPost}}&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&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 valign='top'&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;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{Цикл/MetaPost}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lockal</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4617&amp;oldid=prev</id>
		<title>Yaleks: «LXF79:Metapost» переименована в «LXF79:MetaPost»: унификация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4617&amp;oldid=prev"/>
				<updated>2008-05-16T08:48:01Z</updated>
		
		<summary type="html">&lt;p&gt;«&lt;a href=&quot;/wiki/LXF79:Metapost&quot; class=&quot;mw-redirect&quot; title=&quot;LXF79:Metapost&quot;&gt;LXF79:Metapost&lt;/a&gt;» переименована в «&lt;a href=&quot;/wiki/LXF79:MetaPost&quot; title=&quot;LXF79:MetaPost&quot;&gt;LXF79:MetaPost&lt;/a&gt;»: унификация&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Версия 08:48, 16 мая 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4453&amp;oldid=prev</id>
		<title>Lockal: восстановление кавычек в коде  AWB</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=4453&amp;oldid=prev"/>
				<updated>2008-04-27T13:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;восстановление кавычек в коде  &lt;a href=&quot;/wiki/index.php?title=Linuxformat:AutoWikiBrowser&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Linuxformat:AutoWikiBrowser (страница не существует)&quot;&gt;AWB&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;amp;diff=4453&amp;amp;oldid=3820&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Lockal</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=3820&amp;oldid=prev</id>
		<title>ProDOOMman: иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=3820&amp;oldid=prev"/>
				<updated>2008-04-01T14:09:55Z</updated>
		
		<summary type="html">&lt;p&gt;иллюстрация&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&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 valign='top'&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;Версия 14:09, 1 апреля 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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 colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_109_1.jpg|thumb|Иллюстрация для объяснения понятия дифференцирования]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В этом смысле кодирование графика ничем не отличается от кодирования рисунка – нужно лишь уметь рисовать стрелки и линии. Однако это годится только для простых графиков. Графики в MetaPost Для серьёзной работы с графиками в MetaPost есть довольно продвинутый пакет graph.mp. Этот пакет написан «отцом» MetaPost Джоном Хобби, и к нему прилагается подробная документация, которую можно найти в стандартной поставке LaTeX в виде файла mpgraph.pdf. Если вы планируете воспользоваться этим пакетом, то прежде изучите этот текст.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В этом смысле кодирование графика ничем не отличается от кодирования рисунка – нужно лишь уметь рисовать стрелки и линии. Однако это годится только для простых графиков. Графики в MetaPost Для серьёзной работы с графиками в MetaPost есть довольно продвинутый пакет graph.mp. Этот пакет написан «отцом» MetaPost Джоном Хобби, и к нему прилагается подробная документация, которую можно найти в стандартной поставке LaTeX в виде файла mpgraph.pdf. Если вы планируете воспользоваться этим пакетом, то прежде изучите этот текст.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 83:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 85:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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 colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_110_1.jpg|thumb|Число постов на linux.org.ru]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;С помощью команды gdraw можно читать данные из файла. Если в качестве аргумента передаётся текстовая строка, то gdraw предполагает, что это имя файла.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;С помощью команды gdraw можно читать данные из файла. Если в качестве аргумента передаётся текстовая строка, то gdraw предполагает, что это имя файла.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 134:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 138:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; endgraph;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; endgraph;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; endfig;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; endfig;&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;то получится простенькая картинка&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/del&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;то получится простенькая картинка&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/ins&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;[[Изображение:Img_79_111_1.jpg]]&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;[[Изображение:Img_79_111_1.jpg&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|thumb|Дефект массы химических элементов от порядкового номера в периодической таблице Меделеева. Приведены элементы от водорода до железа.&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Переменная s объявляется массивом, в который считывается строка. В качестве разделителя выступает пробел. Запись s1 соответствует s[1] – первому элементу массива. Макрос scantokens «встраивает» значение аргумента в код. В данном случае происходит перевод строки в число. В качестве «действия» в команде gdata может быть набор из нескольких команд.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Переменная s объявляется массивом, в который считывается строка. В качестве разделителя выступает пробел. Запись s1 соответствует s[1] – первому элементу массива. Макрос scantokens «встраивает» значение аргумента в код. В данном случае происходит перевод строки в число. В качестве «действия» в команде gdata может быть набор из нескольких команд.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;Строка 165:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 169:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; enddef;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; enddef;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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 colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_111_2.jpg|thumb|Распределение по баллам, полученным на Открытой олимпиаде по физике в НГУ в 2004 году.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Файл graphics.mp&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Файл graphics.mp&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Оценки&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Оценки&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 180:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 185:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Пакет piechartmp.mp относительно молод. Замечательная, можно сказать красочная, документация поставляется в виде файла piechartmp.pdf и примеров.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Пакет piechartmp.mp относительно молод. Замечательная, можно сказать красочная, документация поставляется в виде файла piechartmp.pdf и примеров.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_111_3.jpg|thumb|Распределение оценок.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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;&amp;#160;&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 colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 211:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 218:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* Нарисовать гистограмму. В качестве параметров команде PieChart передаётся размер, высота диаграммы, угол, под которым мы на неё смотрим (трёхмерность), угол поворота вокруг центральной оси и «смещение» сегментов относительно центра.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* Нарисовать гистограмму. В качестве параметров команде PieChart передаётся размер, высота диаграммы, угол, под которым мы на неё смотрим (трёхмерность), угол поворота вокруг центральной оси и «смещение» сегментов относительно центра.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* Расставить метки. В момент создания каждому сегменту присваивается порядковый номер. Отсчет начинается с единицы. Все изменения в круговой диаграмме делаются глобально. Пакет написан так, чтобы в одном mp-файле было удобно работать ровно с одной диаграммой. Если при описании диаграммы внутри окружения beginfig вы уже что-то определили, то нет необходимости повторять это в последующих окружениях. Этот режим удобен, если нужно создать несколько модификаций одной диаграммы, например, для создания «оверлеев» в презентации. Минусом такого подхода является то, что если в этом же mp-файле хочется создать ещё одну гистограмму, то уже определённые сегменты необходимо спрятать.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* Расставить метки. В момент создания каждому сегменту присваивается порядковый номер. Отсчет начинается с единицы. Все изменения в круговой диаграмме делаются глобально. Пакет написан так, чтобы в одном mp-файле было удобно работать ровно с одной диаграммой. Если при описании диаграммы внутри окружения beginfig вы уже что-то определили, то нет необходимости повторять это в последующих окружениях. Этот режим удобен, если нужно создать несколько модификаций одной диаграммы, например, для создания «оверлеев» в презентации. Минусом такого подхода является то, что если в этом же mp-файле хочется создать ещё одну гистограмму, то уже определённые сегменты необходимо спрятать.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_112_1.jpg|thumb|Распределение «вещества» в современной вселенной.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Круговые гистограммы&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %Круговые гистограммы&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %распределение вещества во вселенной&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; %распределение вещества во вселенной&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 304:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 313:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== gnuplot ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== gnuplot ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Изображение:Img_79_113_1.jpg|thumb|Интегральная светимость от времени. Данные за полтора года (примерно 130 тысяч точек) обработаны с помощью программы gnuplot.]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&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;&amp;#160;&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;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В случае отображения больших объёмов данных лучше использовать gnuplot. Чтобы gnuplot работал с MetaPost, необходимо определить правильное устройство вывода. Для этого в gnuplot следует передать команду:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В случае отображения больших объёмов данных лучше использовать gnuplot. Чтобы gnuplot работал с MetaPost, необходимо определить правильное устройство вывода. Для этого в gnuplot следует передать команду:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ProDOOMman</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=3249&amp;oldid=prev</id>
		<title>ProDOOMman: Новая: ''Даже жизнь можно отобразить в виде графика функции от времени. '''Евгений Балдин''' расскажет, как выра...</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF79:MetaPost&amp;diff=3249&amp;oldid=prev"/>
				<updated>2008-03-23T11:14:21Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: &amp;#039;&amp;#039;Даже жизнь можно отобразить в виде графика функции от времени. &amp;#039;&amp;#039;&amp;#039;Евгений Балдин&amp;#039;&amp;#039;&amp;#039; расскажет, как выра...&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;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Отображение данных на бумаге всегда было и останется нетривиальным процессом. Несмотря на то, что получение данных, как правило, занимает гораздо больше ресурсов, задача оформления графиков достойна автоматизации. В частности, автоматизация позволяет один раз придумать, как представить данные наилучшим образом, и в дальнейшем не снижать уровень оформления.&lt;br /&gt;
&lt;br /&gt;
По-хорошему, графики следует создавать в специализированных приложениях. Автоматизация этого процесса достаточно специфична, чтобы реализовывать его с помощью программ, не предназначенных только для этого. Если вам нужны двумерные графики, то никто не справится с этим лучше чем gnuplot. Если вас интересуют гистограммы, то это работа для пакетов анализа paw/cernlib или root. Но если вам хочется разукрасить график, то 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;
В этом смысле кодирование графика ничем не отличается от кодирования рисунка – нужно лишь уметь рисовать стрелки и линии. Однако это годится только для простых графиков. Графики в MetaPost Для серьёзной работы с графиками в MetaPost есть довольно продвинутый пакет graph.mp. Этот пакет написан «отцом» MetaPost Джоном Хобби, и к нему прилагается подробная документация, которую можно найти в стандартной поставке LaTeX в виде файла mpgraph.pdf. Если вы планируете воспользоваться этим пакетом, то прежде изучите этот текст.&lt;br /&gt;
 %Файл graphics.mp&lt;br /&gt;
 input graph;&lt;br /&gt;
 %График переменной скорости - тема “дифференцирование”&lt;br /&gt;
 beginfig(2) ;&lt;br /&gt;
  numeric u;&lt;br /&gt;
  u = 0.6mm;&lt;br /&gt;
  %начало графика&lt;br /&gt;
  draw begingraph(12cm,3cm);&lt;br /&gt;
   path r;&lt;br /&gt;
   numeric e,pi,A,sigma,n,scale,mean,y[],x[];&lt;br /&gt;
   e:=2.718;pi:=3.14159;A=50;&lt;br /&gt;
   sigma=1.4;n:=100;scale=10;mean=5;&lt;br /&gt;
   %создание функции - она использовалась не один раз&lt;br /&gt;
   for j:=0 upto n:&lt;br /&gt;
    if (j=0):&lt;br /&gt;
               x[0]=0;y[0]=0;&lt;br /&gt;
    else:&lt;br /&gt;
               x[j]:=scale*j/n;&lt;br /&gt;
               y[j]:=y[j-1]+A*(e**(-(((scale*j/n-mean)/(1.41*sigma))**2)))*&lt;br /&gt;
               (x[j]-x[j-1])/(sqrt(2*pi)*sigma);&lt;br /&gt;
    fi&lt;br /&gt;
   endfor;&lt;br /&gt;
   %здесь нужна функция из отрезков, поэтому step 6&lt;br /&gt;
   r:=(0,0)for j:=0 step 6 until (n-1):&lt;br /&gt;
     --((2,0)+(x[j],y[j])) endfor ..(12,50)--(15,50);&lt;br /&gt;
   %отрисовка функции&lt;br /&gt;
   gdraw r withpen pencircle scaled 0.8u;&lt;br /&gt;
   %сетка&lt;br /&gt;
   autogrid(grid.bot,grid.lft) withcolor .5white;&lt;br /&gt;
   %дополнительные метки на оси абсцисс&lt;br /&gt;
   otick.bot(btex 2\,\text{с} etex,2);&lt;br /&gt;
   otick.bot(btex 12\,\text{с} etex,12);&lt;br /&gt;
   %текст и стрелка за пределами графика&lt;br /&gt;
   gdrawdblarrow (2,-20)--(12,-20)&lt;br /&gt;
            withpen pencircle scaled 0.5u;&lt;br /&gt;
   glabel.top(btex \(T=10\,\text{с}\) etex,(7.5,-20));&lt;br /&gt;
   gdrawdblarrow (13.5,0)--(13.5,50)&lt;br /&gt;
            withpen pencircle scaled 0.5u;&lt;br /&gt;
   %текстовые метки внутри графика&lt;br /&gt;
   glabel.lft(btex \(S=50\,\text{м}\) etex&lt;br /&gt;
          rotated 90, 1/2[(13.5,0),(13.5,50)]);&lt;br /&gt;
   glabel.rt(btex \(v(t)=\frac{dx(t)}{dt}\) etex&lt;br /&gt;
                 scaled 1.3,(0,25));&lt;br /&gt;
   glabel(btex \(dx\) etex,(11.1,20)) ;&lt;br /&gt;
   glabel(btex \(dt\) etex,(10,9)) ;&lt;br /&gt;
   %подписи к осям&lt;br /&gt;
   glabel.rt(btex Время (с) etex,(13,-20)) ;&lt;br /&gt;
   glabel.lft(btex Расстояние (м) etex rotated 90,OUT) shifted (0cm,0.5cm);&lt;br /&gt;
  endgraph;&lt;br /&gt;
 endfig ;&lt;br /&gt;
&lt;br /&gt;
В graph.mp определено специальное окружение. Между begingraph и endgraph действует своя система координат. Она привязана не к геометрическим размерам картинки, а к диапазону осей графика. То есть точка (0,0) соответствует точке пересечения оси абсцисс и оси ординат графика. Размер создаваемого графика указывается сразу после begingraph.&lt;br /&gt;
&lt;br /&gt;
Вместо стандартных команд draw, fill, label и dotlabel используются gdraw, gfill, glabel и gdotlabel, соответственно. Новые команды работают с учётом координат графика. С их помощью можно построить функцию именно по точкам, не заботясь о сдвигах и тому подобном. Для подписи осей существует специальная точка OUT, которая в зависимости от суффикса команды glabel выносит текст за пределы основной сетки.&lt;br /&gt;
&lt;br /&gt;
Функция «отрисовывается» точно так же, как любая из кривых: создаётся путь, который затем выводится с помощью команды gdraw.&lt;br /&gt;
&lt;br /&gt;
Для фиксации диапазона графика используется команда: setrange(“нижний левый угол”,”верхний правый угол”);&lt;br /&gt;
&lt;br /&gt;
При вызове этой инструкции все последующие функции работают в указанном диапазоне. Таким образом, используя одно и то же пространство, можно совместить несколько графиков, имеющих различный диапазон аргументов и функций. Шкалу графика можно сделать логарифмической с помощью инструкции setcoord:&lt;br /&gt;
 %x- линейная шкала, y - логарифмическая&lt;br /&gt;
 setcoord(linear,log);&lt;br /&gt;
Для создания сетки и меток используется команда autogrid:&lt;br /&gt;
 %сетка по нижней и левой осям&lt;br /&gt;
 autogrid(grid.bot,grid.lft) withcolor .5white;&lt;br /&gt;
 %внешние метки по нижней оси и внутренние метки по правой оси&lt;br /&gt;
 autogrid(otick.bot,itick.rt);&lt;br /&gt;
&lt;br /&gt;
=== Работа с файлами данных ===&lt;br /&gt;
&lt;br /&gt;
С помощью команды gdraw можно читать данные из файла. Если в качестве аргумента передаётся текстовая строка, то gdraw предполагает, что это имя файла.&lt;br /&gt;
 %Файл graphics.mp&lt;br /&gt;
 %Число постов на LOR от месяца года  beginfig(4) ;&lt;br /&gt;
  u := 0.4mm;&lt;br /&gt;
  draw begingraph(150u,100u);&lt;br /&gt;
   pickup pencircle scaled 0.2u;&lt;br /&gt;
   gdraw(“lor-1998.dat”) plot btex \(\circ\) etex;&lt;br /&gt;
   gdraw(“lor-1999.dat”) plot btex \(\circ\) etex;&lt;br /&gt;
   gdraw(“lor-2000.dat”);&lt;br /&gt;
   gdraw(“lor-2001.dat”);&lt;br /&gt;
   gdraw(“lor-2002.dat”);&lt;br /&gt;
   gdraw(“lor-2003.dat”) plot btex \(\bullet\) etex;&lt;br /&gt;
   gdraw(“lor-2004.dat”);&lt;br /&gt;
   gdraw(“lor-2005.dat”);&lt;br /&gt;
   gdraw(“lor-2006.dat”);&lt;br /&gt;
   gdraw (0,100)--(12,100) withpen pencircle scaled 1u dashed evenly scaled 1u withcolor blue;&lt;br /&gt;
   glabel.top(btex 2000--2002 etex,(9,100)) withcolor blue;&lt;br /&gt;
   gdraw (0,200)--(12,200) withpen pencircle scaled 1u dashed evenly scaled 1u withcolor red;&lt;br /&gt;
   glabel.top(btex 2004--2006 etex,(9,200)) withcolor red;&lt;br /&gt;
   glabel.lft(btex число «постов» etex rotated 90,OUT);&lt;br /&gt;
   glabel.bot(btex номер месяца в году etex,OUT);&lt;br /&gt;
  endgraph;&lt;br /&gt;
 endfig;&lt;br /&gt;
Как и команда draw, gdraw «понимает» инструкции withpen (какое перо использовать), withcolor (цвет линии) и dashed (использовать пунктир). Дополнительно gdraw воспринимает команду plot {picture}. Указанная в инструкции plot картинка выбирается в качестве маркера. На рисунке чёрными маркерами отмечен 2003 год – год, когда произошло удвоение ежемесячного числа новостных постов на LOR ([http://www.linux.org.ru www.linux.org.ru]), а белыми маркерами – первый год существования этого ресурса.&lt;br /&gt;
&lt;br /&gt;
По умолчанию предполагается, что входной файл представляет из себя два столбца цифр, разделённых пробелами. Пример файла lor-2006.dat (данные взяты с сайта [http://www.linux.org.ru www.linux.org.ru]):&lt;br /&gt;
 1 175&lt;br /&gt;
 2 181&lt;br /&gt;
 3 184&lt;br /&gt;
Если данные имеют более сложное представление, чем в упомянутом выше файле, то используется команда gdata. gdata («имя файла», переменная куда считываются данные, действие);&lt;br /&gt;
&lt;br /&gt;
Если на текстовый файл вида:&lt;br /&gt;
 1 7.289 H&lt;br /&gt;
 2 2.425 He&lt;br /&gt;
 --вырезано--&lt;br /&gt;
 26 -57.710 Mn&lt;br /&gt;
 27 -60.604 Fe&lt;br /&gt;
воздействовать с помощью следующего кода:&lt;br /&gt;
 %Файл graphics.mp&lt;br /&gt;
 %дефект масс&lt;br /&gt;
 beginfig(5) ;&lt;br /&gt;
  u := 0.8mm;&lt;br /&gt;
 draw begingraph(150u,100u);&lt;br /&gt;
 gdraw “mendeleev.dat” dashed evenly scaled 1u withcolor 0.5white ;&lt;br /&gt;
 gdata(“mendeleev.dat”, s, glabel(s3,(scantokens s1,scantokens s2));&lt;br /&gt;
  )&lt;br /&gt;
 glabel.lft(btex Дефект массы (МэВ) etex rotated 90,OUT);&lt;br /&gt;
 glabel.bot(btex Порядковый номер элемента в таблице etex,OUT);&lt;br /&gt;
 endgraph;&lt;br /&gt;
 endfig;&lt;br /&gt;
то получится простенькая картинка:&lt;br /&gt;
[[Изображение:Img_79_111_1.jpg]]&lt;br /&gt;
Переменная s объявляется массивом, в который считывается строка. В качестве разделителя выступает пробел. Запись s1 соответствует s[1] – первому элементу массива. Макрос scantokens «встраивает» значение аргумента в код. В данном случае происходит перевод строки в число. В качестве «действия» в команде gdata может быть набор из нескольких команд.&lt;br /&gt;
&lt;br /&gt;
=== Гистограммы в MetaPost ===&lt;br /&gt;
&lt;br /&gt;
Если вы хотите нарисовать гистограмму, то можно воспользоваться следующими макросами:&lt;br /&gt;
 %Файл graphics.mp&lt;br /&gt;
 %создает профиль гистограммы из пути&lt;br /&gt;
 def histpath(expr pairs) =&lt;br /&gt;
 for i=0 upto length pairs:&lt;br /&gt;
  if (i&amp;gt;0):--else:fi((point i of pairs)-&lt;br /&gt;
   ((xpart(point 1 of pairs)-&lt;br /&gt;
    xpart(point 0 of pairs))/2,0))--&lt;br /&gt;
  ((point i of pairs)+&lt;br /&gt;
   ((xpart(point 1 of pairs)-&lt;br /&gt;
    xpart(point 0 of pairs))/2,0))&lt;br /&gt;
 endfor&lt;br /&gt;
 enddef;&lt;br /&gt;
 %создает замкнутый профиль гистограммы&lt;br /&gt;
 %для закрашивания&lt;br /&gt;
 def histpathcycle(expr pairs) =&lt;br /&gt;
 ((xpart(point 0 of pairs),0)-&lt;br /&gt;
  ((xpart(point 1 of pairs)-&lt;br /&gt;
   xpart(point 0 of pairs))/2,0))&lt;br /&gt;
 --histpath(pairs)--&lt;br /&gt;
 ((xpart(point infinity of pairs),0)+&lt;br /&gt;
  ((xpart(point 1 of pairs)-&lt;br /&gt;
   xpart(point 0 of pairs))/2,0))--cycle&lt;br /&gt;
 enddef;&lt;br /&gt;
Распределение, представленное на картинке, похоже на убывающую экспоненту. Вот так рисовались «пятёрки»:&lt;br /&gt;
 %Файл graphics.mp&lt;br /&gt;
 %Оценки&lt;br /&gt;
 path five;&lt;br /&gt;
 five:=(21,2)--(22,5)--(23,1)--(24,0)--(25,1)--(26,1)--(27,1)--(28,3)--(29,0)--(30,0)--(31,0);&lt;br /&gt;
 %Заполняем гистограмму&lt;br /&gt;
 gfill histpathcycle(five) withcolor 0.6white;&lt;br /&gt;
Для закрашивания контура применяется инструкция gfill – аналог команды fill.&lt;br /&gt;
&lt;br /&gt;
Данные по оценкам получались в результате обработки текстовых файлов со статистикой с помощью простого скрипта на Perl. Время, которое потребовалось на автоматизацию, составило примерно один человеко-день, что многократно меньше времени написания полного отчёта, куда вошли подобные гистограммы, и оформления всех условий и решений Открытой олимпиады и последовавших за ней летних вступительных экзаменов.&lt;br /&gt;
&lt;br /&gt;
Создание своих макросов на MetaPost является стандартным действием. META не страдает избыточностью и поощряет «доводку» окружения под ваши нужды.&lt;br /&gt;
&lt;br /&gt;
=== Круговые диаграммы ===&lt;br /&gt;
&lt;br /&gt;
Пакет piechartmp.mp относительно молод. Замечательная, можно сказать красочная, документация поставляется в виде файла piechartmp.pdf и примеров.&lt;br /&gt;
&lt;br /&gt;
Как обычно, за русским языком надо приглядывать. По умолчанию пакет работает только с латиницей.&lt;br /&gt;
 %Файл pie.mp&lt;br /&gt;
 input piechartmp;&lt;br /&gt;
 %Круговые гистограммы&lt;br /&gt;
 %Открытая Олимпиада “ФФ-51”&lt;br /&gt;
 beginfig(1) ;&lt;br /&gt;
  numeric u; u:=1mm;&lt;br /&gt;
 %чтобы был русский&lt;br /&gt;
 SetupText(1, “\input{preheader-base}”, “\begin{document}”)&lt;br /&gt;
 label(btex Открытая олимпиада НГУ-2005 etex,(5u,25u));&lt;br /&gt;
 label(btex распределение оценок ФФ-51 etex,(5u,20u));&lt;br /&gt;
 %Чтобы отображался процент&lt;br /&gt;
 SetupPercent(this, “ \%”);&lt;br /&gt;
 %Опеределение сегментов&lt;br /&gt;
 Segment( 15,”\small два”, auto);&lt;br /&gt;
 Segment( 24,”три”, auto);&lt;br /&gt;
 Segment( 16,”\large четыре”, auto);&lt;br /&gt;
 Segment( 16,”\huge пять”, red );&lt;br /&gt;
 %Создание круговой гистограммы&lt;br /&gt;
 PieChart(30u, 0.2, 65, 0, 0);&lt;br /&gt;
 %метки&lt;br /&gt;
 Label(0)(percent)(inwards,0) withcolor white;&lt;br /&gt;
 Label.auto(0)(name)(outwards,0);&lt;br /&gt;
 endfig;&lt;br /&gt;
Алгоритм создания круговой или секторной диаграммы следующий:&lt;br /&gt;
* Если вы хотите воспользоваться автоматической системой размещения меток, то с помощью команды SetupText следует настроить вывод текста. В файле preheader-base.tex должна быть минимальная шапка для документа LaTeX. Если вы хотите использовать русский язык, то там обязательно должны быть строки вида \usepackage[T2A]{fontenc} и \usepackage[koi8-r]{inputenc}. Вместо koi8-r можно поставить свою кодировку.&lt;br /&gt;
&lt;br /&gt;
* С помощью команды Segment следует определить сегменты. В качестве аргументов команде передаётся число (измеряемая величина), текстовая метка и цвет сегмента (можно указать значение по умолчанию – auto). Можно также ввести четвёртый необязательный строковый параметр, который заменяет измеряемую величину при создании меток. Это решает проблему ограничения на диапазон чисел в MetaPost.&lt;br /&gt;
* Нарисовать гистограмму. В качестве параметров команде PieChart передаётся размер, высота диаграммы, угол, под которым мы на неё смотрим (трёхмерность), угол поворота вокруг центральной оси и «смещение» сегментов относительно центра.&lt;br /&gt;
* Расставить метки. В момент создания каждому сегменту присваивается порядковый номер. Отсчет начинается с единицы. Все изменения в круговой диаграмме делаются глобально. Пакет написан так, чтобы в одном mp-файле было удобно работать ровно с одной диаграммой. Если при описании диаграммы внутри окружения beginfig вы уже что-то определили, то нет необходимости повторять это в последующих окружениях. Этот режим удобен, если нужно создать несколько модификаций одной диаграммы, например, для создания «оверлеев» в презентации. Минусом такого подхода является то, что если в этом же mp-файле хочется создать ещё одну гистограмму, то уже определённые сегменты необходимо спрятать.&lt;br /&gt;
 %Круговые гистограммы&lt;br /&gt;
 %распределение вещества во вселенной&lt;br /&gt;
 beginfig(2) ;&lt;br /&gt;
 numeric u; u:=1mm;&lt;br /&gt;
 %прячем определённые ранее сегменты&lt;br /&gt;
 SegmentState(1,hidden,this);&lt;br /&gt;
 SegmentState(2,hidden,this);&lt;br /&gt;
 SegmentState(3,hidden,this);&lt;br /&gt;
 SegmentState(4,hidden,this);&lt;br /&gt;
 %Опеределение новых сегментов&lt;br /&gt;
 Segment( 65,”\Large \bf тёмная энергия”,green,”\LARGE 65\%--70\%”);&lt;br /&gt;
 Segment( 25,”\Large \bf тёмная материя”, (1,0,1),”\LARGE 25\%”);&lt;br /&gt;
 Segment( 0.5,”звёзды”, (1,1,0),”\LARGE 0.5\%”);&lt;br /&gt;
 Segment( 5,”обычное вещество”, red,”\LARGE 5\%”);&lt;br /&gt;
 Segment( 1,”нейтрино”, black,”\LARGE 0.3\%--3\%”);&lt;br /&gt;
 %Выдвигаем сегменты из диаграммы&lt;br /&gt;
 SegmentState(7,this,0.7);&lt;br /&gt;
 SegmentState(9,this,0.7);&lt;br /&gt;
 SegmentState(8,this,0.7);&lt;br /&gt;
 %Создание круговой гистограммы&lt;br /&gt;
 PieChart(30u, 0.3, 30, 340, 0);&lt;br /&gt;
 %метки&lt;br /&gt;
 Label.auto(0)(name)(outwards,0) ;&lt;br /&gt;
 Label.auto(5)(value)(inwards,0) shifted (7u,-7u) withcolor white;&lt;br /&gt;
 Label.auto(6)(value)(inwards,0) shifted (0u,5u) withcolor white;&lt;br /&gt;
 Label.auto(7)(value)(inwards,(0u,-15u)) withcolor (1,1,0);&lt;br /&gt;
 Label.auto(8)(value)(inwards,(25u,10u)) withcolor red;&lt;br /&gt;
 Label.auto(9)(value)(inwards,(20u,20u)) withcolor black;&lt;br /&gt;
 endfig;&lt;br /&gt;
Состояние каждого из сегментов можно задавать с помощью команды SegmentState1.&lt;br /&gt;
&lt;br /&gt;
Состояние сегмента может быть:&lt;br /&gt;
* normal – сегмент становится видимым,&lt;br /&gt;
* invisible – сегмент не рисуется при создании круговой диаграммы (в диаграмме остаётся пустое место),&lt;br /&gt;
* hidden – при создании диаграммы этот сегмент игнорируется.&lt;br /&gt;
Радиальный сдвиг сегмента указывается в процентах, где 1 – это 100%, то есть сегмент полностью «выдвинут».&lt;br /&gt;
&lt;br /&gt;
Для установки меток используется команда Label2:&lt;br /&gt;
&lt;br /&gt;
Label понимает те же суффиксы, что и обычная команда label, плюс auto. При установке суффикса auto Label пытается сама угадать, где лучше поставить метку.&lt;br /&gt;
&lt;br /&gt;
В качестве порядкового номера сегмента можно передать 0. В этом случае команда Label применяется ко всем видимым сегментам. Label может принимать в качестве аргумента список порядковых номеров сегментов, разделённый запятыми (например: 5, 7, 9).&lt;br /&gt;
&lt;br /&gt;
Метка может быть простой текстовой строкой или одним из стандартных значений:&lt;br /&gt;
* value – измеряемая величина, которая приписывается сегменту при его создании,&lt;br /&gt;
* percent – процент занимаемой площади,&lt;br /&gt;
* name – имя сегмента, которое приписывается ему при его создании.&lt;br /&gt;
Базовая точка представляется в виде пары чисел (x,y), где x – расстояние от вершины сегмента (0 – это вершина, 1 – это противоположный от вершины край), а y – эквивалент полярного угла (0 – край сегмента по часовой стрелки, 1 – край сегмента против часовой стрелки). В пакете определены константы inwards=(0.7,0.7) и outwards=(1.1,0.5). Сдвиг же представлен в терминах всего графика (например, (1cm,0) означает сдвиг на 1 сантиметр вправо).&lt;br /&gt;
&lt;br /&gt;
При желании тип заливки и порядок цветов по умолчанию можно определять самостоятельно. Подробнее об этом рассказано в документации к пакету piechartmp.pdf.&lt;br /&gt;
&lt;br /&gt;
=== LaTeX рисует с помощью MetaPost ===&lt;br /&gt;
&lt;br /&gt;
Для рисования графиков можно воспользоваться и возможностями самого LaTeX. Например, с этой обязанностью прекрасно справляется стандартный пакет mfpic. Для «отрисовки» функций с помощью этого пакета достаточно задать саму функцию, а не рисовать по точкам:&lt;br /&gt;
 %файл graphics-mfpic.tex&lt;br /&gt;
 %Пример от Сергея В. Знаменского&lt;br /&gt;
 \documentclass{article}&lt;br /&gt;
 \usepackage[koi8-r]{inputenc}&lt;br /&gt;
 \usepackage[russian]{babel}&lt;br /&gt;
 \usepackage[MetaPost]{mfpic}&lt;br /&gt;
 %указываем mp-файл куда будет «складываться» код mfpic&lt;br /&gt;
 \opengraphsfile{graph-mfp}&lt;br /&gt;
 \begin{document}&lt;br /&gt;
 %не печатать номер страницы&lt;br /&gt;
 \pagestyle{empty}&lt;br /&gt;
 %начинаем создание графика&lt;br /&gt;
 \mfpic[1][57.2]{-100}{300}{-1.2}{1.2}&lt;br /&gt;
 %оси координат&lt;br /&gt;
 \axes&lt;br /&gt;
 \xmarks{-90,90,180,270}&lt;br /&gt;
 \ymarks{-1,1}&lt;br /&gt;
 %рисуем синус точками&lt;br /&gt;
 \dotted\function{-90,270,4.5}{sind(x)}&lt;br /&gt;
 %рисуем косинус пунктиром&lt;br /&gt;
 \dashed\function{-90,270,4.5}{cosd(x)}&lt;br /&gt;
 %рисуем тангенс сплошной линией&lt;br /&gt;
 \function{-50,50,10}{tand(x)}&lt;br /&gt;
 \function{130,230,10}{tand(x)}&lt;br /&gt;
 %заканчиваем создание графика&lt;br /&gt;
 \endmfpic&lt;br /&gt;
 %закрываем mp-файл&lt;br /&gt;
 \closegraphsfile&lt;br /&gt;
 \end{document}&lt;br /&gt;
Для получения картинки необходимо выполнить следующие действия:&lt;br /&gt;
 &amp;gt; LaTeX graphics-mfpic.tex&lt;br /&gt;
 &amp;gt; mpost graph-mfp.mp&lt;br /&gt;
 &amp;gt; LaTeX graphics-mfpic.tex&lt;br /&gt;
 &amp;gt; dvips -E graphics-mfpic.dvi -o graphics-mfpic.eps&lt;br /&gt;
При компиляции файла graphics-mfpic.tex создаётся graph-mfp.mp, куда пишутся команды на языке META. Если посмотреть на код graph-mfp.mp, то можно увидеть, что там используется макрос function, который позволяет рисовать функции одной командой, без всяких циклов. Как это делается, можно подглядеть в библиотечке grafbase.mp, которая входит в состав пакета mfpic.&lt;br /&gt;
&lt;br /&gt;
Более подробно про пакет mfpic можно узнать из документации которую можно найти в директории $(TEXMF)/texmf-dist/doc/generic/mfpic/, где $(TEXMF) – директория в которую установлен LaTeX (это заведомо верно для дистрибутива TeX Live).&lt;br /&gt;
&lt;br /&gt;
=== gnuplot ===&lt;br /&gt;
&lt;br /&gt;
В случае отображения больших объёмов данных лучше использовать gnuplot. Чтобы gnuplot работал с MetaPost, необходимо определить правильное устройство вывода. Для этого в gnuplot следует передать команду:&lt;br /&gt;
 set terminal mp color LaTeX&lt;br /&gt;
В этом случае gnuplot будет выводить графики в формате MetaPost. К сожалению, похоже, что вывод в MetaPost давно не поддерживался, поэтому установка кодировки:&lt;br /&gt;
 set encoding koi8r&lt;br /&gt;
не оказывает должного эффекта. Получившийся mp-файл приходится дорабатывать вручную. К счастью, это не сложно (следует поправить только заголовок), но для автоматизации следует озадачиться исправлением этой неприятной ошибки в gnuplot.&lt;br /&gt;
&lt;br /&gt;
В случае, если возникнет желание изменить метки, следует обратить внимание на переменную textmag, которая отвечает за размер текста.&lt;br /&gt;
&lt;br /&gt;
=== Подведём итоги ===&lt;br /&gt;
&lt;br /&gt;
С помощью MetaPost можно создавать двумерные графики и диаграммы любой сложности. Возможности языка META и стандартные пакеты позволяют сконцентрироваться на смысловой части и не отвлекаться на отдельные элементы оформления.&lt;/div&gt;</summary>
		<author><name>ProDOOMman</name></author>	</entry>

	</feed>