Texlive和Ctex的中文兼容问题
因为用的Ubuntu,所以用的是texlive编译环境来写latex,当然我也用过ctex套装。总体来讲,感觉编译速度texlive要更胜一筹,用起来更加舒服。
今早师妹找我要beamer的模板,因为师妹用的是windows系统下的ctex,所以就发现了一个以前没弄清楚的问题,关于ctex和texlive的兼容问题。
概念区别
说兼容问题之前,关于ctex和texlive有一些基本概念要搞清楚(我之前也弄混了。。)
- Texlive是一个latex语言的编译环境, Ctex只是一个中文版套装!
- Latex的编译环境主要有以下几个:
- Texlive(主要用于Linux)
- MikTex(主要用于Windows)
- MaxTex(主要用于Mac)
- Ctex是专门针对中文的国人整理的一个套装,用的是MikTex的编译环境,还包含了WinEdt编辑器,GsView等软件。
- Ctex package又是另一个概念!在我们需要写中文latex文档时,就需要用到ctex这个宏包,所以此ctex又非彼ctex。。
英文兼容
Texlive和ctex在英文上面,没有任何的兼容问题。我以前在这两种环境下切换时,都是写的英文文档,这就是为什么我之前一直觉得没有兼容问题,天真地以为两者虽然环境不同,但latex,pdflatex,xelatex等等命令功能都是一样的。。但事实上,之所以英文没有兼容问题,是因为无论那种编码方式,英文都是以一个字节的ASCII码形式编码,因此在任何编码中,英文都是兼容的。
中文兼容
中文兼容就是一个很大的问题了,因为在ctex的winedt编辑器中,默认的编码方式是GBK,而在linux环境下,默认的编码方式是utf-8,这就是为什么很多时候,linux下的文件放到windows下中文就会乱码。
对于编辑器而言,我们可以设置不同的编码打开方式,让文件正常显示,但是尽管如此,文件本身的编码方式依然是不会改变的!所以最好的方法,就是在哪种环境下,就转换为哪种环境下的编码方式,以防止后面莫名奇妙地出错。注意,这里就要提到一个叫做inputenc的包了, 这个包可以让我们选择打开文件的编码方式,但是我对于gbk编码的文件选择utf-8打开,最终还是会出现问题。。所以我觉得这个包应该也是没有编码转换的功能,还是之前那个方法,最好先将文件编码转换好!
既然文件编码已经转换好,接下来说一说,ctex和texlive对中文支持的区别
Texlive中文支持
Texlive下要支持中文,最简单的方法就是满足下面三个条件
- UTF-8编码的tex文件
\usepackage{ctex}
- Xelatex编译文件
简单明了,这也是一个通用的方法,在任何编译环境下,都可以使用此方法支持中文。注意,有的时候在用这个方法编译从ctex那边移植过来的文件时,可能会遇到中文字体问题,大概率是因为模板里用了windows下的字体,而linux下没有这些字体,需要安装。
Ctex中文支持
除了上面所述的方法,ctex有自己独特的中文支持方法(毕竟国人开发):
- GBK编码的tex文件
\usepackage{ctex}
- latex-dvi-ps-pdf或者pdflatex编译文件
这个方法也挺简单的,但是只能针对于ctex,我觉得其中的原理应该是ctex对于pdflatex和latex命令做了一些调整,使其能够支持中文,我觉得他们本身应该是不能支持中文的。
切记,这两种方式最好不要随意搭配,搭配后可能会成功,但大概率是要出问题的。。我觉得最好的办法就是采用xelatex编辑utf-8文件!
总结
以上这些是我经过查阅资料以及在windows和ubuntu下试验总体得到的,具体一些理解可能会有偏差,但以上几个方法是肯定正确的。
最后加一个小tips:
如果要改变beamer模板中的itemsize符号,需要加\setbeamertemplate{items}[符号]
;若是article环境,需加\renewcommand{\labelitemi}{符号}
。