stringtranslate.com

трофф

troff ( / ˈ t r ɒ f / ), сокращение от «typesetter roff», является основным компонентом системы обработки документов , разработанной Bell Labs для операционной системы Unix . troff и связанный с ним nroff были разработаны на основе оригинального roff .

В то время как nroff был предназначен для вывода на терминалы и линейные принтеры, troff был предназначен для вывода на системы наборного набора , в частности, на Graphic Systems CAT , представленную в 1972 году. Оба использовали один и тот же базовый язык разметки , и один и тот же исходный файл обычно мог использоваться nroff или troff без изменений.

troff содержит команды для назначения шрифтов, интервалов, абзацев, полей, сносок и многого другого. В отличие от многих других текстовых форматировщиков, troff может располагать символы на странице произвольно, даже перекрывая их, и имеет полностью программируемый язык ввода. Отдельные препроцессоры используются для более удобного создания таблиц, диаграмм и математических формул. Входные данные для troff — это простые текстовые файлы, которые можно создать в любом текстовом редакторе.

Были созданы обширные пакеты макросов для различных стилей документов. Типичный дистрибутив troff включает макросы me для форматирования исследовательских работ, макросы man и mdoc для создания страниц man Unix , макросы mv для создания монтируемых прозрачных пленок , а также макросы ms и mm для писем, книг, технических меморандумов и отчетов.

История

