2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Руководство по XY-pic для пользователя с навыками программир
Сообщение10.02.2012, 16:30 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Руководство по XY-pic для пользователя с навыками программирования

\Xy-pic - очень мощная штука, но одновременно сложная и невнятно описанная, что препятствует её более широкому использованию. С помощью \Xy-pic можно рисовать не только коммутативные диаграммы (а вы это часто делаете?), но и почти любые рисунки, которые вы готовы набросать на доске. Примеры кода рисунков на \Xy-pic часто выглядят абракадаброй. Между тем, это идейно очень простая штука.

Этим полукреслом я попытаюсь изложить, что сам понял (и в процессе понимания), для себя и для окружающих, для свободного и непринуждённого повседневного использования \it\Xy-pic на форуме, в общем случае. Для узкозаточенных частных случаев могут быть свои приёмы. Если здесь чего-то не хватает, смотрите [RM] и [RMS].

Используемая нотация при описании синтаксиса (неформальном):
    <$%.?ляляля - терминальные символы, буквально те, которые надо писать
    <название> - нетерминальные символы, которые надо заполнять по смыслу
    { } - необязательная часть
    ... - повторение
    % пояснения до конца строки - комментарий LaTeX в примерах, игнорируется
Иногда одни и те же конструкции даны в тексте в нескольких вариантах: более простом и более универсальном. Большинство конструкций упрощены по сравнению с полными возможностями, полные варианты см. в [RM].

Основной источник:
[RM] Kristoffer H. Rose, Ross Moore, Xy-pic Reference Manual
http://ctan.uni-altai.ru/macros/generic ... yrefer.pdf
Также использовался
[RMS] Kristoffer H. Rose, Ross Moore, Xy-pic Complete Sources with TeXnical Commentary
http://mirror.macomnet.net/pub/CTAN/mac ... source.pdf
который представляет собой [RM], перемежающийся с $\TeX$-исходниками \Xy-pic.
Для тех, кому неинтересно это занудство, есть другие замечательные руководства:
Circiter, Руководство по использованию XY-pic на форуме
topic35475.html
Someone, Коммутативные диаграммы
post169421.html#p169421
Они частично базируются на документе
Kristoffer H. Rose, Xy-pic User's Guide
http://mirror.macomnet.net/pub/CTAN/mac ... yguide.pdf

Техническое замечание: из того, что перечислено в разделах II и III в [RM], на форуме доступны
Используется синтаксис LaTeX
\usepackage[matrix,arrow,curve,frame,poly,arc]{xy}

(сообщение администратора: post340588.html#p340588 ). Именно они и перечислены у меня в разделе 4. Соответственно, другие опции (описанные в разделах II и III в [RM]) на форуме недоступны. Или их можно попросить у администрации, как это сделал Circiter.

1. Стандартное обрамление.
    1.1 Задание ориентации и масштаба системы координат
2. Как подготовить рисунок к его рисованию в XY-pic
3. Как XY-pic рисует рисунок (ядро)
    3.1. Как перемещаться по рисунку
    3.2. Как создавать объекты
    3.3. Как размещать объекты
    3.4. Как создавать текстовые метки
    3.5. Как создавать линии
    3.6. Как именовать положения
    3.7. Как перемещаться по рисунку - продвинутые способы
    3.8. Как модифицировать объекты - продвинутые способы

post544572.html#p544572

4. Готовые объекты (features)
    4.1. Кружки и рамки
    4.2. Стрелки
    4.3. Правильные многоугольники (полигоны)
    4.4. Матрицы
    4.5. Окружности, эллипсы, дуги
    4.6. Кривые по многим точкам
5. Программирование для XY-pic
6. Справочные материалы
    6.1. Стрелки
    6.2. Кончики стрелок
    6.2. Рамки
7. Пример по шагам

    Пример 1: Перемещение по рисунку и "сброс" объектов. - п. 3.2.
    Пример 2: Объекты и текстовые метки. - п. 3.4.
    Пример 3: Линии. - п. 3.5.
    Пример 4: Плоский график. - п. 3.5.
    Пример 5: Стереометрический рисунок. - п. 3.5.
    Пример k: Графики функций (нарисованные приблизительно, "от руки"). - п. 4.6.


1. Стандартное обрамление.

Рисунок XY-pic вставляется на форуме следующим образом:

    [math]$$\begin{xy} /r1cm/:, <команды XY-pic> ... \end{xy}$$[/math]

Теги [math] удобно писать явно, чтобы можно было делать переносы строк - обычно XY-рисунок - текст большой. Пробелы можно не ставить, как всегда. Пустых строк оставлять нельзя. Ставить $$ или $ можно по желанию: в одном случае рисунок будет выделен в отдельный абзац и расположен по центру, а в другом - включён в строку, как и обычная формула. Можно ставить комментарии LaTeX: от символа % до конца строки.

1.1 Задание ориентации и масштаба системы координат
Кусочек /r1cm/:, - это, на самом деле, первая команда XY-pic, её удобно ставить, чтобы задать масштаб, в котором вы будете рисовать рисунок. Её формат:

    / <буква направления> <величина длины для LaTeX> /:,

По сути, она задаёт ориентацию системы координат на холсте, и длину, которая будет дальше считаться за 1. По умолчанию устанавливается правая система координат, с масштабом 1 = 1 мм.

<Буква направления> бывает r, u, l, d, и указывает направление оси $x$: вправо, вверх, влево, вниз. Ось $y$ откладывается от $x$ перпендикулярно против часовой стрелки (как на обычных математических графиках) и имеет тот же масштаб. Вот как будет ориентирован единичный вектор по $x$ для разных <букв направлений> (надпись расположена в $(0.5,0.5)$):
$$\raisebox{-.5cm}{\begin{xy} /r1cm/:,
(1,0)**@{-},*@{>},?(0)*@^{|},
(0.5,0.6)*{\text{r1cm}},
\end{xy}}\qquad\qquad\raisebox{.5cm}{\begin{xy} /l1cm/:,
(1,0)**@{-},*@{>},?(0)*@^{|},
(0.5,0.6)*{\text{l1cm}},
\end{xy}}\qquad\qquad\raisebox{-.5cm}{\begin{xy} /u1cm/:,
(1,0)**@{-},*@{>},?(0)*@^{|},
(0.5,0.6)*{\text{u1cm}},
\end{xy}}\qquad\qquad\raisebox{.5cm}{\begin{xy} /d1cm/:,
(1,0)**@{-},*@{>},?(0)*@^{|},
(0.5,0.6)*{\text{d1cm}},
\end{xy}}$$

<Величина длины для LaTeX> состоит из числа (с десятичной точкой или без неё) и единицы длины LaTeX. Напомню, в LaTeX есть такие единицы длины:
    pt, dd, bp (point, didot point, big point) - типографский пункт, около 0,35 мм
    pc, cc (pica, cicero) - 12 пунктов, примерно высота шрифта
    in - дюйм, примерно 6 пика
    mm - миллиметр
    cm - сантиметр
    em - ширина буквы M текущего шрифта
    ex - высота буквы x текущего шрифта
    mu - 1/18 ширины буквы M текущего математического шрифта, 1/3 пробела \,
Разумеется, это всё будет нарисовано в виде картинки на форуме, и изображено на мониторе, так что 1cm вряд ли точно окажется 1 см.


2. Как подготовить рисунок к его рисованию в XY-pic

Набросайте эскиз на бумаге (включая текстовые метки). Прикиньте координаты объектов, последовательность их рисования, возможные имена объектов, разметьте эскиз соответственно. Если используются кривые линии - прикиньте расположение их управляющих точек. Будьте готовы к отладке рисунка, или к постепенному его собиранию из более простых элементов.


3. Как XY-pic рисует рисунок (ядро)

XY-pic - это целый язык внутри языка, имеющий рекурсивную грамматику. Рисунок - это последовательность <команд XY-pic> (в [RM] - <pos>, fig. 1 p. 8), каждая из которых может иметь сложный синтаксис, и в частности, содержать другие последовательности <команд XY-pic>. Команды обозначаются символами, что придаёт XY-pic компактность и трудночитаемость. Фигурные скобки { } нельзя свободно использовать для группировки, как в LaTeX.

Основа логики рисования в XY-pic - пошаговое управление положением рисовательного инструмента, типа "черепашки". Её можно перемещать, рисовать в текущем положении простые графические элементы (объекты), запоминать её положения под разными именами, и возвращать в именованное положение. Даже если не работать с именами, для черепашки всегда доступны её текущее положение current, c и предыдущее previous, p. Два положения надо помнить, чтобы проводить стрелочки от одной точки к другой (и вообще разнообразные линии). Также задана аффинная система координат base, в которой интерпретируются координаты точек (см. 3.1). Изменяя эту систему координат, можно совершать аффинные преобразования над целыми рисунками.

Проще всего пользоваться такими способами управления "черепашкой" current:

    <команда XY-pic> , <команда XY-pic> , ... <команда XY-pic> { , }

    <команда XY-pic> ; <команда XY-pic> ; ... <команда XY-pic> { ; }

    { <команда XY-pic> } , { <команда XY-pic> } , ... { <команда XY-pic> } { , }

Здесь используются команды , и ;, которые каждый раз позволяют "черепашке" двигаться заново из начала координат. Их отличие в том, что , меняет только текущее положение черепашки current, а ; каждый раз ещё сохраняет предыдущее положение в previous (точнее, обменивает значения current и previous). Фигурные скобки { } позволяют группировать команды, так что группа не влияет на предыдущее значение previous. Полный допустимый синтаксис см. в [RM].

<Команда XY-pic> в простейшем случае имеет вид:

    { <задания координат> ... } { <рисование объектов> ... }

"Черепашка" current устанавливается в заданное положение, и в нём рисуется объект. Несколько <заданий координат> позволяет откладывать нужную точку от какой-то ещё. В одном положении можно нарисовать несколько объектов.


3.1. Как перемещаться по рисунку

<Задание координат> (в [RM] - <coord>, fig. 1 p. 8) имеет разные формы, например:

    ( <координата по x> , <координата по y> ) - задаёт точку по её координатам (в системе координат base)
    a( <угол в градусах (целый)> ) - откладывает единичный вектор в заданном направлении (то есть эквивалентно ( $\cos\alpha$ , $\sin\alpha$ ))
    "<имя точки>" - переходит в точку, которой ранее было присвоено имя (см. 3.6 и подпункт "важно")
    p - переходит в точку previous
    c - переходит в точку current, то есть остаётся на месте. Также вместо c можно ничего не писать.

Можно комбинировать эти формы, последовательно смещаясь на соответствующие векторы:

    <задание координат> + <задание координат> ...
    <задание координат> - <задание координат> ...

Можно изменить систему координат base, поставив в цепочку <заданий координат> такую конструкцию:

    { <положение начала координат> ; } <единичный вектор по x> : { <единичный вектор по y> :: }

Если не задать <положение начала координат>, будет использовано текущее значение previous. Если не задать <единичный вектор по y>, он будет отложен от <единичного вектора по x> перпендикулярно против часовой стрелки.

3.2. Как создавать объекты

По каким-то причинам, синтаксически объекты в XY-pic бывают двух типов, в [RM] обозначенных как <object> и <decor>ation. <Object> - более простые и базовые, <decor> - сложные и составные. <Object> ([RM] 4 p. 11 и fig. 3 p. 12) можно нарисовать так: установив "черепашку" current в нужное положение, в этом положении можно "сбросить" объект командой вида
    * <объект>
Конкретные объекты бывают такие:

    * { <произвольная формула LaTeX> }
    * <библиотечный объект>

В качестве формул удобны одиночные значки, которыми можно отмечать точки: *{\bullet}, *{+}, *{\times}, *{\circ}, *{\square} и т. п. См. руководство по формулам. Также можно использовать прямо буквы и цифры. С помощью этого же типа объектов можно рисовать подписи к точкам и другим объектам, как будет показано в 3.4.

Библиотечные объекты здесь - кружки и рамки, они описаны в 4.1 и имеют базовый вид *\cir{},*\frm{ <мнемоника рамки> }. Их удобно применять, чтобы рисовать буквы в кружках, и т. п. Их особенность состоит в том, что они комбинируются с другими, ранее нарисованными объектами.

<Decor> можно нарисовать так: установив "черепашку" current в нужное положение, написать команду объекта - что-то вроде { <команда объекта> <дополнительные данные> ... }. Если объект изображается в самом конце рисунка XY-pic, или после него идут только другие такие объекты (но не перемещения "черепашки" current), то фигурные скобки не обязательны. Конкретные объекты бывают разнообразные: \ar, \xypolygon, \xymatrix, \ellipse - они описаны в разделе 4. Есть и другие объекты, более экзотические, с ними можно познакомиться в [RM], хотя многие из них на форуме недоступны.

Некоторые объекты можно "рисовать" невидимыми, так чтобы они только задавали расположение на холсте некоторых точек, и потом ссылаться на эти точки для дальнейшего рисования.

    Замечание для чтения [RM]: <Decor> можно написать без фигурных скобок, но тогда этой командой последовательность <команд XY-pic> будет закончена. Можно будет только поставить несколько <decor> подряд. Чтобы этого не случилось, <decor> и следует брать в фигурные скобки { }, поскольку тогда последовательность <команд XY-pic> заканчивается только внутри фигурных скобок, но не снаружи. Также, существует возможность возобновить последовательность <команд XY-pic> после "переключения в режим <decor>": специальная <decor>-команда \POS. Эти возможности часто используются в примерах в [RM], но здесь я описываю простейший способ использовать XY-pic.

Пример 1: Перемещение по рисунку и "сброс" объектов.

$$\begin{xy} /r1cm/:,
(0,0.75)*{A}, % рисование буквы A в математическом стиле
(1,1.5)*{\bullet}, % рисование жирной точки, и т. д.
(2,0.5)*{+}, (3,1)*{\times}, (4,0)*{*},
(5,0.75)*{\sqrt{\alpha}}, % можно рисовать и более сложные формулы
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0.75)*{A}, % рисование буквы A в математическом стиле
(1,1.5)*{\bullet}, % рисование жирной точки, и т. д.
(2,0.5)*{+}, (3,1)*{\times}, (4,0)*{*},
(5,0.75)*{\sqrt{\alpha}}, % можно рисовать и более сложные формулы
\end{xy}$$


