Существует несколько классов ключевых слов eqn
. Греческие буквы записываются прописными и строчными: lambda
и LAMBDA
(λ и Λ). Другие математические символы имеют имена, такие как sum
, int
, infty
, grad
: Σ, ∫, ∞, ∇. Есть знаки позиции, например sub
, sup
, from
, to
, and
, over
:
Эта формула выводится так: 
sum from i=0 to infinity x sub i sup 2~→~1 over {2pi}
Существуют знаки операций типа sqrt
, расширяющие скобки, фигурные скобки и т.д. Программа eqn
, кроме того, позволяет создавать из объектов столбцы и матрицы. Предусмотрены команды для управления шрифтами и позициями, если те, которые установлены по умолчанию, не подходят.
Часто приходится помещать небольшие математические выражения, такие, как log 10(x), в тело текста, а не в отображение. Ключевое слово eqn
delim
определяет пару символов для выделения подобных выстроенных выражений. Символы, задаваемые в качестве левого и правого ограничителей, обычно одинаковы: часто применяется знак доллара $
. Но поскольку hoc
использует $
для аргументов, в нашем примере мы употребили @
. Символ %
тоже удобен как ограничитель, но других символов избегайте: многие из них имеют специальные назначения в различных программах, поэтому вы можете спровоцировать непредсказуемое поведение eqn
(именно так у нас и получилось с этим разделом).
Итак, после обозначения
.EQ
delim @ @
.EN
можно напечатать встроенное выражение
в виде
@ sum from i == 0 to infinity x sub i @ can be printed.
Встроенные выражения используются для вывода формул в таблице (см. пример из документации по hoc
):
.TS
center,box
css
lfCWn1.
\fВТаблица 3:\fР Встроенные константы
.sp.5
DEG 57.29577951308232087680 @180/pi@, градусы и радианы
E 2.71828182845904523536 @e@, основание натурального логарифма
GAMMA 0.57721566490153286060 @gamma@, константа Эйлера-Масчерони
PHI 1.61803398874989484820 @(sqrt5+1)/2@, золотое сечение
PI 3.14159265358979323846 @pi@, круговое трансцендентное число
.ТЕ
Из этой таблицы, кроме того, видно, как строки tbl
помещают десятичные точки в числовых ( n
) столбцах. Результат показан ниже.
Таблица 3: Встроенные константы
DEG |
57.29577951308232087680 |
180/π, градусы на радианы |
E |
2.71828182845904523536 |
е , основание натуральных логарифмов |
GAMMA |
0.57721566490153286060 |
γ, константа Эйлера-Масчерони |
PHI |
1.61803398874989484820 |
(√5 + 1)/2, золотое сечение |
PI |
3.14159265358979323846 |
π, круговое трансцендентное число |
И, наконец, поскольку eqn
выделяет курсивом любую строку букв, которые она не распознает, довольно просто выделять обычные слова курсивом. Последовательность @Word@
например, печатается как Word . Но будьте внимательны: eqn
распознает некоторые обычные символы (такие, как from
и to
) и специальным образом их рассматривает: она "глотает" пробелы, поэтому указанный прием следует применять с осторожностью.
Получение выходного потока
Как только ваш документ готов, вы должны соединить все препроцессоры и troff
в цепочку, чтобы получить выходной поток. Порядок команд следующий: tbl
, eqn
, troff
. Если вы просто используете troff
, то печатайте
$ troff -ms имена_файлов
(или -mm
)
Иначе вам придется задать аргумент имена_файлов
первой команде в цепочке и дать остальным командам читать их стандартный входной поток, как показано ниже:
$ eqn имена_файлов | troff -ms
или
$ tbl имена_файлов | eqn | troff -ms
Неудобно следить за тем из препроцессоров, который действительно должен печатать какой-то отдельный документ. Мы сочли уместным написать программу doctype
, обеспечивающую вывод соответствующей последовательности команд:
$ doctype ch9.*
cat ch9.1 ch9.2 ch9.3 ch9.4 | pic | tbl | eqn | troff -ms
$ doctype hoc.ms
cat hoc.ms | tbl | eqn | troff -ms
$
Программа doctype
реализована с помощью инструментов, рассмотренных в гл. 4. В частности, программа awk
отыскивает последовательность команд, используемую препроцессорами, и печатает строку команд, которые нужно вызвать, чтобы отформатировать документ. Она также находит команду .PP
(абзац) для форматирования пакетом запросов ms
.
Читать дальше
Конец ознакомительного отрывка
Купить книгу