ФОРМАТИРОВАНИЕ ТЕКСТОВ С ИСПОЛЬЗОВАНИЕМ УТИЛИТЫ NROFF

Пивоваренок Т. А., Суперкомпьютерный Центр


1. Введение

Форматор nroff позволяет управлять процессом форматирования текстов, в частности задавать размер страницы, длину строк и интервал между строками, а также делать отступы и выполнять табулирование. Можно также устанавливать режим с заполнением строк (с выравниванием по правому краю). Программа nroff предназначена для обычных печатающих устройств.

Данные, передаваемые для обработки nroff содержат текст документа и инструкции (или запросы), описывающие, в каком виде должен быть распечатан этот текст.

Запросы форматора nroff, начинаются со специальной -точки ( . ) и должны быть записаны строчными буквами в отдельной строке и с первой позиции. Форматирующие макрозапросы вставляются прямо в текст документа.

Простейшая форма команды nroff

% nroff [ option ] ... [ file ]

Вызов команды nroff с использованием макропакета MS

% nroff -ms file

2. Опции командной строки NROFF

3. Остановка печати после заданной страницы

Останавливать печать после каждой страницы:

% nroff -s text | lpr

Oстанавливать печать каждой 3-й страницы:

% nroff -s3 text | lpr

4. Печать начиная с заданной страницы

Начать печатать на стр. 11 :

% nroff -n11 text | lpr

4. Выбор страниц

Напечатать только страницу 7:

% nroff -o7 text | lpr

Напечатать страницы 3, 9 и 18:

% nroff -o3,9,18 text | lpr

Напечатать страницы с 11-13 и 22:

% nroff -o11-13,22 text | lpr

Напечатать страницы с 1-5:

% nroff -o-5 text | lpr

Напечатать страницы от 14 до конца документа:

% nroff -o14- text | lpr

5. Основные команды NROFF

Остановимся немного подробнее на некоторых основных запросах nroff и рассмотрим некоторые базовые встроенные в nroff команды (или запросы) используемые при работе nroff.

6. Размер страницы (.pl)

Запрос .pl устанавливает размер страницы которая печатается построчно (высота каждой строки 0.4 см). По умолчанию страница содержит 66 строк (28 см).

Пример:

1. Установить размер страницы 24 строки будет выглядит так:

.pl 24

2. Уменьшить размер страницы на 12 строк

.pl-12

3. Восстановить размер страницы

.pl

4. Установить размер строки 132 символа

.ll 132

5. Увеличить длину строки на 12 символов

.ll+12

6. Восстановить размер строки

.ll

7. Установить отступ страницы 8 символов

.po 8

8. Уменьшить отступ страницы на 2 символа

.po -2

9. Восстановить прежнее значение

.po

7. Установка номера страницы

1. Установить номер страницы 27

.pn 27

2. Увеличить номер страницы на 2

.pn +2

8. Переход на новую страницу

Если вы хотите, чтобы конкретный текст начинался с новой страницы, поставьте одну из следующих команд:

9. Борьба с нежелательным разрывом страницы

Возможны случаи, когда нежелательно разбивать на части некоторый текст, тогда используйте запрос

.ne

Например: сохранить на странице следующие 7 строк

.ne 7

10. Комментарии

Если в текст нужно ввести некоторый комментарий:

\" текст

11. Макропакет MS

Далее мы остановимся на использовании макропакета MS. Командная строка:

% nroff -ms [ options ] file

Чтобы помочь начинающим пользователям и обеспечить стандартные наборы форматов, проектировщики создали стандартные средства, называемые макропакетами. Наиболее известными пакетами являются MS, ME и MM. Кроме того существуют несколько препроцессоров, которые обрабатывают специальные типы текстов:

tbl - для таблиц;

eqn и neqn - для математических выражений.

Существуют утилиты:

checked - для проверки работы препроцессоров eqn и neqn ;

deroff - для удаления всех форматирующих команд ( nroff , tbl , eqn , neqn ).

Макропакет MS запускается с помощью опций в командной строке nroff.

% nroff -ms [ options ] file ...

Препроцессоры такие как tbl (для таблиц) eqn и neqn (для математических выражений), активизируются отдельными командами, которые посылают текст в nroff через конвейер, например:

% tbl file | nroff -ms

Макропакет MS предоставляет широкий выбор заранее определенных средств форматирования текста, которые вы можете активизировать и дезактивизировать, помещая встроенные команды (или запросы) в свой файл.

Каждая встроенная команда MS (или запрос) состоит из точки в колонке 1, за которой следует одна или две прописные буквы (этим отличаются данные команды от команд nroff, которые записаны строчными буквами). Ниже рассмотрим некоторые форматирующие команды более подробно.

12. Формирование параграфа (раздела) .РР

Стандартный раздел смещает первую строку на 5 пробелов и выравнивает все строки по правому краю.

13. Раздел без отступа .LP

Чтобы сформировать раздел без отступа со строками, выровненными слева и справа (кроме последней) поставьте перед первой строкой команду .LP

