LaTeX/特殊字元
在本章中,我們將討論與輸入編碼、排版變音符號和特殊字元相關的主題。
在下文中,我們將針對所有除小寫字母 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檔案的文字編碼格式是什麼。
如果您檢查字元編碼(例如使用 Unixfile命令),請確保您的檔案中至少包含一個特殊字元,否則它將被識別為 ASCII(這很合理,因為 UTF-8 是 ASCII 的超集)。 |
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} 將列印指定的符號。以下是可用符號的表格
在特殊環境中
[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}
|
字母上的向量(箭頭) |
當對字母 i 和 j 應用重音符時,可以使用 \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" 符號。輸入程式碼點並按下enter或space以實際列印字元。示例
<Ctrl+Shift+u> 20AC <space>
將列印歐元符號。
GNOME 和 KDE 等桌面環境可能提供可自定義的組合鍵,用於更易於記憶的序列。
Xorg 提供了具有變體的先進鍵盤佈局,可以讓您使用適當的修飾符組合輕鬆輸入許多字元,例如Alt Gr. 這高度依賴於所選的佈局+變體,因此建議您在鍵盤上玩一玩,在每個鍵和死鍵之前加上Alt Gr修飾符。
在 Windows 中,您可以按住Alt並輸入一個<codepoint>以獲取所需的字元。例如,
<Alt> + 0252
將列印德語字母 ü。
外部連結
[edit | edit source]註釋和參考資料
[edit | edit source]- ↑ 有關該包的詳細資訊,請參閱 由該包作者編寫的完整規範.

