文章目录
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资源相当丰富。