Linux下如何使用Troff格式化PDF文檔

Troff 是一個簡單但功能強大的 Linux 系統文檔文字處理器。 它允許您通過從命令行編譯源文件來輕鬆創建可打印文檔。 不像 膠乳 Troff 非常輕巧,並且預裝在大多數 Linux 系統上。 本教程向您展示如何在 Ubuntu 中使用 Troff 格式化 PDF 文檔。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

什麼是 Troff,為什麼要使用它?

在最基本的意義上, 特羅夫 它是一個文字處理程序,可以將看起來像代碼的腳本轉換為可打印的文檔。 與文字處理器不同,Troff 不依賴於“所見即所得”模型。 相反,它要求您使用某些類型的代碼來處理您的格式。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

簡單是這種風格的最大優點之一。 Troff 的基本安裝將包含創建文檔所需的一切。 此外,它沒有圖形用戶界面,這意味著您甚至可以通過 SSH 創建文檔。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

提示:了解如何轉發 通過 SSH 的 GUI 應用程序 在 Linux 中。

Troff 安裝

大多數 Linux 發行版中通常默認捆綁了 Troff。 您可以通過運行它的 -h 標誌來檢查您的系統中是否有它。 這將顯示 Troff 安裝接受的所有標籤的簡短列表。

特羅夫-h

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

在某些情況下,發行版默認不會編譯 Troff。 這種情況下,可以通過搜索包安裝 “咕嚕咕嚕”。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

這是 GNU 項目對 Troff 和 Nroff 程序的重新實現,其中包括許多新的和更新的功能。

您可以使用以下命令在 Ubuntu 中安裝 groff:

sudo apt 安裝 groff

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

創建第一個 Troff 文檔

與源代碼類似,每個 Troff 文檔都是一個文本文件,其中包含有關如何創建文檔的說明。 這包括頁面寬度和邊距以及字符和頁面間距。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

這種控制級別允許您操縱程序來創建任何類型的文檔。 為了簡單起見,Troff 的開發人員創建了“宏”,將這些命令壓縮為更簡單的語法。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories
您將在 Troff 中使用的最常見的宏之一是毫秒。 將創建一篇論文風格的文檔。 您可以使用 touch 命令創建 ms 文檔:

觸摸我的第一個 document.ms

由於所有 Troff 文檔都是文本,因此您可以使用文本編輯器打開文檔。 就我而言,我使用的是 vim。 或者,您可以使用這些適用於 Linux 的文本編輯器中的任何一個。

vim 我的第一個文檔.ms

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

了解 Troff 格式

Troff 的所有文檔都遵循類似的結構。 您執行的每個格式化命令都必須在它試圖格式化的內容中單獨一行。 因此,典型的 Troff 文檔如下所示:

.COMMAND1 這是Troff文檔中的一段內容。 .COMMAND2 這是 Troff 文檔中的不同內容。

您將在幾毫秒內使用的兩個最基本的命令是 TL 和 .PP。 前者將您的文本轉換為標題並將其置於文檔中心,而後者將您的文本格式化為類似段落的樣式。

另請閱讀:  如何在 Arch Linux 中安裝 Deb 包

例如,以下代碼片段同時使用了 TL 和 .PP 命令:

.TL 我的第一個 Troff 文檔 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。 這不是一個很長的內容,但它是我的第一個 Troff 文檔,它是我引以為豪的東西。 它大約有三個句子長,應該正確地環繞文檔。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

在這裡,通過將您的文件傳遞到 Troff 的軟件來創建您的文檔。

groff -ms -Tpdf ./my-first-document.ms > 輸出.pdf

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

提示:如果您喜歡更簡單的東西,請了解如何 在 Google 文檔中以 MLA 格式寫作.

創建粗體、斜體和下劃線文本

就像常規的文字處理器一樣,大多數 Troff 宏都提供了許多用於文檔自定義的樣式命令。 對於 ms,這些是 .B 和 . 我和。 UL 和 .BX。

  • B 命令將文本更改為粗體。
  • .I 命令將文本更改為斜體。
  • UL 和。 BX 是兩個分別在文本周圍繪製下劃線和方框的命令。

與上面的命令類似,在您的文檔中使用這些命令需要每個樣式在其自己的行中分開:

.TL 我的第一個 Troff 文檔 .PP 這是 .B 內容 .R 我希望在我的最終文檔中看起來像一個段落。 [...]

在這個例子中,我在一個詞之前創建了一個新行 “內容” 我添加了 .B 命令以將其更改為粗體,然後我創建了一個新行並添加了 .R 命令。 這讓 Troff 可以恢復到他以前的技術。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

需要注意的是,更改樣式時始終需要添加 .R 命令。 例如,以下代碼片段不會終止 .I 命令,因為 Troff 沒有看到它後面的 .R 文件:

.TL 我的第一個 Troff 文檔 .PP 這是我希望在最終文檔中看起來像一個段落的內容。 [...]

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

