跳轉到內容

LaTeX/字型

來自華夏公益教科書

LaTeX

入門
  1. 簡介
  2. 安裝
  3. 安裝額外的軟體包
  4. 基礎
  5. 如何獲得幫助

常見元素

  1. 文件結構
  2. 文字格式
  3. 段落格式
  4. 顏色
  5. 字型
  6. 列表結構
  7. 特殊字元
  8. 國際化
  9. 旋轉
  10. 表格
  11. 標題建立
  12. 頁面佈局
  13. 自定義頁面頁首和頁尾
  14. 匯入圖形
  15. 浮動體、圖形和標題
  16. 腳註和邊注
  17. 超連結
  18. 標籤和交叉引用
  19. 首字母

機制

  1. 錯誤和警告
  2. 長度
  3. 計數器
  4. 規則和撐杆

技術文字

  1. 數學
  2. 高階數學
  3. 定理
  4. 化學圖形
  5. 演算法
  6. 原始碼列表
  7. 語言學

特殊頁面

  1. 索引
  2. 詞彙表
  3. 參考文獻管理
  4. 更多參考文獻

特殊文件

  1. 科學報告(學士報告、碩士論文、博士論文)
  2. 信件
  3. 簡報
  4. 教師專區
  5. 簡歷
  6. 學術期刊(MLA、APA 等)

建立圖形

  1. 介紹程式圖形
  2. MetaPost
  3. 圖片
  4. PGF/TikZ
  5. PSTricks
  6. Xy-pic
  7. 建立 3D 圖形

程式設計

  1. Plain TeX
  2. 建立軟體包
  3. 建立軟體包文件
  4. 主題

其他

  1. 模組化文件
  2. 協作編寫 LaTeX 文件
  3. 匯出到其他格式

幫助和建議

  1. 常見問題解答
  2. 技巧

附錄

  1. 作者
  2. 連結
  3. 軟體包參考
  4. LaTeX 文件示例
  5. 索引
  6. 命令詞彙表

編輯此框編輯目錄


字體系列

[編輯 | 編輯原始碼]

有數百種,如果不是數千種,字型或字體系列。常見的例子包括TimesCourierHelvetica。這些系列通常可以分為三大類:襯線無襯線等寬。LaTeX 命令通常使用以下簡寫來指代這些系列rm, sftt分別。

預設情況下,LaTeX 使用Computer Modern,這是唐納德·克努斯為 TeX 設計的一系列字型。它包含襯線、無襯線和等寬字型,每種字型都有多種字重視覺尺寸

預設情況下,LaTeX 文件的主體以羅馬(襯線)字型設定,但可以透過設定家族預設值來更改

\renewcommand{\familydefault}{<family>}

其中<family>是以下任一值

  • \rmdefault
  • \sfdefault
  • \ttdefault

強調文字

[編輯 | 編輯原始碼]

Tex 識別兩種型別的標記命令

  • 語義 - \emph{text} -- 預設情況下為斜體字型。可以透過 \renewcommand\emph{\textbf} 覆蓋。根據需求/偏好替換 textbf。
  • 視覺 - 實際上應用了所需的格式
    • 系列 - \textrm{} \textsf{} \texttt
    • 字重 - \textbf{} - 粗體,\textmd{} - 中等
    • 形狀 - \textup{}, \textit{}, \textsl{}

對於特定字型,視覺標記有變體。以上是常用的元素。有關這些專案的參考,請參閱字型樣式部分

要為單詞或短語新增一些強調,請使用\emph{text} 命令,該命令通常會將文字斜體化。

I want to \emph{emphasize} a word.

我想強調一個詞。

該命令是動態的:如果您強調一個已經在強調句子中的單詞,它將恢復為正體字型。

\emph{In this emphasized sentence, there is an emphasized \emph{word} which looks upright.}

在這個強調的句子中,有一個強調的看起來是正體。

