summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-11-12 23:32:07 +0000
committerKarl Berry <karl@freefriends.org>2014-11-12 23:32:07 +0000
commit8c7b32258dcc47d52a82c8cf346c696dd0c669a0 (patch)
treebff03cf2ac31964d8f088cc6299da3825a9e9b30 /Master/texmf-dist/source/xelatex
parentfce3dedd3f9904785b99f0021d2b39fb3a582474 (diff)
xecjk (12nov14)
git-svn-id: svn://tug.org/texlive/trunk@35568 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex')
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx264
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins4
2 files changed, 198 insertions, 70 deletions
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
index 38db97e7078..a6c06be753a 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
@@ -95,7 +95,7 @@ CJK scripts fonts (TrueType or OpenType).
\askforoverwritefalse
\preamble
-$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+$Id: xeCJK.dtx 737 2014-11-10 17:04:31Z sobenlee@gmail.com $
$URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
-----------------------------------------------------------------
Author:
@@ -201,7 +201,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
%</!config&!xunextra>
-\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+\GetIdInfo$Id: xeCJK.dtx 737 2014-11-10 17:04:31Z sobenlee@gmail.com $
%<*driver|package>
{Typesetting CJK scripts with XeLaTeX}
%</driver|package>
@@ -223,7 +223,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%<fntef> {xeCJKfntef}
%<listings> {xeCJK-listings}
%<xunicode> {xunicode-addon}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
%<xunextra>\ExplSyntaxOff
%<*driver>
\let\xeCJKrevnum\ExplFileVersion
@@ -261,7 +261,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\xeCJKDeclareSubCJKBlock{Hangul}{ "1100 -> "11FF, "3130 -> "318F, "A960 -> "A97F, "AC00 -> "D7AF }
\setCJKmainfont[HKMD]{Microsoft YaHei}
\setCJKmainfont[Ext-B]{SimSun-ExtB}
-\setCJKmainfont[Hangul]{Adobe Myungjo Std}
+\setCJKmainfont[Hangul, Script=Hangul]{Malgun Gothic}
\xeCJKsetup{PunctStyle=kaiming,KaiMingPunct+={:;}}
\def\MacroFont{\small\linespread{1}\normalfont\ttfamily}
\def\XeTeX{\hologo{XeTeX}}
@@ -397,7 +397,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \changes{v3.2.4}{2013/07/02}{遵循 \hologo{LaTeX3} 变量需要预先声明的原则。}
% \changes{v3.2.6}{2013/07/29}{\texttt{case} 类函数的用法与 \hologo{LaTeX3} 同步。}
%
-% \CheckSum{9574}
+% \CheckSum{9648}
% \GetFileInfo{\jobname.dtx}
%
% \title{\bfseries\pkg{xeCJK} 宏包}
@@ -1133,7 +1133,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \begin{syntax}
% \tn{normalspacedchars} \Arg{char list}
% \end{syntax}
-% 在 \meta{char list} 中出现的字符两端不自动添加空格,初始设置是 |/|。
+% 在 \meta{char list} 中出现的字符两端不自动添加空格,初始设置是 |/|、|\|、
+% - (|U+002D|) 和 \textendash\ (|U+2013|)。
% \end{function}
%
% \subsection{标点符号的处理}
@@ -1374,9 +1375,9 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \csappto{NoHighlight@Attributes}{\catcode37=14\relax}
%
% \begin{Example}[frame=single,numbers=left,gobble=4]
-% \CJKsout*{瞻彼阕者,虚室生白,吉祥止止}\\
% \CJKunderline-{南朝}\CJKunderline-{梁}\CJKunderline-{劉勰}%
-% \CJKunderwave-{文心雕龍}\CJKunderwave-{養氣}
+% \CJKunderwave-{文心雕龍}\CJKunderwave-{養氣}\\
+% \CJKunderline*[thickness=1pt, hidden=true]{瞻彼阕者,虚室生白,吉祥止止}
% \end{Example}
%
% \begin{function}[updated=2014-11-04]{\CJKunderdot}
@@ -1411,6 +1412,10 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% 号,具有相同的效果。
% \end{function}
%
+% \begin{function}{hidden}
+% 设置本选项为 \texttt{true},将隐藏文本内容,只画下划线。
+% \end{function}
+%
% \begin{function}{format}
% \begin{syntax}
% \tn{xeCJKsetup} \{ underline/format = \tn{color}\{red\} \}
@@ -1479,12 +1484,15 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \pkg{xeCJKfntef} 还提供给了自定义下划线和符号的 \tn{CJKunderanyline} 和
% \tn{CJKunderanysymbol}。
%
-% \begin{function}[updated=2014-11-04]{\CJKunderanyline}
+% \begin{function}[updated=2014-11-07]{\CJKunderanyline}
% \begin{syntax}
-% \tn{CJKunderanyline} [*] [-] \Arg{深度} \Arg{下划内容} \Arg{文本内容}
+% \tn{CJKunderanyline} [*] [-] \oarg{选项} \Arg{深度} \Arg{下划内容} \Arg{文本内容}
% \end{syntax}
% \pkg{xeCJKfntef} 先将 \meta{下划内容} 放进一个盒子(\tn{xeCJKfntefbox})里,然后
-% 向下移动 \meta{深度} 给定的距离,再用于填充。
+% 向下移动 \meta{深度} 给定的距离,再用于填充。可用的 \meta{选项} 是
+% \texttt{skip}、\texttt{hidden}、\texttt{subtract}、\texttt{sep} 和
+% \texttt{boxdepth}。选项 \texttt{sep} 和 \texttt{boxdepth} 的初始值是空,表示
+% 禁用该选项的功能。可以在 \tn{xeCJKsetup} 中通过对象 \texttt{ulem} 来设置。
% \end{function}
%
% \smallskip
@@ -1514,11 +1522,23 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% {瞻彼阕者,虚室生白,\CJKunderline{吉祥止止}}
% \end{Example}
%
-% \begin{function}[added=2014-11-04]{\xeCJKfntefon}
-% 功能与用法 \pkg{ulem} 宏包的 \tn{ULon} 相同,扩展了可选参数符号 |*| 和 |-|,分别
-% 用于设置下划线不跳过下划线和下划线首尾缩小一定距离。
+% \begin{function}[updated=2014-11-07]{\xeCJKfntefon}
+% \begin{syntax}
+% \tn{xeCJKfntefon} [*] [-] \oarg{选项}
+% \end{syntax}
+% 功能与用法 \pkg{ulem} 宏包的 \tn{ULon} 相同,扩展了可选参数符号 |*| 和 |-|,
+% 可用的 \meta{选项} 是 \texttt{skip}、\texttt{hidden} 和 \texttt{subtract}。
+% 这三个选项对 \pkg{ulem} 宏包定义的 \tn{uline} 等命令也有效,需要在
+% \tn{xeCJKsetup} 中通过对象 \texttt{ulem} 来设置。例如\smallskip
+%
+% \begin{SideBySideExample}[frame=single,numbers=left,xrightmargin=.35\linewidth,gobble=6]
+% \xeCJKsetup{ulem/skip=true}
+% \uline{虚室生白,吉祥止止}
+% \end{SideBySideExample}
% \end{function}
%
+% \smallskip
+%
% 此外,\pkg{xeCJKfntef} 还提供了指定宽度,让汉字分散对齐的的环境
% \env{CJKfilltwosides} 和 \env{CJKfilltwosides*}。
%
@@ -1529,7 +1549,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% 文本内容
% \tn{end}\{CJKfilltwosides\}
% \end{syntax}
-% 环境中的内容被放入垂直盒子中,可选参数 \oarg{位置} 指定盒子的基线位置。
+% 环境中的内容被放入垂直盒子中,可选参数 \meta{位置} 指定盒子的基线位置。
% 可以使用 \texttt{t}(顶部)、\texttt{c}(居中)和 \texttt{b}(底部),默认是 \texttt{c}。
% \meta{宽度} 参数指定盒子的宽度。
% \env{CJKfilltwosides*} 环境与 \env{CJKfilltwosides} 的区别是,当 \meta{宽度}
@@ -1623,8 +1643,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% 加上 \tn{relax} 来回避上面的错误。
%
% \pkg{xeCJK} 依赖 \XeTeX 的 \tn{XeTeXinterchartoks} 机制,与使用相同机制的宏包(例如
-% \pkg{polyglossia})可能会存在大小不一的冲突。\pkg{xeCJK} 虽然为此作了一些处理,但与
-% 它们共同使用时应该小心。
+% \pkg{polyglossia} 和 \pkg{xesearch})可能会存在大小不一的冲突。
+% \pkg{xeCJK} 虽然为此作了一些处理,但与它们共同使用时应该小心。
%
%\end{documentation}
%
@@ -2253,6 +2273,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% |NormalSpace| & 前后原始间距的符号 & / \\
% |Boundary| & 边界 & 空格 \\
% |IVS| & 异体字选择符 & “回字有四样写法”\\
+% |HangulJamo| & 朝鲜文字母 & |ᄻ||ᆟ||ᇫ|\\
% \bottomrule
% \end{tabular}
% \end{center}
@@ -2268,28 +2289,34 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{HalfLeft,HalfRight,NormalSpace,IVS}
+% \changes{v3.2.15}{2014/11/10}{增加 \texttt{HangulJamo} 字符类。}
+%
+% \begin{macro}[internal]{HalfLeft,HalfRight,NormalSpace,IVS,HangulJamo}
% 新增西文半角左/右标点、前后原始间距的符号和异体字选择符类。
% \begin{macrocode}
\xeCJK_new_class:n { HalfLeft }
\xeCJK_new_class:n { HalfRight }
\xeCJK_new_class:n { NormalSpace }
\xeCJK_new_class:n { IVS }
+\xeCJK_new_class:n { HangulJamo }
% \end{macrocode}
% \end{macro}
%
% \changes{v3.2.11}{2014/04/10}
% {左右角括号 \texttt{U+2329} 和 \texttt{U+232A} 是西文标点符号。}
+% \changes{v3.2.15}{2014/11/09}
+% {把 REVERSE SOLIDUS(\texttt{U+005C})、HYPHEN-MINUS(\texttt{U+002D})和
+% EN DASH(\texttt{U+2013})归入 \texttt{NormalSpace} 类。}
%
% \begin{macro}[var,internal]
% {\c_@@_HalfLeft_chars_clist,\c_@@_HalfRight_chars_clist,\c_@@_NormalSpace_chars_clist}
% \hypertarget{CJKcharclass}{西文半角左/右标点和前后原始间距的字符类。}
% \begin{macrocode}
\clist_const:Nn \c_@@_HalfLeft_chars_clist
- { "28 , "2D , "5B , "60 , "7B , "2329 }
+ { "28 , "5B , "60 , "7B , "2329 }
\clist_const:Nn \c_@@_HalfRight_chars_clist
{ "21 , "22 , "25 , "27 , "29 , "2C , "2E , "3A , "3B , "3F , "5D , "7D , "232A }
-\clist_const:Nn \c_@@_NormalSpace_chars_clist { "2F }
+\clist_const:Nn \c_@@_NormalSpace_chars_clist { "2D , "2F , "5C , "2013 }
% \end{macrocode}
% \end{macro}
%
@@ -2425,10 +2452,6 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{
% \end{macrocode}
% \begin{itemize}[nosep,leftmargin=0pt]
-% \item Hangul Jamo (谚文字母)
-% \begin{macrocode}
- "1100 -> "11FF ,
-% \end{macrocode}
% \item CJK Radicals Supplement (中日韩部首补充)
% \begin{macrocode}
"2E80 -> "2EFF ,
@@ -2505,18 +2528,10 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \begin{macrocode}
"A490 -> "A4CF ,
% \end{macrocode}
-% \item Hangul Jamo Extended-A (谚文扩展 A)
-% \begin{macrocode}
- "A960 -> "A97F ,
-% \end{macrocode}
% \item Hangul Syllables (谚文音节)
% \begin{macrocode}
"AC00 -> "D7AF ,
% \end{macrocode}
-% \item Hangul Jamo Extended-B (谚文扩展 B)
-% \begin{macrocode}
- "D7B0 -> "D7FF ,
-% \end{macrocode}
% \item CJK Compatibility Ideographs (中日韩兼容表意文字)
% \begin{macrocode}
"F900 -> "FAFF ,
@@ -2588,6 +2603,31 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[var,internal]{\c_@@_HangulJamo_chars_clist}
+% 朝鲜文字母。
+% \begin{macrocode}
+\clist_const:Nn \c_@@_HangulJamo_chars_clist
+ {
+% \end{macrocode}
+% \begin{itemize}[nosep,leftmargin=0pt]
+% \item Hangul Jamo (谚文字母)
+% \begin{macrocode}
+ "1100 -> "11FF ,
+% \end{macrocode}
+% \item Hangul Jamo Extended-A (谚文扩展 A)
+% \begin{macrocode}
+ "A960 -> "A97F ,
+% \end{macrocode}
+% \item Hangul Jamo Extended-B (谚文扩展 B)
+% \begin{macrocode}
+ "D7B0 -> "D7FF
+% \end{macrocode}
+% \end{itemize}
+% \begin{macrocode}
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{字符类别处理}
%
% \begin{macro}[internal,var]
@@ -2604,7 +2644,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\seq_gput_right:Nn \g_@@_CJK_class_seq {#1}
\tl_const:cn { \@@_CJK_class_tl:c { \@@_class_csname:n {#1} } } {#1}
}
-\clist_map_function:nN { CJK , FullLeft , FullRight , IVS } \@@_save_CJK_class:n
+\clist_map_function:nN
+ { CJK , FullLeft , FullRight , IVS , HangulJamo } \@@_save_CJK_class:n
% \end{macrocode}
% \end{macro}
%
@@ -2745,6 +2786,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\xeCJK_declare_char_class:nV { CJK } \c_@@_CJK_chars_clist
\xeCJK_declare_char_class:nV { NormalSpace } \c_@@_NormalSpace_chars_clist
\xeCJK_declare_char_class:nV { IVS } \c_@@_IVS_chars_clist
+ \xeCJK_declare_char_class:nV { HangulJamo } \c_@@_HangulJamo_chars_clist
\xeCJKResetPunctClass
}
% \end{macrocode}
@@ -2972,6 +3014,22 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
}
% \end{macrocode}
%
+% \hypertarget{def-HJ}{\texttt{HangulJamo}} 字符类与 |CJK| 字符类基本相同,只是
+% |HangulJamo| 类之间不加入任何内容。
+% \begin{macrocode}
+\AtEndOfPackage
+ {
+ \seq_map_inline:Nn \g_@@_class_seq
+ {
+ \str_if_eq:nnF {#1} { HangulJamo }
+ {
+ \xeCJK_copy_inter_class_toks:nnnn { HangulJamo } {#1} { CJK } {#1}
+ \xeCJK_copy_inter_class_toks:nnnn {#1} { HangulJamo } {#1} { CJK }
+ }
+ }
+ }
+% \end{macrocode}
+%
% \hypertarget{def-cjk}{}
% \begin{macrocode}
\clist_map_inline:nn { Default , HalfLeft , HalfRight , NormalSpace }
@@ -4370,7 +4428,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
}
\seq_gput_right:Nn \g_@@_CJK_sub_class_seq {#2}
\@@_save_CJK_class:n { #1/#2 }
- \clist_map_inline:nn { CJK , FullLeft , FullRight }
+ \clist_map_inline:nn { CJK , FullLeft , FullRight , HangulJamo }
{
\xeCJK_pre_inter_class_toks:nnn { #1/#2 } {##1}
{ \@@_switch_font:nn {#2} {#1} }
@@ -7552,6 +7610,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \changes{v3.2.14}{2014/10/31}{完善 \tn{varCJKunderline} 的实现。}
% \changes{v3.2.14}{2014/10/31}{解决下划线前后没有 \tn{CJKglue} 或 \tn{CJKecglue} 的问题。}
% \changes{v3.2.14}{2014/11/03}{\pkg{xeCJKfntef} 不再依赖 \pkg{CJKfntef}。}
+% \changes{v3.2.15}{2014/11/07}{\pkg{xeCJKfntef} 增加 \texttt{hidden} 选项。}
%
% \begin{macrocode}
%<*fntef>
@@ -7591,11 +7650,17 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\@@_ulem_initial:
\bool_if:NT \l_@@_ulem_subtract_bool
{
- \cs_set_eq:NN \xeCJK_ulem_leaders: \UL@leaders
- \cs_set_eq:NN \UL@leaders \xeCJK_ulem_var_leaders:
+ \xeCJK_swap_cs:NN \UL@leaders \xeCJK_ulem_leaders:
+ \cs_set_eq:NN \@@_ulem_var_leaders: \xeCJK_ulem_var_leaders:
\cs_set_eq:NN \xeCJK_ulem_right_skip: \@@_ulem_right_skip:
}
- \bool_if:NF \l_@@_ulem_skip_bool
+ \bool_if:NT \l_@@_ulem_hidden_bool
+ { \cs_set_eq:NN \UL@putbox \@@_ulem_hidden_box: }
+ \bool_if:NTF \l_@@_ulem_skip_bool
+ {
+ \cs_set_eq:NN \@@_ulem_putbox: \UL@putbox
+ \cs_set_eq:NN \@@_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
+ }
{
\xeCJK_swap_cs:NN \@@_punct_kern:n \@@_ulem_punct_kern:n
\xeCJK_swap_cs:NN \@@_punct_hskip:n \@@_ulem_punct_hskip:n
@@ -7727,7 +7792,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
}
\cs_new_eq:NN \@@_ulem_hskip:n \@@_ulem_hskip_first:n
\cs_new_protected_nopar:Npn \xeCJK_ulem_hskip:n #1
- { \skip_set:Nn \UL@skip {#1} \UL@leaders }
+ { { \skip_set:Nn \UL@skip {#1} \UL@leaders } }
% \end{macrocode}
% \end{macro}
%
@@ -7774,7 +7839,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% 第一次画下划线时,先向右平移 \tn{CJKulineleftskip},再画缩小了相同长度的下划线,
% 让左侧有间距。
% \begin{macrocode}
-\cs_new_eq:NN \xeCJK_ulem_leaders: \UL@leaders
+\cs_new_protected_nopar:Npn \xeCJK_ulem_leaders:
+ { \@@_ulem_var_leaders: }
\cs_new_protected_nopar:Npn \xeCJK_ulem_var_leaders:
{
\scan_stop:
@@ -7782,9 +7848,10 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{
\UL@leadtype \skip_horizontal:n { \UL@skip + \UL@pixel }
\skip_horizontal:n { - \UL@pixel }
- \cs_gset_eq:NN \UL@leaders \xeCJK_ulem_leaders:
+ \cs_gset_eq:NN \@@_ulem_var_leaders: \xeCJK_ulem_leaders:
}
}
+\cs_new_eq:NN \@@_ulem_var_leaders: \xeCJK_ulem_var_leaders:
% \end{macrocode}
% \end{macro}
%
@@ -7805,6 +7872,13 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\cs_new_protected_nopar:Npn \@@_ulem_right_skip_hbox:
{
\box_set_to_last:N \l_@@_tmp_box
+ \int_compare:nNnTF \etex_lastnodetype:D = \c_twelve
+ { \@@_ulem_right_skip_kern: }
+ { \@@_ulem_right_skip_glue: }
+ \box_use_clear:N \l_@@_tmp_box
+ }
+\cs_new_protected_nopar:Npn \@@_ulem_right_skip_kern:
+ {
\dim_set:Nn \l_@@_tmp_dim { - \box_wd:N \l_@@_tmp_box }
\dim_compare:nNnT \tex_lastkern:D = \l_@@_tmp_dim
{
@@ -7812,7 +7886,6 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\@@_ulem_right_skip_glue:
\tex_kern:D \l_@@_tmp_dim
}
- \box_use_clear:N \l_@@_tmp_box
}
\cs_new_protected_nopar:Npn \@@_ulem_right_skip_glue:
{
@@ -7835,14 +7908,37 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[internal]{\@@_ulem_hidden_box:}
+% 只画线,不输出盒子。
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_ulem_hidden_box:
+ {
+ \tl_if_empty:NF \UL@start
+ {
+ \xeCJK_zero_vrule:
+ \xeCJK_no_break:
+ \xeCJK_ulem_hskip:n { \box_wd:N \UL@box }
+ \box_use:N \c_@@_null_box
+ }
+ }
+\box_new:N \c_@@_null_box
+\hbox_gset:Nn \c_@@_null_box { }
+\cs_new_protected_nopar:Npn \xeCJK_zero_vrule:
+ {
+ \tex_vrule:D
+ width \c_zero_dim
+ depth \c_zero_dim
+ height \c_zero_dim \scan_stop:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[internal]{\@@_ulem_skip_punct_begin:,\@@_ulem_skip_punct_end:}
% 让下划线跳过标点符号的设置。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_ulem_skip_punct_begin:
{
- \cs_set_eq:NN \@@_ulem_putbox: \UL@putbox
\cs_set_eq:NN \UL@putbox \@@_ulem_skip_putbox:
- \cs_set_eq:NN \@@_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
\cs_set_eq:NN \xeCJK_ulem_hskip:n \skip_horizontal:n
}
\cs_new_protected_nopar:Npn \@@_ulem_skip_punct_end:
@@ -8251,22 +8347,19 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
L \int_use:N \etex_currentgrouplevel:D
}
\cs_new_protected_nopar:Npn \@@_ulem_ccglue:
- { \skip_set_eq:NN \UL@skip \l_@@_ccglue_skip \UL@leaders }
+ { { \skip_set_eq:NN \UL@skip \l_@@_ccglue_skip \UL@leaders } }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\xeCJKfntefon}
-% 扩展 \tn{ULon} 的参数,带 |*| 表示不跳过标点符号,带 |-| 表示两端减小一定距离。
+% \changes{v3.2.15}{2014/11/07}{完善选项。}
+% 扩展 \tn{ULon} 的参数。
% \begin{macrocode}
-\NewDocumentCommand \xeCJKfntefon
- { > { \ReverseBoolean } s t- > { \ReverseBoolean } s }
+\NewDocumentCommand \xeCJKfntefon { s t- s o }
{
- \bool_set:Nn \l_@@_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l_@@_ulem_subtract_bool #2
+ \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\ULon
}
-\bool_new:N \l_@@_ulem_subtract_bool
-\bool_new:N \l_@@_ulem_skip_bool
\cs_new_eq:NN \xeCJK_ulem_on:n \UL@on
\cs_set_protected:Npn \UL@on #1
{ \xeCJK_ulem_on:n { \xeCJK_ulem_left: #1 \xeCJK_ulem_right: } }
@@ -8387,20 +8480,27 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macro}
%
% \begin{macro}{\CJKunderanyline}
+% \changes{v3.2.15}{2014/11/07}{完善选项。}
% \begin{macrocode}
-\DeclareDocumentCommand \CJKunderanyline
- { > { \ReverseBoolean } s t- > { \ReverseBoolean } s m m }
+\DeclareDocumentCommand \CJKunderanyline { s t- s o m m }
{
\c_group_begin_token
+ \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\xeCJK_fntef_initial:nn
- {#5}
+ {#6}
{
\box_move_down:nn
- {#4}
+ {#5}
{ \box_use:N \l_@@_fntef_box }
}
- \bool_set:Nn \l_@@_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l_@@_ulem_subtract_bool #2
+ \tl_if_empty:NF \l_@@_ulem_boxdepth_tl
+ { \box_set_dp:Nn \ULC@box { \l_@@_ulem_boxdepth_tl } }
+ \tl_if_empty:NF \l_@@_ulem_sep_tl
+ {
+ \bool_set_true:N \l_@@_fntef_bool
+ \dim_set:Nn \l_@@_fntef_dim
+ { \l_@@_ulem_sep_tl + \box_dp:N \ULC@box }
+ }
\ULon
}
% \end{macrocode}
@@ -8418,8 +8518,18 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\IfNoValueF {#6}
{ \keys_set:nn { xeCJK / options / #1 } {#6} }
\bool_set_eq:Nc \l_@@_ulem_skip_bool { l_@@_#2_skip_bool }
+ \bool_set_eq:Nc \l_@@_ulem_hidden_bool { l_@@_#2_hidden_bool }
\bool_set_eq:Nc \l_@@_ulem_subtract_bool { l_@@_#2_subtract_bool }
}
+\cs_new_protected:Npn \xeCJK_ulem_boot:NNNn #1#2#3#4
+ {
+ \bool_if:nT { #1 || #3 }
+ { \bool_set_false:N \l_@@_ulem_skip_bool }
+ \IfBooleanT #2
+ { \bool_set_true:N \l_@@_ulem_subtract_bool }
+ \IfNoValueF {#4}
+ { \keys_set:nn { xeCJK / options / ulem } {#4} }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -8509,6 +8619,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \end{macrocode}
% \end{macro}
%
+% 最合适的是用 \pkg{xtemplate} 宏包来实现,但是比较难于用 \tn{xeCJKsetup} 来统一
+% 设置,所以这里还是用土办法。
% \begin{macrocode}
\keys_define:nn { xeCJK / options }
{
@@ -8520,12 +8632,14 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
symbol / sep .tl_set:N = \l_@@_symbol_sep_tl ,
symbol / boxdepth .tl_set:N = \l_@@_symbol_boxdepth_tl ,
underline / skip .bool_set:N = \l_@@_uline_skip_bool ,
+ underline / hidden .bool_set:N = \l_@@_uline_hidden_bool ,
underline / subtract .bool_set:N = \l_@@_uline_subtract_bool ,
underline / thickness .tl_set:N = \l_@@_uline_thickness_tl ,
underline / depth .tl_set:N = \l_@@_uline_depth_tl ,
underline / sep .tl_set:N = \l_@@_uline_sep_tl ,
underline / format .tl_set:N = \l_@@_uline_format_tl ,
underdblline / skip .bool_set:N = \l_@@_udbline_skip_bool ,
+ underdblline / hidden .bool_set:N = \l_@@_udbline_hidden_bool ,
underdblline / subtract .bool_set:N = \l_@@_udbline_subtract_bool ,
underdblline / thickness .tl_set:N = \l_@@_udbline_thickness_tl ,
underdblline / depth .tl_set:N = \l_@@_udbline_depth_tl ,
@@ -8533,19 +8647,27 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
underdblline / format .tl_set:N = \l_@@_udbline_format_tl ,
underdblline / gap .tl_set:N = \l_@@_udbline_gap_tl ,
underwave / skip .bool_set:N = \l_@@_uwave_skip_bool ,
+ underwave / hidden .bool_set:N = \l_@@_uwave_hidden_bool ,
underwave / subtract .bool_set:N = \l_@@_uwave_subtract_bool ,
underwave / symbol .tl_set:N = \l_@@_uwave_symbol_tl ,
underwave / depth .tl_set:N = \l_@@_uwave_depth_tl ,
underwave / sep .tl_set:N = \l_@@_uwave_sep_tl ,
underwave / format .tl_set:N = \l_@@_uwave_format_tl ,
sout / skip .bool_set:N = \l_@@_sout_skip_bool ,
+ sout / hidden .bool_set:N = \l_@@_sout_hidden_bool ,
sout / subtract .bool_set:N = \l_@@_sout_subtract_bool ,
sout / thickness .tl_set:N = \l_@@_sout_thickness_tl ,
sout / height .tl_set:N = \l_@@_sout_height_tl ,
sout / format .tl_set:N = \l_@@_sout_format_tl ,
xout / skip .bool_set:N = \l_@@_xout_skip_bool ,
+ xout / hidden .bool_set:N = \l_@@_xout_hidden_bool ,
xout / subtract .bool_set:N = \l_@@_xout_subtract_bool ,
- xout / format .tl_set:N = \l_@@_xout_format_tl
+ xout / format .tl_set:N = \l_@@_xout_format_tl ,
+ ulem / skip .bool_set:N = \l_@@_ulem_skip_bool ,
+ ulem / hidden .bool_set:N = \l_@@_ulem_hidden_bool ,
+ ulem / subtract .bool_set:N = \l_@@_ulem_subtract_bool ,
+ ulem / sep .tl_set:N = \l_@@_ulem_sep_tl ,
+ ulem / boxdepth .tl_set:N = \l_@@_ulem_boxdepth_tl
}
\clist_map_inline:nn
{ underdot , underline , underdblline , underwave , sout , xout }
@@ -8558,9 +8680,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
underdot / symbol = \normalfont . ,
underdot / depth = 0.20 em ,
underdot / sep = 0.04 em ,
- underdot / boxdepth = \c_max_dim ,
symbol / sep = \c_zero_dim ,
- symbol / boxdepth = \c_max_dim ,
underline / skip = true ,
underline / thickness = \ULthickness ,
underline / depth = 0.20 em ,
@@ -8653,12 +8773,16 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{ \keys_set:nn { xeCJK / options / #1 } {#3} }
\xeCJK_fntef_sbox:n {#5}
\bool_if:NTF \l_@@_fntef_bool
- { \xeCJK_make_under_symbol:nn { \l_@@_fntef_dim } }
+ { \xeCJK_make_under_symbol:n { \l_@@_fntef_dim } }
{
\bool_set_true:N \l_@@_fntef_bool
- \xeCJK_make_under_symbol:nn {#4}
+ \xeCJK_make_under_symbol:n {#4}
+ }
+ \tl_if_empty:cF { l_@@_#2_boxdepth_tl }
+ {
+ \box_set_dp:Nn \l_@@_under_symbol_box
+ { \use:c { l_@@_#2_boxdepth_tl } }
}
- { \use:c { l_@@_#2_boxdepth_tl } }
\dim_set:Nn \l_@@_fntef_dim
{ \use:c { l_@@_#2_sep_tl } + \box_dp:N \l_@@_under_symbol_box }
\xeCJK_swap_cs:NN \CJKsymbol \@@_under_CJKsymbol:N
@@ -8671,7 +8795,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \begin{macro}[internal]{\xeCJK_make_under_symbol:n}
% 我们量取“一”的宽度作为汉字的宽度。
% \begin{macrocode}
-\cs_new_protected:Npn \xeCJK_make_under_symbol:nn #1#2
+\cs_new_protected:Npn \xeCJK_make_under_symbol:n #1
{
\hbox_set:Nn \l_@@_under_symbol_box
{
@@ -8685,8 +8809,6 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
}
}
}
- \dim_compare:nNnF {#2} = \c_max_dim
- { \box_set_dp:Nn \l_@@_under_symbol_box {#2} }
}
% \end{macrocode}
% \end{macro}
@@ -8831,10 +8953,11 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
% \changes{v3.2.3}{2013/06/04}
% {解决 \texttt{listings} 坏境中代码行号输出不正确的问题,并解决在其中跨页时对页眉
% 和页脚的影响。}
+% \changes{v3.2.15}{2014/11/10}{修正 \texttt{breaklines} 无效的问题。}
% 为使代码行号结果正确,需要在 \tn{lst@numberstyle} 中恢复 \tn{XeTeXinterchartoks}。
% 在 \texttt{listings} 环境中换页时,对 \tn{XeTeXinterchartoks} 的修改会影响到
% 页眉和页脚,需要在 \tn{shipout} 盒子中恢复成正常定义。加入 \cs{tex_noindent:D}
-% 是为了防止汉字出现在首行的时候可能会产生额外空行。
+% 是为了进入水平模式,防止汉字出现在首行的时候可能会产生额外空行。
% \begin{macrocode}
\cs_new_protected_nopar:Npn \@@_listings_initial_hook:
{
@@ -8843,7 +8966,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\tl_put_left:Nn \lst@numberstyle { \l_@@_restore_listings_toks_tl }
\xeCJK_add_to_shipout:n { \l_@@_restore_listings_toks_tl }
\lst@ifbreaklines
- \cs_set_eq:NN \@@_listings_CJK_toks: \@@_listings_breaklines_toks:
+ \cs_set_eq:NN \@@_listings_CJK_toks_hook: \@@_listings_breaklines_toks:
\fi:
}
% \end{macrocode}
@@ -8860,6 +8983,7 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
\@@_backup_inter_class_toks:nn { Boundary } { Default }
\@@_backup_inter_class_toks:nn { Boundary } { CJK }
\@@_backup_inter_class_toks:nn { Boundary } { IVS }
+ \@@_backup_inter_class_toks:nn { Boundary } { HangulJamo }
\@@_backup_inter_class_toks:nn { Boundary } { FullLeft }
\@@_backup_inter_class_toks:nn { Boundary } { FullRight }
}
@@ -8894,6 +9018,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{ \@@_listings_process_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
{ \@@_listings_process_CJK:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { HangulJamo }
+ { \@@_listings_process_CJK:nN { \c_two } }
\seq_map_inline:Nn \g_@@_CJK_sub_class_seq
{
\xeCJK_inter_class_toks:nnn { Boundary } { CJK/##1 }
@@ -8904,6 +9030,8 @@ $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
{
\xeCJK_inter_class_toks:nnn { Boundary } { CJK }
{ \@@_listings_process_breaklines_CJK:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { HangulJamo }
+ { \@@_listings_process_breaklines_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullLeft }
{ \@@_listings_process_FullLeft:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
index dd99474b02b..f94f7e07526 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `install')
%%
-%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+%% $Id: xeCJK.dtx 737 2014-11-10 17:04:31Z sobenlee@gmail.com $
%% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%% -----------------------------------------------------------------
%% Author:
@@ -37,7 +37,7 @@
\askforoverwritefalse
\preamble
-$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+$Id: xeCJK.dtx 737 2014-11-10 17:04:31Z sobenlee@gmail.com $
$URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
-----------------------------------------------------------------
Author: