Векторная графика средствами LaTeX
Для создания векторной графики в LaTeX есть довольно большое множество расширений. Сегодня я расскажу два из них: пакет xy и встроенное окружение picture
Пакет xy позволяет рисовать в математическом режиме стрелки между кусочками формулы, разложенными в таблицу (другими словами: в узлах прямоугольной решётки стоят математические символы, буквы, формулы и т.п., и между ними мы проводим стрелки)
Вся картинка рисуется внутри команды \xymatrix. Столбцы разделяются символом &, строки \\, после ячейки, из которой мы хотим куда-нибудь направить стрелку добавляется команда \ar[куда], где вместо слова куда стоит сочетание из букв l, r, u, d, описывающее относительное положение ячейки, в которую стрелка направлена:
Над стрелочками можно вставлять подписи: подписи слева по ходу стрелки (т.е. сверху, если стрелка направлена направо) пишутся как верхние индексы над стрелкой, справа – как нижние, подписи, встроенные в стрелку, обозначаются символом |
Можно настраивать форму стрелок: по умолчанию стрелки прямые, если между \ar и направлением добавить @/^/, стрелка будет изогнута налево (т.е. вверх, если стрелка направлена направо), а если @/_/, то направо
Можно настраивать рисунок стрелок: между \ar и направлением добавить @{обозначение} . См. обозначения в справочнике.
Окружение picure позволяет рисовать произвольную векторную графику из примитивов: линия, стрелка, окружность, круг, овал
1 \setlength{\unitlength}{1cm} 2 \begin{picture}(W,H) 3 \end{picture} 4 \begin{picture}(W,H)(leftX,bottomY) 5 \put(X,Y){object} 6 \multiput(X,Y)(dX,dY){n}{object} 7 \qbezier(x1,y1)(x2,y2)(x3,y3) % исключение, их не нужно класть в \put 8 \put(X,Y){\line(angleX,angleY){lengthX}} % angleX и angleY взаимно простые целые 9 \put(X,Y){\vector(angleX,angleY){lengthX}} % стрелка; angleX и angleY взаимно простые целые из диапазона [-4,4] 10 \put(X,Y){\circle{diameter}} % окружность 11 \put(X,Y){\circle*{diameter}} % круг 12 \put(X,Y){\oval(W,H)} % овал 13 \put(X,Y){\oval(W,H)[tl]} % левая верхняя четверть овала 14 \thicklines % для всех линий 15 \thinlines % для всех линий 16 \linethickness{length} % только для вертикальных, горизонтальных линий и кривых Безье 17 \end{picture}