Здесь вы видите последовательность команд вида
    <задание координат> <рисование объекта> , ...
где объект рисуется как
    * { <формула LaTeX> }
Скучновато, но что поделаешь. Дальше будет больше возможностей.


3.3. Как размещать объекты

Объект <object>, с точки зрения XY-pic, имеет форму и размеры, которые по умолчанию соответствуют тому, как объект выглядит, но могут быть скорректированы. Где-то внутри формы объекта находится его точка привязки, по умолчанию в центре. Когда объект "сбрасывается", он устанавливается своей точкой привязки в положение current. Но это можно изменить, как и сдвинуть положение current как-то по отношению к границам объекта, для дальнейшего использования. (Полный синтаксис - [RM] fig.3 p. 12, <modifier>.)

Чтобы сместить объект перед "сбросом", используется конструкция

    * { ! <буква угла> { ( <множитель> ) } } <объект>

<Буква угла> бывает L, R, U, D, их двухбуквенные сочетания или C. После смещения, точка привязки объекта оказывается в соответствующем углу (или смещается пропорционально заданному <множителю>):
$$\begin{array}{ccc}
\mathtt{UL=LU} & \mathtt{U} & \mathtt{UR=RU} \\
\mathtt{L} & \mathtt{C} & \mathtt{R} \\
\mathtt{DL=LD} & \mathtt{D} & \mathtt{DR=RD}
\end{array}$$

Можно изменить размеры объекта, как их воспринимает XY-pic, перед тем, как смещать его (также это повлияет на линии, которые проводятся до границы объекта). Это делается так:

    * { <изменения размера> ... } ! <буква угла> <объект>
где <изменение размера>:
    + { < <величина длины для LaTeX> > } - раздвинуть границы, по умолчанию на 3pt
    - { < <величина длины для LaTeX> > } - сжать границы, умолчание такое же
    = { < <величина длины для LaTeX> > } - установить заданный размер
    = 0 - установить нулевой размер

Заметьте, изменений размера может быть несколько. Вот как выглядят увеличения на один плюсик, два плюсика, три плюсика:
$$\begin{xy} /r1cm/:,
(0,0)*{\bullet}*{A}*\frm{-},
(1,0)*{\bullet}*!D{A}*\frm{-},
(2,0)*{\bullet}*!UL{A}*\frm{-},
(3,0)*{\bullet}*+!D{A}*\frm{-}!C*-\frm{-},
(4,0)*{\bullet}*+!UL{A}*\frm{-}!C*-\frm{-},
(5,0)*{\bullet}*++!D{A}*\frm{-}!C*--\frm{-},
(6,0)*{\bullet}*++!UL{A}*\frm{-}!C*--\frm{-},
(8,0)*{\bullet}*+++!D{A}*\frm{-}!C*---\frm{-},
(9,0)*{\bullet}*+++!UL{A}*\frm{-}!C*---\frm{-},
\end{xy}$$


