在 Linux 上使用 groff -me 格式化你的學術論文
來自專欄 Linux
學慣用簡單的宏為你的課程論文添加腳註、引用、子標題及其它格式。
當我在 1993 年發現 Linux 時,我還是一名本科生。我很興奮在我的宿舍里擁有 Unix 系統的強大功能,但是儘管它有很多功能,但 Linux 卻缺乏應用程序。像 LibreOffice 和 OpenOffice 這樣的文字處理程序還需要幾年的時間才出現。如果你想使用文字處理器,你可能會將你的系統引導到 MS-DOS 中,並使用 WordPerfect、共享軟體 GalaxyWrite 或類似的程序。
這就是我的方法,因為我需要為我的課程寫論文,但我更喜歡呆在 Linux 中。我從我們的 「大 Unix」 校園計算機實驗室得知,Unix 系統提供了一組文本格式化的程序 nroff
和 troff
,它們是同一系統的不同介面:nroff
生成純文本輸出,適用於屏幕或行式印表機,而 troff
產生非常優美的輸出,通常用於在激光印表機上列印。
在 Linux 上,nroff
和 troff
被合併為 GNU troff,通常被稱為 groff。 我很高興看到早期的 Linux 發行版中包含了某個版本的 groff,因此我著手學習如何使用它來編寫課程論文。 我學到的第一個宏集是 -me
宏包,一個簡單易學的宏集。
關於 groff
,首先要了解的是它根據一組宏來處理和格式化文本。宏通常是個兩個字元的命令,它自己設置在一行上,並帶有一個引導點。宏可能包含一個或多個選項。當 groff
在處理文檔時遇到這些宏中的一個時,它會自動對文本進行格式化。
下面,我將分享使用 groff -me
編寫課程論文等簡單文檔的基礎知識。 我不會深入細節進行討論,比如如何創建嵌套列表,保存和顯示,以及使用表格和數字。
段落
讓我們從一個簡單的例子開始,在幾乎所有類型的文檔中都可以看到:段落。段落可以格式化為首行縮進或不縮進(即,與左邊齊平)。 包括學術論文,雜誌,期刊和書籍在內的許多印刷文檔都使用了這兩種類型的組合,其中文檔或章節中的第一個(主要)段落左側對齊,而所有其他(常規)的段落縮進。 在 groff -me
中,您可以使用兩種段落類型:前導段落(.lp
)和常規段落(.pp
)。
.lpThis is the first paragraph..ppThis is a standard paragraph.
文本格式
用粗體格式化文本的宏是 .b
,斜體格式是 .i
。 如果您將 .b
或 .i
放在一行上,則後面的所有文本將以粗體或斜體顯示。 但更有可能你只是想用粗體或斜體來表示一個或幾個詞。 要將一個詞加粗或斜體,將該單詞放在與 .b
或 .i
相同的行上作為選項。 要用粗體或斜體格式化多個單詞,請將文字用引號引起來。
.ppYou can do basic formatting such as.i italicsor.b "bold text."
在上面的例子中,粗體文本結尾的句點也是粗體。 在大多數情況下,這不是你想要的。 只要文字是粗體字,而不是後面的句點也是粗體字。 要獲得您想要的效果,您可以向 .b
或 .i
添加第二個參數,以指示以粗體或斜體顯示的文本後面跟著的任意文本以正常類型顯示。 您可以這樣做,以確保尾隨句點不會以粗體顯示。
.ppYou can do basic formatting such as.i italicsor.b "bold text" .
列表
使用 groff -me
,您可以創建兩種類型的列表:無序列表(.bu
)和有序列表(.np
)。
.ppBullet lists are easy to make:.buApple.buBanana.buPineapple.ppNumbered lists are as easy as:.npOne.npTwo.npThree.ppNote that numbered lists will reset at the next pp or lp.
副標題
如果你正在寫一篇長論文,你可能想把你的內容分成幾部分。使用 groff -me
,您可以創建編號的標題(.sh
) 和未編號的標題 (.uh
)。在這兩種方法中,將節標題作為參數括起來。對於編號的標題,您還需要提供標題級別 :1
將給出一個一級標題(例如,1
)。同樣,2
和 3
將給出第二和第三級標題,如 2.1
或 3.1.1
。
.uh Introduction.ppProvide one or two paragraphs to describe the workand why it is important..sh 1 "Method and Tools".ppProvide a few paragraphs to describe how youdid the research, including what equipment you used
智能引號和塊引號
在任何學術論文中,引用他人的工作作為證據都是正常的。如果你引用一個簡短的引用來突出一個關鍵信息,你可以在你的文本周圍鍵入引號。但是 groff 不會自動將你的引用轉換成現代文字處理系統所使用的「智能」或「捲曲」引用。要在 groff -me
中創建它們,插入一個內聯宏來創建左引號(*(lq
)和右引號(*(rq
)。
.ppChristine Peterson coined the phrase *(lqopen source.*(rq
groff -me
中還有一個快捷方式來創建這些引號(.q
),我發現它更易於使用。
.ppChristine Peterson coined the phrase.q "open source."
如果引用的是跨越幾行的較長的引用,則需要使用一個塊引用。為此,在引用的開頭和結尾插入塊引用宏(.(q
)。
.ppChristine Peterson recently wrote about open source:.(qOn April 7, 1998, Tim OReilly held a meeting of keyleaders in the field. Announced in advance as the first.q "Freeware Summit,"by April 14 it was referred to as the first.q "Open Source Summit.".)q
腳註
要插入腳註,請在腳註文本前後添加腳註宏(.(f
),並使用內聯宏(**
)添加腳註標記。腳註標記應出現在文本中和腳註中。
.ppChristine Peterson recently wrote about open source:**.(f**Christine Peterson..q "How I coined the term open source.".i "OpenSource.com."1 Feb 2018..)f.(qOn April 7, 1998, Tim OReilly held a meeting of keyleaders in the field. Announced in advance as the first.q "Freeware Summit,"by April 14 it was referred to as the first.q "Open Source Summit.".)q
封面
大多數課程論文都需要一個包含論文標題,姓名和日期的封面。 在 groff -me
中創建封面需要一些組件。 我發現最簡單的方法是使用居中的文本塊並在標題、名字和日期之間添加額外的行。 (我傾向於在每一行之間使用兩個空行)。在文章頂部,從標題頁(.tp
)宏開始,插入五個空白行(.sp 5
),然後添加居中文本(.(c
) 和額外的空白行(.sp 2
)。
.tp.sp 5.(c.b "Writing Class Papers with groff -me".)c.sp 2.(cJim Hall.)c.sp 2.(cFebruary XX, 2018.)c.bp
最後一個宏(.bp
)告訴 groff 在標題頁後添加一個分頁符。
更多內容
這些是用 groff-me
寫一份專業的論文非常基礎的東西,包括前導和縮進段落,粗體和斜體,有序和無需列表,編號和不編號的章節標題,塊引用以及腳註。
我已經包含一個示例 groff 文件來演示所有這些格式。 將 lorem-ipsum.me
文件保存到您的系統並通過 groff 運行。 -Tps
選項將輸出類型設置為 PostScript
,以便您可以將文檔發送到印表機或使用 ps2pdf
程序將其轉換為 PDF 文件。
groff -Tps -me lorem-ipsum.me > lorem-ipsum.me.psps2pdf lorem-ipsum.me.ps lorem-ipsum.me.pdf
如果你想使用 groff -me
的更多高級功能,請參閱 Eric Allman 所著的 「使用 Groff -me 來寫論文」,你可以在你系統的 groff 的 doc
目錄下找到一個名叫 meintro.me
的文件。這份文檔非常完美的說明了如何使用 groff-me
宏來格式化你的論文。
via: https://opensource.com/article/18/2/how-format-academic-papers-linux-groff-me
作者:Jim Hall 譯者:amwps290 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
推薦閱讀:
※Linux 下什麼 IDE 開發工具最好?
※10大好用的Linux實用工具
※VPS有什麼有趣的用途?
※C 如何編譯出一個不需要操作系統的二進位?