diff options
author | Karl Berry <karl@freefriends.org> | 2022-07-14 20:21:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-07-14 20:21:57 +0000 |
commit | 56441f33e039906e85170d92fcf2a1db33ca8188 (patch) | |
tree | 93408f8e79bc063791013b1775b5afb681a6a13b /Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | |
parent | 5837c476bea644b73216ad4a57a000f7d3095b92 (diff) |
xecjk (14jul22)
git-svn-id: svn://tug.org/texlive/trunk@63899 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 61 |
1 files changed, 48 insertions, 13 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index 2cac4a0fb2b..2ff401c2514 100644 --- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty +++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty @@ -29,10 +29,10 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx de49417 2022-06-04 19:40:54 +0800 Qing Lee <sobenlee@gmail.com> $ +\GetIdInfo$Id: xeCJK.dtx 49800bb 2022-07-14 18:54:00 +0800 Qing Lee <sobenlee@gmail.com> $ {Typesetting CJK scripts with XeLaTeX} \ProvidesExplPackage{\ExplFileName} - {\ExplFileDate}{3.8.9}{\ExplFileDescription} + {\ExplFileDate}{3.9.0}{\ExplFileDescription} \msg_new:nnn { xeCJK } { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ @@ -74,7 +74,9 @@ \ctex_if_format_at_least:nTF { 2020/10/01 } { \ctex_replace_package:nn { CJKfntef } { xeCJKfntef } } { \ctex_disable_package:n { CJKfntef } } -\RequirePackage { l3keys2e , xtemplate , xparse } +\cs_if_exist:NF \NewDocumentCommand + { \RequirePackage { xparse } } +\RequirePackage { xtemplate } \tl_new:N \l__xeCJK_tmp_tl \int_new:N \l__xeCJK_tmp_int \box_new:N \l__xeCJK_tmp_box @@ -831,7 +833,7 @@ } { \token_if_space:NTF \l_peek_token - { { \xeCJK_make_node:n { default-space } } } + { \xeCJK_make_space_node: } { { \xeCJK_make_node:n { default } } } } } @@ -864,7 +866,7 @@ } { \token_if_space:NTF \l_peek_token - { { \xeCJK_make_node:n { default-space } } } + { \xeCJK_make_space_node: } { { \xeCJK_make_node:n { normalspace } } } } } @@ -954,7 +956,10 @@ { \CJKglue } \prg_new_conditional:Npnn \xeCJK_if_last_node:n #1 { p , T , F , TF } { - \if_dim:w \use:c { c__xeCJK_#1_node_dim } = \tex_lastkern:D + \if_dim:w + \cs_if_exist_use:cTF { c__xeCJK_#1_node_dim } + { = \tex_lastkern:D } + { \use:c { c__xeCJK_#1_node_skip } = \tex_lastskip:D } \prg_return_true: \else: \prg_return_false: \fi: } \cs_new_protected:Npn \xeCJK_declare_node:n #1 @@ -964,25 +969,47 @@ { \dim_gset:cn } { \dim_const:cn } { c__xeCJK_#1_node_dim } { \g__xeCJK_node_int sp } } +\cs_new_protected:Npn \xeCJK_declare_glue_node:n #1 + { + \int_gincr:N \g__xeCJK_node_int + \skip_if_exist:cTF { c__xeCJK_#1_node_skip } + { \skip_gset:cn } { \skip_const:cn } + { c__xeCJK_#1_node_skip } { \g__xeCJK_node_int sp } + } \int_new:N \g__xeCJK_node_int \int_gset:Nn \g__xeCJK_node_int { 10 } \cs_new_protected:Npn \xeCJK_make_node:n #1 { \exp_args:Nc \__xeCJK_make_node:N { c__xeCJK_#1_node_dim } } \cs_new:Npn \__xeCJK_node:n #1 { \use:c { c__xeCJK_#1_node_dim } } +\cs_new:Npn \__xeCJK_gule_node:n #1 + { \use:c { c__xeCJK_#1_node_skip } } \cs_new_protected:Npn \__xeCJK_make_node:N #1 { \tex_kern:D - #1 \tex_kern:D #1 } \cs_new_protected:Npn \xeCJK_remove_node: - { \tex_unkern:D \tex_unkern:D } + { + \int_compare:nNnTF \tex_lastnodetype:D = { 12 } + { \tex_unkern:D \tex_unkern:D } + { + \int_compare:nNnT \tex_lastnodetype:D = { 11 } + { \tex_unskip:D \tex_unskip:D } + } + } \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-widow } \xeCJK_declare_node:n { normalspace } +\xeCJK_declare_glue_node:n { default-space } +\cs_new_eq:NN \xeCJK_make_space_node: \prg_do_nothing: +\cs_new_protected:Npx \__xeCJK_make_space_node: + { + \tex_hskip:D - \__xeCJK_gule_node:n { default-space } + \tex_hskip:D \__xeCJK_gule_node:n { default-space } + } \keys_define:nn { xeCJK / options } { CJKglue .code:n = @@ -1004,6 +1031,7 @@ { \bool_set_true:N \l__xeCJK_xecglue_bool \cs_set_eq:NN \xeCJK_space_or_xecglue: \CJKecglue + \cs_set_eq:NN \xeCJK_make_space_node: \__xeCJK_make_space_node: \cs_set_eq:NN \xeCJK_check_for_xglue: \__xeCJK_check_for_xglue: \cs_set_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_xecglue: \cs_set_eq:NN @@ -1014,6 +1042,7 @@ { \bool_set_false:N \l__xeCJK_xecglue_bool \cs_set_eq:NN \xeCJK_space_or_xecglue: \xeCJK_space_glue: + \xeCJK_cs_clear:N \xeCJK_make_space_node: \xeCJK_cs_clear:N \xeCJK_check_for_xglue: \cs_set_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_ecglue: \cs_set_eq:NN @@ -1026,6 +1055,7 @@ \cs_set_protected: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_make_space_node: \__xeCJK_make_space_node: \cs_set_eq:NN \xeCJK_check_for_xglue: \__xeCJK_check_for_xglue: \cs_set_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_xecglue: \cs_set_eq:NN @@ -1113,7 +1143,7 @@ { \__xeCJK_node:n { CJK } } { \xeCJK_remove_node: \xeCJK_make_node:n { CJK-space } } { \__xeCJK_node:n { default } } - { \xeCJK_remove_node: \xeCJK_make_node:n { default-space } } + { \xeCJK_remove_node: \xeCJK_make_space_node: } } \group_align_safe_begin: \token_if_macro:NTF \l_peek_token @@ -1794,7 +1824,7 @@ \xeCJK_get_punct_bounds:No \c__xeCJK_right_tl \g__xeCJK_last_punct_tl \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl \group_align_safe_begin: - \tl_case:NoTF \l_peek_token + \token_case_meaning:NoTF \l_peek_token { \l__xeCJK_no_break_cs_case_tl } { \group_align_safe_end: @@ -1806,7 +1836,7 @@ \xeCJK_class_group_end: \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl } -\prg_generate_conditional_variant:Nnn \tl_case:Nn { No } { TF , F } +\prg_generate_conditional_variant:Nnn \token_case_meaning:Nn { No } { TF , F } \cs_new_protected:Npn \xeCJK_check_FullRight_symbol:Nw #1 { \peek_remove_spaces:n { \__xeCJK_save_FullRight_symbol:N #1 } } \cs_new_protected:Npn \xeCJK_cs_case_keys_define:nNNnn #1#2#3#4#5 @@ -1996,7 +2026,7 @@ } \cs_new_protected:Npn \xeCJK_check_single_cs:NNn #1#2#3 { - \tl_case:NoF \l_peek_token + \token_case_meaning:NoF \l_peek_token { \l__xeCJK_check_single_cs_case_tl } { \use_iii:nnn } { \xeCJK_check_single_env:nnNn } @@ -4486,7 +4516,12 @@ } \defaultCJKfontfeatures { Script = CJK } \xeCJKsetwidth { ^^^^2013 } { 0.5 em } -\ProcessKeysOptions { xeCJK / options } +\cs_if_exist:NTF \ProcessKeyOptions + { \ProcessKeyOptions [ xeCJK / options ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { xeCJK / options } + } \RequirePackage { fontspec } [ 2020/02/03 ] \tl_const:Nx \c__xeCJK_encoding_tl { \g_fontspec_encoding_tl } \keys_define:nn { xeCJK / options } |