Приложение Д. Пакет Xy-pic
Сдвинутые стрелки
Стрелки можно сдвигать параллельно себе. Для этого используется конструкция @<...>, где на месте точек стоит длина в TeX'овских единицах, указывающая величину сдвига. Если эта длина положительна, то сдвиг будет влево (если смотреть от начала к концу стрелки), если отрицательна, то вправо:
Еще об изогнутых стрелках
Кроме конструкции @/.../, изгиб стрелки можно задавать конструкцией @( направление_выхода,направление_входа), где направление_выхода и направление_входа — это буквы или пары букв, значение которых показано на следующем рисунке:
![\xymatrix{
{\mbox{\tt ul}} & {\mbox{\tt u}} & {\mbox{\tt ur}}\\
{\mbox{\tt l}} & {\phantom x}
\ar@{-}[ul]\ar@{-}[u]\ar@{-}[ur]\ar@{-}[l]\ar@{-}[r]\ar@{-}[dl]\ar@{-}[d]\ar@{-}[dr] & {\mbox{\tt r}}\\
{\mbox{\tt dl}} & {\mbox{\tt l}} &{\mbox{\tt dr}}
}](/sites/default/files/tex_cache/99bd7fe0f687ba19a9332ff96b850709.png)
Пример:
Заодно показано, как с помощью "пустого" указателя направления [] и @(...) -конструкции можно напечатать стрелку, ведущую из формулы в нее же.
Начертания стрелок
В следующей таблице собраны некоторые начертания стрелок (часть из них стрелками, строго говоря, не являются, но в диаграмме могут быть полезны), которые можно получить с помощью @{...}-конструкции.
![]() |
@{-->} |
![]() |
@{=>} |
![]() |
@{.>} |
![]() |
@{>->} |
![]() |
@3{->} |
![]() |
@{<->} |
![]() |
@{->>} |
![]() |
@{<=>} |
![]() |
@{|->} |
![]() |
@{^{(}->} |
![]() |
@{-^{>}} |
![]() |
@{-_{>}} |
![]() |
@{-} |
![]() |
@{=} |
![]() |
@3{-} |
Если того, что приведено в таблице, недостаточно, читатель может попробовать скомпоновать еще что-нибудь в этом роде по аналогии (вероятность, что это сработает, отлична от нуля) или обратиться к документации.
Оптимизация и предупреждение ошибок
Пакет Xy-pic заставляет TeX работать буквально на пределе возможностей; файлы, в которых используются Xy-pic'овские конструкции, обрабатываются довольно медленно. Для ускорения работы полезно включить в преамбулу команду \CompileMatrices: в этом случае при первом запуске LaTeX'а информация о ваших \xymatrix будет записана в специальные файлы, а при последующих запусках обрабатываться будут именно они, что сэкономит TeX'у время на развертывание (части из) чудовищного количества макроопределений.
Иногда синтаксис Xy-pic'а вступает в конфликт с синтаксисом других LaTeX'овских команд, что приводит к весьма загадочным сообщениям об ошибках. Чтобы избежать этого, при пользовании Xy-pic'ом полезно применять следующие меры предосторожности:
- в аргументе команды \xymatrix каждую из формул, соединяемых стрелками, и каждую надпись при стрелке стоит заключать в фигурные скобки (автор поленился это сделать в вышеприведенных примерах, но в них формулы были очень просты, что снижает шанс нарваться на неприятность);
- если в вашей формуле присутствует что-то еще, кроме
одной-единственной команды \xymatrix, возьмите, от греха
подальше, всю эту команду в фигурные скобки, вот так:
{\xymatrix{....}} - не пытайтесь определять собственные сокращенные обозначения для того, что может быть в аргументе команды \xymatrix: по \tex'ническим причинам эти макросы могут не сработать.
Еще одно замечание: пакет Xy-pic (как и подавляющее большинство LaTeX'овских стилевых пакетов) распространяется бесплатно; тем не менее, если вы пользуетесь им в своем документе, то авторы этого пакета очень просят вас отразить это обстоятельство в сноске к статье или в выходных данных книги.
Будем надеяться, что описанные выше возможности Xy-pic'а достаточны для набора ваших диаграмм. Как мы уже отмечали, этот пакет предоставляет гораздо большие графические возможности, но если нужна сложная графика, разумнее освоить программу metapost, подготавливающую рисунки в формате PostScript, и включать в текст полученные с ее помощью графические файлы так, как описано в приложении Б.
![$
\xymatrix{
A\ar@<1ex>[dr]^f
\ar@<-1ex>[dr]_g\\
&B
}
$](/sites/default/files/tex_cache/b165cc890453915780f02d5837760382.png)
![\xymatrix{
A\ar@(ul,dl)[]_f\ar[r]^g&B
}](/sites/default/files/tex_cache/0884cb6134498c0b07ef49013512f679.png)
![{\xymatrix{{}\ar@{-->}[r]&{}}}](/sites/default/files/tex_cache/a4b7aa6cee180f75ef63130695944bfc.png)
![{\xymatrix{{}\ar@{=>}[r]&{}}}](/sites/default/files/tex_cache/4cd60175bacffa3322992ff9c0eda83a.png)
![{\xymatrix{{}\ar@{.>}[r]&{}}}](/sites/default/files/tex_cache/b0aa4bfee80323d2fe0eb8a9d6d062c2.png)
![{\xymatrix{{}\ar@{>->}[r]&{}}}](/sites/default/files/tex_cache/f7d604b4f9dbd8da6be8ff090f74535d.png)
![{\xymatrix{{}\ar@3{->}[r]&{}}}](/sites/default/files/tex_cache/78bc51ff913a9641eea03917224b97fc.png)
![{\xymatrix{{}\ar@{<->}[r]&{}}}](/sites/default/files/tex_cache/a81c41392eccd6ed113c341756bf9514.png)
![${\xymatrix{{}\ar@{->>}[r]&{}}}$](/sites/default/files/tex_cache/ae3674f220a9c764b5c73b293537e918.png)
![{\xymatrix{{}\ar@{<=>}[r]&{}}}](/sites/default/files/tex_cache/6a860281129a90eaa760e0afe4c28e09.png)
![{\xymatrix{{}\ar@{|->}[r]&{}}}](/sites/default/files/tex_cache/7160e904996c9a0e26b5b01afd2c809b.png)
![{\xymatrix{{}\ar@{^{(}->}[r]&{}}}](/sites/default/files/tex_cache/af488cd5d09c574ed45575bb5997b351.png)
![{\xymatrix{{}\ar@{-^{>}}[r]&{}}}](/sites/default/files/tex_cache/9627edd35f14b0e236a87610dd2baa92.png)
![{\xymatrix{{}\ar@{-_{>}}[r]&{}}}](/sites/default/files/tex_cache/3d5b62ce3d264a7c19470a3ea035dbd8.png)
![{\xymatrix{{}\ar@{-}[r]&{}}}](/sites/default/files/tex_cache/46db4d55da88b7301bba9741a7868950.png)
![{\xymatrix{{}\ar@{=}[r]&{}}}](/sites/default/files/tex_cache/74d6ec7db55d87e4bc35fe488c454075.png)
![{\xymatrix{{}\ar@3{-}[r]&{}}}](/sites/default/files/tex_cache/f76f93e7362ff127835dc7eb3f40a465.png)