14. Раздел цитат .QP

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

15. Смещенный раздел .IP

Чтобы сформировать раздел, выделенный пятью пробелами слева, а все строки выровнены по левому и правому краям, поставьте перед первой строкой команду .IP . Пример:

    Input                                 Output



.LP

ssssssssssssssssss                ssssssssssssssssssss

ssssssssssssssssssssssss          ssssssssssssssssssss

ssssssssss                        sssssssssssssss

.IP

ddddddddddddddddddd                    ddddddddddddddddddd

dddddddddddddd                         ddddddddddddddddddd

ddddddddd                              ddddddddd

Чтобы поместить короткую строку (например: число или метку) перед первой строкой раздела, оставьте один пробел после команды .IP и наберите необходимую строку.


    Input                                   Output



.IP (1)

ccccccccccccccccccccc             (1)  ccccccccccccccccccc

ccccccccccccc                          ccccccccccccccccccc

cccccccccccccccc                       cccccccccccc

Чтобы поместить более длинную строку перед смещенным разделом, оставьте один пробел после команды .IP , а затем наберите строку, за которой следует число (которое должно быть по крайней мере на единицу больше длины строки). Это число показывает, на сколько колонок следует сдвинуть (отступить) раздел. Если строка содержит пробелы, заключите ее в кавычки:


    Input                                    Output



.IP "Part 1" 8                    bbbbbbbbbbb

jjjjjjjjjjjjjjjjjj                Part 1  jjjjjjjjjjjjjjjjj

jjjjjjjjjjjjjjjj                          jjjjjjjjjjjjjjjjj

jjjjjjjjjjjjjjjjjjjj                      jjjjjjjj

Когда задано число, указывающее отступ, это указание остается в силе до тех пор, пока не будет изменено.

16. Сдвиг разделов .RS и .RE

Команда .RS используется совместно для сдвига разделов вправо и влево на 5 позиций. Запрос .RS также позволяет вставлять строку перед первой строкой раздела.

17. Заголовки

  1. Ненумерованные заголовки. Чтобы получить обыкновенный ненумерованный заголовок длиной менее одной строки, поставьте перед ним команду .SH , а за ним команду .LP или .PP , чтобы отменить начало следующего текста. Заголовок будет подчеркнут, выровнен по левому краю и отделен от обычного текста сверху и снизу пустыми строками.

  1. Нумерованные заголовки. При использовании команды .NH оставить пробел справа команды и набрать число, указывающее уровень подчиненности (до 5 уровней). В заголовке 1-го уровня число можно опустить. Тогда средство MS приписывает следующий допустимый номер на любом данном уровне. Например:


.NH

The Main Thing                 1.   The Main Thing

.NH 2                          1.1. Where to Start

Where to Start                 1.2. When to start

.NH 2                          1.2.1. The best Time

When to Start                  1.2.2. The Worst Time

.NH 3                          2.  Other

The Best Time

.NH 3

The Worst Time

.NH

Other...

.LP

18. Борьба с нежелательным разрывом страницы

Стандартное сохранение. Иногда встречаются строки текста, которые желательно хранить вместе на одной странице и вы хотите получить гарантию, что они не будут разъединены при смене страницы. Заключите текст между двумя запросами: .KS и .KE

и тогда команда nroff сохранит их вместе.

19. Использование сносок

Установка сноски при помощи запросов:

.FS и .FE

Нужно набрать сноску справа от символа ссылки на нее и между командами сноски .FS и .FE . Средства пакета MS выделят место для примечания в конце страницы и напечатают разделитель между сноской и последней строкой основного текста. Пример:


      .QP                            "I'n not a crook"*

      "I'n not a crook"*              .

      .FS                             .

      *Report,1974                    .

      .FE                             -----------------

      .PP                             *Report, 1974

20. Выделение текста и отмена выделения

Если вы хотите выделить текст в разделе путем его подчеркивания, то вставьте команду

.I и .R

Пример:


       .PP

       Now we are coming to the              Now we are coming

       .I                               to the __most important_

       most important                   item of the agenda.

       .R

       item of the agenda.

Лучшим способом отменить выделение текста в вашем документе является выход из него. Никакой команды форматирования не требуется.

21. Вывод иллюстраций

При помощи команд:

.DS и .DE

1. Стандартный вывод иллюстрации

Чтобы вывести иллюстрацию в виде текста т.е. сделать отступ и выровнять строки по левому краю вы можете воспользоваться командами .DS и .DE .


.PP

sssssssssssssssss                     sssssssssssss

ssssssssssssss                   ssssssssssssssssss

sssssssss                        sssssssss

.DS

ddddddddddddddddd                     ddddddddddddddddd

ddddddddddd                           ddddddddddddddddd

dddddddd                              dddd

.DE

2. Сблокированная иллюстрация

Команда: .DS B

Чтобы вывести текст с отступом и так, чтобы иллюстрация располагалась в центре экрана, добавьте к команде .DS опцию B :


.PP

sssssssssssssssssssss                    sssssssssssssssssssss

