summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdfbin1296601 -> 1311646 bytes
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdfbin348356 -> 348358 bytes
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx264
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty13
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty37
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty121
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty6
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def6
10 files changed, 329 insertions, 126 deletions
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
index 2b7865b0145..67fee062879 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
+++ b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
index 2c2f0ccb885..b1c3e009253 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
+++ b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
Binary files differ
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:
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg b/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg
index 36e16e53f2a..7b1ade8512f 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg
+++ b/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg
@@ -6,11 +6,11 @@
%%
%% xeCJK.dtx (with options: `config')
%%
-\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 $
{Configuration file for xeCJK package}
\ProvidesExplFile
{\ExplFileName.cfg}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
%%
%%
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
index 1b6723af1f6..ab7c3044a0a 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `listings')
%%
-%% $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:
@@ -33,11 +33,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\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 $
{xeCJK patch file for listings}
\ProvidesExplPackage
{xeCJK-listings}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { xeCJK } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
@@ -58,7 +58,7 @@
\tl_put_left:Nn \lst@numberstyle { \l__xeCJK_restore_listings_toks_tl }
\xeCJK_add_to_shipout:n { \l__xeCJK_restore_listings_toks_tl }
\lst@ifbreaklines
- \cs_set_eq:NN \__xeCJK_listings_CJK_toks: \__xeCJK_listings_breaklines_toks:
+ \cs_set_eq:NN \__xeCJK_listings_CJK_toks_hook: \__xeCJK_listings_breaklines_toks:
\fi:
}
\cs_new_protected_nopar:Npn \__xeCJK_listings_toks_hook:
@@ -68,6 +68,7 @@
\__xeCJK_backup_inter_class_toks:nn { Boundary } { Default }
\__xeCJK_backup_inter_class_toks:nn { Boundary } { CJK }
\__xeCJK_backup_inter_class_toks:nn { Boundary } { IVS }
+ \__xeCJK_backup_inter_class_toks:nn { Boundary } { HangulJamo }
\__xeCJK_backup_inter_class_toks:nn { Boundary } { FullLeft }
\__xeCJK_backup_inter_class_toks:nn { Boundary } { FullRight }
}
@@ -96,6 +97,8 @@
{ \__xeCJK_listings_process_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
{ \__xeCJK_listings_process_CJK:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { HangulJamo }
+ { \__xeCJK_listings_process_CJK:nN { \c_two } }
\seq_map_inline:Nn \g__xeCJK_CJK_sub_class_seq
{
\xeCJK_inter_class_toks:nnn { Boundary } { CJK/##1 }
@@ -106,6 +109,8 @@
{
\xeCJK_inter_class_toks:nnn { Boundary } { CJK }
{ \__xeCJK_listings_process_breaklines_CJK:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { HangulJamo }
+ { \__xeCJK_listings_process_breaklines_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullLeft }
{ \__xeCJK_listings_process_FullLeft:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
index 017220fe745..3c8f4032d61 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `package')
%%
-%% $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:
@@ -33,11 +33,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\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 $
{Typesetting CJK scripts with XeLaTeX}
\ProvidesExplPackage
{\ExplFileName}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\msg_new:nnn { xeCJK } { Require-XeTeX }
{
The~xeCJK~package~requires~XeTeX~to~function.\\\\
@@ -402,11 +402,12 @@
\xeCJK_new_class:n { HalfRight }
\xeCJK_new_class:n { NormalSpace }
\xeCJK_new_class:n { IVS }
+\xeCJK_new_class:n { HangulJamo }
\clist_const:Nn \c__xeCJK_HalfLeft_chars_clist
- { "28 , "2D , "5B , "60 , "7B , "2329 }
+ { "28 , "5B , "60 , "7B , "2329 }
\clist_const:Nn \c__xeCJK_HalfRight_chars_clist
{ "21 , "22 , "25 , "27 , "29 , "2C , "2E , "3A , "3B , "3F , "5D , "7D , "232A }
-\clist_const:Nn \c__xeCJK_NormalSpace_chars_clist { "2F }
+\clist_const:Nn \c__xeCJK_NormalSpace_chars_clist { "2D , "2F , "5C , "2013 }
\clist_const:Nn \c__xeCJK_OP_chars_clist
{
"2018 , "201C ,
@@ -458,7 +459,6 @@
}
\clist_const:Nn \c__xeCJK_CJK_chars_clist
{
- "1100 -> "11FF ,
"2E80 -> "2EFF ,
"2F00 -> "2FDF ,
"2FF0 -> "2FFF ,
@@ -478,9 +478,7 @@
"4E00 -> "9FFF ,
"A000 -> "A48F ,
"A490 -> "A4CF ,
- "A960 -> "A97F ,
"AC00 -> "D7AF ,
- "D7B0 -> "D7FF ,
"F900 -> "FAFF ,
"FE10 -> "FE1F ,
"FE30 -> "FE4F ,
@@ -498,6 +496,12 @@
"FE00 -> "FE0F ,
"E0100 -> "E01EF
}
+\clist_const:Nn \c__xeCJK_HangulJamo_chars_clist
+ {
+ "1100 -> "11FF ,
+ "A960 -> "A97F ,
+ "D7B0 -> "D7FF
+ }
\seq_new:N \g__xeCJK_base_class_seq
\seq_gset_eq:NN \g__xeCJK_base_class_seq \g__xeCJK_class_seq
\seq_new:N \g__xeCJK_non_CJK_class_seq
@@ -509,7 +513,8 @@
\seq_gput_right:Nn \g__xeCJK_CJK_class_seq {#1}
\tl_const:cn { \__xeCJK_CJK_class_tl:c { \__xeCJK_class_csname:n {#1} } } {#1}
}
-\clist_map_function:nN { CJK , FullLeft , FullRight , IVS } \__xeCJK_save_CJK_class:n
+\clist_map_function:nN
+ { CJK , FullLeft , FullRight , IVS , HangulJamo } \__xeCJK_save_CJK_class:n
\cs_new_nopar:Npn \xeCJK_class_num:n #1 { \use:c { \__xeCJK_class_csname:n {#1} } }
\NewDocumentCommand \xeCJKDeclareCharClass { s > { \TrimSpaces } m m }
{
@@ -587,6 +592,7 @@
\xeCJK_declare_char_class:nV { CJK } \c__xeCJK_CJK_chars_clist
\xeCJK_declare_char_class:nV { NormalSpace } \c__xeCJK_NormalSpace_chars_clist
\xeCJK_declare_char_class:nV { IVS } \c__xeCJK_IVS_chars_clist
+ \xeCJK_declare_char_class:nV { HangulJamo } \c__xeCJK_HangulJamo_chars_clist
\xeCJKResetPunctClass
}
\xeCJKResetCharClass
@@ -648,6 +654,17 @@
}
}
}
+\AtEndOfPackage
+ {
+ \seq_map_inline:Nn \g__xeCJK_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 }
+ }
+ }
+ }
\clist_map_inline:nn { Default , HalfLeft , HalfRight , NormalSpace }
{
\xeCJK_inter_class_toks:nnn {#1} { CJK }
@@ -1602,7 +1619,7 @@
}
\seq_gput_right:Nn \g__xeCJK_CJK_sub_class_seq {#2}
\__xeCJK_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}
{ \__xeCJK_switch_font:nn {#2} {#1} }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
index 5261b858507..2f786e46bd6 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `fntef')
%%
-%% $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:
@@ -33,11 +33,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\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 $
{xeCJK font effect}
\ProvidesExplPackage
{xeCJKfntef}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\PassOptionsToPackage { normalem } { ulem }
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
\ProcessOptions \scan_stop:
@@ -55,11 +55,17 @@
\__xeCJK_ulem_initial:
\bool_if:NT \l__xeCJK_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 \__xeCJK_ulem_var_leaders: \xeCJK_ulem_var_leaders:
\cs_set_eq:NN \xeCJK_ulem_right_skip: \__xeCJK_ulem_right_skip:
}
- \bool_if:NF \l__xeCJK_ulem_skip_bool
+ \bool_if:NT \l__xeCJK_ulem_hidden_bool
+ { \cs_set_eq:NN \UL@putbox \__xeCJK_ulem_hidden_box: }
+ \bool_if:NTF \l__xeCJK_ulem_skip_bool
+ {
+ \cs_set_eq:NN \__xeCJK_ulem_putbox: \UL@putbox
+ \cs_set_eq:NN \__xeCJK_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
+ }
{
\xeCJK_swap_cs:NN \__xeCJK_punct_kern:n \__xeCJK_ulem_punct_kern:n
\xeCJK_swap_cs:NN \__xeCJK_punct_hskip:n \__xeCJK_ulem_punct_hskip:n
@@ -172,7 +178,7 @@
}
\cs_new_eq:NN \__xeCJK_ulem_hskip:n \__xeCJK_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 } }
\cs_new_protected_nopar:Npn \xeCJK_ulem_right:
{
\scan_stop:
@@ -206,7 +212,8 @@
}
}
\cs_new_eq:NN \xeCJK_ulem_right_node: \prg_do_nothing:
-\cs_new_eq:NN \xeCJK_ulem_leaders: \UL@leaders
+\cs_new_protected_nopar:Npn \xeCJK_ulem_leaders:
+ { \__xeCJK_ulem_var_leaders: }
\cs_new_protected_nopar:Npn \xeCJK_ulem_var_leaders:
{
\scan_stop:
@@ -214,9 +221,10 @@
{
\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 \__xeCJK_ulem_var_leaders: \xeCJK_ulem_leaders:
}
}
+\cs_new_eq:NN \__xeCJK_ulem_var_leaders: \xeCJK_ulem_var_leaders:
\cs_new_eq:NN \xeCJK_ulem_right_skip: \prg_do_nothing:
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip:
{
@@ -230,6 +238,13 @@
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_hbox:
{
\box_set_to_last:N \l__xeCJK_tmp_box
+ \int_compare:nNnTF \etex_lastnodetype:D = \c_twelve
+ { \__xeCJK_ulem_right_skip_kern: }
+ { \__xeCJK_ulem_right_skip_glue: }
+ \box_use_clear:N \l__xeCJK_tmp_box
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_kern:
+ {
\dim_set:Nn \l__xeCJK_tmp_dim { - \box_wd:N \l__xeCJK_tmp_box }
\dim_compare:nNnT \tex_lastkern:D = \l__xeCJK_tmp_dim
{
@@ -237,7 +252,6 @@
\__xeCJK_ulem_right_skip_glue:
\tex_kern:D \l__xeCJK_tmp_dim
}
- \box_use_clear:N \l__xeCJK_tmp_box
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_glue:
{
@@ -257,11 +271,28 @@
{ \__xeCJK_ulem_right_skip_hbox: }
\tex_penalty:D \l__xeCJK_tmp_int
}
+\cs_new_protected_nopar:Npn \__xeCJK_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__xeCJK_null_box
+ }
+ }
+\box_new:N \c__xeCJK_null_box
+\hbox_gset:Nn \c__xeCJK_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:
+ }
\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_punct_begin:
{
- \cs_set_eq:NN \__xeCJK_ulem_putbox: \UL@putbox
\cs_set_eq:NN \UL@putbox \__xeCJK_ulem_skip_putbox:
- \cs_set_eq:NN \__xeCJK_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
\cs_set_eq:NN \xeCJK_ulem_hskip:n \skip_horizontal:n
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_punct_end:
@@ -559,16 +590,12 @@
L \int_use:N \etex_currentgrouplevel:D
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_ccglue:
- { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders }
-\NewDocumentCommand \xeCJKfntefon
- { > { \ReverseBoolean } s t- > { \ReverseBoolean } s }
+ { { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders } }
+\NewDocumentCommand \xeCJKfntefon { s t- s o }
{
- \bool_set:Nn \l__xeCJK_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l__xeCJK_ulem_subtract_bool #2
+ \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\ULon
}
-\bool_new:N \l__xeCJK_ulem_subtract_bool
-\bool_new:N \l__xeCJK_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: } }
@@ -660,19 +687,25 @@
}
\ULon
}
-\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__xeCJK_fntef_box }
}
- \bool_set:Nn \l__xeCJK_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l__xeCJK_ulem_subtract_bool #2
+ \tl_if_empty:NF \l__xeCJK_ulem_boxdepth_tl
+ { \box_set_dp:Nn \ULC@box { \l__xeCJK_ulem_boxdepth_tl } }
+ \tl_if_empty:NF \l__xeCJK_ulem_sep_tl
+ {
+ \bool_set_true:N \l__xeCJK_fntef_bool
+ \dim_set:Nn \l__xeCJK_fntef_dim
+ { \l__xeCJK_ulem_sep_tl + \box_dp:N \ULC@box }
+ }
\ULon
}
\cs_new_protected:Npn \xeCJK_fntef_boot:nnNNNn #1#2#3#4#5#6
@@ -684,8 +717,18 @@
\IfNoValueF {#6}
{ \keys_set:nn { xeCJK / options / #1 } {#6} }
\bool_set_eq:Nc \l__xeCJK_ulem_skip_bool { l__xeCJK_#2_skip_bool }
+ \bool_set_eq:Nc \l__xeCJK_ulem_hidden_bool { l__xeCJK_#2_hidden_bool }
\bool_set_eq:Nc \l__xeCJK_ulem_subtract_bool { l__xeCJK_#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__xeCJK_ulem_skip_bool }
+ \IfBooleanT #2
+ { \bool_set_true:N \l__xeCJK_ulem_subtract_bool }
+ \IfNoValueF {#4}
+ { \keys_set:nn { xeCJK / options / ulem } {#4} }
+ }
\cs_new_protected_nopar:Npn \xeCJK_fntef_initial:n
{
\xeCJK_leave_vmode:
@@ -753,12 +796,14 @@
symbol / sep .tl_set:N = \l__xeCJK_symbol_sep_tl ,
symbol / boxdepth .tl_set:N = \l__xeCJK_symbol_boxdepth_tl ,
underline / skip .bool_set:N = \l__xeCJK_uline_skip_bool ,
+ underline / hidden .bool_set:N = \l__xeCJK_uline_hidden_bool ,
underline / subtract .bool_set:N = \l__xeCJK_uline_subtract_bool ,
underline / thickness .tl_set:N = \l__xeCJK_uline_thickness_tl ,
underline / depth .tl_set:N = \l__xeCJK_uline_depth_tl ,
underline / sep .tl_set:N = \l__xeCJK_uline_sep_tl ,
underline / format .tl_set:N = \l__xeCJK_uline_format_tl ,
underdblline / skip .bool_set:N = \l__xeCJK_udbline_skip_bool ,
+ underdblline / hidden .bool_set:N = \l__xeCJK_udbline_hidden_bool ,
underdblline / subtract .bool_set:N = \l__xeCJK_udbline_subtract_bool ,
underdblline / thickness .tl_set:N = \l__xeCJK_udbline_thickness_tl ,
underdblline / depth .tl_set:N = \l__xeCJK_udbline_depth_tl ,
@@ -766,19 +811,27 @@
underdblline / format .tl_set:N = \l__xeCJK_udbline_format_tl ,
underdblline / gap .tl_set:N = \l__xeCJK_udbline_gap_tl ,
underwave / skip .bool_set:N = \l__xeCJK_uwave_skip_bool ,
+ underwave / hidden .bool_set:N = \l__xeCJK_uwave_hidden_bool ,
underwave / subtract .bool_set:N = \l__xeCJK_uwave_subtract_bool ,
underwave / symbol .tl_set:N = \l__xeCJK_uwave_symbol_tl ,
underwave / depth .tl_set:N = \l__xeCJK_uwave_depth_tl ,
underwave / sep .tl_set:N = \l__xeCJK_uwave_sep_tl ,
underwave / format .tl_set:N = \l__xeCJK_uwave_format_tl ,
sout / skip .bool_set:N = \l__xeCJK_sout_skip_bool ,
+ sout / hidden .bool_set:N = \l__xeCJK_sout_hidden_bool ,
sout / subtract .bool_set:N = \l__xeCJK_sout_subtract_bool ,
sout / thickness .tl_set:N = \l__xeCJK_sout_thickness_tl ,
sout / height .tl_set:N = \l__xeCJK_sout_height_tl ,
sout / format .tl_set:N = \l__xeCJK_sout_format_tl ,
xout / skip .bool_set:N = \l__xeCJK_xout_skip_bool ,
+ xout / hidden .bool_set:N = \l__xeCJK_xout_hidden_bool ,
xout / subtract .bool_set:N = \l__xeCJK_xout_subtract_bool ,
- xout / format .tl_set:N = \l__xeCJK_xout_format_tl
+ xout / format .tl_set:N = \l__xeCJK_xout_format_tl ,
+ ulem / skip .bool_set:N = \l__xeCJK_ulem_skip_bool ,
+ ulem / hidden .bool_set:N = \l__xeCJK_ulem_hidden_bool ,
+ ulem / subtract .bool_set:N = \l__xeCJK_ulem_subtract_bool ,
+ ulem / sep .tl_set:N = \l__xeCJK_ulem_sep_tl ,
+ ulem / boxdepth .tl_set:N = \l__xeCJK_ulem_boxdepth_tl
}
\clist_map_inline:nn
{ underdot , underline , underdblline , underwave , sout , xout }
@@ -791,9 +844,7 @@
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 ,
@@ -869,19 +920,23 @@
{ \keys_set:nn { xeCJK / options / #1 } {#3} }
\xeCJK_fntef_sbox:n {#5}
\bool_if:NTF \l__xeCJK_fntef_bool
- { \xeCJK_make_under_symbol:nn { \l__xeCJK_fntef_dim } }
+ { \xeCJK_make_under_symbol:n { \l__xeCJK_fntef_dim } }
{
\bool_set_true:N \l__xeCJK_fntef_bool
- \xeCJK_make_under_symbol:nn {#4}
+ \xeCJK_make_under_symbol:n {#4}
+ }
+ \tl_if_empty:cF { l__xeCJK_#2_boxdepth_tl }
+ {
+ \box_set_dp:Nn \l__xeCJK_under_symbol_box
+ { \use:c { l__xeCJK_#2_boxdepth_tl } }
}
- { \use:c { l__xeCJK_#2_boxdepth_tl } }
\dim_set:Nn \l__xeCJK_fntef_dim
{ \use:c { l__xeCJK_#2_sep_tl } + \box_dp:N \l__xeCJK_under_symbol_box }
\xeCJK_swap_cs:NN \CJKsymbol \__xeCJK_under_CJKsymbol:N
\__xeCJK_restore_shipout_CJKsymbol:
}
\box_new:N \l__xeCJK_under_symbol_box
-\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__xeCJK_under_symbol_box
{
@@ -895,8 +950,6 @@
}
}
}
- \dim_compare:nNnF {#2} = \c_max_dim
- { \box_set_dp:Nn \l__xeCJK_under_symbol_box {#2} }
}
\cs_new_protected:Npn \__xeCJK_restore_shipout_CJKsymbol:
{
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
index 98a8c6e43ab..0b502a778e9 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `xunicode')
%%
-%% $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:
@@ -33,11 +33,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\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 $
{addon file for xunicode}
\ProvidesExplPackage
{xunicode-addon}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\pdftex_if_engine:T
{
\msg_new:nnnn { xunicode-addon } { cannot-use-pdftex }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
index 366cd74108c..0bd04901a1f 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `xunextra')
%%
-%% $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:
@@ -31,11 +31,11 @@
%% The Current Maintainer of this work are Leo Liu and Qing Lee.
%% -----------------------------------------------------------------
%%
-\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 $
{extra definition for xunicode}
\ProvidesExplFile
{xunicode-extra.def}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\ExplSyntaxOff
\DeclareUTFComposite\textsuperscript
\DeclareUTFComposite\textsubscript