From 614e92fcfb7bbf20b314eafeac08856e5b337f05 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
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

