Можно изменить большинство значений ms, принятых по умолчанию, путем установки некоторого числа регистров, являющихся переменными troff и используемых ms. Наиболее часто применяются регистры, управляющие размером текста и интервалом между строками. Нормальным размером текста считается размер в "10 точек", где точка составляет 1/72 дюйма (единица, заимствованная из полиграфии). Обычно строки печатаются с 12-точечным разделением (интервалом). Чтобы изменить интервал, например на 9 или 11 точек (как сделано в наших отображениях), присвойте указанные числа регистрам PS и VS:
.nr PS 9
.nr VS 11
Другие числовые регистры включают LL для установки длины строки, PI — для определения отступов абзацев и PD — для отделения последних. Это влияет на следующие .PP или .LP.
Пакет макроопределений mmМы не будем подробно рассматривать этот пакет макроопределений, поскольку в целом, а зачастую и в деталях он похож на ms. Пакет mm обеспечивает контроль параметров в расширенном по сравнению с ms диапазоне, обладает большими возможностями (например, автоматически нумеруемые списки) и выдает лучшие сообщения об ошибках. В табл. 9.2 показаны команды mm, эквивалентные командам ms из табл. 9.1.
.AB Печатать резюме; оканчивается .AE .AU Ввести в следующей строке имя автора; разрешены многократные .AU .B Начать печатать "жирный" текст либо выделить жирным шрифтом аргумент, если он есть .DS t Начать отображать (незаполненный) текст, оканчивающийся .DE t=L (выравнивание по левому краю), С (центрирование), В (центрирование блока) .EQ s Начать выравнивание s (входной поток eqn); оканчивается .EN .FS Начать печатать сноску; оканчивается .FE Л Начать печатать текст, выделенный курсивом, или выделить курсивом аргумент, если он есть .IP s Сделать абзац с отступом, помеченный s .KF Печатать слитно часть текста, если необходимо целиком передвинуть на следующую страницу; конец ее .KE .KS Печатать статно часть текста на странице; заканчивается .KE .LP Печатать новый выравненный слева абзац .NH n Ввести чистовой заголовок n-го уровня; затем сам заголовок до .PP или .LP .PP Сделать новый абзац .R Вернуться к обычному шрифту .SH Ввести подзаголовок; заголовок следует далее до .PP .TL Далее печатать название до следующей команды ms .TS Начать печатать таблицу (входной поток tbl); оканчивается .ТЕТаблица 9.1: Распространенные команды форматирования ms (см. также справочное руководство по ms(7))
Таблица 9.2: Распространенные команды форматирования mm
Пропуск завершающей команды типа .AE или .DE обычно ведет к неприятностям. Напишите программу mscheck для обнаружения ошибок во входном потоке ms (или в предпочитаемом вами пакете). Совет: воспользуйтесь awk.
9.2 Уровень troff
На практике приходится иногда выходить за пределы возможностей ms, mm или других пакетов, чтобы реализовать некоторые свойства "чистой" troff. Однако, как и к программированию на языке Ассемблера, прибегать к этому следует в крайних случаях.
Вероятны три ситуации: доступ к специальным символам, использование встроенных команд замены шрифта и введение нескольких базовых функций форматирования.
Имена символовДоступ к необходимым символам (греческим буквам, например, π, графике вида • и †, разнообразным штрихам и пробелам) несложен, хотя и не вполне систематизирован. Каждый такой символ имеет имя \c, где с — одиночный символ, или \(cd, где cd — пара символов.
Программа troff печатает минус в коде ASCII как дефис, а не как '—'. Настоящий минус должен обозначаться через \-, а тире через \(em, называемое "em пунктир", символ "тире".
В табл. 9.3 перечислены наиболее часто используемые специальные символы; в справочном руководстве по troff их число намного больше (в вашей системе перечень специальных символов может быть иным).
- - Дефис \(hy - Дефис, аналогичный предыдущему \- – Знак "минус", набираемый текущим шрифтом \(mi – Знак "минус", набираемый математическим шрифтом \(em — em тире \& Ничего; защищает точку в начале строки \blank Неразмножаемый пробел \| Неразмножаемый полупробел \е Символ экранирования, обычно \ \(bu Жирная точка \(dg Крестик † \(*a α, \(*b=β, \(*с=ξ, \(*p=π и т.д. \fX Символ смены шрифта на X; Х=Р — предыдущий (шрифт) \f(XX Символ смены шрифта на XX \sn Символ смены размера шрифта на n; n=0 — предыдущий \s+-n Относительная замена размера шрифтаТаблица 9.3: Некоторые последовательности специальных символов troff