跳轉到內容

LaTeX/特殊字元

來自 Wikibooks,開放世界中的開放書籍

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. 方框
  5. 規則和支撐

技術文字

  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. 命令詞彙表

編輯此框編輯目錄


在本章中,我們將討論與輸入編碼、排版變音符號和特殊字元相關的主題。

在下文中,我們將針對所有除小寫字母 a–z、大寫字母 A-Z、數字 0–9 和英文標點符號以外的符號使用“特殊字元”。

某些語言通常需要專門的輸入系統來簡化文件編寫。阿拉伯語、中文、日語、韓語等語言就是這種情況。此特定主題將在 國際化 中進行討論。

生成帶有變音符號(例如重音符號)的字元的規則略有不同,具體取決於您是在文字模式、數學模式還是製表環境中。

輸入編碼

[edit | edit source]

TeX 預設使用 ASCII。但 128 個字元不足以支援非英語語言。TeX 有自己的方法,透過命令來處理每個變音標記(參見 轉義程式碼)。但是,如果我們希望重音符號和其他特殊字元直接出現在原始檔中,則必須告訴 TeX 我們要使用不同的編碼。

LaTeX 提供多種編碼

  • ASCII:預設值。原始檔中僅支援純英文字元。
  • ISO-8859-1(也稱為 Latin 1):8 位編碼。它支援大多數拉丁語語言的字元,僅此而已。
  • UTF-8:Unicode 多位元組編碼。支援完整的 Unicode 規範。
  • 其他...

在下文中,我們假設您要使用 UTF-8。

指定編碼有一些重要步驟

  • 確保您的文字編輯器以 UTF-8 解碼檔案。
  • 確保它以 UTF-8 儲存您的檔案。大多數文字編輯器不區分這兩種情況,但有些區分,例如 Notepad++。
  • 如果您在終端中工作,請確保它設定為支援 UTF-8 輸入和輸出。一些舊的 Unix 終端可能不支援 UTF-8。PuTTY 預設情況下未設定為使用 UTF-8,您需要對其進行配置。
  • 告訴 LaTeX 原始檔是 UTF-8 編碼的。
\usepackage[utf8]{inputenc}

inputenc [1] 包告訴 LaTeX 您.tex檔案的文字編碼格式是什麼。

inputenc 包允許使用者在文件中更改編碼 - 透過命令 \inputencoding{'編碼名稱'}

\usepackage[utf8]{inputenc}
% ...
% In this area
% The UTF-8 encoding is specified.
% ...
\inputencoding{latin1}
% ...
% Here the text encoding is specified as ISO Latin-1.
% ...
\inputencoding{utf8}
% Back to the UTF-8 encoding.
% ...

擴充套件支援

[edit | edit source]

LaTeX 對 UTF-8 的支援相當具體:它只包含有限範圍的 Unicode 輸入字元。它只定義了那些已知在當前字型編碼中可用的符號。您可能會遇到使用 UTF-8 可能會導致錯誤的情況

! Package inputenc Error: Unicode char \u8:ũ not set up for use with LaTeX.

這是因為 utf8 定義並不一定對映您能夠在鍵盤上輸入的所有字元字形。例如,這些字元包括

ŷ Ŷ ũ Ũ ẽ Ẽ ĩ Ĩ

在這種情況下,您可以嘗試使用 utf8x 選項定義更多字元組合。 utf8x 未正式支援,但在某些情況下可能有效。但是,它可能會破壞與某些包(如 csquotes)的相容性。

另一種可能性是堅持使用 utf8 並自己定義字元。這很容易

\DeclareUnicodeCharacter{'codepoint'}{'TeX sequence'}

其中 codepoint 是所需字元的 Unicode 碼位。 TeX 序列 是在遇到與碼位匹配的字元時要列印的內容。您可以在此 網站 上找到碼位。碼位很容易在網路上找到。示例

\DeclareUnicodeCharacter{0177}{\^y}

現在輸入 ŷ 將有效地列印 ŷ。

轉義程式碼

[edit | edit source]

除了直接輸入 UTF-8,LaTeX 還支援特殊字元的組合。如果您的鍵盤缺少一些所需的重音符號和其他變音符號,這很方便。

以下重音符號可以放在字母上。雖然大多數示例中都使用了“o”字母,但重音符號可以放在任何字母上。重音符號甚至可以放在“缺失”的字母上方;例如,\~{} 會在空白處生成一個波浪號。

