Производственно-внедренческий кооператив

                    "И Н Т Е Р Ф Е Й С"













                Диалоговая Единая Мобильная

                    Операционная Система

                        Демос/P 2.1










                      Макропакет  -me.

                  (Справочное руководство)
















                           Москва

                            1988













     Этот документ содержит  описание  макропакета  -me  для
программ форматирования документов nroff/troff.  Предполага-
ется, что читатель знаком с этими программами, в частности с
понятиями разрыва формата, шрифта, пункторазмера, с приемами
определения и использования числовых регистров, строк и мак-
росов, а также с заданием масштабирующих множителей при чис-
ловых параметрах, позволяющих работать в различных  единицах
измерения,  таких как пункты, единицы EN (ширина буквы 'n'),
вертикальная разрядка , и т.п.

     Более доступное  описание  методики  использования  -me
содержится  в  документе "Подготовка текстов с помощью прог-
раммы nroff и макропакета -me."

     В системе форматирования  документов  существует  набор
макропараметров,  значения  которых  должны  быть  правильно
установлены.  Так например, номеру шрифта должен быть  прис-
воено одно из допустимых значений.  В nroff'е шрифт 8 задает
подчеркивание текста, а в troff'е устанавливает жирный шрифт
(в  то  же  время  шрифт  3  ,  являющийся  жирным шрифтом в
troff'е, не выделяется подчеркиванием в nroff'е).  Установка
шрифта  0   вообще не вызывает изменения шрифта, вместо него
используется шрифт установленный в данный  момент.   Следует
помнить,  что  шрифты  0  и 8 являются "псевдо-шрифтами"; то
есть, их установка  имитируется  с  помощью  макросов.   Это
означает, что хотя присваивание регистру шрифта значений 0 и
8 является корректной операцией, выполнение установки  шриф-
тов  с этими номерами с помощью переключающей последователь-
ности, подобной:

    \f8

вызовет ошибку.

     Все расстояния предполагаются заданными в базовых  еди-
ницах, поэтому масштабирующие множители приходится указывать
практически всегда.  Например, запрос на установку абзацного
отступа шириной 8 единиц EN имеет вид:

    .nr pi 8n

а не

    .nr pi 8

что приведет к установке отступа шириной 8  базовых  единиц,
то  есть  шириной  около  0.02  дюйма.  Далее везде значения
параметров, присваиваемые по умолчанию  будут  приводится  в
тексте в квадратных скобках.

     Регистры и строки вида $x можно использовать в  выраже-
ниях,  но их не следует изменять.  Макросы вида $x выполняют
определеные  функции   (описанные   ниже)   и   могут   быть


                           - 1 -










переопределены  для изменения этих функций.  Переопределение
может повлечь  за  собой  непредсказуемые  эффекты,  поэтому
предварительно стоит просмотреть тело оригинального макроса.

     Все имена в -me подчинены жесткому соглашению.  Пользо-
ватель может определять числовые регистры, строки и макросы,
используя для их именования одну заглавную  латинскую  букву
или  двухсимвольные  имена, состоящие из букв и цифр, причем
один из двух символов обязательно должен быть заглавной бук-
вой  латинского  алфавита.  В противном случае в именах сле-
дует использовать специальные символы.

     Флаг -rx1 может быть использован для  установки  режима
печати с интервалом шириной одна восьмая дюйма, что является
стандартом для печатающих устройств некоторых типов.  Однако
этот  интервал  обычно слишком мал для хорошей разборчивости
текста, поэтому  по  умолчанию  устанавливается  межстрочный
интервал шириной 1/6 дюйма

     Ниже, в тексте документа обозначения параметров некото-
рых  макросов  содержат знак +, например: .sx +N.  Это озна-
чает, что данный параметр является  числовым  и  может  быть
использован, как со знаком (+ или -) так и без него. Исполь-
зование без знака,  соответствует  присваиванию  абсолютного
значения, некоторому числовому регистру, а со знаком, прира-
щению значения этого регистра (соответственно положительному
или отрицательному).

1.  Разбиение текста на параграфы

     Макросы  этого  раздела,  используются  для   разбиения
текста  на  параграфы.   Стандартным  макросом  для  задания
параграфа является .pp; остальные используются  для  задания
параграфов специальных видов.

     Первый вызов любого макроса из этого раздела или  вызов
макроса  .sh  (см. следующую главу) инициализирует макропро-
цессор.  После инициализации нельзя использовать ни один  из
следующих  запросов:  .sc,  .lo, .th, .ac.  Кроме того после
инициализации, неопределен эффект от  изменения  параметров,
определяющих  режим  форматирования  страницы (в особенности
длины страницы и границ верхнего  и  нижнего  колонтитулов),
поэтому подобных действий следует избегать.

