summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xecjk
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-05-21 23:54:53 +0000
committerKarl Berry <karl@freefriends.org>2012-05-21 23:54:53 +0000
commit11329d298783368bb1e2bb185886ac21f4f2dcf8 (patch)
tree363573f27ef161cc2b0f9c0db103f2e9629b5f0d /Master/texmf-dist/tex/xelatex/xecjk
parent95bec054254407d74fec37e47245e6fcbb8a9aff (diff)
xecjk (21may12)
git-svn-id: svn://tug.org/texlive/trunk@26553 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk')
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty268
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'.