Pull to refresh

Графика в LaTeX. Часть I

Reading time 3 min
Views 33K
Доброе время суток! Недавно заметил пояление на Хабре блога, посвящённого системе LaTeX. И решил поделиться теми небольшими знаниями, которые у меня есть.
Не буду повторяться и описывать что такое LaTeX, зачем он нужен и как устанавливать пакеты. Об этом уже много написано, в том числе и в этом блоге, да вы и без меня всё это знаете. Здесь я решил описать как пользоваться графическими возможностями LaTeX'а, так как недавно готовил эту тему для университета. Материала довольно много, поэтому пришлось разбить на части. В этой части я расскажу:
  • что такое псевдорисунки,
  • как пользоваться пакетом XY-pic.

Итак, по порядку.

Псевдорисунки


LaTeX, в отличии от TeX, позволяет использовать примитивные рисунки, состоящие из прямых, наклонных линий, стрелок и окружностей.
Для псевдорисунков используем окружение {picture}:
\begin{picture}(110,50)
...
\end{picture}

В скобках задаётся размер канвы — ширина, высота (напоминаю, что по умолчанию размеры измеряются в пунктах, поменять можно в преамбуле документа командой \unitlength).
Чтобы поместить что-либо на канву, используем команду \put(x,y){<объект>}. (x,y) — координаты объекта (началом координат считается левый нижний угол канвы!) В фигурных скобках — тот объект, который нужно нанести. Возможные объекты:
  • Надпись. Любой текст, например, \put(10,15){Пример текста}
  • Линия. Пример: \line(1,-2){20}. Здесь 1/-2 — угловой коэффициент отрезка, 20 — длина проекции на ось абсцисс.
  • Стрелка. Стрелка задаётся командой \vector. Параметры те же, что и у линии.
  • Окружность. Команда: \circle{<радиус>}.
  • Круг. Команда: \circle*{<радиус>}.
  • Овал — прямоугольник с закруглёнными краями: \oval(<ширина>,<высота>).
  • Кривые Безье. Пример: \qbezier(22,2)(120,20)(20,77) — в скобках координаты опорных точек.

Для повторяющихся объектов удобно пользоваться командой \multiput(x, y)(dx,dy){n}{<объект>}. Здесь (x, y) — координаты первого объекта, (dx,dy) — приращение координат, n — количество объектов. Небольшой примерчик:
\begin{picture}(100,80)
\multiput(10,70)(8,-6){8}%
{\circle*{3}}
\end{picture}

Кстати, знак процента нужен для переноса строки — окружение picture не допускает пустых строк, т.е. либо весь код должен идти одной строкой, либо в конце каждой ставится процент.

XY-pic


XY-pic — это пакет для создания графов и диаграмм. Графы строятся в виде матрицы, где каждый элемент матрицы соответствует вершине графа. Рёбра графа строятся с помощью специальных команд.

Подключение пакета XY-pic

В преамбуле документа пишем
\input xy
\xyoption{all}

либо
\usepackage[all]{xy}.


Построение графа

Используем команду \xymatrix{ ... }. Внутри окружения описывается матрица. Элементы матрицы в строке разделены символом "&". Строки разделены "\\". Пример:
\xymatrix{ U \ar@/_/[ddr]_y \ar@/^/[drr]^x
\ar@{.>}[dr]|-{(x,y)} \\
& X \times_Z Y \ar[d]^q \ar[r]_p
& X \ar[d]_f \\
& Y \ar[r]^g & Z }

Из примера видно, что стрелки строятся командой \ar. У команды много модификаций:
  • В квадратных скобках можно задать направление стрелки — \ar[hop]. Варианты u, d, l, r, ur, ul, dl, dr, drr и так далее. Пример: \ar[ur]
  • Можно задать стиль стрелки — \ar@style[hop]. Некоторые варианты: @{=>}, @{.>}, @{:>}, @{~>}, @{-->}, @{-}, @{}. Прошу не путать со смайлами))
  • Над стрелками (или под ними) можно размещать текст или другие объекты. "^" — метка сверху, "_" — снизу, "|" — разорвёт стрелку. Пример: $\xymatrix@1{ X\ar[r]^a_b & Y & Z\ar[l]^A_B }$
  • Дуги: @/^/, @/_/, @/_1pc/ и т.п.

Несколько примеров:
$\xymatrix{ {\bullet} \ar@{-}[r] & {\bullet} \ar@{.}[d] \\
{\bullet} \ar@{--}[u] & {\bullet} \ar@{->}[l] \ar@{=}[ul] }$

$\xymatrix@1{ A \ar[r]^f \ar[dr]_{f;g} & B \ar[d]^g \ar[dr]^{g;h} \\
& C \ar[r]_h & D }$

$\xymatrix{
A \ar[d]_f \ar[r]^f & B \ar[d]^g \ar[dl]|{iB} \\
B \ar[r]_g & C }$

$\xymatrix{ x \ar@(ul,dl)[]|{id} \ar@/^/[rr]|f && f(x)
\ar@/^/[ll]|{f^{-1}} } $

$\xymatrix{ 1 \ar[rr] ^-{1000000x}
\ar[dr]_(.2){2000x}|!{[d];[rr]}\hole
&& 1000000 \\
1000 \ar[r] _{2x} \ar[urr] _>>>>{x^2} & 2000 }$

Полезные книжки:
  1. С. М. Львовский: «Работа в системе LaTeX»
  2. Tobias Oetiker, Hubert Partl, Irene Hyna and Elisabeth Schlegl: «Не очень краткое введение в LaTeX2e» Перевод: Б. Тоботрас
  3. Владимир Сюткин: «Русский язык в LaTeX2e»
  4. Kristoffer H. Rose: «XY-pic User’s Guide»
  5. М. Гуссенс, Ф. Миттельбах, А. Самарин: «Путеводитель по пакету LaTeX и его расширению LaTeX2e»
  6. И. Котельников, П. Чаботаев: «LaTeX2e по-русски»

Это пока всё. Спасибо за внимание.
Оригинал статьи тут: alex.kotomanov.com/2009/01/11/graph_in_latex
P.S. В следующей части вы узнаете
  • как импортировать растровую и векторную графику,
  • как делать цветные документы
  • и, напоследок, немного о гипертексте в pdf.
Tags:
Hubs:
+31
Comments 31
Comments Comments 31

Articles