LaTeX 教學系列:基本設定

latex

使用與不使用套件進行 LaTeX 基本設定,包含字體大小、字型、版面設定

Author

Anthony Sung

Published

June 24, 2024

前情提要

LaTeX 教學系列:第一份 LaTeX 文件裡面,我們提到了如何建立第一份文件,並且根據不同的文件類別使用章節標題。而在這篇文章中,你會學到:

  • 了解 TeX 語言不同編譯器
  • 使用 LaTeX 套件
  • 設定字體
  • 設定版面(包含邊界、頁首、頁尾、標題字體等)

TeX 世界的巴別塔

跟許多程式語言一樣,TeX 語言也是由西方世界的人所發明的,因此自然地對於東亞國家的使用者不太友善,就像《聖經》中提到的巴別塔(Tower of Babel)一樣,把不同語言使用者隔絕開來。然而,隨著電腦的普及,有排版需求的人越來越多,因此不同的編譯系統便被許多無所事事厲害的工程師魔改,製作出可以允許不同語言使用者的編譯系統。

編譯系統 優點 缺點
pdfLaTeX 穩定且廣泛支持,直接生成 PDF 文件 對非拉丁字母和 OpenType 字體支持較差
XeLaTeX 支持 Unicode 和 OpenType 字體,可以使用不同語言 編譯速度可能較慢
LuaLaTeX 支持 Unicode 和 OpenType 字體,基於 Lua 擴展功能強大 編譯速度可能較慢
LaTeX 可以生成 DVI 文件,靈活性高 需要額外步驟將 DVI 轉換為 PS 或 PDF 文件,使用較為繁瑣
TeX 高靈活度與可控性 語法較為複雜,不如 LaTeX 方便易用
ConTeXt 對多語言和複雜文檔處理較好,開發活躍 與 LaTeX 兼容性較差,需要學習新的語法
OpTeX 簡單易用,語法設計現代 使用者社群較小,資料和資源相對較少
AMS-TeX 數學公式排版效果極佳,專為數學出版物設計 相比 LaTeX 功能更單一

看到這裡的你一定會想問:之前文章中的例子都是用英文寫的,那如果我的文件是中文怎麼辦呢?如果你有這個問題的話,恭喜你已經贏過許多人了!在這篇文章的第三小節就會提到如何設定中文字體!

別著急,且聽我慢慢細說。

LaTeX 的裝備:套件

如果你有遊玩線上遊戲(尤其是角色扮演類)的經驗,肯定需要在遊戲內購買裝備,才能夠打敗特定關主、魔王。LaTeX 也是一樣,需要使用裝備才能夠使用特定功能,例如上一小節最後提到的使用中文。因此,這個小節將會教你如何安裝並使用套件,並且在不清楚套件可以如何設定的情況下,到哪裡尋求援助。

買裝備:安裝與使用套件

使用 LaTeX 套件時,我們需要以\usepackage[套件設定]{套件名稱}下指令,告訴電腦我們需要使用特定套件。1不過需要注意,如果你是在本機裡面使用 LaTeX,也就是已經裝好編譯器,那麼在使用套件之前,編譯器通常都會先詢問是否要安裝特定套件2,必須要確保真的安裝該套件成功之後,編譯才會成功。

在上一篇LaTeX 教學系列:第一份 LaTeX 文件的最後,不曉得聰明的你有沒有發現,在範例中有一些很奇怪的拉丁字母。這些文字就是排版領域大名鼎鼎的Lorem ipsum(簡稱為 Lipsum)。Lipsum 是一段常見的占位文字,或稱為假文,起源於古羅馬西賽羅(Cicero)的作品,通常用於設計和排版中,用來填充文本文字區域以模擬實際的文字內容,協助測試版面效果。以下我們拿 lipsumblindtext 兩個套件做說明。3

說明書:CTAN

如果你買了一個東西卻不知道如何使用的話,那麽購買該項產品或服務的意義就不大。因此通常廠商都會給予使用者說明書(manual),清楚地告訴使用者應該如何使用,以及一些問題排解的指示。

TeX 的各種套件也有對應的使用說明書,而這個說明書被存放在CTAN這個使用說明書儲存櫃中。4假設我們要查看 lipsum 這個套件的使用說明,可以在瀏覽器的搜尋欄打上「CTAN lipsum」這兩個關鍵字,大部分第一個都是正確的搜尋結果。點進去之後就會看到 CTAN 上存放該套件的使用說明(多以 Package documentation 命名)。例如lipsum的使用說明書可以點擊此連結

LaTeX 百變怪:設定文字

終於來到大家最期待的第三小節了!在本小節開始之前,必須先說明:由於我是串接 TeXLive.net,無法將字體檔、圖片檔等上傳到 TeXLive,因此我是使用 TeXLive.net 官網提供的範例做調整,還請讀者多見諒。