.lp            Начать параграф выровненный по  левому  краю.
               Центрирование  текста на странице и подчерки-
               вание выключаются если эти режимы были  уста-
               новлены, устанавливается шрифт \n(pf [1] раз-
               мер  символов  устанавливается  равным  \n(pp
               [10p], перед параграфом пропускается интервал
               шириной \n(ps [0.35v в troff'е, 1v или 0.5v в
               nroff'е  в зависимости от разрешающей способ-
               ности устройства].  Весь параграф  сдвигается


                           - 2 -










               от  левого  края  на  величину \n($i [0] плюс
               \n(po [0] если  только  парграф  не  размещен
               внутри  некоторого  блока.  (смотри .ba).  По
               крайней мере две первые строки параграфа раз-
               мещаются вместе на одном странице.

.pp            Аналогичен  .lp,  за  исключением  того,  что
               делает  абзацный отступ величиной \n(pi [5n].
               Это стандартный макрос для задания параграфа.

.ip T I        Смещенный вправо  параграф  с  подзаголовком.
               Текст  этого  параграфа смещен от левого края
               дополнительно на I пробелов (или  \n(ii  [5n]
               пробелов  если  I  не задано), по сравнению с
               несмещенным параграфом  (таким  как  например
               .pp).   Основной  текст параграфа выровнен по
               своему левому краю,  подзаголовок  располага-
               ется  T,  в  левой части первой строки параг-
               рафа.  Если подзаголовок  T  не  умещается  в
               левой части первой строки параграфа (с учетом
               его длинны и величины сдвига основного текста
               параграфа) .ip, то он печатается на отдельной
               строке перед первой строкой текста параграфа.
               Все  пробелы  в  подзаголовке  T  должны быть
               незаполняемыми.

.jp T I        Вариант .ip, отличающийся от  него  тем,  что
               после  подзаголовка вставляется знак -.  Сме-
               щение от  левого  края  хранится  в  регистре
               \n(ji.

.np            Вариант  .ip,  который  нумерует   параграфы.
               Нумерация начинается каждый раз сначала после
               вызова макросов .lp, .pp, или  .sh.   Текущий
               номер параграфа хранится в \n($p.

2.  Заголовки разделов

     Нумерованные разделы подобны параграфам за  исключением
того,  что номер раздела автоматически создается для каждого
из них.  Номера разделов имеют вид 1.2.3.  Вложенность  раз-
дела  определяется количеством чисел, разделенных десятичной
точкой, в номере раздела.

     Ненумерованные разделы похожи на нумерованные, за  иск-
лючением  того,  что его заголовок не связывается ни с каким
номером.

.sh +N T a b c d e f                Начать нумерованный раз-
               дел вложенности N.  Если N отсутствует, пред-
               полагается  текущая   вложенность,   значение
               которой содержится в числовом регистре \n($0.
               Значения величин, составляющих номер  раздела


                           - 3 -










               содержатся  в  регистрах с именами, начиная с
               \n($1 и кончая \n($6.  Перед началом  раздела
               пропускается  интервал шириной \n(ss [1v].  T
               печатается в качестве заголовка раздела шриф-
               том  \n(sf  [8]  с  размером  символов  \n(sp
               [10p].  К "Имени" раздела можно получить дос-
               туп через строчный регистр \*($n.  Если \n(si
               не равно 0, базовое смещение раздела устанав-
               ливается  равным  \n(si умноженным на вложен-
               ность раздела,  заголовок  раздела  при  этом
               располагается   с   позиции,  соответствующей
               прежднему  базовому  смещению  (Смотри  .ba).
               Заголовок  раздела  можно  сдвинуть вправо от
               установленной для него границы (независимо от
               текста).  Эта величина определяется значением
               регистра \n(so [0].  После  печати  заголовка
               устанавливается  шрифт  \n(pf.   Если  непос-
               редственно после вызова  макроса  sh  следует
               текст,  то  он будет расположен за заголовком
               раздела и в той же самой строке.  Использова-
               ние  макроса  .sh гарантирует, что  заголовок
               раздела и начало его первого параграфа, будут
               размещены  на  одной  странице (всего около 3
               строк).  Если заданы параметры от a до f,  то
               номер  раздела устанавливается в соответствии
               с этими значениями, а не автоматическим  уве-
               личением  одного  из  разрядов  номера  на 1.
               Если одно из значений от a до f  отсутствует,
               то  соответствующий  разряд номера раздела не
               переустанавливается.  Если же значение  соот-
               ветствующее  одному  из  этих  параметров  не
               является числовым, то  соответствующему  раз-
               ряду номера раздела присваивается значение 0.
               Если T представляет собой символ  подчеркива-
               ния  ("_"),  то  происходит  только изменение
               уровня вложенности и номера раздела,  базовое
               смещение   при  этом  остается  неизменным  и
               ничего не печатается.  Это бывает полезно при
               приведении  в  соответствие  номеров разделов
               различного уровня вложенности.

.sx +N         Переход к  уровню  вложенности  N  [-1],  без
               печати  номера  раздела  и  заголовка,  и без
               изменения  номера  раздела   на   уровне   N.
               Результат  выполнения  такой  же, как если бы
               был начат новый параграф  на  уровне  вложен-
               ности N.

.uh T          Ненумерованный заголовок раздела.   Заголовок
               T  печатается  в  точности по тем же правилам
               что и в макросе .sh.




                           - 4 -










.$p T B N      Печатает заголовок раздела.  Может быть пере-
               определен  для печати заголовков в экзотичес-
               ком виде.  T  Собственно  заголовок  раздела,
               передается  данному  макросу  макросами .sh и
               .uh.  B Номер данного раздела,  а  N  глубина
               вложенности  данного раздела.  Часть парамет-
               ров может отсутствовать, например: .sh  пере-
               дает  данному  макросу все три параметра; .uh
               передает только  один  первый;  .sx  передает
               три,  но  первые  два из них являются пустыми
               строками.  Следует проявлять осторожность при
               переопределении  этого  макроса,  он довольно
               сложный и запутанный.

.$0 T B N      Этот макрос  вызывается  автоматически  после
               каждого обращения к .$p.  Он обычно неопреде-
               лен, но может быть использован для  автомати-
               ческого  сбора заголовков разделов и формиро-
               вания содержания документа.  T заголовок раз-
               дела,  который  только  что  был напечатан; B
               номер раздела; и N уровень  вложенности  раз-
               дела.

.$1 - .$6      Макросы-ловушки, вызываются всякий раз  перед
               печатью  разделов  соответствующего им уровня
               вложенности.  Могут быть переопределены, нап-
               ример для того, чтобы пропустить нужное число
               строк перед очередным разделом.  Эти  макросы
               вызываются  из .$p, поэтому при переопределе-
               нии последнего вы можете  потерять  указанную
               возможность.


3.  Верхний и нижний колонтитулы

     Верхний и нижний колонтитулы автоматически  размещаются
на  каждой странице.  Они печатаются шрифтом \n(tf [3] пунк-
торазмер символов \n(tp [10p].  Каждое из определений колон-
титулов  начинает  работать со следующей страницы.  Трехэле-
ментные колонтитулы должны заключаться в  кавычки  если  они
содержат  где-либо  два  подряд  идущих  пробела или в общей
сложности более восьми пробелов.

     Расположение верхнего и нижнего колонтитулов  определя-
ется  четырьмя  числовыми регистрами.  \n(hm [4v] расстояние
от верха страницы до верхнего колонтитула.  \n(fm [3v] расс-
тояние  от  нижнего  края  страницы  до нижнего колонтитула,
\n(tm [7v] расстояние от верха  страницы  до  первой  строки
текста  на  ней.   И  \n(bm  [6v] расстояние от нижнего края
страницы до последней строки, где может располагаться текст.

.he 'l'm'r'    Определяет трехэлементный колонтитул, который
               будет   печататься  в  верхней  части  каждой


                           - 5 -










               страницы.

.fo 'l'm'r'    Определяет нижний колонтитул,  который  будет
               печататься в нижней части каждой страницы.

.eh 'l'm'r'    Определяет верхний колонтитул, который  будет
               печататься  на каждой странице с четным номе-
               ром.

.oh 'l'm'r'    Определяет верхний колонтитул, который  будет
               печататься  на  каждой  странице  с  нечетным
               номером.

.ef 'l'm'r'    Определяет нижний колонтитул,  который  будет
               печататься  на каждой странице с четным номе-
               ром.

.of 'l'm'r'    Определяет нижний колонтитул,  который  будет
               печататься  на  каждой  странице  с  нечетным
               номером.

.hx            Задает отсутствие печати колонтитулов на сле-
               дующей странице.

.m1 +N         Установить расстояние между верхней  границей
               страницы и верхним колонтитулом.  [4v].

.m2 +N         Установить расстояние между верхним  колонти-
               тулом и первой строкой текста.  [2v].

.m3 +N         Установить расстояние между нижним колонтиту-
               лом  и последней строкой, где может быть рас-
               положен текст.  [2v].

.m4 +N         Установить расстояние между  нижней  границей
               страницы и нижним колонтитулом.  [4v].

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

.$h            Вызывается  на  каждой  странице  для  печати
               верхнего колонтитула.  Может быть переопреде-
               лен для печати  колонтитулов  более  сложного
               вида  (например,  многострочных), но при этом
               перестают работатЬ макросы:  .he,  .fo,  .eh,
               .oh,  .ef, и .of, а также макрос .+c печатаю-
               щий заголовки глав.

.$f            Печать нижнего колонтитула, справедливы те же
               замечания, что и для .$h.


                           - 6 -










.$H            Обычно это макрос не определен, он вызывается
               при  печати  верхней  части  страницы  (после
               вывода верхнего колонтитула) то  есть  непос-
               редственно  перед  началом  выдачи  текста на
               очередную страницу.  Может  быть  использован
               для  размещения на страницы заголовков столб-
               цов в двухколоночном режиме и других подобных
               целей.

4.  Блоки

     Перед началом любого блока и после его конца (за исклю-
чением  центрированных,  плавающих  блоков  и  блоков цитат)
вставляется интервал шириной \n(bs  [этот  числовой  регистр
подобен  \n(ps].   Размеры аналогичных интервалов для блоков
цитат и плавающих блоков хранятся в других  регистрах.   Для
центрированных  блоков никакие интервалы по умолчанию вообще
не вставляются.  Величина  вертикальной  разрядки  для  всех
блоков  за  исключением центрированных блоков и блоков цитат
хранится в регистре \n($R, а не в регистре \n($r.

.(l m f        Начать  список.   Списки  представляют  собой
               текст   печатаемый  через  один  интервал,  в
               режиме без заполнения.  Если параметр f имеет
               значение  F, список будет печататься в режиме
               с заполнением.  Если параметр m [I]  равен  I
               список сдвигается вправо на \n(bi [4n] пробе-
               лов; если он равен M, то список печатается по
               левой краю страницы; если он равен L, то спи-
               сок печатается с тем же  базовым  сдвигом,  с
               которым  печатается основной текст.  (отличие
               от M проявляется только в  том  случае,  если
               базовое смещение, хранимое в \n($i и устанав-
               ливаемое с помощью .ba, не равно 0); если  же
               указанный  параметр равен C, то каждая строка
               списка центрируется по  отдельности.   Список
               печатается  шрифтом \n(df [0].  Список обяза-
               тельно должен закрываться макросом .)l.  Блок
               типа  список  очень похож на блок типа .(b за
               исключением того, что не производится попытка
               разместить  его  весь  целиком на одной стра-
               нице.

.)l            Конец списка.

.(q            Начать цитату.   Это  блок  печатается  через
               один  интервал,  с заполнением и сжат с обеих
               сторон по сравнению  с  основным  текстом  на
               величину  \n(qi  [4n].  Перед началом блока и
               после  него  пропускается  интервал   шириной
               \n(qs  [подобен  регистру \n(bs], текст блока
               печатается символами размером \n(qp [на  один
               "пункт" меньше окружающего текста].


                           - 7 -










.)q            Конец блока цитат.

.(b m f        Открыть простой блок.  Простой блок представ-
               ляют собой текст, который по возможности раз-
               мещается целиком на одной странице  (подобные
               блоки  необходимы  для печати таблиц и рисун-
               ков, которые не следует  разрывать,  если  по
               тексту они попадают на конец страницы).  Если
               блок не умещается  на  текущей  странице,  то
               откроется  новая  страница,  если  только при
               этом не потребуется  пропустить  более  \n(bt
               [0]  пустых строк.  Если \n(bt равно нулю, то
               проверка на число пропускаемых  пустых  строк
               не  выполняется.   Печатается без заполнения,
               если только параметр f не равен F, что  вклю-
               чает режим заполнения.  Блок будет печататься
               с отступом равным базовому сдвигу окружающего
               блок  текста, если m равен L, или будет сдви-
               нут вправо от текста на \n(bi  [4n],  если  m
               равно  I или отсутствует, или будет центриро-
               ван (каждая строка отдельно), если m равно C,
               или  же будет сдвинут к левому краю страницы,
               если m  равно  M.   Блок  печатается  шрифтом
               \n(df [0].

.)b            Конец простого блока.

.(z m f        Открыть плавающий блок.  Этот макрос  подобен
               .(b за исключением того, что его текст всегда
               помещается в конце  текущей  страницы  или  в
               начале  следующей.  Таким образом, местополо-
               жение этого блока чувствительно к вносимым  в
               текст  изменениям.   Перед началом плавающего
               блока  и  после  его  завершения  вставляется
               интервал  шириной  \n(zs  [1v].   Кроме того,
               значение параметра м по умолчанию предполага-
               ется равным M.

.)z            Конец плавающего блока.

.(c            Начать  центрированный   блок.    Последующий
               текст центрируется, как одно целое, а не каж-
               дая его строка в отдельности, как при исполь-
               зовании  .(b  C.  Этот блок может быть вложен
               внутрь других блоков.

.)c            Конец центрированного блока.

5.  Накопление текста для последующей выдачи

.(d            Открыть блок задержанного текста.  Этот текст
               не  печатается  в том месте документа, где он
               непосредственнно расположен, а сохраняется  с


                           - 8 -










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

.)d            Конец задержанного текста.  Числовой  регистр
               задержанного  текста  \n($d и соответствующий
               ему строчный регистр \*# увеличиваются  на  1
               при  обращении  к  \*#  между  двумя  блоками
               задержанного текста.

.pd            Печать  задержанного  текста.    Весь   текст
               накопленный  с помощью команд .(dи .)d форма-
               тируется и  печатается.   Этот  макрос  может
               использоваться в конце каждой главы.

.(f n          Открыть текст страничной сноски.  Текст стра-
               ничной сноски перемещается вниз текущей стра-
               ницы и печатается шрифтом \n(ff [1] с  разме-
               ром символов \n(fp [8p].  Каждой сноске пред-
               шествует  интервал  шириной   \n(fs   [0.2v].
               Сноска  печатается  со  сдвигом \n(fi [3n] от
               левого края страницы, и со сдвигом \n(fu  [0]
               от  правого  края.  Eсли в качестве параметра
               задан символ подчеркивания, то сноска печата-
               ется  без  сдвига  от  левого  края страницы.
               Страничные сноски всегда печатаются в  однко-
               лоночном режиме.  Если текст сноски полностью
               не умещается на текущей странице, то он  про-
               должается на следующей.

.)f            Конец страничной  сноски.   Числовой  регистр
               \n($f  и соответствующий ему строчный регистр
               \** увеличиваются на 1  если  к  ним  имеется
               обращение.   Если желательно, чтобы на каждой
               странице была своя внутренняя нумерация  сно-
               сок,  начинающаяся  с  1,  следует определить
               макрос .$H так, чтобы он  содержал  следующую
               последовательность команд:

                   .nr $f 1 1
                   .ds  \\*[1\\*]\k*


.$s            Макрос печатающий линию-разделитель для стра-
               ничных  сносок.  Может быть переопределен для
               задания другой  длинны  этой  линии  или  для
               печати  разделителя иного вида.  Макрос в его
               текущем состоянии печатает линию длинной  1.5
               дюйма.

.(x x          Открыть индексированный текст.  Индексирован-
               ный текст записывается и хранится в индексе x
               [x] до тех пор  пока  не  будет  напечатан  с


                           - 9 -










               помощью  макроса  .xp.  Каждому индексирован-
               ному  тексту  предшествует  интервал  шириной
               \n(xs  [0.2v].   Каждый индексированный текст
               "сдвинут влево" от правой границы страницы на
               \n(xu  [0.5i];  этот  регистр содержит размер
               поля, выделяемого от  правого  края  страницы
               для  печати  параметров  макроса (в частности
               номера страницы).

.)x P A        Закончит индексированный  текст.   Индексиро-
               ванный текст заканчивается линией из точек со
               строкой A [пустая строка] прижатой к  правому
               краю страницы (например имя автора статьи), и
               строкой P перед ней [\n%].  Если присутствует
               параметр  A, должен присутствовать и параметр
               P.  \n% можно использовать для  печати  теку-
               щего  номера страницы.  Если P символ подчер-
               кивания, то ни линия из точек, ни номер стра-
               ницы не печатаются.

.xp x          Напечатать  индексированный  текст   x   [x].
               Индексированный  текст форматируется с учетом
               параметров (шрифт, размер  символов  и  т.д.)
               установленных в том месте, где он печатается,
               а не тех, которые были установлены  во  время
               накопления текста.

6.  Вывод по колонкам

.2c +S N       Переход в двухколоночный  режим.   Расстояние
               между  колонками  устанавливается  равным  +S
               [4n, 0.5i для печати в стиле ACM] (это значе-
               ние  хранится  в \n($s) Ширина колонки вычис-
               ленная исходя из ширины страницы и расстояния
               между  колонками,  хранится  в  \n($l.  Номер
               текущей  колонки  записан  в  \n($c.    Чтобы
               узнать  во  сколько  колонок будет печататься
               текст следует посмотреть содержимое  регистра
               \n($m  [1].   В  общем  случае  данный макрос
               устанавливает вывод в N [2] колонок.

.1c            Возвращение в одноколоночный режим.

.bc            Начать колонку.  Этот макрос подобен  .bp  за
               исключением  того,  что новая колонка начина-
               ется на новой странице только  при  необходи-
               мости, когда на текущей странице уже не оста-
               лось свободных столбцов.

7.  Шрифты и размеры

.sz +P         Пукнкторазмер символов устанавливается равным
               P  [10p], пропорционально ему устанавливается


                           - 10 -










               и межстрочный интервал.   Отношение  величины
               интервала к пункторазмеру хранится в регистре
               \n($r.   Аналогичное  отношение  используемое
               внутри  блоков  и  сносок хранится в регистре
               \n($R (оно не используется при  обращениии  к
               макросу .sz).

.r W X         Печатает текст W обычным  шрифтом,  и  непос-
               редственно за ним текст X ранее установленным
               шрифтом.  Для задания более сложного управле-
               ния  шрифтами можно использовать в качестве X
               управляющую  последовательность   \c.    Если
               параметры отсутствуют, то обычный шрифт уста-
               навливается текущим.

.i W X         Печатает текст W курсивом, и  непосредственно
               за  ним  текст X ранее установленным шрифтом.
               Если параметры отсутствуют, то  курсив  уста-
               навливается  текущим  шрифтом.  В nroff текст
               выделяется подчеркиванием.

.b W X         Печатает текст W  жирным  шрифтом,  и  непос-
               редственно за ним текст X ранее установленным
               шрифтом.  Если параметры отсутствуют, то жир-
               ный  шрифт  устанавливается текущим.  В nroff
               текст выделяется подчеркиванием.

.rb W X        Печатает текст W  жирным  шрифтом,  и  непос-
               редственно за ним текст X ранее установленным
               шрифтом.  Если параметры отсутствуют, то жир-
               ный шрифт устанавливается текущим.  .rb отли-
               чается от .b тем, что .rb не выделяется  под-
               черкиванием в nroff.

.u W X         Печатает с подчеркиванием текст W и добавляет
               за  ним  X.   Это  истинное  подчеркивание, в
               отличие от запроса  .ul,  который  производит
               переход к "подчеркнутому шрифту" (в troff это
               обычно курсив).  Этот макрос не  будет  рабо-
               тать  правильно  если текст W слишком длинный
               или разрывается каким-либо  образом  (включая
               перенос  с  использованием  дефиса).  Другими
               словами,  использование  этого  шрифта   кор-
               ректно, только при работе в режиме без запол-
               нения строк.

.q W X         Взять в кавычки текст W и добавить за ним  X.
               В nroff этот макрос заключает текст W в двой-
               ные кавычки (`"'), а в troff в парные  откры-
               вающие и закрывающие кавычки.

.bi W X        Печатает текст W жирным  курсивом,  и  непос-
               редственно  за  ним  текст  X.   Этот  эффект


                           - 11 -










               достигается  печатью  W  обычным  курсивом  с
               двойной  пробивкой  каждого символа.  В nroff
               простое подчеркивание.  Этот макрос не  будет
               работать правильно если текст W слишком длин-
               ный или разрывается каким-либо образом (вклю-
               чая  перенос  с использованием дефиса).  Дру-
               гими словами, использование этого шрифта кор-
               ректно, только при работе в режиме без запол-
               нения строк.

.bx W X        Печатает текст W заключенным в рамку и добав-
               ляет к нему текст X.  В nroff простое подчер-
               кивание.  Этот макрос не будет работать  пра-
               вильно  если текст W слишком длинный или раз-
               рывается каким-либо образом (включая  перенос
               с  использованием  дефиса).  Другими словами,
               использование этого шрифта корректно,  только
               при работе в режиме без заполнения строк.

8.  Макросы в стиле программы roff

.ix +N         Смещение текста вправо без  разрыва  формата.
               Эквивалент 'in N.

.bl N          Оставляет незаполненными N пустых строк, если
               на текущей странице для них не хватает места,
               то этот же интервал пропускается на следующей
               странице.  Эквивалентно .sp N внутри блока.

.pa +N         Эквивалентно .bp.

.ro            Установка  печати  номеров  страниц  римскими
               цифрами.  Эквивалентно .af % i.

.ar            Установка печати  номеров  страниц  арабскими
               цифрами.  Эквивалентно .af % 1.

.n1            Начать нумеровать строки, начиная с  единицы,
               на каждой странице.

.n2 N          Начать нумеровать строки, начиная с N.  Прек-
               ратить нумерацию строк если N = 0.

.sk            Оставить следующую страницу  пустой,  печатая
               только  колонтитулы.  Используется для резер-
               вирования  страницы  и  последующего  ручного
               размещения  на ней различных рисунков и диаг-
               рам, получаемых внешним по отношению  к  сис-
               теме  форматирования образом.  Для резервиро-
               вания  части  страницы  в  аналогичных  целях
               используйте .sv N, где N размер резервируемой
               области.  Соответствующее число строк пропус-
               кается  непосредственно  на текущей странице,


                           - 12 -










               если на ней осталось  достаточно  места,  или
               если  места  не  текущей странице не хватает,
               резервирование производится в начале  следую-
               щей  страницы.   Однако, следует помнить, что
               если N превышает количество строк размещаемых
               на  странице,  резервирование  места не будет
               производится вообще.

9.  Работа с препроцессорами

.EQ m T        Начало  уравнения.   Уравнение   центрируется
               если  m  равно  C или отсутствует, сдвигается
               вправо на \n(bi [4n] если m равно I, или рас-
               полагается  с  левого  края  страницы  если m
               равно L.  T заголовок,  печатаемый  в  правой
               части  страницы сразу же после самого уравне-
               ния.


.EN c          Конец уравнения.  Если c равно C, то  предпо-
               лагается,  что  за  данным  уравнением непос-
               редственно  следует  другое,  начинающееся  с
               очередного  .EQ,  текст которого центрируется
               вместе с текстом данного уравнения.   В  про-
               тивном  случае, перед уравнением и после него
               вставляются интервалы шириной \n(es [0.5v  in
               troff, 1v in nroff], текст уравненения распо-
               лагается всегда целиком на одной странице.

.TS h          Начало  таблицы.   Таблицы  печатаются  через
               один интервал и если это возможно размещаются
               на одной странице.  Если  необходимо  напеча-
               тать  таблицу,  которая не умещается на одной
               странице, используйте h  =  H  с  последующим
               описанием  заголовка таблицы (который печата-
               ется на каждой  странице,  где  располагается
               таблица)  с  помощью  .TH.   Смотри  документ
               Препроцессор для подготовки таблиц tbl.

.TH            При использовании .TS H, заканчивает описание
               заголовка таблицы.

.TE            Конец таблицы.  Следует помнить, что  таблица
               сама   по  себе  располагается  в  том  месте
               текста, где она была определена, и  не  обла-
               дает   свойствами   аналогичными   плавающему
               блоку.  Кроме  того  если  в  тексте  таблицы
               встречаются  запросы типа .sp, то ее размеще-
               ние на одной странице не гарантируется.  Если
               желательно,  чтобы  таблица  перемещалалсь по
               тексту (или если внутри текста  таблицы  име-
               ются  запросы), то следует всю таблицу (вклю-
               чая строки с запросами .TS и  .TE)  поместить


                           - 13 -










               внутрь скобок плавающего блока: .(z и .)z.

10.  Другие возможности

.re            Установка стандартного шага табуляции.  Уста-
               навливается  равным  0.5i  в  troff  и 0.8i в
               nroff.

.ba +N         Установка базового  смещения  равным  +N  [0]
               (хранится  в регистре \n($i).  Все параграфы,
               разделы  и  блоки  расположенные  ниже  будут
               печататься  сдвинутыми  на  эту величину.  На
               формат верхнего и нижнего  колонтитулов  этот
               макрос  действия  не  оказывает.   Макрос .sh
               обращается к .ba если \n(si [0] содержит не 0
               и   устанавливает   базовое  смещение  равным
               \n(si*\n($0.

.xl +N         Длинна  строки   устанавливается   равной   N
               [6.0i].   Отличается  от  .ll тем, что влияет
               только на текущее окружение.

.ll +N         Устанавливает длину строки равной N [6.0i]  в
               каждом  окружении.   Этот  макрос  не следует
               использовать после начала  вывода  текста,  в
               особенности   это   касается  двухколоночного
               вывода.   Текущая  длина  строки  хранится  в
               \n($l.

.hl            Проводит горизонтальную черту по всей  ширине
               страницы.  Это бывает полезно при использова-
               нии плавающих блоков для отделения  основного
               текста от текста блока.

.lo            Подгружает дополнительный набор макросов  (из
               /usr/lib/me/local.me),  подразумевается,  что
               это  макросы  местного  значения,   множество
               которых определяться в каждой конкретной сис-
               теме по своему.  Имена этих  макросов  должны
               иметь  вид:  .*X,  где X любая буква (большая
               или маленькая) или цифра.

11.  Стандартное оформление документов

.tp            Начать титульный лист.  Верхняя  часть  стра-
               ницы  остается свободной, печать колонтитулов
               подавляется.  Кроме того, не происходит  уве-
               личения номера страницы.

.th            Установка  режима  печати  документа  в  виде
               тезисов.  Печать ведется через два интервала,
               номер страницы печатается на  месте  верхнего
               колонтитула.    Совместно   с  этим  макросом


                           - 14 -










               предполагается использование .++  и  .+c.   К
               этому макросу следует обращаться перед первым
               обращением к  макросу  начала  параграфа  или
               макросу .sh.

.++ m H        Определяет тип нижеследующей части форматиру-
               емого  документа.  Под частью понимается пос-
               ледовательность глав, приложений или  вспомо-
               гательных  разделов. Каждая часть имеет опре-
               деленный  тип,  от  которого  зависит  способ
               оформления  относящихся  к  ней страниц.  Тип
               части определяется параметром m.  C означает,
               что  далее  будет  следовать  основная  часть
               документа, разбитая на главы, A означает, что
               далее  располагаются  различные приложения, P
               означает, что далее располагаются такие вспо-
               могательные  разделы документа, как введение,
               содержание, и т.п.,  AB  означает,  что  ниже
               располагаются вспомогательные разделы с неза-
               висимой нумерацией, начинающейся с 1, B озна-
               чает, раздел библиографии, который необходимо
               размещать в конце документа.  Также  возможно
               использование вариантов RC и RA которые опре-
               деляют часть документа, состоящую из последо-
               вательности глав (или соответственно приложе-
               ний) внутри каждой из  которых  ведется  своя
               нумерация  страниц,  начиная с 1.  Параметр H
               определяет  текст  заголовка,  который  будет
               использоваться  в  качестве  колонтитулов  на
               страницах, данной части документа.  Если этот
               текст  содержит  пробелы,  то  он должен быть
               взят в кавычки.  Если желательно, чтобы  этот
               заголовок   содержал   номер  главы,  следует
               использовать строку вида \\\\\\\\n(ch.   Нап-
               ример для нумерации приложений в виде A.1 где
               A это номер приложения, а 1  номер  страницы,
               можно  использовать  следующий  запрос .++ RA
               '''\\\\\\\\n(ch.%'.  Каждому разделу  (главе,
               приложению,  и  т.д.)  должен  предшествовать
               запрос .+c.

.+c T          Начать главу с названием T.  Номер главы хра-
               нится   в  регистре  \n(ch.   Значение  этого
               регистра увеличивается всякий раз при  вызове
               .+c  с  параметром.   Название  и номер главы
               печатаются макросом .$c.  На первой  странице
               каждой главы текст верхнего колонтитула печа-
               тается в позиции нижнего  колонтитула.   Если
               параметр  T  опущен,  .$c  не вызывается; это
               бывает полезно при оформлении "титульных лис-
               тов", отличным от стандартного способом.  .$c
               вызывает .$C  поэтому  заголовки  глав  могут
               автоматически     попадать    в    содержание


                           - 15 -










               документа.  Нумерация сносок начинается с 1.

.$c T          Печатает номер главы (из  регистра  \n(ch)  и
               текст  T.  Может быть переопределен по вашему
               усмотрению.  Этот макрос вызывает $C, который
               может   быть   доопределен  для  формирования
               индексных текстов или других подобных  дейст-
               вий.

.$C K N T      Этот макрос вызывается  из  .$c.   Обычно  он
               неопределен,  но  может  быть использован для
               создания индексированных текстов,  содержащих
               номер  главы и ее название, и в других подоб-
               ных целях.   K  ключевое  слово,  обычно  это
               "ГЛАВА"  или  "ПРИЛОЖЕНИЕ"  (в зависимости от
               параметра макроса .++);  N  номер  главы  или
               приложения,  и  T название главы или приложе-
               ния.

.ac A N        Этот макрос (сокращение от  .acm)  устанавли-
               вает  параметры  nroff,  таким  образом,  что
               текст подгатавливается в формате  принятом  в
               журнале  ACM.  Размеры страниц в этом формате
               на 25%  больше  стандартной,  колонтитулы  не
               печатаются.   Имя автора A печатается в верх-
               ней части страницы (эта часть,  в  журнал  не
               попадает),  вместе с номером страницы и общим
               числом страниц N.   Кроме  того,  это  макрос
               подгружает       макросы       из       файла
               /usr/lib/me/acm.me, в  котором  могут  содер-
               жатся  другие  макросы  также предназначенные
               для подготовки статей в стиле ACM.

12.  Предопределенные строки

\**            Номер сноски, на самом  деле  находится  в  [
               \n($f].   Значение  этой строки автоматически
               увеличивается после каждого обращения к .)f.

\*#            Номер задержанного  текста.   На  самом  деле
               находится в [\n($d].

\*[            Верхний  индекс.   Текущая  строка  несколько
               смещается вверх, и происходит переход к мень-
               шему пункторазмеру  символов,  если  оба  эти
               действия  можно  выполнить на конкретном уст-
               ройстве, в противном случае просто печатается
               символ   (`[').   Перед  строкой,  содержащей
               верхний индекс,  пропускается  более  широкий
               интервал,  чтобы  текст индекса мог нормально
               разместиться.




                           - 16 -










\*]            Конец  текста  верхнего  индекса.    Действие
               обратное  \*[.   Так например, чтобы получить
               текст с верхним индексом, следует вставить  в
               текст   строку   следующего  вида:  x\*[2\*],
               результатом  форматирования  которой   будет:
               x[2].

\*<&lt;            Нижний индекс.  Печатается `<' если  на  уст-
               ройстве  невозможен  сдвиг строки вниз.  Если
               сдвиг возможен, ширина интервала после  теку-
               щей  строки  выбирается такой, чтобы для ниж-
               него индекса хватило места.

\*>&gt;            Конец  текста  нижнего   индекса.   Выполняет
               действия противоположные \*<&lt;.

\*(dw          Название текущего дня недели.

\*(mo          Название текущего месяца.

\*(td          Сегодняшняя дата в следующем  виде:  26  Сен-
               тября  1988 г.   запись  даты  в других видах
               можно получить, используя  \n(dy  (номер  дня
               месяца;  например,  26),  \*(mo (как описанно
               выше) or \n(mo (то же самое, но в виде поряд-
               кового  номера  месяца; например, 26 Сентября
               то же что и 26/9), и наконец \n(yr (последние
               две цифры текущего года).

\*(lq          Знак  левого  ударения  (левой  кавычки).   В
               nroff это просто двойная кавычка.

\*(rq          Правое ударение (правая кавычка).

\*-            Тире шириной 3/4 EM в  troff;  два  минуса  в
               nroff.



















                           - 17 -










                         СОДЕРЖАНИЕ



1.  Разбиение текста на параграфы .....................    2

2.  Заголовки разделов ................................    3

3.  Верхний и нижний колонтитулы ......................    5

4.  Блоки .............................................    7

5.  Накопление текста для последующей выдачи ..........    8

6.  Вывод по колонкам .................................   10

7.  Шрифты и размеры ..................................   10

8.  Макросы в стиле программы roff ....................   12

9.  Работа с препроцессорами ..........................   13

10. Другие возможности ................................   14

11. Стандартное оформление документов .................   14

12. Предопределенные строки ...........................   16




























                           - 18 -




Популярность: 3, Last-modified: Mon, 29 Jun 1998 14:14:25 GmT