可以透過使用粗體來更突出地強調單詞或短語,特別是對於讀者在閱讀文字時可能會嘗試查詢的關鍵詞。由於粗體文字通常在段落甚至頁面中任何其他文字之前閱讀,因此應謹慎使用。在使用無襯線字型時,它也可以代替斜體,以提供與非強調文字的更大對比。粗體文字可以使用\textbf{text} 命令生成。

\textbf{Bold text} may be used to heavily emphasize very important words or phrases.

粗體文字可用於強烈強調非常重要的單詞或短語。

字型樣式

[編輯 | 編輯原始碼]

字型通常有各種樣式和字重,例如斜體粗體。下表列出了訪問典型字型形狀所需的命令。

注意:命令形式中不允許有段落換行。

LaTeX 命令 等效開關 輸出樣式 備註
\textnormal{...} {\normalfont ...} 文件字體系列 這是預設字型或普通字型。
\emph{...} {\em ...} 強調 通常是斜體。在斜體文字中使用 emph{} 會刪除強調文字的斜體。
\textrm{...} {\rmfamily ...} 羅馬字體系列
\textsf{...} {\sffamily ...} 無襯線字體系列
\texttt{...} {\ttfamily ...} 電傳打字機字體系列 這是一種等寬字型,也稱為等距字型。取決於字型,數字零可能帶有連字元以與字母O區分。
\textup{...} {\upshape ...} 直立式 與普通字型相同。
\textit{...} {\itshape ...} 斜體式
\textsl{...} {\slshape ...} 傾斜式 普通字型的傾斜版本(類似於斜體,但略有不同)。
\textsc{...} {\scshape ...} 小大寫
\uppercase{...} 大寫(全大寫) 還有 \lowercase。不過有一些注意事項,請參見 這裡
\textbf{...} {\bfseries ...} 粗體
\textmd{...} {\mdseries ...} 中等粗細 普通字型粗細。
\textlf{...} {\lfseries ...} 輕盈 比普通字型更輕盈的字型粗細。並非所有字型都支援。

一般來說,應該優先使用命令而不是其等效開關,因為命令會在所選樣式結束後的緊鄰位置自動修正間距。

您可能已經注意到沒有下劃線,這是因為下劃線是打字機時代的產物,當有粗體和斜體可用時,不建議使用它。[2] 然而,在某些情況下,例如在編輯時突出顯示更改,下劃線可能很有用。雖然下劃線可以透過 \underline{...} 命令實現,但以這種方式下劃線的文字不會正確換行。相反,請使用 \ul{...} 命令(來自 soul 包)或 \uline{...} 命令(來自 ulem(下劃線強調)包)。預設情況下,後者包也會覆蓋 \emph,使文字下劃線而不是斜體化。如果您不想這樣做,請使用 normalem 選項,即 \usepackage[normalem]{ulem}。這兩個包還提供帶有 \st{...}\sout{...}刪除線文字。

調整文字大小

[edit | edit source]

內建大小

[edit | edit source]

要相對於預設正文文字大小縮放文字,請使用以下命令

命令 輸出
\tiny 示例文字
\scriptsize 示例文字
\footnotesize 示例文字
\small 示例文字
\normalsize 示例文字
\large 示例文字
\Large 示例文字
\LARGE 示例文字
\huge 示例文字
\Huge 示例文字

這些命令在給定範圍內改變大小。例如,{\Large some words} 將只改變 some words 的大小,不會影響文件中其他部分的字型。它適用於文字的大部分內容。

{\Large\tableofcontents}

這些命令不能在數學模式下使用。但是,公式的一部分可以透過使用包含大小命令的 \mbox 命令設定成不同的尺寸。新尺寸在大小命令之後立即生效;如果整個段落或單元都設定成特定大小,則大小命令應包含空行或 \end{...},以分隔單元。

預設情況下,\normalsize 是 10 磅,但這可以在 \documentclass 宣告中更改,例如 \documentclass[12pt]{article}。請注意,並非每個文件類對所有上述大小命令都有獨特的大小。

