1. 程式人生 > >Latex中使用中文

Latex中使用中文

編碼

使用任何一種語言,Latex都必須處理兩個基本問題:
- 將輸入位元組對映為所使用語言的字元
- 將字元對映為所使用字型的字形

使用xelatex可以幫助我們處理這些問題。對於xelatex,輸入檔案預設為UTF-8格式,引擎自動將字元對映為TrueType或OpenType字型的字形。當然,我們必須保證所使用的字型支援所用語言。

當是使用Latex或pdflatex時,必須告訴Latex輸入檔案的編碼格式。一般來說,UTF-8是最好的輸入編碼方式,可以使用下面的方式設定

\usepackage[utf8]{inputenc}

我們還要指定使用什麼樣的輸出編碼方式將字元對映為字型中的字形,對於大部分啦拉丁語系的語言,可使用T1輸出編碼。使用如下方式設定

\usepackage[T1]{fontenc}

但對於其他語言,必須指定特定的編碼方式。xeCJK包提供了很好的中文支援,

\usepackage{xeCJK}

國際化的語言支援

當前有兩個可以提供國際化的語言支援,即Polyglossia和Babel。Polyglossia主要和XeTex一起使用,Babel和pdfTex、LuaTex一起使用。這兩個包完成下列任務:

  • 載入語言特定的連詞符號模式和其他排版約定
  • 設定當前字型的指令碼(script)和語言標籤(language tags)。
  • 不同語言的字型間切換
  • 根據語言的約定格式化日期
  • 根據語言特定的數字系統,格式化數字

Polyglossia

當使用XeLatex 和 LuaLatex時,polyglossia提供了國際化支援。使用這個包,可以指定使用的語言和語言特定的選項。例如,文件中包含了美國英語和法語,可以使用下面的設定

\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\setotherlanguage{french}

Babel

當使用latex或pdflatex時,babel包可提供國際化支援。這個包也可以用於LuaLatex和XeLaTex。可以在包引數中指定語言。

\usepackage[language]{babel}

這個包應該緊跟在\documentclass ,使後面載入的包能夠知道你所所以用的語言。載入babel包時可以指定多種語言

\usepackage[languageA, languageB]{babel}

引數列表中的最後一種語言是當前啟用的語言。可以使用命令改變當前啟用語言

\selectlanguage{languageA}

當文件中包含多種語言時,可以使用babel提供的命令方便地在不同語言間切換。babel提供了定義語言名字的方式

\babeltags{de = german}

文件可以寫為

text \textde{German text} text
\begin{de}
German text
\end{de}

使用xeCJK

xeCJK主要功能包括:
- 分別設定CJK和英文字型
- 自動忽略中文文字間的空格而保留其他空格,允許在非標點漢字和英文字母間斷行
- 調整中英文間的空白
xeCJK包提供了許多選項,可以在呼叫巨集包時直接設定,也可以使用\xeCJKsetup 設定這些選項。xeCJK內部使用fontspec巨集包,在呼叫xeCJK巨集包時,也可以使用fontspec巨集包中的選項。

載入xeCJK包之後,只要設定CJK文字的字型,就可以使用中文了。例如,中文字型要使用SimSun(宋體)。這裡,假設系統安裝了需要的字型。

\usepackage{xeCJK}
\setCJKmainfont{SimSum}

使用字型

字型族(font families)有很多,如Times, Courier, Helvetica。它們一般可以分為三類:serif, sans serif 和 monospaced。在Latex中,分別用簡寫rm, sf, tt表示。

字型族通常包含不同的風格,如斜體(italic)或加粗(bold)。

  • \setmainfont{} 設定西文正文預設羅馬類字型。在Word中,預設字型通常是”Times New Roman”。
  • setsansfont{} 設定西文預設無襯線字型。一般出現在大標題等顯眼的位置。這一部分常見的字型是Helvetica/Arial。
  • \setmonofont{} 設定西文預設等寬字型,一般用於排版程式程式碼。常見的字型是Courier或者Courier New。

xeCJK中提供了相似的三個命令設定對應的中文字型:

  • \setCJKmainfont[BoldFont={}, ItalicFont={}]{} 設定中文正文羅馬類字型。大部分中文文件使用宋體排版 ,實際上就是Simsun。Linux下可能用文鼎宋體代替。與西文不同的是,這裡允許我們指定粗體和斜體使用何種字型代替。之所以有這個區別,是因為中文不使用粗體表示強調,也不使用斜體表示引文或書名號。可指定BoldFont 和 ItalicFont 為某種黑體,Windows 環境下用SimHei,Linux 下用文泉驛正黑避免版權問題。
  • \setCJKsansfont{} 設定中文正文無襯線的CJK字型,影響\sffamily\textsf的字型。可以設為宋體。
  • setCKJmonofont{} 設定中文正文等寬族的CJK字型,影響\ttfamily\texttt的字型。可以設為宋體。

CTex工具集

xeCJK包僅提供的中文字型。中文文件的排版習慣和英文文件不同。為了排版中文文件,使用CTex工具集是最方便的方法。CTex的使用方法可以參考其文件。