Происхождение troff можно проследить до программы форматирования текста RUNOFF , написанной Джеромом Х. Зальцером для операционной системы CTSS Массачусетского технологического института в середине 1960-х годов. (Название предположительно произошло от фразы I'll run off a document . )

Боб Моррис перенес его на архитектуру GE 635 и назвал программу roff (сокращение от runoff ). [ требуется ссылка ] Она была переписана как rf для PDP-7 , и в то же время (1969) Дуг Макилрой переписал расширенную и упрощенную версию roff на языке программирования BCPL .

Первая версия Unix была разработана на PDP-7, который стоял в Bell Labs . В 1971 году разработчики захотели получить PDP-11 для дальнейшей работы над операционной системой. Чтобы оправдать стоимость этой системы, они предложили реализовать систему форматирования документов для патентного отдела Bell Labs. [1] Эта первая программа форматирования была повторной реализацией roff Макилроя , написанной Джо Ф. Оссаной .

Когда им понадобился более гибкий язык, была написана новая версия roff под названием nroff ( более новая «roff» ), которая стала основой для всех будущих версий. Когда они получили фотонаборный аппарат Graphic Systems CAT , Осанна модифицировала nroff для поддержки нескольких шрифтов и пропорциональных интервалов . Названный troff , от наборщика roff , его сложный вывод поразил производителя наборщика и смутил рецензентов , которые думали, что рукописи с использованием troff уже публиковались ранее. [2] [3] Таким образом, название troff произносится как / ˈ t r ɒ f /, а не * / ˈ t r ɒ f / .

Вместе с troff появился nroff (на самом деле это была почти одна и та же программа), который был предназначен для вывода данных на строчные принтеры и символьные терминалы . Он понимал все, что делал troff , и игнорировал команды, которые не были применимы, например, изменение шрифта .

Troff Осанны был написан на языке ассемблера PDP-11 и производил вывод специально для фотонаборного устройства CAT . Он переписал его на C , хотя теперь он состоял из 7000 строк некомментированного кода и все еще зависел от CAT. Поскольку CAT стал менее распространенным и больше не поддерживался производителем, необходимость сделать его поддерживающим другие устройства стала приоритетной. Осанна умер до того, как эта задача была выполнена, поэтому Брайан Керниган взялся за переписывание troff . Новая переписанная версия производила аппаратно-независимый код, который постпроцессорам было очень легко читать и переводить в соответствующие коды принтера. Кроме того, эта новая версия troff (часто называемая ditroff для device independent troff ) имела несколько расширений, которые включали функции рисования. [4] Документация программы определяет формат вывода ditroff , который используется многими современными клонами troff, такими как GNU groff .

В 1983 году troff был одним из нескольких инструментов UNIX, доступных для операционной системы UNOS компании Charles River Data Systems по лицензии Bell Laboratories . [5]

Коллекция инструментов troff (включая пре- и постпроцессоры) в конечном итоге была названа Documenter's WorkBench (DWB) и находилась в процессе непрерывной разработки в 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 , существует несколько версий AT&T troff (CAT и основанные на ditroff [6] ), доступных под различными лицензиями с открытым исходным кодом.

Макросы

В целом, не поощрялось использование troff напрямую, а скорее переход через более простой в использовании интерфейс. [7] [8] Troff включает макросы , которые запускаются перед началом обработки документа. Эти макросы включают настройку верхних и нижних колонтитулов страниц, определение новых команд и влияние на то, как будет отформатирован вывод. Аргумент командной строки для включения набора макросов -m name , что привело к тому, что многие наборы макросов стали известны как базовое имя файла с ведущим m . [9]

Стандартные наборы макросов, начинающиеся с m :

Макросы ms были первыми из них, разработанными в AT&T, до того, как их вытеснили макросы mm. [18] Одной из целей макросов mm было то, чтобы их можно было использовать в машинописном пуле Bell Labs, и со временем это произошло, и макросы mm стали стандартом в Bell Labs. [19] AT&T сделала макросы mm коммерчески доступными для System V Unix. [18] Напротив, макросы me были разработаны в Беркли. [18]

Пример простого делового письма, подготовленного с помощью макросов mm:

.НД "10 января 1993 г.".AU "Мисс Джейн Смит".AT "Предстоящая встреча".МТ 5.ДССсылка #A12345.sp 4Г-н Сэмюэл ДжонсДиректор полевого отделения, Бюро инспекций1010 Правительственная площадьКэпитолтаун, ST.sp 3Уважаемый г-н Джонс,.sp 2Ссылаясь на отмеченное обязательство представить на государственную инспекцию наш недавно созданный производственный процесс, мы просим вас рассмотреть возможную нецелесообразность подчинения инновационных технологий завтрашнего дня во многом устаревшим требованиям вчерашнего дня. Если наше великое государство хочет процветать в двадцать первом веке, мы должны принять меры.Б сейчас,в.Я этогод.Я этодесятилетие, чтобы подготовить нашу промышленную базу к межгосударственной и международной конкуренции, которая обязательно появится. Наш новый процесс делает именно это. Пожалуйста, не позволяйте, чтобы его уничтожила нормативная среда, которая больше не подходит.Благодарим Вас за рассмотрение нашей позиции..FC С уважением.SG

Полный список доступных макросов обычно приводится на tmac(5) странице руководства . [14]

Препроцессоры

По мере развития troff , поскольку есть несколько вещей, которые нельзя легко сделать в troff , было разработано несколько препроцессоров . Эти программы преобразуют определенные части документа во входные данные troff , естественным образом вписываясь в использование «конвейеров» в Unix — отправляя вывод одной программы в качестве входных данных другой (см. каналы и фильтры ). Обычно каждый препроцессор транслирует только разделы входного файла, которые специально помечены, пропуская остальную часть файла без изменений. Встроенные инструкции препроцессора написаны на простом языке программирования, специфичном для приложения, что обеспечивает высокую степень мощности и гибкости.

Три препроцессора предоставляют troff возможности рисования, определяя предметно-ориентированный язык для описания изображения.

Кроме того, существует команда soelim, которая удаляет .soдирективы включения из входного текста. [24]

Типичная структура трубопровода может быть следующей:

soelim file | refer | ideal | pic | tbl | eqn | troff

Еще больше препроцессоров позволяют рисовать более сложные изображения, генерируя выходные данные для pic .

Другие интерфейсы

Разработано несколько других интерфейсов, призванных стать более дружественными интерфейсами для troff.

Один из них — Sanscribe , изначально разработанный в Беркли, а затем усовершенствованный в 1980-х несколькими пользователями, включая Intel и InterACT . Sanscribe, используемый для написания записок, отчетов, документов, построен на основе базовых команд troff, а также макросов me и различных пре- и постпроцессоров, таких как soelim, eqn, tbl, grap и pic. Однако это основной двоичный файл программы, а не препроцессор. Возможность условного включения делает его особенно полезным для поддержки многоплатформенных справочных руководств. Однако Sanscribe является хрупким и склонным к появлению криптографических ошибок или созданию странно отформатированных результатов. [28]

Специализированный фронтенд — vgrind , который генерирует красиво отформатированные листинги исходных программ с такими функциями, как выделение комментариев курсивом, ключевых слов жирным шрифтом и имен функций, выделенных на полях. Он может работать как фильтр или как основная программа, а его вывод передается в troff. Он поддерживает языки, используемые в лабораториях Bell Labs, включая не только Fortran , C и C++, но и инструменты, специфичные для домена, такие как Bourne shell и yacc, а также более отдаленные, такие как Emacs Lisp и Icon . [24]

Другой подход используется в наборе инструментов CADiZ для обозначения Z. Вместо того, чтобы cadizпрограмма была препроцессором в передней части конвейера, она взаимодействует несколько раз с troffкак входными, так и выходными данными, используя сохраненные файлы, а не конвейер. CADiZ также содержит свой собственный набор макросов, вызываемых .ZAчерез .ZZ. [29]

Смотрите также

Ссылки

  1. ^ Керниган, BW (октябрь 2019 г.). Unix: история и мемуары. Kindle Direct Publishing. п. 42. ИСБН 9781695978553.
  2. ^ JF Ossanna. Руководство пользователя Nroff/Troff . CSTR #54, Bell Labs, 1976. Пересмотрено BW Kernighan, 1992.
  3. ^ Макилрой, МД (1987). Исследовательский ридер Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  4. BW Kernighan. Независимый от наборщиков TROFF . CSTR #97, Bell Labs, 1981, пересмотрено в марте 1982.
  5. ^ The Insider's Guide To The Universe (PDF) . Charles River Data Systems, Inc. 1983. стр. 13.
  6. ^ См. страницу руководства по конвертеру ditroff -> postscript в OpenSolaris: dpost(1) –  illumos и справочное руководство по командам пользователя OpenSolaris из последней версии OpenSolaris на базе Sun
  7. ^ Эмерсон, Сандра Л.; Полселл, Карен (1987). Набор текста по методу Троффа для систем UNIX · . Энглвуд Клиффс, Нью-Джерси: Prentice-Hall. стр. 9.
  8. ^ Gehani, Narain (1992). Форматирование и набор документов в системе UNIX (второе издание). Summit, Нью-Джерси: Silicon Press. С. 11–12. ISBN 978-0-9615336-2-5.
  9. ^ Линдхольм, Стивен. «макросы groff/troff: ms, mm, me или mom»... . Получено 3 июня 2024 г.
  10. ^ "Написание и форматирование страниц руководства UNIX с макросами -man". home.fnal.gov . Получено 7 мая 2019 г. .
  11. ^ man(7)  -  Руководство по разным Linux
  12. ^ mdoc(7)  –  Руководство по FreeBSD. Разная информация
  13. ^ "Index - Mandoc extended documentation". Mandoc . Получено 7 мая 2019 .
  14. ^ ab groff_tmac(5) –  Руководство по форматам файлов Linux
  15. ^ groff_me(7)  -  Руководство по разным Linux
  16. ^ groff_mm(7)  -  Руководство по разным Linux
  17. ^ groff_ms(7)  -  Руководство по разным Linux
  18. ^ abc Шринивасан, Б. (1993). Обработка и набор документов UNIX. Сингапур: World Scientific. С. 11–12. ISBN 978-981-02-0605-5.
  19. ^ Mashey, John (18 июля 2018 г.). Dag Spicer (ред.). «Устная история Джона Маши» (PDF) (интервью). Интервью провел Джон Маркофф. Маунтин-Вью, Калифорния: Музей компьютерной истории. стр. 27–29, 37. Получено 26 мая 2024 г.
  20. ^ Б. В. Керниган и Лоринда Л. Черри. Система набора математических текстов . CSTR #17, Bell Labs, май 1974 г.
  21. ^ Б. В. Керниган. PIC — Графический язык для набора текста (пересмотренное руководство пользователя) . CSTR #116, Bell Labs, декабрь 1984 г.
  22. ^ CJ Van Wyk. Руководство пользователя IDEAL . CSTR #103, Bell Labs, декабрь 1981 г.
  23. ^ grn — препроцессор groff для файлов gremlin [1].
  24. ^ ab Robbins, Arnold (1999). UNIX in a Nutshell: A Desktop Quick Reference for System V Release 4 and Solaris 7 (Third ed.). Севастополь, Калифорния: O'Reilly Media. стр. 151, 187–189. ISBN 978-1-56592-427-7.
  25. ^ Дж. Л. Бентли и Б. В. Керниган. GRAP — Язык для набора графиков (Учебное пособие и руководство пользователя) . CSTR #114, Bell Labs, август 1984 г.
  26. ^ JL Bentley, LW Jelinski и BW Kernighan. CHEM — Программа для набора структурных диаграмм химических соединений . CSTR #122, Компьютеры и химия, Bell Labs, апрель 1986 г.
  27. ^ Дж. Л. Бентли. DFORMAT — Программа для набора форматов данных . CSTR #142, Bell Labs, апрель 1988 г.
  28. Sanscribe: Руководство пользователя и справочник (редакция 3.0). ... 13 января 1989 г. стр. 1–1, 2–1, 3–2, 6–1.
  29. ^ Jordan, David; McDermid, John A.; Toyn, Ian (1991). Nicholls, JE (ред.). CADi Z {\displaystyle \mathbb {Z} } – Computer Aided Design in Z. Z User Workshop, Oxford 1990: Proceedings of the Fifth Annual Z User Meeting, Oxford: 17–18 December 1990. Berlin, Heidelberg: Springer-Verlag. С. 93–104.

Внешние ссылки