絕對磅值大小
大小 標準類(除了slides), beamer AMS 類, memoir slides
[10pt] [11pt] [12pt] [10pt] [11pt] [12pt]
\tiny 5 6 6 6 7 8 13.82
\scriptsize 7 8 8 7 8 9 16.59
\footnotesize 8 9 10 8 9 10 16.59
\small 9 10 10.95 9 10 10.95 16.59
\normalsize 10 10.95 12 10 10.95 12 19.907
\large 12 12 14.4 10.95 12 14.4 23.89
\Large 14.4 14.4 17.28 12 14.4 17.28 28.66
\LARGE 17.28 17.28 20.74 14.4 17.28 20.74 34.4
\huge 20.74 20.74 24.88 17.28 20.74 24.88 41.28
\Huge 24.88 24.88 24.88 20.74 24.88 24.88 41.28

TeX 中的磅值遵循標準的美國磅值系統,其中 1 pt 大約為 0.35136 毫米。大多數現代計算機程式中使用的標準磅值(稱為桌面出版磅值PostScript 磅值)有 1 pt 大約為 0.3527 毫米,而標準的歐洲磅值(稱為Didot 磅值)有 1 pt 大約為 0.37597151 毫米(參見:點 (排版))。

任意大小

[edit | edit source]

命令 \tiny...\Huge 通常足以滿足您的需求,但您有時可能需要任意字型大小。這是透過 \fontsize{<size>}{<line space>}\selectfont 來實現的。例如

\fontsize{5cm}{5.5cm}\selectfont

將當前字型大小設定為 5 釐米,行距為 5.5 釐米行距

如果您使用的是latexpdflatex引擎,您可能會收到類似於以下內容的警告

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <142.26378> not available
(Font)              size <24.88> substituted on input line 103.

這是因為這些較舊的引擎只支援一組固定的大小,介於 5 到 17 磅之間。當他設計 Computer Modern 時,Knuth 為這些大小建立了單獨的字型檔案,每個檔案都針對特定大小進行了筆劃寬度和間距最佳化。為了避免扭曲它們,預設情況下會停用縮放這些字型。

使用lualatexxelatex可以避免此問題,它們使用 Latin Modern(Computer Modern 的向量化版本)作為預設字體系列。這仍然為每個原始光學大小提供單獨的檔案,但在要求任意大小時會自動縮放最接近的字型。

使用替代字型

[edit | edit source]

當 TeX 最初在 1970 年代後期設計時,基於向量的字型不存在於任何常見的格式中,PostScript 直到 1982 年才釋出。因此,TeX 被設計為使用自己的字體系統,即 METAFONT。隨著時間的推移,TeX(和 LaTeX)擴充套件到支援 PostScript 字型,現代 LaTeX 引擎也支援在現代系統中找到的 TrueType (TTF) 和 OpenType (OTF) 字型。

使用 TTF 和 OTF 字型

[edit | edit source]

如果您使用的是lualatexxelatex,您可以使用 fontspec 包使用 TTF 和 OTF 字型

\documentclass{article}

\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Georgia}
\setsansfont[Ligatures=TeX]{Arial}

\begin{document}
Lorem ipsum...
\end{document}

選項 [Ligatures=TeX] 允許您使用 文字格式 章節中提到的標準 TeX 連字,而不是您鍵盤上不太可能存在的 Unicode 字元。例如,---可用於建立 em 破折號 (—),引號可以鍵入 ``like this'' 而不是 “like this”,等等。

fontspec 包極具可配置性。有關詳細資訊,請參見手冊[3],但下面介紹了一些基本內容。

選擇字型檔案

[edit | edit source]

