diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 153 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty | 222 |
3 files changed, 252 insertions, 127 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg b/Master/texmf-dist/tex/xelatex/xecjk/config/xeCJK.cfg index 4c34f1a2179..f2b2567279c 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 382 2012-12-13 04:58:22Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ {Configuration file for xeCJK package} \ProvidesExplFile {\ExplFileName.cfg} - {\ExplFileDate}{3.1.1}{\ExplFileDescription} + {\ExplFileDate}{3.1.2}{\ExplFileDescription} %% %% diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index 6678f7cc805..4040fcc7d79 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 382 2012-12-13 04:58:22Z sobenlee $ +%% $Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ %% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: @@ -15,7 +15,9 @@ %% Leo Liu <leoliu.pku@gmail.com> %% Qing Lee <sobenlee@gmail.com> %% -%% Copyright (C) 2007--2012 Wenchang Sun +%% Copyright (C) 2007--2013 Wenchang Sun +%% (C) 2009--2013 Leo Liu +%% (C) 2012--2013 Qing Lee %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -31,11 +33,11 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx 382 2012-12-13 04:58:22Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ {Typesetting CJK scripts with XeLaTeX} \ProvidesExplPackage {\ExplFileName} - {\ExplFileDate}{3.1.1}{\ExplFileDescription} + {\ExplFileDate}{3.1.2}{\ExplFileDescription} \msg_new:nnn { xeCJK } { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ @@ -46,9 +48,9 @@ \xetex_if_engine:F { \msg_critical:nn { xeCJK } { Require-XeTeX } } \msg_new:nnn { xeCJK } { l3-too-old } { - Support~package~'#1'~too~old. \\\\ + Support~package~`#1'~too~old. \\\\ Please~update~an~up~to~date~version~of~the~bundles\\\\ - 'l3kernel'~and~'l3packages'\\\\ + `l3kernel'~and~`l3packages'\\\\ using~your~TeX~package~manager~or~from~CTAN.\\ \str_if_eq:nnT {#1} { expl3 } { Loading~xeCJK~will~abort! } } @@ -220,7 +222,23 @@ { \XeTeXcharclass \xeCJK_token_value_charcode:N #1 } \cs_new_nopar:Npn \xeCJK_token_value_charcode:N #1 { \exp_after:wN \__xeCJK_token_value_charcode:w \token_to_meaning:N #1 \q_stop } -\cs_new_nopar:Npn \__xeCJK_token_value_charcode:w #1 ~ #2 ~ #3 \q_stop { `#3 } +\fp_compare:nNnTF { \int_use:N \xetex_XeTeXversion:D \XeTeXrevision } > { 0.9998 } + { + \cs_new_nopar:Npn \__xeCJK_token_value_charcode:w #1 ~ #2 ~ #3 \q_stop + { `#3 } + } + { + \cs_new_nopar:Npn \__xeCJK_token_value_charcode:w #1 ~ #2 ~ #3#4 \q_stop + { \tl_if_empty:nTF {#4} { `#3 } { "20000 } } + } +\prg_new_conditional:Npnn \xeCJK_if_CJK_class:N #1 { p , T , F , TF } + { + \if_cs_exist:w \__xeCJK_CJK_class_tl:n { \xeCJK_token_value_class:N #1 } \cs_end: + \prg_return_true: \else: \prg_return_false: \fi: + } +\cs_new_nopar:Npn \__xeCJK_CJK_class_tl:n #1 + { c__xeCJK_CJK_class_ \int_eval:n {#1} _tl } +\cs_generate_variant:Nn \__xeCJK_CJK_class_tl:n { c } \prg_new_conditional:Npnn \xeCJK_if_same_class:NN #1#2 { p , T , F , TF } { \if_int_compare:w @@ -341,16 +359,11 @@ \seq_gset_from_clist:Nn \g__xeCJK_non_CJK_class_seq { Default , HalfLeft , HalfRight , NormalSpace , Boundary } \seq_new:N \g__xeCJK_CJK_class_seq -\prop_new:N \g__xeCJK_CJK_class_prop \cs_new_protected_nopar:Npn \__xeCJK_save_CJK_class:n #1 { \seq_gput_right:Nn \g__xeCJK_CJK_class_seq {#1} - \prop_gput:Nvn \g__xeCJK_CJK_class_prop { \__xeCJK_class_csname:n {#1} } {#1} - \tl_gput_right:Nx \g__xeCJK_check_single_CJK_case_tl - { { \exp_not:c { \__xeCJK_class_csname:n {#1} } } { \exp_not:N \use_ii:nn } } + \tl_const:cn { \__xeCJK_CJK_class_tl:c { \__xeCJK_class_csname:n {#1} } } {#1} } -\tl_new:N \g__xeCJK_check_single_CJK_case_tl -\cs_generate_variant:Nn \prop_gput:Nnn { Nvn } \clist_map_function:nN { CJK , FullLeft , FullRight } \__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 } @@ -1031,19 +1044,14 @@ } \cs_new_protected_nopar:Npn \__xeCJK_check_single_space:NN #1#2 { - \int_case:non { \xeCJK_token_value_class:N #2 } - { \g__xeCJK_check_single_CJK_case_tl } - { \use_i:nn } - { \__xeCJK_check_single_save:N #1 #2 ~ } + \xeCJK_if_CJK_class:NTF #2 { - \int_case:non { \xeCJK_token_value_class:N \l_peek_token } - { \g__xeCJK_check_single_CJK_case_tl } - { \use_i:nn } - { \__xeCJK_check_single_save:N #1 #2 ~ } + \xeCJK_if_CJK_class:NTF \l_peek_token { \__xeCJK_check_single_save:N #1 #2 } + { \__xeCJK_check_single_save:N #1 #2 ~ } } + { \__xeCJK_check_single_save:N #1 #2 ~ } } -\cs_generate_variant:Nn \int_case:nnn { no } \cs_new_protected_nopar:Npn \xeCJK_check_single_equation:NNnNw #1#2#3#4 { \peek_catcode:NTF \c_math_toggle_token @@ -1163,7 +1171,7 @@ \cs_generate_variant:Nn \__xeCJK_sub_restore_or_cancel:n { x } \__xeCJK_msg_new:nn { SubBlock-undefined } { - The~CJK~sub~block~'#1'~is~undefined.\\\\ + The~CJK~sub~block~`#1'~is~undefined.\\\\ Try~to~use~\token_to_str:N \xeCJKDeclareSubCJKBlock \ to~declare~it. } @@ -1788,9 +1796,9 @@ } \__xeCJK_msg_new:nn { fallback } { - CJKfamily~'#2'~ + CJKfamily~`#2'~ ( \prop_get:No \g__xeCJK_family_font_name_prop {#2} )~ - does~not~contain~glyph~'#1'~(U+\int_to_hexadecimal:n {`#1}).\\ + does~not~contain~glyph~`#1'~(U+\int_to_hexadecimal:n {`#1}).\\ } \bool_new:N \l__xeCJK_fallback_first_bool \cs_generate_variant:Nn \prop_get:Nn { No } @@ -2012,8 +2020,7 @@ \cs_gset_protected_nopar:cpx { \__xeCJK_family_csname:n {#1} } { \group_begin: - \cs_set_eq:NN - \exp_not:n { \__xeCJK_update_family:n \use_none:n } + \exp_not:n { \cs_set_eq:NN \__xeCJK_update_family:n \use_none:n } \exp_not:n { \fontspec_set_family:Nnn \l__xeCJK_fontspec_family_tl } { \exp_not:V \l__xeCJK_fontspec_options_clist } { \exp_not:V \l__xeCJK_font_name_tl } @@ -2248,7 +2255,7 @@ { \__xeCJK_block_select_font:n {#2} } } } -\__xeCJK_msg_new:nn { CJK-block } { Switch~from~block~'#1'~to~'#2'. } +\__xeCJK_msg_new:nn { CJK-block } { Switch~from~block~`#1'~to~`#2'. } \cs_new_protected_nopar:Npn \__xeCJK_block_select_font:n #1 { \cs_if_exist_use:cF { \__xeCJK_font_csname:n { \l_xeCJK_family_tl/#1 } } @@ -2323,10 +2330,13 @@ } \cs_new_protected_nopar:Npn \__xeCJK_family_unknown_warning:n #1 { - \seq_if_in:NnF \g__xeCJK_unknown_family_seq {#1} + \prop_if_empty:NF \g__xeCJK_family_font_name_prop { - \seq_gput_right:Nn \g__xeCJK_unknown_family_seq {#1} - \__xeCJK_warning:nx { CJKfamily-Unknown } {#1} + \seq_if_in:NnF \g__xeCJK_unknown_family_seq {#1} + { + \seq_gput_right:Nn \g__xeCJK_unknown_family_seq {#1} + \__xeCJK_warning:nx { CJKfamily-Unknown } {#1} + } } } \cs_generate_variant:Nn \__xeCJK_family_unknown_warning:n { x } @@ -2334,7 +2344,10 @@ \__xeCJK_msg_new:nn { CJKfamily-Unknown } { Unknown~CJK~family~`\__xeCJK_msg_family_map:n {#1}'~is~being~ignored.\\\\ - Try~to~use~ + Try~to~use~`\__xeCJK_msg_def_family_map:n {#1}'~to~define~it. + } +\cs_new_nopar:Npn \__xeCJK_msg_def_family_map:n #1 + { \str_case_x:nnn {#1} { \CJKrmdefault { \token_to_str:N \setCJKmainfont } @@ -2342,7 +2355,7 @@ \CJKttdefault { \token_to_str:N \setCJKmonofont } } { \token_to_str:N \setCJKfamilyfont {#1} } - [...]{...}~to~define~it. + [...]{...} } \cs_new_nopar:Npn \__xeCJK_msg_family_map:n #1 { @@ -2445,19 +2458,40 @@ \cs_generate_variant:Nn \prop_get:NnNF { Nx } \__xeCJK_at_end_preamble:n { - \prop_if_empty:NTF \g__xeCJK_family_font_name_prop - { \__xeCJK_warning:n { no-CJKfamily } } + \cs_set_eq:NN \__xeCJK_family_default_wrap:n \exp_not:n + \tl_if_eq:NNT \CJKfamilydefault \l__xeCJK_family_default_init_tl { \tl_gset:Nx \CJKfamilydefault { \str_case_x:nnn { \familydefault } { - { \rmdefault } { \CJKrmdefault } - { \sfdefault } { \CJKsfdefault } - { \ttdefault } { \CJKttdefault } + { \rmdefault } { \exp_not:N \CJKrmdefault } + { \sfdefault } { \exp_not:N \CJKsfdefault } + { \ttdefault } { \exp_not:N \CJKttdefault } } { \CJKfamilydefault } } + } + \cs_undefine:N \__xeCJK_family_default_wrap:n + \prop_if_empty:NTF \g__xeCJK_family_font_name_prop + { \__xeCJK_warning:nx { no-CJKfamily } { \CJKfamilydefault } } + { + \xeCJK_family_if_exist:xF { \CJKfamilydefault } + { + \tl_set_eq:NN \l__xeCJK_tmpa_tl \CJKfamilydefault + \str_if_eq_x:nnTF { \CJKfamilydefault } { \CJKrmdefault } + { \use:n } + { + \xeCJK_family_if_exist:xTF { \CJKrmdefault } + { \tl_gset:Nn \CJKfamilydefault { \CJKrmdefault } } + } + { + \prop_map_inline:Nn \g__xeCJK_family_font_name_prop + { \prop_map_break:n { \tl_gset:Nn \CJKfamilydefault {#1} } } + } + \__xeCJK_warning:nxx { CJKfamilydefault-undefined } + { \l__xeCJK_tmpa_tl } { \CJKfamilydefault } + } \CJKfamily { \CJKfamilydefault } \bool_if:NT \g__xeCJK_math_bool { \xeCJK_set_mathfont: } } @@ -2466,8 +2500,14 @@ { It~seems~that~you~have~not~declare~a~CJKfamily.\\ If~you~want~to~use~xeCJK~in~the~right~way,~you~should~use\\\\ - \token_to_str:N \xeCJKmainfont[...]{...}\\\\ - in~the~preamble~to~declare~the~main~CJKfamily.\\ + `\__xeCJK_msg_def_family_map:n {#1}'\\\\ + in~the~preamble~to~declare~the~default~CJKfamily.\\ + } +\__xeCJK_msg_new:nn { CJKfamilydefault-undefined } + { + Undefined~CJK~default~family~`\__xeCJK_msg_family_map:n {#1}'~ + has~been~replaced~by~`\__xeCJK_msg_family_map:n {#2}'.\\\\ + Try~to~use~`\__xeCJK_msg_def_family_map:n {#1}'~to~define~it. } \keys_define:nn { xeCJK / options } { CJKmath .bool_gset:N = \g__xeCJK_math_bool } \NewDocumentCommand \setCJKmathfont { O{} m } @@ -2648,8 +2688,8 @@ } \__xeCJK_msg_new:nn { key-unknown } { - Sorry,~but~\l__keys_module_tl \ does~not~have~a~key~called~'#1'.\\\\ - The~key~'#1'~is~being~ignored. + Sorry,~but~\l__keys_module_tl \ does~not~have~a~key~called~`#1'.\\\\ + The~key~`#1'~is~being~ignored. } \cs_new_nopar:Npn \CJKsymbol #1 {#1} \cs_new_nopar:Npn \CJKpunctsymbol #1 {#1} @@ -2698,8 +2738,18 @@ \tl_if_exist:NF \CJKrmdefault { \tl_gset:Nn \CJKrmdefault { rm } } \tl_if_exist:NF \CJKsfdefault { \tl_gset:Nn \CJKsfdefault { sf } } \tl_if_exist:NF \CJKttdefault { \tl_gset:Nn \CJKttdefault { tt } } -\tl_if_exist:NF \CJKfamilydefault { \tl_gset:Nn \CJKfamilydefault { \CJKrmdefault } } -\tl_new:c { \__xeCJK_family_csname:n { \CJKfamilydefault } } +\tl_new:N \l__xeCJK_family_default_init_tl +\cs_new_eq:NN \__xeCJK_family_default_wrap:n \use:n +\tl_gset:Nx \l__xeCJK_family_default_init_tl + { + \exp_not:N \__xeCJK_family_default_wrap:n + { + \tl_if_exist:NTF \CJKfamilydefault + { \exp_not:V \CJKfamilydefault } + { \exp_not:N \CJKrmdefault } + } + } +\tl_gset_eq:NN \CJKfamilydefault \l__xeCJK_family_default_init_tl \NewDocumentCommand \xeCJKsetup { +m } { \keys_set:nn { xeCJK / options } {#1} @@ -2728,6 +2778,11 @@ \xeCJK_set_char_class:nnn {#1} {#2} {#3} \xeCJKResetPunctClass } +\cs_if_exist:cT { ? - \token_to_str:N \nobreakspace } + { + \exp_args:NNv \ProvideTextCommandDefault \nobreakspace + { ? - \token_to_str:N \nobreakspace } + } \__xeCJK_msg_new:nn { conflict-package } { The~`#1'~package~is~in~conflict~with~xeCJK. \\ @@ -2736,7 +2791,13 @@ \xeCJK_if_package_loaded:nTF { realscripts } { \@ifpackagelater { realscripts } { 2010/10/10 } { } - { \__xeCJK_error:nx { conflict-package } { xltxtra } } + { + \__xeCJK_error:nx { conflict-package } + { + \xeCJK_if_package_loaded:nTF { xltxtra } + { xltxtra } { realscripts } + } + } } { \cs_new_eq:NN \__xeCJK_dim_max:nn \dim_max:nn @@ -2760,7 +2821,7 @@ \tl_set:Nx \f@family {#1} \__xeCJK_update_family:n { - \str_case_x:nnn {#1} + \str_case:nnn {#1} { { \rmdefault } { \CJKfamily { \CJKrmdefault } } { \sfdefault } { \CJKfamily { \CJKsfdefault } } diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty index 6d3e152a498..9df832c901d 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 382 2012-12-13 04:58:22Z sobenlee $ +%% $Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ %% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: @@ -15,7 +15,9 @@ %% Leo Liu <leoliu.pku@gmail.com> %% Qing Lee <sobenlee@gmail.com> %% -%% Copyright (C) 2007--2012 Wenchang Sun +%% Copyright (C) 2007--2013 Wenchang Sun +%% (C) 2009--2013 Leo Liu +%% (C) 2012--2013 Qing Lee %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -31,11 +33,11 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx 382 2012-12-13 04:58:22Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ {xeCJK patch file for ulem/CJKfntef} \ProvidesExplPackage {xeCJKfntef} - {\ExplFileDate}{3.1.1}{\ExplFileDescription} + {\ExplFileDate}{3.1.2}{\ExplFileDescription} \PassOptionsToPackage { normalem } { ulem } \DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } } \ProcessOptions \scan_stop: @@ -92,22 +94,22 @@ \xeCJK_cs_clear:N \__xeCJK_ulem_leader_type: \cs_new_protected_nopar:Npn \__xeCJK_ulem_initial: { - \cs_set_eq:NN \__xeCJK_punct_hskip:n \__xeCJK_ulem_hskip:n - \cs_set_eq:NN + \xeCJK_swap_cs:NN \__xeCJK_Default_and_FullLeft_glue:N \__xeCJK_ulem_Default_and_FullLeft_glue:N - \cs_set_eq:NN + \xeCJK_swap_cs:NN \__xeCJK_Default_and_FullRight_glue:N \__xeCJK_ulem_Default_and_FullRight_glue:N - \cs_set_eq:NN + \xeCJK_swap_cs:NN \__xeCJK_CJK_and_FullLeft_glue:N \__xeCJK_ulem_CJK_and_FullLeft_glue:N - \cs_set_eq:NN + \xeCJK_swap_cs:NN \__xeCJK_CJK_and_FullRight_glue:N \__xeCJK_ulem_CJK_and_FullRight_glue:N - \cs_set_eq:NN + \xeCJK_swap_cs:NN \__xeCJK_Boundary_and_FullLeft_glue:N \__xeCJK_ulem_Boundary_and_FullLeft_glue:N - \cs_set_eq:NN \xeCJK_FullLeft_and_Default: \__xeCJK_ulem_FullLeft_and_Default: - \cs_set_eq:NN \xeCJK_FullLeft_and_CJK: \__xeCJK_ulem_FullLeft_and_CJK: - \cs_set_eq:NN \xeCJK_FullRight_and_Default: \__xeCJK_ulem_FullRight_and_Default: - \cs_set_eq:NN \xeCJK_FullRight_and_CJK: \__xeCJK_ulem_FullRight_and_CJK: - \cs_set_eq:NN \xeCJK_CJK_and_CJK:N \__xeCJK_ulem_CJK_and_CJK:N + \xeCJK_swap_cs:NN \__xeCJK_punct_hskip:n \__xeCJK_ulem_punct_hskip:n + \xeCJK_swap_cs:NN \xeCJK_FullLeft_and_Default: \__xeCJK_ulem_FullLeft_and_Default: + \xeCJK_swap_cs:NN \xeCJK_FullLeft_and_CJK: \__xeCJK_ulem_FullLeft_and_CJK: + \xeCJK_swap_cs:NN \xeCJK_FullRight_and_Default: \__xeCJK_ulem_FullRight_and_Default: + \xeCJK_swap_cs:NN \xeCJK_FullRight_and_CJK: \__xeCJK_ulem_FullRight_and_CJK: + \xeCJK_swap_cs:NN \xeCJK_CJK_and_CJK:N \__xeCJK_ulem_CJK_and_CJK:N \seq_map_inline:Nn \g__xeCJK_CJK_sub_class_seq { \seq_map_inline:Nn \g__xeCJK_CJK_sub_class_seq @@ -126,12 +128,24 @@ } } } +\cs_new_nopar:Npn \xeCJK_if_ulem_patch:TF + { + \if_meaning:w \ \LA@space + \exp_after:wN \use_ii:nn + \else: + \exp_after:wN \use_i:nn + \fi: + } \cs_new_protected_nopar:Npn \__xeCJK_ulem_CJK_and_CJK:N { - \xeCJK_class_group_end: - \UL@stop \__xeCJK_ulem_ccglue: \UL@start - \__xeCJK_ulem_class_group_begin: - \CJKsymbol + \xeCJK_if_ulem_patch:TF + { + \xeCJK_class_group_end: + \UL@stop \__xeCJK_ulem_ccglue: \UL@start + \__xeCJK_ulem_class_group_begin: + \CJKsymbol + } + { \__xeCJK_ulem_CJK_and_CJK:N } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_class_group_begin: { @@ -141,104 +155,154 @@ } \cs_new_protected_nopar:Npn \__xeCJK_ulem_between_CJK_blocks:nnN #1#2 { - \xeCJK_class_group_end: - \UL@stop \__xeCJK_ulem_ccglue: \UL@start - \xeCJK_class_group_begin: - \xeCJK_clear_Boundary_and_CJK_toks: - \__xeCJK_switch_font:nn {#1} {#2} - \CJKsymbol + \xeCJK_if_ulem_patch:TF + { + \xeCJK_class_group_end: + \UL@stop \__xeCJK_ulem_ccglue: \UL@start + \xeCJK_class_group_begin: + \xeCJK_clear_Boundary_and_CJK_toks: + \__xeCJK_switch_font:nn {#1} {#2} + \CJKsymbol + } + { + \skip_horizontal:N \l__xeCJK_ccglue_skip + \__xeCJK_switch_font:nn {#1} {#2} + \CJKsymbol + } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_Default_and_FullLeft_glue:N #1 { - \UL@stop - \__xeCJK_ulem_skip_punct_begin: - \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} - \UL@start + \xeCJK_if_ulem_patch:TF + { + \UL@stop + \__xeCJK_ulem_skip_punct_begin: + \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} + \UL@start + } + { \__xeCJK_ulem_Default_and_FullLeft_glue:N #1 } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_Boundary_and_FullLeft_glue:N #1 { - \UL@stop - \__xeCJK_ulem_skip_punct_begin: - \int_compare:nNnF \etex_lastnodetype:D = \c_one - { \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} } - \UL@start + \xeCJK_if_ulem_patch:TF + { + \UL@stop + \__xeCJK_ulem_skip_punct_begin: + \int_compare:nNnF \etex_lastnodetype:D = \c_one + { \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} } + \UL@start + } + { \__xeCJK_ulem_Boundary_and_FullLeft_glue:N #1 } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_CJK_and_FullLeft_glue:N #1 { - \xeCJK_class_group_end: - \UL@stop - \__xeCJK_ulem_skip_punct_begin: - \__xeCJK_ulem_ccglue: - \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} - \UL@start - \__xeCJK_ulem_class_group_begin: + \xeCJK_if_ulem_patch:TF + { + \xeCJK_class_group_end: + \UL@stop + \__xeCJK_ulem_skip_punct_begin: + \__xeCJK_ulem_ccglue: + \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} + \UL@start + \__xeCJK_ulem_class_group_begin: + } + { \__xeCJK_ulem_CJK_and_FullLeft_glue:N #1 } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_Default_and_FullRight_glue:N #1 { - \UL@stop - \__xeCJK_ulem_skip_punct_begin: - \__xeCJK_punct_if_long:NTF {#1} - { \__xeCJK_ulem_ccglue: } + \xeCJK_if_ulem_patch:TF { - \__xeCJK_punct_if_middle:NT {#1} + \UL@stop + \__xeCJK_ulem_skip_punct_begin: + \__xeCJK_punct_if_long:NTF {#1} + { \__xeCJK_ulem_ccglue: } { + \__xeCJK_punct_if_middle:NT {#1} + { + \xeCJK_no_break: + \__xeCJK_punct_glue:NN \c__xeCJK_right_tl {#1} + } \xeCJK_no_break: - \__xeCJK_punct_glue:NN \c__xeCJK_right_tl {#1} } - \xeCJK_no_break: + \UL@start } - \UL@start + { \__xeCJK_ulem_Default_and_FullRight_glue:N #1 } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_CJK_and_FullRight_glue:N #1 { - \xeCJK_class_group_end: - \__xeCJK_ulem_Default_and_FullRight_glue:N {#1} - \__xeCJK_ulem_class_group_begin: + \xeCJK_if_ulem_patch:TF + { + \xeCJK_class_group_end: + \__xeCJK_ulem_Default_and_FullRight_glue:N {#1} + \__xeCJK_ulem_class_group_begin: + } + { \__xeCJK_ulem_CJK_and_FullRight_glue:N #1 } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullLeft_and_Default: { - \__xeCJK_punct_if_middle:NTF \g__xeCJK_last_punct_tl + \xeCJK_if_ulem_patch:TF { - \xeCJK_get_punct_bounds:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl - \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl - \xeCJK_class_group_end: \UL@stop \xeCJK_no_break: - \__xeCJK_punct_glue:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl + \__xeCJK_punct_if_middle:NTF \g__xeCJK_last_punct_tl + { + \xeCJK_get_punct_bounds:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl + \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl + \xeCJK_class_group_end: \UL@stop \xeCJK_no_break: + \__xeCJK_punct_glue:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl + } + { \xeCJK_class_group_end: \UL@stop } + \__xeCJK_ulem_skip_punct_end: + \xeCJK_no_break: + \UL@start } - { \xeCJK_class_group_end: \UL@stop } - \__xeCJK_ulem_skip_punct_end: - \xeCJK_no_break: - \UL@start + { \__xeCJK_ulem_FullLeft_and_Default: } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullLeft_and_CJK: { - \__xeCJK_ulem_FullLeft_and_Default: - \__xeCJK_ulem_class_group_begin: + \xeCJK_if_ulem_patch:TF + { + \__xeCJK_ulem_FullLeft_and_Default: + \__xeCJK_ulem_class_group_begin: + } + { \__xeCJK_ulem_FullLeft_and_CJK: } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullRight_and_Default: { - \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl - \xeCJK_class_group_end: - \UL@stop - \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl - \__xeCJK_ulem_skip_punct_end: - \UL@start + \xeCJK_if_ulem_patch:TF + { + \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl + \xeCJK_class_group_end: + \UL@stop + \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl + \__xeCJK_ulem_skip_punct_end: + \UL@start + } + { \__xeCJK_ulem_FullRight_and_Default: } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullRight_and_CJK: { - \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl - \xeCJK_class_group_end: - \UL@stop - \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl - \__xeCJK_ulem_ccglue: - \__xeCJK_ulem_skip_punct_end: - \UL@start - \__xeCJK_ulem_class_group_begin: + \xeCJK_if_ulem_patch:TF + { + \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl + \xeCJK_class_group_end: + \UL@stop + \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl + \__xeCJK_ulem_ccglue: + \__xeCJK_ulem_skip_punct_end: + \UL@start + \__xeCJK_ulem_class_group_begin: + } + { \__xeCJK_ulem_FullRight_and_CJK: } + } +\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_hskip:n + { + \xeCJK_if_ulem_patch:TF + { \__xeCJK_ulem_hskip:n } + { \__xeCJK_ulem_punct_hskip:n } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_glue:n #1 { - \cs_if_eq:NNTF \ \LA@space - { \skip_horizontal:n {#1} } + \xeCJK_if_ulem_patch:TF { \UL@stop \__xeCJK_ulem_hskip:n {#1} \UL@start } + { \skip_horizontal:n {#1} } } \cs_new_protected_nopar:Npn \__xeCJK_ulem_ccglue: { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders } |