Макропакет ms

Основна ідея макропакет полягає в тому, що документ описується в термінах його логічної структури: назва, заголовки розділів, абзаци, і не треба вказувати розміри букв, шрифти і відстані між рядками Користувач звільнений від важкої роботи, а документ ізольований від не відносяться до справи подробиць Насправді, застосовуючи різні набори макровизначень з однаковими логічними іменами, можна створити документи, що виглядають абсолютно по-різному Наприклад, документ може пройти через стадії технічного звіту, матеріалів конференції, газетної статті і глави книги з одними і тими ж командами форматування, використаними чотирма різними макропакет

Вхідними для troff, незалежно від того, чи використовується макропакет, є звичайний текст, за яким «розсипані» команди форматування Існує два види команд

Команда першого різновиду складається з точки на початку рядка, за якою слідують одна або дві букви або цифри і, можливо, пара метри, як у прикладі нижче:

.PP

.ft B

This  is a little bold  font   paragraph

Імена всіх вбудованих в troff команд задані буквами в нижньому регістрі, тому було прийнято угоду називати команди макропакет іменами у верхньому регістрі У даному прикладі PP – це команда макропакет ms для нового абзацу, а ft B – це команда troff, що викликає зміна шрифту на напівжирний (Назви шрифтів

записуються у верхньому регістрі набори шрифтів, доступних на різних набраних машинах, можуть відрізнятися один від одного)

Другий вид команд troff виглядає як символьний рядок, що починається з символу зворотної косої межі \, яка може перебувати в будь-якому місці введення наприклад \ fB також викликає зміну шрифту на напівжирний Така форма команди властива саме troff про це ще буде розказано пізніше

Перед кожним новим абзацом використовуйте команду PP, при цьому для форматування більшості документів можна обійтися дюжиною команд ms Наприклад, у додатку 2, що описує hoc, є назва, імена авторів, анотація, автоматична нумерація розділів та абзаци У ньому використано всього 14 команд, деякі з яких є парними Сторінка знаходить форму в ms:

.TL

Назва документа (одна чи кілька рядків)

.AU

Імена авторів, по одному на рядку

.AB

Анотація, що закінчується AE

.AE

.NH

Пронумерований заголовок (автоматична нумерація)

.PP

Абзац ..

.PP

Ще абзац ..

.SH

Підзаголовок (без нумерації)

.PP

Команди форматування можуть зустрітися на початку рядка Формат вихідних даних між командами вільний (положення символів нового рядка не має значення), тому що troff переносить слова з рядка в рядок, щоб зробити їх досить довгими (такий процес називається заповненням), І рівномірно розподіляє додаткові пропуски між словами, щоб вирівняти краю (виравніва5 ня) Проте починати кожне речення з нового рядка – це хороша звичка, вона полегшує подальше редагування

Ось початок справжньої документації по hoc:

.TL

Hoc – An  Interactive Language For  Floating Point  Arithmetic

.AU

Brian  Kernighan Rob Pike

.AB

.I Hoc

is a  simple  programmable  interpreter for  floating  point  expressions

It has  C–style  control  flow, function  definition  and the  usual numerical  built–in  functions

such  as  cosine  and logarithm

.AE

.NH Expressions

.PP

.I Hoc

is  an  expression  language, much  like  C:

although there  are  several  control–flow  statements, most statements such  as  assignments

are  expressions whose  value  is disregarded

Команда I виділяє свій аргумент курсивом або включає друк похилими літерами, якщо аргумент не заданий

Якщо використовується макропакет, він вказується як аргумент troff:

$ troff -ms hocms

Символи, наступні за-m, задають макропакет1 При форматуванні за допомогою ms лист статті про hoc виглядає так:

Hoc – An Interactive Language For Floating Point Arithmetic

Brian Kernighan Rob Pike

ABSTRACT

Hoc  is a simple programmable interpreter for  floating point expressions It has  C-style control flow, function definition  and  the  usual  numerical built-in functions such  as cosine and logarithm