給定字型的不同粗細和樣式通常儲存為單獨的字型檔案。一個典型的字型可能提供四個檔案來表示它的常規粗細,*斜體*,**粗體**和* **粗斜體**。給定字型的名稱,fontspec通常可以推斷出各個檔案的名稱。但是,許多字型有多於兩種粗細 - 例如,Futura 的一些版本有*細體*,*正體*,*中粗體*,*半粗體*,*粗體*和*特粗體*。有時,小寫字母**大寫** 也作為單獨的檔案儲存。

我們可能希望手動選擇粗細以獲得特定的外觀或更好地匹配文件中其他字型的粗細。繼續以 Futura 為例,假設我們希望使用“正體”作為預設粗細,“半粗體”作為粗體,並且字型檔名為

  • Futura-Boo用於直立正體粗細
  • Futura-BooObl用於*斜體*正體粗細
  • FuturaSC-Boo用於小寫字母**大寫**,正體粗細
  • Futura-Dem用於直立半粗體(粗體)
  • Futura-DemObl用於*斜體*半粗體

我們的字型設定可能類似於

\usepackage{fontspec}
\setmainfont[
    Ligatures=TeX,
    UprightFont = *-Boo,
    ItalicFont = *-BooObl,
    SmallCapsFont = *SC-Boo,
    BoldFont = *-Dem,
    BoldItalicFont = *-DemObl
]{Futura}

請注意,我們可以使用Futura-Boo, Futura-BooObl代替輸入*來插入基本名稱。

控制字型特徵

[edit | edit source]

OpenType (OTF) 格式允許字型設計者嵌入可以開啟和關閉的字型特徵,例如

  • 字形的替代版本
  • 襯線和“舊式”數字,每個數字都有*表格*和*比例*間距[4]
  • 最多三組連字:*標準*,*上下文*和*歷史*。
  • 上標和下標字形
  • 小寫字母**大寫**(與標準大寫和小寫字母在同一檔案中)

所有這些特徵都可以使用不同的fontspec選項開啟和關閉。例如,如果我們希望以舊式,比例間距的數字將正文文字設定為Linux Libertine,我們可以將字型設定如下

\setmainfont[
    Ligatures=TeX,
    Numbers={OldStyle, Proportional}
]{Linux Libertine}

可以使用\addfontfeatures{...}開啟和關閉特徵。假設您想在表格中使用襯線,表格數字

{\addfontfeatures{Numbers={Lining, Tabular}}
    \begin{tabular}{l r}
        Widgets: & 25 \\
        Gadgets: & 6 \\
        Whatsits & 24 \\
    \end{tabular}
} % Return to previous figure style

在 latex 和 pdflatex 中更改字型

[edit | edit source]

如果您沒有使用 Unicode 感知引擎之一,字型選擇會更加複雜。(請參閱以下有關編碼的討論。)以下資源可用於latexpdflatex字型配置包括

字型編碼

[edit | edit source]

數字化人類語言是一個複雜的話題,自 TeX 誕生以來已經發生了重大變化。

Unicode

[edit | edit source]

如今,文字通常使用Unicode 在計算機系統中表示。簡而言之,

  • Unicode 文字檔案由一系列碼位組成,每個碼位可以表示一個要繪製的字元,一個重音或其他變音符號以與相鄰字元組合,或者一些非列印字元,例如指令,將後續文字從右到左列印。
  • 這些碼位中的一個或多個組合在一起表示一個*字形簇*或*字形*,這是字型中我們非正式地稱為“字元”的形狀。
  • 現代字型格式(如 TrueType 和 OpenType)包含編碼表,這些表將碼位對映到字型檔案包含的字形。

LuaLaTeX 和 XeLaTeX 使用這些工具將 Unicode 編碼的輸入檔案(LuaLaTeX 接受UTF-8 檔案,而 XeLaTeX 更加靈活,還接受UTF-16UTF-32)渲染成 PDF 文件。

TeX 編碼

[edit | edit source]

