summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex/xecjk
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-05-20 23:58:58 +0000
committerKarl Berry <karl@freefriends.org>2012-05-20 23:58:58 +0000
commit5bed059ee6199aca34f267e3b0d97ea59bb32ac4 (patch)
treeb53f3c9d429dad985b7b47ea1d763dc873dd862e /Master/texmf-dist/source/xelatex/xecjk
parentba135237e227af8d0a0cb28713636e65b95f7f2d (diff)
xecjk (18may12)
git-svn-id: svn://tug.org/texlive/trunk@26516 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex/xecjk')
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx399
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins22
2 files changed, 327 insertions, 94 deletions
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
index 02c37f43c4b..62314d105a4 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
@@ -21,9 +21,11 @@ may observe
http://code.google.com/p/ctex-kit/updates/list
-- Sun Wenchang <sunwch@hotmail.com>
-- Leo Liu <leoliu.pku@gmail.com>
-- Qing Lee <sobenlee@gmail.com>
+ Author:
+ Wenchang Sun <sunwch@nankai.edu.cn>
+ Current Maintainers:
+ Leo Liu <leoliu.pku@gmail.com>
+ Qing Lee <sobenlee@gmail.com>
%</readme>
%<*internal>
@@ -38,11 +40,14 @@ may observe
\keepsilent
\preamble
- Version 3.0.4 (06-May-2012)
+ Version 3.0.5 (19-May-2012)
-----------------------------------------------------------------
- Author: Wenchang Sun <sunwch@hotmail.com>
- Maintainer: Leo Liu <leoliu.pku@gmail.com>
- Qing Lee <sobenlee@gmail.com>
+ Author:
+ Wenchang Sun <sunwch@nankai.edu.cn>
+ Current Maintainers:
+ Leo Liu <leoliu.pku@gmail.com>
+ Qing Lee <sobenlee@gmail.com>
+
Copyright (C) 2007--2012 Wenchang Sun
This file may be distributed and/or modified under the
@@ -82,7 +87,9 @@ may observe
\documentclass{l3doc}
\hypersetup{pdfstartview=FitH}
\usepackage{xeCJK}
+\fvset{formatcom=\CJKfixedspacing}
\usepackage{metalogo}
+\linespread{1.1}
\setlist{nosep}
\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
\setmonofont{Inconsolata}
@@ -110,6 +117,7 @@ may observe
\let\defaultvar\textbf
\def\argbrace#1{\char`\{#1\char`\}}
\@addtoreset{CodelineNo}{section}
+\def\tokslink#1{\hyperlink{#1}{\ding{51}}}
\makeatother
\begin{document}
\DocInput{\jobname.dtx}
@@ -123,13 +131,14 @@ may observe
% \author{\texttt{ctex.org}\thanks{\url{http://www.ctex.org}}}
% \date{\filedate\qquad\fileversion}
% \maketitle
+%
+% \tableofcontents
%
% \begin{documentation}
%
% \section{简介}
%
-% \pkg{xeCJK} 是一个 \XeLaTeX 宏包,用于排版 CJK 文字,包括字体选择和标点控制
-% 等。主要特点:
+% \pkg{xeCJK} 是一个 \XeLaTeX 宏包,用于排版中日韩(CJK)文字。主要功能:
% \begin{enumerate}
% \item 分别设置 CJK 和英文字体;
% \item 自动忽略 CJK 文字间的空格而保留其它空格,允许在非标点汉字和英文
@@ -138,25 +147,56 @@ may observe
% \item 自动调整中英文间空白。
% \end{enumerate}
%
-% \pkg{xeCJK} 的原始作者是孙文昌,目前由
-% \texttt{ctex-kit} \footnote{\url{http://code.google.com/p/ctex-kit/}}项目组
-% 维护,主要维护者是刘海洋\footnote{\nolinkurl{leoliu.pku@gmail.com}} 和
-% 李清\footnote{\nolinkurl{sobenlee@gmail.com}}。
-%
-% \section{使用方法}
-%
% \pkg{xeCJK} 使用了 \XeTeX 的一些最新特性,需要 \XeTeX{} |0.9995.0 [2009/06/29]| 以
-% 后的版本。\pkg{xeCJK} 还依赖 \pkg{fontspec}%
-% \footnote{\url{http://mirrors.ctan.org/macros/latex/contrib/fontspec}}宏包来调用系统字体。
+% 后的版本。\pkg{xeCJK} 的依赖 \LaTeX~3 项目的 \pkg{expl3} 宏包,并依赖
+% \pkg{fontspec}\footnote{\url{http://mirrors.ctan.org/macros/latex/contrib/fontspec}}
+% 宏包来调用系统字体。个别兼容性功能需要 \pkg{CJK} 宏包的支持。
%
-% \pkg{xeCJK} 提供了将在 \ref{sec:xeCJK-opt} 节介绍的一些 \meta{key}|=|\meta{var} 形式的
-% 宏包选项,你可以在调用宏包的时候直接设置这些选项,也可以在调用宏包之后使用 |\xeCJKsetup| 来
-% 设置这些选项。
+% \pkg{xeCJK} 的原始作者是孙文昌,2009 年 5 月起宏包被收入
+% \texttt{ctex-kit}\footnote{\url{http://code.google.com/p/ctex-kit/}}项目进行
+% 维护,目前主要维护者是刘海洋\footnote{\nolinkurl{leoliu.pku@gmail.com}} 和
+% 李清\footnote{\nolinkurl{sobenlee@gmail.com}}。
%
-% 有些选项或命令后面带有 \hypertarget{expstar}{\hyperlink{expstar}{$\star$}} 号,这表示这
-% 个选项或命令只能在导言区中使用,而 \hypertarget{rexpstar}{\hyperlink{rexpstar}{\ding{73}}}
-% 号则表示这个选项或命令只能在导言区使用,并且只影响随后定义的 CJK 字体。其余不带特殊标记的
-% 选项或命令,如果没有特别说明,可以在导言区或正文中使用。
+% \section{基本用法}
+%
+% 与其他 \LaTeX{} 宏包一样,引入 \pkg{xeCJK} 宏包只要在导言区使用
+% \begin{verbatim}
+% \usepackage{xeCJK}
+% \end{verbatim}
+% 在引入 \pkg{xeCJK} 宏包之后,只要设置 CJK 文字的字体,就可以在文档中使用中日
+% 韩文字了。
+%
+% 可以在各种文档类中使用 \pkg{xeCJK} 宏包,最简单的示例是:
+% \begin{verbatim}
+% \documentclass{article}
+% \usepackage{xeCJK}
+% \setCJKmainfont{SimSun}
+%
+% \begin{document}
+% 中文 \LaTeX 示例。
+% \end{document}
+% \end{verbatim}
+% 上述示例设置了中文字体 SimSun(宋体)。运行此示例要求系统安装了设置的字体,
+% 源文件用 UTF-8 编码保存,使用 \XeLaTeX{} 编译。
+%
+% \pkg{xeCJK} 只提供了字体和标点控制等基本 CJK 语言支持。对于中文文档,可以使
+% 用更为高层的 \pkg{ctex} 宏包或文档类,它将自动调用 \pkg{xeCJK} 并设置好中文
+% 字体,同时提供了进一步的本地化支持。详细内容参看 \pkg{ctex} 宏包\footnote{%
+% \url{http://mirrors.ctan.org/language/chinese/ctex/}}的说明。
+%
+% \pkg{xeCJK} 提供了大量选项,可以在宏包调用时作为宏包选项或用 |\xeCJKsetup|
+% 命令进行设置,详见 \ref{subsec:opts}~节。除了 |\setCJKmainfont| 命令,
+% \pkg{xeCJK} 还提供了许多其他命令设置和选择中文字体,详见
+% \ref{subsec:fontset}~节。其他更详细的功能也都将在下面详细说明。
+%
+% \section{用户手册}
+%
+% \subsection{宏包选项}
+% \label{subsec:opts}
+%
+% \pkg{xeCJK} 以 \meta{key}|=|\meta{var} 的形式提供宏包选项,你可以在调用宏包
+% 的时候直接设置这些选项,也可以在调用宏包之后使用 |\xeCJKsetup| 来设置这些选
+% 项。
%
% \begin{function}{\xeCJKsetup}
% \begin{syntax}
@@ -175,7 +215,10 @@ may observe
% \end{verbatim}
% \end{function}
%
-% \subsection{宏包选项}\label{sec:xeCJK-opt}
+% 有些选项或命令后面带有 \hypertarget{expstar}{\hyperlink{expstar}{$\star$}} 号,这表示这
+% 个选项或命令只能在导言区中使用,而 \hypertarget{rexpstar}{\hyperlink{rexpstar}{\ding{73}}}
+% 号则表示这个选项或命令只能在导言区使用,并且只影响随后定义的 CJK 字体。其余不带特殊标记的
+% 选项或命令,如果没有特别说明,可以在导言区或正文中使用。
%
% 下列选项使用加粗的形式来表示 \pkg{xeCJK} 的默认设置。
%
@@ -230,7 +273,7 @@ may observe
%
% \begin{function}{CJKecglue}
% \begin{syntax}
-% CJKecglue = \argbrace{\ }
+% CJKecglue = \Arg{glue}
% \end{syntax}
% 设置 CJK 文字与西文、CJK 文字与行内数学公式之间的间距,默认值是一个空格。使用这个
% 选项设置的 |glue| 最好也要用一定的弹性。请注意,这里设置的 |glue| 只影响
@@ -256,7 +299,7 @@ may observe
%
% \begin{function}{InlineEnv,InlineEnv+,InlineEnv-}
% \begin{syntax}
-% CheckSingle = \argbrace{env1, env2, env3, ...}
+% InlineEnv = \argbrace{env1, env2, env3, ...}
% \end{syntax}
% 在使用 |CheckSingle| 选项的时候,\pkg{xeCJK} 会将 CJK 文字后接着的 \LaTeX 环境的
% 开始 |\begin{...}| 和结束 |\end{...}| 视为断行的地方,如果有某些特殊
@@ -268,7 +311,7 @@ may observe
% AutoFallBack = \meta{\TFF}
% \end{syntax}
% 当文档中有个别生僻字时,可以使用这个选项,自动使用预先设置好的后备字体来输出这些生僻
-% 字。后备字体的设置方法将在 \ref{sec:xeCJK-font} 节中介绍。
+% 字。后备字体的设置方法将在 \ref{subsec:fontset} 节中介绍。
% \end{function}
%
% \begin{function}[rEXP]{AutoFakeBold}
@@ -349,7 +392,7 @@ may observe
% 省设置不满意,可以通过这一选项来改变它。为了使得标点所占的宽度能够适应字体大小的变化,
% 这里设置的 |dimen| 的单位最好用 |em| 等相对距离单位,而不建议使用诸如 |pt| 之类的
% 绝对距离单位。这里的设置对除了 |plain| 以外的所有标点处理格式都有效。同时,这里的
-% 设置对所有的 CJK 标点都生效,如果只要设置部分标点,请使用 \ref{sec:xeCJK-ps} 节的
+% 设置对所有的 CJK 标点都生效,如果只要设置部分标点,请使用 \ref{subsec:punct} 节的
% |\xeCJKsetwidth|。
% \end{function}
%
@@ -361,15 +404,19 @@ may observe
% 这一选项改变这一设置。
% \end{function}
%
-% \subsection{CJK 字体族声明方式}\label{sec:xeCJK-font}
+% \subsection{字体设置与选择}
+% \label{subsec:fontset}
%
% \begin{function}[EXP]{\setCJKmainfont}
% \begin{syntax}
% \cs{setCJKmainfont} \oarg{font features} \Arg{font name}
% \end{syntax}
-% 设置正文罗马族的 CJK 字体,最后两个参数的意义请参考 \pkg{fontspec} 宏包。影响
-% |\rmfamily| 和 |\textrm| 的字体。需要说明的是 \pkg{xeCJK} 修改了
-% |AutoFakeBold| 和 |AutoFakeSlant| 选项,以便配合全局伪粗体和伪斜体的设定。
+% 设置正文罗马族的 CJK 字体,影响 |\rmfamily| 和 |\textrm| 的字体。后面两个
+% 参数继承自 \pkg{fontspec} 宏包, \meta{font features} 表示字体属性选项,
+% \meta{font name} 是字体名。字体名可以是字体族名,也可以是字体的文件名,查
+% 找字体名见 \ref{subsubsec:fontsearch}~节;可用的字体属性选项参见
+% \pkg{fontspec} 宏包的文档。需要说明的是 \pkg{xeCJK} 修改了 |AutoFakeBold|
+% 和 |AutoFakeSlant| 选项,以便配合全局伪粗体和伪斜体的设定。
% \end{function}
%
% \begin{function}{AutoFakeBold,AutoFakeSlant}
@@ -566,8 +613,83 @@ may observe
% 之后,就设置了 |SimSun| 是 |KaiTi_GB2312| 的备用字体,而 |SimSun-ExtB| 是
% |SimSun| 的备用字体。
% \end{function}
-%
-% \subsection{CJK 分区字体设置}\label{sec:xeCJK-block}
+%
+% \subsubsection{\texorpdfstring{\XeTeX}{XeTeX} 的字体名查找}
+% \label{subsubsec:fontsearch}
+%
+% 由于在 \pkg{fontspec} 宏包文档中缺少关于如何查看 \XeTeX{} 可用字体名的说明,
+% 这里略作说明。
+%
+% \XeTeX{} 通常使用 fontconfig 库查找和调用字体,因此,可以用 |fc-list| 命令显
+% 示可用的字体。在命令行(Windows 的“命令提示符”,Linux 的 Console)下运行以
+% 下命令:
+% \begin{verbatim}
+% fc-list > fontlist.txt
+% \end{verbatim}
+% 可以将系统中所有安装的字体列表存入 \file{fontlist.txt} 文件中(可能很长)。
+%
+% |fc-list| 命令列出的信息很多,而且在安装字体较多的 Windows 系统上的输出将非
+% 常庞大,如其中可能包含:
+% \begin{verbatim}[formatcom=\fontspec{CMU Typewriter Text}\CJKfixedspacing]
+% Times New Roman:style=cursiva,kurzíva,kursiv,Πλάγια,Italic,
+% Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,Курсив,
+% İtalik,Poševno,nghiêng,Etzana
+% Times New Roman:style=Negreta cursiva,tučné kurzíva,fed kursiv,
+% Fett Kursiv,Έντονα Πλάγια,Bold Italic,Negrita Cursiva,
+% Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,
+% Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,
+% Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,
+% Krepko poševno,nghiêng đậm,Lodi etzana
+% Times New Roman:style=Negreta,tučné,fed,Fett,Έντονα,Bold,Negrita,
+% Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiona,Negrito,
+% Полужирный,Fet,Kalın,Krepko,đậm,Lodia
+% Times New Roman:style=Normal,obyčejné,Standard,Κανονικά,Regular,
+% Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,
+% thường,Arrunta
+% 宋体,SimSun:style=Regular
+% 黑体,SimHei:style=Normal,obyčejné,Standard,Κανονικά,Regular,Normaali,
+% Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
+% \end{verbatim}
+% 在 \pkg{fontspec} 或 \pkg{xeCJK} 中使用的字体族名是上面列表中冒号前的部分。
+% 例如可以使用
+% \begin{verbatim}
+% \setmainfont{Times New Roman}
+% \setCJKmainfont{SimSun} % 或者 \setCJKmainfont{宋体}
+% \end{verbatim}
+% 来设置字体。
+%
+% 为了方便起见,|fc-list| 命令也可以加上各种选项控制输出格式,例如如果只要列出
+% 所有的中文字体的字体族名,可以用命令:
+% \begin{verbatim}
+% fc-list -f "%{family}\n" :lang=zh > zhfont.txt
+% \end{verbatim}
+% 这样就把字体列表保存在文件 \file{zhfont.txt} 中\footnote{由于汉字编码原因,
+% Windows 下总需要把字体列表输出的文件中防止乱码。}。这样列出的字体列表就比较
+% 简明易用,如 Windows 下预装的中文字体:
+% \begin{verbatim}
+% Arial Unicode MS
+% FangSong,仿宋
+% KaiTi,楷体
+% Microsoft YaHei,微软雅黑
+% MingLiU,細明體
+% NSimSun,新宋体
+% PMingLiU,新細明體
+% SimHei,黑体
+% SimSun,宋体
+% \end{verbatim}
+% 要列出日文和韩文的字体,可以把 |:lang=zh| 选项中的 |zh| 改成 |ja| 或 |ko|。
+%
+% \pkg{fontspec} 和 \pkg{xeCJK} 也可以使用字体的文件名访问字体。例如 Windows
+% 下的宋体也可以使用命令:
+% \begin{verbatim}
+% \setCJKmainfont{simsun.ttc}
+% \end{verbatim}
+% 来设置。设置字体文件名的相关选项和语法在 \pkg{fontspec} 宏包手册中叙述甚详,
+% 这里不再赘述。有个别字体名不规范的中文字体,\pkg{xeCJK} 宏包可能无法正确地通
+% 过字体名访问,那么也可以使用这种方式设置。
+%
+% \subsection{CJK 分区字体设置}
+% \label{subsec:block}
%
% 众所周知,CJK 文字数量极其庞大,单一的字体不可能涵盖所有的 CJK 文字。\pkg{xeCJK} 可
% 以在同一 CJK 字体族下,自动使用不同的字体输出 CJK 字符范围内不同区块里的文字。首先要
@@ -582,14 +704,16 @@ may observe
% \begin{verbatim}
% { `中 -> `文 , "3400 -> "4DBF , "5000 -> "7000 , `汉 , `字 , "3500 }
% \end{verbatim}
-% 的形式。使用
+% 的形式。需要注意的是,这里设置的 \meta{block range} 除非确实需要(例如某些特殊字体使用
+% 了 |Unicode| 中的私人使用区的情况),否则不要超出源代码中预设的
+% \hyperlink{CJKcharclass}{CJK 文字范围}。使用
% \begin{verbatim}
% \xeCJKDeclareSubCJKBlock{SPUA}{ "E400 -> "E4DA , "E500 -> "E5E8 , "E600 -> "E6CE }
% \xeCJKDeclareSubCJKBlock{Ext-B}{ "20000 -> "2A6DF }
% \end{verbatim}
-% 就声明了 |SPUA| 和 |Ext-B| 这两个个子分区。同时在 \ref{sec:xeCJK-font} 节介绍的
+% 就声明了 |SPUA| 和 |Ext-B| 这两个个子分区。同时在 \ref{subsec:fontset} 节介绍的
% CJK 字体设置命令的 \meta{font features} 里新建了 |SPUA| 和 |Ext-B| 这两个选项。
-% 新建的这两个选项的使用方法跟 \ref{sec:xeCJK-font} 介绍的 |FallBack| 类似。可以
+% 新建的这两个选项的使用方法跟 \ref{subsec:fontset} 介绍的 |FallBack| 类似。可以
% 通过它们来设置字体。例如,使用
% \begin{verbatim}
% \setCJKmainfont[SPUA=SunmanPUA,Ext-B=SimSun-ExtB]{SimSun}
@@ -623,7 +747,7 @@ may observe
% \begin{syntax}
% \cs{xeCJKDeclareCharClass} \Arg{class} \Arg{class range}
% \end{syntax}
-% \meta{class range} 的格式和 \ref{sec:xeCJK-block} 节的 \meta{block range} 相同。
+% \meta{class range} 的格式和 \ref{subsec:block} 节的 \meta{block range} 相同。
% \meta{class} 的有效值见源代码(第 \ref{sec:xeCJK-class-set} 节)。\pkg{xeCJK} 已
% 经支持 |Unicode| 中所有 CJK 文字和标点。一般来说,不要轻易改变字符类别。
% \end{function}
@@ -643,7 +767,8 @@ may observe
% 在 \meta{char list} 中出现的字符两端不自动添加空格,默认设置是 |/|。
% \end{function}
%
-% \subsection{设置标点宽度和间距}\label{sec:xeCJK-ps}
+% \subsection{设置标点宽度和间距}
+% \label{subsec:punct}
%
% 这里的设置对除了 |plain| 以外的所有标点处理格式都有效。
%
@@ -669,7 +794,16 @@ may observe
% \end{verbatim}
% \end{function}
%
-% \section{兼容性}
+% \section{已知问题和兼容性}
+%
+% 新版本的 \pkg{xeCJK} 完全使用 \LaTeX3 的语法来编写,受限于目前 |expl3| 宏包的相关
+% 工具的实现方式,在 CJK 文字后面使用 |\outer| 宏时会出现类似
+% \begin{verbatim}
+% ! Forbidden control sequence found while scanning use of \token_if_eq_meaning:NNTF
+% \end{verbatim}
+% 的错误,在 |\outer| 宏前面加上 |\relax| 可以暂时避免这个错误。目前已知的有 \pkg{cprotect}
+% 宏包提供的 |\cprotect|,这时你也可以暂时用 |\icprotect| 代替 |\cprotect|。
+% \footnote{\url{http://code.google.com/p/ctex-kit/issues/detail?id=87}}
%
% 为了与 \pkg{CJKnumb} 和 \pkg{CJKulem} 宏包兼容,\pkg{xeCJK} 使用并重新定义了
% \pkg{CJK} 宏包的部分宏命令,如 |\CJKfamily|、|\CJKsymbol| 和 |\CJKpunctsymbol| 等。
@@ -679,8 +813,10 @@ may observe
% 可以在 \pkg{xeCJK} 之后载入 \pkg{CJKfntef} 宏包,以实现汉字加点等。
%
% \pkg{xeCJK} 依赖 \XeTeX 的 |\XeTeXinterchartoks| 机制,与使用相同机制的宏包(例如
-% \pkg{polyglossia})会存在大小不一的冲突。
+% \pkg{polyglossia})会存在大小不一的冲突。\pkg{xeCJK} 虽然为此作了一些处理,但与它们
+% 共同使用时应该小心。
%
+% \clearpage
%
%\end{documentation}
%
@@ -696,7 +832,7 @@ may observe
% \begin{macrocode}
\RequirePackage{xparse}
\RequirePackage{l3keys2e}
-\ProvidesExplPackage {xeCJK} {2012/05/06} {3.0.4}
+\ProvidesExplPackage {xeCJK} {2012/05/19} {3.0.5}
{package for typesetting CJK scripts with XeLaTeX}
% \end{macrocode}
%
@@ -704,13 +840,14 @@ may observe
% {\xeCJK_msg_new:nn ,\xeCJK_error:n,\xeCJK_error:nx,
% \xeCJK_warning:nx,\xeCJK_info:nx,\xeCJK_info:nxx}
% \begin{macrocode}
-\cs_new_nopar:Npn \xeCJK_msg_new:nn { \msg_new:nnn { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_error:n { \msg_error:nn { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_error:nx { \msg_error:nnx { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_warning:n { \msg_warning:nn { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_warning:nx { \msg_warning:nnx { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_info:nx { \msg_info:nnx { xeCJK } }
-\cs_new_nopar:Npn \xeCJK_info:nxx { \msg_info:nnxx { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_msg_new:nn { \msg_new:nnn { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_error:n { \msg_error:nn { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_error:nx { \msg_error:nnx { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_warning:n { \msg_warning:nn { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_warning:nx { \msg_warning:nnx { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_warning:nxx { \msg_warning:nnxx { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_info:nx { \msg_info:nnx { xeCJK } }
+\cs_new_nopar:Npn \xeCJK_info:nxx { \msg_info:nnxx { xeCJK } }
% \end{macrocode}
% \end{macro}
%
@@ -803,7 +940,7 @@ may observe
% \begin{macrocode}
\cs_new_nopar:Nn \xeCJK_new_class:n
{
- \exp_after:wN \newXeTeXintercharclass \cs:w xeCJK_#1_class\cs_end:
+ \exp_args:Nc \newXeTeXintercharclass { xeCJK_#1_class }
\clist_gclear_new:c { g_xeCJK_#1_range_clist }
\seq_gput_right:Nv \g_xeCJK_class_seq { xeCJK_#1_class }
}
@@ -846,7 +983,7 @@ may observe
% \begin{macro}[internal]{\xeCJK_class_num:n}
% |#1| 为字符类别名称,用于取得字符类别对应的编号。
% \begin{macrocode}
-\cs_new_nopar:Nn \xeCJK_class_num:n { \use:c { xeCJK_#1_class } }
+\cs_new_nopar:Nn \xeCJK_class_num:n { \tl_use:c { xeCJK_#1_class } }
% \end{macrocode}
% \end{macro}
%
@@ -1169,9 +1306,7 @@ may observe
% 取出相邻类别之间的内容。
% \begin{macrocode}
\cs_new_nopar:Nn \xeCJK_get_inter_class_toks:nn
- {
- \tex_the:D \XeTeXinterchartoks \xeCJK_class_num:n {#1} \xeCJK_class_num:n {#2}
- }
+ { \tex_the:D \XeTeXinterchartoks \xeCJK_class_num:n {#1} \xeCJK_class_num:n {#2} }
% \end{macrocode}
% \end{macro}
%
@@ -1202,6 +1337,82 @@ may observe
%
% \subsection{字符输出规则}
%
+% \hspace*{-.8\marginparwidth}
+% \begin{tabular}{l*8c}
+% \toprule
+% & |Default| & |CJK| & |FullLeft| & |FullRight| & |HalfLeft|
+% & |HalfRight| & |NormalSpace| & |Boundary| \\ \midrule
+% |Default|
+% &
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% &
+% &
+% &
+% & \tokslink{def-bound}\\
+% |CJK|
+% & \tokslink{def-cjk}
+% & \tokslink{cjk-cjk}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{cjk-bound}\\
+% |FullLeft|
+% & \tokslink{def-cjk}
+% & \tokslink{fl-fr-bound-cjk}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{fl-fr-bound-cjk}\\
+% |FullRight|
+% & \tokslink{def-cjk}
+% & \tokslink{fl-fr-bound-cjk}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{cjk-fl-fr}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{fl-fr-bound-cjk}\\
+% |HalfLeft|
+% &
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk} \\
+% |HalfRight|
+% &
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% &
+% &
+% &
+% & \tokslink{def-bound} \\
+% |NormalSpace|
+% &
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% & \tokslink{def-cjk}
+% &
+% &
+% &
+% & \tokslink{def-bound}\\
+% |Boundary|
+% & \tokslink{bound-def}
+% & \tokslink{bound-cjk}
+% & \tokslink{fl-fr-bound-cjk}
+% & \tokslink{fl-fr-bound-cjk}
+% & \tokslink{bound-def}
+% &
+% & \tokslink{bound-def}\\
+% \bottomrule
+% \end{tabular}
+%
+% \hypertarget{def-cjk}{}
% \begin{macrocode}
\clist_map_inline:nn { Default, HalfLeft, HalfRight, NormalSpace }
{
@@ -1214,21 +1425,15 @@ may observe
\xeCJK_clear_inter_class_toks:nn {#1} {##1}
\xeCJK_clear_CJK_toks:
}
+ \xeCJK_inter_class_toks:nnn {##1} {#1} { \c_group_end_token }
}
\xeCJK_app_inter_class_toks:nnn {#1} { CJK } { \CJKsymbol }
\clist_map_inline:nn { FullLeft, FullRight }
{ \xeCJK_app_inter_class_toks:nnc {#1} {##1} { xeCJK_CJK_and_##1:N } }
- \xeCJK_inter_class_toks:nnn { CJK } {#1} { \c_group_end_token }
- \xeCJK_inter_class_toks:nnn { FullLeft } {#1} { \nobreak \c_group_end_token }
- \xeCJK_inter_class_toks:nnn { FullRight } {#1}
- { \xeCJK_after_FullRight: \c_group_end_token }
}
% \end{macrocode}
%
-% \begin{macrocode}
-\xeCJK_pre_inter_class_toks:nnn { Default } { CJK } { \CJKecglue }
-% \end{macrocode}
-%
+% \hypertarget{bound-def}{}
% \begin{macrocode}
\clist_map_inline:nn { Default, HalfLeft, NormalSpace }
{
@@ -1242,6 +1447,7 @@ may observe
}
% \end{macrocode}
%
+% \hypertarget{def-bound}{}
% \begin{macrocode}
\clist_map_inline:nn { Default, HalfRight, NormalSpace }
{
@@ -1250,9 +1456,12 @@ may observe
\peek_catcode:NTF \c_space_token
{ { \xeCJK_default_space_kern: } } { { \xeCJK_default_kern: } }
}
+ \str_if_eq:xxF {#1} { NormalSpace }
+ { \xeCJK_pre_inter_class_toks:nnn {#1} { CJK } { \CJKecglue } }
}
% \end{macrocode}
%
+% \hypertarget{bound-cjk}{}
% \begin{macrocode}
\xeCJK_inter_class_toks:nnn { Boundary } { CJK } { \xeCJK_Boundary_and_CJK: }
% \end{macrocode}
@@ -1282,8 +1491,7 @@ may observe
{
\l_xeCJK_xecglue_bool &&
\int_compare_p:nNn \etex_lastnodetype:D = \c_eleven &&
- ( \int_compare_p:nNn
- \tex_lastskip:D = { \tex_fontdimen:D \c_two \tex_font:D } ||
+ ( \skip_if_eq_p:nn \tex_lastskip:D \l_xeCJK_space_glue_tl ||
\int_compare_p:nNn \tex_lastskip:D = \l_xeCJK_ecglue_dim )
}
{
@@ -1316,9 +1524,16 @@ may observe
\xeCJK_select_font:
\CJKsymbol
}
+\tl_set:Nn \l_xeCJK_space_glue_tl
+ {
+ \tex_fontdimen:D \c_two \tex_font:D
+ \@plus \tex_fontdimen:D \c_three \tex_font:D
+ \@minus \tex_fontdimen:D \c_four \tex_font:D
+ }
% \end{macrocode}
% \end{macro}
%
+% \hypertarget{cjk-bound}{}
% \begin{macrocode}
\xeCJK_inter_class_toks:nnn { CJK } { Boundary }
{
@@ -1326,6 +1541,10 @@ may observe
{ \xeCJK_CJK_kern: }
\xeCJK_ignorespaces:
}
+% \end{macrocode}
+%
+% \hypertarget{cjk-cjk}{}
+% \begin{macrocode}
\xeCJK_inter_class_toks:nnn { CJK } { CJK } { \xeCJK_CJK_and_CJK:N }
% \end{macrocode}
%
@@ -1335,6 +1554,7 @@ may observe
% \end{macrocode}
% \end{macro}
%
+% \hypertarget{fl-fr-bound-cjk}{}
% \begin{macrocode}
\clist_map_inline:nn { FullLeft, FullRight }
{
@@ -1346,19 +1566,31 @@ may observe
\use:c { xeCJK_CJK_and_#1:N }
}
\xeCJK_inter_class_toks:nnn {#1} { CJK } { \CJKsymbol }
- \xeCJK_inter_class_toks:nnn {#1} { Boundary }
- { \c_group_end_token \tex_ignorespaces:D }
- \clist_map_inline:nn { CJK, Boundary }
+ \xeCJK_inter_class_toks:nnn {#1} { Boundary } { \c_group_end_token \tex_ignorespaces:D }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\clist_map_inline:Nn \g_xeCJK_base_class_clist
+ {
+ \bool_if:nF
+ { \str_if_eq_p:xx {#1} { FullLeft } || \str_if_eq_p:xx {#1} { FullRight } }
{
- \exp_args:Nnnx \xeCJK_pre_inter_class_toks:nnn {#1} {##1}
- {
- \str_if_eq:xxTF {#1} { FullLeft }
- { \exp_not:N \nobreak } { \exp_not:N \xeCJK_after_FullRight: }
- }
+ \xeCJK_pre_inter_class_toks:nnn { FullLeft } {#1} { \nobreak }
+ \xeCJK_pre_inter_class_toks:nnn { FullRight } {#1} { \xeCJK_after_FullRight: }
}
}
% \end{macrocode}
%
+% \hypertarget{cjk-fl-fr}{}
+% \begin{macrocode}
+\clist_map_inline:nn { CJK, FullLeft, FullRight }
+ {
+ \clist_map_inline:nn { FullLeft, FullRight }
+ { \xeCJK_inter_class_toks:nnc {#1} {##1} { xeCJK_#1_and_##1:N } }
+ }
+% \end{macrocode}
+%
% \begin{macro}[internal]{\xeCJK_punct_rule:n}
% 用于抹去标点符号的左/右空白。
% \begin{macrocode}
@@ -1423,14 +1655,6 @@ may observe
% \end{macrocode}
% \end{macro}
%
-% \begin{macrocode}
-\clist_map_inline:nn { CJK, FullLeft, FullRight }
- {
- \clist_map_inline:nn { FullLeft, FullRight }
- { \xeCJK_inter_class_toks:nnc {#1} {##1} { xeCJK_#1_and_##1:N } }
- }
-% \end{macrocode}
-%
% \begin{macro}[internal]{\xeCJK_CJK_and_FullLeft:N}
% \begin{macrocode}
\cs_new_nopar:Nn \xeCJK_CJK_and_FullLeft:N
@@ -2121,8 +2345,7 @@ may observe
{ \l_xeCJK_punct_coor_tl/bound/\str_if_eq:xxTF {#1} lrl/#2 }
\dim_set:Nn \l_tmpc_dim
{
- \tl_if_exist:cTF { g_xeCJK_punct_width/#2 }
- { \tl_use:c { g_xeCJK_punct_width/#2 } }
+ \cs_if_exist_use:cF { g_xeCJK_punct_width/#2 }
{
\tl_if_blank:xTF \g_xeCJK_punct_width_tl
{ \c_zero_dim }
@@ -2610,7 +2833,7 @@ may observe
{
\exp_args:No \tl_if_head_group:nT #1
{
- \exp_after:wN \tl_set:Nn \exp_after:wN #1 #1
+ \exp_last_unbraced:NNo \tl_set:Nn #1 #1
\xeCJK_gobble_brace:N #1
}
}
@@ -2732,6 +2955,8 @@ may observe
\tl_set:Nx \l_xeCJK_family_tl {#1}
\clist_set:Nx \l_xeCJK_fontoptions_clist {#2}
\tl_set:Nx \l_xeCJK_fontname_tl {#3}
+ \prop_gpop:NVNT \g_xeCJK_family_name_prop \l_xeCJK_family_tl \l_tmpa_tl
+ { \xeCJK_warning:nxx { CJKfamily-redef } \l_xeCJK_family_tl \l_tmpa_tl }
\keys_set_known:nxN { xeCJK / features }
{ \g_xeCJK_default_features_clist, #2 } \l_xeCJK_pass_features_clist
\xeCJK_parse_features:
@@ -2755,6 +2980,7 @@ may observe
\group_end:
}
\cs_generate_variant:Nn \xeCJK_set_family:nnn { ncc }
+\xeCJK_msg_new:nn { CJKfamily-redef } { Redefining~CJKfamily~`#1'~(#2). }
% \end{macrocode}
% \end{macro}
%
@@ -2776,6 +3002,7 @@ may observe
% \end{macro}
%
% \begin{macrocode}
+\cs_generate_variant:Nn \prop_gpop:NnNT { NV }
\cs_generate_variant:Nn \prop_put:Nnn { Nxx }
\cs_generate_variant:Nn \prop_get:Nn { NV }
\cs_generate_variant:Nn \prop_get:NnNF { Nx }
@@ -3435,7 +3662,7 @@ may observe
{
CJKnumber .bool_set:N = \g_xeCJK_number_bool ,
indentfirst .bool_set:N = \g_xeCJK_indent_bool ,
- normalindentfirst .meta:n = { indentfirst = true } ,
+ normalindentfirst .meta:n = { indentfirst = false } ,
quiet .code:n =
{
\msg_redirect_module:nnn { xeCJK } { warning } { info }
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
index d791e0e4ca5..a4b3f02d63f 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
@@ -6,11 +6,14 @@
%%
%% xeCJK.dtx (with options: `batchfile')
%%
-%% Version 3.0.4 (06-May-2012)
+%% Version 3.0.5 (19-May-2012)
%% -----------------------------------------------------------------
-%% Author: Wenchang Sun <sunwch@hotmail.com>
-%% Maintainer: Leo Liu <leoliu.pku@gmail.com>
-%% Qing Lee <sobenlee@gmail.com>
+%% Author:
+%% Wenchang Sun <sunwch@nankai.edu.cn>
+%% Current Maintainers:
+%% Leo Liu <leoliu.pku@gmail.com>
+%% Qing Lee <sobenlee@gmail.com>
+%%
%% Copyright (C) 2007--2012 Wenchang Sun
%%
%% This file may be distributed and/or modified under the
@@ -29,11 +32,14 @@
\keepsilent
\preamble
- Version 3.0.4 (06-May-2012)
+ Version 3.0.5 (19-May-2012)
-----------------------------------------------------------------
- Author: Wenchang Sun <sunwch@hotmail.com>
- Maintainer: Leo Liu <leoliu.pku@gmail.com>
- Qing Lee <sobenlee@gmail.com>
+ Author:
+ Wenchang Sun <sunwch@nankai.edu.cn>
+ Current Maintainers:
+ Leo Liu <leoliu.pku@gmail.com>
+ Qing Lee <sobenlee@gmail.com>
+
Copyright (C) 2007--2012 Wenchang Sun
This file may be distributed and/or modified under the