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}{符号}


Texlive和Ctex的中文兼容问题
http://yoursite.com/2017/07/07/编程开发/Latex/some-questions-about-ctex-and-texlive/
作者
Wei Lyu
发布于
2017年7月7日
许可协议