原始 TeX 和 LaTeX 設計於 Unicode 出現之前很久,它們使用了一種截然不同的方案。使用latexpdflatex時,您必須選擇一個輸入編碼,引擎使用它來解釋您的檔案,以及一個輸出編碼,引擎使用它將您的輸入對映到字形。預設字型編碼是 OT1,這是原始 Computer Modern 字型的編碼。它只包含 128 個字元,其中許多來自 ASCII,但省略了其他一些字元,幷包括一些不在 ASCII 中的字元。當需要重音字元時,TeX 透過將普通字元與重音字元組合來建立它們。雖然最終的輸出看起來正確,但與基於 Unicode 的方法相比,這種方法存在一些弊端

  • 它阻止在包含重音字元的單詞內部自動斷字。
  • 在 PDF 中搜索包含重音的單詞會失敗。
  • 透過 PDF 檢視器提取(例如透過複製貼上)變音符“Ä”實際上會提取兩個字元 '"A'。
  • 一些拉丁字母無法透過這種方式建立,更不用說希臘語或西里爾語等非拉丁字母的字母了。

為了克服這些缺點,建立了其他幾種 8 位輸出編碼。T1 編碼中的擴充套件軟木塞 (EC) 字型包含使用拉丁字母的大多數歐洲語言的字母和標點符號。LH 字型集包含使用西裡爾字母的語言進行排版文件所需的字母。由於西里爾字形數量眾多,因此將它們排列成四個字型編碼 - T2A、T2B、T2C 和 X2。CB 包含 LGR 編碼的字型,用於希臘語文字的排版。透過使用這些字型,您可以改進/啟用非英語文件中的斷字。使用新的 CM 類字型另一個好處是,它們提供了所有粗細、形狀和光學縮放字型大小的 CM 家族字型。

所有這些在OT1 中都是不可能的;因此,您可能希望更改文件的字型編碼。

請注意,不同的字型支援不同的輸出編碼。例如,預設的 Computer Modern 字型不支援 T1。您將需要 Computer Modern Super (cm-super) 或 Latin Modern (lmodern),它們是支援 T1 的 Computer Modern 類字型。如果您沒有這些字型,那麼(取決於您的 TeX 安裝)tex通常會選擇 Type3 字型,例如 Type3 EC,它是一種點陣圖字型。點陣圖字型在放大或列印時看起來非常難看。

fontenc 包告訴 LaTeX 使用什麼字型編碼。字型編碼使用以下程式碼設定

\usepackage['encoding']{fontenc}

其中encoding 是字型編碼。可以同時載入多個編碼。

您無需在文件中進行任何更改即可使用 CM Super 字型(假設已安裝),如果您使用 T1 編碼,它們會自動載入。對於lmodern,您需要在設定 T1 編碼後加載該包

\usepackage[T1]{fontenc}
\usepackage{lmodern}

ae 包(幾乎歐洲)已過時。它提供了一些解決包含特殊字元的單詞斷字的方法。使用 lmodern 等字型時,這些方法不再需要。使用 ae 包會導致透過pdflatex生成的 PDF 檔案出現文字編碼問題(例如文字提取和搜尋),此外還會出現排版問題。

PDF 字型和屬性

[edit | edit source]

PDF 文件能夠嵌入字型檔案。這使得它們可以移植,因此得名行動式文件格式

許多 PDF 檢視器都有一個屬性功能,用於列出嵌入的字型和文件元資料。

許多 Unix 系統使用poppler 工具集,該工具集具有pdfinfo用於列出 PDF 元資料,以及pdffonts用於列出嵌入的字型。

參考

[edit | edit source]
  1. Matthew Butterick. "粗體或斜體". 實用排版.
  2. Matthew Butterick. "下劃線". 實用排版.
  3. http://mirrors.ctan.org/macros/unicodetex/latex/fontspec/fontspec.pdf
  4. Matthew Butterick. "替代數字". 實用排版.


Previous: Colors 索引 Next: List Structures
華夏公益教科書