標籤:

LaTeX 第二課:小試牛刀

本文同時發佈於微信公眾號:兩個少年的奇幻漂流(ID:Amazing_Adventure)

本期的主要內容有:

  • 一個 LaTeX 文檔的基本結構

  • 導言區

  • 常用排版命令

    • 標題、作者與日期

    • 字體與字型大小

    • 特殊字元的輸入

    • 一些常用排版效果

另外我們還會穿插介紹一些 LaTeX 的基本概念,在文中加粗表示並附上英文。

---

一個 LaTeX 文檔的基本結構

承接上一期,我們把上期結尾處提到的這個文檔再拿出來給大家看看,作為本次的示例。這個文檔一共有7行,我們來逐一解讀。

首先第1行中的documentclass表示的是這個文檔的文類(document class)。所謂文類,是指一套預設的排版格式,常見的(英文文類)有 article,report,book 等等。它們之間有一些微妙的差別,比如 book 文類就為了適應書籍的裝訂,為奇數頁和偶數頁安排了不同的左右邊距;report 和 article 非常相似,但 report 中可以使用更多的章節等級,article 則是幾乎最簡單的一種。

我們能看到,所有藍色的部分都是由反斜杠「」打頭的,這些都叫做命令(command)。每個命令後可能會有參數(argument),比如documentclass就接受一個參數,就是用大括弧括起來的 article。今後大家可能會遇到有更多參數的命令,那麼就在後面繼續加大括弧就行了,每個參數都應該在一個大括弧中。有的命令沒有參數,比如第4行的「\」表示換行,第5行的「LaTeX」表示 LaTeX 的 logo,直接使用即可。

在文類的定義之後就是正文部分,每個文檔的正文部分都必須在egin{document}和end{document}之間。這一對命令組成了一個環境(environment),在不同的環境當中,文本會有不同的格式預設。document 環境是最基本的環境,第3行和第6行之間還有一個 center 環境,這一環境的預設就是其中的內容全部以居中的方式進行排版。常用的環境有很多,例如 equation 環境用於排版公式,figure 環境用於排版圖片,itemize 環境表示無序列表,enumerate 環境表示有序列表,諸如此類的環境我們會在後面慢慢提到。

這個文檔的全部內容就是 Welcome to LaTeX 。當初為了將它作為題圖,我希望它居中,於是放在了 center 環境里。我又希望它分兩行呈現,因此在 Welcome to 後面加了一個強制斷行命令。這裡可能有人會問了,為什麼已經按了回車,它卻不斷行呢?這裡涉及到一個 LaTeX 中的基本規則,就是在一般情況下,一個換行、一個空格和多個空格這三種東西表達在輸出文檔中都是一個空格,而換行則需要連續兩個換行符才能實現。與之等價的命令就是「\」,它在排版表格等需要強制換行對齊的環境中非常有用,在正文中也可以使用。在這裡,你也可以嘗試把它刪去,再用兩個回車代替,看看排版效果是不是相同。

到這裡,我們的第一個文檔就介紹完了。不過這裡因為文檔簡單,我們漏掉了一個非常重要的部分,就是導言區(preamble)。下面我們對導言區作一個簡單的介紹。

---

導言區

導言區是文類定義之後,正文開始之前的部分。它的主要作用是對文檔的性質做一些設置,或者自定義一些命令。在前面的例子中,導言區本應該在第1、2行之間,但是因為沒有任何內容,所以就省去了。所以含有導言區的文檔應該是下圖這樣的。

圖中綠色部分就是導言區的位置,當然它並不限於兩行,可以有很多。注意到這兩行的字以百分號開頭,顯示為綠色,而且當我們對這個修改後的文檔進行排版之後會發現和原來的文檔沒有任何差別(大家可以自己試試)。這就是我非常喜歡的一個 LaTeX 相對於 Word 的優勢,它叫做注釋(comment)。注釋的內容不參與排版,你可以在裡面寫自己喜歡的任何東西。任意一行中,從百分號開始以後的部分全部都會在編譯時被忽略。(有一些注釋是會影響到排版的,這些注釋有特定的格式,對每種編輯器還不一樣,在此不作介紹。)

注釋有非常大的用途,我來舉個例子。你在寫完論文的時候發現,之前寫的一段文字沒有什麼用,可以被精簡;但是這些文字如果刪掉了就沒有辦法找回來,萬一導師讓我再把它加上就麻煩了。於是在 LaTeX 中,你可以放心地把這些內容注釋掉而不是刪掉,這樣在修改文檔的同時可以保留你原來的文字,就算導師讓我加回來我也能立刻完成。

