LaTeX/國際化
LaTeX 需要一些額外的配置才能排版非英語文件。目前有兩個提供國際語言支援的包,分別是 Babel 和 Polyglossia。
- Babel[1] 支援三個主要引擎,分別是 pdfTeX、LuaTeX 和 XeTeX。根據引擎的不同,支援的語言數量(具有不同程度的覆蓋範圍)從大約 170 到 300 不等,涵蓋了大約 45 個指令碼,並且可以輕鬆地從頭開始宣告新的指令碼。它還為 Plain TeX 提供了部分支援。
- Polyglossia 被設計為 Babel 的替代方案,用於 XeTeX(雖然目前也為 LuaTeX 提供了部分支援,但不支援 pdfTeX)。它支援大約 90 種語言,涵蓋了大約 30 個指令碼。
這兩個包都涵蓋了世界上的主要語言(法語、西班牙語、阿拉伯語、漢語、日語、泰語、印地語、馬拉地語等),並處理以下任務
- 字型
- 如果可能,設定當前字型的指令碼和語言標籤,並在使用者指定的情況下(主要是 XeTeX 和 LuaTeX)在每種語言的字型之間切換。使用 Babel + LuaTeX,字型可以根據指令碼自動切換。另請參閱關於 fontspec 的討論,在 Fonts 章節中。
- 斷行、對齊和連字元
- 為每個指令碼和語言啟用相應的斷行演算法。對於帶連字元的語言,載入特定語言的連字元模式。Babel 為 CJK 指令碼提供基本的斷行功能,以及非標準連字元,例如“ff”→“ff-f”,重複連字元和排名規則。還有一些初步的阿拉伯語和藏語對齊支援。
- 文化元素
- 翻譯文件標籤(例如“章節”、“圖片”、“參考文獻”),以及根據特定語言的約定格式化日期,併為使用自己編號系統的語言格式化數字。Polyglossia 可以生成希伯來語、伊斯蘭教(民事)和波斯語日曆的當前日期;Babel 另外支援伊斯蘭教 Umm al-Qura、科普特語、衣索比亞語、漢語和佛教。
- 雙向排版
- 支援包含從右到左指令碼的文件。Babel + LuaTeX 使用基於 Unicode 的演算法,該演算法會自動更改方向。表格、頁邊距等佈局元素也必須反轉,Babel 使用 LuaTeX 在很大程度上做到了這一點。使用 XeTeX,Babel 和 Polyglossia 都依賴於 bidi 包,該包需要顯式標記來更改方向。
- 排版規則和音譯
- 執行字元級(例如音譯)和排版級(例如在適當的位置插入空格或懲罰)的各種轉換。Babel 使用 LuaTeX 可以透過“轉換”自動執行此操作;使用 XeTeX 可以做到一定程度(Babel 和 Polyglossia 都是如此),而在 8 位引擎中,許多轉換必須手動完成。
使用 Babel,LaTeX ≥ 2018-04-01 和 UTF-8 編碼的單語文件(這是推薦的編碼),對於許多歐洲語言,你只需要類似以下內容,例如
\documentclass[french]{article}
\usepackage[T1]{fontenc} % <- With XeTeX or LuaTeX, delete this line
\usepackage{babel}
\begin{document}
Plus ça change, plus c'est la même chose!
\end{document}
|
此外,還有一些針對日語、韓語或漢語等語言的專門框架,將在下面介紹。
編碼
[edit | edit source]Unicode 引擎
[edit | edit source]使用xelatex或lualatex引擎時,下面描述的許多問題都會為你解決。輸入檔案假定為 UTF-8(XeLaTeX 也接受 UTF-16 和 UTF-32),並且引擎會自動將 Unicode 字元對映到你在文件中選擇的 TrueType 或 OpenType 字型中的字形。(當然,這是假設這些字型包含你需要的字形,因此你必須確保你的字型支援你使用的語言。)
8 位引擎
[edit | edit source]對於不支援 Unicode 的引擎(latex或pdflatex),LaTeX 必須處理兩個基本問題
- 將你的輸入檔案中的位元組對映到你要使用的語言的字元。
- 將這些字元對映到你的文件使用的字型中的字形。
使用它們,你必須告訴 LaTeX 使用哪種編碼來處理你的輸入檔案,以及它應該使用哪種“輸出”編碼來將字元對映到字型中的字形。在大多數情況下(特別是對於多語言文件),UTF-8 是最佳的輸入編碼,它目前是預設編碼。
對於大多數拉丁語系語言,T1是所需的輸出編碼,可以用以下方式設定
\usepackage[T1]{fontenc}
|
下面顯示了特定語言的其他輸出編碼。
有關更多資訊,請參閱關於 Fonts 章節中的編碼討論,以及 Special Characters 章節。
Babel
[edit | edit source]核心包 babel 支援 3 個主要引擎(PDFLaTeX、LuaLaTeX 和 XeLaTeX)。指定文件語言有兩種方法。其中一種是在載入包時作為引數傳遞。
\usepackage[language]{babel}
|
另一種方法是將語言設定為全域性選項,以便其他包可以檢測和使用它。
\documentclass[language]{article}
\usepackage{babel}
|
最後,babel 透過一組 ini 檔案,提供對約 300 種語言的全部或部分支援,這些檔案可以透過 \babelprovide 訪問。此命令也可以用來從頭開始輕鬆定義自己的語言。名稱被規範化為 Unicode CLDR 中的名稱。
Babel 會自動為選擇的語言啟用適當的連字元規則。如果您的 LaTeX 格式不支援您選擇的語言的連字元,Babel 仍然可以工作,但會停用連字元,這會對排版文件的外觀產生負面影響(但使用 LuaLaTeX,可以在排版文件時載入連字元規則)。Babel 還為某些語言指定了新的命令,這些命令簡化了特殊字元的輸入。有關更多資訊,請參閱下面有關語言的部分。
如果您用多種語言呼叫 babel
\usepackage[languageA,languageB]{babel}
|
次要語言中的簡短文字不需要在前言中顯式宣告,因為 babel 支援懶載入語言。只需按以下說明選擇它,基本宣告就會動態載入。
選項列表中的最後一種語言將處於活動狀態(即 languageB),您可以使用命令
\selectlanguage{languageA}
|
來更改活動語言(當文件開始時,使用 \{document},主語言會自動選擇)。您也可以使用命令新增另一種語言的簡短文字
\foreignlanguage{languageB}{Text in another language}
|
Babel 還提供各種環境來輸入另一種語言的較長文字
\begin{otherlanguage}{languageB}
Text in language B. This environment switches all language-related definitions, like the language
specific names for figures, tables etc. to the other language.
\end{otherlanguage}
|
此環境的星號版本根據另一種語言的規則對主文字進行排版,但將特定語言的字串保留用於輔助內容,例如文件主語言的圖形。環境hyphenrules僅切換使用的連字元模式;它也可以用來使用語言名 'nohyphenation' 來禁止連字元(但請注意otherlanguage*更受歡迎)。
babel 手冊 提供了有關這些選項和許多其他選項的更多資訊。
字型管理
[edit | edit source]如果您使用的是 XeTeX 或 LuaTeX,Babel 使用 fontspec 支援 OpenType 字型。為了簡化字型處理,它提供了宏 \babelfont,該宏跨語言切換字型並設定 OpenType ‘語言系統’(即語言和指令碼)。假設您正在設定一篇瑞典語文件,其中包含一些希伯來語單詞,並使用適合這兩種語言的字型
\babelfont{rm}{FreeSerif}
|
另一方面,如果您必須使用不同的字型,您可以說
\babelfont{rm}{Iwona}
\babelfont[hebrew]{rm}{FreeSerif}
|
此外,版本 >=3.38 中的區域設定識別符號(\language和\localeid)以及字型可以在沒有顯式標記的情況下切換,具體取決於指令碼(僅限 LuaTeX)。在以下示例中,bidi=basic 切換方向,onchar=ids fonts 切換識別符號和字型
\documentclass{article}
\usepackage[swedish, bidi=basic]{babel}
\babelprovide[import, onchar=ids fonts]{hebrew}
\babelfont{rm}{Iwona}
\babelfont[hebrew]{rm}{FreeSerif}
\begin{document}
Svenska עִבְרִית svenska.
\end{document}
|
雙向文字
[edit | edit source]Babel 為 bidi 文字提供基本支援,主要是在 LuaTeX 中。包選項可以取三個值,分別是 default、basic-r 和 basic。使用 bidi=basic,RTL 和 LTR 文字可以在沒有顯式標記的情況下混合(僅限 LuaTeX)。
多語言版本
[edit | edit source]在 LaTeX 中,可以將一個文件的內容排版成多種語言,並在編譯時選擇要輸出的語言,並在預定義的字串中(章節名稱、日期等)。在多語言文件中使用上面的命令可能很麻煩,因此 babel 提供了一種方法來定義更短的名稱。使用
\babeltags{de = german}
|
您可以寫
text \textde{German text} text
text
\begin{de}
German text
\end{de}
text
|
此功能有一個明顯的缺點,即 ‘字首’\text...在 LaTeX 中被嚴重過載,並且可能會與現有的宏發生衝突。 babel 手冊建議堅持使用預設選擇器或定義自己的替代方案。
還可以使用 Heiko Oberdiek 的 iflang 包來測試當前語言(babel 包的內建功能不可靠)。以下是一個簡單的示例
\IfLanguageName{ngerman}{Hallo}{Hello}
這樣可以輕鬆區分兩種語言,而無需定義自己的命令。另一種用於本地化字串的方法是 translator。
Polyglossia
[edit | edit source]使用 XeLaTeX 或 LuaLaTeX 時,polyglossia 為核心 babel 包提供了一種替代方法,用於支援國際語言,如 其手冊 中所述。
最初的目標是與 babel 相容,但存在一些差異。例如,LaTeX 中透過包或類選項宣告語言的標準機制不被識別,使用者必須依賴一組新的命令,如示例所示。與 babel 不同,次要語言必須始終顯式宣告,因為 polyglossia 不支援懶載入。它還添加了‘語言變體’的概念,而在 babel 中,所有區域設定都平等對待。語言不僅以非標準方式宣告,而且還設計了一種新的切換語言的方式,使用諸如\textenglish或\textlang之類的命令。字型使用標準的 `fontspec` 命令設定,沒有提供更高級別的介面。
要使用 polyglossia,請在前言中載入它,並指定您將使用的語言以及您想要的任何特定語言選項。
例如,如果您的文件使用美式英語作為主要語言,幷包含一些法語、保加利亞語和希臘語的簡短文字,您可以使用
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\setotherlanguages{french, bulgarian, greek}
\newfontfamily\bulgarianfont
{NewComputerModern10}[Script=Cyrillic,Language=Bulgarian]
\newfontfamily\greekfont
{NewComputerModern10}[Script=Greek,Language=Greek]
\begin{document}
English. \textlang{french}{French}. \textlang{bulgarian}{Български}.
\textlang{greek}{Ελληνικά}.
\end{document}
|
作為比較,以下是使用 `babel` 的程式碼
\documentclass{article}
\usepackage[american]{babel}
\babelfont[*cyrillic, *greek]{rm}{NewComputerModern10}
\begin{document}
English. \foreignlanguage{french}{French}.
\foreignlanguage{bulgarian}{Български}. \foreignlanguage{greek}{Ελληνικά}.
\end{document}
|
特定語言
[edit | edit source]以下是一些特定語言的建議。如果您對以下未列出的語言有經驗,請新增一些關於該語言的筆記。本章描述的一些方法在處理參考文獻中的非英語作者姓名時可能會有用。
以下大多數假設您使用的是 babel,但 polyglossia 支援一些相同的命令,儘管它們的行為可能不同。 |
阿拉伯語指令碼
[edit | edit source]使用阿拉伯語指令碼的文件,包括阿拉伯語、波斯語、烏爾都語、普什圖語、庫爾德語、維吾爾語等,最好使用 XeTeX 或 LuaTeX 排版。以下是用 babel 和 LuaTeX 的示例(瀏覽器渲染可能與編輯器不同)
\documentclass{article}
\usepackage[bidi=basic]{babel}
\babelprovide[import, main]{arabic}
\babelfont{rm}{FreeSerif}
\begin{document}
وﻗﺪ ﻋﺮﻓﺖ ﺷﺒﻪ ﺟﺰﻳﺮة اﻟﻌﺮب ﻃﻴﻠﺔ اﻟﻌﺼﺮ اﻟﻬﻴﻠﻴﻨﻲ )اﻻﻏﺮﻳﻘﻲ( ﺑـ
Arabia أو Aravia )ﺑﺎﻻﻏﺮﻳﻘﻴﺔ Αραβία (، اﺳﺘﺨﺪم اﻟﺮوﻣﺎن ﺛﻼث
ﺑﺎدﺋﺎت ﺑـ “Arabia” ﻋﻠﻰ ﺛﻼث ﻣﻨﺎﻃﻖ ﻣﻦ ﺷﺒﻪ اﻟﺠﺰﻳﺮة اﻟﻌﺮﺑﻴﺔ، إﻻ أﻧﻬﺎ
ﺣﻘﻴﻘﺔً ﻛﺎﻧﺖ أﻛﺒﺮ ﻣﻤﺎ ﺗﻌﺮف ﻋﻠﻴﻪ اﻟﻴﻮم.
\end{document}
|
使用 XeTeX,您可以設定 bidi=bidi,但混合 LR 和 RL 文字必須顯式標記。同樣適用於 polyglossia。
babel 與 LuaTeX 為基於 kashida 的阿拉伯語對齊提供部分和初步支援(使用 ARABIC TATWEEL Unicode 字元)或基於 OpenType 表格的‘對齊備選方案’(jalt).
LuaTeX 的一個替代包是 arabluatex,它是 LuaTeX 的擴充套件,基於 arabtex,下面將對其進行介紹。對於 XeTeX,則可以使用 arabxetex。
在 8 位引擎中,可以透過多種方式進行排版,其中最古老的一種是 arabtex。請將以下程式碼新增到您的前言部分
\usepackage{arabtex}
|
您可以使用羅馬化字元或原生阿拉伯指令碼編碼輸入文字。可以使用以下任何命令和環境來輸入文字
\< ... >
\RL{ ... }
\begin{arabtext} ... \end{arabtext}.
|
有關更多詳細資訊,請參閱 ArabTeX 維基百科文章。
您還可以使用 Arabi 包在 Babel 中排版阿拉伯語和波斯語
\usepackage{cmap}
\usepackage[LAE,LFE]{fontenc}
\usepackage[arabic,farsi]{babel}
|
您還可以複製並貼上來自 Arabi 生成的 PDF 檔案,這得益於 cmap 包的支援。您可以將 Arabi 與 LyX 或 tex4ht 結合使用以生成 HTML。
請參閱 CTAN 上的 Arabi 頁面
亞美尼亞語
[edit | edit source]亞美尼亞字母使用其自身的字元,這要求您安裝一個支援 Unicode 的文字編輯器,並允許您輸入 UTF-8 文字,例如 Texmaker 或 WinEdt。然後,應該將這些文字編輯器配置為使用 XeLaTeX 或 LuaLaTeX 編譯。
一旦文字編輯器設定為使用 XeLaTeX 或 LuaLaTeX 編譯,就可以使用 fontspec 包來書寫亞美尼亞語
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
|
或
\usepackage{fontspec}
\setmainfont{Sylfaen}
|
Sylfaen 字型缺乏斜體和粗體,但 DejaVu Serif 支援它們。
有關更多詳細資訊,尤其是關於如何配置支援 Unicode 的文字編輯器以使用 Unicode 引擎進行編譯,請參閱 亞美尼亞華夏公益教科書。
西裡爾字母
[edit | edit source]目前,排版西裡爾字母文字最方便的方式是使用 XeTeX 或 LuaTeX,並採用 UTF-8 編碼。以下是以這些引擎排版俄語的示例,由於所有操作都直接在該編碼中進行,因此不需要進行編碼轉換。
\documentclass{article}
\usepackage[russian]{babel}
\babelfont{rm}{DejaVu Serif}
\begin{document}
Россия, находящаяся на пересечении множества культур, а также
с учётом многонационального характера её населения, — отличается
высокой степенью этнокультурного многообразия и способностью к
межкультурному диалогу.
\end{document}
|
在非 Unicode 引擎中,對西裡爾字母的支援基於標準 LaTeX 機制以及 fontenc 和 inputenc 包。babel 包含對以下內容的支援T2*編碼,以及使用西裡爾字母排版保加利亞語、俄語和烏克蘭語文字[2](使用非 Unicode 引擎)。AMS-LaTeX 包應該在 fontenc 和 babel(Why?) 之前載入。如果您要在數學模式中使用西裡爾字母,還需要在 fontenc 之前載入 mathtext 包。
\usepackage{amsmath,amsthm,amssymb}
\usepackage{mathtext}
\usepackage[T1,T2A]{fontenc}
\usepackage[english,bulgarian,russian,ukrainian]{babel}
|
一般來說,babel 會自動選擇預設字型編碼,對於上述三種語言,預設編碼是T2A.但是,文件並不侷限於單一的字型編碼。對於使用西裡爾字母和拉丁字母語言的多語言文件,明確包含拉丁字母字型編碼是有意義的。Babel 會在文件中選擇不同的語言時,切換到相應的字型編碼。
在現代作業系統上,最好使用 Unicode (utf8 或 utf8x),而不是 KOI8-RU (koi8-ru),作為西裡爾字母文字的輸入編碼。
除了啟用連字元化、翻譯自動生成的文字字串以及啟用一些語言特定的排版規則(例如 \frenchspacing)之外,babel 還提供了一些命令,允許根據保加利亞語、俄語或烏克蘭語的標準進行排版。
對於所有三種語言,都提供了語言特定的標點符號:文字中的西裡爾字母連字元(它比拉丁字母連字元略窄,並被微小的空格包圍),直接引語中的連字元、引號以及用於簡化連字元化的命令
| 組合鍵 | 操作 |
|---|---|
"| |
在該位置沒有連字元。 |
"- |
顯式連字元,允許在單詞的其餘部分進行連字元化。 |
"--- |
純文字中的西裡爾字母 emdash。 |
"--~ |
複合名稱(姓氏)中的西裡爾字母 emdash。 |
"--* |
用於表示直接引語的西裡爾字母 emdash。 |
"" |
類似於 "-,但它不會生成連字元(用於帶連字元的複合詞,例如 x-""y 或其他一些符號,如“disable/enable”。)。 |
"~ |
沒有斷點的複合詞標記。 |
"= |
帶有斷點的複合詞標記,允許在構成詞語中進行連字元化。 |
", |
在後面的姓氏中帶有斷點的縮寫之間的細空格。 |
"‘ |
德語開頭的雙引號 (,,)。 |
"’ |
德語結尾的雙引號 (“)。 |
"< |
法語開頭的雙引號 (<<)。 |
"> |
法語結尾的雙引號 (>>)。 |
babel 的俄語和烏克蘭語選項定義了以下命令
\Asbuk
\asbuk
|
它們的用法類似於 \Alph 和 \alph(將計數器轉換為字母的命令,例如 a, b, c...),但會生成俄語或烏克蘭語字母的字母(無論哪種語言是文件的活動語言)。
babel 的保加利亞語選項提供了以下命令
\enumBul
\enumLat
\enumEng
|
它們使 \Alph 和 \alph 生成保加利亞語或拉丁語(英語)字母。對於保加利亞語語言選項,\Alph 和 \alph 的預設行為是生成保加利亞語字母的字母。
請參閱 “LaTeX 簡介(不是那麼短)” 的保加利亞語翻譯[3],瞭解使用不同發行版從鍵盤直接輸入西裡爾字母的方法。
中文
[edit | edit source]排版中文文字(以及一般來說 CJK 指令碼文字)最好使用完整的框架,例如 CJK 或 xeCJK,儘管對於短文字或少量水平排版文字,使用 XeTeX 和 LuaTeX 的 babel 就足夠了,可以進行基本的斷行。
CJK 包
[edit | edit source]得益於 CJK 包集合,可以實現對中文的支援。如果您使用的是包管理器或 portage 樹,CJK 集合通常會以單獨的包的形式存在,因為它的體積較大(主要是由於字型)。
確保您的文件使用 UTF-8 字元編碼儲存。有關更多詳細資訊,請參閱 特殊字元。將您要寫中文字元的部分放在 CJK 環境中。
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
你好
You can mix Latin letters and Chinese.
\end{CJK}
\end{document}
|
最後一個引數指定字型。它必須適合所需的語言,因為中文、日文和韓文的字型是不同的。中文的可能選擇包括
- gbsn (簡體宋體, simplified Chinese)
- gkai (簡體楷體, simplified Chinese)
- bsmi (繁體細上海宋體, traditional Chinese)
- bkai (繁體標楷體, traditional Chinese)
在 CTeX 發行版(已過時)中,還包含了六種簡體中文字型,對應於 Windows 預設字型
- song (宋體, Simsun)
- hei (黑體, Simhei)
- fang (仿宋, STFangSong)
- kai (楷體, STKaiti)
- li (隸書, SimLi)
- you (幼圓, SimYou)
xeCJK 包
[edit | edit source]使用 XeTeX 引擎時,還有一個名為 xeCJK 的包,它基於 fontspec 並提供與 CJK 包類似的介面。
使用該包時,可以像這樣定義 CJK 字型
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{FZSSK.ttf} % use Foundertype's Chinese font, which has a free license
\begin{document}
你好
You can still mix Latin letters and Chinese!
\end{document}
|
捷克語使用
\usepackage[czech]{babel}
|
UTF-8 允許您在文字中直接使用 “捷克語引號”。否則,可以使用宏 \clqq 和 \crqq 來生成左引號和右引號。您可以將引號文字放在 \uv 中。
雖然帶重音符號的捷克字母顯示正確,但它們無法在使用 pdfLaTeX 僅使用上述命令生成的 PDF 檔案中複製或搜尋。使用 cmap 包可以解決某些字型的這個問題,對於其他字型,還需要使用 glyphtounicode 命令。
| 字型 | (無額外命令) | \usepackage{cmap}
|
\usepackage[resetfonts]{cmap}
|
\usepackage{cmap}
\input{glyphtounicode}
\pdfgentounicode=1
|
|---|---|---|---|---|
\usepackage{lmodern}
|
ešcržýáíédtnúuŠCRŽÁÚ | ěščřžýáíéďťňúůŠČŘŽÁÚ | ěščřžýáíéďťňúůŠČŘŽÁÚ | ěščřžýáíéďťňúůŠČŘŽÁÚ |
\usepackage{ebgaramond}
|
ešcržýáíédtnúuŠCRŽÁÚ | ešcržýáíédtnúuŠCRŽÁÚ | ešcržýáíédtnúuŠCRŽÁÚ | ěščřžýáíéďťňúůŠČŘŽÁÚ |
天城文被許多語言使用,包括馬拉地語、巴利語、梵語、印地語、尼泊爾語、博多語、孔卡尼語、梵語。以下是使用 babel 的印地語示例,適用於 XeTeX 和 LuaTeX
\documentclass{article}
\usepackage[hindi, provide=*]{babel}
\babelfont{rm}{FreeSerif}
\begin{document}
देवनागरी एक भारतीय लिपि है जिसमें अनेक भारतीय भाषाएँ तथा कई विदेशी
भाषाएँ लिखी जाती हैं।
\end{document}
|
其他印度語系文字的設定類似(馬拉雅拉姆語、孟加拉語、僧伽羅語、泰盧固語、泰米爾語、卡納達語、阿薩姆語、旁遮普語等)。
如果需要任何其他功能,您需要使用替代方法,如下面的孟加拉語示例所示,該示例設定了選項mapdigits用於將阿拉伯數字轉換為本地數字(僅限 LuaTeX)。
\documentclass{article}
\usepackage{babel}
\babelprovide[import, main, mapdigits]{bengali}
\babelfont{rm}{FreeSerif}
\begin{document}
গাইতে গাইতে গায়েন।
\end{document}
|
在 XeTeX 中,數字對映是在字型級別完成的,使用選項Mapping=,例如
\babelfont{rm}[Mapping=bengalidigits]{FreeSerif}
|
這實際上是 XeTeX 的功能,不需要 babel。它可以直接與 fontspec 一起使用。
pdfTeX 中的支援主要基於 velthuis 包。XeTeX 的替代方案是 latexbangla,它依賴於 polyglossia。
芬蘭語斷詞使用以下命令啟用
\usepackage[finnish]{babel}
|
這也會自動將文件語言(章節名稱等)更改為芬蘭語。
從 babel-french 3.0 版本開始,建議使用以下命令選擇語言作為全域性選項[4]
\documentclass[french]{article}
\usepackage{babel}
|
以前,您可以使用以下命令載入法語支援
\usepackage[frenchb]{babel}
|
或
\usepackage[francais]{babel}
|
根據法語的種類,排版法語文件有多種選擇:french 用於巴黎法語,而 acadian 和 canadien 用於新世界法語。如果您不知道或不關心,我們建議使用 french。
所有這些都啟用法語斷詞,前提是您已相應地配置了 LaTeX 系統。所有這些也會將所有自動文字更改為法語:\chapter 輸出 Chapitre,\today 輸出當前日期的法語形式等等。還提供了一組新命令,可以讓您更輕鬆地編寫法語輸入檔案。檢視以下表格以獲取靈感
| 輸入程式碼 | 渲染輸出 |
|---|---|
| \og guillemets \fg{} | « guillemets » |
| M\up{me}, D\up{r} | Mme, Dr |
| 1\ier{}, 1\iere{}, 1\ieres{} | 1er, 1re, 1res |
| 2\ieme{} 4\iemes{} | 2e 4es |
| \No 1, \no 2 | N° 1, n° 2 |
| 20~\degres C, 45\degres | 20 °C, 45° |
| M. \bsc{Durand} | M. Durand |
| \nombre{1234,56789} | 1 234,567 89 |
如果您鍵盤上有法語字元,您可能希望直接排版引號和其他法語字元。執行 Xorg (*BSD 和 GNU/Linux),您可能希望使用oss變體,它提供了一些很好的快捷鍵,例如
| 組合鍵 | 字元 |
|---|---|
| Alt Gr + w | « |
| Alt Gr + x | » |
| Alt Gr + Shift + é | É |
| Alt Gr + Shift + è | È |
| Alt Gr + Shift + ç | Ç |
您需要 T1 字型編碼才能正確列印引號。
對於度數符號,您會收到類似的錯誤
! Package inputenc Error: Unicode char \u8:° not set up for use with LaTeX.
textcomp 包可以為您解決這個問題。
Babel 在法語中的最大優勢在於它可以為您處理法語排版中的某些元素,特別是所有兩部分標點符號之前的非換行空格。所以現在您可以寫
Il répondit: «Ce pain coûte-t-il 2~€?»
|
歐元符號之前的非換行空格仍然是必要的,因為貨幣符號和其他單位通常不受支援(這並非法語特有的)。
您可以將 numprint 包與 Babel 一起使用。它可以讓您以法語方式列印數字。
\usepackage[french]{babel}
\usepackage[autolanguage]{numprint} % Must be loaded *after* babel.
% ...
\nombre{123456.123456 e-17}
|
|
您還會注意到,當切換到法語時,列表的佈局會發生變化。可以使用 \frenchsetup 命令對其進行自定義。有關 french 選項在 babel 中的作用以及如何自定義其行為的更多資訊,請在檔案上執行 LaTeXfrenchb.dtx並閱讀生成的frenchb.pdf或frenchb.dvi檔案。您可以在 CTAN 上獲取 PDF 版本。
您可以使用以下兩個命令中的 任何一個 載入德語支援(支援 pdfTeX、XeTeX 和 LuaTeX)。
對於傳統(“舊”)德語正字法,使用
\usepackage[german]{babel}
|
或對於改革(“新”)德語正字法,使用
\usepackage[ngerman]{babel}
|
這將啟用德語斷詞,前提是您已相應地配置了 LaTeX 系統。它還會將所有自動文字更改為德語,例如“Chapter”將變為“Kapitel”。還提供了一組新命令,可以讓您更快速地編寫德語輸入檔案,即使您沒有使用 inputenc 包。檢視以下表格以獲取靈感。使用 inputenc,所有這些都會變得無關緊要,但您的文字也會被鎖定在特定的編碼世界中。
| "A "O "U | Ä Ö Ü |
| "a "o "u "s | ä ö ü ß |
| "`或\glqq | „ |
| "'或\grqq | “ |
| \glq \grq | |
| "<或\flqq | « |
| ">或\frqq | » |
| \flq \frq | ‹ › |
| \dq | " |
在德語書籍中,您有時會看到法語引號(«guillemets»). 然而,德語排版人員使用它們的方式不同。德語書籍中的引號看起來像 »this«. 在瑞士德語區,排版人員使用 «guillemets» 的方式與法語相同。使用類似 \flq 的命令會產生一個主要問題:如果您使用 OT1 字型編碼(預設編碼),引號會看起來像數學符號 "",這會讓排版人員反胃。另一方面,T1 編碼的字型確實包含所需的符號。因此,如果您使用此類引號,請確保使用 T1 編碼。
小數通常必須寫成0{,}5(而不僅僅是 0,5)。像ziffer啟用像這樣的輸入0,5或者,可以使用來自babel的\num命令,並(全域性)使用以下方法設定小數點標記
\usepackage[output-decimal-marker={,}]{siunitx}
% ...
\num{0,5}
|
|
這是你需要用希臘語編寫的序言。
\usepackage[greek]{babel}
|
此序言啟用連字元化並將所有自動文字更改為希臘語。還提供了一組新命令,允許你更輕鬆地編寫希臘語輸入檔案。
支援現代單調希臘語、多音調希臘語和古代希臘語。
如果你需要拉丁字母的語言,並且你使用的是 LuaTeX,你可以透過以下方式自動切換字型,而無需顯式標記
\documentclass{book}
\usepackage[portuguese, greek]{babel}
\babelprovide[onchar=ids fonts]{portuguese}
\babelfont{rm}{FreeSerif}
\babelfont[portuguese]{rm}{DejaVu Sans}
\begin{document}
abelha -- μελισσα
\end{document}
|
有一個專門針對 XeTeX 的包名為 xgreek。
使用以下幾行
\usepackage[magyar]{babel}
|
更多資訊匈牙利語。
以下幾行可以新增到冰島語文字中
\usepackage[icelandic]{babel}
|
這會將類似於 Part 的文字更改為 Hluti。它使其他命令可用
| "`或\glqq | „ |
| \grqq | “ |
| \TH | Þ |
| \th | þ |
| \DH | Ð |
| \dh | ð |
要使 Þ 和 Æ 等特殊字元可用,只需新增
\usepackage[T1]{fontenc}
|
預設的 LATEX 字型編碼是 OT1,但它只包含 128 個字元。T1 編碼包含使用拉丁字母的大多數歐洲語言的字母和標點符號。
LaTeX 很好地支援義大利語。只需新增
\usepackage[italian]{babel}
|
在你的文件開頭,所有命令的輸出將被正確翻譯。
LaTeX 很好地支援挪威語。只需新增
\usepackage[norsk]{babel}
|
在你的文件開頭,所有命令的輸出將被正確翻譯。
該包為 LuaTeX-ja / pLaTeX / upLaTeX 提供類檔案和 JFM(日語字型度量)檔案。這旨在實施日語文字佈局要求。
TeX 有一個針對日語的變體,稱為 upTeX,它支援垂直排版。
在日語中寫作的另一種方法是使用 Lualatex 和 luatex-ja 包。來自 Luatexja 文件的修改示例
\documentclass{ltjsarticle}
\usepackage{luatexja} % This line is unnecessary when using ltjclasses or ltjsclasses.
\begin{document}
\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな?
\subsection{出たかな?}
長い文章を入力するとちゃんと右端のところで折り返されるかな?
大丈夫そうな気がするけど.ちょっと不安だけど何事も挑戦だよね.
\end{document}
|
你也可以使用 fontspec 包提供的功能以及 luatexja-fontspec 提供的功能來宣告要在你的論文中使用的字型。讓我們舉個例子
% **********************************
% Basic setup
\documentclass[10pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont[Numbers={OldStyle,Proportional}]{Arno Pro} %setup of western font
\usepackage{luatexja}
\usepackage{luatexja-fontspec}%needed to call \setmainjfont bellow
\setmainjfont[BoldFont=KozGoPr6N-Bold]{KozGoPr6N-Regular} %setup of japanese font
%***********************************
\begin{document}
It is a test to show japanese and english mix. テスト中です。どうですか皆さん。
\end{document}
|
使用 UTF-8 作為你的編碼。如果你不知道如何做到這一點,請檢視 Texmaker,一個預設使用 UTF-8 的 LaTeX 編輯器。
luatex-ja 可以與 babel 協作。例如
\documentclass{ltjbook}
\usepackage[ngerman,japanese]{babel}
|
對於其他語言文件中的簡短日語文字(幾個單詞或幾段),babel(≥3.31)與 luatex 應該就足夠了;例如
\usepackage[ngerman]{babel}
\babelprovide[import]{japanese}
\babelfont[japanese]{rm}{IPAMincho}
|
為了使 hyperref 包正確顯示目錄,必須明確指定編碼。
\usepackage[unicode=true]{hyperref}
|
另一個(但很舊)的日語支援是透過 CJK 或 XeCJK 包集合提供的。如果你使用的是包管理器或 portage 樹,CJK 集合通常在單獨的包中,因為它的體積很大(主要是由於字型)。
確保你的文件使用 UTF-8 字元編碼儲存。有關更多詳細資訊,請參閱特殊字元。將要編寫日語字元的部分放在 CJK 環境中。
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{min}
こんにちは
You can mix latin letters as well as hiragana, katakana and kanji.
\end{CJK}
\end{document}
|
最後一個引數指定字型。它必須適合所需的語言,因為字型在中文、日文和韓文之間是不同的。 min 是日語的示例。
該 bxcjkjatype 包提供 CJK 包的工作配置,適合中等質量的日語排版。此外,它還透過提供類似於 pLATEX 核心和與它一起使用的其他一些包所使用的命令來方便 pLATEX 使用者使用 CJK 包。
\documentclass[pdflatex,ja=standard]{bxjsarticle}
\begin{document}
吾輩は貓である。名前はまだ無い。
どこで生れたかとんと見當がつかぬ。
何でも薄暗いじめじめした所で
ニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。
\end{document}
|
韓語文字檔案最常用的兩種編碼是 EUC-KR 及其在韓國 MS-Windows 中使用的向上相容擴充套件,CP949/Windows-949/UHC。在這些編碼中,每個 US-ASCII 字元都代表其正常的 ASCII 字元,類似於其他與 ASCII 相容的編碼,例如 ISO-8859-x、EUC-JP、Big5 或 Shift_JIS。另一方面,韓語音節、韓字(漢語字元在韓國使用)、韓語字母、平假名、片假名、希臘語和西裡爾字母以及從 KS X 1001 中提取的其他符號和字母由兩個連續的八位位元組表示。第一個的 MSB 設定為 1。直到 1990 年代中期,在非本地化(非韓語)作業系統下建立一個支援韓語的環境需要花費大量時間和精力。你可以瀏覽一下現在已經過時的 http://jshin.net/faq,以瞭解 1990 年代中期在非韓語作業系統下使用韓語的情況。
TeX 和 LaTeX 最初是為字母表中不超過 256 個字元的指令碼編寫的。為了使它們適用於具有更多字元的語言,例如韓語或中文,開發了一種子字型機制。它將具有數千或數萬個字形的單個 CJK 字型劃分為一組每個包含 256 個字形的子字型。
對於韓語,有三個常用的包。
- UN Koaunghi 的 HLATEX
- CHA Jaechoon 的 hLATEXp
- Werner Lemberg 的 CJK 包
HLATEX 和 hLATEXp 專門針對韓語,並在字型支援之上提供韓語本地化。它們都可以處理以 EUC-KR 編碼的韓語輸入文字檔案。HLATEX 甚至可以處理以 CP949/Windows-949/UHC 和 UTF-8 編碼的輸入檔案,前提是在使用 Λ、Ω 的情況下。
CJK 包不特定於韓語。它可以處理以 UTF-8 以及各種 CJK 編碼(包括 EUC-KR 和 CP949/Windows-949/UHC)編碼的輸入檔案,它可以用於排版包含多種語言內容(尤其是中文、日文和韓文)的文件。CJK 包沒有像 HLATEX 提供的韓語本地化,並且它不像 HLATEX 那樣附帶那麼多韓語特殊字型。
使用 TeX 和 LaTeX 等排版程式的最終目的是以美觀的方式排版文件。可以說,排版中最重要的一點是使用一組設計良好的字型。HLATEX 發行版包含 10 個不同系列的 UHC PostScript 字型和 5 個不同系列的 Munhwabu 字型(TrueType)。CJK 包使用早期版本的 HLATEX 使用的一組字型,並且它可以使用 Bitstream 的 cyberbit True-Type 字型。
要使用 HLATEX 包排版你的韓語文字,請將以下宣告新增到你的文件的序言中
\usepackage{hangul}
|
此命令開啟韓語本地化功能。章節、節、小節、目錄和圖表目錄的標題將全部翻譯成韓語,文件格式也將更改為符合韓語規範。該包還提供自動語尾選擇功能。在韓語中,存在語法上等價但形式不同的字尾語尾對。在給定語尾對中,哪個語尾正確取決於前一個音節是否以母音或子音結尾。(實際情況比這複雜一些,但這足以讓您瞭解基本情況。)韓語母語人士不會遇到選擇正確語尾的問題,但對於引用和其他在您編輯文件時會更改的自動文字,無法確定使用哪個語尾。每次新增/刪除引用,或只是調整文件部分時,手動新增適當的語尾非常繁瑣,而且容易出錯。HLATEX 為其使用者免除了這個無聊且容易出錯的過程。
如果您不需要韓語本地化功能,但只需要排版韓語文字,則可以在前言中新增以下行。
\usepackage{hfont}
|
有關使用 HLATEX 排版韓語的更多詳細資訊,請參閱 HLATEX 指南。檢視韓國 TeX 使用者組 (KTUG)的網站。
在 KTUG 的常見問題解答部分,建議使用 kotex 包
\usepackage{kotex}
|
對於波斯語,有一個名為 XePersian 的專用包,它使用 XeLaTeX 作為排版引擎。只需將以下程式碼新增到您的前言中即可
\usepackage{xepersian}
|
此外,阿拉伯語指令碼可以用於輸入波斯語,如相關部分所示。
如果您計劃在編碼的文件中使用波蘭語,請使用以下程式碼
\usepackage{polski}
\usepackage[polish]{babel}
|
上述程式碼僅允許使用波蘭語字母並將自動文字翻譯成波蘭語,以便“chapter”變為“rozdział”。還需要記住一些其他事項。
波蘭語有很多單字母連詞:“a”、“o”、“w”、“i”、“u”、“z”等,語法和排版規則不允許它們出現在列印行的末尾。為了確保 LaTeX 不會將它們設定為行中的最後一個字母,您必須使用不可分割空格
Noc była sierpniowa, ciepła i~słodka, Księżyc oświecał srebrnem światłem wgłębienie, tak,
że twarze małego rycerza i~Basi były skąpane w blasku.
Poniżej, na podwórzu zamkowem, widać było uśpione kupy żołnierzy, a~także i~ciała zabitych
podczas dziennej strzelaniny, bo nie znaleziono dotąd czasu na ich pogrzebanie.
|
帶有 LuaTeX 的 Babel(>=3.58)為此目的提供了一個轉換,無需顯式標記,它由以下程式碼啟用
\babelprovide[transforms = oneletter.nobreak]{polish}
|
根據波蘭語語法規則,您必須在章節、節、小節等的標題中的數字之後新增點。
這是透過重新定義一些 LaTeX 宏來實現的。
對於書籍
\renewcommand\thechapter{\arabic{chapter}.}
\renewcommand\thesection{\arabic{chapter}.\arabic{section}.}
\renewcommand\thesubsection{\arabic{chapter}.\arabic{section}.\arabic{subsection}.}
\renewcommand\thesubsubsection{\arabic{chapter}.\arabic{section}.\arabic{subsection}.\arabic{subsubsection}.}
|
對於文章
\renewcommand\thesection{\arabic{section}.}
\renewcommand\thesubsection{\arabic{section}.\arabic{subsection}.}
\renewcommand\thesubsubsection{\arabic{section}.\arabic{subsection}.\arabic{subsubsection}.}
|
或者,您可以使用專用文件類
- 使用 mwart 類代替 article,
- 使用 mwbk 類代替 book
- 以及使用 mwrep 類代替 report。
這些類具有更多歐洲排版設定,但不需要使用波蘭語 babel 設定或字元編碼。
簡單用法
\documentclass{mwart}
\usepackage[polish]{babel}
\usepackage{polski}
\begin{document}
Pójdź kińże tę chmurność w głąb flaszy.
\end{document}
|
這些類的完整文件可在http://web.archive.org/web/20040609034031/http://www.ci.pwr.wroc.pl/~pmazur/LaTeX/mwclsdoc.pdf(波蘭語)獲得。
縮排節和章節中的第一段可能很常見(取決於出版商)。
\usepackage{indentfirst}
|
與美式排版中常見的做法相比,在頁面之間使用連字元化來設定頁面會更加不受歡迎。
要調整跨頁連字元化的懲罰,請使用以下命令
\brokenpenalty=1000
|
要調整留下寡婦行和孤兒行(TeX 術語中的俱樂部)的懲罰,請使用以下命令
\clubpenalty=1000
\widowpenalty=1000
|
根據一些排版規則,數字的小數部分應該用逗號分隔,而不是點。要讓 LaTeX 在數學模式下不插入逗號後面的額外空格(除非逗號後面有空格),請使用 icomma 包。
\usepackage{icomma}
|
不幸的是,它與 dcolumn 包部分不相容。您需要在原始檔中對包含數字資料的列使用點,並讓 dcolumn 將其轉換為逗號以進行顯示或將列定義如下
\begin{tabular}{... D{,}{\mathord\mathcomma}{2} ...}
|
另一種選擇是使用 numprint 包,但它很不方便。
另一種選擇是使用 siunitx 包,它允許您一致地排版數字及其相應的單位。它支援表中的數字對齊和不同的輸出模式。
有關波蘭語語法和排版規則的更多資訊,請參閱波蘭語拼寫詞典。
可在波蘭語文字排版規則中找到良好的摘錄。
將以下程式碼新增到您的前言中
\usepackage[portuguese]{babel}
|
您可以透過選擇 brazilian 或 brazil 來將語言替換為巴西葡萄牙語。
當斯洛伐克語的設定與捷克語相同,則基本設定就可以了,但是斯洛伐克語需要特殊的符號表示“ď”、“ť”、“ľ”。為了能夠從鍵盤輸入這些符號,請使用以下設定
\usepackage[slovak]{babel}
\usepackage[T1]{fontenc}
|
包括適當的 Babel 選項
\usepackage[spanish]{babel}
|
訣竅是西班牙語有多個選項和命令來控制佈局。這些選項可以在呼叫 Babel 時載入,也可以在呼叫之前載入,方法是定義命令 \spanishoptions。因此,以下命令大致等價
\def\spanishoptions{mexico}
\usepackage[spanish]{babel}
|
\usepackage[spanish,mexico]{babel}
|
一般來說,應該優先使用前一種語法,因為後一種語法不被一些與 LaTeX 互動的程式(LyX、latex2rtf)識別。
西班牙語還為點和 << >> 定義了簡寫,以便將它們用作邏輯標記:前者用作數學模式中的小數點,輸出通常是逗號或點;後者用作引用文字,輸出通常是 «» 或 “”。這允許使用相同的輸入獲得不同的排版約定,因為人們的偏好可能與西班牙和墨西哥等地方有很大差異。
兩個特別有用的選項是 es-noquoting,es-nolists:一些包和類在處理活動字元時,已知會與西班牙語發生衝突,這些選項會停用西班牙語的內部工作機制,以便您克服這些常見的陷阱。此外,這些選項可以簡化 LyX 從 GUI 中自定義西班牙語佈局某些功能的方式。
選項 mexico,mexico-com 提供了對墨西哥本地習俗的支援:前者使用小數點,這是習慣用法,後者允許使用小數逗號,這是墨西哥經濟部(NOM)以前在食品和商品標籤中要求的規範。更多本地化正在製作中。
其他命令在載入 Babel 後修改了西班牙語佈局。兩個特別有用的命令是 \spanishoperators 和 \spanishdeactivate。
宏 \spanishoperators{<運算子列表>}{ 包含西班牙語數學運算子的列表,可以隨意重新定義。例如,命令
\def\spanishoperators{sen}
|
僅定義 sen,覆蓋所有其他定義;命令 \let\spanishoperators\relax 停用它們全部。此命令支援帶重音或空格的運算子: \acute{<字母>} 命令新增重音, \, 命令新增一個小空格。例如,以下運算子預設定義。
l\acute{i}m l\acute{i}m\,sup l\acute{i}m\,inf m\acute{a}x
\acute{i}nf m\acute{i}n sen tg arc\,sen arc\,cos arc\,tg
cotg cosec senh tgh
|
最後,宏 \spanishdeactivate{<字元列表>} 停用了一些活動字元,以防止其他包重新定義它們時出現問題。停用的候選者是集合 {<>."'}. 請注意,一些選項會優先使用某些活動字元。特別是,您不應該將 es-noquoting 選項與 \spanishdeactivate{<>} 結合使用,或者將 es-noshorthands 與 \spanishdeactivate{<>."} 結合使用。
請檢視 Babel 或spanish.dtx的文件以獲取更多詳細資訊。
babel(luatex 和 xetex)和 polyglossia(僅 xetex)都支援泰語。luatex 中的單詞分割基於標準的連字元化機制,因此可以透過 \babelpatterns 修改模式,而 xetex 則依賴於其自己的內建機制。在 pdftex 中,您需要使用外部工具進行單詞分割(如 swath)。babel(luatex 和 xetex)的一個示例是
\documentclass{book}
\usepackage{babel}
\babelprovide[main, import]{thai}
\babelfont{rm}{FreeSerif}
\begin{document}
ปัจจุบันข้าวและพริกเป็นส่วนประกอบสำคัญที่สุดของอาหารไทย
\end{document}
|
在 LaTeX 中使用藏文字型的一種方法是在您的前言中新增
\usepackage{ctib}
|
並使用略微修改的威利轉寫進行輸入。有關詳細資訊,請參閱出色的包文件。更多資訊可以在 [1] 中找到。
`babel` 對於 `luatex` 提供了對帶尾隨tshegs的對齊的支援。[2]
以下前言可用於直接輸入越南語(xetex 或 luatex)。
\documentclass{article}
\usepackage{fontspec}%
\setmainfont[Ligatures=TeX]{Linux Libertine O}
|
對於用這種語言編寫的文件
\documentclass{article}
\usepackage[vietnamese]{babel}
|
- ↑ Babel:用於本地化 LaTeX、LuaLaTeX、XeLaTeX 的多語言框架
- ↑ LaTeX 不完全指南,2.5.6 西裡爾字母支援,Maksym Polyakov
- ↑ LaTeX 不完全指南,保加利亞語翻譯
- ↑ babel-french 文件:“法語現在應該載入為 french,而不是 frenchb 或 francais,最好是作為
\documentclass的全域性選項。在 v3.0 中仍然存在一些容忍度,但不要依賴它。”