sssssssssssssssss                   ssssssssssssssssssssssssss

sssssss                             sssssssss

.DS B

dddddddddddddddd                       ddddddddddddddddd

dddddddddddd                           ddddddddddddddddd

ddddddddd                              ddddddddddddd

.DE

3. Центрированная иллюстрация

Команда: .DS C

Чтобы центрировать при выводе каждую строку текста добавьте опцию С к команде .DS .


.DS C

.

.текст

.

.DE

22. Изменение даты

Команда: .ND

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


            .DA September 15, 1994

23. Изменение заголовка

Заголовок (особая строка над текстом вверху страницы) обычно остается в документе фиксированным. Вы можете поместить текст заголовка, на всех страницах в любую из трех позиций этой строки: в левый край, по центру, в правый край. Для каждой из этих позиций команда nroff имеет соответствующую строковую переменную.

по умолчанию переменная .CH содержит номер страницы, а две другие ничего не содержат. Чтобы изменить любую из этих переменных, используйте команду nroff .ds (определить строку). Пример:


                .PP

                .ds LH Draft Copy

                .ds RH Revision 3

В данном случае мы заголовок текста Draft Copy поместим слева, а Revision справа и номер страницы разместим в середине.

24 Изменение футера

Футер - особая строка под текстом внизу страницы. Вы можете поместить в любую из трех позиций этой строки:

Пример:


                .PP

                .ds LF Confidential

                .ds RF Internal Use Only

25. Расположение номера страницы

Команда nroff помещает номер страницы в середине заголовка по умолчанию.

                .PP

                .ds RF Page %

номер страницы помещается с правой стороны футера и ему предшествует слово Page.

26. Двухколонный формат

Если вы хотите разместить текст в более узких колонках, можно отпечатать документ в двухколонном формате с помощью команды .2C из текста ms . Затем использовать команду .1C , чтобы вернуться к одноколонному формату:

.2C

.LP

ddddddddddddddddddd                    dddddddddd   dddddddddd

ddddddddddd                            dddddddddd   dddddddddd

ddddddddddddddddddddddd.               dddddddddd   dddd.

.1C

.LP

sssssssssssssssss                      sssssssssssssssssssssss

sssssssssssssssssss                    sssssssssssssssssssssss

sssssss.                               ssssssssss.

Есть еще способ быстрого получения двухколонного формата. Чтобы быстро получить пример двухколонной печати, сделайте копию своего файла (например: disk ) и назовите его disk.2C , затем начните сеанс редактирования с файлом под именем disk.2C и добавьте нужные запросы. Когда запросы на форматирование вставлены в соответствующее место, выполните следующую командную строку:

% nroff -ms disk.2C | col

ваш текст будет распечатан в два столбца.

27. Список встроенных команд MS

1. Для формирования разделов:

2. Для непрерывного вывода текста на экран:

Тексту должна предшествовать одна из перечисленных выше команд, а за текстом должна находиться команда завершения ( .DE ).

3. Сохранение непрерывного следования строк текста на странице:

4. Использование сносок для печати в конце страницы.

5. Использование заголовков (для печати заголовков):

6. Выделение текста (отмена выделения):

запрос .I производит подчеркивание для выделения.

7. Разметка страниц.

Стандартная разметка страницы для ms есть область печати размером 12х22.5 см на стр. размером - 17х27.5 см., причем в центре вверху помещается ее номер, а в середине строки в конце страницы помещается дата. Используя следующие команды, вы можете сделать некоторые изменения в разметки:

28. Разметка страницы

Стандартный формат страницы при использовании макропакета MS
< Drawing or tabular insertion skipped...>

28. Таблицы

Программы neqn (для обработки математических формул) и tbl считывают текст из файла стандартного ввода и записывают переработанный текст в файл стандартного вывода. Обрабатываются только участки входного текста, заключенные между парой определенных запросов, остальной текст копируется без изменений. Командная строка выглядит следующим образом:

tbl [ files ] ...

tbl file | nroff -ms

Препроцессор tbl воспринимает простое описание таблицы и генерирует запросы nroff для печати этой таблицы. Запросы препроцессора tbl помещаются между запросами .TS (начало таблицы) и .TE (конец таблицы).


                 .TS

                   .

                   . 
- описание таблицы

                   .

                 .TE

Литеры ; (точка с запятой) и . (точка) должны присутствовать явно, завершая соответствующий раздел. Формат столбцов и строк в общем случае задается шаблоном. Литера Т (табуляция) служит разделителем столбцов: Пример:


                .TS

                center;

                c s s s

                c c c c

                l l n n.

                
Отделения фирмы Bell Labs

                
Название Т Адрес Т Код Т Номер

                 ................



                .TE

В разделе описания форматов можно задавать следующие опции:

Опция center вызывает размещение таблицы посередине страницы. По умолчанию таблица располагается с левой стороны страницы. Внешний вид таблицы задается следующими опциями.

Более подробную информацию вы можете получить в man nroff, tbl , neqn .