加载中…
正文 字体大小:

Texlive2010 + Xetex +xeCJK 的中文配置

(2012-09-15 18:58:07)
标签:

latexlinuxtexlivexet

it

分类: LATEX
Xelatex 当之无愧是最好的中文解决方案。尽管现在各种tex engine层出不穷。
之所以说xetex是最好,就是因为简单,不需要多余的配置。而且现在中英文混排做的也很好。

系统:LINUX(需要指出这里讲的是linux系统下的配制方法,对于windows原理类似。)
tex: TexLive2010

我就讲一些最为普适的办法,不用什么ctexart之类的蛋疼玩意。不要借助某些特殊的documentclass,那样会很蛋疼!

首先,安装什么的就不说了。安装Texlive2010,已经自带xeCJK宏包。需要讲清楚的是不使用xeCJK时,xetex也可以处理中文,只是对于中英文混排有些不好,无法分别设置中英文字体。

讲一讲如何配置xeCJK。
step1. 看你有什么字体,linux下使用命令 fc-list :lang=zh 就可以看到自己的字体。
step2. 下面有两个办法实现
   1.在文件中直接实现,就是把所有命令写到tex文件,这个写的东西可以在其他机器上编译,只需要改逻辑字体映射即可(即上面fc-list :lang=zh 命令后出现的那些字体).写一个test.tex 文件,加入下面代码:

\documentclass{article}
\usepackage[cm-default]{fontspec}  %[cm-default]选项主要用来解决使用数学环境时数学符号不能正常显示的问题
\usepackage[BoldFont,SlantFont,CJKsetspaces,CJKchecksingle]{xeCJK}  %此行中括号中内容如果编译不过可以去掉后面两个参数
\setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi_GB2312}]{SimSun} %从此行以下8行中的字体名字改为自己系统上有的字体名,如FangSong_GB2312改为 STFangsong
\setCJKsansfont{SimHei}
\setCJKmonofont{[FangSong_GB2312]}
\setmainfont{Times New Roman}

\setCJKfamilyfont{zhsong}{SimSun}
\setCJKfamilyfont{zhhei}{SimHei}
\setCJKfamilyfont{zhkai}{KaiTi_GB2312}
\setCJKfamilyfont{zhfs}{FangSong_GB2312}

\newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
\newcommand*{\heiti}{\CJKfamily{zhhei}}   % 黑体
\newcommand*{\kaishu}{\CJKfamily{zhkai}}  % 楷书
\newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
\newcommand*{\lishu}{\CJKfamily{zhli}}    % 隶书
\newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆

\begin{document}
\title{中文}
\author{}
\date{}
\maketitle
\section{中文}
 中文
 \end{document}

%注意把上面代码中的字体换成你系统有的你想要的字体。之后xelatex test ,出来pdf即有中文
  2. 第二种办法,就是将上面这些东西写到一个 zhfontcfg.sty 文件里(命名任意,但在下面的tex文件里\usepackage{zhfontcfg}记得改成相应的文件名)。这种办法方便,tex文件不用写那么多东西,但是你的文件到别的机器上可能就没有办法编译,除非你把zhfontcfg.sty也一起拷贝过去,并且改好系统对应字体。注意一个问题, _zhfontcfg.sty_的存放位置,要在 ~/.texlive2010/texmf-var/tex/latex 下,前面的绝对路径也可以在/usr/local/texlive/2010/texmf-dist/,但是最后的相对路径要是tex/latex。就是texlive存放宏包的位置,而~/.texlive2010/texmf-var/tex/latex的优先级更高,当有调用宏包的时候,程序会先在这里面寻找,之后再去/usr/local/texlive/2010/texmf-dist/tex/latex中寻找。当然你也可以和tex文件放在一起。
    文件zhfontcfg.sty

  % xetex/xelatex 字体设定宏包
  \ProvidesPackage{zhfontcfg}
  \usepackage[cm-default]{fontspec} %[cm-default]选项主要用来解决使用数学环境时数学符号不能正常显示的问题
  \usepackage[BoldFont,SlantFont,CJKsetspaces,CJKchecksingle]{xeCJK}
  \usepackage{xunicode,xltxtra}
  \defaultfontfeatures{Mapping=tex-text} %如果没有它,会有一些 tex 特殊字符无法正常使用,比如连字符。
  % 中文断行
  \XeTeXlinebreaklocale "zh"
  \XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt

  \setCJKmainfont[BoldFont={SimHei},ItalicFont={KaiTi_GB2312}]{SimSun}
  \setCJKsansfont{SimHei}
  \setCJKmonofont{[FangSong_GB2312]}
  \setmainfont{Times New Roman}

  \setCJKfamilyfont{zhsong}{SimSun}
  \setCJKfamilyfont{zhhei}{SimHei}
  \setCJKfamilyfont{zhkai}{KaiTi_GB2312}
  \setCJKfamilyfont{zhfs}{FangSong_GB2312}

  \newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体
  \newcommand*{\heiti}{\CJKfamily{zhhei}}   % 黑体
  \newcommand*{\kaishu}{\CJKfamily{zhkai}}  % 楷书
  \newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋
  \newcommand*{\lishu}{\CJKfamily{zhli}}    % 隶书
  \newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆
 
然后写一个 test.tex 文件,内容如下:

  \documentclass{article}
  \usepackage{zhfontcfg}
  \begin{document}
  \title{中文}
  \author{}
  \date{}
  \maketitle
  \section{中文}
   中文
   \end{document}

  之后编译xelatex test,pdf即出中文
另外,windows下和上面的过程极为类似。但是windows下要注意编辑的时候中文字体的编码,貌似不能自己识别。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有