先前我們提到,導言區的作用之一是設置文檔性質。所謂文檔的性質有許多方面,比如設定標題、作者、日期、圖題格式、表題格式等。其中還一個非常重要的作用就是添加宏包(package)。宏包可以被理解為一些模塊,它們提供 LaTeX 本身沒有的命令,以實現一些原本不太好實現的效果。比如 ctex 宏包就是一個把文檔格式全部中文化的宏包,並提供 ctexart,ctexrep,ctexbook 等與 article,report,book 相對應的文類,方便排版中文文檔。下面為大家展示一下被 ctex 宏包「漢化」過的文檔和原來有什麼區別。

首先是英文的:

然後是中文的:

兩個文件的源文件除了正文內容略有出入之外,只有文類不同。前者是 article,後者是 ctexart。可以看到,使用了 ctexart 之後,日期變成了中文表達,而且行間距自動增加了,以適應漢字的排版。所以在寫中文文檔的時候,推薦大家使用 ctex 系列文類,可以省心很多。

導言區還可以設置一些自定義的命令,這屬於比較高級的功能,我們先不作介紹。目前大家需要掌握的就是(1)知道導言區在哪(2)導言區是幹什麼的,就可以了。

標題、作者與日期

在介紹導言區的時候,我們已經看到了 LaTeX 排版的文檔大概是什麼樣子了。大家一定很想知道,文章的標題、作者都是怎麼排版上去的呢?下面為大家揭秘剛才的文檔源碼。

上面這個文檔就是一個相對豐富的文檔了。這裡要為大家介紹5個命令:

  • itle:設置文檔標題;有一個參數,用大括弧跟在後面,表示標題內容;

  • author:設置文檔作者;一個參數;

  • date:設置日期;其中 oday表示系統當天日期,也可以手動輸入;留空的話則不排版日期;

  • usepackage:調用宏包;此處調用的宏包是 lipsum,用於生成隨機文字(上面滿篇的洋文其實都是生成的);第10行的 lipsum[1-2] 表示插入隨機文字的前兩段;

  • maketitle:這是這5個命令中唯一一個寫在正文區的命令,排版標題;這個命令如果不使用,之前設置的標題、作者、日期都是不會出現在成品中的;使用它之後會排版標題、作者和日期。

有了這些命令,我們就可以順利地寫一篇簡單的文章了,大家可以把裡面的內容都換成漢字試試看。

---

字體與字型大小

現在我們能排版一些基本的文字了,下面我們來介紹一下字體和字型大小。

與字體相比,字型大小是相對簡單的一個屬性。LaTeX 提供了10個命令來聲明文字的大小,由小到大分別是:

  • iny

  • scriptsize

  • footnotesize

  • small


  • ormalsize

  • large

  • Large

  • LARGE

  • huge

  • Huge

這些命令會由於全局字型大小的調整而代表不一樣的大小,這樣相同的內容在調整的過程中的相對大小保持不變,所以全局的修改不會改亂。以 Large 為例,用法是將這個命令和需要調整的文字一起用大括弧包起來,像這樣:

There are smaller words and {Large larger words}.

那麼如果想要指定字型大小怎麼辦呢?老師讓我們用五號字來寫論文,應該怎麼辦?這時我們就可以用 ctexart 自帶的一個參數 c5size 來處理,用法是在文類定義處做一些修改:

documentclass[c5size]{ctexart}

這樣的話
ormalsize就會變成5號字,其他命令也會隨之變化。同樣地,用cs4size則可以把標準字型大小定義為小四號。假如想指定字型大小,而我們熟悉的又是漢字的字型大小系統(小四、五號之類),我們就可以用 ctex 為我們提供的字型大小指定命令,用法和前面的命令相同,下面舉一些例子大家就明白了:

  • 小五:zihao{-5}

  • 六號:zihao{6}

  • 初號:zihao{0}

  • 小四:zihao{-4}

聰明的你一定看出規律了對不對!

字體是一個相對複雜的話題。在 MS Word 裡面,我們可以隨意地將文字加粗、傾斜,但其實裡面是有一個完整的字體體系的。一般來說,我們用三個東西來定義一個字體:字體族(font family),字體形狀(font shape)字體系列(font series)。這個字體主要是對英文而言的,字體族中包含羅馬(roman)、無襯線(sans serif)、打字機(typewriter)三種,字體形狀有直立(upshape)、義大利(italic shape)、傾斜(slanted shape)、小形大寫(small capital)等四種,字體系列則有中等和加寬加粗兩種。剛剛提到的在 Word 中的加粗其實就是採用一個字體的加寬加粗系列,而傾斜則是改變形狀為傾斜。我們看看下面的例子:

