Оригинальный автор (ы) | Джо Оссанна |
---|---|
Разработчик (и) | ATT Bell Лаборатории |
Операционная система | Unix, Unix-подобная, Plan 9 |
Платформа | Кросс-платформенная |
Тип | Команда |
Веб-сайт | troff.org |
troff (), сокращение от «наборщик roff», является основным компонентом системы обработки документов разработан ATT Corporation для операционной системы Unix. troff и связанный с ним nroff были разработаны на основе исходного roff.
. В то время как nroff был предназначен для вывода на терминалы и линейные принтеры, troff был предназначен для вывода на верстка, в частности, Graphic Systems CAT, которая была представлена в 1972 году. Обе использовали один и тот же базовый язык разметки , и один исходный файл обычно мог использоваться nroff или troff без изменений.
troff содержит команды для обозначения шрифтов, интервалов, абзацев, полей, сносок и т. Д. В отличие от многих других средств форматирования текста, troff может размещать символы на странице произвольно, даже перекрывая их, и имеет полностью программируемый язык ввода. Отдельные препроцессоры используются для более удобного создания таблиц, диаграмм и математики. Входные данные для troff - это простые текстовые файлы, которые могут быть созданы любым текстовым редактором.
Были созданы обширные пакеты макросов для различных стилей документов. Типичное распределение troff включает макросы me для форматирования исследовательских работ, макросы man и mdoc для создания страниц руководства Unix ., mvмакросы для создания монтируемых прозрачных пленок и макросы ms и mm для писем, книг, технических меморандумов и отчетов.
Истоки troff можно проследить до программы форматирования текста под названием RUNOFF, которая была написана Джеромом Х. Зальцером для Операционная система MIT CTSS в середине 1960-х. (Название якобы произошло от фразы «Я уберу документ».)
Боб Моррис перенес его на архитектуру GE 635 и назвал программу roff ( аббревиатура от сток). Он был переписан как для PDP-7, и в то же время (1969) Дуг Макилрой переписал расширенную и упрощенную версию roff в BCPL язык программирования.
Первая версия Unix была разработана на PDP-7, которая находилась около Bell Labs. В 1971 году разработчики хотели получить PDP-11 для дальнейшей работы над операционной системой. Чтобы оправдать стоимость этой системы, они предложили внедрить систему форматирования документов для патентного отдела Bell Labs. Эта первая программа форматирования была повторной реализацией roff Макиллроя, написанной Джо Ф. Оссанной.
Когда им понадобился более гибкий язык, новая версия roff под названием nroff (более новая «roff») был написан, который лег в основу всех будущих версий. Когда у них появился фотонабор Graphic Systems CAT, Оссанна модифицировала nroff для поддержки нескольких шрифтов и пропорционального интервала. Названный troff, от слова «наборщик roff», его сложный продукт поразил производителя наборного устройства и смутил рецензентов, считавших, что рукописи с использованием troff публиковались раньше. Таким образом, имя troff произносится как, а не * .
Вместе с troff появился nroff (фактически это была почти та же программа), который был предназначен для вывода для строчные принтеры и символьные терминалы. Он понимал все, что делал troff, и игнорировал команды, которые не были применимы, например, изменение шрифта .
troff Оссанны был написан на PDP-11 языке ассемблера и производился специально для фотонабора CAT . Он переписал его на C, хотя теперь это было 7000 строк кода без комментариев и все еще зависело от CAT. Поскольку CAT стал менее распространенным и больше не поддерживался производителем, необходимость поддержки других устройств стала приоритетной. Оссанна умерла до того, как эта задача была завершена, поэтому Брайан Керниган взял на себя задачу переписать troff. Недавно переписанная версия произвела аппаратно-независимый код, который постпроцессорам было очень легко читать и переводить в соответствующие коды принтера. Кроме того, эта новая версия troff (часто называемая ditroff для независимого от устройства troff) имела несколько расширений, которые включали функции рисования. Документация программы определяет выходной формат ditroff, который используется многими современными клонами troff, такими как GNU groff.
Коллекция инструментов troff (включая pre - и постпроцессоры) в конечном итоге была названа, и находился в стадии непрерывной разработки в Bell Labs, а затем в дочерней компании Unix System Laboratories (USL) до 1994 года. В то время SoftQuad взял на себя обслуживание, хотя Брайан Керниган продолжил улучшать troff самостоятельно. Таким образом, используются как минимум следующие варианты оригинального troff Bell Labs:
Хотя troff был вытеснен другими программами, такими как Interleaf, FrameMaker и LaTeX, он до сих пор довольно широко используется. Он остается программой форматирования по умолчанию для документации UNIX.
. Программное обеспечение было переопределено как groff для системы GNU, начиная с 1990 года. Кроме того, из-за открытый исходный код из древних систем UNIX, а также современных преемников, таких как версии с открытым исходным кодом на основе ditroff, найденные в OpenSolaris и Plan 9 от Bell Labs существует несколько версий ATT troff (на базе CAT и ditroff), доступных под различными лицензиями с открытым исходным кодом.
Troff включает в себя наборы команд, называемых макросами, которые запускаются перед началом обработки документа. Эти макросы включают настройку верхних и нижних колонтитулов страниц, определение новых команд и, как правило, влияние на форматирование вывода. Аргументом командной строки для включения набора макросов является -m имя, что привело к тому, что многие наборы макросов стали известны как базовые имена файлов с начальным m.
Стандартные наборы макросов, с ведущими m :
mandoc
- это слияние, которое поддерживает оба набора ручных команд.Более полный список доступных макросов обычно приведен на tmac(5)
странице руководства.
По мере развития troff, поскольку есть несколько вещей, которые нельзя легко сделать в troff, было разработано несколько препроцессоров . Эти программы преобразуют определенные части документа во входные данные troff, естественным образом вписываясь в использование «конвейеров» в Unix - отправка выходных данных одной программы в качестве входных данных для другой (см. конвейеры и фильтры ). Как правило, каждый препроцессор переводит только специально отмеченные разделы входного файла, передавая остальную часть файла без изменений. Встроенные инструкции предварительной обработки написаны на простом языке программирования для конкретных приложений, который обеспечивает высокую степень мощности и гибкости. Препроцессор
Три препроцессора предоставляют troff возможности рисования, определяя предметно-ориентированный язык для описания изображения.
Еще больше препроцессоров позволяют рисовать более сложные изображения, генерируя выходные данные для pic.