From 614e92fcfb7bbf20b314eafeac08856e5b337f05 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 5 Nov 2014 23:10:56 +0000 Subject: xecjk (5nov14) git-svn-id: svn://tug.org/texlive/trunk@35520 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 137 +++++++++++++++----------- 1 file changed, 82 insertions(+), 55 deletions(-) (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty') diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index 04fcb138ffb..017220fe745 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 692 2014-06-20 12:25:35Z sobenlee $ +%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $ %% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: @@ -33,11 +33,11 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx 692 2014-06-20 12:25:35Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $ {Typesetting CJK scripts with XeLaTeX} \ProvidesExplPackage {\ExplFileName} - {\ExplFileDate}{3.2.13}{\ExplFileDescription} + {\ExplFileDate}{3.2.14}{\ExplFileDescription} \msg_new:nnn { xeCJK } { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ @@ -54,7 +54,7 @@ using~your~TeX~package~manager~or~from~CTAN.\\ \str_if_eq:nnT {#1} { expl3 } { Loading~xeCJK~will~abort! } } -\@ifpackagelater { expl3 } { 2014/05/06 } { } +\@ifpackagelater { expl3 } { 2014/07/20 } { } { \msg_critical:nnn { xeCJK } { l3-too-old } { expl3 } } \prg_new_conditional:Npnn \xeCJK_if_package_loaded:n #1 { p , T , F , TF } { @@ -680,7 +680,8 @@ \xeCJK_if_last_node_p:n { CJK } || \xeCJK_if_last_node_p:n { CJK-space } } - { \xeCJK_remove_node: \CJKecglue } { ~ } + { \xeCJK_remove_node: \CJKecglue } + { \xeCJK_space_glue: } } { \bool_if:nTF @@ -701,7 +702,10 @@ { \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 } } } + { + \tex_italiccorrection:D + { \xeCJK_make_node:n { default } } + } { \token_if_space:NTF \l_peek_token { { \xeCJK_make_node:n { default-space } } } @@ -727,7 +731,8 @@ \xeCJK_if_last_node_p:n { CJK } || \xeCJK_if_last_node_p:n { CJK-space } } - { \xeCJK_remove_node: \CJKecglue } { ~ } + { \xeCJK_remove_node: \CJKecglue } + { \xeCJK_space_glue: } } { \xeCJK_if_last_node:nT { CJK-space } @@ -738,7 +743,10 @@ { \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 { normalspace } } } + { + \tex_italiccorrection:D + { \xeCJK_make_node:n { normalspace } } + } { \token_if_space:NTF \l_peek_token { { \xeCJK_make_node:n { default-space } } } @@ -768,38 +776,41 @@ \int_compare_p:nNn \etex_lastnodetype:D = \c_ten } { \xeCJK_remove_node: \CJKecglue } + { \xeCJK_check_for_xglue: } + } + } + } +\cs_new_eq:NN \xeCJK_check_for_xglue: \prg_do_nothing: +\cs_new_protected_nopar:Npn \__xeCJK_check_for_xglue: + { + \bool_if:nT + { + \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 ) + } + { + \tex_unskip:D + \bool_if:nTF + { + \xeCJK_if_last_node_p:n { default-space } || + \int_compare_p:nNn \etex_lastnodetype:D = \c_ten || + \xeCJK_if_last_node_p:n { default } + } + { \xeCJK_remove_node: \CJKecglue } + { + \bool_if:nTF { - \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 ) - } - { - \tex_unskip:D - \bool_if:nTF - { - \xeCJK_if_last_node_p:n { default-space } || - \int_compare_p:nNn \etex_lastnodetype:D = \c_ten || - \xeCJK_if_last_node_p:n { default } - } - { \xeCJK_remove_node: \CJKecglue } - { - \bool_if:nTF - { - \xeCJK_if_last_node_p:n { CJK } || - \xeCJK_if_last_node_p:n { CJK-space } - } - { - \xeCJK_remove_node: - \bool_if:NTF \l__xeCJK_reserve_space_bool - { ~ } { \CJKglue } - } - { ~ } - } - } + \xeCJK_if_last_node_p:n { CJK } || + \xeCJK_if_last_node_p:n { CJK-space } + } + { + \xeCJK_remove_node: + \bool_if:NTF \l__xeCJK_reserve_space_bool + { \xeCJK_space_glue: } + { \CJKglue } } + { \xeCJK_space_glue: } } } } @@ -808,25 +819,34 @@ \if_dim:w \use:c { c__xeCJK_#1_node_dim } = \tex_lastkern:D \prg_return_true: \else: \prg_return_false: \fi: } -\cs_new_protected_nopar:Npn \xeCJK_def_node:nn #1#2 +\cs_new_protected_nopar:Npn \xeCJK_declare_node:n #1 { + \int_gincr:N \g__xeCJK_node_int \dim_if_exist:cTF { c__xeCJK_#1_node_dim } { \dim_gset:cn } { \dim_const:cn } - { c__xeCJK_#1_node_dim } {#2} + { c__xeCJK_#1_node_dim } { \g__xeCJK_node_int sp } } +\int_new:N \g__xeCJK_node_int +\int_gset_eq:NN \g__xeCJK_node_int \c_ten \cs_new_protected_nopar:Npn \xeCJK_make_node:n #1 { - \tex_kern:D - \use:c { c__xeCJK_#1_node_dim } - \tex_kern:D \use:c { c__xeCJK_#1_node_dim } + \exp_after:wN \__xeCJK_make_node:N + \cs:w c__xeCJK_#1_node_dim \exp_after:wN \cs_end: + \exp_after:wN \tex_spacefactor:D \int_use:N \tex_spacefactor:D \exp_stop_f: + } +\cs_new_protected_nopar:Npn \__xeCJK_make_node:N #1 + { + \tex_kern:D - #1 + \tex_kern:D #1 } \cs_new_protected_nopar:Npn \xeCJK_remove_node: { \tex_unkern:D \tex_unkern:D } -\xeCJK_def_node:nn { CJK } { 11 sp } -\xeCJK_def_node:nn { CJK-space } { 12 sp } -\xeCJK_def_node:nn { default } { 13 sp } -\xeCJK_def_node:nn { default-space } { 14 sp } -\xeCJK_def_node:nn { CJK-nobreak } { 15 sp } -\xeCJK_def_node:nn { normalspace } { 16 sp } +\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-nobreak } +\xeCJK_declare_node:n { normalspace } \keys_define:nn { xeCJK / options } { CJKglue .code:n = @@ -848,11 +868,13 @@ { \bool_set_true:N \l__xeCJK_xecglue_bool \cs_set_eq:NN \xeCJK_space_or_xecglue: \CJKecglue + \cs_set_eq:NN \xeCJK_check_for_xglue: \__xeCJK_check_for_xglue: } , xCJKecglue / false .code:n = { \bool_set_false:N \l__xeCJK_xecglue_bool - \cs_set_eq:NN \xeCJK_space_or_xecglue: \c_space_tl + \cs_set_eq:NN \xeCJK_space_or_xecglue: \xeCJK_space_glue: + \xeCJK_cs_clear:N \xeCJK_check_for_xglue: } , xCJKecglue / unknown .code:n = { @@ -860,9 +882,11 @@ \cs_set_protected_nopar: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_check_for_xglue: \__xeCJK_check_for_xglue: } , xCJKecglue .default:n = { true } } +\cs_new_eq:NN \xeCJK_space_glue: \c_space_tl \skip_new:N \l__xeCJK_ecglue_skip \bool_new:N \l__xeCJK_xecglue_bool \keys_define:nn { xeCJK / options } @@ -976,7 +1000,10 @@ \cs_new_protected_nopar:Npn \__xeCJK_punct_offset:NN #1#2 { \__xeCJK_punct_kern:n { - \__xeCJK_use_punct_dim:nnn { offset } {#1} {#2} } } \cs_new_protected_nopar:Npn \__xeCJK_punct_kern:n #1 - { \tex_kern:D #1 \exp_stop_f: } + { + \dim_compare:nNnF {#1} = \c_zero_dim + { \tex_kern:D #1 \exp_stop_f: } + } \cs_new_protected_nopar:Npn \__xeCJK_punct_glue:NN #1#2 { \__xeCJK_punct_hskip:n { \__xeCJK_punct_skip:nn {#1} {#2} } } \cs_new_eq:NN \__xeCJK_punct_hskip:n \skip_horizontal:n @@ -2299,7 +2326,7 @@ \__xeCJK_msg_new:nn { missing-glyph } { CJKfamily~`\__xeCJK_msg_family_map:n {#1}'~ - ( \prop_get:Nn \g__xeCJK_family_font_name_prop {#1} )~ + ( \prop_item:Nn \g__xeCJK_family_font_name_prop {#1} )~ does~not~contain~glyph~`#2'~(U+#3).\\ } \NewDocumentCommand \setCJKfallbackfamilyfont { m O { } m } @@ -3134,9 +3161,9 @@ \__xeCJK_shipout_punct_breakable_kern:n \__xeCJK_punct_breakable_kern:n \tl_set:Nx \l__xeCJK_off_verb_addon_tl { - \exp_not:c - { bool_set_ \bool_if:NTF \l__xeCJK_xecglue_bool { true } { false } :N } - \l__xeCJK_xecglue_bool + \bool_if:NTF \l__xeCJK_xecglue_bool + { \xeCJKsetup { xCJKecglue = true } } + { \xeCJKsetup { xCJKecglue = false } } \exp_not:n { \cs_set_eq:NN \CJKglue \__xeCJK_shipout_CJKglue: @@ -3509,7 +3536,7 @@ \bool_if:nT { \g__xeCJK_math_bool && \cs_if_exist_p:N \Url@MathSetup } { \tl_put_right:Nn \Url@MathSetup { \__xeCJK_update_url_font: } } } -\cs_if_free:NF \fontspec_setup_maths: +\@ifpackagelater { fontspec } { 2014/06/21 } { } { \cs_gset_protected_nopar:Npx \fontspec_setup_maths: { -- cgit v1.2.3