這就是 LaTeX 中基本的字體。其中無襯線字體主要用於幻燈片展示,因為在距離較遠的情況下,襯線對文字形狀的識別沒有任何用處,所以用無襯線字體來提升觀眾對文字的識別(所以不要再用宋體和 Times New Roman 做幻燈片了)。打字機字體具有字體等寬的性質,適合排版代碼和抄錄,方便對齊。義大利和加粗一般用於強調,義大利還可以用於引用他人的文字。通常情況下,羅馬字體族就可以滿足我們的大部分要求。一個文檔中最好不要出現三種以上完全不同的字體,那樣會顯得非常雜亂。

在漢語中也有對應的字體劃分方法。一般羅馬就是宋體,義大利是楷體,打字機是仿宋(畢竟漢字全部都等寬),加寬加粗還有無襯線都是黑體。現在大家要明白一點,加粗並不只是把原來的文字加粗,而是用另一種字體來起到你想達到的效果。以上這三種字體的配合基本上就可以滿足學術文檔中的全部需求了。我們舉一個例子:

另外,如果要給一個詞語著重強調,可以使用emph命令。它會把相應的文字改變成義大利形狀。例如上圖中的「斜體強調」就可以用「emph{斜體強調}」來表達。

---

特殊字元的輸入

現在我們可以完成一般文字的輸入了。但是如果遇到下面這些文字呢(以下特殊字元素材均選自 @劉海洋 《LaTeX 入門》)?

這時候我們的鍵盤就無能為力了。雖然現在的 UTF-8 編碼系統可以支持這些字元,但是我們沒有辦法直接從鍵盤上輸入。這裡我們就需要 LaTeX 中的一些命令來生成這些符號。下面以 o 為例,看看特殊的聲調是怎麼生成的:

還有一些特殊的字元,不是由英文字母衍生出來的,或者不是重音,在這裡也給大家一併介紹一下:

我們在數學中常用的希臘字母、希伯來字母等符號,我們會在未來的數學公式排版中詳細介紹。對一般的拉丁文字來說,上面的這些應該已經足夠大家使用了。依靠這兩個表格,大家可以嘗試排版一下之前的那些有音調的文字。

另外還有一些非文字的符號,也是行文中常用的,下面也一併列出供大家參考:

常用排版效果

自此,對於單純的文字文檔,你應該可以像使用 Word 一樣熟練地使用 LaTeX 來排版了。這裡我們再介紹一些簡單常用的排版命令,大家可以自己隨便找一些文字來試著排版一下。

  1. 腳註。腳註的命令是 footnote{腳註內容},只要跟在需要注的文字後面,就可以在那一頁底部產生一個腳註。

  2. 強調。這個之前已經介紹過了,emph{強調內容},效果是用 italic 形狀排版這些文字。

  3. 修改行距。在導言區使用 linespread{倍數},可將全文的行距進行調整。默認情況下採用的是基本行距,這一行距指的是從上一行的基線到下一行的基線之間的距離,而不是每一行底部到下一行頂部的距離。

  4. 靠左、靠右、居中。這三個命令都是針對段落的,首先要把需要處理的段落用大括弧括起來,然後在開頭加上
    aggedright,
    aggedleft 和 centering,分別對應靠左、靠右、居中。

最後再介紹兩個環境吧。一個是計數列表,一個是無序列表。計數列表的環境名稱是 enumerate,無序列表的環境名稱是 itemize。下面是示例:

這兩個環境都用 item 作為新的一行的開始。如果要多級列表的話在裡面再包裹一個環境就行了。

---

今天我們的介紹就到這裡。如果大家想有一本參考書的話,我推薦給大家電子工業出版社出版的《LaTeX 入門》,作者@劉海洋(去年我還見過他本尊哈哈哈哈)。

下期我們將介紹頁面布局和文檔組織,以及在遇到困難時尋求幫助的方式。現在你已經可以排版簡單的文檔了,學習 LaTeX 最重要的不是看書看文章而是自己動手,一定要多看多練多嘗試噢!

歡迎關注公眾號:兩個少年的奇幻漂流(ID:Amazing_Adventure)


推薦閱讀:

LuaTeX, XeTeX 和 ConTeXt 分別是什麼?它們有什麼異同優劣?
為何大多數 LaTeX 編輯器連中英文混排時的自動換行都不支持?
LaTeX 第一課:準備就緒

TAG:LaTeX |