LaTeX/特殊字元
在本章中,我們將解決與輸入編碼、排版重音符號和特殊字元相關的相關問題。
在下文中,我們將針對除小寫字母 a-z、大寫字母 A-Z、數字 0-9 和英語標點符號以外的所有符號使用 特殊字元。
一些語言通常需要一個專用的輸入系統來簡化文件編寫。例如阿拉伯語、中文、日語、韓語等。這個特定問題將在 國際化 中解決。
使用重音符號(如重音符號)生成字元的規則,根據您是處於文字模式、數學模式還是製表環境中而略有不同。
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.
% ...
|
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}
|
現在輸入 ŷ 將有效地列印 ŷ。
除了直接的 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} |
š | 尖音符/háček(“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 way 是使用\SI{value}{unit}命令,該命令來自siunitx包,它在文字和數學模式下都有效
\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]- ↑ 有關該軟體包的詳細資訊,請參閱由該軟體包作者撰寫的完整規範。