設定字體大小

在 LaTeX 中,更改字體大小有多種方法,主要是使用預定義的字體大小指令和 \selectfont 指令兩種不同方法。預定義的字體大小指令非常簡單且易於使用,

字體大小指令 字體大小 (pt) 字體大小指令 字體大小 (pt)
\tiny 5 \large 12
\scriptsize 7 \Large 14
\footnotesize 8 \LARGE 17
\small 9 \huge 20
\normalsize 10 \Huge 25

這些指令的排版效果如下:

另一種設定字體大小則是使用\fontsize{size}{baselineskip}\selectfont 指令。在這裡,size是字體大小,baselineskip是行距。例如,若要設定字體大小為 25pt 並將行距設定為 14pt,可以使用 {\fontsize{25}{14}\selectfont 要更改大小的字體},實際效果如下面所示:

在這邊有一個小技巧,我們使用花括號{}創建一個局部範圍,範圍內的設定只影響括號內的內容,括號外的內容不受影響。

如果你不知道字體大小測量的方式,可以先看下圖。排版技術十分要求對齊(alignment),因此設計字體時,一定都會以下圖的線條作為輔助線。

圖 1:字體大小測量方式5

而字體基線跟排版有什麼關係呢?下圖顯示了兩行文字,第一行文字與第二行文字之間的基線用紅色線段標示出來,一般來說我們都會以基線作為兩行之間的對齊基準,太大會讓字體離得太遠,太小則會讓字體看起來很擠,因此中庸之道就是選擇一個適合目前文件大小的基線高度。

圖 2:字體基線6

設定字體系列

這張圖片展示了 LaTeX 中不同字體系列(typeface/family)的設定方法,包括 serif(羅馬字體)、sans serif(無襯線字體)和 typewriter(等寬字體)。每種字體系列都有相應的指令和切換指令:

字體系列 指令 替代指令 輸出結果
serif (roman) \textrm{Sample Text 0123} \rmfamily Sample Text 0123
sans serif \textsf{Sample Text 0123} \sffamily Sample Text 0123
typewriter (monospace) \texttt{Sample Text 0123} \ttfamily Sample Text 0123

在 Word 裡面,使用者可以將某一段文字反白,接著選擇想要的字型進行更改。不過有時這個操作沒有辦法正確地更改文字字型,而且如果對方的電腦沒有特定字型檔案,那麼就會顯示預設字體(通常都是新細明體)。LaTeX 很好地解決這個問題,在 LaTeX 中可以使用 fontspec 套件,該套件提供了一個簡便的方法來設定和更改字型,特別適用於使用 XeLaTeX 或 LuaLaTeX 編譯的文檔。

首先,你需要在文檔的導言區引入 fontspec 套件,接著使用 \setmainfont\setsansfont\setmonofont,接著就可以更改你想要的字體。不過通常來說,字體檔應該都要儲存在資料夾中的 fonts 資料夾,並且指定路徑,否則電腦不會知道你想要的字體是什麼。

設定字型

在 LaTeX 中,粗體、斜體和粗斜體的用途各有不同,主要用於突出和強調文本內容。粗體(Bold)常用於強調重要的詞或句子,標題或副標題,以引起讀者的注意;在技術文檔中,粗體用於強調關鍵詞或重要術語。斜體(Italic)則通常用於書名、文章名稱或強調外來詞,以及在數學和科學文檔中表示變數或斜體符號。斜體也可以用於引用或強調特定的詞語或句子。至於粗斜體(Bold Italic),則用於需要特別強調的文本,例如在強調的同時需要更強的視覺效果,或者在標題中的特別強調部分。

設定中文

在 LaTeX 中,使用中文需要特別的套件來處理字體和字符編碼問題。常用的套件是 xeCJK,該套件需要 XeLaTeX 編譯器來正確顯示中文。7首先,你需要確保系統已安裝 XeLaTeX 編譯器,接著,在你的 LaTeX 文檔中引入 xeCJKfontspec 兩個套件。xeCJK 用於處理中文排版,而 fontspec 用於設定字體。以下是範例程式碼,展示如何設定中文:

由於前面提到無法上傳字體檔到 TeXLive 上,因此以下提供在本機建立 fonts 資料夾的處理方式。首先,在 .tex 的同個資料夾路徑下建立 fonts 資料夾,並將中文字體檔(副檔名多半是 .ttf.TTF.otf)放在裡面,中文字體檔案建議用cwTeX 字體。先看範例,再來一一講解如何設定。