3.4. Как создавать текстовые метки

Всё необходимое уже есть в 3, 3.2 и 3.3, так что осталось только собрать всё вместе (привожу здесь, чтобы пользоваться как шаблоном):

    { <задания координат> ... } { * { <формула LaTeX для точки> } } * { <изменения размера метки> ... } ! <буква угла метки> { <формула LaTeX для метки> } ...

Пример 2: Объекты и текстовые метки.

$$\begin{xy} /r1cm/:,
(1,1.5) *{\bullet} *+!UR{A}, % сначала ставится точка, а потом, со смещением - надпись A
(2,0.5)*{+}*++!D{B}, (3,1)*{\times}*+!UL{q_{k\ne m}}, (4,0)*{*}*++!L{\gets\text{ безумие какое-то}}, (5,1)*{\bullet}*++!D{\downarrow}*++++++!D{\text{еще одно}},
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(1,1.5) *{\bullet} *+!UR{A}, % сначала ставится точка, а потом, со смещением - надпись A
(2,0.5)*{+}*++!D{B}, (3,1)*{\times}*+!UL{q_{k\ne m}}, (4,0)*{*}*++!L{\gets\text{ безумие какое-то}}, (5,1)*{\bullet}*++!D{\downarrow}*++++++!D{\text{еще одно}},
\end{xy}$$


Здесь вы видите отступы, подобранные так, чтобы они красиво выглядели. И в конце - пример, когда к точке добавляются две метки.


3.5. Как создавать линии

Здесь описано рисование простых прямых линий и стрелок из одной точки в другую. Изогнутые и другие сложные стрелки см. в 4.2, разнообразные кривые линии - в 4.5 и 4.6.

Для рисования линий потребуются две новые концепции: рисование соединения между двумя точками, current и previous, и рисование специального вида объектов, <направленного объекта>, который поворачивается в зависимости от заданного направления (по умолчанию подразумевается направление вектора из previous в current). Эти концепции вместе дают возможность рисовать линии. <Направленные объекты> сами по себе дают возможность рисовать стрелочки на кончиках линий.

Соединение между точками current и previous использует специальную форму "сброса" объекта
    ** <объект>
При этом рисуется не один объект в точке current, а много объектов вдоль прямой линии между current и previous:
$$\begin{xy} /r1cm/:,
(0,0)*{\bullet};(1.5,1)*{\bullet}**{A},
\end{xy}$$

<Направленный объект> (в [RM] - <dir>, 6.1 p. 16 и fig. 5 p. 17) - это ещё один библиотечный объект, кроме упомянутых в 3.2. Он меняет свой вид в зависимости от текущего направления, так что позволяет рисовать сегменты линий и стрелочки на концах линий. Текущее направление при этом выставляется по вектору из previous в current. Этот библиотечный объект можно создавать по полному имени \dir или по сокращённому синониму @ (это одно и то же, очень неразборчиво сформулировано в [RM] fig. 3 p. 12, строка 4). Дальше я буду упоминать только сокращённую форму @. Формат:

    @<вариант направленного объекта>{<мнемоника направленного объекта>}

Итак, для рисования линии (предварительно установив previous и current) надо написать:

    ** @<вариант направленного объекта>{<мнемоника направленного объекта>}

Если previous и current не установлены, можно их установить командой ; (с отсутствующей командой рисования в первой точке), так что получится:

    <задание координат previous> ; <задание координат current> ** @<вариант направленного объекта>{<мнемоника направленного объекта>}

Для рисования кончика стрелочки в положении current надо написать:

    * @<вариант направленного объекта>{<мнемоника направленного объекта>}

Для рисования начала стрелочки см. 3.7, 3.8, или можно использовать шаблон:

    ?(0) * __ @<вариант направленного объекта>{<мнемоника направленного объекта>}

<Вариант направленного объекта> может быть пустым, или одним из символов ^, _, 2, 3. Соответственно, рисуются обычная линия / стрелочка, верхняя половинка, нижняя половинка, двойная или тройная линия.

<Мнемоника направленного объекта> указывает, что именно будет нарисовано. <Мнемоники направленного объекта> для рисования линий и стрелочек разные, хотя {} всегда рисует пустой объект. Для линий: {.}, {-}, {~}, {--}, {~~} - дают линию из точек, сплошную, волнистую, и штриховые варианты сплошной и волнистой (для удобства определены ещё {:}, {=}, {==}, дающие двойные варианты {.}, {-}, {--}). Для стрелочек: {>}, {<}, {|}, {+}, {x} - рисуют то, что ожидается, {*} и {o} - сплошной и пустой кружочек. Более полные списки см. 6.1.

Пример 3: Линии.

$$\begin{xy} /r1cm/:,
(1,1.5) *{\bullet} *+!UR{A}; % размещаем точку и надпись, как в примере 2
(2,0.5) **@{.} *{+} *++!U{B}; % переходим в новую точку, проводим линию от прежней, и рисуем остальное
(3,1) **@{--} *{\times} *+!DR{q_{k=m}}; (4,0) **@{=} *{*};
(5,1) *{\times} *+!UL{q_{k\ne m}}; (6,0) **@{=} *{*}; % эта строчка почти повторяет предыдущую
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(1,1.5) *{\bullet} *+!UR{A}; % размещаем точку и надпись, как в примере 2
(2,0.5) **@{.} *{+} *++!U{B}; % переходим в новую точку, проводим линию от прежней, и рисуем остальное
(3,1) **@{--} *{\times} *+!DR{q_{k=m}}; (4,0) **@{=} *{*};
(5,1) *{\times} *+!UL{q_{k\ne m}}; (6,0) **@{=} *{*}; % эта строчка почти повторяет предыдущую
\end{xy}$$


Наконец-то мы можем рисовать почти всё, что захотим. Было бы терпение. Обратите внимание, что линия не проходит по области, занятой размерами тех объектов, которые были нарисованы в положениях previous и current (только того объекта в current, который уже нарисован, а не того, который будет нарисован позже). Это видно на иллюстрации:
$$\begin{xy} /r1cm/:,
(0,1)*{\times}*+!UL{q_{k\ne m}}; (1,0)*{*}**@{=}; (2,1)*{\times}*+!UL{q_{k\ne m}}*\frm{-}; (3,0)*{*}*\frm{-}**@{=};
\end{xy}$$
Если это мешает, можно установить размер объекта в нуль:

    * { <изменения размера> ... } ! <буква угла> =0 <объект>

Тогда получится:
$$\begin{xy} /r1cm/:,
(0,1)*{\times}*+!UL=0{q_{k\ne m}}; (1,0)*=0{*}**@{=}; (2,1)*{\times}*+!UL=0{q_{k\ne m}}*\frm{-}; (3,0)*=0{*}*\frm{-}**@{=};
\end{xy}$$
Также можно изменить порядок рисования. Других объектов, кроме previous и current, линия не знает и не учитывает, может их перекрывать (бороться с этим можно порядком рисования и использованием рамок, см. 4.1).

Пример 4: Плоский график.

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,2.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(1.5,0)*++!U{x_0}; % встаём в начальную точку на оси x
(1.5,1)*{\bullet}*+!DR{y_0}**@{--}; % вертикальная линия вверх
(2.5,1.5)*{\bullet}*+!DL{y_1}**@{-}; % наклонная линия
(2.5,0)*++!U{x_1}**@{--}; % вертикальная линия вниз до оси x
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,2.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(1.5,0)*++!U{x_0}; % встаём в начальную точку на оси x
(1.5,1)*{\bullet}*+!DR{y_0}**@{--}; % вертикальная линия вверх
(2.5,1.5)*{\bullet}*+!DL{y_1}**@{-}; % наклонная линия
(2.5,0)*++!U{x_1}**@{--}; % вертикальная линия вниз до оси x
\end{xy}$$


Пример 5: Стереометрический рисунок.

$$\begin{xy} /r1cm/:,
(0,0);p+(2,-1)**@{-};p+(3.5,1.5)**@{-};p-(2,-1)**@{-};p-(3.5,1.5)**@{-}; % рисование плоскости
(1.5,0.25);p+(1,-0.5)**@{-}*@{>}*+!L{\mathbf{a}}; % рисование вектора a
(1.5,0.25);p+(2,0)**@{-}*@{>}*+!L{\mathbf{b}}; % рисование вектора b
(1.5,0.25);p+(0,2)**@{-}*@{>}*+!DR{[\mathbf{ab}]}; % рисование вектора [ab]
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0);p+(2,-1)**@{-};p+(3.5,1.5)**@{-};p-(2,-1)**@{-};p-(3.5,1.5)**@{-}; % рисование плоскости
(1.5,0.25);p+(1,-0.5)**@{-}*@{>}*+!L{\mathbf{a}}; % рисование вектора a
(1.5,0.25);p+(2,0)**@{-}*@{>}*+!L{\mathbf{b}}; % рисование вектора b
(1.5,0.25);p+(0,2)**@{-}*@{>}*+!DR{[\mathbf{ab}]}; % рисование вектора [ab]
\end{xy}$$


