LINUX.ORG.RU

Создание иллюстраций в MetaPost


0

0

По согласованию редакцией LF выложил первую часть из цикла статей <<Создание иллюстраций в MetaPost>> в открытый доступ. Первая часть является просто введением в эту ТеХнологию.

Там же доступны иходники картинок к уже опубликованным частям. Сборка картинок производится по команде make pics. В качестве базового дистрибутива использовался TeX Live. В случае проблем, вопросов и пожеланий координаты в README.

>>> Подробности

★★★★★

Проверено: Pi ()
Ответ на: комментарий от geekkoo

>Это хорошо если на входе всего одна picture, а если несколько?

Не прошло и двух дней до меня наконец-то дошло. То есть хочется иметь либо указатель, либо структуру. Боюсь оба эти элемента надо вводить самостоятельно. Ничего такого я не встречал :(

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

Чё-то, наконец, у меня стало получаться :)

>>То есть хочется иметь либо указатель, либо структуру.

Как раз в метапосте можно сделать что-то вроде ссылочных параметров
передавая переменные в макрос по имени. Но в этом случае все 
действительные параметры должны быть переменными. Например:  

beginfig(-1)
  def gr text b =
    forsuffixes a=b:
      if picture a:
	a:=a shifted (-1cm,-1cm);
      elseif string a:
	show a;
        a:="OK";
      fi;
    endfor;    
  enddef;
  
  picture p,q;
  string x;
  x:="+";
  p:=nullpicture; 
  addto p doublepath (1cm,1cm)..(2cm,2cm)..(3cm,1cm)..cycle;  
  q:=p shifted (1cm,0);    
  draw p;
  draw q;
  gr p,q,x;
  draw p;
  draw q;
  show x;
endfig;

geekkoo
()
Ответ на: комментарий от geekkoo

В MetaPost можно преобразовать название переменной в строку string

например str x[n]a при n=1 преобразуется в "x1a"

Обращаться к элементам цепочки можно с помощью команды substring(first simbol,last simbol)

Обратное преобразование в код делается с помощь scantokens

То есть можно создать макрос, который из твоей последовательности делает строку, а затем с этой строкой работать.

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

>>>Обратное преобразование в код делается с помощь scantokens

Откуда вы это всё взяли? В mpman.ps я ничего такого не видел. Ссылку не дадите?

Но, в принципе, я даже знаю как можно обойтись без этого ;)

grid пусть остается в том виде как сейчас, нужно только добавить еще один макрос типа grid.content с этой конструкцией text...forsuffixes для извлечения компонент из заданной pictures с заданной разметкой. Такое деление на два макроса должно быть даже более правильно, чем я в начале думал ;) Хотя, конечно, предварительный парсинг для вырезания из text-а разметки тут был бы уместен :)

После этого у metapost появится замечательный layout manager, с помощью которого рисовать блок-схемы, uml-диаграммы и электронные схемы станет совсем просто.

geekkoo
()
Ответ на: комментарий от geekkoo

Кнут "Всё про METAFONT" Издан перевод от Вильямс. В принципе можно посмотреть mfbook.tex, который в открытом доступе.

Пример scantokens есть в mpgraph.pdf

Evgueni ★★★★★
() автор топика
Ответ на: комментарий от Evgueni

Ага, спасибо.


forsuffixes z=scantokens "p,q":
show z;
endfor;

Такая конструкция (применительно к последнему куску кода) работает ;)

geekkoo
()
Ответ на: комментарий от geekkoo

>так он же еще выложил книжку с огромным числом примеров для R, которые при этом еще сопровождаются какими-то вполне разумными рассказами про статистику и теорию вероятностей

Большое спасибо за ссылку, сам искал --- не нашел хорошего :)

Ay49Mihas ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.