返回列表 回复 发帖

[宏包] xeCJK for XeTeX

本帖最后由 mytex 于 2010-5-31 19:49 编辑

  
说明:xetex 的中文支持方案还有 zhspacing 等。
      xeCJK基本上是CCT和CJK在某种程度上的结合, 主要在windows下经过较多测试
[2009/10/06] 增加宏 \normalspacedchars{<char list>}: <char list> 中的字符两端不自动添加空格。
[2009/09/12] 改进对空格的处理,\CJKsetecglue{...} 仅仅影响自动添加的空格。
[2009/09/01] 改进对空格的处理,同时增加对 \slshape 的支持(可以与 itshape不一致)
[2009/06/20] 删除文件xeCJKpunct.spa, 支持 XeTeX 0.9995.0 以后版本.

主要特点:
1. 消除汉字之间的空格但保留中英文间的空格
2. 支持多种标点符号样式:  全角、半角、开明、行末半角、CCT.
3. 支持中英文使用不同的缺省字体, 支持中文斜体粗体
4. 兼容CJKfntef, CJKnumb宏包

系统要求:   xetex  0.9995.0 (TexLive 2009 或 MiKTeX 2.8)
[安装]:
下载附件, 把xeCJK中的doc, source和tex文件夹保持目录结构复制到 localtexmf, 然后刷新文件名数据库即可.
或者运行setup-win32中的批处理文件(仅对win32下的mikte 2.8 和 TexLive 2009有效,其他系统请自行安装)

使用说明见附件。 所有例子在 Windows Vista + TexLive 2009 / MikTeX 2.8下编译通过.

[注意]:这是测试版,其中的宏命令可能被改变或取消。
欢迎测试!        
  
(本宏包收入 ctex-kit 项目,可在 http://code.google.com/p/ctex-kit/ 的 svn 中找到。)
附件: 您所在的用户组无法下载或查看附件
1

评分次数

  • yulewang

哦,jjgod有xetex版本的ctex宏包的,呵呵。
孙老师,其实可以考虑根据 ifxetex (http://www.ctan.org/tex-archive/ ... ntries/ifxetex.html) 来判断当前用的是否是 XeTeX,从而把这个修改作为补丁集成到官方版本的 CJK 中去。
谢谢你的建议. 等测试一些常用包后再跟他联系.

其实支持UTF8之外的编码应该也是可以的, 但我还没想到好的办法(把sfd文件读入建立一个映射表应该可以,但可能消耗太多字符串变量)


有一个问题: 用xelatex编译时,每次到 fontspec包时都要停顿很长时间,并且写pdf文件也特别慢, 不知是哪儿设置的问题?

[ 本帖最后由 mytex 于 2007-8-17 18:35 编辑 ]
  1. \documentclass{article}
  2. \usepackage{fontspec}
  3. \begin{document}
  4. blahblah
  5. \end{document}
复制代码
就比
  1. \documentclass{article}
  2. \begin{document}
  3. blahblah
  4. \end{document}
复制代码
慢很多吗?试试给 fontspec 加上 [rmdefault] 参数如何。

理论上说,如果不尝试载入系统字体,那 XeTeX 的速度应该不会被拖慢。
速度与安装有关.

原来是用光盘直接运行的, 很慢.

装到活动硬盘后, 速度快多了.  光盘版可能每次都去系统目录搜索字体.
我的测试结果中,使用改过后的 CJKpunct 宏, 行尾的中文标点没有与边界对齐。
请传原文件

我用于测试的源文档

由于级别是新手,没法传文件和图片,只好把源码放上:
  1. \documentclass[12pt]{article}

  2. \usepackage{CJKutf8}
  3. \usepackage{CJKpunct}
  4. \usepackage{xCJK}

  5. \XeTeXinputencoding "bytes"
  6. \XeTeXdefaultencoding "bytes"

  7. \begin{document}
  8. \begin{CJK}{UTF8}{Adobe Song Std}
  9. 东汉末年,朝政腐败,民不聊生。崛起于谯县的曹操,在镇压黄巾起义军的过程中,逐步扩充军事力量,先后消灭吕布、袁绍等割据势力,逐渐统一了中国北部。

  10. 曹操迎汉献帝于许都后,打出"奉天子以令下臣"的旗号。建安十三年(公元二0八年),曹操当了丞相,指挥水陆两军,沿江东下,收编了荆州刘琮的部队,准备消灭刘备,一面派人向江东的孙权下战书。要与孙权在东吴决一胜负。

  11. 曹操扬言自己有水陆军八十三万(实为二十三万),气势很盛。这时,刘备的军队已败退当阳长坂,处境危险。孙权也感到战火烧身,严峻的形势迫使孙、刘必须马上结盟。于是,孙权派鲁肃到刘备那儿去探听虚实。
  12. \end{CJK}
  13. \end{document}
复制代码
[ 本帖最后由 lyanry 于 2007-8-21 01:25 编辑 ]

测试结果如下:

使用修改后的 CJKpunct 宏包,边界是对齐了,但是每个逗号之前都有个 "ff",每个句号之前都有个 “30”。
  1.   东汉末年ff,朝政腐败ff,民不聊生30。崛起于谯县的曹操ff,在镇压
  2. 黄巾起义军的过程中ff,逐步扩充军事力量ff,先后消灭吕布30、袁绍等
  3. 割据势力ff,逐渐统一了中国北部30。
  4.   曹操迎汉献帝于许都后ff,打出"奉天子以令下臣"的旗号30。建安十
  5. 三年ff(公元二0八年ff)ff,曹操当了丞相ff,指挥水陆两军ff,沿江东
  6. 下ff,收编了荆州刘琮的部队ff,准备消灭刘备ff,一面派人向江东的孙
  7. 权下战书30。要与孙权在东吴决一胜负30。
  8.   曹操扬言自己有水陆军八十三万ff(实为二十三万ff)ff,气势很
  9. 盛30。这时ff,刘备的军队已败退当阳长坂ff,处境危险30。孙权也感到
  10. 战火烧身ff,严峻的形势迫使孙30、刘必须马上结盟30。于是ff,孙权派
  11. 鲁肃到刘备那儿去探听虚实30。
复制代码
[ 本帖最后由 lyanry 于 2007-8-21 01:27 编辑 ]
返回列表