創建新的文檔部分

與 LaTeX 類似,Troff 也支持分區檢測和層次結構,因此編輯時無需對每個表頭的層級進行排序和匹配。

另請閱讀:  如何使用 Apple Silicon 在 M1 Mac 上安裝 Linux

要在您的文檔中創建一個新部分,請使用 .NH 命令後跟您的標題名稱。

.TL 我的第一個 Troff 文檔 .NH 我的第一個標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

默認情況下,每個 Troff 標頭都包含一個級別值,該級別值確定程序的構建方式及其內容在最終文檔中的顯示方式。 知道您可以更改此值以調整標題級別。

例如,以下內容在父級下方創建了一個 2 級地址:

.TL 我的第一個 Troff 文檔 .NH 我的第一個標題 .NH 2 我的第一個副標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

除了常規編號的標題外,Troff 還可以創建仍將遵循文檔級別層次結構的空標題。

為此,請將 .NH 替換為 SH 命令:

.TL 我的第一個 Troff 文檔 .SH 我的第一個標題 .SH 2 我的第一個副標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

提示:了解如何 更改 Google 文檔中的頁邊距.

在 Troff 中創建列表

Troff 的簡單性還允許您將她的行為改變為您想要的任何東西。 例如,Troff 或 ms 宏默認不會出現列表。 儘管如此,您仍然可以通過組合幾個 ms 命令來創建列表。

Troff 中的每個列表都由三部分組成:縮進、項目符號和內容。 要創建縮進,請使用 .rs 和 .rs 命令。 關於。 這會將其中任何文本的當前縮進級別縮進四個空格。

.RS 這是我的第一個項目。 。關於

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories接下來,使用 .IP 為您的菜單項創建項目符號。 這是一個段落縮進命令,可將文本的左邊距固定為特定寬度。

IP 命令還允許您設置自定義項目符號點以及它與文本之間的空格。 在這種情況下,我會將項目符號設置為“[1]”並給它四個空格。

.RS .IP [1] 4 這是我的第一個項目。 。關於

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories現在復制並粘貼您的 IP 命令以創建其他菜單項。

.RS .IP [1] 4 這是我的第一個項目。 .IP [2] 4 這是我的第二個項目。 .IP [3] 4 這是我的第三個項目。 。關於

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

最後,通過創建自定義宏來自動執行此過程。 例如,以下代碼片段將我的 IP 命令與 QW 相關聯。

.de QW .IP [-] 4 .. .RS .QW 這是我的第一個項目。 .QW 這是我的第二個項目。 .QW 這是我的第三個項目。 。關於

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

在 Troff 中使用預處理器創建表

Troff 的一個奇怪之處在於,它的大部分功能都作為 “初級治療”. 在大多數情況下,這些是程序外的二進製文件,它們通過創建 “預處理器容器腳本” 並將其轉換為低級 Troff 代碼。

另請閱讀:  如何更新 Fedora Linux

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

Tbl 是 Troff 預處理器的一個很好的例子。 它是一個管理文檔中表格的程序。 基本的 Tbl 容器如下所示:

.TS allbox ; 抄送項目1 項目2 item3 item4 項目5 item6.TE
  • .TS 和 .TE 命令告訴 Tbl 這是一個它可以讀取的環境。
  • 第二行告訴程序如何格式化這個表。
  • 第三行是一個空格分隔的字段,它定義了列的數量和表格的對齊方式。
  • 第四行和第五行是包含表格內容的製表符分隔字段。

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

使用 Tbl 編譯文檔與常規 Troff 文件有點不同。 首先,上傳您的文件:

tbl my-first-document.ms > preprocessed.ms

接下來,將程序的輸出提供給 Troff:

groff -ms -Tpdf ./preprocessed.ms > 輸出.pdf

最後,使用 UNIX 管道自動執行此過程:

tbl 我的第一個文檔.ms | groff -ms -Tpdf > 輸出.pdf

如何在 Linux 中使用 Troff 格式化 PDF 文件 - %categories

經常問的問題:

Q1:可以在 Windows 下使用 Troff 嗎?

回答。 默認情況下,Troff 和 Groff 沒有正式移植到 Windows。 儘管如此,您仍然可以通過以下方式將 Groff 與其他 GNU 工具一起使用 為 Linux 安裝 Windows 子系統.

Q2:Troff 有書目跟踪功能嗎?

回答。 是的。 Referral 是一個簡單的預處理器,它使用外部參考書目文件自動跟踪 Troff 文檔中的參考文獻。 您可以通過運行 man referrer 訪問其手冊頁來了解有關其工作原理的更多信息。

Q3:如何解決編譯 Troff 時出現的“missing DESC”錯誤?

回答。 此問題可能是由於您的系統中缺少依賴項或版本文件不匹配。 要解決此問題,請從您的發行版存儲庫安裝適當的 groff 包。

你可能也會喜歡