Здесь конструкции вида:
    p + <задание координат>
в сочетании с командой ; используются для перехода от точки к точке на относительные смещения. См. 3.1.

(Переместить раздел в другое место)
Маленькие хитрости:

Чтобы нарисовать значок перпендикулярности на планиметрическом чертеже... (Не написано.)

На стереометрическом чертеже... (Не написано.)

Дужки углов на планиметрическом чертеже... (Не написано.)

Дужки углов на стереометрическом чертеже... (Не написано.)


3.6. Как именовать положения

Важно! Если в рисунке XY-pic используются имена, то стандартное обрамление рисунка XY-pic на форуме меняется следующим образом:
    [math]$$\shorthandoff{"}\begin{xy} /r1cm/:, <команды XY-pic> ... \end{xy}\shorthandon{"}$$[/math]
где команда /r1cm/:, может быть модифицирована, как описано в 1. Также, в режиме предпросмотра после картинки будет выдан лишний мусор, хотя сама картинка будет отображена нормально. Не нужно его пугаться. При окончательной отправке сообщения на форум он исчезнет. И наконец, тег alt для такой картинки не будет сформирован правильно.

Любую точку можно обозначить именем, и позже возвращаться в него, используя это имя. Для задания нового имени в <команде XY-pic>, как она описана в 3, добавляется такая конструкция:

    { <задания координат> ... } = "<имя точки>" { <рисование объектов> ... }
    { <задания координат> ... } { <рисование объектов> ... } = "<имя точки>"

При этом имя присваивается тому положению current, которое было установлено в момент задания имени. Если имя присваивается после рисования объекта, оно запомнит также форму и размеры этого объекта. Имена можно переопределять, тогда будет использоваться последнее определённое значение. Чтобы перейти в точку с именем, используется форма <задания координат>, уже упоминавшаяся в 3.1:

    "<имя точки>" - переходит в точку, которой ранее было присвоено имя

Переход в точку, имя которой ранее не было определено - ошибка.


3.7. Как перемещаться по рисунку - продвинутые способы

(Не написано.)
[RM] 3n p. 10: Формы <задания координат> вида + <буква угла> { ( <множитель> ) } и ! <буква угла> { ( <множитель> ) }
[RM] 3h p. 9: Формы <задания координат> вида ?( <фактор alpha> ), ? < ..., ? > ..., и ? ... / <расстояние LaTeX> /
Необходимость соединения для ? ..., пустое соединение **{}
Формы <задания координат> вида ? ... для кривых - ссылка на 4.6
[RM] 3j p. 9: Форма <задания координат> вида ?!{ <начало> ; <конец> } для поиска точки пересечения двух прямых

3.8. Как модифицировать объекты - продвинутые способы

(Не написано.)
[RM] 4j p. 13: Изменение формы объекта * [ <мнемоника формы> ] <объект>
[RM] 4f p. 13: Изменение точки привязки объекта * ! <буква угла> { ( <множитель> ) } <объект> и * ! <произвольный вектор> <объект>. Отличие от * <объект> ! <буква угла> { ( <множитель> ) }, описанной в 3.7.
[RM] 4l 4m p. 14: Изменение направления для объекта: установка <буквой направления>, va( <углом в градусах> ), модификация ^, _, :a( <углом в градусах> ). Зачем это нужно: использование в стрелках 4.2 [RM] 24p p. 43

Продолжение post544572.html#p544572

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение14.02.2012, 17:41 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Дописан подраздел 3.5. Гордиться пока нечем, но уже можно рисовать достаточно полезные и реалистичные примеры.

Я был бы не прочь услышать замечания о выбранной форме подачи, насколько она воспринимается.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение15.02.2012, 11:38 


29/09/06
4552
Я в своё время не смог разобраться в этом синтаксисе (по одному из руководств, Вами в начале упомянутых).
И Вашу тему заложил себе на изучение (в отпуске; но надо будет пораньше постараться). Пока образ жизни не даёт возможности сесть и старательно почитать. Мне особо интересно на предмет моих типичных картинок с плоскими кривыми. Типа этих монстров, что я рисовал с помощью {picture} environment (посмотрите код чисто мышкой).

Сейчас при беглом просмотре удивило обилие каких-то левых символов, которые в одном браузере отображаются нераспознанными прямоугольниками, в другом --- каким-то символом (типа "два байта"):
Munin в сообщении #537061 писал(а):
Здесь конструкции вида:
p +задание координат


Так что пока я ограничусь только спасибой.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение15.02.2012, 12:08 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Алексей К. в сообщении #538849 писал(а):
Сейчас при беглом просмотре удивило обилие каких-то левых символов

Понял. Я пытался красивость навести :-) Щас исправлю обратно.

-- 15.02.2012 13:17:56 --

Проверьте, сейчас читается?

-- 15.02.2012 13:46:04 --

Алексей К. в сообщении #538849 писал(а):
Мне особо интересно на предмет моих типичных картинок с плоскими кривыми. Типа этих монстров, что я рисовал с помощью {picture} environment (посмотрите код чисто мышкой).

Здесь два ответа:
1. Да, можно рисовать кривые Безье и кубические сплайны, задавая координаты управляющих точек (это опция curve, включённая сейчас на форуме, запланирована у меня в пункте 4.6).
2. Нет, нельзя рисовать линии цветные и разной толщины. Для них нужно включить опции color и line. Можно ли это сделать, или к этому есть препятствия - не знаю, надо обращаться к админу. Раньше он ответил на аналогичную просьбу Circiter довольно покладисто: topic35288.html . Думаю, стоит попробовать: чем больше будет включено таких возможностей у XY-pic, тем больше у него будет и пользователей.

По поводу кривых Безье и сплайнов, я позабыл всю теорию, поэтому смущаюсь приступать к описанию этого раздела. Если бы вы помогли, было бы проще. Используется один примитив, который в зависимости от числа указанных управляющих точек (дополнительно к концам линии) воплощается как (даже точных терминов по-русски не знаю):
    0 - прямая линия
    1 - квадратичный сплайн Безье
    2 - кубический сплайн Безье
    3 и больше - кубический B-сплайн
Кроме того, есть другой примитив, который позволяет построить квадратичный сплайн Безье по многим точкам. И я не уверен, что он сейчас включён, надо проверить.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение15.02.2012, 18:43 


29/09/06
4552
Да, плохие символы исчезли.
Munin в сообщении #538866 писал(а):
По поводу кривых Безье и сплайнов, я позабыл всю теорию, поэтому смущаюсь приступать к описанию этого раздела. Если бы вы помогли, было бы проще
Помощь обещать не рискну, ибо пока, по предыдущему экспириенсу, не уверен, что с этой грамотой разберусь... Ваш текст провоцирует новую попытку, и если вдруг она удастся, то... Типа когда я в чём-то могу помочь, меня и просить не надо.

Не должно быть особой теории, и вполне можно считать, что она всем известна. Что касается тех моих картинок, как раз там нет ни сплайнов, ни Безье. То есть (квадратичные) Безье там появились, но лишь ради аппроксимации окружностей и даже для рисования наклонных прямых: у стандартной {picture}, как известно, диаметр окружности ограничен, часть окружности нарисовать нельзя, наклоны прямых ограничены (типа 0:1, 1:2, 1:3,..., 3:4). А \qbezier по трём коллинеарным точкам любую прямую рисует. Полагаю, XY-pic с любой окружностью-дугой легко справится спец. примитивами.
Другие кривые я там полилиниями рисовал, тоже без сплайнов.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение15.02.2012, 21:34 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ну, сравните:

