文章目錄
1 LaTeX簡介
LaTeX 是一種基於 TeX的排版系統,是當今世界上最流行和使用最爲廣泛的 TeX 格式。使用 LaTeX 的主要目的是爲了方便排版。學術界的論文,尤其是數學、計算機等學科論文大多是由 LaTeX 編寫的,因爲用它寫數學公式不僅方便而且非常漂亮。
問題來了,不是要學習 LaTeX 嗎,怎麼一大堆各種tex:LaTeX、CTeX、MiKTeX、TeXLive、PDFLaTeX、XeLaTex······這是大多數初學者在剛接觸 LaTeX 時都會碰到的問題。本文就不過多地解釋這些 “TeX” 都表示啥意思了,詳細知識可以參考以下鏈接:http://www.ctex.org/BasicKnowledge
在 LaTeX 中使用中文時,可以使用CJK、xeCJK、ctex等宏包,可以使用PDFLaTeX或XeLaTex命令,TeX文件可以使用GBK編碼,也可以使用UTF-8編碼。不管使用什麼方式實現中文的使用,必須保證宏包編碼、編譯方式、源文件編碼選項三者一致。
本文分別使用CTeX(MiKTeX)和TeX Live 2018選用不同的方式實現中文的使用。作者水平有限,具體原理等各種細節不作詳細的闡述,只附上測試過的示例。
2 基於CTeX套裝(MiKTeX編譯系統)實現中文的使用
2.1 CJK宏包 (PDFLaTeX)
(1) CJK宏包+UTF8源文件+PDFLaTeX命令
使用了宋體、仿宋、黑體和楷體。
例1:
%例 1:CJK+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{song}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{fs}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{hei}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{kai}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\end{document}
(2) CJK宏包+GBK源文件+PDFLaTeX命令
和例1類似,可用宋體、仿宋、黑體和楷體,宋體不能用{gbsn}。例2只演示宋體的使用,其他的類似。
例2:
%2、CJK+GBK+PDFLateX, 宋體不能用{gbsn}
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GBK}{song}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\end{document}
(3) CJK*環境 (CJK宏包+GBK/UTF8源文件+PDFLaTeX命令)
字體的使用和CJK環境一樣。
CJK與CJK*的區別:CJK環境字符之間的空格是保留的(英文習慣),CJK會忽略CJK字符之間的空格。比如回車符會被當做是空格處理,所以CJK環境在回車的地方會出現一個空格,而CJK環境則不會出現空格。
例3 以UTF8編碼爲例子,也可以使用GBK編碼,只需將環境命令中的UTF8換成GBK,如將\begin{CJK}{UTF8}{kai}改爲\begin{CJK}{GBK}{kai}。
例3:
%3、CJK+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{kai}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK}
\begin{CJK*}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK*}
\end{document}
2.2 CJKutf8宏包 (PDFLaTeX)
CJKutf8宏包+GBK/UTF8源文件+PDFLaTeX命令
與CJK宏包用法和一樣。參考例1、2、3.
例4:
%CJKutf8+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{song}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{fs}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{hei}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK}
\begin{CJK*}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK*}
\end{document}
2.3 ctex宏包
2.3.1 PDFLaTeX 命令
用PDFLaTeX編譯器時,PDFLaTeX會默認後面的文本爲GBK編碼模式,所以在UTF8編碼的文件中,要在\documentclass後添加“[UTF8]”,“告訴” PDFLaTeX編譯器後面的文本是UTF8編碼的。而在GBK編碼的文件中,可以省略“[GBK]”。
可以在 document 環境裏直接使用中文,也可以使用CJK或CJK*環境。常用的楷書、宋體、黑體、仿宋、隸書和幼圓都可以使用。
(1) ctex宏包+UTF8源文件+PDFLaTeX命令
例5中還測試了幾種常用的字體的使用方法,包括楷書、宋體、黑體、仿宋、隸書和幼圓。
例5:
%5、ctex+UTF8+PDFLateX
%PDFLateX會默認documentclass後面是GBK選項,所以,在這裏必須添加UTF8選項聲明,告訴PDFLateX後面是UTF8編碼的文本
\documentclass[UTF8]{article}
\usepackage{ctex}
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示},{\lishu 這裏是隸書顯示},{\youyuan 這裏是幼圓顯示}。
\begin{CJK}{UTF8}{gbsn}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{song}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{fs}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{hei}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK}
\begin{CJK*}{UTF8}{kai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK*}
\end{document}
(2) ctex宏包+GBK源文件+PDFLaTeX命令
和例5用法類似,只是得注意文件編碼。
例6:
%6、ctex+GBK+PDFLateX
%PDFLateX會默認documentclass後面是GBK選項,所以,在這裏可以省略GBK選項
\documentclass[GBK]{article}%或\documentclass{article}
\usepackage{ctex}
\begin{document}
這是一個CTEX的GBK編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示},{\lishu 這裏是隸書顯示},{\youyuan 這裏是幼圓顯示}。
\end{document}
(3) ctexart文檔類+UTF8源文件+PDFLaTeX命令
使用ctexart文檔類和直接使用ctex宏包方法類似。中文文檔類還有ctexrep、ctexbook、ctexbeamer。
例7:
%7、ctexart+UTF8+PDFLaTeX
%類似的還有ctexrep、ctexbook、ctexbeamer
\documentclass[UTF8]{ctexart} % UTF8選項不能少
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示} , {\lishu 這裏是隸書顯示},{\youyuan 這裏是幼圓顯示}。
\end{document}
(4) ctexart文檔類+GBK源文件+PDFLaTeX命令
使用ctexart文檔類和直接使用ctex宏包方法類似。中文文檔類還有ctexrep、ctexbook、ctexbeamer。
例8:
%8、ctexart+GBK+PDFLaTeX
%類似的還有ctexrep、ctexbook、ctexbeamer
\documentclass[GBK]{ctexart}%或\documentclass{ctexart}
\begin{document}
這是一個CTEX的GBK編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示} , {\lishu 這裏是隸書顯示},{\youyuan 這裏是幼圓顯示}。
\end{document}
2.3.2 XeLaTeX 命令
用XeLaTeX編譯器時,XeLaTeX會默認後面的文本爲UTF8編碼模式,所以在UTF8編碼的文件裏“[UTF8]”可以省略。而在GBK編碼的文件裏,必須在文件的第一行添加 \XeTeXinputencoding “GBK” 以聲明文件編碼類型。
字體包括宋體、黑體、楷書、仿宋,與PDFLaTeX相比,少了隸書和幼圓這兩種字體。另外,用XeLaTeX編譯器時,不可以用CJK和CJK*環境。
(1) ctex宏包+UTF8源文件+XeLaTeX命令
用XeLaTeX編譯器時,默認後面的文本爲UTF8編碼模式,所以在UTF8編碼文件裏“[UTF8]”可以省略。
例9:
%9、ctex+UTF8+XeLaTeX(若聲明瞭UTF8,則可以用PDFLaTeX)
%用XeLaTeX編譯器時,默認後面的文本爲UTF8編碼模式,所以在這個tex文件裏“[UTF8]”可以省略,因爲這個文件正是UTF8編碼的。
\documentclass[UTF8]{article}%或\documentclass{article}
\usepackage{ctex}
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示}。
\end{document}
(2) ctex宏包+GBK源文件+XeLaTeX命令
用XeLaTeX編譯器時,默認後面的文本爲UTF8編碼模式,所以在GBK編碼的文件裏,必須在文件的第一行添加:\XeTeXinputencoding “GBK”
例10
%10、ctex+GBK+XeLaTeX
%xelatex編譯,文件以GBK編碼保存
\XeTeXinputencoding "GBK"
\documentclass[GBK]{article}%或\documentclass{article}
\usepackage{ctex}
\begin{document}
這是一個CTEX的GBK編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示}。
\end{document}
(3) ctexart文檔類+UTF8源文件+XeLaTeX命令
使用ctexart文檔類和直接使用ctex宏包方法類似。中文文檔類還有ctexrep、ctexbook、ctexbeamer。參考例9。
例11
%11、ctexart+UTF8+XeLaTeX(若聲明瞭UTF8,則可以用PDFLaTeX)
%類似的還有ctexrep、ctexbook、ctexbeamer
\documentclass[UTF8]{ctexart}%或\documentclass{article}
\begin{document}
這是一個CTEX的utf-8編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示}。
\end{document}
(4) ctexart文檔類+GBK源文件+XeLaTeX命令
使用ctexart文檔類和直接使用ctex宏包方法類似。中文文檔類還有ctexrep、ctexbook、ctexbeamer。參考例10。
例12
%12、ctexart+GBK+XeLaTeX
%類似的還有ctexrep、ctexbook、ctexbeamer
\XeTeXinputencoding "GBK"
\documentclass[GBK]{ctexart}%或\documentclass{ctexart}
\begin{document}
這是一個CTEX的GBK編碼例子,{\kaishu 這裏是楷體顯示},{\songti 這裏是宋體顯示},{\heiti 這裏是黑體顯示},{\fangsong 這裏是仿宋顯示}。
\end{document}
3 基於TeXLive實現中文的使用
3.1 CJK宏包 (PDFLaTeX)
只支持宋體和楷體。源文件用GBK編碼時出錯。
(1) CJK宏包+UTF8源文件+PDFLaTeX命令
例1:
%例 1:CJK+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\begin{CJK}{UTF8}{gkai}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\end{document}
(2) CJK*環境(CJK宏包+UTF8源文件+PDFLaTeX命令)
使用字體方面和CJK環境一樣。CJK與CJK*的區別:CJK環境字符之間的空格是保留的(英文習慣),CJK會忽略CJK字符之間的空格。比如回車符會被當做是空格處理,所以CJK環境在回車的地方會出現一個空格,而CJK環境則不會出現空格。
例2:
%2、CJK+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK*}
\begin{CJK*}{UTF8}{gkai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK*}
\begin{CJK}{UTF8}{gkai}
生活就像海洋,只有 意志堅強的人才能到達
彼岸。
\end{CJK}
\end{document}
3.2 CJKutf8宏包 (PDFLaTeX)
CJKutf8宏包+GBK/UTF8源文件+PDFLaTeX命令
與CJK宏包用法和一樣。例4以UTF8編碼爲例子,也可以使用GBK編碼,只需將環境命令中的UTF8換成GBK,如將\begin{CJK}{UTF8}{kai}改爲\begin{CJK}{GBK}。同樣地,也可以使用CJK*環境。
例3:
%CJKutf8+UTF8+PDFLateX
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK*}
\begin{CJK}{UTF8}{gkai}
生活就像海洋,只有意志堅強的人才能到達彼岸。
\end{CJK}
\end{document}
3.3 ctex宏包
與在MiKTeX平臺上的使用方法一樣,見2.3。
4 總結
綜上所述,使用ctex宏包或者如ctexart的中文文檔類來實現中文操作是個不錯的選擇。
建議:對於LaTeX,不需要專門花時間去學。一般來說,直接在模板的基礎上修改,用着用着自然就會了,網上LaTeX資源相當豐富。