Linux下如何使用Troff格式化PDF文檔
Troff 是一個簡單但功能強大的 Linux 系統文檔文字處理器。 它允許您通過從命令行編譯源文件來輕鬆創建可打印文檔。 不像 膠乳 Troff 非常輕巧,並且預裝在大多數 Linux 系統上。 本教程向您展示如何在 Ubuntu 中使用 Troff 格式化 PDF 文檔。
什麼是 Troff,為什麼要使用它?
在最基本的意義上, 特羅夫 它是一個文字處理程序,可以將看起來像代碼的腳本轉換為可打印的文檔。 與文字處理器不同,Troff 不依賴於“所見即所得”模型。 相反,它要求您使用某些類型的代碼來處理您的格式。
簡單是這種風格的最大優點之一。 Troff 的基本安裝將包含創建文檔所需的一切。 此外,它沒有圖形用戶界面,這意味著您甚至可以通過 SSH 創建文檔。
提示:了解如何轉發 通過 SSH 的 GUI 應用程序 在 Linux 中。
Troff 安裝
大多數 Linux 發行版中通常默認捆綁了 Troff。 您可以通過運行它的 -h 標誌來檢查您的系統中是否有它。 這將顯示 Troff 安裝接受的所有標籤的簡短列表。
特羅夫-h
在某些情況下,發行版默認不會編譯 Troff。 這種情況下,可以通過搜索包安裝 “咕嚕咕嚕”。
這是 GNU 項目對 Troff 和 Nroff 程序的重新實現,其中包括許多新的和更新的功能。
您可以使用以下命令在 Ubuntu 中安裝 groff:
sudo apt 安裝 groff
創建第一個 Troff 文檔
與源代碼類似,每個 Troff 文檔都是一個文本文件,其中包含有關如何創建文檔的說明。 這包括頁面寬度和邊距以及字符和頁面間距。
這種控制級別允許您操縱程序來創建任何類型的文檔。 為了簡單起見,Troff 的開發人員創建了“宏”,將這些命令壓縮為更簡單的語法。
您將在 Troff 中使用的最常見的宏之一是毫秒。 將創建一篇論文風格的文檔。 您可以使用 touch 命令創建 ms 文檔:
觸摸我的第一個 document.ms
由於所有 Troff 文檔都是文本,因此您可以使用文本編輯器打開文檔。 就我而言,我使用的是 vim。 或者,您可以使用這些適用於 Linux 的文本編輯器中的任何一個。
vim 我的第一個文檔.ms
了解 Troff 格式
Troff 的所有文檔都遵循類似的結構。 您執行的每個格式化命令都必須在它試圖格式化的內容中單獨一行。 因此,典型的 Troff 文檔如下所示:
.COMMAND1 這是Troff文檔中的一段內容。 .COMMAND2 這是 Troff 文檔中的不同內容。
您將在幾毫秒內使用的兩個最基本的命令是 TL 和 .PP。 前者將您的文本轉換為標題並將其置於文檔中心,而後者將您的文本格式化為類似段落的樣式。
例如,以下代碼片段同時使用了 TL 和 .PP 命令:
.TL 我的第一個 Troff 文檔 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。 這不是一個很長的內容,但它是我的第一個 Troff 文檔,它是我引以為豪的東西。 它大約有三個句子長,應該正確地環繞文檔。
在這裡,通過將您的文件傳遞到 Troff 的軟件來創建您的文檔。
groff -ms -Tpdf ./my-first-document.ms > 輸出.pdf
提示:如果您喜歡更簡單的東西,請了解如何 在 Google 文檔中以 MLA 格式寫作.
創建粗體、斜體和下劃線文本
就像常規的文字處理器一樣,大多數 Troff 宏都提供了許多用於文檔自定義的樣式命令。 對於 ms,這些是 .B 和 . 我和。 UL 和 .BX。
- B 命令將文本更改為粗體。
- .I 命令將文本更改為斜體。
- UL 和。 BX 是兩個分別在文本周圍繪製下劃線和方框的命令。
與上面的命令類似,在您的文檔中使用這些命令需要每個樣式在其自己的行中分開:
.TL 我的第一個 Troff 文檔 .PP 這是 .B 內容 .R 我希望在我的最終文檔中看起來像一個段落。 [...]
在這個例子中,我在一個詞之前創建了一個新行 “內容” 我添加了 .B 命令以將其更改為粗體,然後我創建了一個新行並添加了 .R 命令。 這讓 Troff 可以恢復到他以前的技術。
需要注意的是,更改樣式時始終需要添加 .R 命令。 例如,以下代碼片段不會終止 .I 命令,因為 Troff 沒有看到它後面的 .R 文件:
.TL 我的第一個 Troff 文檔 .PP 這是我希望在最終文檔中看起來像一個段落的內容。 [...]
創建新的文檔部分
與 LaTeX 類似,Troff 也支持分區檢測和層次結構,因此編輯時無需對每個表頭的層級進行排序和匹配。
要在您的文檔中創建一個新部分,請使用 .NH 命令後跟您的標題名稱。
.TL 我的第一個 Troff 文檔 .NH 我的第一個標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。
默認情況下,每個 Troff 標頭都包含一個級別值,該級別值確定程序的構建方式及其內容在最終文檔中的顯示方式。 知道您可以更改此值以調整標題級別。
例如,以下內容在父級下方創建了一個 2 級地址:
.TL 我的第一個 Troff 文檔 .NH 我的第一個標題 .NH 2 我的第一個副標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。
除了常規編號的標題外,Troff 還可以創建仍將遵循文檔級別層次結構的空標題。
為此,請將 .NH 替換為 SH 命令:
.TL 我的第一個 Troff 文檔 .SH 我的第一個標題 .SH 2 我的第一個副標題 .PP 這是我希望在我的最終文檔中看起來像一個段落的內容。
提示:了解如何 更改 Google 文檔中的頁邊距.
在 Troff 中創建列表
Troff 的簡單性還允許您將她的行為改變為您想要的任何東西。 例如,Troff 或 ms 宏默認不會出現列表。 儘管如此,您仍然可以通過組合幾個 ms 命令來創建列表。
Troff 中的每個列表都由三部分組成:縮進、項目符號和內容。 要創建縮進,請使用 .rs 和 .rs 命令。 關於。 這會將其中任何文本的當前縮進級別縮進四個空格。
.RS 這是我的第一個項目。 。關於
接下來,使用 .IP 為您的菜單項創建項目符號。 這是一個段落縮進命令,可將文本的左邊距固定為特定寬度。
IP 命令還允許您設置自定義項目符號點以及它與文本之間的空格。 在這種情況下,我會將項目符號設置為“[1]”並給它四個空格。
.RS .IP [1] 4 這是我的第一個項目。 。關於
現在復制並粘貼您的 IP 命令以創建其他菜單項。
.RS .IP [1] 4 這是我的第一個項目。 .IP [2] 4 這是我的第二個項目。 .IP [3] 4 這是我的第三個項目。 。關於
最後,通過創建自定義宏來自動執行此過程。 例如,以下代碼片段將我的 IP 命令與 QW 相關聯。
.de QW .IP [-] 4 .. .RS .QW 這是我的第一個項目。 .QW 這是我的第二個項目。 .QW 這是我的第三個項目。 。關於
在 Troff 中使用預處理器創建表
Troff 的一個奇怪之處在於,它的大部分功能都作為 “初級治療”. 在大多數情況下,這些是程序外的二進製文件,它們通過創建 “預處理器容器腳本” 並將其轉換為低級 Troff 代碼。
Tbl 是 Troff 預處理器的一個很好的例子。 它是一個管理文檔中表格的程序。 基本的 Tbl 容器如下所示:
.TS allbox ; 抄送項目1 項目2 item3 item4 項目5 item6.TE
- .TS 和 .TE 命令告訴 Tbl 這是一個它可以讀取的環境。
- 第二行告訴程序如何格式化這個表。
- 第三行是一個空格分隔的字段,它定義了列的數量和表格的對齊方式。
- 第四行和第五行是包含表格內容的製表符分隔字段。
使用 Tbl 編譯文檔與常規 Troff 文件有點不同。 首先,上傳您的文件:
tbl my-first-document.ms > preprocessed.ms
接下來,將程序的輸出提供給 Troff:
groff -ms -Tpdf ./preprocessed.ms > 輸出.pdf
最後,使用 UNIX 管道自動執行此過程:
tbl 我的第一個文檔.ms | groff -ms -Tpdf > 輸出.pdf
經常問的問題:
Q1:可以在 Windows 下使用 Troff 嗎?
回答。 默認情況下,Troff 和 Groff 沒有正式移植到 Windows。 儘管如此,您仍然可以通過以下方式將 Groff 與其他 GNU 工具一起使用 為 Linux 安裝 Windows 子系統.
Q2:Troff 有書目跟踪功能嗎?
回答。 是的。 Referral 是一個簡單的預處理器,它使用外部參考書目文件自動跟踪 Troff 文檔中的參考文獻。 您可以通過運行 man referrer 訪問其手冊頁來了解有關其工作原理的更多信息。
Q3:如何解決編譯 Troff 時出現的“missing DESC”錯誤?
回答。 此問題可能是由於您的系統中缺少依賴項或版本文件不匹配。 要解決此問題,請從您的發行版存儲庫安裝適當的 groff 包。