Понимание формата Troff
ощный текстовый процессор документов для систем Linux. Он позволяет легко создавать документы, готовые к печати, компилируя исходные файлы из командной строки. В отличие от Латекс , Troff невероятно легкий и предустановлен в большинстве систем Linux. В этом руководстве показано, как использовать Troff для форматирования PDF-документов в Ubuntu.Что такое Troff и зачем его использовать
По сути, Трофф — это программа обработки текста, которая преобразует кодоподобные сценарии в документы, пригодные для печати. В отличие от текстовых процес
Contents
Что такое Troff и зачем его использовать
. Вместо этого вам потребуется использовать определенные типы кода для обработки форматирования.Одним из самых больших преимуществ этого подхода является простота. Базовая установка Troff содержит все необходимое для создания документа. Кроме того, отсутствие графического пользовательского интерфейса означает, что вы можете создать документ даже через SSH.
Совет: узнайте, как пересылать приложения с графическим интерфейсом через SSH в Linux.
Установка Троффа
Troff часто входит в состав большинства дистрибутивов Linux по умолчанию. Вы можете проверить, есть ли он в вашей системе, запустив его флаг -h
. Появится краткий список всех флагов, которые принимает ваша установка Troff.
troff -h
Бывают случаи, когда дистрибутивы не включают Troff по умолчанию. В этом случае вы можете установить его, найдя пакет «groff».
Это повторная реализация программ Troff и Nroff проекта GNU, которая включает ряд новых и современных функций.
Вы можете установить groff в Ubuntu с помощью следующей команды:
sudo apt install groff
Создание вашего первого документа Troff
Подобно исходному коду, каждый документ Troff представляет собой текстовый файл, содержащий инструкции по созданию документа. К ним относятся ширина страницы и полей, а также расстояние между буквами и страницами.
Этот уровень контроля позволяет вам манипулировать программой для создания любого типа документа. Чтобы упростить это, разработчики Troff создали «макросы», которые сводят эти команды к более простому синтаксису.
Один из наиболее распространенных макросов, которые вы будете использовать в Troff, — «ms». Он создаст документ в стиле статьи. Вы можете создать документ MS с помощью команды touch
:
touch my-first-document.ms
Поскольку все документы Troff являются текстовыми, вы можете открыть документ с помощью текстового редактора. В моем случае я использую вим . Альтернативно вы можете использовать любой из этих текстовые редакторы для Linux .
vim my-first-document.ms
Все документы Troff имеют схожую структуру. Каждая выполняемая вами команда форматирования должна находиться в отдельной строке содержимого, которое она пытается форматировать. Таким образом, типичный документ Troff будет выглядеть примерно так:
.COMMAND1 This is a piece of content in a Troff document. .COMMAND2 This is a different piece of content in a Troff document.
Две основные команды, которые вы будете использовать в ms, — это .TL
и .PP
. Первый преобразует текст в заголовок и центрирует его в документе, а второй форматирует текст в стиле абзаца.
Например, в следующем фрагменте используются команды .TL
и .PP
:
.TL
My First Troff Document
.PP
This is content that I want to look like a paragraph in my final document. It is not a very long content but it is my first Troff document and it is something that I am proud of. It is about three sentences long and it should wrap around the document properly.
Здесь создайте документ, передав файл в программу Troff.
groff -ms -Tpdf ./my-first-document.ms > output.pdf
Совет. Если вы предпочитаете что-то более простое, научитесь написать в формате MLA в Google Docs .
Создание жирного, курсива и подчеркнутого текста
Как и обычный текстовый процессор, большинство Troff макросы предоставляют ряд команд стиля для настройки вашего документа. Для мс это .B
, .I
, .UL
и .BX
.
- Команда
.B
превращает текст в жирный шрифт. - Команда
.I
меняет текст на курсив. .UL
и.BX
— это команды, которые рисуют подчеркивание и рамку вокруг текста соответственно.
Как и в случае с приведенными выше командами, их использование в документе требует разделения каждого стиля на отдельной строке:
.TL My First Troff Document .PP This is .B content .R that I want to look like a paragraph in my final document. [...]
В этом примере я создал новую строку перед словом «контент» и добавил команду .B
, чтобы сделать ее жирным шрифтом, затем создал новую строку и добавил 68команда. Это позволит Troff вернуться к прежнему стилю.
Важно отметить, что при изменении стиля всегда нужно добавлять команду .R
. Например, следующий отрывок не завершит команду .I
, поскольку Трофф не увидел .R
после нее:
.TL My First Troff Document .PP This is .I content that I want to look like a paragraph in my final document. [...]
Создание новых разделов документа
Подобно LaTeX, Troff также поддерживает обнаружение разделов и иерархии, поэтому вам не нужно упорядочивать и сопоставлять уровни каждого заголовка при редактировании.
Чтобы создать новый раздел в документе, используйте команду .NH
, за которой следует название заголовка.
.TL
My First Troff Document
.NH
My First Heading
.PP
This is content that I want to look like a paragraph in my final document.
По умолчанию каждый заголовок Troff имеет значение уровня, которое определяет, как программа структурирует и отображает свое содержимое в конечном документе. Зная это, вы можете изменить это значение, чтобы отрегулировать уровень заголовка.
Например, следующий код создает заголовок уровня 2 сразу под его родительским элементом:
.TL My First Troff Document .NH My First Heading .NH 2 My First Subheading .PP ThСоздание жирного, курсива и подчеркнутого текста
in my final document.
Помимо обычных нумерованных заголовков, Troff также может создавать пустые заголовки, которые по-прежнему будут соответствовать иерархии уровней документа.
Для этого замените .NH
на команду .SH
:
.TL My First Troff Document .SH My First Heading .SH 2 My First Subheading .PP This is content that I want to look like a paragraph in my final document.
Совет : узнайте, как изменить поля в Документах Google .
Создание списков в Troff
Простота Troff также позволяет вам изменять его поведение так, как вам нужно. Например, списки не появляются по умолчанию ни в макросах Troff, ни в ms. Несмотря на это, вы все равно можете создать список, объединив несколько команд ms.
Каждый список в Troff состоит из трех частей: отступ, маркер и содержимое. Чтобы создать отступ, используйте команды .RS
и .RE
. Это переместит текущий уровень отступа любого текста внутри него на четыре пробела.
.RS This is my first item. .RE
Затем создайте маркер для элемента списка, используя .IP
. Это команда «отступ абзаца», которая фиксирует определенную ширину левого поля вашего текста.
Команда .IP
также позволяет вам установить собственный маркер и расстояние между ним и текстом. В данном случае я устанавливаю для маркера значение «[1]» и даю ему четыре пробела.
.RS .IP [1] 4 This is my first item. .RE
Теперь скопируйте и вставьте команду .IP
, чтобы создать дополнительные элементы списка
Создание новых разделов документа
an>1] 4 This is my first item. .IP [2] 4 This is my second item. .IP [3] 4 This is my third item. .REНаконец, автоматизируйте этот процесс, создав собственный макрос. Например, следующий отрывок связывает мою команду .IP
с .QW
:
.de QW .IP [-] 4 .. .RS .QW This is my first item. .QW This is my second item. .QW This is my third item. .RE
Создание таблиц с помощью препроцессоров в Troff
Одной особенностью Troff является то, что большинство его функций существуют в виде «препроцессоров». По большей части это двоичные файлы вне программы, которые работают путем создания «скриптов-контейнеров препроцессора» и преобразования их в низкоуровневый код Troff.
Tbl — отличный пример препроцессора Troff. Это программа, которая управляет таблицами в документе. Базовый контейнер Tbl выглядит примерно так:
.TS allbox ; c c c. item1 <Tab> item2 <Tab> item3 item4 <Tab> item5 <Tab> item6 .TE
- Команды
.TS
и.TE
сообщают Tbl, что это среда, которую он может читать. - Вторая строка сообщает программе, как форматировать эту таблицу.
- Третья строка — это поле, разделенное пробелами, которое определяет количество столбцов и их выравнивание в таблице.
- Четвертая и пятая строки — это поля, разделенные табуляцией, которые содержат содержимое вашей таблицы.
Компиляция документа с помощью Tbl немного отличается от компиляции обычного файла Troff. Сначала загрузите файл:
tbl my-first-document.ms > preprocessed.ms
Затем передайте вывод программы в Troff:
groff -ms -Tpdf ./preprocessed.ms > output.pdf
Наконец, автоматизируйте этот процесс с помощью каналов UNIX:
tbl my-first-document.ms | groff -ms -Tpdf > output.pdf
Создание списков в Troff
ttps://saintist.ru/wp-content/uploads/2024/05/install-troff-linux-24-basic-table-output.png" alt="PDF-вывод документа Troff, в котором показана базовая таблица.">Полезно знать: узнайте больше о каналах UNIX и перенаправлении файлов с помощью СЭД .
Часто задаваемые вопросы
Можно ли использовать Troff в Windows?
По умолчанию ни Troff, ни Groff официально не перенесены на Windows. Несмотря на это, вы по-прежнему можете использовать Groff вместе с другими утилитами GNU, установив Подсистема Windows для Linux .
Есть ли в Troff функция отслеживания библиографии?
Да. Refer
— это простой препроцессор, который использует внешний файл библиографии для автоматического отслеживания ссылок в документе Troff. Вы можете узнать больше о том, как он работает, посетив его справочную страницу, запустив man refer
.
Как исправить ошибку «отсутствует DESC» при компиляции Troff?
Эта проблема, скорее всего, связана либо с отсутствием зависимости в вашей системе, либо с несоответствием файла версии. Чтобы это исправить, установите соответствующий пакет groff из репозитория вашего дистрибутива.
Изображение предоставлено: Саймон Хаттинга Вершер через Unsplash . Все изменения и скриншоты Рамсеса Реда.