多语言

文档并不总是只有日文和英文。法语、德语、俄语、希腊语、阿拉伯语……每种语言都有自己的断字、文档字符串(“Chapter” ↔ “Chapitre”)和排版规则。LaTeX 通过 babel(适用于所有引擎)或 polyglossia(面向 Unicode 引擎)处理这些内容,右到左文字还会加入 bidi

babel 与 polyglossia

babel(Johannes Braams 编写)是经典选择,同时支持 pdfLaTeX、XeLaTeX 和 LuaLaTeX。语言通过宏包选项声明(最后一个是主语言),整块文本用 \selectlanguage{...} 切换,行内文本用 \foreignlanguage{lang}{...} 切换。它会启用相应的 断字,翻译文档字符串,并应用语言特有排版(例如法语在 ; : ! ? 前的细空格)。它仍在积极开发,即使在 Unicode 引擎上也是默认选择。

latex
% babel:最後の言語がメイン / last language is the main one
\usepackage[russian,french,english]{babel}
...
\foreignlanguage{french}{Bonjour !}

polyglossia 是面向 XeLaTeX/LuaLaTeX 的替代方案,适合系统字体和复杂文字系统。用 \setmainlanguage{...} / \setotherlanguage{...} 声明语言(副语言必须显式声明),并用 \textarabic{...} 这样的 \text<lang> 命令切换。

双向文本 — RTL

阿拉伯语、希伯来语、波斯语等 从右到左(RTL) 的文字应在 Unicode 引擎中处理。bidi 宏包(用于 XeTeX/LuaTeX)控制方向:\setRTL/\setRL 设为右到左段落,\setLTR/\setLR 设为左到右。XeTeX 下 babel 和 polyglossia 都依赖 bidi,LR 和 RL 混排处需要 显式标记。对于正式的双向排版,推荐 LuaLaTeX:LuaTeX 上的 babel 使用 Unicode 算法自动判定方向,并反转表格、边距等布局。

latex
% XeTeX / LuaTeX
\usepackage{bidi}
\setRTL   % 以降を右→左に / switch to right-to-left

按语言的支持

babel/polyglossia 覆盖许多语言:法语、德语、意大利语、西班牙语、葡萄牙语、俄语、希腊语、阿拉伯语、中文、韩文等。它们会加入断字、文档字符串和各语言惯例。非拉丁文字(俄语/西里尔、希腊语、阿拉伯语)需要 合适的字体:最简单的是 XeLaTeX/LuaLaTeX + 系统字体(fontspec);pdfLaTeX 下要配合正确的 fontenc(西里尔用 T2A,希腊语用 LGR)。CJK 请参见专页。

  • 大多数情况babel(所有引擎可用,开发活跃)。
  • XeLaTeX/LuaLaTeX 上的复杂文字/系统字体polyglossia 也可以。
  • RTL(阿拉伯语、希伯来语)LuaLaTeX + babel(自动双向处理)。
  • 日文 / CJK → 专用路线(见“日文排版方法”“CJK”)。