Производственно-внедренческий кооператив
"И Н Т Е Р Ф Е Й С"
Диалоговая Единая Мобильная
Операционная Система
Демос/P 2.1
Подготовка текстов с помощью программы nroff
и макропакета -me.
(Введение для начинающих)
Москва
1988
Этот документ представляет собой введение в систему
подготовки документов nroff и макропакет -me. Предполага-
ется, что читатель знаком в общих чертах с операционной сис-
темой ДЕМОС и текстовыми редакторами, такими как eda или
red. Данный материал является начальным введением, и поэ-
тому в нем рассматриваются не все детали. В частности, не
объясняются различные дополнительны возможности макропакета
-me. Полное рассмотрение этих и других вопросов можно найти
в документах "Пакет -me. (Справочное руководство)" и "Сис-
тема подготовки документации nroff. (Справочное руко-
водство)".
nroff, программа форматирования документов, которая
читает входной файл, подготовленный пользователем, и выдает
полученный текст в файл стандартного вывода. Входной поток
состоит из текста, который должен быть отформатирован, и
команд, которые управляют программой nroff указывая, как
форматировать печатную копию.
Раздел 1 описывает основы обработки текстов. Раздел 2
описывает основные команды. В разделе 3 вводится понятие
блока текста. Страничные сноски и другие подобные вещи опи-
сываются в разделе 4. Более сложные команды, которые не
рассматривались в раздел 2, описываются в разделе 5. Если
Вы - новичок, Вы, возможно, не захотите читать дальше раз-
дела 4, пока не попробуете использовать некоторые основные
команды.
Когда исходный текст будет готов, вызовите nroff следу-
ющим образом:
nroff -me файлы.
Полное описание формата вызова команды nroff можно найти в
справочном руководстве по nroff.
Слово аргумент используется в этом документе для обоз-
начения слова или числа, которые появляются в той же строке,
что и команда, и определяет ее эфект. Например, директива
.sp
оставляет одну свободную строку, а
.sp 4
оставляет 4 свободных строки. Число 4 является аргументом
команды .sp который указывает, что надо оставить 4 свободных
строки вместо одной. Аргументы отделяются от команды и друг
от друга пробелами.
- 1 -
1. Основы обработки текстов с помощью nroff.
Основной функцией программы nroff является сборка слов,
содержащихся в строках входного файла, заполнение ими строк
выходного файла, с выравниванием по правой границе путем
введения дополнительных пробелов, и вывод результирующего
текста. Например, входной текст:
Настоящий стандарт устанавливает
общие требования к выполнению текстовых
документов на изделия всех отраслей
промышленности и строительства.
будет прочитан, упакован в выходные строки и выровнен, в
результате чего получится:
Настоящий стандарт устанавливает общие требования к выполне-
нию текстовых документов на изделия всех отраслей промышлен-
ности и строительства.
Иногда бывает необходимо прервать текущую строку, даже
если она еще не заполнена, с тем, чтобы продолжить вывод на
следующей, например, в конце абзаца. Такой "обрыв" происхо-
дит автоматически при использовании некоторых команд форма-
тера, а также при вводе пустой строки или строки, начинаю-
щейся с пробела и называется разрывом формата.
Не все строки исходного текста подвергаются форматиро-
ванию. Некоторые строки представляют собой команды формати-
рования[1], которые описывают режим форматирования основного
текста. Признаком командной строки, по которому она отлича-
ется от строки информационной, является точка или апостроф
"'" в первой позиции.
nroff позволяет делать с исходным текстом и более слож-
ные вещи, такие как автоматическую нумерацию страниц, пра-
вильное размещение сносок, вывод текста в несколько колонок,
и т.д.
При подготовке задания на форматирование следует при-
держиваться некоторых простых правил:
1) При создании исходного файла стремитесь делать строки
по возможности короткими. Такой текст легче редактиро-
вать, а nroff в любом случае сделает строки длиннее.
Придерживаясь этой рекомендации, удобно начинать новую
____________________
[1] - Они также называются директивами форматирования или
запросами.
- 2 -
строку после каждой точки, запятой или фразы, так как
такой текст удобнее редактировать.
2) В конце строк лучше не использовать пробелы, так как
это может привести к сбою nroff.
3) Не переносите слова, так как дефис может быть воспринят
как часть слова и выходной текст будет содержать слово
с дефисом, например: "компьюте-ризация". Также не сле-
дует переносить слова, содержащие дефис внутри себя
(такие как из-за или Соловьев-Седой), так как в итоге
можно получить пробел там, где он вовсе необязателен
(например, технико- экономический). nroff достаточно
интелектуальная программа для того, чтобы переносить
слова в нужном месте, но не для того, чтобы убирать
дефисы и печатать слово в первозданном виде.
4) После разделительных знаков желательно ставить пробел,
но перед ними пробел не нужен.
2. Основные команды
2.1. Параграфы
Ппраграф чаще всего начинается командой .pp (print
paragraph - печать параграфа). Например, если на входе:
.pp
Настоящий стандарт устанавливает
общие требования к выполнению текстовых
документов на изделия всех отраслей
промышленности и строительства.
то на выходе получим пустую строку и первую строку текста с
отступом на 5 позиций:
Настоящий стандарт устанавливает общие требования к
выполнению текстовых документов на изделия всех отраслей
промышленности и строительства.
Заметим, что предложения в абзаце не должны начинаться
с пробела, так как пустые строки и строки, начинающиеся с
пробела вызывают разрыв формата. Например, если входной
файл имеет вид:
.pp
Настоящий стандарт устанавливает
общие требования к выполнению текстовых
документов на изделия всех отраслей
промышленности и строительства.
то и на выходе получим:
- 3 -
Настоящий стандарт устанавливает
общие требования к выполнению текстовых документов на
изделия всех отраслей промышленности и строительства.
Новая строка начинается после слова "устанавливает", так как
вторая строка начинается с пробела.
Существует несколько других разновидностей параграфов,
но о них немного позже.
2.2. Верхние и нижние страничные колонтитулы
В верхней и нижней частях каждой страницы можно помес-
тить произвольный текст. Верхний колонтитул определяется
командой
.he текст
(header - верхний колонтитул), а нижний - командой
.fo текст
(footer - нижний колонтитул).
Текст состоит из трех частей: левой, центральной и пра-
вой, поэтому его часто называют трехэлементным заголовком
или трехэлементным колонтитулом. В качестве разделителя
можно использовать любой символ, кроме обратной косой черты
и двойных кавычек. Знак процента ("%"), обнаруженный в
заголовке будет заменен текущим номером страницы. Например,
результатом работы команд:
.he ''%''
.fo 'NROFF и ME''РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ'
будет печать текущего номера страницы в центре верха стра-
ницы, и слева внизу - NROFF и ME и внизу справа - РУКО-
ВОДСТВО ПОЛЬЗОВАТЕЛЯ. В качестве разделителя частей заго-
ловка здесь используется одиночная кавычка.
2.3. Печать через два интервала
Для того, чтобы выходной документ был напечатан через
два интервала, можно воспользоваться командой .ls 2 (line
space - пропуск строки), как сделано в этом разделе. В
исходный режим можно вернуться, использовав команду .ls 1.
- 4 -
2.4. Расположение текста на странице
Некоторые команды форматирования позволяют воздейство-
вать на "внешний вид" страниц документа. Большая их часть
связана с размещением пустых строк и пробелов.
Команда .bp (break page -прервать страницу) прерывает
вывод текущей и начинает новую страницу.
Команда .sp N (space - пропуск) вставляет в выходной
файл N пустых строк. N может быть опущено (пропуск одной
строки), а может быть записанно в виде Ni (для N дюймов[1])
или Nc (для N сантиметров). Например:
.sp 1.5i
Технические требования
.sp
приведет к пропуску полутора дюймов, выведется строка
Технические требования, за которой последует пустая строка.
Команда .in _N (indent - отступ) определяет величину
отступа от левой границы страницы. Аргумент +N - означает
увеличение отступа по сравнению с текущим на N позиций, -N -
соответствующее уменьшение отступа и N устанавливает абсо-
лютный отступ (также допустимы Ni и Nc). Например:
Общие требования
.in 5
Типы и основные размеры
.in +1i
Технические требования
.in -2c
И еще что-нибудь
позволит получить:
Общие требования
Типы и основные размеры
Технические требования
И еще что-нибудь
Команда .ti _N (temporary indent - временный отступ)
аналогична .in _N, за исключением того, что ее влияние расп-
ространяется только на одну строку, после чего величина отс-
тупа восстанавливается. Например:
____________________
[1] - 1дюйм = 25.4мм
- 5 -
.in 10
.ti 0
Наименования разделов записывают
в виде заголовков
(симметрично тексту) прописными буквами.
Наименования подразделов записывают в
виде заголовков (с параграфа)
строчными буквами (кроме первой прописной).
приведет к:
Наименования разделов записывают в виде заголовков (симмет-
рично тексту) прописными буквами. Наименования
подразделов записывают в виде заголовков (с параг-
рафа) строчными буквами (кроме первой прописной).
Текстовые строки можно центрировать с помощью команды
.ce (center - центр). Для центрирования более чем одной
строки (по горизонтали) используйте .ce N, где N- число
строк, которые подлежат обработке. Если понадобится отцент-
рировать много строк, причем считать их общее число не вызы-
вает желания, попробуйте сделать следующее:
.ce 1000
строки, подлежащие центрированию
.ce 0
Команда .ce 0 предложит nroff центрировать следующие ноль
строк, другими словами, прекратить центрирование.
Все эти команды вызывают разрыв формата, то есть форми-
руют начало новой строки. Если же Вы захотите начать с
новой строки, не выполняя никаких других функций, исполь-
зуйте команду .br (break - обрыв).
2.5. Подчеркивание
Текст можно подчеркнуть, используя команду .ul N
(underline - подчеркнуть). Если аргумент N опущен, будет
подчеркнута одна строка входного файла, иначе столько строк,
сколько требует аргумент. Например, если аргумент равен
двум:
.ul 2
Эти две строки входного
файла надо подчеркнуть.
то эти семь слов в выходном тексте будут подчеркнуты.
3. Выделение частей текста
Многие документы содержат такие части текста, формати-
рование которых необходимо выполнять некоторым специфическим
- 6 -
образом. К таким частям текста относятся таблицы, рисунки,
примеры, цитаты и другие подобные элементы. В задании на
форматировании все они оформляются в виде различного вида
блоков, которые (за исключением центрированных блоков) отде-
ляются от основного текста пустыми строками.
3.1. Цитаты
Одной из разновидностей блоков является блок цитат.
Предполагается, что он может использоваться для выделения из
текста длинных цитат, занимающих несколько строк. Это можно
сделать с помощью команд .(q и .)q (quote - цитата). Напри-
мер, следующая цитата:
Как говорилось в газете "Правда":
.(q
Для повышения эффективности ведущих
отраслей народного хозяйства необходимо
расширять исследования по вычислительной технике,
информатике в целом ...
.)q
будет получена в виде:
Как говорилось в газете "Правда":
Для повышения эффективности ведущих отраслей народ-
ного хозяйства необходимо расширять исследования по
вычислительной технике, информатике в целом ...
3.2. Списки
Список представляет собой блок, печатающий свое содержимое с
отступом, без заполнения строк и без вставки каких либо пус-
тых промежутков. Списки могут использоваться, когда печата-
емый материал не должен выравниваться и его строки не должны
заполняться, как это происходит в основном тексте. Например
при подготовке этого документа, списки использовались для
оформления примеров. Текст списка, как в скобки, помещен
между команд .(l и .)l (list - список (строк)), соответст-
венно открывающей и закрывающей список. В качестве примера
возьмем текст:
.(l
Переносы слов в заголовках не допускаются.
Точку в конце заголовка не ставят.
Если заголовок состоит из двух предложений,
их разделяют точкой.
.)l
В результате получим:
- 7 -
Переносы слов в заголовках не допускаются.
Точку в конце заголовка не ставят.
Если заголовок состоит из двух предложений,
их разделяют точкой.
3.3. Простой блок и плавающий блок
Простой блок- это блок текста, который должен быть рас-
положен на одной странице, если конечно это возможно.
Использование простого блока необходимо например при внесе-
нии в текст документа диаграммы. Основное отличие простого
блока от списка в том, что простой блок не располагается на
границе двух страниц, и при невозможности разместить его на
текущей странице, печатается в начале следующей. Текст
простого блока располагается между командами .(b и .)b
(block - блок). Таким образом, если на текущей странице
весь блок уже не умещается, то он целиком переносится на
следующую страницу. При этом оставшиеся в конце страницы
строки остаются пустыми.
Еще одна разновидность блока - плавающий блок. Плаваю-
щий блок появляется в конце текущей страницы, если он пол-
ностью на ней умещается, иначе - в начале следующей. Поэ-
тому он удобен при ссылках типа "см. рис. 3". Его отличие
от непрерывного заключается в том, что остаток текущей стра-
ницы заполняется текстом, расположенным после блока. Текст
плавающего блока располагается между командами .(z и .)z. В
качестве иллюстрации см. рис. 1. Вспомогательная команда
.hl (horizontal line - горизонтальная линия) используется
для проведения горизониальной линии, отделяющещей рисунок от
текста.
Необходимо отметить, что использование плавающего блока
может привести к нежелательному эффекту в том случае, когда
текст, расположенный после блока не связан логически с
________________________________________
.(z
.hl
"Тело" плавающего блока
.sp
.ce
Рис. 1. Пример плавающего блока.
.hl
.)z
Рис. 1. Пример плавающего блока.
________________________________________
- 8 -
текстом до блока.
3.4. Блоки специального вида
Блоки обычно собираются без выравнивания по правой гра-
нице, что делает их удобными для таблиц, рисунков, и т.д.
Если же необходимо применить их для обработки текстовой
информации (с выравниванием по правому краю), команда начала
блока, например списка, принимает вид: .(l F (все, что здесь
говорится о списке справедливо и для простого блока и для
плавающего блокa ). Например, если на входе было:
.(l F
Переносы слов в заголовках не допускаются.
Точку в конце заголовка не ставят.
Если заголовок состоит из двух предложений,
их разделяют точкой.
.)l
получим:
Переносы слов в заголовках не допускаются. Точку в
конце заголовка не ставят. Если заголовок состоит
из двух предложений, их разделяют точкой.
Блоки обычно выполняются с отступом (плавающий блок -
прижатым к левому краю). Для того, чтобы блок был выведен с
первой позиции строки используйте команду .(l L, а для того,
чтобы отцентрировать каждую строку в блоке замените Lна C -
.(l C. Например, для вывода блока без отступа, с выравнива-
нием по правому краю входной файл должен содержать:
.(l L F
текст блока
.)l
Вот еще два примера, показывающие возможности блоков:
.(l L
Первая строка блока. Их может быть много.
Последующие строки.
.)l
преобразуется в:
Первая строка блока. Их может быть много.
Последующие строки.
- 9 -
А текст:
.(l C
Первая строка блока. Их может быть много.
Последующие строки.
.)l
преобразуется в:
Первая строка блока. Их может быть много.
Последующие строки.
Иногда бывает нужно отцентрировать несколько строк бло-
ком, а не каждую строку в отдельности. Это позволяет сде-
лать центрированный блок, выделяемый командами .(c и .)c
[2]. Центрированный блок cледует использовать совместно с
обычными блоками. Так, для центрирования группы строк как
единого целого и размещения их на одной странице, применим:
.(b L
.(c
Первая строка центрированного блока.
Последующие строки.
.)c
.)b
В итоге получим:
Первая строка центрированного блока.
Последующие строки.
Если в данном примере заменить .(b и .)b на .(l и .)l, то
результат будет тот же, за исключением потери уверенности в
том, что весь блок будет расположен на одной странице.
Стоит обратить внимание на аргумент L команды .(b; это при-
водит к центрированию относительно всей длины строки, а не
строки, длинна которой сокрашена на ширину отступа (этот
вариант приведен ниже).
Первая строка центрированного блока.
Последующие строки.
3.5. Резервирование текста для последующего вывода
Существует несколько команд, позволяющих запоминать
участки текста для последующей печати. К ним относятся раз-
личные виды сносок и индексы.
____________________
[2] - обратите внимание на отличие этого метода от ис-
пользования аргумента C в рассмотренном ранее примере.
- 10 -
3.5.1. Страничные сноски
В страничные сноски попадают части текста заключенные
между командами .(f и .)f (footnote - сноска). Текущий
номер сноски выводится с помощью последовательности \**,
причем он автоматически увеличивается после каждой новой
сноски. Например:
.(q
Си - это универсальный язык программирования,
характеризующийся экономной записью выражений,
современными механизмами управления вычислениями
и структурами данных и
богатым набором операций\**.
.(f
\** Брайн В. Керниган,
Деннис М. Ритчи
.)f
.)q
приведет к следующему:
Си - это универсальный язык программирования, харак-
теризующийся экономной записью выражений, современ-
ными механизмами управления вычислениями и структу-
рами данных и богатым набором операций[3].
Стоит заметить, что сноска находится внутри цитаты, что
гарантирует ее появление на той же странице.
3.5.2. Задержанный текст
Задержанный текст очень похож на страничную сноску, за
исключением лишь того, что он печатается только при явном
указании. С помощью задержанного текста можно например
печатать список литературы в конце главы или всего доку-
мента. Части текста, которые необходимо поместить в задер-
жанный текст располагаются между командами .(d и .)d (delay
- задержка). Аналогом последовательности \**, соответствую-
щей номеру сноски, служит последовательность \*#, причем
нумерация выполняется совершенно идентично. Если этот вид
сноски окажется предпочтительным, можно использовать его как
основной. При этом можно применять и обычную сноску (заме-
нив печать текущего номера на какой-либо спецсимвол[*]). В
том месте, где необходимо напечатать все, что было накоплено
в виде задержанного текста, следует поместить команду .(pd
(print delay - печать задержки).
____________________
[2] Как здесь.
[3] Брайн В. Керниган, Деннис М. Ритчи
* Например звездочку.
- 11 -
3.5.3. Индексы
Индекс является по сути дела разновидностью задержан-
ного текста, который печатается по специальной команде.
Характерным для индекса является то, что с ним связан номер
страницы или какой-либо другой тэг, который при печати
индекса помещается в конце строки, содержащей текст индекса
после серии точек. Примером использования индексов может
служить сборка содержания документа с последующим выводом.
Запись индекса начинается командой .(x и заканчивается
командой .)x, причем .)x имеет аргумент, отвечающий за то,
что выводится в конце строки в качестве "номера страницы".
Если аргумент опущен, то выводится номер текущей страницы.
Если это подчерк ("_"), то строка после индексной записи
остается пустой. Если же закрыть запись командой .)x "",
то после нее выводится строка точек без номера строки.
Команда .xp печатает собранные индексные записи. Например:
.(x
Первый раздел
.)x
.(x
Второй раздел
.)x_
.(x
Третий раздел
.)x6.7a
.(x
Четвертый раздел
.)x
.(x
Первый пункт первого подраздела четвертого раздела.
Эта индексная запись длиннее предыдущих.
Обратите внимание на то,
в каком виде она будет получена.
.)x
.xp
выведет следующее:
Первый раздел ......................................... 12
Второй раздел
Третий раздел ......................................... 6.7a
Четвертый раздел ......................................
Первый пункт первого подраздела четвертого раздела.
Эта индексная запись длиннее предыдущих. Обра-
тите внимание на то, в каком виде она будет по-
лучена. ......................................... 12
Команда .(x также может иметь аргумент (односимволь-
ный), определяющий имя индекса, в котором собираются записи
(обычно "x"). Таким образом, одновременно можно создать
несколько индексов (содержащих список таблиц,
- 12 -
библиографическую информацию и т.д.).
Заметим, что индекс следует выводить в конце документа,
а не в начале, где его возможно надо разместить, а после
распечатки физически переместить страницу с индексом на нуж-
ное место. Причем, зная количество страниц, необходимых для
размещения собранного индекса (содержания, списка литера-
туры, и т.д.), можно задать генерацию их номеров с опреде-
ленного номера (используя при вызове параметр "-nN").
При использовании индексов или сносок внутри непрерыв-
ного или плавающего блоков могут возникнуть ошибки, связан-
ные с тем, что индексная запись будет обрабатывается при
считывании блока, а не при печати выходного файла. Это при-
ведет к тому, что запись номера страницы в индексе будет
неверна. Решением этого вопроса является применение маги-
ческих знаков \! в начале каждой строки, имеющей отношение
к индексу. Так, в примере:
.(z
.(ce
Рисунок
.)c
.c
Рис. 5.
\!.(x f
\!Рис. 5.
\!.)x
.)z
индекс будет обработан только после вывода рисунка, что
гарантирует правильность номера страницы. Все, сказанное в
этом параграфе применимо и к простым блокам.
4. Дополнительные возможности
Существует большое количество других команд, например для
различного вида параграфов, нумерованных разделов типа
1.2.3. (как в данном документе), многоколоночного вывода.
Ниже рассматриваются некоторые из них.
4.1. Параграфы
Параграф обычно начинается пустой строкой и следующей
за ней строкой с отступом. Команда .lp (left paragraph -
сдвинутый влево параграф) в отличие от .pp позволяет начать
сдвинутый влево параграф без красной строки, как это сделано
ниже.
Иногда бывает нужно вывести параграф с отступом, причем пер-
вая его строка должна содержать подзаголовок. Это позволяет
сделать команда .ip (indented paragraph - параграф с отсту-
пом). Слово, определенное на той же строке, что и .ip,
печатается с первой позиции, а сам параграф - с зараннее
- 13 -
определенной позиции (с шестой, по умолчанию). Например,
входной файл:
.ip один
Это первый параграф.
Заметим, что первая его строка
идентична последующим (начинается с той же позиции).
.ip два
А это уже второй параграф.
И подзаголовок "два" тоже начинается
в первой позиции строки.
.lp
Мы можем продолжить...
после обработки получим:
один Это первый параграф. Заметим, что первая его строка
идентична последующим (начинается с той же позиции).
два А это уже второй параграф. И подзаголовок "два" тоже
начинается в первой позиции строки.
Мы можем продолжить вывод текста, начав параграф без красной
строки с помощью команды .lp.
Если подзаголовок содержит пробелы, используйте неза-
полняемый пробел вместо обычного. Обычный пробел становится
незаполняемым, если перед ним поставить обратную косую черту
("\"). Например:
.ip Часть\ 1
напечатает подзаголовок Часть 1.
Если подзаголовок длиннее, чем место, отведенное под
него по умолчанию, .ip начнет новую строку после подзаго-
ловка. Например:
.ip Примечание:
У этого параграфа длинный подзаголовок.
Поэтому "тело" параграфа разместится
ниже строки с подзаголовком.
в выходном документе примет вид:
Примечание:
У этого параграфа длинный подзаголовок. Поэтому
"тело" параграфа разместится ниже строки с подзаго-
ловком.
Имеется возможность изменить ширину поля, выделяемого
для подзаголовка, используя второй аргумент, который и
- 14 -
задает эту ширину. В последнем примере командную строку
можно было бы изменить на:
.ip Примечание: 12
Разновидностью .ip является команда .jp, отличающаяся
от первой только тем, что после подзаголовка помещает символ
"-". Еще один тип параграфа задается командой .np (numbered
paragraph - пронумерованный параграф), которая последова-
тельно нумерует параграфы этого вида, начиная с единицы.
Нумерация сбрасывается в единицу при последующем использова-
нии команд: .pp, .lp, .jp и .sh. Например:
.np
Это первый пункт перечисления.
.np
Это второй пункт перечисления.
.pp
Формирование этого параграфа вернуло
нумерацию в единицу.
.np
Итак,
этот пункт также будет иметь номер один.
приведет к:
1) Это первый пункт перечисления.
2) Это второй пункт перечисления.
Формирование этого параграфа вернуло нумерацию в еди-
ницу.
1) Итак, этот пункт также будет иметь номер один.
4.2. Разделы, подразделы, пункты
-me позволяет автоматически нумеровать разделы с
помощью команды .sh (section heading - заголовок раздела).
Необходимо только задать глубину нумерации и наименование
раздела. Например, пункт с номером 4.2.3. имеет глубину
нумерации - три.
Номера разделов увеличиваются автоматически по мере
подготовки документа. Например, набор следующих команд:
- 15 -
.sh 1 "ПЕРВЫЙ РАЗДЕЛ"
.ti 5
Текст первого раздела
.sh 2
текстовые документы
подразделяются на документы,
содержащие в основном сплошной текст...
.sh 3
Каждый раздел текстового документа
рекомендуется начинать
с нового листа (страницы).
.sh 4
.sh 1 "ВТОРОЙ РАЗДЕЛ"
.sh 2 "Первый подраздел второго раздела"
произведет нумерацию в следующем виде:
1. ПЕРВЫЙ РАЗДЕЛ
Текст первого раздела
1.1
текстовые документы подразделяются на документы, содержащие
в основном сплошной текст...
1.1.1.
Каждый раздел текстового документа рекомендуется начинать с
нового листа (страницы).
1.1.1.1.
2. ВТОРОЙ РАЗДЕЛ
2.1. Первый подраздел второго раздела
Кроме того, существует возможность задать конкретный номер
раздела. В этом случае, он проставляется после наименования
раздела и через пробелы, вместо точек. Например, команда
.sh 3 "Следующий раздел" 4 2 7
присвоит Следующему разделу номер 4.2.7.; все последующие
команды .sh произведут нумерацию в соответствии с этим номе-
ром.
4.3. Оформление документов стандартным образом
Существует ряд команд, позволяющих оформлять документ
стандартным образом. Эти команды устанавливают режим оформ-
ления для некоторой части документа. Под частью здесь под-
разумевается последовательность глав, приложения или
вспомогательные разделы (вроде содержания или списка литера-
туры). Части разного типа (напимер главы и приложения)
- 16 -
оформляются различными способами.
Однa из таких команд, команда .tp (title page - титуль-
ный лист), предназначеная для оформления титульного листа.
Эта команда подавляет вывод верхнего и нижнего колонтитулов
на странице, оставляя пустые строки в ее верхней части.
Ниже приведен пример оформления титульного листа.
.tp
.sp 2i
.(l C
ГЕНЕРАТОР Г-101
.sp
ПАСПОРТ
.sp
Г-101ПС
.sp 3i
1988
.)l
.bp
Для установки режимов оформления частeй документа типа
последовательность глав, последовательность приложений или
вспомогательный раздел служит команда: .++ m H. m опреде-
ляет тип этой части, а H текст, печатаемый в качестве колон-
титулов на страницах последующей части. Если m = C, то это
означает, что ниже будет расположена основная часть доку-
мента разбитая на главы. Если m = P, то далее следуют вспо-
могательные разделы, например введение, содержание или еще
что-то в этом роде. Если m = A, то далее следуют приложе-
ния. Совместно с командой .++ предполагается использование
команды, задающей начала глав или других самостоятельных
разделов документа (например приложений). Такой командой
является команда .+c .i которая печатает номер и название
новой главы или раздела документа[4]. Название определяется
аргументом T, а номер, порядковым номером текущей команды
.+c. Если для данной части документа установлен тип оформ-
ления последовательность глав, то перед номером главы будет
напечатано слово "ГЛАВА", если же установлен тип
последовательность приложений, перед номером приложения
будет напечатано слово "ПРИЛОЖЕНИЕ". Так например если
текущий тип оформления соответствует последовательности глав
и если команда .+c встретилась в тексте документа в пятый
раз и имеет вид:
.+c Некоторые выводы
____________________
[4] - Приложения в отличие от глав "нумеруются" латинс-
кими буквами.
- 17 -
то в начале очередной страницы будет напечатно:
ГЛАВА 5
Некоторые выводы
На рис. 2. приведен упрощенный пример оформления документа и
его содержания (после \" приведены комментарии).
____________________________________________________
.sh 1Введение\"
.(x t
\*($n. Введение
.)x
Текст введения
.sh 1 "Следующий
.(x t
\*($n. Следующий раздел
.)x
Текст этого раздела
.sh 2 Подраздельчик
.(x t
\*($n. Подраздельчик
.)x
Текст подраздельчика
.sh 1 Заключитeльная часть
.(x t
\*($n. Заключительная часть
.)x
Текст заключительной части
.++ P
.+c СОДЕРЖАНИЕ
.xp t
Рис. 2. Пример оформления документа.
____________________________________________________
4.4. Вывод в две колонки
Существует возможность вывода текста в две колонки[5]
Переход в двухколоночный режим осуществляется с помощью
команды .2c (2 column - две колонки). Команда .bc (begin
column - начать колонку) начинает новую колонку, вывод в
предыдущую прекращается. Для возврата в одноколоночный
____________________
[5] - При этом может возникнуть необходимость в использо-
вании команды-фильтра col. Описание этой команды содержится
в col(1).
- 18 -
режим служит команда .1c. (1 column - одна колонка). Нап-
ример текст:
.2c
Это текст,
который необходимо расположить
в первой колонке.
.bc
А это уже вторая колонка.
Чтобы закончить этот пример
нужно применить команду .1c .
.1c
.sp
Начало одноколоночного вывода.
Последующий текст.
преобразуется в:
Это текст, который необхо- А это уже вторая колонка.
димо расположить в первой Чтобы закончить этот пример
колонке. нужно применить команду .1c.
Начало одноколоночного вывода и последующий текст.
- 19 -
СОДЕРЖАНИЕ
1. Основы обработки текстов с помощью nroff. ......... 2
2. Основные команды .................................. 3
2.1. Параграфы ....................................... 3
2.2. Верхние и нижние страничные колонтитулы ......... 4
2.3. Печать через два интервала ...................... 4
2.4. Расположение текста на странице ................. 5
2.5. Подчеркивание ................................... 6
3. Выделение частей текста ........................... 6
3.1. Цитаты .......................................... 7
3.2. Списки .......................................... 7
3.3. Простой блок и плавающий блок ................... 8
3.4. Блоки специального вида ......................... 9
3.5. Резервирование текста для последующего вывода ... 10
3.5.1. Страничные сноски ............................. 11
3.5.2. Задержанный текст ............................. 11
3.5.3. Индексы ....................................... 12
4. Дополнительные возможности ........................ 13
4.1. Параграфы ....................................... 13
4.2. Разделы, подразделы, пункты ..................... 15
4.3. Оформление документов стандартным образом ....... 16
4.4. Вывод в две колонки ............................. 18
- 20 -
Популярность: 2, Last-modified: Mon, 29 Jun 1998 14:14:13 GmT