以下命令只能在段落(預設)或 LR(左右)模式下使用。

LaTeX 命令 示例 描述
\`{o} ò 重音符
\'{o} ó 銳音符
\^{o} ô 圓形符號
\"{o} ö 變音符、分音符或雙點符號
\H{o} ő 長匈牙利變音符(雙銳音符)
\~{o} õ 波浪號
\c{c} ç 尾音符
\k{a} ą 尾音符
\l{} ł 帶橫線的 l(帶筆劃的 l)
\={o} ō 長音符(字母上方的橫線)
\b{o} o 字母下方的橫線
\.{o} ȯ 字母上方的點
\d{u} 字母下方的點
\r{a} å 字母上方的圓圈(對於 å,還有一個特殊的命令 \aa
\u{o} ŏ 字母上方的短音符
\v{s} š 字母上方的抑揚符/尖音符 ("v")
\t{oo} o͡o 兩個字母上方的 "領帶"(倒置的 u)
\o{} ø 帶斜線的 o(帶斜線的 o)
{\i} ı 無點 i(沒有點的 i)

舊版本的 LaTeX 在新增變音符號時不會移除 i 和 j 字母頂部的點。為了糾正這個問題,必須使用這些字母的無點版本,透過輸入 \i\j。例如

  • \^{\i} 應該用於 i 上加尖音符 î;
  • \"{\i} 應該用於 i 上加雙點 ü。

然而,當前版本的 LaTeX 不再需要這樣做(實際上,這樣做可能會導致崩潰並出現錯誤)。

如果需要用一種語言編寫完整的文件,並且該語言多次需要特定的變音符號,那麼使用正確的配置就可以直接在文件中編寫這些字元。例如,為了更方便地編寫雙點符號,可以將 babel 包配置為 \usepackage[german]{babel}。這提供了 "o 的簡寫形式,用於 \"o。如果需要在標籤中使用一些文字重音,這將非常有用,因為否則將無法接受任何反斜槓。

有關語言配置的更多資訊,請參見 國際化 部分。

小於 <大於 >

[edit | edit source]

兩個符號 '<' 和 '>' 實際上是 ASCII 字元,但您可能已經注意到,它們分別列印 '¡' 和 '¿'。這是一個字型編碼問題。如果您希望它們列印真實的符號,則必須使用其他字型編碼,例如 T1,並使用 fontenc 包載入。有關字型編碼的更多詳細資訊,請參見 字型

或者,可以使用專用命令列印它們

\textless
\textgreater

歐元貨幣符號

[edit | edit source]

如今在編寫關於金錢的內容時,您需要 歐元符號textcomp 包提供了一個 \texteuro 命令,它會提供當前文字字型提供的歐元符號。根據您選擇的字型,這可能與官方符號相差甚遠。

eurosym 提供了歐元符號的官方版本。在序言中載入它(可選地使用 official 選項)

\usepackage[official]{eurosym}

然後您可以使用 \euro{} 命令插入它。最後,如果您想要一個與當前字型樣式匹配的歐元符號(例如,粗體、斜體等),您可以使用不同的選項

\usepackage[gen]{eurosym}

同樣,您可以使用 \euro{} 插入歐元符號。

或者,您可以使用 marvosym 包,它也提供了歐元符號的官方版本。

\usepackage{marvosym}
% ...

\EUR{}

現在您已經成功地列印了歐元符號,您可能希望鍵盤上的 '€' 實際上打印出與上面一樣的歐元符號。有一個簡單的方法可以做到這一點。您必須確保使用 UTF-8 編碼以及一個可用的 \euro{}\EUR{} 命令。

\DeclareUnicodeCharacter{20AC}{\euro{}}
% or
\DeclareUnicodeCharacter{20AC}{\EUR{}}

完整示例

\usepackage[utf8]{inputenc}
\usepackage{marvosym}
\DeclareUnicodeCharacter{20AC}{\EUR{}}

溫度和數學的度數符號

[edit | edit source]

列印溫度和角度值的 easiest 方式是使用 siunitx 包的 \SI{value}{unit} 命令,它在文字模式和數學模式下都有效

\usepackage{amsmath}
\usepackage{siunitx}
%...

A $\SI{45}{\degree}$ angle.

It is \SI{17}{\degreeCelsius} outside.

有關更多資訊,請參見 siunitx 包的文件

一個常見的錯誤是使用 \circ 命令。它不會列印正確的字元(儘管 $^\circ$ 會)。請改用 textcomp 包,它提供了一個 \textdegree 命令。

\usepackage{textcomp}
%...

A $45$\textdegree angle.

對於溫度,您可以使用相同的命令,或者選擇 gensymb 包並編寫

\usepackage{gensymb}
\usepackage{textcomp}
%...

17\,\celsius % best (with textcomp)

一些鍵盤佈局包含度數符號,如果您使用的是 UTF-8 和 textcomp,可以直接使用它。為了獲得更好的字型質量,我們建議使用合適的字型,例如 lmodern

\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{textcomp}

% ...

17\,°C

17\,% best

其他符號

[edit | edit source]

LaTeX 有許多符號可用。大多數符號都在數學領域,後面的章節將介紹如何訪問它們。對於更常見的文字符號,請使用以下命令

命令 示例 字元
\% %
\$ $
\{ {
\_ _
\P
\ddag n/a
\textbar n/a |
\textgreater >
\textendash n/a
\texttrademark n/a
\textexclamdown n/a ¡
\textsuperscript{a} a
\pounds n/a £
\# #
\& &
\} }
\S §
\dag n/a
\textbackslash n/a \
\textless <
\textemdash n/a
\textregistered n/a ®
\textquestiondown n/a ¿
\textcircled{a} n/a
\copyright n/a ©

上面表格中沒有提到,在 LaTeX 程式碼中使用波浪號 (~) 來生成 不間斷空格。要獲得列印的波浪號符號,請編寫 \~{}\textasciitilde{}。使用 \textvisiblespace 可以建立一個可見的空格

對於一些更有趣的符號,由於 pifont 包,Postscript ZapfDingbats 字型可用。在你的序言中新增宣告:\usepackage{pifont}。接下來,命令 \ding{number} 將列印指定的符號。以下是可用符號的表格

ZapfDingbats symbols.

在特殊環境中

[edit | edit source]

數學模式

[edit | edit source]

上面的一些以及一些類似的重音符號也可以在數學模式下生成。以下命令只能在數學模式下使用。

LaTeX 命令 示例 描述 文字模式等效
\hat{o} 圓形符號 \^
\widehat{oo} \hat 的寬版本,在多個字母上
\check{o} V形或勾號 \v
\tilde{o} 波浪號 \~
\widetilde{oo} \tilde 的寬版本,在多個字母上
\acute{o} 銳音符 \'
\grave{o} 重音符 \`
\dot{o} 字母上方的點 \.
\ddot{o} 字母上方的兩個點(文字模式中的變音符) \"
\breve{o} 短音符 \u
\bar{o} 長音符 \=
\vec{o} 字母上的向量(箭頭)

當對字母 ij 應用重音符時,可以使用 \imath\jmath 來防止點與重音符重疊。

LaTeX 命令 示例 描述 帶頂點的示例
\hat{\imath} 字母 i 上的尖音符,沒有頂點
\vec{\jmath} 字母 j 上的向量(箭頭),沒有頂點

製表環境

[edit | edit source]

在製表環境中,一些用於正文的重音符具有其他用途。在這種情況下,可以使用以下命令來建立它們。

  • \a' 用於尖音符
  • \a` 用於重音符
  • \a= 用於長音符

Unicode 鍵盤輸入

[edit | edit source]

一些作業系統提供了鍵盤組合來輸入任何 Unicode 程式碼點,即所謂的 unicode 組合鍵

許多 X 應用程式(*BSD 和 GNU/Linux)支援Ctrl+Shift+u組合。應該會出現一個 "u" 符號。輸入程式碼點並按下enterspace以實際列印字元。示例

<Ctrl+Shift+u> 20AC <space>

將列印歐元符號。

GNOME 和 KDE 等桌面環境可能提供可自定義的組合鍵,用於更易於記憶的序列。

Xorg 提供了具有變體的先進鍵盤佈局,可以讓您使用適當的修飾符組合輕鬆輸入許多字元,例如Alt Gr. 這高度依賴於所選的佈局+變體,因此建議您在鍵盤上玩一玩,在每個鍵和死鍵之前加上Alt Gr修飾符。

在 Windows 中,您可以按住Alt並輸入一個<codepoint>以獲取所需的字元。例如,

<Alt> + 0252

將列印德語字母 ü。

[edit | edit source]

註釋和參考資料

[edit | edit source]
  1. 有關該包的詳細資訊,請參閱 由該包作者編寫的完整規範.


上一個:列表結構 索引 下一個:國際化
華夏公益教科書