$\begin{xy} /r1pt/:,
(0,0);(400,0)**@{-},
(400,0);(400,200)**@{-},
(400,200);(0,200)**@{-},
(0,200);(0,0)**@{-},
(130,0);(130,200)**@{-}*@{>},(134,193)*!DL{y},
(0,100);(400,100)**@{-}*@{>},(393,91)*!DL{x},
(30,86)*!DL{A},(224,87)*!DL{B},
,
(394,21) ;(381,20) **\crv{(388,20) },
(381,20) ;(369,21) **\crv{(375,21) },
(369,21) ;(356,23) **\crv{(362,22) },
(356,23) ;(344,27) **\crv{(350,25) },
(344,27) ;(332,31) **\crv{(338,29) },
(332,31) ;(320,37) **\crv{(326,34) },
(320,37) ;(309,43) **\crv{(315,40) },
(309,43) ;(298,49) **\crv{(303,46) },
(298,49) ;(287,56) **\crv{(293,53) },
(287,56) ;(277,64) **\crv{(282,60) },
(277,64) ;(267,71) **\crv{(272,68) },
(267,71) ;(257,79) **\crv{(262,75) },
(257,79) ;(247,87) **\crv{(252,83) },
(247,87) ;(237,95) **\crv{(242,91) },
(237,95) ;(227,103)**\crv{(232,99) },
(227,103);(217,111)**\crv{(222,107)},
(217,111);(206,118)**\crv{(211,114)},
(206,118);(196,125)**\crv{(201,121)},
(196,125);(185,131)**\crv{(190,128)},
(185,131);(173,137)**\crv{(179,134)},
(173,137);(161,142)**\crv{(167,140)},
(161,142);(149,146)**\crv{(155,144)},
(149,146);(137,149)**\crv{(143,148)},
(137,149);(124,151)**\crv{(131,150)},
(124,151);(112,152)**\crv{(118,151)},
(112,152);(99,151) **\crv{(105,151)},
(99,151) ;(86,148) **\crv{(93,149) },
(86,148) ;(74,144) **\crv{(80,146) },
(74,144) ;(63,138) **\crv{(69,141) },
(63,138) ;(53,131) **\crv{(58,135) },
(53,131) ;(43,122) **\crv{(48,127) },
(43,122) ;(36,112) **\crv{(40,117) },
(36,112) ;(30,100) **\crv{(33,106) },
(30,100) ;(27,88)  **\crv{(29,94)  },
(27,88)  ;(26,75)  **\crv{(27,82)  },
(26,75)  ;(28,63)  **\crv{(27,69)  },
(28,63)  ;(33,51)  **\crv{(30,57)  },
(33,51)  ;(40,40)  **\crv{(36,46)  },
(40,40)  ;(49,32)  **\crv{(44,36)  },
(49,32)  ;(60,25)  **\crv{(54,28)  },
(60,25)  ;(72,22)  **\crv{(66,24)  },
(72,22)  ;(85,22)  **\crv{(79,22)  },
(85,22)  ;(97,26)  **\crv{(91,24)  },
(97,26)  ;(108,32) **\crv{(103,29) },
,
(53,132)*{\bullet},
(88,149)*{\bullet},
(127,151)*{\bullet},
(164,141)*{\bullet},
(189,129)*{\bullet},
(30,100)*{\bullet},
(230,100)*{\bullet},
,
(30,100) ;(61,139) **\crv{(42,123) },
(61,139) ;(106,160)**\crv{(81,154) },
(106,160);(155,160)**\crv{(130,166)},
(155,160);(199,139)**\crv{(180,154)},
(199,139);(230,100)**\crv{(219,123)},
,
(30,100) ;(73,142) **\crv{(46,127) },
(73,142) ;(130,157)**\crv{(100,157)},
(130,157);(188,142)**\crv{(161,157)},
(188,142);(230,100)**\crv{(214,127)},
,
(30,100) ;(74,138) **\crv{(48,124) },
(74,138) ;(130,151)**\crv{(101,151)},
(130,151);(186,138)**\crv{(160,151)},
(186,138);(230,100)**\crv{(213,124)},
,
(30,100) ;(76,134) **\crv{(50,122) },
(76,134) ;(130,145)**\crv{(102,145)},
(130,145);(185,134)**\crv{(159,145)},
(185,134);(230,100)**\crv{(211,122)},
,
(30,100) ;(94,137) **\crv{(57,127) },
(94,137) ;(167,137)**\crv{(130,146)},
(167,137);(230,100)**\crv{(203,127)},
,
(84,135)*!DL{P},
,
(30,100) ;(59,143) **\crv{(40,125) },
(59,143) ;(105,167)**\crv{(79,160) },
(105,167);(156,167)**\crv{(130,173)},
(156,167);(201,143)**\crv{(182,160)},
(201,143);(230,100)**\crv{(221,125)},
,
(30,100) ;(56,170) **@{-}*@{>},
(57,179)*!DL{\alpha},
,
(30,100) ;(95,131) **\crv{(59,123) },
(95,131) ;(166,131)**\crv{(130,139)},
(166,131);(230,100)**\crv{(201,123)},
,
,
(230,100);(305,43) **@{-}*@{>},
(309,24)*!DL{\beta},
,
\end{xy}$

\begin{picture}(400,200)
\linethickness{1.1pt}\qbezier(0,0)(200,0)(400,0)
\qbezier(400,0)(400,100)(400,200)
\qbezier(400,200)(200,200)(0,200)
\qbezier(0,200)(0,100)(0,0)

\linethickness{0.6pt}
\qbezier(130,196)(129,196)(129,196)
\qbezier(129,196)(129,198)(130,200)
\qbezier(130,200)(131,198)(132,196)
\qbezier(132,196)(131,196)(130,197)
\put(134,193){$y$}
\linethickness{0.6pt}\qbezier(397,100)(396,101)(395,102)
\qbezier(395,102)(398,101)(400,100)
\qbezier(400,100)(398,100)(395,99)
\qbezier(395,99)(396,100)(397,100)
\put(393,91){$x$}
\linethickness{0.6pt}\qbezier(130,0)(130,99)(130,197)
\qbezier(0,100)(199,100)(397,100)

\linethickness{0.4pt}\qbezier(0,0)(200,0)(400,0)
\qbezier(400,0)(400,100)(400,200)
\qbezier(400,200)(200,200)(0,200)
\qbezier(0,200)(0,100)(0,0)
\put(30,86){$A$}\put(224,87){$B$}\color{red}

\linethickness{1.1pt}\qbezier(394,21)(388,20)(381,20)
\qbezier(381,20)(375,21)(369,21)
\qbezier(369,21)(362,22)(356,23)
\qbezier(356,23)(350,25)(344,27)
\qbezier(344,27)(338,29)(332,31)
\qbezier(332,31)(326,34)(320,37)
\qbezier(320,37)(315,40)(309,43)
\qbezier(309,43)(303,46)(298,49)
\qbezier(298,49)(293,53)(287,56)
\qbezier(287,56)(282,60)(277,64)
\qbezier(277,64)(272,68)(267,71)
\qbezier(267,71)(262,75)(257,79)
\qbezier(257,79)(252,83)(247,87)
\qbezier(247,87)(242,91)(237,95)
\qbezier(237,95)(232,99)(227,103)
\qbezier(227,103)(222,107)(217,111)
\qbezier(217,111)(211,114)(206,118)
\qbezier(206,118)(201,121)(196,125)
\qbezier(196,125)(190,128)(185,131)
\qbezier(185,131)(179,134)(173,137)
\qbezier(173,137)(167,140)(161,142)
\qbezier(161,142)(155,144)(149,146)
\qbezier(149,146)(143,148)(137,149)
\qbezier(137,149)(131,150)(124,151)
\qbezier(124,151)(118,151)(112,152)
\qbezier(112,152)(105,151)(99,151)
\qbezier(99,151)(93,149)(86,148)
\qbezier(86,148)(80,146)(74,144)
\qbezier(74,144)(69,141)(63,138)
\qbezier(63,138)(58,135)(53,131)
\qbezier(53,131)(48,127)(43,122)
\qbezier(43,122)(40,117)(36,112)
\qbezier(36,112)(33,106)(30,100)
\qbezier(30,100)(29,94)(27,88)
\qbezier(27,88)(27,82)(26,75)
\qbezier(26,75)(27,69)(28,63)
\qbezier(28,63)(30,57)(33,51)
\qbezier(33,51)(36,46)(40,40)
\qbezier(40,40)(44,36)(49,32)
\qbezier(49,32)(54,28)(60,25)
\qbezier(60,25)(66,24)(72,22)
\qbezier(72,22)(79,22)(85,22)
\qbezier(85,22)(91,24)(97,26)
\qbezier(97,26)(103,29)(108,32)
\color{blue}
\put(53,132){\circle*{5}}
\put(88,149){\circle*{5}}
\put(127,151){\circle*{5}}
\put(164,141){\circle*{5}}
\put(189,129){\circle*{5}}
\put(30,100){\circle*{5}}
\put(230,100){\circle*{5}}
\linethickness{0.4pt}\qbezier(30,100)(42,123)(61,139)
\qbezier(61,139)(81,154)(106,160)
\qbezier(106,160)(130,166)(155,160)
\qbezier(155,160)(180,154)(199,139)
\qbezier(199,139)(219,123)(230,100)

