ГлавнаяОперационные системыLinuxКак использовать Troff для форматирования PDF-документов в Linux

Как использовать Troff для форматирования PDF-документов в Linux

Понимание формата Troff

ощный текстовый процессор документов для систем Linux. Он позволяет легко создавать документы, готовые к печати, компилируя исходные файлы из командной строки. В отличие от Латекс , Troff невероятно легкий и предустановлен в большинстве систем Linux. В этом руководстве показано, как использовать Troff для форматирования PDF-документов в Ubuntu.

Что такое Troff и зачем его использовать

По сути, Трофф — это программа обработки текста, которая преобразует кодоподобные сценарии в документы, пригодные для печати. В отличие от текстовых процес

Что такое Troff и зачем его использовать

. Вместо этого вам потребуется использовать определенные типы кода для обработки форматирования.

Экран Libreoffice Writer по умолчанию.

Одним из самых больших преимуществ этого подхода является простота. Базовая установка Troff содержит все необходимое для создания документа. Кроме того, отсутствие графического пользовательского интерфейса означает, что вы можете создать документ даже через SSH.

Удаленный сеанс OpenBSD, на котором работает Troff.

Совет: узнайте, как пересылать приложения с графическим интерфейсом через SSH в Linux.

Установка Троффа

Troff часто входит в состав большинства дистрибутивов Linux по умолчанию. Вы можете проверить, есть ли он в вашей системе, запустив его флаг -h. Появится краткий список всех флагов, которые принимает ваша установка Troff.

troff -h
Экран терминала с флагом -h в Troff.

Бывают случаи, когда дистрибутивы не включают Troff по умолчанию. В этом случае вы можете установить его, найдя пакет «groff».

Окно терминала, в котором выполняется команда apt info для groff.

Это повторная реализация программ Troff и Nroff проекта GNU, которая включает ряд новых и современных функций.

Вы можете установить groff в Ubuntu с помощью следующей команды:

sudo apt install groff
Окно терминала, по<h2><span id=Установка Троффаstall для groff.">

Создание вашего первого документа Troff

Подобно исходному коду, каждый документ Troff представляет собой текстовый файл, содержащий инструкции по созданию документа. К ним относятся ширина страницы и полей, а также расстояние между буквами и страницами.

Экран окна терминала, показывающий сложный макрос Troff.

Этот уровень контроля позволяет вам манипулировать программой для создания любого типа документа. Чтобы упростить это, разработчики Troff создали «макросы», которые сводят эти команды к более простому синтаксису.

Один из наиболее распространенных макросов, которые вы будете использовать в Troff, — «ms». Он создаст документ в стиле статьи. Вы можете создать документ MS с помощью команды touch:

touch my-first-document.ms

Поскольку все документы Troff являются текстовыми, вы можете открыть документ с помощью текстового редактора. В моем случае я использую вим . Альтернативно вы можете использовать любой из этих текстовые редакторы для Linux .

vim my-first-document.ms
Окно терминала, показы<h2><span id=Создание вашего первого документа Troff формата Troff

Все документы 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.

Здесь создайте документ, передав файл в программу Troff.

groff -ms -Tpdf ./my-first-document.ms > output.pdf
PDF-вывод базового документа Troff.

Совет. Если вы предпочитаете что-то более простое, научитесь написать в формате 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 вернуться к прежнему стилю.

PDF-файл документа 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. [...]
PDF-файл документа Troff, в котором большая часть тела выделена курсивом.

Создание новых разделов документа

Подобно 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.
PDF-вывод документа Troff с одним пронумерованным заголовком.

По умолчанию каждый заголовок Troff имеет значение уровня, которое определяет, как программа структурирует и отображает свое содержимое в конечном документе. Зная это, вы можете изменить это значение, чтобы отрегулировать уровень заголовка.

Например, следующий код создает заголовок уровня 2 сразу под его родительским элементом:

.TL
My First Troff Document
 
.NH
My First Heading
.NH 2
My First Subheading
.PP
Th

Создание жирного, курсива и подчеркнутого текста

in my final document.
PDF-вывод документа Troff, на котором показана страница с пронумерованным вложенным заголовком.

Помимо обычных нумерованных заголовков, 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.
PDF-файл документа Troff, в котором показан ненумерованный вложенный заголовок.

Совет : узнайте, как изменить поля в Документах Google .

Создание списков в Troff

Простота Troff также позволяет вам изменять его поведение так, как вам нужно. Например, списки не появляются по умолчанию ни в макросах Troff, ни в ms. Несмотря на это, вы все равно можете создать список, объединив несколько команд ms.

Каждый список в Troff состоит из трех частей: отступ, маркер и содержимое. Чтобы создать отступ, используйте команды .RSи .RE. Это переместит текущий уровень отступа любого текста внутри него на четыре пробела.

.RS
This is my first item.
.RE
PDF-файл документа Troff, показывающий простой элемент списка.

Затем создайте маркер для элемента списка, используя .IP. Это команда «отступ абзаца», которая фиксирует определенную ширину левого поля вашего текста.

Команда .IPтакже позволяет вам установить собственный маркер и расстояние между ним и текстом. В данном случае я устанавливаю для маркера значение «[1]» и даю ему четыре пробела.

.RS
.IP [1] 4
This is my first item.
.RE
PDF-файл документа Troff, в котором показан один элемент списка с маркером.

Теперь скопируйте и вставьте команду .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
PDF-файл документа Troff, в котором показаны три основных элемента списка с маркерами.<

Наконец, автоматизируйте этот процесс, создав собственный макрос. Например, следующий отрывок связывает мою команду .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.

Компиляция документа с помощью 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 . Все изменения и скриншоты Рамсеса Реда.

Создание таблиц с помощью препроцессоров в Troff

Часто задаваемые вопросы

Можно ли использовать Troff в Windows?

Есть ли в Troff функция отслеживания библиографии?

Как исправить ошибку «отсутствует DESC» при компиляции Troff?

ПОХОЖИЕ СТАТЬИ

Популярные записи