LaTeX 教學系列:基本設定
使用與不使用套件進行 LaTeX 基本設定,包含字體大小、字型、版面設定
前情提要
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)的作品,通常用於設計和排版中,用來填充文本文字區域以模擬實際的文字內容,協助測試版面效果。以下我們拿 lipsum
與 blindtext
兩個套件做說明。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),因此設計字體時,一定都會以下圖的線條作為輔助線。
而字體基線跟排版有什麼關係呢?下圖顯示了兩行文字,第一行文字與第二行文字之間的基線用紅色線段標示出來,一般來說我們都會以基線作為兩行之間的對齊基準,太大會讓字體離得太遠,太小則會讓字體看起來很擠,因此中庸之道就是選擇一個適合目前文件大小的基線高度。
設定字體系列
這張圖片展示了 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 文檔中引入 xeCJK
和 fontspec
兩個套件。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
套件即可。不過,在設定時還是有些地方需要注意。先看下圖:
一份文件中,本文的位置由圖左中間的方框包住,該方框與紙張中間的距離就稱為邊距(margin)。邊距分為上(top)、下(bottom)、左(left)、右(right)。引用套件後,我們可以使用 \geometry{}
來設定。以下是範例,假設將頁面的上邊距和下邊距設定為 2 公分,左邊距和右邊距設定為 2.5 公分,你也可以自己調整看看,不同的數字會有何種變化。
如果你想要將所有邊距設為同一數值,例如 \geometry{margin=2cm}
,這樣就將會把文件的所有邊距都設定為 2 公分。如果只想設定某一方向的邊距,可以使用以下指令:\geometry{left=3cm}
,類似地,可以設定 top
、right
和 bottom
邊距。
如果你認為 geometry
套件只有這樣的功能,那你就太小看它了!如果我們的文件不是一般常見的 a4 格式,例如中學考卷通常都是 a3,那麼要如何處理?更進一步地說,中學的考卷有時需要橫向排版,這時候又應該怎麼做?別緊張,geometry
套件還提供了其他設定選項,例如紙張大小、頁面方向和裝訂邊距等。
使用者可以通過 a4paper、letterpaper 等選項來設定紙張大小,或是可以用 landscape
將頁面設定為縱向或橫向,10如果需要為裝訂預留額外的邊距,可以使用 bindingoffset
參數。假設我們要將文件設定為 a3 的橫向大小,邊距均為 2.5 公分,並預留裝訂區域為 1 公分,可參考以下範例:
章節標題格式設定
Word 裡面我們對於章節標題格式設定,需要先選取一個章節的標題,接著點選樣式進行設定,11不過這樣的設定方式稍顯麻煩,有時會因為加入新的小節而跑版。
在 LaTeX 中,我們使用 titlesec
進行設定。首先,在導言區載入 titlesec
套件後,使用 \titleformat{欲設定標題}[形狀]{格式}{標籤樣式}{標題編號與文本間距}{標題文本前指令}[標題文本後指令]
指令來設定章節標題的格式。這個指令分成好幾個部分:
欲設定標題:指定要設定格式的標題指令,例如
\section
、\subsection
等。形狀:可選參數,用於指定標題的形狀或樣式,例如
block
(塊狀)或display
(顯示)。如果不需要特別的形狀,這部分可以省略。格式:設定標題的字體、大小、顏色等格式,使用 LaTeX 的文本格式指令。
標籤樣式:指定標題的標籤樣式,即標題編號部分。可以使用
\thesection
、\thesubsection
等指令來設定。如果不需要標題編號,可以使用空的大括號{}
。標題編號與文本間距:設定標題編號與標題文本之間的距離,單位可以是
pt
、em
、cm
等。標題文本前指令:指定在標題文本之前執行的 LaTeX 指令,例如插入圖片、水平線等。如果不需要,可以留空。
標題文本後指令:可選參數,指定在標題文本之後執行的 LaTeX 指令。
我們直接從以下範例看一下如何處理:
在上面的範例程式碼中,有幾個小技巧:
- 可以看到我們使用
\usepackage{xeCJK, CJKnumb}
將兩個套件載入進來。如果欲載入沒有要設定其他的內容,那麼就可以將多個套件以逗號分隔一次載入。 - 前面我們提到拉丁字母有假文產生器
lipsum
,中文也有相應的套件zhlipsum
,使用方法與lipsum
大致相同,即輸入\zhlipsum[起始段落-結束段落]
即可。
頁首頁尾設定
在 Word 中,頁首與頁尾的設定十分複雜,除了腳註的設定外,更包含奇偶數不同的頁碼、頁首文字等。LaTeX 則提供 fancyhdr
套件,透過預先設定,就不用一個個微調。
在以下的範例程式碼中有一個地方必須注意:我們以頁腳的設定來說,程式碼中有 fancyfoot
與 cfoot
、lfoot
、rfoot
,你可能會想說這是不一樣的東西吧。答案是肯定,也是否定。事實上 fancyfoot
是較為正式的用法,可以設定的參數較多,常用位置參數包括:L
左邊(Left)、C
中間(Center)、R
右邊(Right)、E
偶數頁(Even)、O
奇數頁(Odd)。而 cfoot
、lfoot
、rfoot
則是 fancyhdr
套件提供的快捷命令,用於快速設置頁腳的中間、左邊和右邊內容。
在使用 fancyhdr
之前,建議使用 \fancyhf{}
清除任何預設的頁首和頁腳設定。然後,使用 \lhead
和 \rhead
命令分別設定頁首的左側和右側內容,其中 \lhead{\normalsize 左上文字 \ 左下文字}
將頁首的左側設定為包含「左上文字」和 「左下文字」,而 \rhead{\normalsize 右上文字 \ 右下文字}
則將頁首的右側設定為包含「右上文字」和 「右下文字」。
頁腳部分,使用 \cfoot{\footnotesize \thepage}
在頁腳的中央顯示頁碼。此外,利用 \fancyfoot[C]{}
清空中央的頁腳內容,然後使用 \fancyfoot[LE,RO]{第~\thepage~頁}
設定頁碼,使其在偶數頁的左側和奇數頁的右側顯示,並且格式為第~頁碼~頁
。
小結
這篇文章教的內容有點多,可能對於初學者而言沒辦法一下子吸收過來,建議多看幾次,或是直接實際操作,讓 LaTeX 的指令變成肌肉記憶。如果找不到可以練習的素材,可以使用筆者的模板(趁機打廣告)練習看看:Note template。
Footnotes
Footnotes
如果你不曉得
[]
與{}
的差別在哪,請回去看第一篇文章的決定美醜的關鍵:參數。↩︎筆者未有使用過 MikTeX 以外編譯器的經驗,因此不確定其他編譯器是否如此智慧。MikTeX 的好處是可以在 MikTeX Console 裡面設定自動安裝套件,不用每次詢問。↩︎
lipsum
與blindtext
最大的差別是:lipsum
僅生成 Lorem ipsum 占位文本,而blindtext
則可以生成各種格式的測試文本,例如標題、副標題等。↩︎但是這個儲存櫃唯一的缺點就是全英文,但現在 chatGPT 等 AI 工具如此發達,只要將文件內容丟進去即可翻譯,因此不用擔心看不懂。↩︎
How is font size measured? (n.d.). Quora. https://www.quora.com/How-is-font-size-measured↩︎
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↩︎
另外還有
CTEX
、CJK
、CJKutf8
,但是最常見最好用的套件是xeCJK
。而 CJK 代表的意思是中文(Chinese)、日文(Japanese)與韓文(Korean)。↩︎新指令的定義是包含你希望指令執行的內容。如果指令可以允許接受參數,則可以在定義中使用
#1
、#2
等來引用這些參數,#1
表示第一個參數,依此類推。↩︎圖片取自台大經濟系吳聰敏教授之《cwTEX 排版系統》頁 284。↩︎
默認情況下是縱向(portrait),因此不需要設定。↩︎
Reuse
Citation
@online{sung2024,
author = {Sung, Anthony},
title = {LaTeX {教學系列:基本設定}},
date = {2024-06-24},
url = {https://yueswater.com/posts/2024-06-24-latex-setting/},
langid = {en}
}