\linethickness{0.4pt}\qbezier(30,100)(46,127)(73,142)
\qbezier(73,142)(100,157)(130,157)
\qbezier(130,157)(161,157)(188,142)
\qbezier(188,142)(214,127)(230,100)

\linethickness{0.4pt}\qbezier(30,100)(48,124)(74,138)
\qbezier(74,138)(101,151)(130,151)
\qbezier(130,151)(160,151)(186,138)
\qbezier(186,138)(213,124)(230,100)

\linethickness{0.4pt}\qbezier(30,100)(50,122)(76,134)
\qbezier(76,134)(102,145)(130,145)
\qbezier(130,145)(159,145)(185,134)
\qbezier(185,134)(211,122)(230,100)

\linethickness{0.4pt}\qbezier(30,100)(57,127)(94,137)
\qbezier(94,137)(130,146)(167,137)
\qbezier(167,137)(203,127)(230,100)
\color{black}
\put(84,135){$P$}
\linethickness{1.1pt}\qbezier(30,100)(40,125)(59,143)
\qbezier(59,143)(79,160)(105,167)
\qbezier(105,167)(130,173)(156,167)
\qbezier(156,167)(182,160)(201,143)
\qbezier(201,143)(221,125)(230,100)

\linethickness{1.1pt}\qbezier(56,170)(54,169)(53,169)
\qbezier(53,169)(56,172)(58,175)
\qbezier(58,175)(58,171)(58,167)
\qbezier(58,167)(57,168)(56,170)
\put(57,179){$\alpha$}
\linethickness{1.1pt}\qbezier(30,100)(43,135)(56,170)

\linethickness{1.1pt}\qbezier(30,100)(59,123)(95,131)
\qbezier(95,131)(130,139)(166,131)
\qbezier(166,131)(201,123)(230,100)

\linethickness{1.1pt}\qbezier(305,43)(305,45)(305,46)
\qbezier(305,46)(307,43)(309,39)
\qbezier(309,39)(305,40)(301,42)
\qbezier(301,42)(303,42)(305,43)
\put(309,24){$\beta$}
\linethickness{1.1pt}\qbezier(230,100)(267,72)(305,43)
\end{picture}

Прямые линии можно рисовать просто как линии, а не как сплайны. Стрелочки на кончиках линий не надо рисовать вручную.

Остальная часть рисунка просто использует те же данные. Для этого пришлось взять мелкий масштаб: одна масштабная единица равна 1pt - примерно 0,35 мм. У меня все примеры используют масштабную единицу, равную сантиметру.

Пришлось поменять порядок координат в данных: у вас они идут как
    \qbezier <первая точка> <вторая точка> <третья точка>
а у меня - как
    <первая точка> ; <третья точка> **\crv{ <вторая точка> } ,
Для этого использовался редактор UltraEdit, умеющий вырезать и вставлять колонки.

Толщины и цвета линий нет. Ну что ж.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение02.03.2012, 15:31 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Начало post537061.html#p537061

4. Готовые объекты (features)
4.1. Кружки и рамки


4.2. Стрелки

Краткое введение в стрелки можно также прочитать в сообщении
Someone, Коммутативные диаграммы
post169421.html#p169421
Единственное важное отличие: там изложено применение стрелок внутри матриц \xymatrix, внутри которых возможны <задания координат> типа [<буквы направления>...], указывающих переход к другой ячейке матрицы. В данном разделе рассмотрены стрелки вообще. Для дополнительных возможностей, предоставляемых матрицами, см. 4.4.

Стрелки - это объект типа <decor>, и создаются конструкцией в фигурных скобках:

    { \ar <команды формы стрелки> ... <сегмент стрелки> { <метки сегмента> ... } }

<Сегмент стрелки> задаёт начальную и конечную точку рисования стрелки. По сути, это произвольная последовательность <команд XY-pic>. Стрелка рисуется из положения previous в положение current, какими они будут установлены после исполнения этих команд (перед их исполнением previous устанавливается в current). Если в положениях previous и current были нарисованы объекты, стрелка закончится на границе объекта (для этого в <сегменте стрелки> можно нарисовать объект, или использовать ранее определённое имя, см. 3.6). На практике достаточно одной-двух форм задания <сегмента стрелки> (см. 3.1 о способах <задания координат>):

    { \ar <команды формы стрелки> ... <задание координат начала стрелки> ; <задание координат конца стрелки> { <метки сегмента> ... } }
    <задание координат начала стрелки> , { \ar <команды формы стрелки> ... <задание координат конца стрелки> { <метки сегмента> ... } }

      Замечание для чтения [RM]: Стрелки могут состоять из многих сегментов, как описано в разделах, посвящённых <arrow> и <path>, [RM] Arrow and Path feature p. 38, но я счёл избыточным это описывать.

<Команды формы стрелки> задают линии и кончики стрелок, а также кривизну стрелок. Для стрелки можно задать и ту и другую <команду>, но по одному разу. Для задания линий и кончиков используются такие форматы (аналогичные форматам из 3.5, но с большими возможностями):

    @<мнемоника линии> - задать только линию
    @<вариант для всей стрелки> - задать только вариант
    @<вариант для всей стрелки>{<мнемоника кончика>} - задать только кончик, линия стандартная
    @<вариант для всей стрелки>{{<мнемоника начала>}<мнемоника линии>{<мнемоника кончика>}} - задать начало, линию и кончик
    @<вариант для всей стрелки>{<направленный объект или мнемоника начала><направленный объект или мнемоника линии><направленный объект или мнемоника кончика>} - возможность использовать произвольные <направленные объекты>

