有沒有簡單的LaTeX多語言支持方案?

萌新一枚,半年前臨時抱佛腳學了LaTeX。一基友準備去某國留學,叫我幫忙處理他的含有中、英、俄和希臘語的申請書(不多不少,4頁紙)(我也不知道為毛申請書用了四種語言)。他原來用Word寫,但校方只收LaTeX。

那麼問題來了:用XeLaTeX編譯,無論是documentclass[UTF8]{ctexart},documentclass{article}+usepackage{xeCJK},還是documentclass{article}+usepackage{ctex},編譯的結果都是無法顯示俄語和大部分希臘語。


哎,為什麼不多搜索一下呢……發一篇翻新過的舊文章在這裡吧。原文地址:在 LaTeX 中輸出多國語言

在 LaTeX 中輸出英文之外的其他字元總是不那麼自然,需要一些折騰。例如讓 LaTeX 輸出中文就走過了天元、CCT、CJK、xeCJK 這些路子。

以現在(2017-09)來說,在 LaTeX 中混排中英雙語已經不是什麼難事,只需要使用 xeCJK 宏包或者 CTeX 宏集即可。但若是想要在一篇文檔里排版多語言,則很多人就不知道怎麼辦了。

需要解決的問題

在 LaTeX 中輸入多國語言,主要來說,現代的方案就是要解決三件事情:

  • 使用一個包含文檔所需所有字元的編碼方案;
  • 使 TeX 支持選定的編碼方案;
  • 選取合適的字體。

對於編碼來說,使用 Unicode 字符集對應的編碼方案自然是最簡單的。當然,語言本國人自己使用的話,也可能會使用當地的編碼(例如俄羅斯人的話可能會使用 CP1251)。若是要同時使用多國語言,則最好還是使用 UTF-8 編碼。

對於 TeX 來說,支持 UTF-8 編碼的文稿,又分成兩類情況。對於 XeLaTeX/LuaLaTeX 來說,它們原生就支持,因此不需要做特別的處理。對於不直接支持 UTF-8 編碼的排版命令來說,就需要使用 usepackage[utf8]{inputenc} 顯式地指明引擎吃進去的文稿是 UTF-8 編碼的。

以俄語為例

使用 XeLaTeX/LuaLaTeX 實現英文、俄文混排就很簡單了。我們只需要使用 fontspec 宏包提供的介面,選定同時包含英文和俄文字元的字體即可。這裡我們選用 CMU Serif;它包含在 TeX Live 當中。

% !TeX encoding = UTF-8
documentclass{article}
usepackage{fontspec}
setmainfont{CMU Serif}

egin{document}

section{Русский язык}
Русский язык

end{document}

若不想使用 XeLaTeX/LuaLaTeX,也可以這樣做。

% !TeX program = pdfLaTeX
% !TeX encoding = UTF-8
documentclass{article}
usepackage[utf8]{inputenc}
usepackage[T2A]{fontenc}

egin{document}

section{Русский язык}
Русский язык

end{document}

多國語言怎麼辦?

其實,對於大多數文字來說,多國語言混排和英文俄文雙語混排沒什麼差別。無非就是老三樣:

  • UTF-8 編碼保存文稿;
  • 使 TeX 引擎支持 UTF-8 編碼;
  • 選擇合適的字體。

例如,我們可以實現英文、希伯來文(需要字體支持)、希臘文、拉丁文、西班牙文、俄文、中文的混排。

CMU Serif 不包括希伯來文字母,因此你可能需要下載並安裝 LinLibertine 字體。

documentclass{article}
usepackage{hyperref}
usepackage{fontspec}
setmainfont{CMU Serif}
% setmainfont{LinLibertine}
usepackage{xeCJK}

egin{document}

section*{The Tower of Babel, Genesis 11:7}

subsection*{English}
Come, let us go down and confuse their language so they will not understand each other.

% subsection*{Hebrew}
% ?????? ????????? ?????????? ????? ????????? ??????? ???? ??????????? ?????? ??????? ?????????%

subsection*{Greek}
δε?τε κα? καταβ?ντε? συγχ?ωμεν ?κε? α?τ?ν τ?ν γλ?σσαν, ?να μ? ?κο?σωσιν ?καστο? τ?ν φων?ν το? πλησ?ον.

subsection*{Latin}
venite igitur descendamus et confundamus ibi linguam eorum ut non audiat unusquisque vocem proximi sui

subsection*{Spanish}
Será mejor que bajemos a confundir su idioma, para que ya no se entiendan entre ellos mismos.

subsection*{Russian}
сойдем же и смешаем там язык их, так чтобы один не понимал речи другого.

subsection*{Chinese (Simplified)}
來,我們下去,在那裡混亂他們的語言,使他們聽不懂對方的話。%

igskip
small
Texts from url{https://www.biblegateway.com}.
Greek Septuagint text from url{https://www.academic-bible.com/en/online-bibles/septuagint-lxx/read-the-bible-text/}.
end{document}


推薦閱讀:

解決類似問題,應該學VBA還是Latex?
TeXworks中,為什麼不能設置成中文界面?
LaTeX如何混合排版中文與日文?
LaTeX畫矢量圖相關(字體、箭頭位置、分組)?

TAG:LaTeX | TeX | LaTeX排版與設計 |