diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 268 |
1 files changed, 183 insertions, 85 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index adf0c16231d..90bf31d5444 100644 --- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty +++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty @@ -6,7 +6,8 @@ %% %% xeCJK.dtx (with options: `package') %% -%% Version 3.0.5 (19-May-2012) +%% $Id: xeCJK.dtx 343 2012-05-21 05:59:17Z sobenlee $ +%% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: %% Wenchang Sun <sunwch@nankai.edu.cn> @@ -28,10 +29,11 @@ %% The Current Maintainer of this work are Leo Liu and Qing Lee. %% ----------------------------------------------------------------- %% -\RequirePackage{xparse} -\RequirePackage{l3keys2e} -\ProvidesExplPackage {xeCJK} {2012/05/19} {3.0.5} - {package for typesetting CJK scripts with XeLaTeX} +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\GetIdInfo$Id: xeCJK.dtx 343 2012-05-21 05:59:17Z sobenlee $ + {package for typesetting CJK scripts with XeLaTeX} +\ProvidesExplPackage{\ExplFileName}{\ExplFileDate}{3.0.6}{\ExplFileDescription} \cs_new_nopar:Npn \xeCJK_msg_new:nn { \msg_new:nnn { xeCJK } } \cs_new_nopar:Npn \xeCJK_error:n { \msg_error:nn { xeCJK } } \cs_new_nopar:Npn \xeCJK_error:nx { \msg_error:nnx { xeCJK } } @@ -40,13 +42,23 @@ \cs_new_nopar:Npn \xeCJK_warning:nxx { \msg_warning:nnxx { xeCJK } } \cs_new_nopar:Npn \xeCJK_info:nx { \msg_info:nnx { xeCJK } } \cs_new_nopar:Npn \xeCJK_info:nxx { \msg_info:nnxx { xeCJK } } -\msg_new:nnn {xeCJK} { Require-XeTeX } +\xeCJK_msg_new:nn { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ You~must~change~your~typesetting~engine~to~"xelatex" \\ instead~of~plain~"latex"~or~"pdflatex"~or~"lualatex". } \xetex_if_engine:F { \msg_critical:nn { xeCJK } { Require-XeTeX } } +\xeCJK_msg_new:nn { l3-too-old } + { + Support~package~'expl3'~too~old. \\\\ + Please~update~an~up~to~date~version~of~the~bundles\\\\ + 'l3kernel'~and~'l3packages'\\\\ + using~your~TeX~package~manager~or~from~CTAN. + } +\@ifpackagelater { expl3 } { 2012/02/19 } { } { \xeCJK_error:n { l3-too-old } } +\RequirePackage{xparse} +\RequirePackage{l3keys2e} \xeCJK_msg_new:nn { XeTeX-too-old } { \token_to_str:N \XeTeXglyphbounds\c_space_tl is~not~defined.\\\\ @@ -284,8 +296,25 @@ { \xeCJK_inter_class_toks:nnn { Boundary } {#1} { - \int_compare:nNnTF \tex_lastkern:D = \c_one { \CJKecglue } - { \int_compare:nNnT \tex_lastkern:D = \c_two \xeCJK_space_or_xecglue: } + \bool_if:nTF + { + \l_xeCJK_xecglue_bool && + \int_compare_p:nNn \etex_lastnodetype:D = \c_eleven && + \skip_if_eq_p:nn \tex_lastskip:D \l_xeCJK_space_glue_tl + } + { + \tex_unskip:D + \bool_if:nTF + { + \int_compare_p:nNn \tex_lastkern:D = \c_one || + \int_compare_p:nNn \tex_lastkern:D = \c_two + } + { \CJKecglue } { \c_space_token } + } + { + \int_compare:nNnTF \tex_lastkern:D = \c_one { \CJKecglue } + { \int_compare:nNnT \tex_lastkern:D = \c_two \xeCJK_space_or_xecglue: } + } } \str_if_eq:xxF {#1} { NormalSpace } { \xeCJK_app_inter_class_toks:nnn { CJK } {#1} { \CJKecglue } } @@ -553,11 +582,21 @@ { \tex_unkern:D \tex_unkern:D { \xeCJK_CJK_space_kern: } } \peek_catcode_ignore_spaces:NTF \c_math_toggle_token { \xeCJK_space_or_xecglue: } - { \bool_if:nT { \token_if_cs_p:N \l_peek_token } \xeCJK_space_or_xecglue: } + { + \bool_if:nT + { + \xeCJK_if_outer_macro_p:c { l_peek_token } || + \token_if_cs_p:c { l_peek_token } + } + { \xeCJK_space_or_xecglue: } + } } { - \token_if_math_toggle:NTF \l_peek_token \CJKecglue - { \cs_if_exist:NF \l_peek_token \exp_not:N } + \xeCJK_if_outer_macro:cF { l_peek_token } + { + \token_if_math_toggle:cTF { l_peek_token } \CJKecglue + { \cs_if_exist:cF { l_peek_token } \exp_not:N } + } } } \cs_new_nopar:Nn \xeCJK_peek_math: @@ -569,8 +608,11 @@ \peek_catcode_ignore_spaces:NF \c_space_token { \xeCJK_space_or_xecglue: } } { - \token_if_math_toggle:NTF \l_peek_token \CJKecglue - { \cs_if_exist:NF \l_peek_token \exp_not:N } + \xeCJK_if_outer_macro:cF { l_peek_token } + { + \token_if_math_toggle:cTF { l_peek_token } \CJKecglue + { \cs_if_exist:cF { l_peek_token } \exp_not:N } + } } } \keys_define:nn { xeCJK / options } @@ -610,9 +652,10 @@ { \bool_if:nTF { - \tl_if_empty_p:x { \token_get_arg_spec:N \l_peek_token } && - \exp_args:No \tl_if_single_token_p:n \l_peek_token && - \exp_after:wN \token_if_other_p:N \l_peek_token + ! ( \xeCJK_if_outer_macro_p:c { l_peek_token } ) && + \tl_if_empty_p:x { \token_get_arg_spec:c { l_peek_token } } && + \exp_args:NNc \exp_args:No \tl_if_single_token_p:n { l_peek_token } && + \exp_args:NNc \exp_after:wN \token_if_other_p:N { l_peek_token } } { \xeCJK_checksingle:NN {#1} } { \xeCJK_checksingle_save_CJKsymbol:N {#1} } @@ -625,20 +668,22 @@ { \bool_if:nTF { - \token_if_space_p:N \l_peek_token || - \token_if_math_toggle_p:N \l_peek_token || - \token_if_cs_p:N \l_peek_token + ! ( \xeCJK_if_outer_macro_p:c { l_peek_token } ) && + ( \token_if_space_p:c { l_peek_token } || + \token_if_math_toggle_p:c { l_peek_token } || + \token_if_cs_p:c { l_peek_token } ) } { - \bool_if:nTF { \token_if_space_p:N \l_peek_token } + \bool_if:nTF { \token_if_space_p:c { l_peek_token } } { \peek_catcode_ignore_spaces:NTF \c_catcode_other_token { \xeCJK_checksingle_save_CJKsymbol:N {#1} #2 \c_space_token } { \bool_if:nTF { - \token_if_math_toggle_p:N \l_peek_token || - \token_if_cs_p:N \l_peek_token + ! ( \xeCJK_if_outer_macro_p:c { l_peek_token } ) && + ( \token_if_math_toggle_p:c { l_peek_token } || + \token_if_cs_p:c { l_peek_token } ) } { \xeCJK_checksingle:NNN {#1} {#2} \c_space_token } { \xeCJK_checksingle_save_CJKsymbol:N {#1} #2 \c_space_token } @@ -684,7 +729,6 @@ { \CJKsymbol {#1} \nobreak #2 } \scan_stop: #4 {#5} } -\clist_new:N \g_xeCJK_inline_env_clist \keys_define:nn { xeCJK / options } { InlineEnv .clist_gset:N = \g_xeCJK_inline_env_clist , @@ -699,6 +743,47 @@ { \clist_gremove_all:Nn \g_xeCJK_inline_env_clist {##1} } }, } +\cs_generate_variant:Nn \token_if_cs_p:N { c } +\cs_generate_variant:Nn \token_if_space_p:N { c } +\cs_generate_variant:Nn \token_get_arg_spec:N { c } +\cs_generate_variant:Nn \token_if_math_toggle_p:N { c } +\cs_generate_variant:Nn \token_if_math_toggle:NTF { c } +\group_begin: +\char_set_lccode:nn { `\; } { `\: } +\char_set_lccode:nn { `\Z } { `\t } +\char_set_lccode:nn { `\Y } { `\c } +\char_set_lccode:nn { `\T } { `\T } +\char_set_lccode:nn { `\F } { `\F } +\tl_map_function:nN { O U Z E R M A Y R ; } \char_set_catcode_other:N +\tl_to_lowercase:n + { + \group_end: + \prg_new_conditional:Nnn \xeCJK_if_outer_macro:c { p, T , F , TF } + { + \exp_last_unbraced:Nf \xeCJK_if_outer_macro_aux:w + \cs_meaning:c {#1} OUZER ~ MAYRO ; \q_stop + } + \cs_new_nopar:Npn \xeCJK_if_outer_macro_aux:w #1 OUZER ~ MAYRO ; #2 \q_stop + { + \prg_case_str:xxn { #1 ~ } + { + { \token_to_str:N \ } { \prg_return_true: } + { \token_to_str:N \long \token_to_str:N \ } { \prg_return_true: } + { \token_to_str:N \protected \token_to_str:N \ } { \prg_return_true: } + { \token_to_str:N \protected \token_to_str:N \long \token_to_str:N \ } + { \prg_return_true: } + } + { \prg_return_false: } + } + } +\tl_replace_once:Nnn \peek_ignore_spaces_execute_branches: + { \token_if_eq_meaning:NNTF \l_peek_token } + { \xeCJK_if_eq_meaning:cNTF { l_peek_token } } +\prg_new_conditional:Nnn \xeCJK_if_eq_meaning:cN { p , T , F , TF } + { + \exp_args:Nc \if_meaning:w {#1} #2 + \prg_return_true: \else: \prg_return_false: \fi: + } \tl_new:N \xeCJK_UL_subclass_patch_tl \clist_new:N \g_xeCJK_CJK_subclass_clist \cs_new_nopar:Nn \xeCJK_erase_CJKsymbol: @@ -1365,12 +1450,15 @@ }, AutoFakeSlant .default:n = { \g_xeCJK_SlantFactor_fp }, Mono .choice:, - Mono / Exspace .code:n = { \xeCJK_set_monoexspace: }, + Mono / Exspace .code:n = + { + \xeCJK_set_monoexspace: + \tl_clear:N \l_xeCJK_monoscale_tl + }, Mono / Scale .code:n = { \xeCJK_set_monoscale: - \tl_set:Nx \l_xeCJK_monoscale_tl - { Scale = { \fp_use:N \g_xeCJK_monoscale_fp } } + \tl_set:Nx \l_xeCJK_monoscale_tl { Scale = { \fp_use:N \g_xeCJK_monoscale_fp } } } } \cs_new_nopar:Nn \xeCJK_set_init: @@ -1402,12 +1490,11 @@ \tl_set:Nx \l_xeCJK_family_tl {#1} \clist_set:Nx \l_xeCJK_fontoptions_clist {#2} \tl_set:Nx \l_xeCJK_fontname_tl {#3} - \prop_gpop:NVNT \g_xeCJK_family_name_prop \l_xeCJK_family_tl \l_tmpa_tl - { \xeCJK_warning:nxx { CJKfamily-redef } \l_xeCJK_family_tl \l_tmpa_tl } \keys_set_known:nxN { xeCJK / features } { \g_xeCJK_default_features_clist, #2 } \l_xeCJK_pass_features_clist \xeCJK_parse_features: \xeCJK_pass_features: + \xeCJK_check_family:V \l_xeCJK_family_tl \cs_gset_protected_nopar:cpx { xeCJK/family/\l_xeCJK_family_tl } { \exp_not:n { \fontspec_set_family:Nnn \l_xeCJK_fontspec_family_tl } @@ -1427,6 +1514,15 @@ \group_end: } \cs_generate_variant:Nn \xeCJK_set_family:nnn { ncc } +\cs_new_nopar:Nn \xeCJK_check_family:n + { + \prop_get:NnNT \g_xeCJK_family_prop {#1} \l_tmpa_tl + { + \prop_gpop:NnNT \g_xeCJK_family_name_prop {#1} \l_tmpa_tl { } + \xeCJK_warning:nxx { CJKfamily-redef } {#1} \l_tmpa_tl + } + } +\cs_generate_variant:Nn \xeCJK_check_family:n { V } \xeCJK_msg_new:nn { CJKfamily-redef } { Redefining~CJKfamily~`#1'~(#2). } \cs_new_nopar:Nn \xeCJK_add_font:nn { @@ -1440,11 +1536,9 @@ } \cs_generate_variant:Nn \xeCJK_add_font:nn { nx, nc, nV, nv } \cs_generate_variant:Nn \xeCJK_add_font_if_new:nn { nx, nc, nV, nv } -\cs_generate_variant:Nn \prop_gpop:NnNT { NV } \cs_generate_variant:Nn \prop_put:Nnn { Nxx } \cs_generate_variant:Nn \prop_get:Nn { NV } \cs_generate_variant:Nn \prop_get:NnNF { Nx } -\cs_generate_variant:Nn \prop_get:NnNTF { Nx } \cs_generate_variant:Nn \prop_if_in:NnF { Nx } \cs_generate_variant:Nn \prop_put_if_new:Nnn { Nxx } \cs_new_nopar:Nn \xeCJK_add_fake_bold:n @@ -1558,10 +1652,8 @@ \clist_remove_all:Nn \l_xeCJK_fontoptions_clist {##1} \clist_remove_all:Nn \l_xeCJK_fontoptions_clist { ##1 = } } - \prop_gput:NVV \g_xeCJK_family_prop - \l_xeCJK_family_tl \l_xeCJK_fontname_tl - \prop_gput:NVV \g_xeCJK_family_options_prop - \l_xeCJK_family_tl \l_xeCJK_fontoptions_clist + \prop_gput:NVV \g_xeCJK_family_prop \l_xeCJK_family_tl \l_xeCJK_fontname_tl + \prop_gput:NVV \g_xeCJK_family_options_prop \l_xeCJK_family_tl \l_xeCJK_fontoptions_clist \group_end: } \cs_new_nopar:Nn \xeCJK_add_sub_block: @@ -1569,29 +1661,27 @@ \clist_remove_duplicates:N \l_xeCJK_sub_key_clist \clist_map_inline:Nn \l_xeCJK_sub_key_clist { - \tl_set:Nx \l_tmpa_tl { \l_xeCJK_family_tl/##1 } + \tl_set:Nx \l_xeCJK_sub_family_tl { \l_xeCJK_family_tl/##1 } \bool_if:cT { l_xeCJK_copy_##1_bool } { - \tl_map_inline:nn { \g_xeCJK_family_prop \g_xeCJK_family_options_prop } - { - \prop_get:NVNT ####1 \l_xeCJK_family_tl \l_tmpb_tl - { \prop_gput:NVV ####1 \l_tmpa_tl \l_tmpb_tl } - } - \prop_get:NVNT \g_xeCJK_family_options_prop \l_tmpa_tl \l_tmpa_clist + \xeCJK_check_family:V \l_xeCJK_sub_family_tl + \prop_get:NVNT \g_xeCJK_family_prop \l_xeCJK_family_tl \l_tmpa_tl + { \prop_gput:NVV \g_xeCJK_family_prop \l_xeCJK_sub_family_tl \l_tmpa_tl } + \prop_get:NVNT \g_xeCJK_family_options_prop \l_xeCJK_family_tl \l_tmpa_clist { \clist_remove_all:Nn \l_tmpa_clist { ##1 = * } - \prop_gput:NVV \g_xeCJK_family_options_prop \l_tmpa_tl \l_tmpa_clist + \prop_gput:NVV \g_xeCJK_family_options_prop \l_xeCJK_sub_family_tl \l_tmpa_clist } - \cs_gset_protected_nopar:cpx { xeCJK/family/\l_tmpa_tl } + \cs_gset_protected_nopar:cpx { xeCJK/family/\l_xeCJK_sub_family_tl } { - \exp_not:N \xeCJK_family_if_exist:nT { \l_xeCJK_family_tl } + \xeCJK_family_if_exist:nT { \l_xeCJK_family_tl } { \prop_get:NnNT \exp_not:N \g_xeCJK_family_name_prop { \l_xeCJK_family_tl } \exp_not:N \l_tmpa_tl { \prop_gput:NnV \exp_not:N \g_xeCJK_family_name_prop - { \l_tmpa_tl } \exp_not:N \l_tmpa_tl - \cs_gset_protected_nopar:cpx { xeCJK/family/\l_tmpa_tl } + { \l_xeCJK_sub_family_tl } \exp_not:N \l_tmpa_tl + \cs_gset_protected_nopar:cpx { xeCJK/family/\l_xeCJK_sub_family_tl } \exp_not:n { { \exp_not:N \fontencoding { \g_fontspec_encoding_tl } @@ -1604,7 +1694,7 @@ } \bool_if:cT { l_xeCJK_add_##1_bool } { - \xeCJK_set_family:ncc \l_tmpa_tl + \xeCJK_set_family:ncc \l_xeCJK_sub_family_tl { l_xeCJK_##1_fontfeat_clist } { l_xeCJK_##1_fontname_tl } } } @@ -1652,12 +1742,11 @@ \xeCJK_select_font: } \xeCJK_msg_new:nn { CJK-block } { Switch~from~block~'#1'~to~'#2'. } -\prg_new_conditional:Nnn \xeCJK_family_if_exist:n { T, F, TF } +\prg_new_protected_conditional:Nnn \xeCJK_family_if_exist:n { T, F, TF } { \cs_if_free:cTF { xeCJK/family/#1 } \prg_return_false: { - \prop_if_in:NxF - \g_xeCJK_family_name_prop {#1} { \use:c { xeCJK/family/#1 } } + \prop_if_in:NxF \g_xeCJK_family_name_prop {#1} { \use:c { xeCJK/family/#1 } } \prg_return_true: } } @@ -1672,6 +1761,7 @@ \tl_new:c { xeCJK_warned_aux_#1 } } } + \tex_ignorespaces:D } \xeCJK_msg_new:nn { CJKfamily-Unknown } { @@ -1694,8 +1784,7 @@ { \tl_set:Nx \l_xeCJK_family_tl { \cs_to_str:N #2 } } { \tl_set:Nx \l_xeCJK_family_tl {#1} } \xeCJK_set_family:nnn \l_xeCJK_family_tl {#3} {#4} - \cs_new_protected_nopar:Npx #2 - { \exp_not:N \CJKfamily { \l_xeCJK_family_tl } } + \cs_new_protected_nopar:Npx #2 { \exp_not:N \CJKfamily { \l_xeCJK_family_tl } } } \int_new:N \g_xeCJK_fontspec_int \int_gdecr:N \g_xeCJK_fontspec_int @@ -1729,8 +1818,7 @@ \clist_if_in:NnT \l_tmpa_clist {##1} { \clist_remove_all:Nn \l_tmpa_clist {##1} - \prop_get:NxNF \g_xeCJK_family_prop - { \xeCJK@family/##1 } \l_tmpb_tl + \prop_get:NxNF \g_xeCJK_family_prop { \xeCJK@family/##1 } \l_tmpb_tl { \prop_get:NxNF \g_xeCJK_family_prop { \CJKfamilydefault/##1 } \l_tmpb_tl @@ -1741,8 +1829,8 @@ \clist_map_break: } } - \prop_get:NVNF \g_xeCJK_family_options_prop \xeCJK@family - \l_tmpb_clist { \clist_clear:N \l_tmpb_clist } + \prop_get:NVNF \g_xeCJK_family_options_prop \xeCJK@family \l_tmpb_clist + { \clist_clear:N \l_tmpb_clist } \clist_clear:N \l_tmpc_clist \clist_map_inline:Nn \l_tmpb_clist { @@ -1759,7 +1847,7 @@ \cs_new_eq:NN \addCJKfontfeature \addCJKfontfeatures \xeCJK_msg_new:nn { addCJKfontfeature-ignored } { - \tl_to_str:N \addCJKfontfeatures (s)~ignored.\\\\ + \tl_to_str:N \addCJKfontfeature (s)~ignored.\\\\ It~cannot~be~used~with~a~font~that~wasn't~selected~by~xeCJK. } \NewDocumentCommand \setCJKmainfont { O{} m } @@ -1798,6 +1886,7 @@ \tl_put_left:Nn \document { \group_end: + \normalfont \prop_if_empty:NTF \g_xeCJK_family_prop { \xeCJK_warning:n { no-CJKfamily } } { @@ -1826,7 +1915,6 @@ } } } - \normalfont } \group_begin: } @@ -1843,16 +1931,15 @@ \@onlypreamble \setCJKmonofont \@onlypreamble \setCJKromanfont \fp_new:N \g_xeCJK_monoscale_fp -\fp_gset_eq:NN \g_xeCJK_monoscale_fp \c_one_fp \dim_new:N \g_xeCJK_exspace_dim \NewDocumentCommand \setCJKmonoscale { } { + \CJKflexiblespacing \xeCJK_set_monoscale: \addCJKfontfeatures { Scale = \fp_use:N \g_xeCJK_monoscale_fp } } \cs_new_nopar:Nn \xeCJK_set_monoscale: { - \dim_gzero:N \g_xeCJK_exspace_dim \group_begin: \fontfamily \ttdefault \selectfont \fp_gset_from_dim:Nn \g_xeCJK_monoscale_fp @@ -1863,46 +1950,47 @@ \NewDocumentCommand \setCJKmonoexspace { } { \xeCJK_set_monoexspace: } \cs_new_nopar:Nn \xeCJK_set_monoexspace: { - \fp_gset_eq:NN \g_xeCJK_monoscale_fp \c_one_fp \group_begin: \fontfamily \ttdefault \selectfont \dim_gset:Nn \g_xeCJK_exspace_dim { \c_two \tex_fontdimen:D \c_two \tex_font:D - \f@size \p@ } \group_end: } -\cs_new_nopar:Nn \xeCJK_fixed_ecglue: { \skip_horizontal:n { .5\g_xeCJK_exspace_dim } } -\cs_new_nopar:Nn \xeCJK_fixed_cjkglue: { \skip_horizontal:N \g_xeCJK_exspace_dim } -\AtEndOfPackage - { - \tl_set_eq:NN \l_xeCJK_flexible_punctstyle_tl \l_xeCJK_punctstyle_tl - \cs_new_eq:NN \xeCJK_flexible_ecglue: \CJKecglue - \cs_new_eq:NN \xeCJK_flexible_cjkglue: \CJKglue - } \NewDocumentCommand \CJKfixedspacing { } { - \tl_if_eq:NNF \l_xeCJK_punctstyle_tl \c_xeCJK_ps_plain_tl + \bool_if:NF \l_xeCJK_fixed_spacing_bool { + \bool_set_true:N \l_xeCJK_fixed_spacing_bool \tl_set_eq:NN \l_xeCJK_flexible_punctstyle_tl \l_xeCJK_punctstyle_tl - \punctstyle { plain } - } - \cs_if_eq:NNF \CJKecglue \xeCJK_fixed_ecglue: - { - \cs_set_eq:NN \xeCJK_flexible_ecglue: \CJKecglue - \cs_set_eq:NN \CJKecglue \xeCJK_fixed_ecglue: - } - \cs_if_eq:NNF \CJKglue \xeCJK_fixed_cjkglue: - { + \bool_set_eq:NN \l_xeCJK_fixed_xecglue_bool \l_xeCJK_xecglue_bool + \cs_set_eq:NN \xeCJK_flexible_ecglue: \CJKecglue \cs_set_eq:NN \xeCJK_flexible_cjkglue: \CJKglue - \cs_set_eq:NN \CJKglue \xeCJK_fixed_cjkglue: + \xeCJK_set_monoexspace: + \xeCJKsetup + { + PunctStyle = plain , + CJKglue = { \skip_horizontal:N \g_xeCJK_exspace_dim } , + CJKecglue = { \skip_horizontal:n { .5\g_xeCJK_exspace_dim } } , + xCJKecglue = false , + } } } -\AtBeginDocument { \tl_put_right:Nn \verbatim@font \CJKfixedspacing } -\NewDocumentCommand \CJKflexiblespacing { m } +\NewDocumentCommand \CJKflexiblespacing { } { - \cs_set_eq:NN \l_xeCJK_punctstyle_tl \l_xeCJK_flexible_punctstyle_tl - \cs_set_eq:NN \CJKecglue \xeCJK_flexible_ecglue: - \cs_set_eq:NN \CJKglue \xeCJK_flexible_cjkglue: + \bool_if:NT \l_xeCJK_fixed_spacing_bool + { + \bool_set_false:N \l_xeCJK_fixed_spacing_bool + \exp_args:Nx \xeCJKsetup + { + PunctStyle = { \l_xeCJK_flexible_punctstyle_tl } , + CJKglue = { \xeCJK_flexible_cjkglue: } , + CJKecglue = { \xeCJK_flexible_ecglue: } , + xCJKecglue = { \bool_if:NTF \l_xeCJK_fixed_xecglue_bool { true } { false } } , + } + } } +\bool_new:N \l_xeCJK_fixed_spacing_bool +\AtBeginDocument { \tl_put_right:Nn \verbatim@font \CJKfixedspacing } \NewDocumentCommand \setCJKmonofont { s t+ O{} m } { \IfBooleanTF {#1} @@ -2133,5 +2221,15 @@ \tl_set:Nn \CJK@hundredmillion { 亿 } } %% +%% This package consists of the file xeCJK.dtx +%% and the derived files xeCJK.pdf, +%% xeCJK.sty, +%% xeCJK.ins, +%% xeCJK-example-autofake.tex, +%% xeCJK-example-fallback.tex, +%% xeCJK-example-subCJKblock.tex, +%% xeCJK-example-CJKecglue.tex, +%% xeCJK-example-checksingle.tex and +%% README.txt. %% %% End of file `xeCJK.sty'. |