Если форму никак не указывать, по умолчанию будет нарисована сплошная стрелка, с заострённым кончиком. В последнем формате используются <направленные объекты>, как они описаны в 3.5, но без символа @, то есть просто <вариант направленного объекта>{<мнемоника направленного объекта>}. Например, <команды формы стрелки> @^{(->} и @{^{(}->} нарисуют, соответственно (обратите внимание на передний кончик стрелки):
$$\begin{xy} /r1cm/:,
{\ar@^{(->}(0,1);(1,1)},(1,1)*++!L{\text{\tt @\textasciicircum\{(->\}}},
{\ar@{^{(}->}(0,0);(1,0)},(1,0)*++!L{\text{\tt @\{\textasciicircum\{(\}->\}}},
\end{xy}$$

Для задания кривизны стрелки используются такие форматы:

    @/<буква направления>{<величина расстояния для LaTeX>}/ - задать смещение центра стрелки
    @(<буква направления>,<буква направления>) - задать направления "выхода" и "входа" стрелки
    @`{<управляющая точка кривой> , <управляющая точка кривой> ... } - задать форму кривой, как в 4.6

Для первого формата <буквы направления> ^ и _ задают смещение центра стрелки влево/вправо, смотря от начала к концу стрелки. u, d, l, r - в направлениях относительно системы координат рисунка. По умолчанию смещение происходит на 0.5pc. Примеры, как это выглядит:
$$\begin{xy} /r1cm/:,
(0,0)*{\bullet},{\ar@/_1em/@{->}(1,0.5)*{\bullet}},(0.5,0.25),{\ar@{.>}p+/_1em/},(1,0.5)*+!L{\text{\tt @/\_1em/}},
(0,1)*{\bullet},{\ar@/^1em/@{->}(1,1.5)*{\bullet}},(0.5,1.25),{\ar@{.>}p+/^1em/},(1,1.5)*+!L{\text{\tt @/\textasciicircum 1em/}},
(3,0)*{\bullet},{\ar@/r1em/@{->}(4,0.5)*{\bullet}},(3.5,0.25),{\ar@{.>}p+/r1em/},(4,0.5)*+!L{\text{\tt @/r1em/}},
(3,1)*{\bullet},{\ar@/u1em/@{->}(4,1.5)*{\bullet}},(3.5,1.25),{\ar@{.>}p+/u1em/},(4,1.5)*+!L{\text{\tt @/u1em/}},
(6,1)*{\bullet},{\ar@(dr,ul)@{->}(8,1)*{\bullet}},(6,1),{\ar@{.}p+/dr2em/},(8,1),{\ar@{.}p+/ul2em/},(7,0.5)*+!U{\text{\tt @(dr,ul)}},
(9,1)*{\bullet},{\ar@`{(9.5,0.5),(10.5,0.5),(9.5,1.5),(10.5,1.5)}@{->}(11,1)*{\bullet}},(9,1);(11,1)**\crv~L{~**@{.}~*{\oplus}(9.5,0.5)&(10.5,0.5)&(9.5,1.5)&(10.5,1.5)},(10,0.25)*+!U{\text{\tt @\textquoteleft\{...\}}},
\end{xy}$$

<Метки сегмента> добавляются к стрелке с одной, другой стороны, или в разрыв самой линии стрелки. Их может быть несколько, тогда они просто перечисляются подряд. Каждая из них имеет вид:
    ^{<формула LaTeX>} - метка слева, смотря от начала к концу стрелки
    _{<формула LaTeX>} - метка справа, смотря от начала к концу стрелки
    |{<формула LaTeX>} - метка в разрыве стрелки
<Формула LaTeX> печатается по умолчанию мелким шрифтом \scriptstyle.

(Не написано.)
[RM] <anchor> <place> fig. 14 p. 39: Управление положением <меток сегмента> с помощью <задания координат> вида ?( <фактор alpha> ), ? < ..., ? > ..., и ? ... / <расстояние LaTeX> /, как написано в 3.7. См. тж.
Someone, Коммутативные диаграммы
post169421.html#p169421


4.3. Правильные многоугольники (полигоны)
4.4. Матрицы
4.5. Окружности, эллипсы, дуги


4.6. Кривые по многим точкам

Кривые линии, точно также, как прямые, рисуются как соединение, из положения previous в положение current. Формат команды создания кривой линии:

    ** \crv { <управляющая точка кривой> & <управляющая точка кривой> ... }

Линия проводится так, что проходит через точки previous и current, но не проходит через промежуточные <управляющие точки>. В зависимости от количества управляющих точек используются такие линии:
    0 - прямая
    1 - квадратичная кривая Безье (сегмент параболы)
    2 - кубическая кривая Безье
    3 и больше - многосегментная линия из кубических кривых Безье
Касательные к кривой в начальных и конечных точках совпадают с направлениями до соседних <управляющих точек>. Если пропустить <управляющую точку> между разделителями, будет дважды использована предыдущая управляющая точка (или трижды, или сколько надо раз).

Для отладки кривых можно визуализировать расположение и порядок <управляющих точек>. Для этого команду кривой надо записать в таком виде (один из возможных вариантов):

    ** \crv ~Lc { ~**@{.} ~*{\oplus} <управляющая точка кривой> & <управляющая точка кривой> ... }

(Не написано.)
[RM] 3h p 9, p. 21 The ?-operator, p. 23 Intersection with a curved connection. Поиск положения на кривой с помощью ? ..., аналогично 3.7 (фактор задаёт значение параметра кривой, но не длину). Поиск пересечения прямой и кривой (в том числе, проведённой командой стрелки { \ar ... }). Пересечение двух кривых не работает.


Пример k: Графики функций (нарисованные приблизительно, "от руки").

Парабола через начало координат - 2-я степень + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(2,3)**\crv{(0,-3)}, % квадратичная кривая через начало координат
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(2,3)**\crv~Lc{~**@{.}~*{\oplus}(0,-3)}, % квадратичная кривая через начало координат
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(2,3)**\crv{(0,-3)}, % квадратичная кривая через начало координат
\end{xy}$$


Парабола через начало координат - 2 сегмента 3-й степени + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(0,0)**\crv{(-1.7,1.5)&(-1,0)}, % левый сегмент параболы
(2,3);(0,0)**\crv{(1.7,1.5)&(1,0)}, % правый сегмент параболы
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(0,0)**\crv~Lc{~**@{.}~*{\oplus}(-1.7,1.5)&(-1,0)}, % левый сегмент параболы
(2,3);(0,0)**\crv~Lc{~**@{.}~*{\oplus}(1.7,1.5)&(1,0)}, % правый сегмент параболы
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-3,0);(3.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-2,3);(0,0)**\crv{(-1.7,1.5)&(-1,0)}, % левый сегмент параболы
(2,3);(0,0)**\crv{(1.7,1.5)&(1,0)}, % правый сегмент параболы
\end{xy}$$


Гипербола $1/x$ + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-4);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(4,0.5);(0.5,4)**\crv{(2,1)&(1,2)}, % положительная ветка гиперболы
(-4,-0.5);(-0.5,-4)**\crv{(-2,-1)&(-1,-2)}, % отрицательная ветка гиперболы
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-4);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(4,0.5);(0.5,4)**\crv~Lc{~**@{.}~*{\oplus}(2,1)&(1,2)}, % положительная ветка гиперболы
(-4,-0.5);(-0.5,-4)**\crv~Lc{~**@{.}~*{\oplus}(-2,-1)&(-1,-2)}, % отрицательная ветка гиперболы
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-4);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(4,0.5);(0.5,4)**\crv{(2,1)&(1,2)}, % положительная ветка гиперболы
(-4,-0.5);(-0.5,-4)**\crv{(-2,-1)&(-1,-2)}, % отрицательная ветка гиперболы
\end{xy}$$


Гипербола $\sqrt{1+x^2}$ - с асимптотами + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4.5,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-4,4.5);(0,2)**\crv{(-2.7,3.3)&(-1.2,2)}, % левый сегмент гиперболы
(4,4.5);(0,2)**\crv{(2.7,3.3)&(1.2,2)}, % правый сегмент гиперболы
(-1,1);(-4.2,4.2)**@{--}, % левая асимптота
(1,1);(4.2,4.2)**@{--}, % правая асимптота
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4.5,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-4,4.5);(0,2)**\crv~Lc{~**@{.}~*{\oplus}(-2.7,3.3)&(-1.2,2)}, % левый сегмент гиперболы
(4,4.5);(0,2)**\crv~Lc{~**@{.}~*{\oplus}(2.7,3.3)&(1.2,2)}, % правый сегмент гиперболы
(-1,1);(-4.2,4.2)**@{--}, % левая асимптота
(1,1);(4.2,4.2)**@{--}, % правая асимптота
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-4.5,0);(4.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-4,4.5);(0,2)**\crv{(-2.7,3.3)&(-1.2,2)}, % левый сегмент гиперболы
(4,4.5);(0,2)**\crv{(2.7,3.3)&(1.2,2)}, % правый сегмент гиперболы
(-1,1);(-4.2,4.2)**@{--}, % левая асимптота
(1,1);(4.2,4.2)**@{--}, % правая асимптота
\end{xy}$$


Синусоида - от $-\tfrac{\pi}{2}$ до $+\tfrac{\pi}{2}$ + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!DR{O}, % обозначение начала координат
(-2,0);(5.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-2);(0,2.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-1.5,-1);(1.5,1)**\crv{(-0.5,-1)&(0.5,1)}, % первый сегмент синусоиды
(1.5,1);(4.5,-1)**\crv{(2.5,1)&(3.5,-1)}, % второй сегмент синусоиды
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!DR{O}, % обозначение начала координат
(-2,0);(5.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-2);(0,2.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-1.5,-1);(1.5,1)**\crv~Lc{~**@{.}~*{\oplus}(-0.5,-1)&(0.5,1)}, % первый сегмент синусоиды
(1.5,1);(4.5,-1)**\crv~Lc{~**@{.}~*{\oplus}(2.5,1)&(3.5,-1)}, % второй сегмент синусоиды
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!DR{O}, % обозначение начала координат
(-2,0);(5.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-2);(0,2.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-1.5,-1);(1.5,1)**\crv{(-0.5,-1)&(0.5,1)}, % первый сегмент синусоиды
(1.5,1);(4.5,-1)**\crv{(2.5,1)&(3.5,-1)}, % второй сегмент синусоиды
\end{xy}$$


