2013年1月18日星期五

LaTex支持中文的问题小结

<一>
一般的模板如果不直接支持中文,可以通过下面两个简单的步骤搞定:

1. 添加\usepackage{CJK}.

2. 在\begin{document}下面添加\begin{CJK*}{UTF8}{bsmi},在\end{document}上面添加\end{CJK*}.

这样运行就OK了。

<二>
一些小tips:

—— \begin{CJK*}{}{}后两个选项可以替换,如Ubuntu下有:
\begin{CJK*}{UTF8}{gkai}         简体 楷体
\begin{CJK*}{UTF8}{gbsn}         简体 宋体
\begin{CJK*}{UTF8}{bkai}         繁体 楷体
\begin{CJK*}{UTF8}{bsmi}        繁体 宋体

而在Windows下有:

\begin{CJK*}{GBK}{kai}         简体 楷体
\begin{CJK*}{GBK}{song}        简体 宋体

等等;

—— 如果不想每次开个tex文件都手动加这几行,可以修改document class文件如下:

1. 在你所用的模板的.cls文件中(如article.cls)找到RequirePackage这一部分,加入\RequirePackage{CJK}.

2. 找到\AtBeginDocument{XXXX},加入一行使之变成\AtBeginDocument{XXXX begin{CJK*}{UTF8}{bsmi}}.

3. 同理,将\AtEndDocument{XXXX}变为\AtEndDocument{XXXX end{CJK*}},这样以后生成文件就自动加入中文了。

<三>
上述方法在某些模板下面还是会发生问题,例如用moderncv,直接运行会提示\section神马吧啦吧啦的错误。这个时候,你需要找到moderncv.cls文件,找到关于section的这一段,看它到底干了什么,具体问题具体分析。

可能的解决途径:

—— 有的时候document class本身是没有close section的,就需要手动在.tex文件的\end{CJK*}之前加入一行\closesection.

—— 对于moderncv.cls,可供参考的解决方法是注释掉\newcommand*{\section}[1]{}里面的两句话:
\phantomsection{}
\addcontentsline{toc}{part}{#1}

类似的问题都可以这样解决。



参考文章:http://blog.csdn.net/donglin425/article/details/7714295