diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 243 |
1 files changed, 191 insertions, 52 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index 4040fcc7d79..1b2b032c75e 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 399 2013-01-11 14:57:50Z sobenlee $ +%% $Id: xeCJK.dtx 416 2013-05-25 08:44:28Z sobenlee $ %% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: @@ -33,11 +33,11 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx 399 2013-01-11 14:57:50Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 416 2013-05-25 08:44:28Z sobenlee $ {Typesetting CJK scripts with XeLaTeX} \ProvidesExplPackage {\ExplFileName} - {\ExplFileDate}{3.1.2}{\ExplFileDescription} + {\ExplFileDate}{3.2.0}{\ExplFileDescription} \msg_new:nnn { xeCJK } { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ @@ -148,14 +148,61 @@ } \tl_const:Nn \c_xeCJK_space_skip_tl { - \skip_if_eq:nnTF \tex_spaceskip:D \c_zero_skip + \int_compare:nNnTF \g__xeCJK_spacefactor_int = \c_one_thousand { - \tex_fontdimen:D \c_two \tex_font:D - plus \tex_fontdimen:D \c_three \tex_font:D - minus \tex_fontdimen:D \c_four \tex_font:D + \skip_if_eq:nnTF \tex_spaceskip:D \c_zero_skip + { + \tex_fontdimen:D \c_two \tex_font:D + plus \tex_fontdimen:D \c_three \tex_font:D + minus \tex_fontdimen:D \c_four \tex_font:D + } + { \tex_spaceskip:D } + } + { + \skip_if_eq:nnTF \tex_spaceskip:D \c_zero_skip + { + \int_compare:nNnTF \g__xeCJK_spacefactor_int < { 2000 } + { \__xeCJK_space_skip_scale:nnn { \tex_fontdimen:D \c_two \tex_font:D } } + { + \skip_if_eq:nnTF \tex_xspaceskip:D \c_zero_skip + { + \__xeCJK_space_skip_scale:nnn + { + \tex_fontdimen:D \c_two \tex_font:D + + \tex_fontdimen:D \c_seven \tex_font:D + } + } + { \tex_xspaceskip:D \use_none:nn } + } + { \tex_fontdimen:D \c_three \tex_font:D } + { \tex_fontdimen:D \c_four \tex_font:D } + } + { + \int_compare:nNnTF \g__xeCJK_spacefactor_int < { 2000 } + { \__xeCJK_space_skip_scale:nnn { \tex_spaceskip:D } } + { + \skip_if_eq:nnTF \tex_xspaceskip:D \c_zero_skip + { + \__xeCJK_space_skip_scale:nnn + { \tex_spaceskip:D + \tex_fontdimen:D \c_seven \tex_font:D } + } + { \tex_xspaceskip:D \use_none:nn } + } + { \etex_gluestretch:D \tex_spaceskip:D } + { \etex_glueshrink:D \tex_spaceskip:D } + } } - { \tex_spaceskip:D } } +\cs_new_nopar:Npn \__xeCJK_space_skip_scale:nnn #1#2#3 + { + \dim_eval:n {#1} + plus \fp_eval:n { \g__xeCJK_spacefactor_int / 1000 } #2 + minus + \int_div_truncate:nn + { 1000 * \tex_number:D #3 } { \g__xeCJK_spacefactor_int } sp + } +\int_new:N \g__xeCJK_spacefactor_int +\int_gset_eq:NN \g__xeCJK_spacefactor_int \c_one_thousand \cs_new_protected_nopar:Npn \xeCJK_glue_to_skip:nN #1#2 { \hbox_set:Nn \l__xeCJK_tmp_box { #1 \scan_stop: \exp_after:wN } \exp_after:wN @@ -222,14 +269,16 @@ { \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 } -\fp_compare:nNnTF { \int_use:N \xetex_XeTeXversion:D \XeTeXrevision } > { 0.9998 } +\str_if_eq_x:nnTF { \token_to_str:N \Umathcode } { \token_to_meaning:N \Umathcode } { \cs_new_nopar:Npn \__xeCJK_token_value_charcode:w #1 ~ #2 ~ #3 \q_stop { `#3 } + \cs_new_eq:NN \xeCJK_xetex_mathcode:w \Umathcode } { \cs_new_nopar:Npn \__xeCJK_token_value_charcode:w #1 ~ #2 ~ #3#4 \q_stop { \tl_if_empty:nTF {#4} { `#3 } { "20000 } } + \cs_new_eq:NN \xeCJK_xetex_mathcode:w \XeTeXmathcode } \prg_new_conditional:Npnn \xeCJK_if_CJK_class:N #1 { p , T , F , TF } { @@ -293,6 +342,7 @@ \xeCJK_new_class:n { HalfLeft } \xeCJK_new_class:n { HalfRight } \xeCJK_new_class:n { NormalSpace } +\xeCJK_new_class:n { IVS } \clist_const:Nn \c__xeCJK_HalfLeft_chars_clist { "28 , "2D , "5B , "60 , "7B } \clist_const:Nn \c__xeCJK_HalfRight_chars_clist @@ -300,14 +350,14 @@ \clist_const:Nn \c__xeCJK_NormalSpace_chars_clist { "2F } \clist_const:Nn \c__xeCJK_FullLeft_chars_clist { - "2018 , "201C , "2116 , "3008 , "300A , "300C , "300E , "3010 , "3012 , - "3014 , "3016 , "3018 , "301A , "301D , "3036 , "E76C , "FE59 , "FE5B , - "FE5D , "FE5F , "FE60 , "FE69 , "FE6B , "FF03 , "FF04 , "FF08 , "FF20 , - "FF3B , "FF5B , "FFE0 , "FFE1 , "FFE5 , "FFE6 + "2018 , "201C , "3008 , "300A , "300C , "300E , "3010 , "3012 , "3014 , + "3016 , "3018 , "301A , "301D , "3036 , "FE59 , "FE5B , "FE5D , "FE5F , + "FE60 , "FE69 , "FE6B , "FF03 , "FF04 , "FF08 , "FF20 , "FF3B , "FF5B , + "FFE0 , "FFE1 , "FFE5 , "FFE6 } \clist_const:Nn \c__xeCJK_FullRight_chars_clist { - "00B7 , "2019 , "201D , "2014 , "2015 , "2025 , "2026 , "2030 , "2500 , + "00B7 , "2019 , "201D , "2014 , "2015 , "2025 , "2026 , "2027 , "2500 , "3001 , "3002 , "3005 , "3006 , "3009 , "300B , "300D , "300F , "3011 , "3015 , "3017 , "3019 , "301B , "301E , "301F , "3041 , "3043 , "3045 , "3047 , "3049 , "3063 , "3083 , "3085 , "3087 , "308E , "309B , "309C , @@ -343,16 +393,25 @@ "A490 -> "A4CF , "A960 -> "A97F , "AC00 -> "D7AF , - "B000 -> "B0FF , "D7B0 -> "D7FF , "F900 -> "FAFF , + "FE10 -> "FE1F , "FE30 -> "FE4F , "FF00 -> "FFEF , + "1B000 -> "1B0FF , + "1F200 -> "1F2FF , "20000 -> "2A6DF , "2A700 -> "2B73F , "2B740 -> "2B81F , "2F800 -> "2FA1F } +\clist_const:Nn \c__xeCJK_IVS_chars_clist + { + "3099 , + "309A , + "FE00 -> "FE0F , + "E0100 -> "E01EF + } \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 @@ -364,7 +423,7 @@ \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 } \__xeCJK_save_CJK_class:n +\clist_map_function:nN { CJK , FullLeft , FullRight , IVS } \__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 } { @@ -451,12 +510,13 @@ { \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 \xeCJKResetPunctClass } \xeCJKResetCharClass \cs_new_protected_nopar:Npn \xeCJK_inter_class_toks:nnn #1#2#3 { \XeTeXinterchartoks \xeCJK_class_num:n {#1} ~ \xeCJK_class_num:n {#2} = {#3} } -\cs_generate_variant:Nn \xeCJK_inter_class_toks:nnn { nnc , nnv , nnx } +\cs_generate_variant:Nn \xeCJK_inter_class_toks:nnn { nnc , nnx } \cs_new_nopar:Npn \xeCJK_get_inter_class_toks:nn #1#2 { \tex_the:D \XeTeXinterchartoks \xeCJK_class_num:n {#1} ~ \xeCJK_class_num:n {#2} } \cs_new_protected_nopar:Npn \xeCJK_clear_inter_class_toks:nn #1#2 @@ -475,14 +535,18 @@ \cs_generate_variant:Nn \xeCJK_app_inter_class_toks:nnn { nnc , nnx } \cs_new_protected_nopar:Npn \xeCJK_copy_inter_class_toks:nnnn #1#2#3#4 { - \xeCJK_inter_class_toks:nnx {#1} {#2} - { \xeCJK_get_inter_class_toks:nn {#3} {#4} } + \tl_set:Nx \l__xeCJK_tmpa_tl { \xeCJK_get_inter_class_toks:nn {#3} {#4} } + \tl_if_empty:NF \l__xeCJK_tmpa_tl + { \xeCJK_inter_class_toks:nnx {#1} {#2} { \exp_not:V \l__xeCJK_tmpa_tl } } } \cs_new_protected_nopar:Npn \xeCJK_replace_inter_class_toks:nnnn #1#2#3#4 { \tl_set:Nx \l__xeCJK_tmpa_tl { \xeCJK_get_inter_class_toks:nn {#1} {#2} } - \tl_replace_all:Nnn \l__xeCJK_tmpa_tl {#3} {#4} - \xeCJK_inter_class_toks:nnx {#1} {#2} { \exp_not:V \l__xeCJK_tmpa_tl } + \tl_if_empty:NF \l__xeCJK_tmpa_tl + { + \tl_replace_all:Nnn \l__xeCJK_tmpa_tl {#3} {#4} + \xeCJK_inter_class_toks:nnx {#1} {#2} { \exp_not:V \l__xeCJK_tmpa_tl } + } } \cs_new_protected_nopar:Npn \xeCJK_clear_Boundary_and_CJK_toks: { \seq_map_function:NN \g__xeCJK_CJK_class_seq \__xeCJK_clear_Boundary_and_CJK_toks:n } @@ -490,6 +554,19 @@ { \xeCJK_clear_inter_class_toks:nn { Boundary } {#1} } \cs_new_eq:NN \xeCJK_class_group_begin: \c_group_begin_token \cs_new_eq:NN \xeCJK_class_group_end: \c_group_end_token +\AtEndOfPackage + { + \seq_map_inline:Nn \g__xeCJK_class_seq + { + \str_if_eq:nnTF {#1} { IVS } + { \xeCJK_copy_inter_class_toks:nnnn { IVS } {#1} { CJK } { CJK } } + { + \xeCJK_copy_inter_class_toks:nnnn { IVS } {#1} { CJK } {#1} + \str_if_eq:nnF {#1} { CJK } + { \xeCJK_copy_inter_class_toks:nnnn {#1} { IVS } {#1} { CJK } } + } + } + } \clist_map_inline:nn { Default , HalfLeft , HalfRight , NormalSpace } { \xeCJK_inter_class_toks:nnn {#1} { CJK } @@ -509,6 +586,7 @@ \bool_if:nTF { \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 } { @@ -532,6 +610,7 @@ { \xeCJK_inter_class_toks:nnn {#1} { Boundary } { + \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 } } } { @@ -567,6 +646,7 @@ \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 ) } @@ -751,7 +831,7 @@ \xeCJK_class_group_end: \xeCJK_no_break: \__xeCJK_punct_glue:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl } - { \xeCJK_class_group_end: \xeCJK_no_break: } + { \xeCJK_class_group_end: \xeCJK_no_break: \skip_horizontal:N \c_zero_skip } } \cs_new_protected_nopar:Npn \xeCJK_FullRight_and_CJK: { @@ -802,7 +882,13 @@ } \cs_new_protected_nopar:Npn \__xeCJK_Boundary_and_FullLeft_glue:N #1 { - \int_compare:nNnF \etex_lastnodetype:D = \c_one + \int_case:nnn { \etex_lastnodetype:D } + { + { \c_one } { \skip_horizontal:N \c_zero_skip } + { \c_minus_one } { } + { \c_eleven } { } + { \c_thirteen } { } + } { \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1} } } \cs_new_protected_nopar:Npn \xeCJK_Default_and_FullRight:nN #1#2 @@ -846,7 +932,7 @@ { \__xeCJK_punct_if_middle:NTF {#1} { \xeCJK_no_break: \__xeCJK_punct_glue:NN \c__xeCJK_right_tl {#1} } - { \xeCJK_no_break: } + { \xeCJK_no_break: \skip_horizontal:N \c_zero_skip } } } \cs_new_eq:NN \__xeCJK_Default_and_FullRight_glue:N \__xeCJK_CJK_and_FullRight_glue:N @@ -2318,7 +2404,6 @@ \tex_ignorespaces:D } \tl_new:N \l_xeCJK_family_tl -\tl_set:Nn \l_xeCJK_family_tl { \CJKfamilydefault } \cs_new_protected_nopar:Npn \__xeCJK_gobble_CJKfamily: { \cs_set_eq:NN \CJKfamily \__xeCJK_gobble_CJKfamily:wn } \DeclareExpandableDocumentCommand \__xeCJK_gobble_CJKfamily:wn { t+ t- m } { } @@ -2368,12 +2453,21 @@ {#1} } \NewDocumentCommand \setCJKmainfont { O{} m } - { \xeCJK_set_family:xxx { \CJKrmdefault } {#1} {#2} } + { + \xeCJK_set_family:xxx { \CJKrmdefault } {#1} {#2} + \normalfont + } \cs_new_eq:NN \setCJKromanfont \setCJKmainfont \NewDocumentCommand \setCJKsansfont { O{} m } - { \xeCJK_set_family:xxx { \CJKsfdefault } {#1} {#2} } + { + \xeCJK_set_family:xxx { \CJKsfdefault } {#1} {#2} + \normalfont + } \NewDocumentCommand \setCJKmonofont { O{} m } - { \xeCJK_set_family:xxx { \CJKttdefault } {#1} {#2} } + { + \xeCJK_set_family:xxx { \CJKttdefault } {#1} {#2} + \normalfont + } \@onlypreamble \setCJKmainfont \@onlypreamble \setCJKmathfont \@onlypreamble \setCJKsansfont @@ -2546,37 +2640,73 @@ \__xeCJK_check_num_range:nnNN {#1} {#2} \l__xeCJK_tmpa_int \l__xeCJK_tmpb_int \xeCJK_int_until_do:nn { \l__xeCJK_tmpa_int > \l__xeCJK_tmpb_int } { - \tex_global:D \XeTeXmathcode \l__xeCJK_tmpa_int = #3 ~ #4 \l__xeCJK_tmpa_int + \tex_global:D \xeCJK_xetex_mathcode:w + \l__xeCJK_tmpa_int = #3 ~ #4 \l__xeCJK_tmpa_int \int_incr:N \l__xeCJK_tmpa_int } } +\keys_define:nn { xeCJK / options } + { + Verb .choice: , + Verb / true .code:n = + { + \bool_set_true:N \l__xeCJK_verb_use_bool + \int_set_eq:NN \l__xeCJK_verb_level_int \c_zero + } , + Verb / false .code:n = { \bool_set_false:N \l__xeCJK_verb_use_bool } , + Verb / env .code:n = + { + \bool_set_true:N \l__xeCJK_verb_use_bool + \int_set_eq:NN \l__xeCJK_verb_level_int \c_one + } , + Verb .default:n = { true } + } +\bool_new:N \l__xeCJK_verb_use_bool +\int_new:N \l__xeCJK_verb_level_int +\__xeCJK_after_preamble:n + { + \tl_put_right:Nn \verbatim@font + { + \bool_if:nTF + { + \l__xeCJK_verb_use_bool && + \int_compare_p:nNn \etex_currentgrouptype:D > \l__xeCJK_verb_level_int + } + { \__xeCJK_set_verb_exspace: } + { \skip_zero:N \g__xeCJK_verb_exspace_skip } + \__xeCJK_verb_addon: + } + } \NewDocumentCommand \xeCJKVerbAddon { } { \int_compare:nNnF \etex_currentgrouplevel:D = \c_zero { \__xeCJK_set_verb_exspace: - \bool_if:NF \l__xeCJK_verb_addon_bool - { - \bool_set_true:N \l__xeCJK_verb_addon_bool - \__xeCJK_set_char_class_eq:nn { FullLeft } { CJK } - \__xeCJK_set_char_class_eq:nn { FullRight } { CJK } - \__xeCJK_set_char_class_eq:nn { HalfLeft } { Default } - \__xeCJK_set_char_class_eq:nn { HalfRight } { Default } - \__xeCJK_set_char_class_eq:nn { NormalSpace } { Default } - \xeCJKsetup { xCJKecglue = false } - \cs_set_protected_nopar:Npn \CJKglue - { \skip_horizontal:N \g__xeCJK_verb_exspace_skip } - \cs_set_protected_nopar:Npn \CJKecglue - { \skip_horizontal:n { 0.5 \g__xeCJK_verb_exspace_skip } } - \cs_set_eq:NN \xeCJK_check_for_glue: \CJKecglue - \cs_set_eq:NN \xeCJK_ignore_spaces:w \CJKecglue - \skip_set:Nn \tex_rightskip:D { \c_zero_dim plus 1 fil } - } + \__xeCJK_verb_addon: + } + } +\cs_new_protected_nopar:Npn \__xeCJK_verb_addon: + { + \bool_if:NF \l__xeCJK_verb_addon_bool + { + \bool_set_true:N \l__xeCJK_verb_addon_bool + \__xeCJK_set_char_class_eq:nn { FullLeft } { CJK } + \__xeCJK_set_char_class_eq:nn { FullRight } { CJK } + \__xeCJK_set_char_class_eq:nn { HalfLeft } { Default } + \__xeCJK_set_char_class_eq:nn { HalfRight } { Default } + \__xeCJK_set_char_class_eq:nn { NormalSpace } { Default } + \xeCJKsetup { xCJKecglue = false } + \cs_set_protected_nopar:Npn \CJKglue + { \skip_horizontal:N \g__xeCJK_verb_exspace_skip } + \cs_set_protected_nopar:Npn \CJKecglue + { \skip_horizontal:n { 0.5 \g__xeCJK_verb_exspace_skip } } + \cs_set_eq:NN \xeCJK_check_for_glue: \CJKecglue + \cs_set_eq:NN \xeCJK_ignore_spaces:w \CJKecglue + \skip_set:Nn \tex_rightskip:D { \c_zero_dim plus 1 fil } } } \bool_new:N \l__xeCJK_verb_addon_bool \cs_new_eq:NN \CJKfixedspacing \xeCJKVerbAddon -\__xeCJK_after_preamble:n { \tl_put_right:Nn \verbatim@font { \xeCJKVerbAddon } } \cs_new_protected_nopar:Npn \__xeCJK_set_verb_exspace: { \tl_if_exist:cF { xeCJK/verb/\l_xeCJK_family_tl/\curr@fontshape/\f@size } @@ -2707,6 +2837,7 @@ xeCJKactive = true , LocalConfig = true , indentfirst = true , + Verb = env , EmboldenFactor = 4 , SlantFactor = 0.167 , PunctStyle = quanjiao , @@ -2715,7 +2846,7 @@ NoBreakCS = { \footnote \footnotemark \nobreak } , KaiMingPunct = { ^^^^3002 ^^^^ff0e ^^^^ff1f ^^^^ff01 } , LongPunct = { ^^^^2014 ^^^^2015 ^^^^2500 ^^^^2025 ^^^^2026 } , - MiddlePunct = { ^^^^2014 ^^^^2015 ^^^^2500 ^^^^00b7 ^^^^30fb ^^^^ff65 } , + MiddlePunct = { ^^^^2014 ^^^^2015 ^^^^2027 ^^^^2500 ^^^^00b7 ^^^^30fb ^^^^ff65 } , AllowBreakBetweenPuncts = false } \defaultCJKfontfeatures { Script = CJK } @@ -2785,8 +2916,9 @@ } \__xeCJK_msg_new:nn { conflict-package } { - The~`#1'~package~is~in~conflict~with~xeCJK. \\ - Please~do~not~use~it~or~load~it~after~xeCJK. + The~`#1'~package~is~too~old. \\ + Please~update~an~up~to~date~version~of~it\\ + using~your~TeX~package~manager~or~from~CTAN. } \xeCJK_if_package_loaded:nTF { realscripts } { @@ -2906,6 +3038,8 @@ } } } +\cs_new_eq:NN \__xeCJK_group_begin: \group_begin: +\cs_new_eq:NN \__xeCJK_group_end: \group_end: \__xeCJK_after_preamble:n { \tl_map_inline:nn @@ -2913,7 +3047,10 @@ \textellipsis \textemdash \textperiodcentered \textcentereddot \textquoteleft \textquoteright \textquotedblleft \textquotedblright } - { \cs_gset_nopar:Npx #1 { { \makexeCJKinactive \exp_not:o {#1} } } } + { + \cs_gset_nopar:Npx #1 + { \__xeCJK_group_begin: \makexeCJKinactive \exp_not:o {#1} \__xeCJK_group_end: } + } \tl_put_left:Nn \tipaencoding { \makexeCJKinactive } \cs_new_eq:NN \__xeCJK_aux_r:n \r \cs_set_nopar:Npn \r #1 { { \makexeCJKinactive \__xeCJK_aux_r:n {#1} } } @@ -2927,10 +3064,12 @@ { \xeCJK_if_package_loaded:nT { hyperref } { - \tl_gput_right:Nn \pdfstringdefPreHook + \pdfstringdefDisableCommands { \__xeCJK_gobble_CJKfamily: \xeCJK_cs_clear:N \makexeCJKinactive + \xeCJK_cs_clear:N \__xeCJK_group_begin: + \xeCJK_cs_clear:N \__xeCJK_group_end: } } } |