1. 程式人生 > >Latex中文utf-8編碼的三種方式

Latex中文utf-8編碼的三種方式

我們知道Latex一般用CJK和CTEX巨集包支援中文編輯,CJK和CTEX的預設編碼是GBK,而windows下的默然編碼就是GBK,因此CJK和CTEX不需要特殊配置就可以直接支援中文Latex編譯,只需要用GBK編碼儲存檔案即可。但是如果把檔案的字元編碼換成現在更加普遍的utf-8的話,應該怎麼操作呢?在這裡有3種方式可以使用。方法2、3用CTEX套件編譯通過。

1、CJKutf8

CJK有兩個基本巨集包:CJK和CJKutf8,其中後者面向utf-8編碼,其一般使用方法如下:

\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{<font>}
 ...
\end{CJK}
\end{document}

font為簡體中文字型,CJK自帶的utf-8簡體字型有gbsn(宋體)和gkai(楷體)。以下程式碼是一個簡單的例子(一定要將tex檔案儲存成utf-8格式):

%test.tex
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
這是一個CJKutf8的例子,使用的字型是gbsn。
\end{CJK}
\end{document}


用pdflatex編譯tex檔案,即可得到輸出結果。CJK過時且複雜,不建議使用。

2、CTEX的UTF8選項

上面的CJKutf8只提供了兩種字型,可選擇的餘地太小,我們可以直接用UTF8選項使CTEX支援utf-8編碼,利用CTEX豐富的字型和中文設定可以更好地編輯Latex中文文字,其語法格式為:

\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
...
\end{document}

或者,直接使用ctexart

\documentclass[UTF8]{ctexart}
\begin{document}
...
\end{document}

以下程式碼是一個簡單的例子(同樣把tex檔案儲存成utf-8格式):

% ctex_test.tex
\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裡是楷體顯示},{\songti 這裡是宋體顯示},{\heiti 這裡是黑體顯示},{\fangsong 這裡是仿宋顯示},{\lishu 這裡是隸書顯示},{\youyuan 這裡是幼圓顯示}。
\end{document}

用pdflatex編譯tex檔案:pdflate ctex_test.tex,即可得到如下輸出結果,

3、xelatex編譯

XeTeX是一種使用Unicode的TeX排版引擎,它原生的支援Unicode,並預設其輸入檔案為utf-8編碼。XeTeX可以在不進行額外配置的情況下直接使用作業系統中安裝的字型。XeLaTeX是使用LaTeX的排版引擎,也有上述XeTeX的優點,命令下直接使用xelatex ***.tex就會產生對應的PDF檔案。以下是一個簡單的xelatex編譯ctex的例子(同樣把tex檔案儲存成utf-8格式):

% xelatex_test.tex
\documentclass{article}
\usepackage{CTEX}
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裡是楷體顯示},{\songti 這裡是宋體顯示},{\heiti 這裡是黑體顯示},{\fangsong 這裡是仿宋顯示}。
\end{document}

明眼的同學一下就發現了,這貨跟上面第2條中ctex的程式碼相比,就少了一個UTF8選項啊!額,表面看是這樣的,但是如果如果直接把xelatex_test.tex用pdflatex編譯,系統就會報錯。這是因為不加UTF8選項,pdflatex默然按照GBK編碼處理tex檔案,而這個檔案我們是用utf-8編碼的,這樣就會造成解碼失敗。這裡直接用xelatex編譯,就會編譯成功,因為xelatex的預設輸入檔案是utf-8編碼。切換到tex檔案所在目錄,直接用xelatex編譯tex檔案:xelatex xelatex_test.tex,即可得到如下輸出結果,