1  Expressions

Hoc is an expression language, much like C: although there are  several  control-flow statements,  most  statements such   as  assignments are expressions whose value is disregarded

1 Макроси ms знаходяться у файлі / usr / lib / tmac / tmacs, а макроси man – в / usr / lib / tmac / tmacan

Відображення

Звичайно те, що troff заповнює і вирівнює рядки, можна розглядати як зручність, але іноді це небажано, наприклад в текстах програм Такий неформатований матеріал називається отобра жаем текстом Команди ms DS (display start – початок відображення) і DE (display end – кінець відображення) відокремлюють текст, який повинен бути надрукований в тому вигляді, в якому він введений, структуровано, але без перегрупування Наведемо наступну частину підручника з hoc, в якій є фрагмент тексту, що відображається:

.PP

.I Hoc

is  an  expression  language, much  like  C:

although there  are  several control–flow  statements,  most statements such  as  assignments  are  expressions whose  value  is  disregarded

For  example,  the  assignment  operator = assigns the  value of  its right  operand  to  its left  operand, and yields

the  value, so  multiple  assignments work

The expression grammar is:

.DS

.I

expr:                                  number

|       variable

|       ( expr  )

|       expr  binop  expr

|       unop expr

|       function  ( arguments  )

.R

.DE

Numbers  are  floating point

який виводиться як

Hoc  is an expression language, much like C: although there are several control-flow  statements, most statements such  as  assignments are   expressions  whose   value is  disregarded  For   example, the  assignment operator = assigns the  value of its right operand to its left operand, and   yields the  value, so  multiple assignments work The expression grammar is:

expr:

number

|

variable

|

(expr)

|

expr binop expr

|

unop expr

|

function (arguments)

Numbers are floating point

До отображаемому тексту не застосовується заповнення і вирівнювання Отже, якщо на поточній сторінці недостатньо місця, то відображається матеріал (і все, що слід за ним) поміщається на слідую щую сторінку У команди DS є кілька параметрів, в тому числі L для вирівнювання по лівому краю, C для центрування кожного рядка окремо і B, центрирующий весь відображуваний текст цілком

Елементи відображення, наведеного вище, розділені знаками табуляції За замовчуванням крок табуляції в troff дорівнює половині дюйма, а не восьми пробілам, як звичайно І навіть якщо б точки табуляції були розставлені через кожні 8 прогалин, то (так як всі символи мають різну ширину) знаки табуляції, оброблені troff, не завжди виглядали б, як очікувалося

Зміна шрифту

Макрос ms надає три команди для зміни шрифту Команда R змінює шрифт на прямий, звичайний шрифт, I змінює шрифт на курсив, а B – на напівжирний Введені без аргументів команди визначають шрифт наступного тексту:

This  text is roman, but

.I

this text is italic,

.R

this is roman again, and

.B

this is boldface

цей текст буде виглядати так:

This  text is roman, but  this text is italic, this is roman again, and  this  is boldface

Команди I і B обробляють необовязковий аргумент, який вказує, що зміна шрифту повинно застосовуватися тільки до аргу менту У troff аргументи, що містять пробіли, повинні полягати в лапки, причому існує єдиний символ, який може бути використаний з цією метою – подвійні лапки .

This  is roman,  but

.I this

is italic, and

.B  &quotthese  words&quot are  bold

виводиться як

This is roman, but  this is italic, and these words are bold

Нарешті, другий аргумент команди I або B виводиться прямим шрифтом, безпосередньо за першим аргументом (без пробілів) Така можливість часто використовується для виведення знаків пунктуації правильним шрифтом Порівняйте останню дужку в

(parenthetical

.I &quotitalic words)&quot

Тут вона виводиться неправильно, тобто (parenthetical italic words)

з останньою дужкою в

(parenthetical

.I &quotitalic words&quot )

Ця дужка надрукована правильно: (parenthetical italic words)

