Страница:
ДИАЛОГОВАЯ ЕДИНАЯ МОБИЛЬНАЯ ОПЕРАЦИОННАЯ СИСТЕМА
ДЕМОС
MX - КРАТКОЕ ВВЕДЕНИЕ
АННОТАЦИЯ
В данном документе содержится описание команды формати-
рования текстов mx.
2
111. Введение
Изготовление документации с помощью вычислительных ма-
шин имеет ряд особенностей по сравнению с использованием пи-
шущих машинок:
1. Необходим доступ к вычислительной машине.
2. Требуются некоторые знания по работе за терминалом
(которые немного больше умения включить машинку и
зарядить чистый лист).
3. Доступное печатающее устройство должно удовлетво-
рять запросы по набору шрифтов, скорости печати и
т.д.
4. При наборе текста можно допускать произвольное
число ошибок. Исправление их не требует перепеча-
тывать весь лист. При некотором навыке можно не
набирать все подряд, а, например, воспользоваться
возможностью запоминать текст и выдавать его при
нажатии одной/двух кнопок вместо повторного набора.
Таких средств несколько.
5. Текст набирается в произвольной форме без переносов
слов и попыток самостоятельно придать ему осмыслен-
ную форму.
6. Текст перемешивается с указаниями о том, что это
такое - абзац, заголовок или что-то еще. Указания
эти занимают несколько процентов общего об'ема
текста и очень просты для изучения.
7. Всяческая нумерация, вроде номеров разделов, стра-
ниц, таблиц и т.д. ставится автоматически. Через
много лет можно вписать еще одну главу. При этом,
если надо, текст смотри главу 2 (стр.44) преобразу-
ется в смотри главу 3 (стр.55).
8. При обновлении списка литературы корректность ссы-
лок сохраняется.
9. Настройка документа на параметры вывода (например,
на размеры листа) не зависит от исходного способа
набора.
10. Число экземпляров документа ограничено количеством
имеющейся бумагой и ресурсом печатающего уст-
ройства.
11. Если потребуется сделать издание второе, исправлен-
ное и дополненное, то набирать текст заново нет не-
обходимости - достаточно внести изменения.
Существует еще множество мелких преимуществ вроде использо-
вания уже когда-то кем-то набранных документов, ведения вся-
3
ческих электронных делопроизводств и т.д. К описанию mx это
не относится.
222. Подготовка документа
Если при работе за пишущей машинкой требуется думать о окон-
чательном варианте текста, то при использовании mx это не
обязательно. Обычной практикой является метод набрать все
подряд, распечатать, а затем улучшать.
Например, если при подготовке некоторого текста забыты
какие-то цифры, то следует не задумываясь набирать текст
At ___ o'clock the alarm-clock rings ...
а затем, распечатав предварительно сформатированный вариант
и начав постепенно его исправлять, уточнить, заодно, необхо-
димые данные, и исправить текст на:
At six o'clock the alarm-clock rings ...
Для замены символов ___ на six требуется нажать несколько
клавиш. Никаких помарок в окончательном документе не поя-
вится.
333. Управляющие директивы
Управляющие директивы располагаются среди текста и не
попадают на печать, а сообщают mx о том, что надо сделать с
последующим текстом. Например, для mx форма выдачи следую-
щего текста
Millions of people in all
parts of the world are taking
great
interest
in
Marxizm-Leninizm
nowadays.
неочевидна. Однако, поставив перед текстом директиву pp в
виде
.pp
Millions of people in all
.....
мы однозначно укажем, что этот текст является абзацем и при
форматировании он примет следующий вид:
Millions of people
4
in all parts of the
world are taking great
interest in Marxizm-
Leninizm nowadays.
Возникает вопрос, откуда mx узнает об окончании фрагмента (в
данном случае абзаца)? В большинстве случаев от следующей
директивы:
.pp
Marxist doctrine
has changed from
.....
.pp
Transformations
have taken place under
.....
.pp
The theory,
created more than a century ago
.....
Следует заметить, что текст набирается прижатым к левому
краю и не содержит лишних пробелов. Пример неправильного
набора имеет вид *1):
Dialectical and historical
materialism are organic parts
....
Кроме того, в набираемом тексте не следует делать переносов
слов и без особых целей оставлять пустые строки.
Хорошим стилем является набор в виде недлинных строк и пере-
ход к новой строке в конце каждого предложения, то есть,
обычно, после знаков .,;?!.
Заметим, что mx не понимает смысла сочетаний типа:
Gulliver was ( not ) set free , but
где сочетания (, not, ), free, , и but трактуются как от-
дельные слова и могут привести к выводу ) или , с начала но-
вой строки. Правильной конструкцией является:
Gulliver was (not) set free, but ...
Многие директивы mx могут иметь так называемые аргументы, то
есть дополнительные указания о том, как выполнить директиву.
Примером может служить директива пропуска пустых строк sp.
Простой вызов
.sp
________________
*1) На самом деле, пустое место просто передается в выходной
текст. Поскольку набиратся фрагмент типа абзац, который
обычно не содержит пустых мест, то лишние пробелы счита-
ются ошибкой.
5
приводит к выводу 1 пустой строки, в то время как вызов
.sp 5
выведет 5 пустых строк.
Предельным случаем является реакция директивы только на свой
аргумент. Например, директива
.lb LB
ничего не изменяет в форме выводимого текста, а только запо-
минает номер текущей страницы под именем LB для дальнейших
ссылок.
444. Абзацы
Простейшим фрагментом документа является абзац. Прос-
тейшим абзацем является прямоугольный абзац без красной
строки. Он называется lp и на такой входной текст
.lp
As a whole,
historical materialism can
be defined as
a philosophical and sociological
science concernedwith the
most general laws and
motive forces of
the development of society.
даст следующий результат:
As a whole, historical materialism
can be defined as a philosophical
and sociological science concerned-
with the most general laws and
motive forces of the development of
society.
Lp абзац еще называется l-абзац.
Существует абзац pp делающий отступ на зависящую от ширины
листа величину:
As a whole, historical ma-
terialism can be defined as a philo-
sophical and sociological science
concernedwith the most general laws
and motive forces of the development
of society.
В mx имеется механизм автоматической настройки на форму вы-
водимого документа. Одним из таких параметров является
6
стандартный левый отступ h, то есть то количество позиций,
которое надо отступить слева при отсутствии других указаний.
Примером использования h как-раз и будет p-абзац.
Итак, откуда берется стандартный левый отступ.
Нетрудно видеть, что при имеющейся в mx возможности получать
документ с произвольным размером листа задать некоторое
конкретное значение было бы слишком жестоко. Для документа
шириной в 16 символов (карманный справочник) отступ красной
строки в 9 будет выглядеть не совсем красиво.
Для борьбы с подобными проблемами mx, ориентируясь на инфор-
мацию о формате выходного документа, вычисляет по некоторому
алгоритму все недостающие параметры. Например, имея указа-
ние о выдаче документа с шириной листа 60 позиций mx, исходя
из этой цифры, установит h равным 5.
Этот прием используется только для облегчения жизни. Если
выбираемое mx значение некоторого параметра не подходит,
предоставляется возможность установить его на свой вкус.
К автоматически (с возможностью принудительной отмены) уста-
навливаемым параметрам относятся:
- вывод заголовков с нового листа;
- вывод оглавления (в начале или в конце доку-
мента);
- различие четных и нечетных страниц документа;
- экономия места на сносках в конце листа;
- стандартный левый отступ;
- наличие линии отреза на каждом листе (для вывода
маленьких книжечек);
- ширина листа вывода;
- длина листа вывода;
- вывод через строку;
- стандартный пропуск строки;
- левый, центристский или лево-центристский стиль
заголовков;
- и некоторые другие.
Иногда возможности выбора принудительно лишают. Примером
такого случая является форматирование в режиме ЕСПД, где
стандарт ограничивает фантазию.
Кроме l- и p-абзацев легко воспринимается абзац qp, который
выводит свой текст с отступом h от левого и правого края,
например, фрагмент
.lp
On the other hand,
it is a higher form
of the social consciousness.
.qp
Ideology is a theoretical
consciousness of the self
or the system of
7
ideas ....
приведет к выводу следующего текста:
On the other hand, it is a
higher form of the social
consciousness.
Ideology is a
theoretical cons-
ciousness of the
self or the system
of ideas ....
Q-абзац может иметь аргументы + или -, в ответ на что: + -
перед текстом выводится слово ПРИМЕЧАНИЕ, - - не делается
абзацный отступ.
Более сложными в изучении, но и обладающим большими возмож-
ностями, являются i- и j-абзацы. Они происходят от популяр-
ного абзаца-перечисления и состоят из трех компонент:
- ключа
- значка -
- текста.
Текст, как и во всех прочих абзацах, набирается начиная со
следующей строки. Значок - появляется при использовании j-
абзаца и не появляется в i-абзаце. Ключем является аргумент
директивы, что можно понять из следующего примера:
.jp Activity
(of man, class, or society),
purposeful changing of
of the world.
.jp "Aesthetic consociousness"
views of art prevailing
in a given society.
.jp Art
reproduction of reality
in artistic terms.
.jp Basis
a totality of specific
historical production
relations, ...
который приводит к следующим результатам:
Activity
- (of man, class, or so-
ciety), purposeful chang-
ing of of the world.
Aesthetic consociousness
- views of art prevailing in
a given society.
Art - reproduction of reality in
artistic terms.
Basis - a totality of specific
8
historical production re-
lations, ...
Ключами перечисления (которых может и не быть) здесь явля-
ются слова Activity, Aesthetic consociousness, Art и Basis.
Поскольку расстояние от левого края до символа - берется
равным стандартному левому отступу, то два ключа (Activity и
Aesthetic consociousness) не поместились. Они напечатались
на отдельной строке *1). Если при первом вызове директивы
jp указать второй аргумент - нужный отступ в виде
.jp Activity 10
то результаты будут несколько лучше:
Activity - (of man, class, or so-
ciety), purposeful
changing of of the
world.
Aesthetic consociousness
- views of art prevailing
in a given society.
Art - reproduction of reality
in artistic terms.
Basis - a totality of specific
historical production
relations,
Заметим, что нужный отступ указывается только в первой ди-
рективе из группы. Возврат к стандартному происходит при
встрече директивы pp и еще некоторых, то есть когда mx ре-
шит, что данное перечисление вы закончили.
При использовании директив ip в данном примере все будет
аналогично за исключением знаков - - они исчезнут.
Следует отметить тот факт, что в исходном тексте примера
ключ Aesthetic consociousness заключен в кавычки. Заключе-
ние в кавычки аргумента, содержащего пробелы необходимо для
того, чтобы mx отличал ключ и следующий аргумент - отступ.
Типичной ошибкой является вызов:
.jp Aesthetic consociousness
или
.jp Aesthetic consociousness 10
В обоих случаях mx попытается установить отступ равный con-
sociousness, последствия чего непредсказуемы.
Обратной стороной этой ошибки является случай с пустым клю-
чом и заказом отступа:
.jp 10
________________
*1) А что еще можно здесь придумать?
9
Пустой аргумент задается (для данного примера) в форме
.jp " " 10
а кавычки в аргументах удваиваются:
.jp "Using the ""mx"" system" 40
Правила эти несколько громоздки, но вроде бы вполне естест-
венно заключать в кавычки то, что является единым целым. В
дальнейшем мы рассмотрим еще много разновидностей директив с
аргументами. Все рассмотренные правила будут справедливы и
для них.
Директива ba [ARG] отрабатывает вложенность абзацев. Ее ар-
гументом может быть:
N - увеличить вложенность на N (полож.число) позиций
от текущего;
+ - увеличить вложенность на h позиций;
++ - увеличить вложенность на 2h позиций;
- (без аргумента) - осуществляется возврат в преды-
дущее состояние;
- - осуществляется возврат в предыдущее состояние;
0 - глобальный возврат к левому краю.
Допускается трехкратное вложение директив ba.
Назначением этой директивы является управление левым отсту-
пом для получения текста типа ступенька. Если обозначить
текст символами ..., то пример соответствия директив ba и
получаемых результатов будет иметь вид:
----------------------------------------
: .........................:
: .........................:
: .........................:
:.ba + .....................:
: .....................:
: .....................:
:.ba - .........................:
: .........................:
: .........................:
:.ba + .....................:
: .....................:
: .....................:
:.ba + .................:
: .................:
: .................:
:.ba + ............:
: ............:
: ............:
:.ba .................:
: .................:
: .................:
:.ba 0 .........................:
: .........................:
10
: .........................:
:--------------------------------------:
Такое сочетание чаще всего используется для вложенных пере-
числений.
Близким по идее к i-абзацу является n-абзац, всегда печатаю-
щий свой номер. Например текст:
.np
A transitional period starting
with socialist revolution in ...
.np
The next stage, associated with
the completion of socialist ...
.np
The next stage is related to the
phase of developed socialist
society.
дает результат в виде:
1. A transitional period starting
with socialist revolution in ...
2. The next stage, associated with
the completion of socialist ...
3. The next stage is related to the
phase of developed socialist so-
ciety.
Существует набор абзацев аналогичный рассмотренному
(l,p,q,i,j,n), но имеющий вторую букву q вместо p. Все они
ведут себя аналогично своим тезкам, но не пропускают строки.
555. Метки
В mx существует возможность запоминать некоторую инфор-
мацию для дальнейшего использования. Простейшим примером
является директива lb - запомнить. Если в некотором месте
документа вставить вызов:
.lb AA
то в дальнейшем тексте можно ссылаться на номер той страницы
документа, куда попадет текст, находящийся рядом с директи-
вой lb.
Проще говоря, если вставить такую директиву среди абзаца, то
ссылка на \*(AA или \n(AA заменяется на номер того листа,
где находился текст помеченного абзаца. Кроме lb еще многие
директивы mx могут иметь метку для запоминания чего-либо.
Обычно, особенное для директивы доступно для ссылок как
\*(AA, а номер страницы доступен как \n(AA. Поскольку в lb
директиве ничего особенного нет, то по обоим ссылкам она вы-
11
дает номер страницы.
В качестве метки можно использовать сочетания двух символов,
один из которых есть заглавная английская буква, например:
AA, AB, A0, A1, 1A, 0B, Aa, HO, OH, ]H, H{, H& ... Предос-
терегаем от использования в любом имени и вообще без особой
мысли символов *, \ и (. Имя (\ будет неудачным.
Из рассмотренных выше директив метку можно задавать в первом
аргументе n-абзаца. Если бы пример на стр.11 набрать в
виде:
.np
A transitional period starting
with socialist revolution in ...
.np RR
The next stage, associated with
the completion of socialist ...
.np
The next stage is related to the
phase of developed socialist
society.
то на него можно было бы сослаться как на смотри пункт \*(RR
на стр.\n(RR, что в сформатированном тексте приняло бы вид
смотри пункт 2 на стр.11.
666. Сноски
Mx позволяет создавать сноски *1), которые в исходном тексте
заключаются в пару директив f+ и f-:
'f+
текст сноски
'f-
или в короткой форме
'f= текст_сноски
(в f= с учетом правил работы с аргументами).
777. Блоки
Простейшим случаем неабзаца является блок - выводимая
без изменения часть текста. Обычно блок используется для
получения примеров внутри абзаца или между ними:
.pp
Perform symmetric
factorization of the matrix
________________
*1) Вроде этой.
12
and may be called
.(
work=0
ip=file_of_matrix
call dapfs(work,ip,eop)
.)
if the normal equations followed.
The next call may be usage too:
.(
work=0
ip=file_of_LAST_matrix
call dapfs(work,ip,eop)
.)
.pp
The matrix ...
Обратите внимание на следующие особенности:
- Первый блок прерывает абзац, но после закрытия блока
директива абзаца отсутствует - блок возвращает ту
обстановку, которую прервал.
- После второго блока используется директива pp, но
причиной этому служит просто желание получить абзац с
красной строкой.
- Внутри блока не содержится абзацев.
Рассмотренный пример блока дает следующие результаты:
Perform symmetric factorization
of the matrix and may be called
work=0
ip=file_of_matrix
call dapfs(work,ip,eop)
if the normal equations followed.
The next call may be usage too:
work=0
ip=file_of_LAST_matrix
call dapfs(work,ip,eop)
The matrix ...
Самой страшной ошибкой в системе mx является незакрытие
блока.
Для облегчения набора существует директива блока из одной
строки. Она называется | и вызывается в виде:
... of the matrix and may be called
.| work=0
if the normal equations followed.
Заметим, что текст блока | передается в виде аргумента и,
следовательно, на него распространяются все ограничения
(см. стр. 9). Это легко перебороть, используя в сомнитель-
ных ситуациях
13
.(
if the "normal" equations followed.
.)
вместо
.| if the ""normal"" equations followed.
Обычно блоки выводятся с учетом отступа, заданного директи-
вой ba плюс стандартный левый отступ. Для директив ( - )
этим отступом можно управлять:
.( l - выводит текст по текущей базе;
.( L - строго по левому краю листа.
Многострочные блоки могут разрываться при переходе с листа
на лист. Можно заказать непрерывность блока, закрыв его ди-
рективой .) c.
Следует иметь ввиду некоторую порочность непрерывного блока
- он может оставить много пустого места на листе. В этом
смысле блоки лучше не снабжать этим статусом, а вместо этого
использовать возможность в момент запуска команды mx зака-
зать неотрывность от блока одной строки. Разорванный не по
крайней строке блок выглядит неплохо.
Существует еще одна разновидность блока - плавающий. Суть
его состоит в запоминании своего текста без изменений и вы-
вод его с начала очередного листа. В отличии от просто
блока, остаток текущего листа заполняется текстом.
Обращение к плавающему блоку имеет вид:
.pp
and, for example,
the present perfect tense:
.{
---------------------------
| I | have | looked from |
| He | have | looked from |
| .. | .... | ........... |
---------------------------
.}
may be using ...
Такой вызов таит существенную опасность: после слов `tense'
сразу появится слово `may', а собственно таблица будет выве-
дена с нового листа. Это может нарушить суть повествования.
В таких случаях правильнее использовать такую конструкцию:
14
.{
.th "The P.P. Tense" TB
---------------------------
| I | have | looked from |
| He | have | looked from |
| .. | .... | ........... |
---------------------------
.}
.pp
****
.pp
and, for example,
the present perfect tense
(see tabl. \*(TH page \n(TB)
may be using ...
где директива th описывает название таблицы, а `****' обоз-
начают несколько страниц текста. При таком вызове таблица
попадет в плавающий блок, запомнится, продолжится вывод
текста `****', с начала очередного листа таблица напечата-
ется и при выводе фразы
(see tabl. \*(TH page \n(TB)
вместо TH подставятся соответствующие номера.
Аналогичный способ применим и к рисункам, то есть к тому,
что можно нарисовать на обычном АЦПУ:
.{
root
+--+---+
usr bin
+--+--+
lib bin
.pf "The DEMOS file system" FI
.}
Следует отметить, что описанный прием несколько расходится с
традицией запихивать все таблицы в приложение. Кроме того,
не существует способа заставить mx вывести плавающий блок за
лист до ссылки на него. Это приводит к необходимости описы-
вать плавающий блок за несколько листов до первой ссылки (с
учетом возможной очереди плавающих блоков).
888. Заголовки
В mx существует понятие заголовок без номера и с номе-
ром (четырех уровней нумерации). Называются они соответст-
венно s0, s1, s2, s3, s4. Вызов их имеет форму
.s1 "Название" LB
(см. стр.11 про использование меток).
15
К названию применимы все ограничения на аргументы. Для
длинных названий можно применять маскирование перевода
строки символом обратная косая. Оглавление собирается авто-
матически обычно в конце документа *1). Примеры:
's0 "PREFACE" PR
's1 "INTRODUCTION"
's2 "Little history" HI
's2 "The file system"
При выводе в тексте документа заголовки располагаются прижа-
тыми к левому краю страницы, что вызывает много нареканий,
суть которых сводится к тому, что заголовок надо располагать
по центру. Существует даже левоцентристское и центристское
течение.
Для удовлетворения этого желания все заголовки в исходном
тексте набираются единообразно, а форма выдачи определяется
в момент форматирования (о чем мы поговорим немного позже).
Близким к понятию заголовка являются понятия `раздел', `под-
раздел', `пункт' и `подпункт'. По своей сути раздел есть
заголовок первого уровня нумерации со сбором оглавления, а
подпункт - нумерованный p-абзац четвертого уровня вложен-
ности без сбора оглавления. Куда отнести два других ясно не
совсем.
Поскольку обнаружилась большая категория людей, которым тре-
буется только эти четыре конструкции *2), то для расширения
контингента пользователей именно на этот случай в пакет mx
включены директивы z[12345].
Директивы z[12345] используются совместно с s[01234] и отли-
чаются тем, что текст набирается не в виде аргументов, а на
следующих строках (поскольку в z-конструкциях тексту подра-
зумевается побольше).
Правило сочетания следующее. Если произнести фразу:
`раздел' требует сбора оглавления, а `подраздел',
`пункт' и `подпункт' нет,
то это будет соответствовать s1 и z[2345], а если:
`раздел' и `подраздел' требуют сбора оглавления, а
`пункт' и `подпункт' нет,
то это будет соответствовать s[12] и z[345]. И так далее.
Пример:
.s2 "The shell"
.z3 LB
________________
*1) Как и в других случаях, mx пытается подстроиться под ваш
документ. При решении о месте и стиле печати оглавления
учитывается около 10 параметров.
*2) Непонятно почему, но сюда попали все разработчики блоков
CAMAC.
16
The shell is a command language.
.z3
So (see \*(LB) it can be using
to execute some commands.
999. Разное
В mx имеется возможность проводить горизонтальные ли-
нии, которые можно использовать для отчеркивания рисунков и
т.д. Этим занимается директива
.hl
при этом линия проводится от текущей базы до края листа, вы-
зов
.hl 5
проводит линию от 5-й позиции слева до края листа, а вызов
.hl 5 15
проводит линию от 5-й до 15-й позиции слева.
101010. Вызов
После того, как набраны файлы с исходным текстом, можно
начать собственно форматирование. Для этого надо набрать на
вашем терминале команду:
mx файлы
и, после некоторой паузы, появится сформатированный текст.
Более сложные действия, например, запись результатов в неко-
торый файл, требуют некоторого изучения shell(1). *1).
Мx понимает ряд специальных указаний о том, как должен выг-
лядеть сформатированный документ. Указания эти задаются в
командной строке в форме ключей, то есть в виде букв и слов,
обычно начинающихся со знака - и расположенных перед именами
ваших файлов, например:
mx -l 66 -M -b -v 1 files
Рассмотрим возможные ключи:
-a text
вставить `text' перед началом первого файла исход-
ного текста документа;
-b печатать заголовки уровня 0 и 1 с новой страницы;
________________
*1) Можно воспользоваться тем, что система ДЕМОС является
многопользовательской, и попросить работающего за сосед-
ним терминалом человека показать вам нужную команду.
17
-c отменить вывод оглавления;
-d печатать внутренние метки пользователя (для от-
ладки);
-e различать четные и нечетные листы документа;
-f экономить на сносках одну строку;
-g печатать регистрационный номер документа;
-h H устанавить стандартный левый отступ в `H';
-i file
файл содержит макроопределения пользователя;
-j перенести оглавление в начало документа;
-k провести линию отреза над каждым листом;
-l LL
установить ширину листа в `LL' символов, по умол-
чанию ширина листа равна 78;
-p PP
установить длину листа в `PP' строк, по умолчанию
длина равна 23;
-q установить режим вывода через строку;
-s установить режим короткого нижнего поля листа;
-t T задать размер табуляции;
-u запретить отрыв от абзацев и блоков одиночных
строк;
-v V установить число стандартно пропускаемых строк в
`V';
-sp печатать заголовки всех уровней с абзаца;
-sc печатать заголовки всех уровней в центре страницы;
-s0p печатать заголовки уровня 0 с абзаца;
-s0c печататьзаголовки уровня 0 в центре страницы;
-s1p печатать заголовки уровня 1 с абзаца;
-s1c печатать заголовки уровня 1 в центре страницы;
-s2p печатать заголовки уровня 2 и ниже с абзаца;
-s2c печатать заголовки уровня 2 и ниже в центре стра-
ницы;
18
-_ подчеркивать заголовки всех уровней;
-N программой форматирования будет nroff;
-P программой форматирования будет pif;
-M прислать письмо (mail) в конце форматирования;
- установить стандартные параметры; при наличии в
среде переменных LL и PP -e -l $LL -p $PP -v 1,
при отсутствии LL=60 и PP=66;
-ES установить режим ЕСПД;
-es установить режим ЕСПД, но вопреки стандарту, раз-
личать четные и нечетные листы (трактовка ЕСПД по-
ДЕМОС
MX - КРАТКОЕ ВВЕДЕНИЕ
АННОТАЦИЯ
В данном документе содержится описание команды формати-
рования текстов mx.
2
111. Введение
Изготовление документации с помощью вычислительных ма-
шин имеет ряд особенностей по сравнению с использованием пи-
шущих машинок:
1. Необходим доступ к вычислительной машине.
2. Требуются некоторые знания по работе за терминалом
(которые немного больше умения включить машинку и
зарядить чистый лист).
3. Доступное печатающее устройство должно удовлетво-
рять запросы по набору шрифтов, скорости печати и
т.д.
4. При наборе текста можно допускать произвольное
число ошибок. Исправление их не требует перепеча-
тывать весь лист. При некотором навыке можно не
набирать все подряд, а, например, воспользоваться
возможностью запоминать текст и выдавать его при
нажатии одной/двух кнопок вместо повторного набора.
Таких средств несколько.
5. Текст набирается в произвольной форме без переносов
слов и попыток самостоятельно придать ему осмыслен-
ную форму.
6. Текст перемешивается с указаниями о том, что это
такое - абзац, заголовок или что-то еще. Указания
эти занимают несколько процентов общего об'ема
текста и очень просты для изучения.
7. Всяческая нумерация, вроде номеров разделов, стра-
ниц, таблиц и т.д. ставится автоматически. Через
много лет можно вписать еще одну главу. При этом,
если надо, текст смотри главу 2 (стр.44) преобразу-
ется в смотри главу 3 (стр.55).
8. При обновлении списка литературы корректность ссы-
лок сохраняется.
9. Настройка документа на параметры вывода (например,
на размеры листа) не зависит от исходного способа
набора.
10. Число экземпляров документа ограничено количеством
имеющейся бумагой и ресурсом печатающего уст-
ройства.
11. Если потребуется сделать издание второе, исправлен-
ное и дополненное, то набирать текст заново нет не-
обходимости - достаточно внести изменения.
Существует еще множество мелких преимуществ вроде использо-
вания уже когда-то кем-то набранных документов, ведения вся-
3
ческих электронных делопроизводств и т.д. К описанию mx это
не относится.
222. Подготовка документа
Если при работе за пишущей машинкой требуется думать о окон-
чательном варианте текста, то при использовании mx это не
обязательно. Обычной практикой является метод набрать все
подряд, распечатать, а затем улучшать.
Например, если при подготовке некоторого текста забыты
какие-то цифры, то следует не задумываясь набирать текст
At ___ o'clock the alarm-clock rings ...
а затем, распечатав предварительно сформатированный вариант
и начав постепенно его исправлять, уточнить, заодно, необхо-
димые данные, и исправить текст на:
At six o'clock the alarm-clock rings ...
Для замены символов ___ на six требуется нажать несколько
клавиш. Никаких помарок в окончательном документе не поя-
вится.
333. Управляющие директивы
Управляющие директивы располагаются среди текста и не
попадают на печать, а сообщают mx о том, что надо сделать с
последующим текстом. Например, для mx форма выдачи следую-
щего текста
Millions of people in all
parts of the world are taking
great
interest
in
Marxizm-Leninizm
nowadays.
неочевидна. Однако, поставив перед текстом директиву pp в
виде
.pp
Millions of people in all
.....
мы однозначно укажем, что этот текст является абзацем и при
форматировании он примет следующий вид:
Millions of people
4
in all parts of the
world are taking great
interest in Marxizm-
Leninizm nowadays.
Возникает вопрос, откуда mx узнает об окончании фрагмента (в
данном случае абзаца)? В большинстве случаев от следующей
директивы:
.pp
Marxist doctrine
has changed from
.....
.pp
Transformations
have taken place under
.....
.pp
The theory,
created more than a century ago
.....
Следует заметить, что текст набирается прижатым к левому
краю и не содержит лишних пробелов. Пример неправильного
набора имеет вид *1):
Dialectical and historical
materialism are organic parts
....
Кроме того, в набираемом тексте не следует делать переносов
слов и без особых целей оставлять пустые строки.
Хорошим стилем является набор в виде недлинных строк и пере-
ход к новой строке в конце каждого предложения, то есть,
обычно, после знаков .,;?!.
Заметим, что mx не понимает смысла сочетаний типа:
Gulliver was ( not ) set free , but
где сочетания (, not, ), free, , и but трактуются как от-
дельные слова и могут привести к выводу ) или , с начала но-
вой строки. Правильной конструкцией является:
Gulliver was (not) set free, but ...
Многие директивы mx могут иметь так называемые аргументы, то
есть дополнительные указания о том, как выполнить директиву.
Примером может служить директива пропуска пустых строк sp.
Простой вызов
.sp
________________
*1) На самом деле, пустое место просто передается в выходной
текст. Поскольку набиратся фрагмент типа абзац, который
обычно не содержит пустых мест, то лишние пробелы счита-
ются ошибкой.
5
приводит к выводу 1 пустой строки, в то время как вызов
.sp 5
выведет 5 пустых строк.
Предельным случаем является реакция директивы только на свой
аргумент. Например, директива
.lb LB
ничего не изменяет в форме выводимого текста, а только запо-
минает номер текущей страницы под именем LB для дальнейших
ссылок.
444. Абзацы
Простейшим фрагментом документа является абзац. Прос-
тейшим абзацем является прямоугольный абзац без красной
строки. Он называется lp и на такой входной текст
.lp
As a whole,
historical materialism can
be defined as
a philosophical and sociological
science concernedwith the
most general laws and
motive forces of
the development of society.
даст следующий результат:
As a whole, historical materialism
can be defined as a philosophical
and sociological science concerned-
with the most general laws and
motive forces of the development of
society.
Lp абзац еще называется l-абзац.
Существует абзац pp делающий отступ на зависящую от ширины
листа величину:
As a whole, historical ma-
terialism can be defined as a philo-
sophical and sociological science
concernedwith the most general laws
and motive forces of the development
of society.
В mx имеется механизм автоматической настройки на форму вы-
водимого документа. Одним из таких параметров является
6
стандартный левый отступ h, то есть то количество позиций,
которое надо отступить слева при отсутствии других указаний.
Примером использования h как-раз и будет p-абзац.
Итак, откуда берется стандартный левый отступ.
Нетрудно видеть, что при имеющейся в mx возможности получать
документ с произвольным размером листа задать некоторое
конкретное значение было бы слишком жестоко. Для документа
шириной в 16 символов (карманный справочник) отступ красной
строки в 9 будет выглядеть не совсем красиво.
Для борьбы с подобными проблемами mx, ориентируясь на инфор-
мацию о формате выходного документа, вычисляет по некоторому
алгоритму все недостающие параметры. Например, имея указа-
ние о выдаче документа с шириной листа 60 позиций mx, исходя
из этой цифры, установит h равным 5.
Этот прием используется только для облегчения жизни. Если
выбираемое mx значение некоторого параметра не подходит,
предоставляется возможность установить его на свой вкус.
К автоматически (с возможностью принудительной отмены) уста-
навливаемым параметрам относятся:
- вывод заголовков с нового листа;
- вывод оглавления (в начале или в конце доку-
мента);
- различие четных и нечетных страниц документа;
- экономия места на сносках в конце листа;
- стандартный левый отступ;
- наличие линии отреза на каждом листе (для вывода
маленьких книжечек);
- ширина листа вывода;
- длина листа вывода;
- вывод через строку;
- стандартный пропуск строки;
- левый, центристский или лево-центристский стиль
заголовков;
- и некоторые другие.
Иногда возможности выбора принудительно лишают. Примером
такого случая является форматирование в режиме ЕСПД, где
стандарт ограничивает фантазию.
Кроме l- и p-абзацев легко воспринимается абзац qp, который
выводит свой текст с отступом h от левого и правого края,
например, фрагмент
.lp
On the other hand,
it is a higher form
of the social consciousness.
.qp
Ideology is a theoretical
consciousness of the self
or the system of
7
ideas ....
приведет к выводу следующего текста:
On the other hand, it is a
higher form of the social
consciousness.
Ideology is a
theoretical cons-
ciousness of the
self or the system
of ideas ....
Q-абзац может иметь аргументы + или -, в ответ на что: + -
перед текстом выводится слово ПРИМЕЧАНИЕ, - - не делается
абзацный отступ.
Более сложными в изучении, но и обладающим большими возмож-
ностями, являются i- и j-абзацы. Они происходят от популяр-
ного абзаца-перечисления и состоят из трех компонент:
- ключа
- значка -
- текста.
Текст, как и во всех прочих абзацах, набирается начиная со
следующей строки. Значок - появляется при использовании j-
абзаца и не появляется в i-абзаце. Ключем является аргумент
директивы, что можно понять из следующего примера:
.jp Activity
(of man, class, or society),
purposeful changing of
of the world.
.jp "Aesthetic consociousness"
views of art prevailing
in a given society.
.jp Art
reproduction of reality
in artistic terms.
.jp Basis
a totality of specific
historical production
relations, ...
который приводит к следующим результатам:
Activity
- (of man, class, or so-
ciety), purposeful chang-
ing of of the world.
Aesthetic consociousness
- views of art prevailing in
a given society.
Art - reproduction of reality in
artistic terms.
Basis - a totality of specific
8
historical production re-
lations, ...
Ключами перечисления (которых может и не быть) здесь явля-
ются слова Activity, Aesthetic consociousness, Art и Basis.
Поскольку расстояние от левого края до символа - берется
равным стандартному левому отступу, то два ключа (Activity и
Aesthetic consociousness) не поместились. Они напечатались
на отдельной строке *1). Если при первом вызове директивы
jp указать второй аргумент - нужный отступ в виде
.jp Activity 10
то результаты будут несколько лучше:
Activity - (of man, class, or so-
ciety), purposeful
changing of of the
world.
Aesthetic consociousness
- views of art prevailing
in a given society.
Art - reproduction of reality
in artistic terms.
Basis - a totality of specific
historical production
relations,
Заметим, что нужный отступ указывается только в первой ди-
рективе из группы. Возврат к стандартному происходит при
встрече директивы pp и еще некоторых, то есть когда mx ре-
шит, что данное перечисление вы закончили.
При использовании директив ip в данном примере все будет
аналогично за исключением знаков - - они исчезнут.
Следует отметить тот факт, что в исходном тексте примера
ключ Aesthetic consociousness заключен в кавычки. Заключе-
ние в кавычки аргумента, содержащего пробелы необходимо для
того, чтобы mx отличал ключ и следующий аргумент - отступ.
Типичной ошибкой является вызов:
.jp Aesthetic consociousness
или
.jp Aesthetic consociousness 10
В обоих случаях mx попытается установить отступ равный con-
sociousness, последствия чего непредсказуемы.
Обратной стороной этой ошибки является случай с пустым клю-
чом и заказом отступа:
.jp 10
________________
*1) А что еще можно здесь придумать?
9
Пустой аргумент задается (для данного примера) в форме
.jp " " 10
а кавычки в аргументах удваиваются:
.jp "Using the ""mx"" system" 40
Правила эти несколько громоздки, но вроде бы вполне естест-
венно заключать в кавычки то, что является единым целым. В
дальнейшем мы рассмотрим еще много разновидностей директив с
аргументами. Все рассмотренные правила будут справедливы и
для них.
Директива ba [ARG] отрабатывает вложенность абзацев. Ее ар-
гументом может быть:
N - увеличить вложенность на N (полож.число) позиций
от текущего;
+ - увеличить вложенность на h позиций;
++ - увеличить вложенность на 2h позиций;
- (без аргумента) - осуществляется возврат в преды-
дущее состояние;
- - осуществляется возврат в предыдущее состояние;
0 - глобальный возврат к левому краю.
Допускается трехкратное вложение директив ba.
Назначением этой директивы является управление левым отсту-
пом для получения текста типа ступенька. Если обозначить
текст символами ..., то пример соответствия директив ba и
получаемых результатов будет иметь вид:
----------------------------------------
: .........................:
: .........................:
: .........................:
:.ba + .....................:
: .....................:
: .....................:
:.ba - .........................:
: .........................:
: .........................:
:.ba + .....................:
: .....................:
: .....................:
:.ba + .................:
: .................:
: .................:
:.ba + ............:
: ............:
: ............:
:.ba .................:
: .................:
: .................:
:.ba 0 .........................:
: .........................:
10
: .........................:
:--------------------------------------:
Такое сочетание чаще всего используется для вложенных пере-
числений.
Близким по идее к i-абзацу является n-абзац, всегда печатаю-
щий свой номер. Например текст:
.np
A transitional period starting
with socialist revolution in ...
.np
The next stage, associated with
the completion of socialist ...
.np
The next stage is related to the
phase of developed socialist
society.
дает результат в виде:
1. A transitional period starting
with socialist revolution in ...
2. The next stage, associated with
the completion of socialist ...
3. The next stage is related to the
phase of developed socialist so-
ciety.
Существует набор абзацев аналогичный рассмотренному
(l,p,q,i,j,n), но имеющий вторую букву q вместо p. Все они
ведут себя аналогично своим тезкам, но не пропускают строки.
555. Метки
В mx существует возможность запоминать некоторую инфор-
мацию для дальнейшего использования. Простейшим примером
является директива lb - запомнить. Если в некотором месте
документа вставить вызов:
.lb AA
то в дальнейшем тексте можно ссылаться на номер той страницы
документа, куда попадет текст, находящийся рядом с директи-
вой lb.
Проще говоря, если вставить такую директиву среди абзаца, то
ссылка на \*(AA или \n(AA заменяется на номер того листа,
где находился текст помеченного абзаца. Кроме lb еще многие
директивы mx могут иметь метку для запоминания чего-либо.
Обычно, особенное для директивы доступно для ссылок как
\*(AA, а номер страницы доступен как \n(AA. Поскольку в lb
директиве ничего особенного нет, то по обоим ссылкам она вы-
11
дает номер страницы.
В качестве метки можно использовать сочетания двух символов,
один из которых есть заглавная английская буква, например:
AA, AB, A0, A1, 1A, 0B, Aa, HO, OH, ]H, H{, H& ... Предос-
терегаем от использования в любом имени и вообще без особой
мысли символов *, \ и (. Имя (\ будет неудачным.
Из рассмотренных выше директив метку можно задавать в первом
аргументе n-абзаца. Если бы пример на стр.11 набрать в
виде:
.np
A transitional period starting
with socialist revolution in ...
.np RR
The next stage, associated with
the completion of socialist ...
.np
The next stage is related to the
phase of developed socialist
society.
то на него можно было бы сослаться как на смотри пункт \*(RR
на стр.\n(RR, что в сформатированном тексте приняло бы вид
смотри пункт 2 на стр.11.
666. Сноски
Mx позволяет создавать сноски *1), которые в исходном тексте
заключаются в пару директив f+ и f-:
'f+
текст сноски
'f-
или в короткой форме
'f= текст_сноски
(в f= с учетом правил работы с аргументами).
777. Блоки
Простейшим случаем неабзаца является блок - выводимая
без изменения часть текста. Обычно блок используется для
получения примеров внутри абзаца или между ними:
.pp
Perform symmetric
factorization of the matrix
________________
*1) Вроде этой.
12
and may be called
.(
work=0
ip=file_of_matrix
call dapfs(work,ip,eop)
.)
if the normal equations followed.
The next call may be usage too:
.(
work=0
ip=file_of_LAST_matrix
call dapfs(work,ip,eop)
.)
.pp
The matrix ...
Обратите внимание на следующие особенности:
- Первый блок прерывает абзац, но после закрытия блока
директива абзаца отсутствует - блок возвращает ту
обстановку, которую прервал.
- После второго блока используется директива pp, но
причиной этому служит просто желание получить абзац с
красной строкой.
- Внутри блока не содержится абзацев.
Рассмотренный пример блока дает следующие результаты:
Perform symmetric factorization
of the matrix and may be called
work=0
ip=file_of_matrix
call dapfs(work,ip,eop)
if the normal equations followed.
The next call may be usage too:
work=0
ip=file_of_LAST_matrix
call dapfs(work,ip,eop)
The matrix ...
Самой страшной ошибкой в системе mx является незакрытие
блока.
Для облегчения набора существует директива блока из одной
строки. Она называется | и вызывается в виде:
... of the matrix and may be called
.| work=0
if the normal equations followed.
Заметим, что текст блока | передается в виде аргумента и,
следовательно, на него распространяются все ограничения
(см. стр. 9). Это легко перебороть, используя в сомнитель-
ных ситуациях
13
.(
if the "normal" equations followed.
.)
вместо
.| if the ""normal"" equations followed.
Обычно блоки выводятся с учетом отступа, заданного директи-
вой ba плюс стандартный левый отступ. Для директив ( - )
этим отступом можно управлять:
.( l - выводит текст по текущей базе;
.( L - строго по левому краю листа.
Многострочные блоки могут разрываться при переходе с листа
на лист. Можно заказать непрерывность блока, закрыв его ди-
рективой .) c.
Следует иметь ввиду некоторую порочность непрерывного блока
- он может оставить много пустого места на листе. В этом
смысле блоки лучше не снабжать этим статусом, а вместо этого
использовать возможность в момент запуска команды mx зака-
зать неотрывность от блока одной строки. Разорванный не по
крайней строке блок выглядит неплохо.
Существует еще одна разновидность блока - плавающий. Суть
его состоит в запоминании своего текста без изменений и вы-
вод его с начала очередного листа. В отличии от просто
блока, остаток текущего листа заполняется текстом.
Обращение к плавающему блоку имеет вид:
.pp
and, for example,
the present perfect tense:
.{
---------------------------
| I | have | looked from |
| He | have | looked from |
| .. | .... | ........... |
---------------------------
.}
may be using ...
Такой вызов таит существенную опасность: после слов `tense'
сразу появится слово `may', а собственно таблица будет выве-
дена с нового листа. Это может нарушить суть повествования.
В таких случаях правильнее использовать такую конструкцию:
14
.{
.th "The P.P. Tense" TB
---------------------------
| I | have | looked from |
| He | have | looked from |
| .. | .... | ........... |
---------------------------
.}
.pp
****
.pp
and, for example,
the present perfect tense
(see tabl. \*(TH page \n(TB)
may be using ...
где директива th описывает название таблицы, а `****' обоз-
начают несколько страниц текста. При таком вызове таблица
попадет в плавающий блок, запомнится, продолжится вывод
текста `****', с начала очередного листа таблица напечата-
ется и при выводе фразы
(see tabl. \*(TH page \n(TB)
вместо TH подставятся соответствующие номера.
Аналогичный способ применим и к рисункам, то есть к тому,
что можно нарисовать на обычном АЦПУ:
.{
root
+--+---+
usr bin
+--+--+
lib bin
.pf "The DEMOS file system" FI
.}
Следует отметить, что описанный прием несколько расходится с
традицией запихивать все таблицы в приложение. Кроме того,
не существует способа заставить mx вывести плавающий блок за
лист до ссылки на него. Это приводит к необходимости описы-
вать плавающий блок за несколько листов до первой ссылки (с
учетом возможной очереди плавающих блоков).
888. Заголовки
В mx существует понятие заголовок без номера и с номе-
ром (четырех уровней нумерации). Называются они соответст-
венно s0, s1, s2, s3, s4. Вызов их имеет форму
.s1 "Название" LB
(см. стр.11 про использование меток).
15
К названию применимы все ограничения на аргументы. Для
длинных названий можно применять маскирование перевода
строки символом обратная косая. Оглавление собирается авто-
матически обычно в конце документа *1). Примеры:
's0 "PREFACE" PR
's1 "INTRODUCTION"
's2 "Little history" HI
's2 "The file system"
При выводе в тексте документа заголовки располагаются прижа-
тыми к левому краю страницы, что вызывает много нареканий,
суть которых сводится к тому, что заголовок надо располагать
по центру. Существует даже левоцентристское и центристское
течение.
Для удовлетворения этого желания все заголовки в исходном
тексте набираются единообразно, а форма выдачи определяется
в момент форматирования (о чем мы поговорим немного позже).
Близким к понятию заголовка являются понятия `раздел', `под-
раздел', `пункт' и `подпункт'. По своей сути раздел есть
заголовок первого уровня нумерации со сбором оглавления, а
подпункт - нумерованный p-абзац четвертого уровня вложен-
ности без сбора оглавления. Куда отнести два других ясно не
совсем.
Поскольку обнаружилась большая категория людей, которым тре-
буется только эти четыре конструкции *2), то для расширения
контингента пользователей именно на этот случай в пакет mx
включены директивы z[12345].
Директивы z[12345] используются совместно с s[01234] и отли-
чаются тем, что текст набирается не в виде аргументов, а на
следующих строках (поскольку в z-конструкциях тексту подра-
зумевается побольше).
Правило сочетания следующее. Если произнести фразу:
`раздел' требует сбора оглавления, а `подраздел',
`пункт' и `подпункт' нет,
то это будет соответствовать s1 и z[2345], а если:
`раздел' и `подраздел' требуют сбора оглавления, а
`пункт' и `подпункт' нет,
то это будет соответствовать s[12] и z[345]. И так далее.
Пример:
.s2 "The shell"
.z3 LB
________________
*1) Как и в других случаях, mx пытается подстроиться под ваш
документ. При решении о месте и стиле печати оглавления
учитывается около 10 параметров.
*2) Непонятно почему, но сюда попали все разработчики блоков
CAMAC.
16
The shell is a command language.
.z3
So (see \*(LB) it can be using
to execute some commands.
999. Разное
В mx имеется возможность проводить горизонтальные ли-
нии, которые можно использовать для отчеркивания рисунков и
т.д. Этим занимается директива
.hl
при этом линия проводится от текущей базы до края листа, вы-
зов
.hl 5
проводит линию от 5-й позиции слева до края листа, а вызов
.hl 5 15
проводит линию от 5-й до 15-й позиции слева.
101010. Вызов
После того, как набраны файлы с исходным текстом, можно
начать собственно форматирование. Для этого надо набрать на
вашем терминале команду:
mx файлы
и, после некоторой паузы, появится сформатированный текст.
Более сложные действия, например, запись результатов в неко-
торый файл, требуют некоторого изучения shell(1). *1).
Мx понимает ряд специальных указаний о том, как должен выг-
лядеть сформатированный документ. Указания эти задаются в
командной строке в форме ключей, то есть в виде букв и слов,
обычно начинающихся со знака - и расположенных перед именами
ваших файлов, например:
mx -l 66 -M -b -v 1 files
Рассмотрим возможные ключи:
-a text
вставить `text' перед началом первого файла исход-
ного текста документа;
-b печатать заголовки уровня 0 и 1 с новой страницы;
________________
*1) Можно воспользоваться тем, что система ДЕМОС является
многопользовательской, и попросить работающего за сосед-
ним терминалом человека показать вам нужную команду.
17
-c отменить вывод оглавления;
-d печатать внутренние метки пользователя (для от-
ладки);
-e различать четные и нечетные листы документа;
-f экономить на сносках одну строку;
-g печатать регистрационный номер документа;
-h H устанавить стандартный левый отступ в `H';
-i file
файл содержит макроопределения пользователя;
-j перенести оглавление в начало документа;
-k провести линию отреза над каждым листом;
-l LL
установить ширину листа в `LL' символов, по умол-
чанию ширина листа равна 78;
-p PP
установить длину листа в `PP' строк, по умолчанию
длина равна 23;
-q установить режим вывода через строку;
-s установить режим короткого нижнего поля листа;
-t T задать размер табуляции;
-u запретить отрыв от абзацев и блоков одиночных
строк;
-v V установить число стандартно пропускаемых строк в
`V';
-sp печатать заголовки всех уровней с абзаца;
-sc печатать заголовки всех уровней в центре страницы;
-s0p печатать заголовки уровня 0 с абзаца;
-s0c печататьзаголовки уровня 0 в центре страницы;
-s1p печатать заголовки уровня 1 с абзаца;
-s1c печатать заголовки уровня 1 в центре страницы;
-s2p печатать заголовки уровня 2 и ниже с абзаца;
-s2c печатать заголовки уровня 2 и ниже в центре стра-
ницы;
18
-_ подчеркивать заголовки всех уровней;
-N программой форматирования будет nroff;
-P программой форматирования будет pif;
-M прислать письмо (mail) в конце форматирования;
- установить стандартные параметры; при наличии в
среде переменных LL и PP -e -l $LL -p $PP -v 1,
при отсутствии LL=60 и PP=66;
-ES установить режим ЕСПД;
-es установить режим ЕСПД, но вопреки стандарту, раз-
личать четные и нечетные листы (трактовка ЕСПД по-