Linux中國

groff 程序員的 5 個標誌

我第一次發現 Unix 系統是在 20 世紀 90 年代早期,當時我還在大學讀本科。我太喜歡這個系統了,所以我將家裡電腦上的 MS-DOS 也換成了 Linux 系統。

在 90 年代早期至中期,Linux 所缺失的一個東西是 字處理軟體 word processor 。作為其他桌面操作系統的標準辦公程序,字處理軟體能讓你輕鬆地編輯文本。我經常在 DOS 上使用字處理軟體來撰寫課程論文。直到 90 年代末,我都沒能找到一款 Linux 原生的字處理軟體。直到那時,文字處理是我在第一台電腦上保留雙啟動的少有的原因之一,那樣我可以偶爾切換到 DOS 系統寫論文。

後來,我發現 Linux 提供了一款文字處理軟體:GNU troff,它一般稱為 groff,是經典的文本處理系統 troff 的一個現代實現。troff 是 「 排版工快印 typesetter roff 」 的簡稱,是 nroff 系統的改進版本,而 nroff 又是最初的 roff 系統的新實現。roff 表示 快速印出 run off ,比如「快速印出」一份文檔。

利用文本處理系統,你在純文本編輯器里編輯內容,通過 macro 或其他處理命令來添加格式。然後將文件輸入文本處理系統,比如 groff,來生成適合列印的格式化輸出。另一個知名的文本處理系統是 LaTeX,但是 groff 已經滿足我的需求,而且足夠簡單。

經過一點實踐,我發現在 Linux 上使用 groff 來撰寫課程論文與使用字處理軟體一樣容易。儘管我現在不再使用 groff 來寫文檔了,我依然記得它的那些宏和命令。如果你也是這樣並且在那麼多年之前學會了使用 groff 寫作,你可能會認出這 5 個 groff 程序員的標誌。

1、你有一個喜歡的宏集

輸入由宏點綴的純文本,你便能在 groff 里對文檔進行格式化。groff 里的宏是行首為單個句點(.)的短命令。例如:如果你想在輸出里插入幾行,宏命令 .sp 2 會添加兩個空行。groff 還具有其他一些基本的宏,支持各種各樣的格式化。

為了能讓作者更容易地格式化文檔,groff 還提供了不同的 宏集 macro set ,即一組能夠讓你以自己的方式格式化文檔的宏的集合。我學會的第一個宏集是 -me 宏集。這個宏集的名稱其實是 e,你在處理文件時使用 -me 選項來指定這個 e 宏集。

groff 還包含其他宏集。例如,-man 宏集以前是用于格式化 Unix 系統內置的 手冊頁 manual page 的標準宏集,-ms 宏集經常用于格式化其他一些技術文檔。如果你學會了使用 groff 寫作,你可能有一個喜歡的宏集。

2、你想專註於內容而非格式

使用 groff 寫作的一個很好的特點是,你能專註於你的 內容,而不用太擔心它看起來會怎麼樣。對於技術作者而言這是一個很實用的特點。對專業作家來說,groff 是一個很好的、「不會分心」的寫作環境。至少,使用 groff -T 選項所支持的任何格式來交付內容時你不用擔心,這包括 PDF、PostScript、HTML、以及純文本。不過,你無法直接從 groff 生成 LibreOffice ODT 文件或者 Word DOC 文件。

一旦你使用 groff 寫作變得有信心之後,宏便開始 消失。用于格式化的宏變成了背景的一部分,而你純粹地專註於眼前的文本內容。我已經使用 groff 寫了足夠多內容,以至於我甚至不再看見那些宏。也許,這就像寫代碼,而你的大腦隨意換檔,於是你就像計算機一樣思考,看到的代碼就是一組指令。對我而言,使用 groff 寫作就像那樣:我僅僅看到文本,而我的大腦將宏自動地翻譯成格式。

3、你喜歡懷舊復古的感覺

當然,使用一個更典型的字處理軟體來寫你的文檔可能更 簡單,比如 LibreOffice Writer、甚至 Google Docs 或 Microsoft Word。而且對於某些種類的文檔,桌面型字處理軟體才是正確的選擇。但是,如果你想要這種懷舊復古的感覺,使用 groff 寫作很難被打敗。

我承認,我的大部分寫作是用 LibreOffice Writer 完成的,它的表現很出色。但是當我渴望以一種懷舊復古的方式去做時,我會打開編輯器用 groff 來寫文檔。

4、你希望能到處使用它

groff 及其同類軟體在幾乎所有的 Unix 系統上都是標準軟體包。此外,groff 宏不會隨系統而變化。比如,-me 宏集在不同系統上都應該相同。因此,一旦你在一個系統上學會使用宏,你能在下一個系統上同樣地使用它們。

另外,因為 groff 文檔就是純文本文檔,所以你能使用任何你喜歡的編輯器來編輯文檔。我喜歡使用 GNU Emacs 來編輯我的 groff 文檔,但是你可能使用 GNOME Gedit、Vim、其他你 最喜歡的文本編輯器。大部分編輯器會支持這樣一種模式,其中 groff 宏會以不同的顏色高亮顯示,幫助你在處理文件之前便能發現錯誤。

5、你使用 -me 寫了這篇文章

當我決定要寫這篇文章時,我認為最佳的方式便是直接使用 groff。我想要演示 groff 在編寫文檔方面是多麼的靈活。所以,雖然你正在網上讀這篇文章,但是它最初是用 groff 寫的。

我希望這激發了你學習如何使用 groff 撰寫文檔的興趣。如果你想學習 -me 宏集里更高級的函數,參考 Eric Allman 的《Writing papers with groff using -me》,你應該能在系統的 groff 文檔找到這本書,文件名為 meintro.me。這是一份很好的參考資料,還解釋了使用 -me 宏集格式化論文的其他方式。

我還提供了這篇文章的原始草稿,其中使用了 -me 宏集。下載這個文件並保存為 five-signs-groff.me,然後運行 groff 處理來查看它。-T 選項設置輸出類型,比如 -Tps 用於生成 PostScript 輸出,-Thtml 用於生成 HTML 文件。比如:

groff -me -Thtml five-signs-groff.me > five-signs-groff.html

via: https://opensource.com/article/21/4/groff-programmer

作者:Jim Hall 選題:lujun9972 譯者:liweitianux 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國