summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-11-05 23:10:56 +0000
committerKarl Berry <karl@freefriends.org>2014-11-05 23:10:56 +0000
commit614e92fcfb7bbf20b314eafeac08856e5b337f05 (patch)
tree1161d4db72a4fbe6780125390fd3d23eb6866bb6 /Master/texmf-dist/tex/xelatex
parentb3a15e5c9eaee42f3ea8d48970d289643293e145 (diff)
xecjk (5nov14)
git-svn-id: svn://tug.org/texlive/trunk@35520 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex')
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty6
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty137
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty718
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty27
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def6
6 files changed, 702 insertions, 196 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg b/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg
index e37cdf8daea..36e16e53f2a 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 692 2014-06-20 12:25:35Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
{Configuration file for xeCJK package}
\ProvidesExplFile
{\ExplFileName.cfg}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
%%
%%
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
index 1b499bae772..1b6723af1f6 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 692 2014-06-20 12:25:35Z sobenlee $
+%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z 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 692 2014-06-20 12:25:35Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
{xeCJK patch file for listings}
\ProvidesExplPackage
{xeCJK-listings}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { xeCJK } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
index 04fcb138ffb..017220fe745 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 692 2014-06-20 12:25:35Z sobenlee $
+%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z 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 692 2014-06-20 12:25:35Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
{Typesetting CJK scripts with XeLaTeX}
\ProvidesExplPackage
{\ExplFileName}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
\msg_new:nnn { xeCJK } { Require-XeTeX }
{
The~xeCJK~package~requires~XeTeX~to~function.\\\\
@@ -54,7 +54,7 @@
using~your~TeX~package~manager~or~from~CTAN.\\
\str_if_eq:nnT {#1} { expl3 } { Loading~xeCJK~will~abort! }
}
-\@ifpackagelater { expl3 } { 2014/05/06 } { }
+\@ifpackagelater { expl3 } { 2014/07/20 } { }
{ \msg_critical:nnn { xeCJK } { l3-too-old } { expl3 } }
\prg_new_conditional:Npnn \xeCJK_if_package_loaded:n #1 { p , T , F , TF }
{
@@ -680,7 +680,8 @@
\xeCJK_if_last_node_p:n { CJK } ||
\xeCJK_if_last_node_p:n { CJK-space }
}
- { \xeCJK_remove_node: \CJKecglue } { ~ }
+ { \xeCJK_remove_node: \CJKecglue }
+ { \xeCJK_space_glue: }
}
{
\bool_if:nTF
@@ -701,7 +702,10 @@
{
\int_gset_eq:NN \g__xeCJK_spacefactor_int \tex_spacefactor:D
\peek_meaning_remove:NTF \tex_italiccorrection:D
- { \tex_italiccorrection:D { \xeCJK_make_node:n { default } } }
+ {
+ \tex_italiccorrection:D
+ { \xeCJK_make_node:n { default } }
+ }
{
\token_if_space:NTF \l_peek_token
{ { \xeCJK_make_node:n { default-space } } }
@@ -727,7 +731,8 @@
\xeCJK_if_last_node_p:n { CJK } ||
\xeCJK_if_last_node_p:n { CJK-space }
}
- { \xeCJK_remove_node: \CJKecglue } { ~ }
+ { \xeCJK_remove_node: \CJKecglue }
+ { \xeCJK_space_glue: }
}
{
\xeCJK_if_last_node:nT { CJK-space }
@@ -738,7 +743,10 @@
{
\int_gset_eq:NN \g__xeCJK_spacefactor_int \tex_spacefactor:D
\peek_meaning_remove:NTF \tex_italiccorrection:D
- { \tex_italiccorrection:D { \xeCJK_make_node:n { normalspace } } }
+ {
+ \tex_italiccorrection:D
+ { \xeCJK_make_node:n { normalspace } }
+ }
{
\token_if_space:NTF \l_peek_token
{ { \xeCJK_make_node:n { default-space } } }
@@ -768,38 +776,41 @@
\int_compare_p:nNn \etex_lastnodetype:D = \c_ten
}
{ \xeCJK_remove_node: \CJKecglue }
+ { \xeCJK_check_for_xglue: }
+ }
+ }
+ }
+\cs_new_eq:NN \xeCJK_check_for_xglue: \prg_do_nothing:
+\cs_new_protected_nopar:Npn \__xeCJK_check_for_xglue:
+ {
+ \bool_if:nT
+ {
+ \int_compare_p:nNn \etex_lastnodetype:D = \c_eleven &&
+ ( \skip_if_eq_p:nn \tex_lastskip:D \c_xeCJK_space_skip_tl ||
+ \skip_if_eq_p:nn \tex_lastskip:D \l__xeCJK_ecglue_skip )
+ }
+ {
+ \tex_unskip:D
+ \bool_if:nTF
+ {
+ \xeCJK_if_last_node_p:n { default-space } ||
+ \int_compare_p:nNn \etex_lastnodetype:D = \c_ten ||
+ \xeCJK_if_last_node_p:n { default }
+ }
+ { \xeCJK_remove_node: \CJKecglue }
+ {
+ \bool_if:nTF
{
- \bool_if:nT
- {
- \l__xeCJK_xecglue_bool &&
- \int_compare_p:nNn \etex_lastnodetype:D = \c_eleven &&
- ( \skip_if_eq_p:nn \tex_lastskip:D \c_xeCJK_space_skip_tl ||
- \skip_if_eq_p:nn \tex_lastskip:D \l__xeCJK_ecglue_skip )
- }
- {
- \tex_unskip:D
- \bool_if:nTF
- {
- \xeCJK_if_last_node_p:n { default-space } ||
- \int_compare_p:nNn \etex_lastnodetype:D = \c_ten ||
- \xeCJK_if_last_node_p:n { default }
- }
- { \xeCJK_remove_node: \CJKecglue }
- {
- \bool_if:nTF
- {
- \xeCJK_if_last_node_p:n { CJK } ||
- \xeCJK_if_last_node_p:n { CJK-space }
- }
- {
- \xeCJK_remove_node:
- \bool_if:NTF \l__xeCJK_reserve_space_bool
- { ~ } { \CJKglue }
- }
- { ~ }
- }
- }
+ \xeCJK_if_last_node_p:n { CJK } ||
+ \xeCJK_if_last_node_p:n { CJK-space }
+ }
+ {
+ \xeCJK_remove_node:
+ \bool_if:NTF \l__xeCJK_reserve_space_bool
+ { \xeCJK_space_glue: }
+ { \CJKglue }
}
+ { \xeCJK_space_glue: }
}
}
}
@@ -808,25 +819,34 @@
\if_dim:w \use:c { c__xeCJK_#1_node_dim } = \tex_lastkern:D
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_new_protected_nopar:Npn \xeCJK_def_node:nn #1#2
+\cs_new_protected_nopar:Npn \xeCJK_declare_node:n #1
{
+ \int_gincr:N \g__xeCJK_node_int
\dim_if_exist:cTF { c__xeCJK_#1_node_dim }
{ \dim_gset:cn } { \dim_const:cn }
- { c__xeCJK_#1_node_dim } {#2}
+ { c__xeCJK_#1_node_dim } { \g__xeCJK_node_int sp }
}
+\int_new:N \g__xeCJK_node_int
+\int_gset_eq:NN \g__xeCJK_node_int \c_ten
\cs_new_protected_nopar:Npn \xeCJK_make_node:n #1
{
- \tex_kern:D - \use:c { c__xeCJK_#1_node_dim }
- \tex_kern:D \use:c { c__xeCJK_#1_node_dim }
+ \exp_after:wN \__xeCJK_make_node:N
+ \cs:w c__xeCJK_#1_node_dim \exp_after:wN \cs_end:
+ \exp_after:wN \tex_spacefactor:D \int_use:N \tex_spacefactor:D \exp_stop_f:
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_make_node:N #1
+ {
+ \tex_kern:D - #1
+ \tex_kern:D #1
}
\cs_new_protected_nopar:Npn \xeCJK_remove_node:
{ \tex_unkern:D \tex_unkern:D }
-\xeCJK_def_node:nn { CJK } { 11 sp }
-\xeCJK_def_node:nn { CJK-space } { 12 sp }
-\xeCJK_def_node:nn { default } { 13 sp }
-\xeCJK_def_node:nn { default-space } { 14 sp }
-\xeCJK_def_node:nn { CJK-nobreak } { 15 sp }
-\xeCJK_def_node:nn { normalspace } { 16 sp }
+\xeCJK_declare_node:n { CJK }
+\xeCJK_declare_node:n { CJK-space }
+\xeCJK_declare_node:n { default }
+\xeCJK_declare_node:n { default-space }
+\xeCJK_declare_node:n { CJK-nobreak }
+\xeCJK_declare_node:n { normalspace }
\keys_define:nn { xeCJK / options }
{
CJKglue .code:n =
@@ -848,11 +868,13 @@
{
\bool_set_true:N \l__xeCJK_xecglue_bool
\cs_set_eq:NN \xeCJK_space_or_xecglue: \CJKecglue
+ \cs_set_eq:NN \xeCJK_check_for_xglue: \__xeCJK_check_for_xglue:
} ,
xCJKecglue / false .code:n =
{
\bool_set_false:N \l__xeCJK_xecglue_bool
- \cs_set_eq:NN \xeCJK_space_or_xecglue: \c_space_tl
+ \cs_set_eq:NN \xeCJK_space_or_xecglue: \xeCJK_space_glue:
+ \xeCJK_cs_clear:N \xeCJK_check_for_xglue:
} ,
xCJKecglue / unknown .code:n =
{
@@ -860,9 +882,11 @@
\cs_set_protected_nopar:Npn \CJKecglue {#1}
\xeCJK_glue_to_skip:nN {#1} \l__xeCJK_ecglue_skip
\cs_set_eq:NN \xeCJK_space_or_xecglue: \CJKecglue
+ \cs_set_eq:NN \xeCJK_check_for_xglue: \__xeCJK_check_for_xglue:
} ,
xCJKecglue .default:n = { true }
}
+\cs_new_eq:NN \xeCJK_space_glue: \c_space_tl
\skip_new:N \l__xeCJK_ecglue_skip
\bool_new:N \l__xeCJK_xecglue_bool
\keys_define:nn { xeCJK / options }
@@ -976,7 +1000,10 @@
\cs_new_protected_nopar:Npn \__xeCJK_punct_offset:NN #1#2
{ \__xeCJK_punct_kern:n { - \__xeCJK_use_punct_dim:nnn { offset } {#1} {#2} } }
\cs_new_protected_nopar:Npn \__xeCJK_punct_kern:n #1
- { \tex_kern:D #1 \exp_stop_f: }
+ {
+ \dim_compare:nNnF {#1} = \c_zero_dim
+ { \tex_kern:D #1 \exp_stop_f: }
+ }
\cs_new_protected_nopar:Npn \__xeCJK_punct_glue:NN #1#2
{ \__xeCJK_punct_hskip:n { \__xeCJK_punct_skip:nn {#1} {#2} } }
\cs_new_eq:NN \__xeCJK_punct_hskip:n \skip_horizontal:n
@@ -2299,7 +2326,7 @@
\__xeCJK_msg_new:nn { missing-glyph }
{
CJKfamily~`\__xeCJK_msg_family_map:n {#1}'~
- ( \prop_get:Nn \g__xeCJK_family_font_name_prop {#1} )~
+ ( \prop_item:Nn \g__xeCJK_family_font_name_prop {#1} )~
does~not~contain~glyph~`#2'~(U+#3).\\
}
\NewDocumentCommand \setCJKfallbackfamilyfont { m O { } m }
@@ -3134,9 +3161,9 @@
\__xeCJK_shipout_punct_breakable_kern:n \__xeCJK_punct_breakable_kern:n
\tl_set:Nx \l__xeCJK_off_verb_addon_tl
{
- \exp_not:c
- { bool_set_ \bool_if:NTF \l__xeCJK_xecglue_bool { true } { false } :N }
- \l__xeCJK_xecglue_bool
+ \bool_if:NTF \l__xeCJK_xecglue_bool
+ { \xeCJKsetup { xCJKecglue = true } }
+ { \xeCJKsetup { xCJKecglue = false } }
\exp_not:n
{
\cs_set_eq:NN \CJKglue \__xeCJK_shipout_CJKglue:
@@ -3509,7 +3536,7 @@
\bool_if:nT { \g__xeCJK_math_bool && \cs_if_exist_p:N \Url@MathSetup }
{ \tl_put_right:Nn \Url@MathSetup { \__xeCJK_update_url_font: } }
}
-\cs_if_free:NF \fontspec_setup_maths:
+\@ifpackagelater { fontspec } { 2014/06/21 } { }
{
\cs_gset_protected_nopar:Npx \fontspec_setup_maths:
{
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
index 360b8611364..5261b858507 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 692 2014-06-20 12:25:35Z sobenlee $
+%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
%% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%% -----------------------------------------------------------------
%% Author:
@@ -33,32 +33,39 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 692 2014-06-20 12:25:35Z sobenlee $
- {xeCJK patch file for ulem/CJKfntef}
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+ {xeCJK font effect}
\ProvidesExplPackage
{xeCJKfntef}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
\PassOptionsToPackage { normalem } { ulem }
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
\RequirePackage { ulem }
-\RequirePackage { CJKfntef }
\RequirePackage { environ }
+\file_if_exist:nT { CJKfntef.sty }
+ { \RequirePackage { CJKfntef } }
\addto@hook \UL@hook { \xeCJK_hook_for_ulem: }
\cs_new_protected_nopar:Npn \xeCJK_hook_for_ulem:
{
\bool_if:NF \l__xeCJK_ulem_hook_used_bool
{
\bool_set_true:N \l__xeCJK_ulem_hook_used_bool
- \xeCJKsetup { CheckFullRight = false , xCJKecglue = false }
- \bool_if:NTF \l__xeCJK_ulem_skip_punct_bool
- { \cs_set_eq:NN \__xeCJK_ulem_leader_type: \UL@leadtype }
+ \__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:
+ \cs_set_eq:NN \xeCJK_ulem_right_skip: \__xeCJK_ulem_right_skip:
+ }
+ \bool_if:NF \l__xeCJK_ulem_skip_bool
+ {
+ \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
\xeCJK_cs_clear:N \__xeCJK_ulem_skip_punct_begin:
\xeCJK_cs_clear:N \__xeCJK_ulem_skip_punct_end:
}
- \__xeCJK_ulem_initial:
\xeCJK_glue_to_skip:nN
{
\cs_set_eq:NN \ \tex_space:D
@@ -73,24 +80,201 @@
\cs_set_eq:NN \hskip \skip_horizontal:N
\CJKecglue
} \l__xeCJK_ecglue_skip
+ \xeCJK_glue_to_skip:nN { \xeCJK_space_glue: } \l__xeCJK_space_skip
\cs_set_protected_nopar:Npn \CJKglue
{ \__xeCJK_ulem_glue:n \l__xeCJK_ccglue_skip }
\cs_set_protected_nopar:Npn \CJKecglue
{ \__xeCJK_ulem_glue:n \l__xeCJK_ecglue_skip }
+ \cs_set_protected_nopar:Npn \xeCJK_space_glue:
+ { \__xeCJK_ulem_glue:n \l__xeCJK_space_skip }
+ \xeCJKsetup { CheckFullRight = false , xCJKecglue = false }
+ \xeCJK_ulem_detect_node:
}
}
+\skip_new:N \l__xeCJK_space_skip
\bool_new:N \l__xeCJK_ulem_hook_used_bool
-\cs_set_eq:NN \CJK@UL \CJK@@UL
-\tl_replace_once:Nnn \CJK@UL { \ULon }
- { \bool_set_true:N \l__xeCJK_ulem_skip_punct_bool \ULon }
-\tl_replace_once:Nnn \CJK@@UL { \ULon }
- { \bool_set_false:N \l__xeCJK_ulem_skip_punct_bool \ULon }
-\bool_new:N \l__xeCJK_ulem_skip_punct_bool
+\cs_new_protected_nopar:Npn \xeCJK_ulem_word:nw #1 ~
+ {
+ \exp_after:wN \UL@start #1 ~
+ \exp_after:wN \if_meaning:w \exp_after:wN \UL@end #1
+ \exp_after:wN \__xeCJK_ulem_end:
+ \else:
+ \exp_after:wN \__xeCJK_ulem_loop:nw
+ \fi:
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_end:
+ {
+ \c_group_end_token
+ \hbox_set_end:
+ \tex_unskip:D \tex_unskip:D \tex_unskip:D
+ \xeCJK_ulem_right_skip:
+ \xeCJK_ulem_right_node:
+ \int_set:Nn \tex_spacefactor:D { \UL@spfactor }
+ \c_group_end_token
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_loop:nw
+ {
+ \reverse_if:N \if_mode_math:
+ \reverse_if:N \if_dim:w \tex_lastskip:D = \c_zero_dim
+ \skip_gset_eq:NN \UL@skip \tex_lastskip:D
+ \tex_unskip:D
+ \UL@stop \UL@leaders
+ \fi:
+ \fi:
+ \xeCJK_ulem_word:nw \prg_do_nothing:
+ }
+\cs_set_eq:NN \UL@word \xeCJK_ulem_word:nw
+\cs_new_protected_nopar:Npn \xeCJK_ulem_left:
+ {
+ \xeCJK_ulem_left_node:
+ \xeCJK_make_group_tag:
+ }
+\cs_new_eq:NN \xeCJK_ulem_left_node: \prg_do_nothing:
+\cs_new_protected_nopar:Npn \xeCJK_ulem_detect_node:
+ {
+ \scan_stop:
+ \dim_compare:nNnTF \tex_lastkern:D = \c_zero_dim
+ {
+ \xeCJK_cs_clear:N \xeCJK_ulem_left_node:
+ \cs_set_eq:NN \__xeCJK_ulem_hskip:n \xeCJK_ulem_hskip:n
+ }
+ {
+ \dim_set_eq:NN \l__xeCJK_tmp_dim \tex_lastkern:D
+ \tex_unkern:D
+ \dim_compare:nNnTF \tex_lastkern:D = { - \l__xeCJK_tmp_dim }
+ {
+ \tex_unkern:D
+ { \xeCJK_make_node:n { ulem-left } }
+ \cs_set_protected_nopar:Npx \xeCJK_ulem_left_node:
+ {
+ \tex_kern:D - \dim_use:N \l__xeCJK_tmp_dim \exp_stop_f:
+ \tex_kern:D \dim_use:N \l__xeCJK_tmp_dim \exp_stop_f:
+ }
+ \cs_set_eq:NN \__xeCJK_ulem_hskip:n \__xeCJK_ulem_hskip_first:n
+ }
+ {
+ \tex_kern:D \l__xeCJK_tmp_dim
+ \xeCJK_cs_clear:N \xeCJK_ulem_left_node:
+ \cs_set_eq:NN \__xeCJK_ulem_hskip:n \xeCJK_ulem_hskip:n
+ }
+ }
+ }
+\xeCJK_declare_node:n { ulem-left }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_hskip_first:n #1
+ {
+ \xeCJK_if_last_node:nTF { ulem-left }
+ {
+ \xeCJK_remove_node:
+ \skip_horizontal:n {#1}
+ }
+ { \xeCJK_ulem_hskip:n {#1} }
+ \cs_set_eq:NN \__xeCJK_ulem_hskip:n \xeCJK_ulem_hskip:n
+ }
+\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 }
+\cs_new_protected_nopar:Npn \xeCJK_ulem_right:
+ {
+ \scan_stop:
+ \dim_compare:nNnTF \tex_lastkern:D = \c_zero_dim
+ { \xeCJK_cs_gclear:N \xeCJK_ulem_right_node: }
+ {
+ \dim_compare:nNnTF \tex_lastkern:D = { 3 sp }
+ { \xeCJK_cs_gclear:N \xeCJK_ulem_right_node: }
+ {
+ \exp_after:wN \tex_unkern:D
+ \exp_after:wN \__xeCJK_ulem_right_aux:n
+ \exp_after:wN { \dim_use:N \tex_lastkern:D }
+ }
+ }
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_aux:n #1
+ {
+ \dim_compare:nNnTF \tex_lastkern:D = { - #1 }
+ {
+ \tex_unkern:D
+ \cs_gset_protected_nopar:Npn \xeCJK_ulem_right_node:
+ {
+ \tex_kern:D - #1 \exp_stop_f:
+ \tex_kern:D #1 \exp_stop_f:
+ }
+ \tl_gset:Nx \UL@spfactor { \int_use:N \tex_spacefactor:D }
+ }
+ {
+ \tex_kern:D #1 \exp_stop_f:
+ \xeCJK_cs_gclear:N \xeCJK_ulem_right_node:
+ }
+ }
+\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_var_leaders:
+ {
+ \scan_stop:
+ \skip_if_eq:nnF { \UL@skip } { \c_zero_skip }
+ {
+ \UL@leadtype \skip_horizontal:n { \UL@skip + \UL@pixel }
+ \skip_horizontal:n { - \UL@pixel }
+ \cs_gset_eq:NN \UL@leaders \xeCJK_ulem_leaders:
+ }
+ }
+\cs_new_eq:NN \xeCJK_ulem_right_skip: \prg_do_nothing:
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip:
+ {
+ \int_case:nn { \etex_lastnodetype:D }
+ {
+ { \c_one } { \__xeCJK_ulem_right_skip_hbox: }
+ { \c_eleven } { \__xeCJK_ulem_right_skip_glue: }
+ { \c_thirteen } { \__xeCJK_ulem_right_skip_penalty: }
+ }
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_hbox:
+ {
+ \box_set_to_last:N \l__xeCJK_tmp_box
+ \dim_set:Nn \l__xeCJK_tmp_dim { - \box_wd:N \l__xeCJK_tmp_box }
+ \dim_compare:nNnT \tex_lastkern:D = \l__xeCJK_tmp_dim
+ {
+ \tex_unkern:D
+ \__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:
+ {
+ \skip_if_eq:nnT { \tex_lastskip:D } { - \UL@pixel }
+ {
+ \tex_unskip:D
+ \skip_set:Nn \l__xeCJK_tmp_skip { \tex_lastskip:D - \UL@pixel }
+ \tex_unskip:D
+ \UL@leadtype \skip_horizontal:N \l__xeCJK_tmp_skip
+ }
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_penalty:
+ {
+ \int_set_eq:NN \l__xeCJK_tmp_int \tex_lastpenalty:D
+ \tex_unpenalty:D
+ \int_compare:nNnT \etex_lastnodetype:D = \c_one
+ { \__xeCJK_ulem_right_skip_hbox: }
+ \tex_penalty:D \l__xeCJK_tmp_int
+ }
\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_punct_begin:
- { \xeCJK_cs_clear:N \UL@leadtype }
+ {
+ \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:
- { \cs_set_eq:NN \UL@leadtype \__xeCJK_ulem_leader_type: }
-\xeCJK_cs_clear:N \__xeCJK_ulem_leader_type:
+ {
+ \cs_set_eq:NN \UL@putbox \__xeCJK_ulem_putbox:
+ \cs_set_eq:NN \xeCJK_ulem_hskip:n \__xeCJK_ulem_hskip_aux:n
+ }
+\cs_new_eq:NN \__xeCJK_ulem_putbox: \UL@putbox
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_putbox:
+ {
+ \tl_if_empty:NF \UL@start
+ { \box_use_clear:N \UL@box }
+ }
\cs_new_protected_nopar:Npn \__xeCJK_ulem_initial:
{
\__xeCJK_ulem_swap_cs:NN
@@ -99,13 +283,9 @@
\xeCJK_FullRight_and_Default: \__xeCJK_ulem_FullRight_and_Default:
\xeCJK_FullRight_and_CJK: \__xeCJK_ulem_FullRight_and_CJK:
\xeCJK_CJK_and_CJK:N \__xeCJK_ulem_CJK_and_CJK:N
- \xeCJK_Boundary_and_Default: \__xeCJK_ulem_Boundary_and_Default:
- \xeCJK_Boundary_and_NormalSp: \__xeCJK_ulem_Boundary_and_NormalSp:
+ \xeCJK_CJK_and_Boundary:w \__xeCJK_ulem_CJK_and_Boundary:w
\xeCJK@fix@penalty \__xeCJK_ulem_fix_penalty:
- \__xeCJK_punct_kern:n \__xeCJK_ulem_punct_kern:n
- \__xeCJK_punct_hskip:n \__xeCJK_ulem_punct_hskip:n
\__xeCJK_punct_breakable_kern:n \__xeCJK_ulem_punct_breakable_kern:n
- \__xeCJK_CJK_and_Boundary_aux: \__xeCJK_ulem_CJK_and_Boundary_aux:
\__xeCJK_Default_and_FullLeft_glue:N \__xeCJK_ulem_Default_and_FullLeft_glue:N
\__xeCJK_Default_and_FullRight_glue:N \__xeCJK_ulem_Default_and_FullRight_glue:N
\__xeCJK_CJK_and_FullLeft_glue:N \__xeCJK_ulem_CJK_and_FullLeft_glue:N
@@ -144,31 +324,26 @@
\exp_after:wN \use_i:nn
\fi:
}
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_Boundary_and_Default:
- {
- \xeCJK_if_ulem_patch:TF
- {
- \xeCJK_if_last_node:nTF { CJK }
- { \xeCJK_remove_node: \skip_horizontal:N \l__xeCJK_ecglue_skip }
- { \xeCJK_if_last_node:nT { CJK-space } { \xeCJK_remove_node: \c_space_tl } }
- }
- { \__xeCJK_ulem_Boundary_and_Default: }
- }
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_Boundary_and_NormalSp:
- {
- \xeCJK_if_ulem_patch:TF
- { \xeCJK_if_last_node:nT { CJK-space } { \xeCJK_remove_node: \c_space_tl } }
- { \__xeCJK_ulem_Boundary_and_NormalSp: }
- }
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_CJK_and_Boundary_aux:
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_CJK_and_Boundary:w
{
\xeCJK_if_ulem_patch:TF
{
- \xeCJK_class_group_end:
- \UL@stop \__xeCJK_ulem_hskip:n { \c_zero_skip } \UL@start
- { \xeCJK_make_node:n { CJK } }
+ \xeCJK_peek_catcode_ignore_spaces:NTF \c_math_toggle_token
+ { }
+ {
+ \bool_if:NTF \l__xeCJK_peek_ignore_spaces_bool
+ {
+ \xeCJK_class_group_end: \UL@stop
+ \UL@start { \xeCJK_make_node:n { CJK-space } }
+ }
+ {
+ \xeCJK_class_group_end: \UL@stop
+ \UL@start { \xeCJK_make_node:n { CJK } }
+ }
+ \xeCJK_make_group_tag:
+ }
}
- { \__xeCJK_ulem_CJK_and_Boundary_aux: }
+ { \__xeCJK_ulem_CJK_and_Boundary:w }
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_fix_penalty:
{
@@ -228,9 +403,7 @@
{
\UL@stop
\__xeCJK_ulem_skip_punct_begin:
- \int_compare:nNnTF \etex_lastnodetype:D = \c_one
- { \__xeCJK_zero_glue: }
- { \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} }
+ \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1}
\UL@start
}
{ \__xeCJK_ulem_Boundary_and_FullLeft_glue:N #1 }
@@ -341,21 +514,24 @@
\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_hskip:n
{
\xeCJK_if_ulem_patch:TF
- { \__xeCJK_ulem_hskip:n }
+ { \xeCJK_ulem_hskip:n }
{ \__xeCJK_ulem_punct_hskip:n }
}
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_kern:n
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_kern:n #1
{
\xeCJK_if_ulem_patch:TF
- { \__xeCJK_ulem_hskip:n }
- { \__xeCJK_ulem_punct_kern:n }
+ {
+ \dim_compare:nNnF {#1} = \c_zero_dim
+ { \xeCJK_ulem_hskip:n {#1} }
+ }
+ { \__xeCJK_ulem_punct_kern:n {#1} }
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_breakable_kern:n #1
{
\xeCJK_if_ulem_patch:TF
{
\xeCJK_class_group_end:
- \UL@stop \__xeCJK_ulem_hskip:n {#1} \UL@start
+ \UL@stop \xeCJK_ulem_hskip:n {#1} \UL@start
\__xeCJK_ulem_class_group_begin:
}
{ \__xeCJK_ulem_punct_breakable_kern:n {#1} }
@@ -363,98 +539,392 @@
\cs_new_protected_nopar:Npn \__xeCJK_ulem_glue:n #1
{
\xeCJK_if_ulem_patch:TF
- { \UL@stop \__xeCJK_ulem_hskip:n {#1} \UL@start }
+ {
+ \tl_if_empty:NTF \l__xeCJK_group_tag_tl
+ { \UL@stop \__xeCJK_ulem_hskip:n {#1} \UL@start }
+ {
+ \str_if_eq_x:nnTF { \l__xeCJK_group_tag_tl } { \c__xeCJK_group_tag_tl }
+ { \UL@stop \__xeCJK_ulem_hskip:n {#1} \UL@start }
+ { \skip_horizontal:n {#1} }
+ }
+ }
{ \skip_horizontal:n {#1} }
}
+\cs_new_protected_nopar:Npn \xeCJK_make_group_tag:
+ { \tl_set:Nx \l__xeCJK_group_tag_tl { \c__xeCJK_group_tag_tl } }
+\tl_new:N \l__xeCJK_group_tag_tl
+\tl_const:Nn \c__xeCJK_group_tag_tl
+ {
+ T \int_use:N \etex_currentgrouptype:D
+ 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 }
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_hskip:n #1
+\NewDocumentCommand \xeCJKfntefon
+ { > { \ReverseBoolean } s t- > { \ReverseBoolean } s }
+ {
+ \bool_set:Nn \l__xeCJK_ulem_skip_bool { #1 && #3 }
+ \bool_set_eq:NN \l__xeCJK_ulem_subtract_bool #2
+ \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: } }
+\DeclareDocumentCommand \CJKunderline { s t- s o }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_boot:nnNNNn { underline } { uline } #1#2#3 {#4}
+ \xeCJK_fntef_initial:nnn
+ { \l__xeCJK_uline_depth_tl }
+ { \l__xeCJK_uline_sep_tl }
+ {
+ \l__xeCJK_uline_format_tl
+ \tex_vrule:D
+ height \dim_eval:n { \l__xeCJK_uline_thickness_tl }
+ depth \c_zero_dim
+ width .2em
+ }
+ \ULon
+ }
+\DeclareDocumentCommand \varCJKunderline { }
+ { \CJKunderline - }
+\DeclareDocumentCommand \CJKunderwave { s t- s o }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_boot:nnNNNn { underwave } { uwave } #1#2#3 {#4}
+ \xeCJK_fntef_initial:nnn
+ { \l__xeCJK_uwave_depth_tl }
+ { \l__xeCJK_uwave_sep_tl }
+ { \l__xeCJK_uwave_format_tl \l__xeCJK_uwave_symbol_tl }
+ \ULon
+ }
+\DeclareDocumentCommand \CJKunderdblline { s t- s o }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_boot:nnNNNn { underdblline } { udbline } #1#2#3 {#4}
+ \xeCJK_fntef_initial:nnn
+ { \l__xeCJK_udbline_depth_tl }
+ { \l__xeCJK_udbline_sep_tl }
+ {
+ \l__xeCJK_udbline_format_tl
+ \vbox_top:n
+ {
+ \tex_hrule:D
+ height \dim_eval:n { \l__xeCJK_udbline_thickness_tl }
+ depth \c_zero_dim
+ width .2em
+ \tex_kern:D \dim_eval:n { \l__xeCJK_udbline_gap_tl }
+ \tex_hrule:D
+ height \dim_eval:n { \l__xeCJK_udbline_thickness_tl }
+ depth \c_zero_dim
+ width .2em
+ }
+ }
+ \ULon
+ }
+\DeclareDocumentCommand \CJKsout { s t- s o }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_boot:nnNNNn { sout } { sout } #1#2#3 {#4}
+ \xeCJK_fntef_initial:nn
+ {
+ \l__xeCJK_sout_format_tl
+ \tex_vrule:D
+ height \dim_eval:n { \l__xeCJK_sout_thickness_tl }
+ depth \c_zero_dim
+ width .2em
+ }
+ {
+ \box_move_up:nn
+ { \l__xeCJK_sout_height_tl - \box_ht:N \l__xeCJK_fntef_box / 2 }
+ { \box_use:N \l__xeCJK_fntef_box }
+ }
+ \ULon
+ }
+\DeclareDocumentCommand \CJKxout { s t- s o }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_boot:nnNNNn { xout } { xout } #1#2#3 {#4}
+ \xeCJK_fntef_initial:nn
+ {
+ \l__xeCJK_xout_format_tl
+ \tex_kern:D -.1 em $/$
+ \tex_kern:D -.1 em
+ }
+ {
+ \box_move_up:nn
+ { \box_dp:N \l__xeCJK_fntef_box / 2 }
+ { \box_use:N \l__xeCJK_fntef_box }
+ }
+ \ULon
+ }
+\DeclareDocumentCommand \CJKunderanyline
+ { > { \ReverseBoolean } s t- > { \ReverseBoolean } s m m }
+ {
+ \c_group_begin_token
+ \xeCJK_fntef_initial:nn
+ {#5}
+ {
+ \box_move_down:nn
+ {#4}
+ { \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
+ \ULon
+ }
+\cs_new_protected:Npn \xeCJK_fntef_boot:nnNNNn #1#2#3#4#5#6
+ {
+ \bool_if:nT { #3 || #5 }
+ { \bool_set_false:c { l__xeCJK_#2_skip_bool } }
+ \IfBooleanT #4
+ { \bool_set_true:c { l__xeCJK_#2_subtract_bool } }
+ \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_subtract_bool { l__xeCJK_#2_subtract_bool }
+ }
+\cs_new_protected_nopar:Npn \xeCJK_fntef_initial:n
+ {
+ \xeCJK_leave_vmode:
+ \bool_if:NTF \l__xeCJK_nest_bool
+ { \__xeCJK_warning:n { fntef-nesting } }
+ {
+ \bool_set_true:N \l__xeCJK_nest_bool
+ \__xeCJK_restore_shipout_fntef:
+ }
+ \xeCJK_fntef_sbox:n
+ }
+\cs_new_protected:Npn \xeCJK_fntef_initial:nn #1
{
- \int_compare:nNnTF \tex_lastkern:D = \c_three
- { \skip_horizontal:n {#1} }
- { \skip_set:Nn \UL@skip {#1} \UL@leaders }
+ \xeCJK_fntef_initial:n {#1}
+ \bool_if:NF \l__xeCJK_fntef_bool
+ { \dim_zero:N \l__xeCJK_fntef_dim }
+ \markoverwith
}
-\RenewDocumentCommand \CJKunderdot { m }
+\cs_new_protected:Npn \xeCJK_fntef_initial:nnn #1#2#3
{
- \bool_if:NT \l__xeCJK_ulem_hook_used_bool
- { \UL@stop \__xeCJK_ulem_restore_CJK_and_Boundary: }
- \CJK@preUnderdot
- \__xeCJK_make_under_symbol:n { \CJK@underdotSkip }
- \cs_gset_eq:NN \__xeCJK_save_under_CJKsymbol:N \CJKsymbol
- \cs_set_eq:NN \CJKsymbol \__xeCJK_under_CJKsymbol:N
- \__xeCJK_restore_shipout_CJKsymbol:
- \bool_if:NT \l__xeCJK_ulem_hook_used_bool { \UL@start }
- #1
- \bool_if:NT \l__xeCJK_ulem_hook_used_bool { \UL@stop }
- \cs_set_eq:NN \CJKsymbol \__xeCJK_save_under_CJKsymbol:N
- \tl_clear:N \l__xeCJK_fntef_shipout_tl
- \CJK@postUnderdot
- \bool_if:NT \l__xeCJK_ulem_hook_used_bool
- { \__xeCJK_ulem_restore_CJK_and_Boundary: \UL@start }
- \tex_ignorespaces:D
+ \xeCJK_fntef_initial:n {#3}
+ \bool_if:NF \l__xeCJK_fntef_bool
+ {
+ \bool_set_true:N \l__xeCJK_fntef_bool
+ \dim_set:Nn \l__xeCJK_fntef_dim {#1}
+ }
+ \markoverwith
+ {
+ \box_move_down:nn
+ { \l__xeCJK_fntef_dim + \box_ht:N \l__xeCJK_fntef_box }
+ { \box_use:N \l__xeCJK_fntef_box }
+ }
+ \dim_set:Nn \l__xeCJK_fntef_dim { #2 + \box_dp:N \ULC@box }
+ }
+\box_new:N \l__xeCJK_fntef_box
+\cs_new_eq:NN \xeCJKfntefbox \l__xeCJK_fntef_box
+\bool_new:N \l__xeCJK_nest_bool
+\bool_new:N \l__xeCJK_fntef_bool
+\__xeCJK_msg_new:nn { fntef-nesting }
+ { Nesting~is~not~supported. }
+\cs_new_eq:NN \l__xeCJK_fntef_dim \ULdepth
+\cs_new_protected:Npn \xeCJK_fntef_sbox:n #1
+ {
+ \hbox_set:Nn \l__xeCJK_fntef_box
+ {
+ \color_group_begin:
+ \color_ensure_current:
+ #1
+ \color_group_end:
+ }
}
-\box_new:N \g__xeCJK_under_symbol_box
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_restore_CJK_and_Boundary:
+\cs_new_protected_nopar:Npn \xeCJK_leave_vmode:
{
- \xeCJK_if_ulem_patch:TF
+ \if_mode_vertical:
+ \exp_after:wN \tex_indent:D
+ \fi:
+ }
+\keys_define:nn { xeCJK / options }
+ {
+ underdot / symbol .tl_set:N = \l__xeCJK_udot_symbol_tl ,
+ underdot / depth .tl_set:N = \l__xeCJK_udot_depth_tl ,
+ underdot / sep .tl_set:N = \l__xeCJK_udot_sep_tl ,
+ underdot / format .tl_set:N = \l__xeCJK_udot_format_tl ,
+ underdot / boxdepth .tl_set:N = \l__xeCJK_udot_boxdepth_tl ,
+ 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 / 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 / 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 ,
+ underdblline / sep .tl_set:N = \l__xeCJK_udbline_sep_tl ,
+ 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 / 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 / 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 / subtract .bool_set:N = \l__xeCJK_xout_subtract_bool ,
+ xout / format .tl_set:N = \l__xeCJK_xout_format_tl
+ }
+\clist_map_inline:nn
+ { underdot , underline , underdblline , underwave , sout , xout }
+ {
+ \keys_define:nn { xeCJK / options }
+ { #1 .meta:nn = { xeCJK / options / #1 } { ##1 } }
+ }
+\keys_set:nn { xeCJK / options }
+ {
+ 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 ,
+ underline / sep = 0.07 em ,
+ underdblline / skip = true ,
+ underdblline / thickness = \ULthickness ,
+ underdblline / depth = 0.20 em ,
+ underdblline / sep = 0.17 em ,
+ underdblline / gap = 1.1 pt ,
+ underwave / skip = true ,
+ underwave / symbol = \sixly \tex_char:D 58 \exp_stop_f: ,
+ underwave / depth = 0.20 em ,
+ underwave / sep = 0.00 em ,
+ sout / skip = true ,
+ sout / thickness = \ULthickness ,
+ sout / height = 0.35 em ,
+ xout / skip = true
+ }
+\cs_if_free:NF \color
+ {
+ \keys_set:nn { xeCJK / options }
{
- \xeCJK_swap_cs:NN
- \__xeCJK_CJK_and_Boundary_aux: \__xeCJK_ulem_CJK_and_Boundary_aux:
+ underdot / format = \color { red } ,
+ underline / format = \color { blue } ,
+ underdblline / format = \color { blue } ,
+ underwave / format = \color { blue } ,
+ sout / format = \color { red } ,
+ xout / format = \color { blue }
}
- { }
}
-\RenewDocumentCommand \CJKunderanysymbol { m m m }
+\DeclareDocumentCommand \CJKunderanysymbol { o m m m }
{
+ \xeCJK_under_symbol:nnnnnn { symbol } { symbol } {#1} {#2} {#3} {#4}
+ \tex_ignorespaces:D
+ }
+\DeclareDocumentCommand \CJKunderdot { o m }
+ {
+ \xeCJK_under_symbol:nnnnnn { underdot } { udot }
+ {#1}
+ { \l__xeCJK_udot_depth_tl }
+ { \l__xeCJK_udot_format_tl \l__xeCJK_udot_symbol_tl }
+ {#2}
+ \tex_ignorespaces:D
+ }
+\cs_new_protected_nopar:Npn \xeCJK_under_symbol:nnnnnn
+ {
+ \xeCJK_if_ulem_patch:TF
+ { \__xeCJK_under_symbol_auxi:nnnnnn }
+ { \__xeCJK_under_symbol_auxii:nnnnnn }
+ }
+\cs_new_protected:Npn \__xeCJK_under_symbol_auxi:nnnnnn #1#2#3#4#5#6
+ {
+ \xeCJK_ulem_right: \UL@stop
\group_begin:
- \hbox_set:Nn \CJK@underdotBox {#2}
- \__xeCJK_make_under_symbol:n {#1}
- \cs_set_eq:NN \__xeCJK_save_under_CJKsymbol:N \CJKsymbol
- \cs_set_eq:NN \CJKsymbol \__xeCJK_under_CJKsymbol:N
- \__xeCJK_restore_shipout_CJKsymbol:
- \tl_clear:N \l__xeCJK_underdot_shipout_tl
- #3
+ \xeCJK_under_symbol_initial:nnnnn {#1} {#2} {#3} {#4} {#5}
+ \UL@start \xeCJK_ulem_right_node:
+ #6
+ \xeCJK_ulem_right: \UL@stop
\group_end:
- \tex_ignorespaces:D
+ \UL@start \xeCJK_ulem_right_node:
}
-\cs_new_protected:Npn \__xeCJK_restore_shipout_CJKsymbol:
+\cs_new_protected:Npn \__xeCJK_under_symbol_auxii:nnnnnn #1#2#3#4#5#6
{
- \tl_set:Nn \l__xeCJK_fntef_shipout_tl
- {
- \l__xeCJK_underdot_shipout_tl
- \cs_set_eq:NN \CJKsymbol \__xeCJK_save_under_CJKsymbol:N
- }
+ \xeCJK_leave_vmode:
+ \group_begin:
+ \xeCJK_under_symbol_initial:nnnnn {#1} {#2} {#3} {#4} {#5}
+ #6
+ \group_end:
}
-\tl_new:N \l__xeCJK_fntef_shipout_tl
-\tl_new:N \l__xeCJK_underdot_shipout_tl
-\tl_set:Nn \l__xeCJK_underdot_shipout_tl
+\cs_new_protected:Npn \xeCJK_under_symbol_initial:nnnnn #1#2#3#4#5
{
- \cs_set_eq:NN \CJKf@global \scan_stop:
- \int_zero:N \CJK@nest \CJK@postUnderdot
+ \IfNoValueF {#3}
+ { \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 } }
+ {
+ \bool_set_true:N \l__xeCJK_fntef_bool
+ \xeCJK_make_under_symbol:nn {#4}
+ }
+ { \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:
}
-\xeCJK_add_to_shipout:n { \l__xeCJK_fntef_shipout_tl }
-\cs_new_protected:Npn \__xeCJK_make_under_symbol:n #1
+\box_new:N \l__xeCJK_under_symbol_box
+\cs_new_protected:Npn \xeCJK_make_under_symbol:nn #1#2
{
- \hbox_set:Nn \l__xeCJK_tmp_box { ^^^^4e00 }
- \vbox_gset_to_ht:Nnn \g__xeCJK_under_symbol_box \c_zero_dim
+ \hbox_set:Nn \l__xeCJK_under_symbol_box
{
- \skip_vertical:n {#1}
- \hbox_to_zero:n
+ \box_move_down:nn { #1 + \box_ht:N \l__xeCJK_fntef_box }
{
- \tex_kern:D \box_wd:N \l__xeCJK_tmp_box
- \tex_hss:D \box_use:N \CJK@underdotBox \tex_hss:D
+ \hbox_to_zero:n
+ {
+ \xeCJK_select_font:
+ \tex_kern:D \etex_fontcharwd:D \tex_font:D "4E00 \exp_stop_f:
+ \tex_hss:D \box_use:N \l__xeCJK_fntef_box \tex_hss:D
+ }
}
- \tex_vss:D
}
+ \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:
+ {
+ \tl_put_right:Nn \l__xeCJK_fntef_shipout_tl
+ { \xeCJK_swap_cs:NN \CJKsymbol \__xeCJK_under_CJKsymbol:N }
+ \__xeCJK_restore_shipout_fntef:
+ \xeCJK_cs_clear:N \__xeCJK_restore_shipout_CJKsymbol:
+ }
+\cs_new_protected:Npn \__xeCJK_restore_shipout_fntef:
+ {
+ \tl_put_right:Nn \l__xeCJK_fntef_shipout_tl
+ {
+ \bool_set_false:N \l__xeCJK_fntef_bool
+ \dim_zero:N \l__xeCJK_fntef_dim
+ }
+ \xeCJK_cs_clear:N \__xeCJK_restore_shipout_fntef:
}
-\cs_new_protected_nopar:Npn \__xeCJK_under_CJKsymbol:N #1
+\tl_new:N \l__xeCJK_fntef_shipout_tl
+\xeCJK_add_to_shipout:n { \l__xeCJK_fntef_shipout_tl }
+\cs_new_protected_nopar:Npn \__xeCJK_under_CJKsymbol:N
{
- \hbox_overlap_right:n { \box_use:N \g__xeCJK_under_symbol_box }
- \xeCJK_no_break: \__xeCJK_save_under_CJKsymbol:N {#1}
+ \box_use:N \l__xeCJK_under_symbol_box
+ \xeCJK_no_break: \__xeCJK_under_CJKsymbol:N
}
-\RenewDocumentEnvironment { CJKfilltwosides } { O { c } m }
+\DeclareDocumentEnvironment { CJKfilltwosides } { O { c } m }
{
\use:x { \exp_not:N \minipage [#1] { \dim_eval:n {#2} } }
- \cs_set_eq:NN \CJKglue \tex_hfill:D
+ \cs_set_eq:NN \CJKglue \xeCJK_fntef_hfilll:
}
{
\endminipage
@@ -462,10 +932,15 @@
}
\NewEnviron { CJKfilltwosides* } [ 2 ] [ c ]
{
- \cs_set_eq:NN \CJKglue \tex_hfill:D
+ \cs_set_eq:NN \CJKglue \xeCJK_fntef_hfilll:
\tl_set:Nn \arraystretch { 1 }
- \token_if_dim_register:NT \extrarowheight
- { \dim_set_eq:NN \extrarowheight \c_zero_dim }
+ \cs_if_free:NF \extrarowheight
+ { \cs_set_eq:NN \extrarowheight \c_zero_dim }
+ \use:x { \__xeCJK_fill_two_sides:nn {#1} { \dim_eval:n {#2} } }
+ }
+ [ \ignorespacesafterend ]
+\cs_new_protected:Npn \__xeCJK_fill_two_sides:nn #1#2
+ {
\dim_compare:nNnTF {#2} > \c_zero_dim
{
\hbox_set:Nn \l__xeCJK_tmp_box
@@ -476,11 +951,11 @@
}
\dim_compare:nNnTF {#2} > { \box_wd:N \l__xeCJK_tmp_box }
{
- \tabular [#1] { @ { } p { \dim_eval:n {#2} } @ { } }
+ \tabular [#1] { @ { } p {#2} @ { } }
\BODY
\endtabular
}
- { \hbox_unpack:N \l__xeCJK_tmp_box }
+ { \box_use:N \l__xeCJK_tmp_box }
}
{
\tabular [#1] { @ { } c @ { } }
@@ -488,7 +963,10 @@
\endtabular
}
}
- [ \ignorespacesafterend ]
+\cs_new_protected_nopar:Npn \xeCJK_fntef_hfilll:
+ { \skip_horizontal:N \c__xeCJK_filll_skip }
+\skip_new:N \c__xeCJK_filll_skip
+\skip_set:Nn \c__xeCJK_filll_skip { \c_zero_dim plus 1 filll }
%%
%% This package consists of the file xeCJK.dtx,
%% full-stop.map,
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
index ab7c49c18d0..98a8c6e43ab 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 692 2014-06-20 12:25:35Z sobenlee $
+%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z 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 692 2014-06-20 12:25:35Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
{addon file for xunicode}
\ProvidesExplPackage
{xunicode-addon}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
\pdftex_if_engine:T
{
\msg_new:nnnn { xunicode-addon } { cannot-use-pdftex }
@@ -436,23 +436,24 @@
{
\hcoffin_set:Nn \l__xunadd_tmp_coffin {#1}
\hcoffin_set:Nn \l__xunadd_circle_coffin {#2}
- \dim_set:Nn \l__xunadd_circle_width_dim
- { \fp_use:N \l__xunadd_circle_ratio_fp \coffin_wd:N \l__xunadd_circle_coffin }
- \coffin_resize:Nnn \l__xunadd_tmp_coffin
- { \l__xunadd_circle_width_dim }
+ \fp_set:Nn \l__xunadd_circle_scale_fp
{
- ( \coffin_ht:N \l__xunadd_tmp_coffin + \coffin_dp:N \l__xunadd_tmp_coffin )
- * \tex_number:D \l__xunadd_circle_width_dim
- / \tex_number:D \coffin_wd:N \l__xunadd_tmp_coffin
+ \dim_to_decimal_in_unit:nn
+ {
+ \fp_use:N \l__xunadd_circle_ratio_fp
+ \coffin_wd:N \l__xunadd_circle_coffin
+ }
+ { \coffin_wd:N \l__xunadd_tmp_coffin }
}
+ \coffin_scale:Nnn \l__xunadd_tmp_coffin
+ { \l__xunadd_circle_scale_fp } { \l__xunadd_circle_scale_fp }
\coffin_attach:NnnNnnnn
\l__xunadd_circle_coffin { hc } { vc }
- \l__xunadd_tmp_coffin { hc } { vc }
- { \c_zero_dim } { \c_zero_dim }
+ \l__xunadd_tmp_coffin { hc } { vc } { \c_zero_dim } { \c_zero_dim }
\coffin_typeset:Nnnnn \l__xunadd_circle_coffin
{ H } { l } { \c_zero_dim } { \c_zero_dim }
}
-\dim_new:N \l__xunadd_circle_width_dim
+\fp_new:N \l__xunadd_circle_scale_fp
\coffin_new:N \l__xunadd_tmp_coffin
\coffin_new:N \l__xunadd_circle_coffin
\NewDocumentCommand \settextcircledratio { m }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
index eb6d5119d77..366cd74108c 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 692 2014-06-20 12:25:35Z sobenlee $
+%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z 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 692 2014-06-20 12:25:35Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
{extra definition for xunicode}
\ProvidesExplFile
{xunicode-extra.def}
- {\ExplFileDate}{3.2.13}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.14}{\ExplFileDescription}
\ExplSyntaxOff
\DeclareUTFComposite\textsuperscript
\DeclareUTFComposite\textsubscript