diff options
Diffstat (limited to 'Master/texmf-doc/doc/russian/lshort-russian/src/graphic.tex')
-rw-r--r-- | Master/texmf-doc/doc/russian/lshort-russian/src/graphic.tex | 654 |
1 files changed, 654 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/russian/lshort-russian/src/graphic.tex b/Master/texmf-doc/doc/russian/lshort-russian/src/graphic.tex new file mode 100644 index 00000000000..41cfa3ba205 --- /dev/null +++ b/Master/texmf-doc/doc/russian/lshort-russian/src/graphic.tex @@ -0,0 +1,654 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setcounter{chapter}{4} +\newcommand{\graphicscompanion}{\emph{The \LaTeX{} Graphics Companion}~\cite{graphicscompanion}} +\newcommand{\hobby}{\emph{Руководство пользователя MetaPost}~\cite{metapost}} +\newcommand{\hoenig}{\emph{\TeX{} Unbound}~\cite{unbound}} +\newcommand{\graphicsinlatex}{\emph{Графика в \LaTeXe{}}~\cite{ursoswald}} + +\chapter{Генерация математической графики} + +\begin{intro} +Большинство людей пользуются \LaTeX\ для верстки текста. Но \LaTeX{} также +предлагает, хотя и ограниченную, возможность генерации графики по +текстовому описанию. Более того, существует множество расширений \LaTeX{}, +обходящих эти ограничния. Эта глава расскажет о нескольких из них. +\end{intro} + +\section{Обзор} + +Окружение \ei{picture} позволяет программировать картинки прямо в +среде \LaTeX. Подробное описание приводится в \manual. С одной +стороны, при этом есть довольно серьезные ограничения, поскольку как +наклоны отрезков, так и радиусы дуг сильно ограничены в возможных +значениях. С другой стороны, в окружении \ei{picture} существуюет +команда \ci{qbezier}, где <<\texttt{q}>> означает +<<квадратичный>>. Множество часто используемых кривых, таких как +окружности, эллипсы или цепные линии, можно удовлетворительно +аппроксимировать квадратичными кривыми Безье, хотя для этого и +требуются некоторые математические усилия. Кроме того, когда блоки +команд \ci{qbezier} генерируются из языка программирования, скажем, +Java, окружение \ei{picture} становится довольно мощным. + +Хотя программирование картинок прямо из \LaTeX{} серьезно ограничено и +часто довольно утомительно, оно все же бывает полезным. Полученные +таким образом документы получаются компактными, и нет необходимости +прилагать к документу графические файлы. + +Пакеты наподобие \pai{epic} и \pai{eepic} (описанные, например, в +\companion) или \pai{pstricks} помогают снять ограничения +оригинального окружения \ei{picture} и сильно развивают графические +возможности \LaTeX{}. + +Тогда как первые два пакета просто улучшают окружение \ei{picture}, +пакет \pai{pstricks} имеет собственное окружение для рисования, +\ei{pspicture}. Возможности \pai{pstricks} проистекают их того, что он +широко использует функциональность \PSi{}. Кроме этого пакета, +существует и множество других, написанных для конкретных задач. Одним +из них является пакет \texorpdfstring{\Xy}{Xy}-pic, описанный в конце +этой главы. Множество таких пакетов детально описано в +\graphicscompanion{} (не путать с \companion). + +Возможно, самым мощным графическим инструментом, связанным с \LaTeX{}, +является \MP, программа-близнец написанной Donald E. Knuth программы +\texttt{METAFONT}. \MP{} использует очень мощный и математически +изощренный язык \texttt{METAFONT}. В отличие же от \texttt{METAFONT}, +генерирующего растры, \MP{} генерирует файлы \EPSi{}, которые можно +импортировать в \LaTeX{}. Далее смотрите \hobby, или введение в +\cite{ursoswald}. + +Очень подробно работа с графикой (и шрифтами) в \LaTeX{} и \TeX{} +описана в \hoenig. + +\section{Окружение \texttt{picture}} +\secby{Urs Oswald}{osurs@bluewin.ch} + +\subsection{Основные команды} + +Окружение \ei{picture} создается одной из двух команд: +\begin{lscommand} +\ci{begin}\verb|{picture}(|$x,y$\verb|)|\ldots\ci{end}\verb|{picture}| +\end{lscommand} +\noindent либо +\begin{lscommand} +\ci{begin}\verb|{picture}(|$x,y$\verb|)(|$x_0,y_0$\verb|)|\ldots\ci{end}\verb|{picture}| +\end{lscommand} + +Числа $x,\,y,\,x_0,\,y_0$ измеряются в размерности \ci{unitlength}, +которую можно менять в любой момент (но не внутри окружения +\ei{picture}) командами наподобие +\begin{lscommand} +\ci{setlength}\verb|{|\ci{unitlength}\verb|}{1.2cm}| +\end{lscommand} + +Значение \ci{unitlength} по умолчанию составляет 1pt. Первая пара, +$(x,y)$, диктует резервирование для картинки прямоугольного +пространства внутри документа. Необязательная вторая пара, +$(x_0,y_0)$, присваивает произвольные координаты нижнему левому углу +зарезервированного прямоугольника. + +Большинство команд рисования имеют одну из двух форм: +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\emph{объект}\verb|}| +\end{lscommand} +\noindent или +\begin{lscommand} +\ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{объект}\verb|}|\end{lscommand} + +Кривые Безье являются исключением. Их рисуют командой +\begin{lscommand} +\ci{qbezier}\verb|(|$x_1,y_1$\verb|)(|$x_2,y_2$\verb|)(|$x_3,y_3$\verb|)| +\end{lscommand} + +\subsection{Отрезки} + +\begin{example} +\setlength{\unitlength}{5cm} +\begin{picture}(1,1) + \put(0,0){\line(0,1){1}} + \put(0,0){\line(1,0){1}} + \put(0,0){\line(1,1){1}} + \put(0,0){\line(1,2){.5}} + \put(0,0){\line(1,3){.3333}} + \put(0,0){\line(1,4){.25}} + \put(0,0){\line(1,5){.2}} + \put(0,0){\line(1,6){.1667}} + \put(0,0){\line(2,1){1}} + \put(0,0){\line(2,3){.6667}} + \put(0,0){\line(2,5){.4}} + \put(0,0){\line(3,1){1}} + \put(0,0){\line(3,2){1}} + \put(0,0){\line(3,4){.75}} + \put(0,0){\line(3,5){.6}} + \put(0,0){\line(4,1){1}} + \put(0,0){\line(4,3){1}} + \put(0,0){\line(4,5){.8}} + \put(0,0){\line(5,1){1}} + \put(0,0){\line(5,2){1}} + \put(0,0){\line(5,3){1}} + \put(0,0){\line(5,4){1}} + \put(0,0){\line(5,6){.8333}} + \put(0,0){\line(6,1){1}} + \put(0,0){\line(6,5){1}} +\end{picture} +\end{example} +Отрезки рисуются командой +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\ci{line}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}| +\end{lscommand} +Команда \ci{line} имеет два аргумента: +\begin{enumerate} + \item вектор направления, + \item длина. +\end{enumerate} +Компоненты вектора ограничены в своем значении набором целых чисел +\[ + -6,\,-5\,\ldots,\,5,\,6, +\] +и они обязаны быть взаимно простыми (не иметь общего делителя, кроме +1). Иллюстрация показывает все 25 возможных значений наклона в первом +квадранте. Длина выражается в единицах \ci{unitlength}. Аргумент длины +задает вертикальную координату в случае вертикального отрезка и +горизонтальную~--- во всех остальных случаях. + +\subsection{Векторы} + +\begin{example} +\setlength{\unitlength}{1mm} +\begin{picture}(60,40) + \put(30,20){\vector(1,0){30}} + \put(30,20){\vector(4,1){20}} + \put(30,20){\vector(3,1){25}} + \put(30,20){\vector(2,1){30}} + \put(30,20){\vector(1,2){10}} + \thicklines + \put(30,20){\vector(-4,1){30}} + \put(30,20){\vector(-1,4){5}} + \thinlines + \put(30,20){\vector(-1,-1){5}} + \put(30,20){\vector(-1,-4){5}} +\end{picture} +\end{example} +Векторы рисуются командой +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\ci{vector}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}| +\end{lscommand} +Для векторов значения вектора направления еще более ограничены в +значениях, чем для отрезков, а именно~--- числами +\[ + -4,\,-3,\,\ldots,\,3,\,4. +\] +Компоненты также обязаны быть взаимно простыми (не иметь общего +делителя, кроме 1). Заметьте эффект команды \ci{thicklines} на двух +векторах, указывающих в верхний левый угол. + +\subsection{Окружности} + +\begin{example} +\setlength{\unitlength}{1mm} +\begin{picture}(60, 40) + \put(20,30){\circle{1}} + \put(20,30){\circle{2}} + \put(20,30){\circle{4}} + \put(20,30){\circle{8}} + \put(20,30){\circle{16}} + \put(20,30){\circle{32}} + + \put(40,30){\circle{1}} + \put(40,30){\circle{2}} + \put(40,30){\circle{3}} + \put(40,30){\circle{4}} + \put(40,30){\circle{5}} + \put(40,30){\circle{6}} + \put(40,30){\circle{7}} + \put(40,30){\circle{8}} + \put(40,30){\circle{9}} + \put(40,30){\circle{10}} + \put(40,30){\circle{11}} + \put(40,30){\circle{12}} + \put(40,30){\circle{13}} + \put(40,30){\circle{14}} + + \put(15,10){\circle*{1}} + \put(20,10){\circle*{2}} + \put(25,10){\circle*{3}} + \put(30,10){\circle*{4}} + \put(35,10){\circle*{5}} +\end{picture} +\end{example} +Команда +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{circle}\verb|{|\emph{диаметр}\verb|}}| +\end{lscommand} +\noindent рисует окружность с центром в точке $(x,y)$ и диаметром (не +радиусом!) \emph{диаметр}. Окружение \ei{picture} позволяет рисовать +окружности диаметром не более примерно 14\,мм, и даже в этих пределах +допустимы не все диаметры. Команда \ci{circle*} рисует круг +(заполненную окружность). + +Как и в случае отрезков, вы можете прибегать к помощи дополнительных +пакетов, таких, как \pai{eepic} или \pai{pstricks}. +Подробное описание этих пакетов приведено в \graphicscompanion. + +Существует также и выход в рамках окружения \ei{picture}. Если вы не +боитесь выполнения необходимых вычислений (или возлагаете их на +программу), то можно изображать произвольные окружности и эллипсы при +помощи кривых Безье. Примеры и исходные тексты на Java приведены в +\graphicsinlatex. + +\subsection{Текст и формулы} + +\begin{example} +\setlength{\unitlength}{1cm} +\begin{picture}(6,5) + \thicklines + \put(1,0.5){\line(2,1){3}} + \put(4,2){\line(-2,1){2}} + \put(2,3){\line(-2,-5){1}} + \put(0.7,0.3){$A$} + \put(4.05,1.9){$B$} + \put(1.7,2.95){$C$} + \put(3.1,2.5){$a$} + \put(1.3,1.7){$b$} + \put(2.5,1.05){$c$} + \put(0.3,4){$F= + \sqrt{s(s-a)(s-b)(s-c)}$} + \put(3.5,0.4){$\displaystyle + s:=\frac{a+b+c}{2}$} +\end{picture} +\end{example} +Как показывает этот пример, текст и формулы могут размещаться в +окружении \ei{picture} обычным способом~--- командой \ci{put}. + +\subsection{Команды \ci{multiput} и \ci{linethickness}} + +\begin{example} +\setlength{\unitlength}{2mm} +\begin{picture}(30,20) + \linethickness{0.075mm} + \multiput(0,0)(1,0){31}% + {\line(0,1){20}} + \multiput(0,0)(0,1){21}% + {\line(1,0){30}} + \linethickness{0.15mm} + \multiput(0,0)(5,0){7}% + {\line(0,1){20}} + \multiput(0,0)(0,5){5}% + {\line(1,0){30}} + \linethickness{0.3mm} + \multiput(5,0)(10,0){3}% + {\line(0,1){20}} + \multiput(0,5)(0,10){2}% + {\line(1,0){30}} +\end{picture} +\end{example} +Команда +\begin{lscommand} + \ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{объект}\verb|}| +\end{lscommand} +\noindent имеет 4 аргумента: начальная точка, вектор перехода от +одного объекта к следующему, число объектов и собственно объект для +рисования. Команда \ci{linethickness} относится к горизонтальным и +вертикальным отрезкам, но никогда~--- к наклонным или +окружностям. Она, однако относится также и к квадратичным кривым +Безье! + +\subsection{Овалы. Команды \ci{thinlines} и \ci{thicklines}} + +\begin{example} +\setlength{\unitlength}{1cm} +\begin{picture}(6,4) + \linethickness{0.075mm} + \multiput(0,0)(1,0){7}% + {\line(0,1){4}} + \multiput(0,0)(0,1){5}% + {\line(1,0){6}} + \thicklines + \put(2,3){\oval(3,1.8)} + \thinlines + \put(3,2){\oval(3,1.8)} + \thicklines + \put(2,1){\oval(3,1.8)[tl]} + \put(4,1){\oval(3,1.8)[b]} + \put(4,3){\oval(3,1.8)[r]} + \put(3,1.5){\oval(1.8,0.4)} +\end{picture} +\end{example} +Команда +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)}| +\end{lscommand} +\noindent или +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)[|\emph{позиция}\verb|]}| +\end{lscommand} +\noindent выводит овал с центром в $(x,y)$, имеющий длину $w$ и высоту +$h$. Необязательный аргумент \emph{позиция} может принимать значения +\texttt{b}, \texttt{t}, \texttt{l} и \texttt{r} (вниз/вверх/влево/вправо) +и может сочетать эти значения, как на приведенном примере. + +Толщина линий может управляться одной из двух команд:\\ +\ci{linethickness}\verb|{|\emph{длина}\verb|}| +с одной стороны, и \ci{thinlines} и \ci{thicklines}~--- с другой. В то +время, как \ci{linethickness}\verb|{|\emph{длина}\verb|}| влияет +только на горизонтальные и вертикальные линии (и квадратичные кривые +Безье), \ci{thinlines} и \ci{thicklines} влияет на наклонные отрезки, +окружности и овалы. + +\subsection{Повторное использование блоков картинки} + +\begin{example} +\setlength{\unitlength}{0.5mm} +\begin{picture}(120,168) +\newsavebox{\foldera}% объявление +\savebox{\foldera} + (40,32)[bl]{% определение + \multiput(0,0)(0,28){2} + {\line(1,0){40}} + \multiput(0,0)(40,0){2} + {\line(0,1){28}} + \put(1,28){\oval(2,2)[tl]} + \put(1,29){\line(1,0){5}} + \put(9,29){\oval(6,6)[tl]} + \put(9,32){\line(1,0){8}} + \put(17,29){\oval(6,6)[tr]} + \put(20,29){\line(1,0){19}} + \put(39,28){\oval(2,2)[tr]} +} +\newsavebox{\folderb}% объявление +\savebox{\folderb} + (40,32)[l]{% определение + \put(0,14){\line(1,0){8}} + \put(8,0){\usebox{\foldera}} +} +\put(34,26){\line(0,1){102}} +\put(14,128){\usebox{\foldera}} +\multiput(34,86)(0,-37){3} + {\usebox{\folderb}} +\end{picture} +\end{example} +Блок рисунка может быть \emph{объявлен} командой +\begin{lscommand} + \ci{newsavebox}\verb|{|\emph{название}\verb|}| +\end{lscommand} +\noindent а затем \emph{определен} командой +\begin{lscommand} + \ci{savebox}\verb|{|\emph{название}\verb|}(|\emph{ширина,высота}\verb|)[|\emph{позиция}\verb|]{|\emph{содержание}\verb|}| +\end{lscommand} +\noindent и, наконец, сколько угодно раз \emph{нарисован} командой +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|)|\ci{usebox}\verb|{|\emph{название}\verb|}| +\end{lscommand} + +Необязательный аргумент \emph{позиция} определяет точку привязки +блока. В приведенном примере он установлен в значение \texttt{bl}, что +помещает точку привязки в нижний левый угол блока. Другие варианты +значения~--- \texttt{t} (вверх) и \texttt{r} (вправо). + +Аргумент \emph{название} фактически является командой \LaTeX{} (отсюда +и обратная косая черта перед ним в рассматриваемом примере). Блоки +могут быть вложенными: в этом примере внутри определения \ci{folderb} +используется \ci{foldera}. + +Команду \ci{oval} пришлось применить потому что команда \ci{line} не +работает, если длина отрезка меньше примерно 3\,мм. + +\subsection{Квадратичные кривые Безье} + +\begin{example} +\setlength{\unitlength}{1cm} +\begin{picture}(6,4) + \linethickness{0.075mm} + \multiput(0,0)(1,0){7} + {\line(0,1){4}} + \multiput(0,0)(0,1){5} + {\line(1,0){6}} + \thicklines + \put(0.5,0.5){\line(1,5){0.5}} + \put(1,3){\line(4,1){2}} + \qbezier(0.5,0.5)(1,3)(3,3.5) + \thinlines + \put(2.5,2){\line(2,-1){3}} + \put(5.5,0.5){\line(-1,5){0.5}} + \linethickness{1mm} + \qbezier(2.5,2)(5.5,0.5)(5,3) + \thinlines + \qbezier(4,2)(4,3)(3,3) + \qbezier(3,3)(2,3)(2,2) + \qbezier(2,2)(2,1)(3,1) + \qbezier(3,1)(4,1)(4,2) +\end{picture} +\end{example} +Как показывает этот пример, разбиение окружности на четыре квадратичных +кривых Безье дает неудовлетворительный результат. Требуется как +минимум восемь. Иллюстрация снова показывает влияние команды +\ci{linethickness} на горизонтальные и вертикальные линии, а команд +\ci{thinlines} и \ci{thicklines}~--- на наклонные отрезки. Она также +показывает, что обе команды влияют на квадратичные кривые Безье, и +каждая следующая команда отменяет результаты предыдущих. + +Пусть $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$ задают конечные точки, а +$m_1,\,m_2$~--- соответствующие наклоны % касательные? +квадратичной кривой Безье. Тогда промежуточная управляющая точка +$S=(x,\,y)$ задается уравнением +\begin{equation} \label{zwischenpunkt} + \left\{ + \begin{array}{rcl} + x & = & \displaystyle \frac{m_2 x_2-m_1x_1-(y_2-y_1}{m_2-m_1}, \\ + y & = & y_i+m_i(x-x_i)\qquad (i=1,\,2). + \end{array} + \right. +\end{equation} +\noindent В \graphicsinlatex\ приведена Java-программа, генирующая + необходимые команды \ci{qbezier}. + +\subsection{Цепная линия} + +\begin{example} +\setlength{\unitlength}{1.3cm} +\begin{picture}(4.3,3.6)(-2.5,-0.25) + \put(-2,0){\vector(1,0){4.4}} + \put(2.45,-.05){$x$} + \put(0,0){\vector(0,1){3.2}} + \put(0,3.35){\makebox(0,0){$y$}} + \qbezier(0.0,0.0)(1.2384,0.0) + (2.0,2.7622) + \qbezier(0.0,0.0)(-1.2384,0.0) + (-2.0,2.7622) + \linethickness{.075mm} + \multiput(-2,0)(1,0){5} + {\line(0,1){3}} + \multiput(-2,0)(0,1){4} + {\line(1,0){4}} + \linethickness{.2mm} + \put( .3,.12763){\line(1,0){.4}} + \put(.5,-.07237){\line(0,1){.4}} + \put(-.7,.12763){\line(1,0){.4}} + \put(-.5,-.07237){\line(0,1){.4}} + \put(.8,.54308){\line(1,0){.4}} + \put(1,.34308){\line(0,1){.4}} + \put(-1.2,.54308){\line(1,0){.4}} + \put(-1,.34308){\line(0,1){.4}} + \put(1.3,1.35241){\line(1,0){.4}} + \put(1.5,1.15241){\line(0,1){.4}} + \put(-1.7,1.35241){\line(1,0){.4}} + \put(-1.5,1.15241){\line(0,1){.4}} + \put(-2.5,-0.25){\circle*{0.2}} +\end{picture} +\end{example} + +На этой иллюстрации каждая симметричная половина цепной линии $y=\cosh +x -1$ аппроксимирована квадратичной кривой Безье. Правая половина +кривой заканчивается в точке \((2,\,2.7622)\), наклон в которой имеет +значение \(m=3.6269\). Вновь используя уравнение +(\ref{zwischenpunkt}), мы можем вычислить внутренние управляющие +точки. Ими оказались $(1.2384,\,0)$ и $(-1.2384,\,0)$. Крестики +отмечают точки \emph{настоящей} цепной линии. Ошибка едва заметна, +будучи меньше одного процента. + +Этот пример показывает использование необязательного аргумента команды +\verb|\begin{picture}|. Картинка определена в удобных +<<математических>> координатах, тогда как команда +\begin{lscommand} + \ci{begin}\verb|{picture}(4.3,3.6)(-2.5,-0.25)| +\end{lscommand} +\noindent присваивает ее нижнему левому углу (отмеченному черным +кружком) координаты $(-2.5,-0.25)$. + +\subsection{Скорость в специальной теории относительности} + +\begin{example} +\setlength{\unitlength}{1cm} +\begin{picture}(6,4)(-3,-2) + \put(-2.5,0){\vector(1,0){5}} + \put(2.7,-0.1){$\chi$} + \put(0,-1.5){\vector(0,1){3}} + \multiput(-2.5,1)(0.4,0){13} + {\line(1,0){0.2}} + \multiput(-2.5,-1)(0.4,0){13} + {\line(1,0){0.2}} + \put(0.2,1.4) + {$\beta=v/c=\tanh\chi$} + \qbezier(0,0)(0.8853,0.8853) + (2,0.9640) + \qbezier(0,0)(-0.8853,-0.8853) + (-2,-0.9640) + \put(-3,-2){\circle*{0.2}} +\end{picture} +\end{example} + +Управляющие точки двух кривых Безье были вычислены по формулам +(\ref{zwischenpunkt}). Положительная ветка определяется +$P_1=(0,\,0),\,m_1=1$ и $P_2=(2,\,\tanh 2),\,m_2=1/\cosh^2 +2$. Картинка вновь определяется в математически удобных координатах, а +нижний левый угол получает математические координаты $(-3,-2)$ (черный +кружок). + +\section{\texorpdfstring{\Xy}{Xy}-pic} +\secby{Alberto Manuel Brand\~ao Sim\~oes}{albie@alfarrabio.di.uminho.pt} +\pai{xy}~--- это специальный пакет для рисования диаграмм. Для его +использования просто добавьте к преамбуле документа следующую строчку: +\begin{lscommand} +\verb|\usepackage[|\emph{опции}\verb|]{xy}| +\end{lscommand} +\noindent где \emph{опции}~--- список загружаемых функций \Xy-pic. Эти +опции полезны, в первую очередь, для отладки пакета. Рекомендуется +использовать опцию \verb!all!, инструктируя \LaTeX{} загрузить все +команды \Xy{}. + +Диаграммы \Xy-pic рисуются в матричной канве, где каждый элемент +диаграммы помещается в определенную клетку матрицы: +\begin{example} +\begin{displaymath} +\xymatrix{A & B \\ + C & D } +\end{displaymath} +\end{example} +Команда \ci{xymatrix} должна использоваться в математическом +режиме. Здесь мы задали две строки и два столбца. Чтобы из этой +матрицы сделать диаграмму, добавим стрелки векторов командой \ci{ar}. +\begin{example} +\begin{displaymath} +\xymatrix{ A \ar[r] & B \ar[d] \\ + D \ar[u] & C \ar[l] } +\end{displaymath} +\end{example} +Команда рисования вектора помещается в клетку, откуда исходит +вектор. Аргументом является направление, куда показывает вектор +(\texttt{u}p, \texttt{d}own, \texttt{r}ight и \texttt{l}eft). +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[d] \ar[dr] \ar[r] & B \\ + D & C } +\end{displaymath} +\end{example} +Для рисования диагоналей укажите больше одного направления. Вы также +можете повторять знак направления для рисования б\'ольших векторов. +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[d] \ar[dr] \ar[drr] & & \\ + B & C & D } +\end{displaymath} +\end{example} + +Можно рисовать еще более интересные диаграммы, добавляя к векторам +метки. Для этого используются обычные операторы нижних и верхних +индексов. +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[r]^f \ar[d]_g & + B \ar[d]^{g'} \\ + D \ar[r]_{f'} & C } +\end{displaymath} +\end{example} + +Как показано выше, эти операторы используются как в математическом +режиме. Единственная разница заключается в том, что верхний индекс +означает <<над стрелкой вектора>>, а нижний~--- <<под стрелкой>>. +Есть еще третий оператор, вертикальная черта: \verb+|+. Он помещает +текст \emph{в} стрелку. +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[r]|f \ar[d]|g & + B \ar[d]|{g'} \\ + D \ar[r]|{f'} & C } +\end{displaymath} +\end{example} + +Чтобы нарисовать стрелку с пробелом в ней, пользуйтесь командой +\verb!\ar[...]|\hole!. В некоторых случаях важно различать несколько +видов стрелок. Этого можно добиться, помещая на них метки или меняя их +вид: +\begin{example} +\shorthandoff{"} +\begin{displaymath} +\xymatrix{ + \bullet\ar@{->}[rr] && \bullet\\ + \bullet\ar@{.<}[rr] && \bullet\\ + \bullet\ar@{~)}[rr] && \bullet\\ + \bullet\ar@{=(}[rr] && \bullet\\ + \bullet\ar@{~/}[rr] && \bullet\\ + \bullet\ar@{^{(}->}[rr] && \bullet\\ + \bullet\ar@2{->}[rr] && \bullet\\ + \bullet\ar@3{->}[rr] && \bullet\\ + \bullet\ar@{=+}[rr] && \bullet +} +\end{displaymath} +\shorthandon{"} +\end{example} + +Отметьте разницу между следующими двумя диаграммами: +\begin{example} +\begin{displaymath} +\xymatrix{ + \bullet \ar[r] + \ar@{.>}[r] & + \bullet +} +\end{displaymath} +\end{example} + +\begin{example} +\begin{displaymath} +\xymatrix{ + \bullet \ar@/^/[r] + \ar@/_/@{.>}[r] & + \bullet +} +\end{displaymath} +\end{example} + +Модификаторы между косыми чертами определяют, как будут рисоваться +кривые. \Xy-pic предлагает множество способов изменить способ +рисования кривых; подробности смотрите в документации на \Xy-pic. + +% \begin{example} +% \begin{lscommand} +% \ci{dum} +% \end{lscommand} +% \end{example} + |