summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/streetex/stree_ru.lat
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/streetex/stree_ru.lat')
-rw-r--r--macros/latex/contrib/streetex/stree_ru.lat1141
1 files changed, 1141 insertions, 0 deletions
diff --git a/macros/latex/contrib/streetex/stree_ru.lat b/macros/latex/contrib/streetex/stree_ru.lat
new file mode 100644
index 0000000000..18877a412f
--- /dev/null
+++ b/macros/latex/contrib/streetex/stree_ru.lat
@@ -0,0 +1,1141 @@
+\documentstyle[12pt,stree,sprivate,russian,chemstr,carom]{article}
+\begin{document}
+
+\def\<#1>{$\langle$#1$\rangle$}
+%\def\UPSILON{\char'7}
+%\def\XyM{X\kern-.30em\smash{\raise.50ex\hbox{\UPSILON}}\kern-.30em{M}}
+%\def\XyMTeX{\XyM\kern-.1em\TeX}
+\def\ChemTeX{Chem\kern-0.1em\TeX}
+\def\verb{\sverb}
+
+\def\topfraction{.9}
+\def\bottomfraction{.9}
+\def\textfraction{.1}
+
+\def\0{\tt\symbol{92}}
+\def\1{\tt\symbol{123}}
+\def\2{\tt\symbol{125}}
+\def\4{\tt\symbol{36}}
+\def\5{\tt\symbol{95}}
+
+\author{Строков Игорь Иванович}
+\title{Еще один макропакет для набора структурных формул в системе \LaTeX}
+\maketitle
+
+\section{Введение}
+
+Если вы хотите готовить научные статьи или книги типографского качества, то
+выбор инструментов обычно невелик: это либо Word, либо \TeX\ --- язык и
+система набора документов, созданные на рубеже 70--80-х годов Д. Кнутом [1].
+Если говорить кратко, то главное достоинство \TeX а --- скурпулезный учет
+всех мелочей, которые влияют на внешний вид документа и, как следствие, ---
+безупречное качество набора, практически недостижимое другими средствами
+(особенно если в тексте есть символы математики). С другой стороны, в \TeX е
+не очень удобно работать с графикой, хотя в него можно
+импортировать растровые изображения (обычно формата {\tt PCX}), при чем
+теряется независимость от печатающего устройства, или
+документы на языке PostScript. Последнее решение позволяет
+получать практически любые визуальные эффекты, однако в среде DOS/Windows до
+последнего времени было трудно найти программы, которые бы корректно понимали
+PostScript. В то же время \TeX\ сам является своеобразным языком
+программирования, который позволяет с помощью псевдографических шрифтов
+получать простые векторные диаграммы и рисунки. Наиболее известный вариант
+\TeX а, \LaTeX\ [2], практически установил стандарт на применение
+псевдографики. В большинстве случаев структурные формулы, встречающиеся в
+химических статьях, можно полностью набирать средствами \LaTeX а. Однако
+делать это непосредственно с помощью примитивных команд рисования линий и
+кругов, конечно, слишком неудобно. Специально для набора химических формул
+разными авторами созданы более и менее сложные пакеты макрокоманд. Макрос
+Рамека [3] достаточно прост и удобен, но формулы в нем получаются не такие, к
+каким привыкли химики-органики. Этого недостатка лишены более сложные
+макропакеты \ChemTeX\ Хааса--о'Кейна [4] и \XyMTeX\ Фуджиты [5]. Оба
+последних пакета устроены примерно одинаково: каждому характерному элементу
+рисунка (обычно такой элемент относится к связной системе циклов) в них
+отвечает отдельная макрокоманда, параметры которой позволяют менять вид
+заместителей и связей этого элемента.
+
+Возмем для примера более развитый и упорядоченный
+макрос Фуджиты. Например, 5,5-диметилциклогексен-2-он-1
+$$\begin{picture}(800,0)\put(-100,-200){\cyclohexanev[b]{1D==O;5Sb==;5Sa==}}
+\end{picture}\quad\stree[b]{3[7]020\O4>6810}$$
+в нем получается по команде
+\verb"\cyclohexanev[b]{1D==O;5Sb==;5Sa==}" (для сравнения справа нарисована
+та же структура, введенная с помощью нового пакета). В этом, как и в других
+случаях, мнемоника команды коррелирует с названием соединения, что может
+позволить опытному пользователю по виду команды представить себе, какая в ней
+зашифрована структура. С другой стороны, описание формул на уровне крупных
+структурных фрагментов влечет за собой ряд недостатков. Прежде всего, таких
+фрагментов, которые обычно рассматриваются как целое, в органической химии
+очень много, и охватить их полностью практически невозможно. Эта задача не
+решается и в пакетах \ChemTeX\ и \XyMTeX, при том, что полное описание
+каждого представляет собой довольно солидную книгу. Кроме того, в случаях,
+когда большая формула состоит из нескольких фрагментов, их объединение на
+одном рисунке может превратиться в утомительную задачу по вычислению
+координат стыкуемых узлов.
+
+В связи с этим оправданным кажется описание формул на более простом
+уровне --- с помощью отдельных связей, подобно тому, как это сделано у Рамека
+[3]. Разнообразие связей по сравнению с характерными фрагментами структур
+значительно меньше, поэтому набор формул в терминах связей должен быть более
+универсальным и простым в освоении. Из общих соображений можно предположить,
+что сравнительно примитивный уровень описания чреват потерей скорости и
+удобства набора, однако субъективный опыт автора говорит о том, что этого не
+происходит. Чтобы поддержать это утверждение, рассмотрим, как именно вводятся
+структурные формулы в предлагаемом вашему вниманию макропакете \treeTeX.
+
+По традиции программистов на \TeX е, новый пакет получил название, включающее
+общий логотип \TeX. Первая часть названия, ``tree'', отражает способ описания
+структурных формул в виде дерева связей. Весь \treeTeX\ реализован в виде
+одного небольшого файла {\tt stree.sty}. Как обычно, имя файла без
+расширения включается в аргумент команды \verb"\documentstyle". Например,
+первая строка в этом документе выглядит так:
+\begin{verbatim}
+\documentstyle[12pt,stree,russian]{article}
+\end{verbatim}
+
+\section{Основные правила}
+
+Для набора структурных формул в \treeTeX е используется единственная команда
+\verb"\stree{}". Описание формулы содержится в фигурных скобках и получается
+так: начав с какой-либо вершины (не важно, с какой), следут обойти всю
+структуру, двигаясь по связям и описывая как сами проходимые связи, так и
+метки вершин, если они встретятся по пути. Например, формула
+1-гидрокси-4-метилпиридина$$\stree{{HO}20?242\Me?68N?10}$$
+вводится как \verb"\stree{{HO} 2 0 >2 4 [2{CH$_3$}] >6 8N
+>10}". Начиная в данном примере обход с вершины HO, мы должны поставить в
+код ее метку: \verb"{HO}". Метка обязательно заключается в фигурные скобки,
+если в ней более одного символа. Следующий символ {\tt 2} означает:
+<<провести связь в направлении на 2 часа>> (по циферблату часов). При обходе
+формулы всегда есть текущая точка (вершина). Указывая направление связи, мы
+перемещаемся из текущей точки в данном направлении (на расстояние, равное
+длине связи) и попадаем в другую вершину. Таким образом, после символа {\tt
+2} текущей становится вершина кольца (номер 1 по нумерации ИЮПАК). Символ
+{\tt 0} описывает следующую связь в направлении на 0 часов (вертикально
+вверх). Далее (если продолжать обход кольца по часовой стрелке) следует
+двойная связь на два часа. Если связь отличается от простой, то {\sl перед\/}
+ее направлением ставится один или несколько символов (так называемых {\em
+префиксов\/}), отражающих особенности связи. Двойную связь можно изображать
+по разному. В нашем случае желательно, чтобы второй штрих связи был внутри
+цикла, {\sl справа\/} от основного. Для достижения этого эффекта перед
+двойкой ставится префикс {\tt >} (правая угловая скобка).
+
+Следующая простая связь на четыре часа приводит к замещенной вершине кольца.
+Давайте вначале опишем заместитель, а потом продолжим обход кольца.
+Конструкция \verb"[2{CH$_3$}]" содержит описание заместителя и
+интерпретируется так: открывающая скобка {\tt [} запоминает текущую
+вершину; связь на два часа (символ {\tt 2}) приводит к вершине CH$_3$
+(\verb"{CH$_3$}" --- это описание метки), после чего скобка {\tt ]}
+закрывается и возвращает нас к вершине кольца, от которой отходит
+заместитель. Последовательность символов \verb"{CH$_3$}" довольно неудобно
+набирать на клавиатуре. В то же время метильная группа (CH$_3$) встречается
+часто, поэтому для нее был предусмотрен более простой метод ввода с
+помощью команды \verb"\Me" так, что конструкция \verb"2\Me" эквивалентна
+\verb"[2{CH$_3$}]" (вместо цифры {\tt 2} здесь может стоять любое число,
+отвечающее направлению связи).
+
+После того, как заместитель задан, можно продолжить обход кольца. Остались
+три связи: на 6, 8 и 10 часов. Связи на 6 и 10 часов двойные и нарисованы
+внутри цикла, что указывается с помощью префикса {\tt
+>}. Связь на 8 часов приводит к вершине с меткой N, поэтому символ {\tt N}
+стоит сразу за символом {\tt 8}. В данном случае фигурные
+скобки вокруг {\tt N} ставить не обязательно, поскольку эта метка состоит из
+одного символа. В этом примере для наглядности
+группы символов, относящиеся к разным связям, мы разделили пробелами.
+Вообще говоря, ставить их не обязательно (команда
+\verb"\stree{{HO}20>242\Me>68N>10}" тоже является правильной), но вы
+можете использовать пробелы, чтобы визуально структурировать содержимое
+команды \verb"\stree". При расстановке пробелов действует только один
+запрет: их {\sl нельзя\/} ставить между направлением и меткой или
+направлением и командой. Например, в приведенном выше примере написать
+\verb"8 N" (а также \verb"2 {CH$_3$}" или \verb"2 \Me") было бы ошибкой. Есть
+также один случай, когда пробел нужен {\sl обязательно:\/} между цифрой {\tt
+1}, если она обозначает направление на один час, и следующей за ней другой
+цифрой.\footnote{Строго говоря, если следующая цифра --- не {\tt 0} или {\tt
+1}, то пробел и в этом случае необязателен.}
+
+\section{Формальное описание}
+
+Теперь попробуем суммировать и изложить более строго основные правила,
+рассмотренные на данном примере. Аргумент команды \verb"\stree" состоит из
+описаний отдельных связей. Чтобы описать связь, достаточно задать ее
+направление --- чаще всего это число часов от 0 до 11 на 12-часовом
+циферблате. {\sl Перед\/} направлением можно поместить один или несколько
+префиксов, которые модифицируют длину, кратность, внешний вид или само
+направление связи. {\sl После\/} направления может ставится метка вершины, к
+которой приводит связь, или команда (имеется в виду команда в терминах \TeX а
+--- то, что начинается с сигнального символа~\verb"\").
+Команда --- это средство более краткого описания некоторых часто
+встречающихся структурных фрагментов. Метка или команда здесь
+рассматриваются как атрибут связи, и, поскольку они ставятся после
+направления, их называют также {\em суффиксами.\/} Суффикс, в отличие от
+префиксов, может быть только один, и, кроме того, перед суффиксом {\sl
+никогда\/} не ставится пробел. Описание связи в форме \<возможные
+префиксы>\<направление>\<возможный суффикс>\ отвечает тому, как если бы вы
+объясняли обход структуры словами: <<{\sl такая-то\/} связь на {\sl
+столько-то\/} часов приводит к {\sl такой-то\/} метке>> --- только вместо
+слов {\sl такой-то\/} и {\sl столько-то\/} ставятся условные символы.
+
+\def\is{$\longrightarrow$ }
+\def\ili{\vrule{} }
+
+Может возникнуть вопрос --- как отличить, например, суффикс текущей связи от
+направления или префикса следующей? Для визуального различения, как уже
+отмечалось, после описания каждой
+связи можно вставлять пробел (если вас не очень заботит избыточный объем
+текста). Машина, однако, не обращает внимания на пробелы, а
+действует в соответствии с правилами, которые далее приводятся
+в записи Бэкуса--Нора (стрелка \is\ обозначает <<определяется как>>, а
+вертикальная черта \ili\ значит <<или>>). Начнем с определения аргумента
+команды \verb"\stree" (который здесь обозначен как \<структура>):
+
+\begin{description}%\flushleft
+\item[]
+\<структура> \is \<пусто> \ili \<связь>\<структура> \ili\protect\\
+ \<структура>{\tt[}\<структура>{\tt]}\<структура>
+\end{description}
+%
+Это просто формальный способ сказать, что аргумент состоит из описаний
+отдельных связей и может содержать парные квадратные скобки,
+возможно вложенные. Далее
+определяется, какой вид имеет описание связи.
+
+\begin{description}\frenchspacing%\flushleft
+
+\item[]
+\<связь> \is \<возможные префиксы>\<направление>\<возможный суффикс>
+\<возможные пробелы>
+
+\item[]
+\<возможные префиксы> \is
+\<префикс> \<возможные префиксы> \ili \<пусто>
+
+\item[]
+\<префикс> \is {\tt / \ili , \ili = \ili >
+\ili < \ili ? \ili \_ \ili ' \ili ` \ili " \ili . \ili : \ili * \ili
+\verb"^"}
+
+\item[]
+\<возможный суффикс> \is \<команда> \ili \<метка> \ili \<пусто>
+
+\item[]
+\<метка> \is {\1}\<любая последовательность символов>{\2} \ili
+\<любой символ, если это не префикс>
+
+\item[]
+\<направление> \is
+\<направление в часах> \ili \<направление в смещениях>
+
+\item[]
+\<направление в часах> \is {\tt 0 \ili
+1\<{\rm возможный пробел после единицы}> \ili 2 \ili
+3 \ili 4 \ili 5 \ili 6 \ili 7
+\ili 8 \ili 9 \ili 10 \ili 11 \ili 12}
+
+\item[]
+\<{\rm возможный пробел после единицы}> \is \<пробел>, если
+следующий символ в описании --- {\tt 0} или {\tt 1}, иначе --- \<пусто>
+
+\item[]
+\<направление в смещениях> \is \<плюс или
+минус> \<натуральное число> \<плюс или минус> \<натуральное число>
+
+\item[]
+\<плюс или минус> \is {\tt +} \ili {\tt -}
+
+\end{description}
+
+В этих правилах любой синтаксический элемент (конструкция в угловых скобках
+\< >) раскрывается в конечном итоге либо в конкретные символы, либо в
+элементы, которые не требуют, как кажется, дальнейшего объяснения (например
+\<любая последовательность символов>, \<пусто>, \<натуральное число>).
+Приведенные правила, однако, ничего не говорят о том, что значит тот или иной
+префикс или какой смысл имеет, например, конструкция \<направление в
+смещениях>. Семантика отдельных элементов команды \verb"\stree"
+систематически рассматривается в трех следующих разделах.
+
+\section{Префиксы}
+
+\begin{table}[tbh]\centering
+{\bf Таблица 1.} Префиксы.\par
+\medskip
+\begin{tabular}{c|c|c|c}
+префикс&название особенности&пример&категория\\ \hline\hline
+\tt /&косая&\stree{/2}&\\ \cline{1-3}
+\tt //&очень косая&\stree{//2}&префиксы\\ \cline{1-3}
+\tt ,&под 45$^\circ$&\stree{,2}&направлений\\ \cline{1-3}
+{\tt+} и {\tt-}&задают направление в смещениях&&\\
+\hline\hline
+\tt =&центрированная двойная&\stree{=3}\\ \cline{1-3}
+\tt >&двойная справа&\stree{>3}&\\ \cline{1-3}
+\tt <&двойная слева&\stree{<3}&кратности\\ \cline{1-3}
+\tt ==&тройная &\stree{==3}&связей\\ \cline{1-3}
+\tt ">&делокализованная справа&\stree{">3}&\\ \cline{1-3}
+\tt "<&делокализованная слева&\stree{"<3}&\\
+\hline\hline
+\tt \_&длинная ($5/3$ от обычной)&\stree{_3}&длины\\ \cline{1-3}
+\tt '&короткая ($1/3$ от обычной)&\stree{'3}&связей\\
+\hline\hline
+\verb"~"&невидимая &\\ \cline{1-3}
+\verb"~~"&и связь, и метка невидимы&\\ \cline{1-3}
+\tt :&пунктирная&\stree{:3}&визуальные\\ \cline{1-3}
+\tt *&жирная&\stree{*3}&эффекты\\ \cline{1-3}
+\verb"^"&стрелка&\stree{^3}\\ \cline{1-3}
+\verb"^*"&клиновидная&\stree{^*3}\\
+\hline\hline
+\tt .&очень короткая невидимая&\stree{C.2*}&для меток
+\end{tabular}
+\end{table}
+
+Выше мы уже познакомились с одним префиксом {\tt >}, который испоьзовался для
+задания двойных связей.
+Полный список префиксов приводится в табл. 1.
+Префиксы делятся на четыре категории по влиянию на направление,
+кратность, длину или внешний вид связи. Префиксы разных категорий можно
+комбинировать друг с другом: например, в результате
+\verb"\stree{_=:/4}" получится длинная двойная пунктирная косая связь на 4
+часа: \stree{_=:/4}\ Рассмотрим далее более полезные случаи использования
+префиксов и их сочетаний.
+
+Префикс {\tt .} (точка) --- особенный. Он
+влияет и на длину, и на внешний вид связи и используется для того, чтобы
+ставить номера или другие метки при вершинах. Например, чтобы
+ввести этиленгликоль с нумерацией вершин (\stree[b]{{HO}.01 2.02 4.03
+2{OH}.04}), нужно сказать: \verb"\stree{{HO} .01 2 .02 4 .03 2{OH} .04}"
+(все пробелы здесь необязательны). Конструкция {\tt .01} (и аналогичные ей
+{\tt .02}, {\tt .03}, {\tt .04}) в полном соответствии с формой \<возможные
+префиксы>\<направление>\<возможный суффикс> буквально означает следующее:
+провести {\sl короткую невидимую\/} связь {\sl на ноль часов\/} и поставить
+метку <<1>>. Однако здесь есть две особенности. Если префикс связи ---
+точка, то, во-первых, после такой связи текущая вершина не меняется (как если
+бы описание связи было взято в квадратные скобки), и, во-вторых, после
+направления {\sl обязательно\/} должна следовать метка. Более того, {\sl
+любой\/} символ (или группа символов, заключенная в фигурные скобки) после
+направления с префиксом {\tt .} воспринимается как метка. Поэтому в этом
+случае мы можем просто поставить после направления на 0 часов
+цифру 1, не опасаясь, что она может быть спутана с направлением на 1 час.
+Обратите внимание, что номера вершин набраны в меньшем размере, чем
+метки вершин и весь остальной текст. Размер и шрифт можно менять с помощью
+соответствующих команд, например \verb"\stree{{HO} .0{\tiny1} 2 .02 4
+.0{\large3} 2{OH} .0{\LARGE4}}" дает такой результат: \stree{{HO} .0{\tiny1}
+2 .02 4 .0{\large3} 2{OH} .0{\LARGE4}}. Чаще, однако, бывает нужно, чтобы все
+номера вершин (или другие метки при вершинах) были в одном стиле. Этот
+стиль задается командой \verb"\znakf". Исходно эта команда определена так:
+\verb"\def\znakf#1{\small #1}" --- то есть печатать метки размером
+\verb"\small". Определение \verb"\znakf" можно изменить (прямо в
+своем тексте), чтобы получить жедаемый вид меток по умолчанию: например, после
+\verb"\def\znakf#1{#1}" метки станут получаться обычного размера, а после
+\verb"\def\znakf#1{$#1$}" --- набираться в математической моде.
+
+\rpic{\stree{:1:3:5^*7**9*^11}}
+Прокомментируем также назначение других префиксов (исключая префиксы
+направлений, которые рассматриваются в следующем разделе). Пунктирные,
+очень жирные и клиновидные связи, очевидно, нужны для набора
+стереоформул. Например, приведенная в этом абзаце формула была введена как
+\verb"\stree{:1 :3 :5 *^7 **9 *^11}" (обход велся по часовой стрелке начиная
+с самой левой вершины).
+Этот пример не имеет практической ценности и только иллюстрирует
+особенности использования \verb"^" и {\tt *}. Так, в первом случае
+сочетание \verb"^*" обозначает связь {\sl расширяющуюся\/} (\stree{*^3}),
+поскольку предыдущая связь была узкой, а во втором --- {\sl сужающуюся\/}
+(\stree{**17*^3}), так как перед ней шла жирная связь. Хорошо, когда машина
+пытается проявить сообразительность, но иногда необходимо указать явно, в
+какую сторону должна расширяться клиновидная связь.
+Простой способ добиться желаемого --- задать псевдо-связь нулевой длины и
+подходящей толщины, тогда следующая клиновидная связь получится нужного вида.
+Например сужающаяся одиночная связь (\stree{**17*^3}) была сейчас введена как
+\verb"\stree{**17 *^3}". Для подобных случаев нужно запомнить, что связи
+нулевой длины отвечает псевдо-направление на 17 часов. Отметим заодно, что
+связь перед плоскостью вводится как {\sl очень\/} жирная (два префикса
+{\tt *}). Один префикс {\tt *} отвечает просто жирным связям, которые
+примерно в два раза \'уже очень жирных и вдвое толще обычных (опустим вопрос,
+для чего они могут пригодиться).
+
+Префикс {\tt '} (апостроф) позволяет вводить короткие связи, которые обычно
+обозначают свободные валентности во фрагментах. Например, формула
+\stree{'8'0 4'6 2N '0'4}\ была набрана как
+\verb"\stree{'8'0 4'6 2N '0'4}". После короткой связи, как и после
+короткой невидимой, текущая вершина не меняется.
+
+Просто невидимости можно добиться с помощью префикса \verb"~" (тильда).
+Невидимые связи удобно использовать для того, чтобы получить формулу,
+отдельные части которой не связаны между собой. Например, схему
+реакции $$\stree{{H$_2$C} =3{CH$_2$} ~6{CH$_2$} =9{H$_2$C}}
+\quad\longrightarrow\quad \stree{3690}$$ можно задать как
+\begin{verbatim}
+\stree{{H$_2$C} =3{CH$_2$} ~6{CH$_2$} =9{H$_2$C}}
+\quad\longrightarrow\quad \stree{3690}
+\end{verbatim}
+Невидимость также
+полезна, если требуется выровнять несколько формул разного размера. Пусть
+нужно напечатать рядом три формулы: $$ \stree{O =2 [~0] 4 [~6] 2
+4{Cl}}\quad\stree{4 6\O 2 ~~0\O 4{Cl}}\quad\stree{4 ~~6\O 2 0\O 4{Cl}}$$
+Если просто перечислить их: \verb"\stree{O =2 4 2
+4{Cl}} \quad \stree{4 6\O 2 4{Cl}} \quad \stree{4 2 0\O 4{Cl}}", то
+главная цепь в этих формулах окажется на разных уровнях: $$
+\stree{O=2424{Cl}}\quad\stree{46\O24{Cl}}\quad\stree{420\O4{Cl}} \quad,$$ что
+не очень красиво. Выход состоит в том, чтобы везде поставить
+невидимые заместители, расположенные в противоположном направлении от
+видимых: \verb"\stree{O =2 [~0] 4 [~6] 2 4{Cl}} \quad \stree{4 6\O 2 ~~0\O
+4{Cl}} \quad \stree{4 ~~6\O 2 0\O 4{Cl}}". И те, и другие имеют одинаковый
+размер, поэтому формулы окажутся выровненными относительно главной цепи.
+Здесь следует кое-что объяснить. Во-первых, появилась новая команда
+\verb"\O", которая рисует карбонильную группу (первую структуру тоже можно
+было задать с ее помощью: \verb"\stree{8\O 4 2 4{Cl}}"). Во вторых, в
+конструкциях \verb"~~0\O" и \verb"~~6\O" стоят сразу две тильды: это делает
+невидимой не только связь, но и метку на ее конце (нетрудно догадаться, что с
+одной тильдой получился бы повисший в воздухе символ <<O>>)\@. Наконец, хотя
+в первой формуле нет заместителей, смотрящих вверх или вниз, она тоже не
+центрирована относительно главной цепи --- мешают метки вершин, поэтому и
+здесь пришлось поставить две невидимые связи для того, чтобы скрыть объем
+меток.
+
+Таким образом, совместное использование префиксов позволяет получить много
+дополнительных полезных эффектов, обходясь сравнительно
+небольшим набором знаков. Ни один из них не является
+буквой или цифрой, что позволяет легко отличать префиксы
+от меток и направлений. Только знаки {\tt +} и {\tt -} выпадают из этой
+картины: они используются, чтобы задавать \<направление в смещениях>,
+смысл и назначение которого обсуждается в следующем разделе.
+
+\clearpage
+
+\subsection{Направления}
+
+\begin{figure}\centering
+\def\znakf#1{\tt #1}
+\begin{tabular}{cccc}
+\stree{[0.00][1.1 1][2.22][3.33][4.44][5.55][6.66][7.77][8.88][9.99]%
+[10.10{10}][11.11{1\rlap1}]}&
+\stree{[,2.,2{,2}][,5.,5{,5}][,8.,8{,8}][,11.,11{,11}]}&
+\stree{[:1][:2][:4][:5][:7][:8][:10][:11]%
+[/1./1{/1}][/2./2{/2}][/4./4{/4}][/5./5{/5}][/7./7{/7}][/8./8{/8}]%
+[/10./10{/10}][/11./11{/11}]}&
+\stree{[:1][:2][:4][:5][:7][:8][:10][:11]%
+[//1.//1{//1}][//2.//2{//2}][//4.//4{//4}][//5.//5{//5}][//7.//7{//7}]%
+[//8.//8{//8}][//10.//10{//10}][//11.//11{//11}]}\\
+прямые&получасовые&косые&очень косые
+\end{tabular}\par\medskip
+{\bf Рисунок 1.} Направления связей (для сравнения рядом с косыми и
+очень косыми пунктиром показаны соответствующие прямые направления).
+\end{figure}
+
+\rpic{\stree{0,23,56,89,11}}
+Давайте систематически рассмотрим в этом разделе все разные способы задания
+направлений. Кроме двенадцати {\em прямых\/} направлений, отвечающих целому
+числу часов на циферблате, есть еще множество других, которые задаются как
+число часов с префиксами {\tt /} или {\tt ,} (см.\ рис.\ 1).
+Четыре направления под углом 45$^\circ$ к горизонту (на пол-второго,
+пол-пятого, пол-восьмого и пол-одинадцатого) задаются с помощью префикса {\tt
+,} (запятая) перед числом {\tt 2}, {\tt 5}, {\tt 8} или {\tt 11} (считайте,
+что запятая здесь отвечает приставке {\sl пол-\/}). Такие направления
+(называемые {\em получасовыми\/}) можно использовать при задании
+восьмичленных циклов. Например, цикл в этом абзаце был введен как
+\verb"\stree{0 ,2 3 ,5 6 ,8 9 ,11}" в результате обхода по часовой стрелке,
+начиная с самой левой нижней вершины.
+
+Другие
+восемь направлений можно получить с помощью префикса {\tt /} (косая черта)
+перед одним из чисел {\tt 1}, {\tt 2}, {\tt 4}, {\tt 5}, {\tt 7}, {\tt 8},
+{\tt 10} или {\tt 11} (см.\ рис.\ 1). Такие направления (назовем их {\em
+косыми\/}) используются, например, для ввода пятичленных циклов. Пятиугольник
+в химических формулах обычно рисуют так, что одна из его сторон получается
+строго вертикальной или горизонтальной. Если две связи, смежные такой
+стороне, сделать косыми, то пятиугольник получится довольно близким к
+правильному: $$
+\begin{tabular}{cl|cl}
+\multicolumn{2}{c}{<<вертикальные>> формы}&
+\multicolumn{2}{c}{<<горизонтальные>> формы}\\&&&\\
+\stree{/1 3/5810}&\verb"\stree{/1 3/5810}"&
+\stree{0/257/10}&\verb"\stree{0/257/10}"\\&&&\\
+\stree{24/79/11}&\verb"\stree{24/79/11}"&
+\stree{1/46/811}&\verb"\stree{1/46/811}"
+\end{tabular}$$
+%
+Пятичленное кольцо в формулах иногда изображают и так:
+{\bondlen=3.5mm\stree{0_36810}} (похоже на правильный
+шестиугольник с одним обрезанным углом).
+Здесь нет косых направлений, но одна связь (на месте обрезанного угла)
+примерно на $2/3$ длиннее других. Длинная связь получается с помощью
+префикса \verb"_" (подчерк), а вся формула вводится следующим образом:
+\verb"{\bondlen=3.5mm \stree{0 _3 6 8 10}}" (здесь присваивание
+\verb"\bondlen=3.5mm" позволяет получить формулу, размер которой примерно в
+два раза меньше обычного, специально для вставки в текст, а фигурные скобки
+локализуют эффект уменьшения).
+
+Рассмотрим теперь циклы из семи вершин. Для того, чтобы их рисунки получились
+сравнительно приличными, ранее рассмотренных направлений недостаточно:
+понадобятся восемь других, которые еще более, чем косые, отклоняются от
+соответствующих прямых направлений в сторону осей координат. Такие
+направления называются {\em очень косыми\/} и вводятся с помощью двух
+префиксов {\tt /} (см.\ рис.\ 1). С использованием очень косых
+связей получаются такие семичленные циклы:
+\begin{center}\tabcolsep=0.2em
+\begin{tabular}{clcl}
+\stree{//1 24//57911}&\verb"\stree{//1 24//57911}"\ &
+\stree{1//2468//1011}&\verb"\stree{1//2468//1011}"\\\\
+\stree{1 35//7810//11}&\verb"\stree{1 35//7810//11}"\ &
+\stree{02//457//810}&\verb"\stree{02//457//810}"
+\end{tabular}
+\end{center}
+
+Таким образом, с помощью чисел 0--11 и префиксов {\tt ,} и {\tt /} можно
+задавать $12 + 4 + 8 + 8 = 32$ разных направления. В большинстве случаев
+(если учесть еще длинные связи) для описания формул этого достаточно, однако
+иногда может понадобиться другой, более общий способ. Согласно
+ему, направление задается не одним числом (как угол в часах), а двумя:
+смещением связи по вертикали и по горизонтали. Смещение измеряется в
+так называемых {\em квадратах,\/} где квадрат --- это условная единица,
+равная $1/6$ длины обычной связи.\footnote{Строго говоря, если она
+вертикальна или горизонтальна. Все другие связи чуть длиннее или чуть
+короче.} Каждое смещение задается как целое число с {\sl обязательным\/}
+знаком {\tt +} или {\tt -} (знак говорит о том, что следующее за ним число
+--- это смещение, а не направление в часах). Все направления, выражаемые в
+часах, можно задать с помощью смещений (см.\ табл. 2). Обратное же не верно:
+например, при наборе следующей формулы $$ \stree{202/4-5-6-6-1-2+2
+02[+1+5[=01042]+1-7]/428+2-2} $$ без смещений обойтись нельзя: формула
+вводится как
+\begin{verbatim}
+\stree{202/4-5-6-6-1-2+2 02[+1+5[=01042]+1-7]/428+2-2}
+\end{verbatim}
+
+\begin{table}
+{\bf Таблица 2.} Соответствие смещений направлениям в часах.\par\medskip
+\leavevmode
+\vtop{\nointerlineskip\halign{\tt\hfil# \strut&#\vrule&\ \tt#\cr
+\multispan3 \hfil прямые\hfil\cr
+0&&-0+6\cr
+1&&+3+5\cr
+2&&+5+3\cr
+3&&+6-0\cr
+4&&+5-3\cr
+5&&+3-5\cr
+6&&-0-6\cr
+7&&-3-5\cr
+8&&-5-3\cr
+9&&-6-0\cr
+10&&-5+3\cr
+11&&-3+5\cr
+}}\quad
+\vtop{\nointerlineskip\halign{\tt\hfil# \strut&#\vrule&\ \tt#\cr
+\multispan3 полуторные\hidewidth\cr
+,2&&+4+4\cr
+,5&&+4-4\cr
+,8&&-4-4\cr
+,11&&-4+4\cr
+}}\quad
+\vtop{\nointerlineskip\halign{\tt\hfil# \strut&#\vrule&\ \tt#\cr
+\multispan3 \hfil косые\hfil\cr
+/1&&+2+6\cr
+/2&&+6+2\cr
+/4&&+6-2\cr
+/5&&+2-6\cr
+/7&&-2-6\cr
+/8&&-6-2\cr
+/10&&-6+2\cr
+/11&&-2+5\cr
+}}\quad
+\vtop{\nointerlineskip\halign{\tt\hfil//# \strut&#\vrule&\ \tt#\cr
+\multispan3 очень косые\hidewidth\cr
+1&&+1+6\cr
+2&&+6+1\cr
+4&&+6-1\cr
+5&&+1-6\cr
+7&&-1-6\cr
+8&&-6-1\cr
+10&&-6+1\cr
+11&&-1+6\cr
+}}
+\end{table}
+
+Рассмотрим подробнее процесс набора для этого случая. Прежде всего, всегда
+полезно иметь перед глазами рисунок набираемой формулы. Если она к тому же
+содержит связи необычной длины и/или направления, то лучше, если рисунок
+будет на бумаге в клетку, в масштабе 6 клеток на связь обычной длины. При
+проведении связей желательно, чтобы соотношение короткой и длинной проекций
+связи на оси координат составляло или $3/5$, что отвечает {\sl прямым\/}
+связям, или $2/6$ (косым), или $1/6$ (очень косым). Во-первых, такие связи
+можно задавать более кратким образом (как число часов), а во-вторых (что
+важнее) --- рисунок формулы, скорее всего, при этом получится строже (эти
+рассуждения больше относятся к случаю, когда общепринятого
+изображения формулы не существует, и можно рассмотреть разные варианты).
+Если же имеется красивый рисунок на клетчатой бумаге, то описать его в
+команде \verb"\stree" (при известном навыке) не составит труда. Давайте
+начнем с нижней метильной группы и примыкающего к ней пятичленного цикла
+(последний, как обычно, обходится по часовой стрелке). Первые три связи на
+этом пути (на 2, 0 и опять 2 часа) являются прямыми, следующая, на 4 часа ---
+косая. Двум следующим связям, заканчивающим цикл, отвечает
+последовательность {\tt -5-6-6-1} (если есть сомнения в том, как описать
+связь --- в часах или в смещениях, то можно справиться с табл.\ 2 или,
+что проще, запомнить соотношение проекций для направлений в часах).
+После пятичленного цикла опишем снаружи от него
+неправильный шестичленный цикл. Здесь последовательность {\tt -2+2 02}
+доводит до мостика, который соединяет два цикла, а описание этого мостика
+содержится в квадратных скобках. Оставшиеся символы {\tt /428+2-2}
+описывают конец пути до пятичленного цикла. Два символа {\tt 28} здесь
+служат для ввода метильной группы, которую можно было задать и более
+привычным способом, как {\tt [2]}.
+
+В данном примере, опять-таки для
+иллюстрации, были опущены все необязательные пробелы. {\sl Необходимый\/}
+пробел понадобился только в одном месте: {\tt -2+2 02[}, так как
+без него получилось бы {\tt -2+202[} --- две клетки вниз и 202
+вправо --- очень длинная связь! Почти все направления в часах (кроме 10 и 11)
+--- однозначные числа, поэтому пробел нужен только там, где можно спутать
+пару чисел 1 и 0 или 1 и 1 с 10 и 11 соответственно. В отличие от
+часов, смещения не ограничены по величине, поэтому каждое число, которое
+начинается с {\tt -} или {\tt +}, должно заканчиваться справа какой-нибудь
+не-цифрой, например, пробелом. Но есть еще одно, более важное, отличие
+направления в смещениях --- его нельзя использовать перед командами, которые
+рисуют более одной связи. Последнее ограничение может показаться
+таинственным, пока вы не узнаете о внутреннем устройстве команд.
+
+\section{Метки вершин}\label{Labels}
+
+Однако перед тем, как перейти к командам, следует остановиться на суффиксах
+более простого вида --- на метках вершин, и отметить все особенности их
+использования. Повторим вначале наиболее важные правила.
+Если вершина, к которой приводит связь, имеет метку, то эта метка
+записывается {\sl сразу\/} после направления связи. Пробел между направлением
+и меткой (или командой) недопустим (заметим, что это правило не может войти в
+противоречие с правилами об обязательных пробелах между числом и следующей
+цифрой: ведь ни метка, ни команда никогда не начинаются с цифры). Если метка
+состоит более чем из одного символа, то она заключается в фигурные скобки.
+Скобки также обязательны, если метка является цифрой или одним из символов,
+используемых в качестве префикса.\footnote{Строго говоря, сюда следует отнести
+еще один случай: если метка закодирована с помощью команды. Например, вам
+может надоесть часто набирать какую-нибудь длинную метку, и вы напишете
+простую макрокоманду, скажем \0def\0бз\1C\4\56\4H\4\55\4\2\rm, чтобы вместо
+\tt C\4\56\4H\4\55\4\rm\ можно было везде писать \0бз\rm. При использовании
+внутри \0stree\rm\ команду \0бз\rm\ придется брать в
+фигурные скобки, чтобы она обрабатывалась как обычная метка, а не как
+команда.} Очень часто метки вершин
+состоят из одной буквы, например, C, N, O, H --- и в этом случае скобки не
+нужны, хотя, если их поставить, ошибки не будет.
+
+Когда ставится метка, то связи, которые ведут к ней и от нее, становятся
+короче, чтобы не произошло наложения связи на метку. Основная работа по
+рисованию формул как раз и заключается в том, чтобы правильно вычислять
+размеры меток и в соответствии с ними адаптировать координаты отрезков,
+изображающих связи. К сожалению, в \TeX е нет чего-нибудь, похожего на
+массивы, и запомнить можно размеры только одной метки, относящейся к текущей
+вершине. Поэтому, когда при обходе формулы вершина попадается еще раз, то ее
+метку следует задавать снова. Если, например, обход формулы
+$$\stree{{HO}3N3\6}$$ ведется от вершины OH к N и далее по часовой стрелке с
+возвратом к N, то метка азота должна появиться в описании дважды:
+\verb"\stree{{HO}3N 1 3 5 7 9 11N}". Если не поставить последний {\tt N}, то
+связь на 11 часов наложится на первую метку азота, ибо тот факт, что в этом
+месте стоит метка, давно забыт. Впрочем, с помощью квадратных скобок почти
+любую формулу можно обойти так, чтобы метки вершин встретились только
+однократно. В нашем случае, например, подействует такая конструкция:
+\verb"\stree{{HO}3N [5] 1 3 5 7 9}". То, что заключено в квадратных скобках,
+как бы проходит незамеченным: после закрывающей скобки вспоминается вершина
+с меткой N и размеры этой метки, так что следующая связь на 1 час рисуется
+правильно.
+
+Внимательный читатель может заметить, что многие формулы в
+наших примерах (например, предыдущая) начинаются прямо с описания метки, а не
+с направления связи, что противоречит формальному синтаксису команды
+\verb"\stree". Здесь срабатывает маленький трюк: перед аргументом
+этой команды до начала его обработки ставится число {\tt 17} --- то есть
+направление фиктивной связи нулевой длины. Если первым в \verb"\stree"
+стоит направление или префикс, то {\tt 17} не произведет никакого
+действия, а если метка, то {\tt 17}\<метка> нарисует эту метку в текущей
+точке.
+
+Отметим еще один случай нарушения формального синтаксиса на примере
+выравнивания длинных меток. Метки, в которых более одного символа, можно по
+разному располагать относительно геометрического центра вершины. По умолчанию
+действует такое правило: если связь имеет наклон {\sl влево\/} (смещение
+связи по горизонтали меньше нуля), то с центром вершины совмещается центр
+самого правого символа метки, иначе (если связь вертикальна или имеет
+наклон вправо) --- самого левого. Это дает правильный результат в большинстве
+случаев, но все же не всегда.
+
+{\samepage
+\rpic[$\!$пиррол]{\stree{~'8/>13/>58`{NH}10}}
+Например, в гетероцикле пиррола, если обходить
+его от самой левой вершины по часовой стрелке, метка NH по умолчанию окажется
+выровненной по H, а не по N, как должно быть. Изменить вид выравнивания
+метки на противоположный можно префиксом {\tt `} (обратный апостроф):
+\verb"\stree{/>1 3/>5 8`{NH} 10}". Здесь есть нарушение правил: префикс {\tt
+`} стоит не перед направлением, а {\sl после\/} него (перед меткой). В этом
+случае нарушение оправдано, поскольку префикс {\tt `}, в отличие от
+остальных, влияет не на связь, а на метку, и значит его логичнее ставить
+перед меткой. Конструкция \verb"`8{NH}", конечно, тоже правильна, но менее
+очевидна, чем \verb"8`{NH}". Кроме того, особый статус префикса {\tt `}
+позволяет применять его, если описание структуры начинается с метки (в этом
+случае по умолчанию метка выравнивается по правому символу).
+Заметим, что право стоять
+после направления связи распространяется только на префикс {\tt `} --- любой
+же другой в этом положении будет считаться началом описания следующей связи.
+
+\rpic{\stree{/>13/>58``{NH}10}}
+Но вернемся к формуле пиррола. Возможно, вам покажется, что центрированная
+метка NH (как в этом абзаце) выглядит лучше. Такой эффект
+достигается за счет {\sl двух\/} префиксов {\tt `}: \ldots\
+\verb"8``{NH}"\ \ldots\ (в этом случае метка рассматривается как единое
+целое, и ее центр совмещается с центром вершины). На самом деле можно
+получить и более тонкие эффекты, если воспользоваться \TeX овскими боксами,
+кернами и клеем (дальнейшие объяснения в этом разделе расчитаны на то, что вы
+знакомы с этими понятиями).
+
+\rpic{\stree{/>1 3/>5 8``{\vtop{\baselineskip=0pt \hbox{N}\hbox{H}}}10}}
+На самом деле обе ранее приведенные формулы
+пиррола не очень хороши. Метка NH слишком широкая, и, вероятно, ее лучше
+расписать по вертикали, как здесь. Чтобы поставить N на H потребовалась
+следующая довольно длинная конструкция:
+\0stree\1/>1 3/>5
+8``\1\0vtop\1\0baselineskip=0pt \0hbox\1N\2\0hbox\1H\2\2\2
+10\2\rm.\par}
+
+Сделаем необходимые объяснения. Два апострофа перед меткой
+нужны для того, чтобы предотвратить центрирование по первому или последнему
+символу --- в данном случае ничего хорошего из этого бы не
+вышло.\footnote{Процесс выделения первого или последнего символа ({\sl
+токена\/}, если быть точным) несколько грубоват, поэтому если вы сами строите
+метку из боксов, то его лучше отключать. Вообще говоря, предусмотрено и
+<<автоматическое>> отключение, если в метке находится примитив \TeX а
+\0hbox\rm, или любая макрокоманда, при раскрытии которой получается
+\0hbox\rm\ (например, \0rlap\rm\ или \0llap\rm). Предполагается, что если вы
+ставите внутри метки \0hbox\rm\ или то, что в него раскрывается, то, значит,
+вы сами хотите управлять размещением метки. Этот метод угадывания мыслей
+небезупречен: так, \0hbox\rm\ обнаруживается только в том случае, если он
+находится на самом внешнем уровне вложенности. В нашем примере \0hbox\rm\
+спрятан внутри \0vtop\rm, поэтому остается два варианта избежать выделения
+крайнего токена: задать перед \0vtop\rm\ пустой \0hbox\rm\ или,
+что проще, поставить два апострофа.}
+Примитив \TeX а \verb"\vtop" делает вертикальный бокс, выровненный по самому
+верхнему из составляющих его боксов, в нашем случае --- по \verb"\hbox{N}"
+(то есть базовые линии \verb"\hbox{N}" и всего \verb"\vtop" совпадут). Иными
+словами, высота метки, заключенной в бокс \verb"\vtop", совпадет с высотой
+\verb"\hbox{N}", а глубину метки составят глубина \verb"\hbox{N}" плюс
+глубина и высота \verb"\hbox{H}". При расположении метки ее глубина
+игнорируется, поэтому центр вершины как раз совпадет с центром символа N\@.
+Присваивание \verb"\baselineskip=0pt" здесь нужно для того, чтобы
+расстояние между N и H не получилось, как между строками в обычном тексте.
+Интересно, что практически тот же результат можно получить с помощью
+невидимой связи длиной три квадрата (\verb"\stree{/>1 3/>5 8N [~-0-3H] 10}"),
+но с одним различием: при смене шрифта расстояние между N и H
+может измениться.
+
+Вот теперь про метки сказано действительно все!
+
+\section{Команды}
+
+\begin{table}\centering
+{\bf Таблица 3.} Значения имеющихся команд.\par\bigskip
+\begin{tabular}{rl|rl|rl}
+\verb"\ph"&\stree{3\ph'9}&\verb"\tbu"&\stree{3\tbu}&{\tabcolsep=0pt
+\begin{tabular}{r}\verb"\O"\\\verb"\CO"\end{tabular}}&\stree{3\O'11'7}\\
+&&&&\\ \hline &&&&\\
+\verb"\pho"&\stree{3\pho'9}&\verb"\tbx"&\stree{3\tbx}&\verb"\OH"&\stree{3\OH}\\
+&&&&\\ \hline &&&&\\ {\tabcolsep=0pt
+\begin{tabular}{r}\verb"\six"\\\verb"\6"\end{tabular}}&\stree{3\6'9}&
+\verb"\ip"&\stree{3\ip}&\verb"\COOH"&\stree{3\COOH}\\
+&&&&\\ \hline &&&&\\
+&&\verb"\Me"&\stree{3\Me}&
+\end{tabular}
+\end{table}
+
+Вместо метки в качестве суффикса может стоять команда. Напомним, что командой
+в \TeX е считается последовательность из сигнального символа \verb"\" и либо
+одной не-буквы, либо нескольких букв, после которых должна идти не-буква
+(например, команда \LaTeX а \verb"\\" относится к первому случаю, а
+\verb"\section" --- ко второму). В макросе \treeTeX\ особые команды могут
+использоваться {\sl внутри\/} общей команды \verb"\stree" для того, чтобы
+упростить ввод некоторых фрагментов (см.\ табл.\ 3). Все фрагменты в
+этой таблице, кроме трех циклических из первой колонки, являются
+одновалентными заместителями, поэтому соответствующие команды устроены так,
+что после них текущая вершина не меняется. Вообще-то, последнее верно и для
+циклических фрагментов, хотя их и нельзя считать одновалентными. Не совсем
+очевидно, например, что для получения цикла
+<<на ножке>> нужно вначале задать связь, а потом и команду в том же
+направлении (так, бифенил {\bondlen=3.5mm\stree{9\ph 33\ph}}
+вводится как \verb"\stree{9\ph 33\ph}"). С другой стороны, такая трактовка
+циклов дает некоторые удобства, ибо позволяет легко вводить структуры с
+конденсированными циклами и циклы с одним гетероатомом:
+$$
+\begin{tabular}{cc}
+\stree{10\6 2\6}&\stree{N3\6 9\Me}\\
+\verb"\stree{10\6 2\6}"&\verb"\stree{N3\6 9\Me}"
+\end{tabular}
+$$
+
+Фрагмент, отвечающий команде, рисуется в направлении, которое
+стоит перед ней (все рисунки в таблице 3 получены для направления
+на 3 часа). Иногда от направления зависит и вид метки (например, если
+сказать \verb"\stree{9\OH}", то получится \stree{9\OH}, а если
+\verb"\stree{3\OH}" --- то \stree{3\OH}) или даже взаимная ориентация меток,
+как в случае с командой \verb"\COOH", при использовании которой кислород
+карбонильной группы всегда оказывается сверху (пример --- кислота
+$$\stree{10\COOH 2\COOH},$$ которая вводится как \verb"\stree{10\COOH
+2\COOH}").
+
+Определение команды
+\verb"\COOH" полезно рассмотреть полностью,
+если вы хотите узнать, что происходит внутри \treeTeX а:
+\begin{verbatim}
+\def\COOH#1{{% аргумент #1 = направление (в часах)
+ \ang=#1 % запомнить направление
+ \b\ang[C] % провести связь с меткой C на конце
+ \ifnum\ang>6 % если больше шести часов (наклон влево), то
+ \rot2 % поворот на два часа вправо по часовой стрелке,
+ {\bt2\b\ang[O]} % вначале рисуем карбонильную группу =O,
+ \rot8 % поворот на 8 часов вправо (= 4 влево),
+ \OH\ang % и рисуем группу OH
+ \else % а иначе делаем наоборот:
+ \rot2 % поворот на два часа вправо,
+ \OH\ang % вначале группа OH,
+ \rot8 % затем поворот,
+ {\bt2\b\ang[O]} % и потом =O
+ \fi}}
+\def\OH#1{{\ifnum#1>6\b{#1}[HO]\else\b{#1}[OH]\fi}}
+\end{verbatim}
+%
+Три макрокоманды, использованные в данном примере, необходимо объяснить.
+Самая главная из них --- \verb"\b", которая собственно и рисует связи и имеет
+два параметра: первый, направление связи --- обязательный, а второй --- метка
+вершины, заключаемая в квадратные скобки --- может отсутствовать.
+В качестве первого параметра обычно выступает
+целая переменная \verb"\ang", означающая текущее направление связи.
+Использование переменной, а не абсолютных значений для этой цели
+позволяет сделать описание фрагмента зависящим от исходного направления,
+которое передается с первым аргументом команды. После присваивания
+\verb"\ang=#1" эта переменная далее только увеличивается или уменьшается, что
+соответствует вращению текущего направления на целое число часов. Эти
+операции обычно выполняются не явно, а с помощью
+команды \verb"\rot", которая гарантирует, что результирующее значение
+\verb"\ang" останется в пределах 11-ти. То, что связи фрагмента проводятся
+не в абсолютных, а относительных направлениях, объясняет, почему перед
+командой нельзя задавать направление в смещениях: его не так просто повернуть
+на целое число часов. Строго говоря, это ограничение не относится к
+фрагментам с одной связью (в этом случае единственная связь рисуется в
+исходном направлении, без всяких поворотов).
+
+%Например, можно получить такой
+%интересный результат: $\stree{-0-3\OH 3 -0+3\OH 3 -0-3\OH +9-0\Me}$, если
+%сказать \verb"\stree{-0-3\OH 3 -0+3\OH 3 -0-3\OH +9-0\Me}".
+
+В определении \verb"\COOH" осталась необъясненной еще
+команда \verb"\bt2", которая используется для рисования группы
+\stree[b]{=3O}\ и означает, что следующая связь должна быть двойной
+центрированной (это соответствует действию префикса {\tt =}). На самом деле
+можно влиять и на другие атрибуты связи (видимость, толщина, и т.\ д.) с
+помощью нескольких управляющих переменных. Сами эти переменные и смысл их
+значений здесь не приводятся: это слишком специальные сведения, и при
+необходимости их можно узнать, обратившись к файлу-источнику {\tt stree.sty}.
+
+Приведенные здесь определения команд \verb"\COOH" и \verb"\OH" заключены в
+дополнительные фигурные скобки, что обеспечивает вспоминание текущей вершины
+после того, как команда отработает. Отметим также, что внутри \verb"\COOH"
+используется более простая команда \verb"\OH". Логика последней достаточно
+проста и заключается только в выборе метки OH или HO в зависимости от
+направления связи.
+
+Набор команд для рисования фрагментов может показаться бедным и
+непредставительным. Действительно, это верно, но кажется, что этот список и
+не стоит расширять. Описание структур на уровне отдельных связей и так
+является достаточно лаконичным, чтобы применение макрокоманд могло дать
+заметные преимущества в краткости или простоте. Польза от макрокоманд
+остается максимальной, пока их немного, все они простые и часто
+используются. В этом случае команды легко удержать
+в голове и применять, почти не задумываясь.
+
+Сказанное выше не значит, однако, что
+создание новых команд (кроме уже имеющихся) для \verb"\stree" совсем лишено
+смысла. Следующий пример поясняет, о чем может идти речь. Пусть требуется
+нарисовать некий граф, вершины которого отмечены жирными
+точками:$$\def\*#1{\b{#1}[$\bullet$]}
+\stree{\*5\*[7\*]3\*1\*3\*5\*7\*9\*11\*}$$ Точке отвечает математический
+символ \verb"$\bullet$", и вы можете, конечно, честно
+начать набирать все это как
+\verb"{$\bullet$} 5{$\bullet$} [7{$\bullet$}" \ldots, однако проще
+сначала определить команду \verb"\*" для рисования жирной точки в данном
+направлении таким образом,
+\begin{verbatim}
+\def\*#1{\b{#1}[$\bullet$]}
+\end{verbatim}
+чтобы потом всю структуру набрать короче:
+\begin{verbatim}
+\stree{\*5\*[7\*]3\*1 \*3\*5\*7\*9\*11\*}.
+\end{verbatim}
+
+На самом деле команды-суффиксы могут иметь не один параметр
+(направление), а два: если сразу после команды стоит открывающая
+фигурная скобка, то все, что находится до закрывающей скобки, рассматривается
+как второй параметр. Покажем одно довольно неожиданное и далекое от химии
+использование этого факта. Если следующим образом
+%
+\begin{verbatim}
+\def\(#1,#2){\sx#1\sy#2\ab30[]} % связь со смещением (#1,#2)
+\def\dB#1[#2]{\(15,0)\(0,-6)\(-3,-3)\(-27,0)\(0,6)\(3,3)
+ \(12,0)\bmode-1 \dmode2 \sy-5 \ab30[#2]\bmode-1 \(0,-4)}
+\end{verbatim}
+%
+определить команду \verb"\dB" для рисования
+прямоугольника с двумя срезанными углами и с надписью внутри, то потом можно
+будет легко вводить блок-схемы типа
+$$
+\def\(#1,#2){\sx#1\sy#2\ab30[]}
+\def\dB#1[#2]{\(15,0)\(0,-6)\(-3,-3)\(-27,0)\(0,6)\(3,3)\(12,0)
+ \bmode-1 \dmode2 \sy-5 \ab30[#2]\bmode-1 \(0,-4)}
+\stree{::-0-3 0\dB{база данных} ::-0-3 [-20-0::-0-3 0\dB{структуры}-0-3]
+ +20-0::-0-3 0\dB{спектры}-0-3}
+$$
+набирая их как химические формулы:
+\begin{verbatim}
+\stree{::-0-3 0\dB{база данных}
+ ::-0-3 [-20-0::-0-3 0\dB{структуры}-0-3]
+ +20-0::-0-3 0\dB{спектры}-0-3}
+\end{verbatim}
+
+Сделаем необходимые комментарии: переменные \verb"\sx" и \verb"\sy" содержат
+смещения, которые используются при проведении связи, если ее
+направление равно условному значению 30 часов. Присвоение \verb"\bmode-1"
+позволяет получить невидимую связь, а в результате \verb"\dmode2" метка
+вершины получается центрированной.
+
+Упоминанием такого необычного приклада команды \verb"\stree" мы закончили
+рассмотрение всех трех компонент (\<префикс>, \<направление>, \<суффикс>) в
+описании отдельных связей. Далее осталось совсем немного: отметить
+особенности \verb"\stree" в целом: способы выравнивания и использования в
+других конструкциях \LaTeX а.
+
+\section{Выравнивание}
+
+Команда \verb"\stree" (с помощью окружения \LaTeX а \verb"picture")
+производит \verb"\hbox", высота которого немного (на {\tt 1ex}) больше
+глубины. Чаще всего это срабатывает правильно, особенно если несколько
+структур являются частью выделенной математической формулы, как в
+следующем примере $$ \stree{9\6 3\OH}+\stree{9\OH 1\O
+5\Me}\longrightarrow\ \stree{9\6 3O 3 1\O 5\Me}+\stree{{H$_2$O}}\ ,$$
+который вводится как
+\begin{verbatim}
+$$
+\stree{9\63\OH}+\stree{9\OH1\O5\Me}\longrightarrow
+\stree{9\63O31\O5\Me}+\stree{{H$_2$O}}
+$$
+\end{verbatim}
+Все формулы в этом примере
+оказались вертикально выровнены по своим центрам. На самом деле способ
+выравнивания можно задать явно, если ввести одну из букв {\tt t}, {\tt b},
+{\tt c} или {\tt u} в квадратных скобках сразу после команды \verb"\stree" (и
+перед ее обязательным аргументом). В соответствии с соглашениями \LaTeX а,
+{\tt [t]} означает выравнивание по верхушке, {\tt [b]} --- по дну, а {\tt
+[c]} --- по центру бокса. По умолчанию действует выравнивание по центру
+(поэтому {\tt [c]} задавать не обязательно). Другие способы (по верхушке и
+дну) обычно пригождаются при составлении таблиц. Параметр {\tt [u]} означает
+отсутствие выравнивания: команда \verb"\stree[u]{"\<описание>\verb"}" дает
+бокс нулевых размеров, точка привязки которого сопрадает с исходной вершиной
+в описании структуры. Это полезно для случая, когда \verb"\stree" сама
+является частью другого рисунка, отдельные элементы которого должны быть
+привязаны к координатам вершин структуры. Если известны координаты хотя бы
+одной вершины, то их можно легко вычислить и для всех остальных, учитывая то,
+что вершины расположены в узлах сетки с шагом 1 квадрат ($1/6$ расстояния
+\verb"\bondlen"). Параметр {\tt [u]} гарантирует знание места начальной
+вершины, а другие параметры --- не всегда, так как при
+выравнивании бокс, который дает \verb"\stree", включает в себя целиком метки
+вершин и вообще все символы, имеющиеся в формуле. Использование {\tt [u]},
+однако, не всегда удобно, поскольку появляется необходимость самому следить
+за размерами формулы.
+
+Существует способ, избавленный от этого недостатка. Вместо одной команды
+\verb"\stree" с описанием внутри можно написать \verb"\begstr
+\tree{" \<описание> \verb"} \endstr", а перед \verb"\endstr" (или после
+\verb"\begstr") вставить любые команды \LaTeX а с учетом того, что координата
+(0,0) отвечает начальной вершине, а единица измерения \verb"\unitlength"
+совпадает с длиной связи \verb"\bondlen" (иными словами, равна 6 квадратов).
+В следующем примере такой способ использован для того, чтобы выделить
+пунктирным прямоугольником фрагмент структуры: $$ \begstr
+\tree{9\OH1//2[~/7{$R_1$}]4[0~2][6]/2539>760/108[-4-5/118~9{$F_1$}]//1011}
+\put(-2,-2){\dashbox{0.2}(4.8,3.8){}}
+\endstr
+$$
+Это изображение вводится следующим образом:
+\begin{verbatim}
+\begstr
+\tree{9\OH1//2[~/7{$R_1$}]4[0~2][6]/2539>760/108
+ [-4-5/118~9{$F_1$}]//1011}
+\put(-2,-2){\dashbox{0.2}(4.8,3.8){}}
+\endstr
+\end{verbatim}
+
+\section{Другие возможности}
+
+Поскольку настоящее изложение связано с химией, отметим возможность ввода в
+\treeTeX е масс-спектров и спектров \CNMR. Например, спектр
+$$
+\massp{220-18!187-33!135-26!133-25,121-100!14,2,107-38!43-35,41-41!}
+$$
+получается в результате
+\begin{verbatim}
+\massp{220-18!187-33!135-26!133-25,121-100!14,2,
+ 107-38!43-35,41-41!}
+\end{verbatim}
+Это просто последовательность чисел, разделенных знаками препинания.
+Если после числа стоит тире, то оно воспринимается как массовое число
+($m/z$) пика, иначе --- как его интенсивность (в процентах к максимальному
+пику). Восклицательный знак отличается от запятой тем, что в первом случае
+над пиком на рисунке будет написано значение его $m/z$. Если после
+одного масового числа стоит несколько чисел, означающих интенсивности (в
+нашем примере --- {\tt 121-100!14,2,}), то имеется в виду последовательность
+пиков с возрастающими $m/z$. Это позволяет
+экономить место, не вводя массовое число, если оно на единицу больше
+предыдущего. Если последний знак во вводе --- запятая, то ее ставить не
+обязательно.
+
+Вид рисунка масс-спектра управляется четырьмя параметрами:
+\begin{itemize}
+\item
+\verb"\mzlen" --- расстояние между соседними линиями, $m/z$ которых
+отличается на 1 (по умолчанию \verb"\mzlen=0.6pt"),
+\item
+\verb"\imax" --- высота максимального пика в единицах \verb"\mzlen"
+(по умолчанию \verb"\imax=50"),
+\item
+\verb"\numfnt" --- шрифт, которым набираются все цифры на рисунке
+(по умолчанию \verb"\def\numfnt{\small}"),
+\item
+\verb"\msdir" --- направление, в котором рисовать пики спектра.
+\end{itemize}
+%
+Послендий параметр используется редко. По умолчанию \verb"\msdir=1",
+что означает обычное направление --- вверх; при любом другом значении пики
+будут направлены вниз. Иногда для визуального сравнения двух масс-спектров их
+удобно расположить зеркально относительно общей шкалы:
+$$
+\begms
+\mass{39-11,0,21,51-5,7,15,64-5,35,7,77-10,5,91-4,74!27,104-6,
+119-26,132-42,4,159-26,81!8,176-15,187-93!12,204-4,232-100!14}
+\put(-1,0){\line(1,0){250}}\msdir=-1
+\mass{39-16,51-7,6,15,65-11,8,77-5,92-73!24,104-9,119-15,
+132-21!159-26,100!14,176-16,187-83!14,204-3,232-70!}\vpos=1
+\endms
+$$
+Этот реальный пример сравнения экспериментального (сверху) и предсказанного
+спектров был введен следующим образом:
+%
+\begin{verbatim}
+\begms
+\mass{39-11,0,21,51-5,7,15,64-5,35,7,77-10,5,91-4,74!27,104-6,
+119-26,132-42,4,159-26,81!8,176-15,187-93!12,204-4,232-100!14}
+\put(-1,0){\line(1,0){250}}\msdir=-1
+\mass{39-16,51-7,6,15,65-11,8,77-5,92-73!24,104-9,119-15,
+132-21!159-26,100!14,176-16,187-83!14,204-3,232-70!}\vpos=1
+\endms
+\end{verbatim}
+%
+По аналогии с командой \verb"\stree", вместо
+\verb"\massp{" \<аргумент> \verb"}" можно писать
+\verb"\begms \mass{" \<аргумент> \verb"} \scale1{} \endms", а между
+\verb"\begms" и \verb"\endms" вставлять любые команды \LaTeX овского
+окружения {\tt picture}. В нашем примере вместо \verb"\scale1{}", которая
+рисует обычную шкалу с рисками и числами, мы провели просто горизонтальную
+линию (ее длина --- округленное в большую сторону значение наибольшего
+массового числа в спектре), а затем нарисовали еще один масс-спектр, который
+получился вверх ногами, потому что перед ним стояло \verb"\msdir=-1". Наконец,
+последнее присваивание \verb"\vpos=1" означает, что весь рисунок должен
+выравниваться по низу (то есть глубина бокса равна нулю). Конечно, при
+использовании самой команды \verb"\massp" выравниванием можно управлять
+обычным способом с помощью необязательного параметра в квадратных скобках
+({\tt b}, {\tt c} или {\tt t}, по умолчанию {\tt c}), но на
+на немного более низком уровне, на который пришлось спуститься в последнем
+примере, действует переменная \verb"\vpos" (это же относится и к разложению
+\verb"\stree" на \verb"\begstr", \verb"\tree" и \verb"\endstr"). Она может
+принимать три значения: 0 --- выравнивание по центру (соответствует параметру
+{\tt [c]}), 1 --- по дну ({\tt [b]}), 2 --- по верхушке ({\tt [t]}) и 3 ---
+без выравнивания (действует только для структурных формул и отвечает
+параметру {\tt [u]}).
+
+В \treeTeX е можно также вводить очень упрощенные схематические рисунки
+спектров \CNMR\ наподобие следующего (высота пиков здесь отражет
+мультиплетности сигналов):
+$$
+\cnmrs{2000}{1912s1645s354d1041s{\llap{$^b\searrow$}}%
+901s138q1576s1703s575q912d1047d{$*$}566q1696s1956s571q953s395t}
+$$
+Приведем соответствующий исходный текст:
+%
+\begin{verbatim}
+\cnmrs{2000}{1912s1645s354d1041s{\llap{$^b\searrow$}}%
+901s138q1576s1703s575q912d1047d{$*$}%
+566q1696s1956s571q953s395t}
+\end{verbatim}
+%
+Команда \verb"\cnmrs" имеет два обязательных параметра: первый --- длина
+шкалы (в десятых от м.\ д.),\ а второй --- описание спектра, в котором для
+каждого сигнала задается значение химического сдвига, умноженное на 10
+(должно быть целое число) и мультиплетность (одна из букв {\tt s} ---
+синглет, {\tt d} --- дублет, {\tt t} --- триплет и {\tt q} --- квартет).
+После знака мультиплетности в фигурных скобках можно поставить метку пика (в
+нашем случае конструкция \verb"\llap{$^b\searrow$}" понадобилась для того,
+чтобы метка пришлась слева от синглета 104.1 м.\ д.\ и не наложилась на
+соседний дублет, помеченный звездочкой).
+
+Способы ввода рассмотренных двух видов спектров немного похожи (по
+сути дела, и здесь, и там --- последовательность чисел с разделителями),
+однако есть и отличия. Так, длинную команду \verb"\massp" можно в любом месте
+разбить на строки, а внутри \verb"\cnmrs" конец строки нежелателен, и его
+(как в приведенном случае) надо маскировать
+знаком комментария (символом \verb"%").
+Кроме того, в \verb"\cnmrs" длина шкалы (и, значит, всего рисунка) всегда
+задается явно, но этого нельзя сделать при вводе масс-спектра. Его размер
+вычисляется по наибольшему массовому числу спектра. Если необходимо получить
+несколько рисунков масс-спектров одинакового размера, можно обмануть машину,
+указав при вводе пик нулевой интенсивности с нужным значением $m/z$.
+Например, закончив ввод масс-спектра выражением \verb"250-0}", вы
+получите шкалу длиной 250 $m/z$ (если, конечно, в спектре не было пика с
+б\'ольшим массовым числом).
+
+\section{Обсуждение результатов}
+
+Один из вопросов, который может возникнуть при знакомстве с настоящей
+работой, формулируется примерно так: зачем изучать какой-то <<птичий язык>>
+для ввода структурных формул, когда есть много удобных программ для
+наглядного редактирования, почти не требующих освоения? По сути дела, это
+старый спор о преимуществах и недостатках командного интерфейса по сравнению
+с графическим. Опытные программисты хорошо знают, что с помощью языка команд
+всегда можно работать быстрее и эффективнее.
+На самом деле, однако, противоречия между двумя способами работы не
+существует, и в идеале хорошо всегда иметь обе возможности (замечательный
+пример их удачного совмещения --- оболочка Norton Commander). При подготовке
+научных публикаций обычно приходится иметь дело в основном со словами
+и символами. Структурные же формулы в химических статьях, подобно
+математическим формулам, чаще тоже удобнее рассматривать просто как элемент
+текста. Если вводить их всегда с помощью химического редактора, то придется
+часто переключаться из одной программы в другую. Даже если предположить, что
+это происходит быстро и непринужденно (в реальности редко достижимый идеал),
+то изменение интерфейса с тектового на графический и обратно все равно
+потребует определенной психологической адаптации. В этом случае возможность
+ввести формулу прямо в тексте, не берясь за мышь и не превращаясь временно в
+чертежника, может сэкономить вам немало времени и нервной энергии.
+
+\begin{thebibliography}
+\frenchspacing
+
+\item
+Knuth, D. The \TeX book. Addison-Wesley, Reading (1984). Русский перевод:
+Дональд Е. Кнут. Все про \TeX.
+
+\item
+Lamport, L. \LaTeX: A Document Preparation System.
+Addison-Wesley, Reading (1984). По \LaTeX у вышло много книжек на русском
+языке. Вот часть из них:
+
+\item
+Ramek, M. In book: Clark, M. (ed.) \TeX: Applications, Uses, Methods.
+Ellis Horwood, London (1990), 277--
+
+\item
+Haas, R. T.; O'Kane, K. C.
+Typesetting Chemical Equations Using \LaTeX.
+Comput. Chem., 11 (1987),
+
+\item
+Fujita, S.
+Typesetting Structural Formulas with the Text Formatter \TeX/LaTeX.
+Comput. Chem., 11 (1993),
+
+\end{thebibliography}
+
+\end{document} \ No newline at end of file