文書は日本語と英語だけとは限りません。フランス語・ドイツ語・ロシア語・ギリシャ語・アラビア語……それぞれにハイフネーション、見出し語(「Chapter」↔「Chapitre」)、固有の組版規則があります。LaTeX はこれを babel(全エンジン対応)か polyglossia(Unicode エンジン向け)で扱い、右横書きには bidi が加わります。
babel と polyglossia
babel(Johannes Braams 作)は定番で、pdfLaTeX・XeLaTeX・LuaLaTeX のすべて に対応します。言語はパッケージオプションで宣言し(最後がメイン言語)、ブロックは \selectlanguage{...}、文中は \foreignlanguage{言語}{...} で切り替えます。選んだ言語に応じて ハイフネーション を有効化し、見出し語を翻訳し、言語固有の組版(たとえばフランス語の ; : ! ? 前の細い空き)を適用します。開発が活発で、Unicode エンジンでも既定の選択肢です。
% babel:最後の言語がメイン / last language is the main one
\usepackage[russian,french,english]{babel}
...
\foreignlanguage{french}{Bonjour !}polyglossia は XeLaTeX/LuaLaTeX 向け の代替で、システムフォントや複雑なスクリプトに向きます。\setmainlanguage{...}・\setotherlanguage{...} で言語を宣言し(副言語は明示が必要)、\textarabic{...} のような \text<言語> で切り替えます。
双方向テキスト — RTL
アラビア語・ヘブライ語・ペルシア語などの 右横書き(RTL) は、Unicode エンジンで扱います。bidi パッケージ(XeTeX/LuaTeX 用)が方向を制御し、\setRTL/\setRL で右→左の段落、\setLTR/\setLR で左→右の段落にします。XeTeX では babel・polyglossia ともこの bidi に依存し、LR と RL が混在する箇所は 明示的なマークアップ が必要です。本格的な双方向組版には LuaLaTeX が推奨 です——LuaTeX 上の babel は Unicode のアルゴリズムで方向を自動判定し、表や余白といったレイアウトも反転させます。
% 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」)。