Відмінності шрифтів розпізнаються nroff, але результат виглядає не дуже обнадійливо Курсивні символи підкреслюються, а напівжирних символів взагалі немає (деякі версії nroff імітують напівжирний шрифт накладенням символів)

Різноманітні команди

Виноски вводяться командою FS, а завершуються командою FE Відпові венность за ідентифікують виноску мітки, такі як зірочка * або хрестик † лягає на вас Ця виноска була створена таким чином:

виноски позначки, такі як зірочка або хрестик \ (dg

.FS

\ (Dg Наприклад, ось такий хрестик

.FE

Ця виноска була створена таким чином ..

Абзаци з відступом (з цифрою або інший міткою скраю) створюються за допомогою команди IP Нехай потрібно створити:

(1)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Перший маленький абзац

(2)&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Другий абзац, який спеціально зроблений більш довгим, для того щоб показати, що відступ другого рядка буде таким же, як і у першому

Тоді треба ввести:

.IP  (1)

Перший маленький абзац

† Наприклад, ось такий хрестик

.IP  (2)

Другий абзац, який ..

Ознакою кінця команди IP є PP або LP (абзац, вирівняний по лівому краю) Аргументом IP може бути будь-яка рядок при необхідності захищайте прогалини лапками Другий аргумент може бути використаний для вказівки величини відступу

Застосування пари команд KS і KE призводить до того, що текст не раз деляется, тобто текст, укладений між двома цими командами, буде перенесений на нову сторінку, якщо не поміститься цілком на поточну Якщо замість KS використана KF, то текст переміщається за подальший текст, в початок наступної сторінки, якщо треба збе нитка його цілком на одній сторінці Команда KF використана для всіх таблиць в цій книзі

Більшість із значень ms за замовчуванням можна змінити, задавши регістри чисел, – це змінні troff, використовувані ms Напевно, найчастіше використовуються регістри, які управляють розміром тексту і відстанню між рядками Звичайний розмір тексту (який ви читаєте зараз) – це «10 пунктів», де пункт – це одиниця, успадкована з поліграфії, рівна приблизно 1/72 дюйма Відстань між рядками звичайно дорівнює 12 пунктам Щоб змінити ці величини, наприклад на 9 і 11 (як на наших дисплеях), встановіть регістри чисел PS і VS допомогою

.nr PS 9

.nr VS  11

Існують ще такі регістри чисел, як LL – для довжини рядка, PI – для відступу абзацу та PD – для відстані між абзацами Вони набувають чинності при введенні наступної команди PP або LP Команди ms представлені в табл 91

Таблиця 91 Часто використовувані в ms команди форматування (див також ms (7))

Команда Сенс

. AB початок анотації закінчується AE

. A U імя автора на наступному рядку дозволено використання кількох AU

. B початок напівжирного шрифту або застосування напівжирного шрифту до аргументу, якщо він заданий

.D&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp S t       початок відображуваного тексту (незаполняемого) закінчується DE t = L (вирівнювання по лівому краю), C (центрування), B (блочне центрування)

.E&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Q  s           початок математичного виразу s (Введення eqn) закінчується EN

. F S початок виноски закінчується FE

Таблиця 91 (продовження)

Команда

Сенс

I

IP  s

KF

KS

LP

NH  n

PP

R

SH

TL

TS

початок курсиву або застосування курсиву до аргументу, якщо він заданий абзац з відступом s

зберігати текст нерозділеним, якщо потрібно, перемістити на наступну сторінку закінчується KE

зберігати текст нерозділеним на сторінці закінчується KE

новий абзац, вирівняний по лівому краю

нумерований заголовокn-Го рівня заголовок слід, до PP

або LP

новий абзац

повернутися до прямого шрифту підзаголовок заголовок слід, до PP назву слід до наступної команди ms початок таблиці (введення tbl) закінчується TE

Джерело: Керниган Б, Пайк Р, UNIX Програмне оточення – Пер з англ – СПб: Символ-Плюс, 2003 – 416 с, Мул

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*