在範例程式碼中,我們使用 \setCJKmainfont 設定文件的主要中文字體,也就是如果你不加修改字體,那麼就是依照使用者預設的字體呈現。接著,\setCJKfamilyfont 則是新增中文字體的字體家族,例如 \setCJKfamilyfont{kai}[Path=./fonts/]{cwTeXQKai-Medium.ttf} 便指定了字體家族為 kai(因為是楷體),在選擇參數中加入 Path=./fonts/,代表將字體檔路徑設定在子資料夾 fonts 中,最後告訴電腦字體檔案名稱是什麼。

設定到這邊並未結束,因為這樣只有告訴電腦有這個字體家族,但是並沒有呼叫該字體的指令。不過因為每個人設定的字體家族名稱都不盡相同,因此需要新增指令。新增指令的方式很簡單,只要用 \newcommand{指令名稱}[參數數目]{定義指令}8回到原本的例子,文件中已經設定一個字體家族名為 kai,我們就創建新指令 \kai,定義為 \newcommand{\kai}[1]{{\CJKfamily{kai}#1}},也就是當使用者需要將字體變成楷體時,使用 \kai{欲變更文字} 即可。其他的字體類型以此類推,我們就可以建立一個好看的中文文件了!

LaTeX 的服裝:版面設定

有了上面的設定概念後,接著我們就可以針對文件中的其他部分進行修改。我們可以透過一些套件,讓我們的文件變得更加易讀、美觀。這一小節我們將會提到如何進行邊界設定、章節標題字體設定,以及頁首與頁尾的設定。

邊界設定

在 Word 中,我們可以進行版面設定,即設定上、下、左、右邊界,LaTeX 也有提供相同的功能。設定邊界的方式很簡單,只要使用 geometry 套件即可。不過,在設定時還是有些地方需要注意。先看下圖:

圖 3:geometry 巨集套件設定圖示9

一份文件中,本文的位置由圖左中間的方框包住,該方框與紙張中間的距離就稱為邊距(margin)。邊距分為上(top)、下(bottom)、左(left)、右(right)。引用套件後,我們可以使用 \geometry{} 來設定。以下是範例,假設將頁面的上邊距和下邊距設定為 2 公分,左邊距和右邊距設定為 2.5 公分,你也可以自己調整看看,不同的數字會有何種變化。

如果你想要將所有邊距設為同一數值,例如 \geometry{margin=2cm},這樣就將會把文件的所有邊距都設定為 2 公分。如果只想設定某一方向的邊距,可以使用以下指令:\geometry{left=3cm},類似地,可以設定 toprightbottom 邊距。

如果你認為 geometry 套件只有這樣的功能,那你就太小看它了!如果我們的文件不是一般常見的 a4 格式,例如中學考卷通常都是 a3,那麼要如何處理?更進一步地說,中學的考卷有時需要橫向排版,這時候又應該怎麼做?別緊張,geometry 套件還提供了其他設定選項,例如紙張大小、頁面方向和裝訂邊距等。

使用者可以通過 a4paper、letterpaper 等選項來設定紙張大小,或是可以用 landscape 將頁面設定為縱向或橫向,10如果需要為裝訂預留額外的邊距,可以使用 bindingoffset 參數。假設我們要將文件設定為 a3 的橫向大小,邊距均為 2.5 公分,並預留裝訂區域為 1 公分,可參考以下範例:

章節標題格式設定

Word 裡面我們對於章節標題格式設定,需要先選取一個章節的標題,接著點選樣式進行設定,11不過這樣的設定方式稍顯麻煩,有時會因為加入新的小節而跑版。

在 LaTeX 中,我們使用 titlesec 進行設定。首先,在導言區載入 titlesec 套件後,使用 \titleformat{欲設定標題}[形狀]{格式}{標籤樣式}{標題編號與文本間距}{標題文本前指令}[標題文本後指令] 指令來設定章節標題的格式。這個指令分成好幾個部分:

  1. 欲設定標題:指定要設定格式的標題指令,例如 \section\subsection 等。

  2. 形狀:可選參數,用於指定標題的形狀或樣式,例如 block(塊狀)或 display(顯示)。如果不需要特別的形狀,這部分可以省略。

  3. 格式:設定標題的字體、大小、顏色等格式,使用 LaTeX 的文本格式指令。

  4. 標籤樣式:指定標題的標籤樣式,即標題編號部分。可以使用 \thesection\thesubsection 等指令來設定。如果不需要標題編號,可以使用空的大括號 {}

  5. 標題編號與文本間距:設定標題編號與標題文本之間的距離,單位可以是 ptemcm等。

  6. 標題文本前指令:指定在標題文本之前執行的 LaTeX 指令,例如插入圖片、水平線等。如果不需要,可以留空。

  7. 標題文本後指令:可選參數,指定在標題文本之後執行的 LaTeX 指令。

我們直接從以下範例看一下如何處理:

在上面的範例程式碼中,有幾個小技巧:

  1. 可以看到我們使用 \usepackage{xeCJK, CJKnumb} 將兩個套件載入進來。如果欲載入沒有要設定其他的內容,那麼就可以將多個套件以逗號分隔一次載入。
  2. 前面我們提到拉丁字母有假文產生器 lipsum,中文也有相應的套件 zhlipsum,使用方法與 lipsum 大致相同,即輸入 \zhlipsum[起始段落-結束段落] 即可。

頁首頁尾設定

在 Word 中,頁首與頁尾的設定十分複雜,除了腳註的設定外,更包含奇偶數不同的頁碼、頁首文字等。LaTeX 則提供 fancyhdr 套件,透過預先設定,就不用一個個微調。

在以下的範例程式碼中有一個地方必須注意:我們以頁腳的設定來說,程式碼中有 fancyfootcfootlfootrfoot,你可能會想說這是不一樣的東西吧。答案是肯定,也是否定。事實上 fancyfoot 是較為正式的用法,可以設定的參數較多,常用位置參數包括:L 左邊(Left)、C 中間(Center)、R 右邊(Right)、E 偶數頁(Even)、O 奇數頁(Odd)。而 cfootlfootrfoot 則是 fancyhdr 套件提供的快捷命令,用於快速設置頁腳的中間、左邊和右邊內容。

在使用 fancyhdr 之前,建議使用 \fancyhf{} 清除任何預設的頁首和頁腳設定。然後,使用 \lhead\rhead 命令分別設定頁首的左側和右側內容,其中 \lhead{\normalsize 左上文字 \ 左下文字} 將頁首的左側設定為包含「左上文字」和 「左下文字」,而 \rhead{\normalsize 右上文字 \ 右下文字} 則將頁首的右側設定為包含「右上文字」和 「右下文字」。

頁腳部分,使用 \cfoot{\footnotesize \thepage} 在頁腳的中央顯示頁碼。此外,利用 \fancyfoot[C]{} 清空中央的頁腳內容,然後使用 \fancyfoot[LE,RO]{第~\thepage~頁} 設定頁碼,使其在偶數頁的左側和奇數頁的右側顯示,並且格式為第~頁碼~頁

小結

這篇文章教的內容有點多,可能對於初學者而言沒辦法一下子吸收過來,建議多看幾次,或是直接實際操作,讓 LaTeX 的指令變成肌肉記憶。如果找不到可以練習的素材,可以使用筆者的模板(趁機打廣告)練習看看:Note template

Footnotes

Footnotes

  1. 如果你不曉得[]{}的差別在哪,請回去看第一篇文章的決定美醜的關鍵:參數↩︎

  2. 筆者未有使用過 MikTeX 以外編譯器的經驗,因此不確定其他編譯器是否如此智慧。MikTeX 的好處是可以在 MikTeX Console 裡面設定自動安裝套件,不用每次詢問。↩︎

  3. lipsumblindtext 最大的差別是:lipsum 僅生成 Lorem ipsum 占位文本,而 blindtext 則可以生成各種格式的測試文本,例如標題、副標題等。↩︎

  4. 但是這個儲存櫃唯一的缺點就是全英文,但現在 chatGPT 等 AI 工具如此發達,只要將文件內容丟進去即可翻譯,因此不用擔心看不懂。↩︎

  5. How is font size measured? (n.d.). Quora. https://www.quora.com/How-is-font-size-measured↩︎

  6. Understanding line height / line spacing / baselineskip in LaTeX. (n.d.). TeX - LaTeX Stack Exchange. https://tex.stackexchange.com/questions/410250/understanding-line-height-line-spacing-baselineskip-in-latex↩︎

  7. 另外還有 CTEXCJKCJKutf8,但是最常見最好用的套件是 xeCJK。而 CJK 代表的意思是中文(Chinese)、日文(Japanese)與韓文(Korean)。↩︎

  8. 新指令的定義是包含你希望指令執行的內容。如果指令可以允許接受參數,則可以在定義中使用 #1#2 等來引用這些參數,#1 表示第一個參數,依此類推。↩︎

  9. 圖片取自台大經濟系吳聰敏教授之《cwTEX 排版系統》頁 284。↩︎

  10. 默認情況下是縱向(portrait),因此不需要設定。↩︎

  11. 請參考Word標題設定:1個操作,更改整份文件排版設計↩︎

Reuse

Citation

BibTeX citation:
@online{sung2024,
  author = {Sung, Anthony},
  title = {LaTeX {教學系列:基本設定}},
  date = {2024-06-24},
  url = {https://yueswater.com/posts/2024-06-24-latex-setting/},
  langid = {en}
}
For attribution, please cite this work as:
Sung, Anthony. 2024. “LaTeX 教學系列:基本設定.” June 24, 2024. https://yueswater.com/posts/2024-06-24-latex-setting/.