Синусоида - от 0 до $+\tfrac{\pi}{2}$ + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(7.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(3,2)**\crv{(1,1)&(2,2)}, % первый сегмент синусоиды
(6,0);(3,2)**\crv{(5,1)&(4,2)}, % второй сегмент синусоиды
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(7.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(3,2)**\crv~Lc{~**@{.}~*{\oplus}(1,1)&(2,2)}, % первый сегмент синусоиды
(6,0);(3,2)**\crv~Lc{~**@{.}~*{\oplus}(5,1)&(4,2)}, % второй сегмент синусоиды
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(7.5,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(3,2)**\crv{(1,1)&(2,2)}, % первый сегмент синусоиды
(6,0);(3,2)**\crv{(5,1)&(4,2)}, % второй сегмент синусоиды
\end{xy}$$


Пересечение графиков с явно заданной точкой пересечения + отладочный вариант

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(2,1.5)**\crv{(1,0)&(1.7,1)}*{\bullet}, % первая часть первого графика и точка пересечения
(2,1.5);(3.5,2.5)**\crv{(2.3,2)&(3,2.75)}, % вторая часть первого графика
(1,4);(2,1.5)**\crv{(1.25,3)&(1.5,2)}, % первая часть второго графика
(2,1.5);(3.5,0.5)**\crv{(2.5,1)&(3,0.6)}, % вторая часть второго графика
(1.25,3)*++!DL{f(x)}, % надпись у второго графика
(3,2.75)*++!L{g(x)}, % надпись у первого графика
\end{xy}$$

$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(2,1.5)**\crv~Lc{~**@{.}~*{\oplus}(1,0)&(1.7,1)}*{\bullet}, % первая часть первого графика и точка пересечения
(2,1.5);(3.5,2.5)**\crv~Lc{~**@{.}~*{\oplus}(2.3,2)&(3,2.75)}, % вторая часть первого графика
(1,4);(2,1.5)**\crv~Lc{~**@{.}~*{\oplus}(1.25,3)&(1.5,2)}, % первая часть второго графика
(2,1.5);(3.5,0.5)**\crv~Lc{~**@{.}~*{\oplus}(2.5,1)&(3,0.6)}, % вторая часть второго графика
(1.25,3)*++!DL{f(x)}, % надпись у второго графика
(3,2.75)*++!L{g(x)}, % надпись у первого графика
\end{xy}$$

Используется синтаксис LaTeX
$$\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0);(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью
(0,-1);(0,4.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(0,0);(2,1.5)**\crv{(1,0)&(1.7,1)}*{\bullet}, % первая часть первого графика и точка пересечения
(2,1.5);(3.5,2.5)**\crv{(2.3,2)&(3,2.75)}, % вторая часть первого графика
(1,4);(2,1.5)**\crv{(1.25,3)&(1.5,2)}, % первая часть второго графика
(2,1.5);(3.5,0.5)**\crv{(2.5,1)&(3,0.6)}, % вторая часть второго графика
(1.25,3)*++!DL{f(x)}, % надпись у второго графика
(3,2.75)*++!L{g(x)}, % надпись у первого графика
\end{xy}$$


Графики со стрелками и выколотыми точками + отладочный вариант

$$\shorthandoff{"}\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0)*{\circ}="o1", % выколотую точку рисуем первой и присваиваем имя
% дальше обращение по имени предотвратит рисование внутри точки
(-3,0);"o1"**@{-};(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью, через выколотую точку
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-3,0.9);"o1"**\crv{(-1.8,0.7)&(-1.8,0)}?>*@2{>}, % кривая к выколотой точке, со стрелкой
(0.5,0.5);(2,1)*{\circ}="o2"**\crv{(1.25,0.9)}?>*@{>}, % вторая выколотая точка, и кривая к ней
"o2";(2,2)*{\bullet}="b"**@{--}, % вертикальная линия к заполненной точке
(3.5,2.5);"b"**\crv{(2.75,2.1)}, % кривая к заполненной точке
\end{xy}\shorthandon{"}$$

$$\shorthandoff{"}\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0)*{\circ}="o1", % выколотую точку рисуем первой и присваиваем имя
% дальше обращение по имени предотвратит рисование внутри точки
(-3,0);"o1"**@{-};(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью, через выколотую точку
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-3,0.9);"o1"**\crv~Lc{~**@{.}~*{\oplus}(-1.8,0.7)&(-1.8,0)}?>*@2{>}, % кривая к выколотой точке, со стрелкой
(0.5,0.5);(2,1)*{\circ}="o2"**\crv~Lc{~**@{.}~*{\oplus}(1.25,0.9)}?>*@{>}, % вторая выколотая точка, и кривая к ней
"o2";(2,2)*{\bullet}="b"**@{--}, % вертикальная линия к заполненной точке
(3.5,2.5);"b"**\crv~Lc{~**@{.}~*{\oplus}(2.75,2.1)}, % кривая к заполненной точке
\end{xy}\shorthandon{"}$$

Используется синтаксис LaTeX
$$\shorthandoff{"}\begin{xy} /r1cm/:,
(0,0)*+!UR{O}, % обозначение начала координат
(-1,0)*{\circ}="o1", % выколотую точку рисуем первой и присваиваем имя
% дальше обращение по имени предотвратит рисование внутри точки
(-3,0);"o1"**@{-};(4,0)**@{-}*@{>}*++!UR{x}, % ось x с надписью, через выколотую точку
(0,-1);(0,3.5)**@{-}*@{>}*++!RU{y}, % ось y с надписью
(-3,0.9);"o1"**\crv{(-1.8,0.7)&(-1.8,0)}?>*@2{>}, % кривая к выколотой точке, со стрелкой
(0.5,0.5);(2,1)*{\circ}="o2"**\crv{(1.25,0.9)}?>*@{>}, % вторая выколотая точка, и кривая к ней
"o2";(2,2)*{\bullet}="b"**@{--}, % вертикальная линия к заполненной точке
(3.5,2.5);"b"**\crv{(2.75,2.1)}, % кривая к заполненной точке
\end{xy}\shorthandon{"}$$


Здесь, чтобы стрелки не залезали в выколотые точки, использована команда из 3.7 ?> (пока не описанная), устанавливающая текущее положение в точку, где закончилась только что нарисованная линия - на границе объекта. Кроме того, она устанавливает текущее направление (для <направленного объекта>) по касательной к кривой в данной точке - иначе оно было установлено вдоль прямой из previous в current. Для первой стрелки используется команда для стрелки удвоенной ширины *@2{>} - для красоты, иначе стрелка сливалась с другими линиями.

(Не сделано.)
Бантик типа лемнискаты + отладочный вариант
Тор + отладочный вариант
Гиперболический параболоид
Геликоида? Сетка кривой поверхности?


5. Программирование для XY-pic
6. Справочные материалы
6.1. Стрелки
6.2. Кончики стрелок
6.2. Рамки

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение02.03.2012, 18:25 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Что нового:

1. Стандартное обрамление. - незначительные правки
    1.1 Задание ориентации и масштаба системы координат - незначительные правки
2. Как подготовить рисунок к его рисованию в XY-pic - незначительные правки
3. Как XY-pic рисует рисунок (ядро)
    3.1. Как перемещаться по рисунку
    3.2. Как создавать объекты - незначительные правки
    3.3. Как размещать объекты - незначительные правки
    3.4. Как создавать текстовые метки
    3.5. Как создавать линии - незначительные правки
    3.6. Как именовать положения - написан полностью
4. Готовые объекты (features)
    4.2. Стрелки - написан почти полностью
    4.6. Кривые по многим точкам - написан почти полностью

    Пример k: Графики функций (нарисованные приблизительно, "от руки"). - п. 4.6. - написан полностью

Почему-то после правок сообщение перестало выводиться (хотя ему далеко до заявленного предела в 100 000 символов, ещё меньше 50 000), поэтому пришлось разбить его на два.

Испытываю недостаток идей, куда двигаться, и примеров, на которых иллюстрировать материал. Кроме того, по-прежнему никто не отозвался, насколько это всё читаемо.

Люди, отзовитесь! Лю-ю-юди!!!

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение23.07.2012, 15:12 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Прошу модераторов перенести эту тему в раздел "TeXнические обсуждения".

Update: Спасибо!

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение26.07.2012, 09:12 
Аватара пользователя


23/07/08
401
Новосибирск
Приятный тест. IMHO вполне можно опубликовать в журнале LXF. Я там в своё время публиковал циклы по MetaPost и LaTeX. Могу попробовать поспособствовать.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение26.07.2012, 13:50 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Так он заброшен же, меньше 50 % написано! :-)

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение26.07.2012, 14:47 
Модератор


16/01/07
1567
Северодвинск
Ну вот и будет стимул продолжить.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение26.07.2012, 16:24 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Стимул продолжить будет, если я получу feedback. Пока я понял только одно: многосегментных стрелок избежать не удастся, и поворачивающих сегментов в них - тоже.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение27.07.2012, 04:47 
Аватара пользователя


23/07/08
401
Новосибирск
Munin в сообщении #599554 писал(а):
Так он заброшен же, меньше 50 % написано! :-)
Дополнительная мотивация всегда полезна. Большие объёмы текста часто заканчивать можно только из под палки, потому что надоедает. Хотя безусловно вольному воля.

 Профиль  
                  
 
 Re: Руководство по XY-pic для пользователя с навыками программир
Сообщение28.07.2012, 10:06 
Аватара пользователя


14/10/11
30
Ленинград
На первый взгляд кажется - именно то, что мне нужно. Мои книжки-методички по физ.-техн. тематике, так что в большинстве случаев графики - это именно наброски, которые удобнее прямо так и рисовать, а не компоновать из элементарных функций. И еще часто требуются схемы экспериментов. Видимо, для этого тоже проще $\Xy-pic$ пользовать. Сейчас приду на кафедру - покручу-попробую :roll:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group