From f223ad48afe014b1314fd294f0e099232f46b63e Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 30 Jan 2018 21:06:15 +0000
Subject: xecjk (30jan18)

git-svn-id: svn://tug.org/texlive/trunk@46497 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty | 154 +++++++++++++--------
 1 file changed, 95 insertions(+), 59 deletions(-)

(limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty')

diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
index 827bf5e5f01..f7c67505480 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
@@ -7,8 +7,8 @@
 %% xeCJK.dtx  (with options: `fntef')
 %% 
 %%     Copyright (C) 2007--2010 by Wenchang Sun <sunwch@nankai.edu.cn>
-%%     Copyright (C) 2009--2017 by Leo Liu <leoliu.pku@gmail.com>
-%%     Copyright (C) 2012--2017 by Qing Lee <sobenlee@gmail.com>
+%%     Copyright (C) 2009--2018 by Leo Liu <leoliu.pku@gmail.com>
+%%     Copyright (C) 2012--2018 by Qing Lee <sobenlee@gmail.com>
 %% ----------------------------------------------------------------------
 %% 
 %%     This work may be distributed and/or modified under the
@@ -29,10 +29,10 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 5a18688 2017-11-22 19:12:51 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 54327e6 2018-01-28 19:10:14 +0800 Qing Lee <sobenlee@gmail.com> $
   {xeCJK font effect}
 \ProvidesExplPackage{xeCJKfntef}
-  {\ExplFileDate}{3.5.1}{\ExplFileDescription}
+  {\ExplFileDate}{3.6.0}{\ExplFileDescription}
 \PassOptionsToPackage { normalem } { ulem }
 \DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
 \ProcessOptions \scan_stop:
@@ -70,7 +70,6 @@
         \cs_set_eq:NN \__xeCJK_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
       }
       {
-        \xeCJK_swap_cs:NN \__xeCJK_punct_kern:n  \__xeCJK_ulem_punct_kern:n
         \xeCJK_swap_cs:NN \__xeCJK_punct_hskip:n \__xeCJK_ulem_punct_hskip:n
         \xeCJK_cs_clear:N \__xeCJK_ulem_skip_punct_begin:
         \xeCJK_cs_clear:N \__xeCJK_ulem_skip_punct_end:
@@ -96,6 +95,8 @@
       { \__xeCJK_ulem_glue:n \l__xeCJK_ecglue_skip }
     \cs_set_protected_nopar:Npn \xeCJK_space_glue:
       { \__xeCJK_ulem_glue:n \l__xeCJK_space_skip }
+    \cs_set_eq:NN \xeCJK_punct_node:N \use_none:n
+    \cs_set_eq:NN \xeCJK_if_last_punct:TF \use_ii:nn
     \keys_set:nn { xeCJK / options }
       { CheckFullRight = false , xCJKecglue = false }
   }
@@ -247,7 +248,7 @@
     \int_compare:nNnTF \etex_lastnodetype:D = \c_twelve
       { \__xeCJK_ulem_right_skip_kern: }
       { \__xeCJK_ulem_right_skip_glue: }
-    \box_use_clear:N \l__xeCJK_tmp_box
+    \box_use_drop:N \l__xeCJK_tmp_box
   }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_kern:
   {
@@ -303,18 +304,20 @@
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_putbox:
   {
     \tl_if_empty:NF \UL@start
-      { \box_use_clear:N \UL@box }
+      { \box_use_drop:N \UL@box }
   }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_initial:
   {
     \__xeCJK_ulem_swap_cs:NN
-    \xeCJK_FullLeft_and_Default:  \__xeCJK_ulem_FullLeft_and_Default:
-    \xeCJK_FullLeft_and_CJK:      \__xeCJK_ulem_FullLeft_and_CJK:
-    \xeCJK_FullRight_and_Default: \__xeCJK_ulem_FullRight_and_Default:
-    \xeCJK_FullRight_and_CJK:     \__xeCJK_ulem_FullRight_and_CJK:
-    \xeCJK_CJK_and_CJK:N          \__xeCJK_ulem_CJK_and_CJK:N
-    \xeCJK_CJK_and_Boundary:w     \__xeCJK_ulem_CJK_and_Boundary:w
-    \xeCJK@fix@penalty            \__xeCJK_ulem_fix_penalty:
+    \xeCJK_FullLeft_and_Default:   \__xeCJK_ulem_FullLeft_and_Default:
+    \xeCJK_FullLeft_and_CJK:       \__xeCJK_ulem_FullLeft_and_CJK:
+    \xeCJK_FullLeft_and_Boundary:  \__xeCJK_ulem_FullLeft_and_Boundary:
+    \xeCJK_FullRight_and_Default:  \__xeCJK_ulem_FullRight_and_Default:
+    \xeCJK_FullRight_and_CJK:      \__xeCJK_ulem_FullRight_and_CJK:
+    \xeCJK_FullRight_and_Boundary: \__xeCJK_ulem_FullRight_and_Boundary:
+    \xeCJK_CJK_and_CJK:N           \__xeCJK_ulem_CJK_and_CJK:N
+    \xeCJK_CJK_and_Boundary:w      \__xeCJK_ulem_CJK_and_Boundary:w
+    \xeCJK@fix@penalty             \__xeCJK_ulem_fix_penalty:
     \__xeCJK_punct_breakable_kern:n       \__xeCJK_ulem_punct_breakable_kern:n
     \__xeCJK_Default_and_FullLeft_glue:N  \__xeCJK_ulem_Default_and_FullLeft_glue:N
     \__xeCJK_Default_and_FullRight_glue:N \__xeCJK_ulem_Default_and_FullRight_glue:N
@@ -392,6 +395,7 @@
         \xeCJK_class_group_end:
         \UL@stop \__xeCJK_ulem_ccglue: \UL@start
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_font:
         \CJKsymbol
       }
       { \__xeCJK_ulem_CJK_and_CJK:N }
@@ -400,7 +404,6 @@
   {
     \xeCJK_class_group_begin:
     \xeCJK_clear_Boundary_and_CJK_toks:
-    \xeCJK_select_font:
   }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_between_CJK_blocks:nnN #1#2
   {
@@ -425,8 +428,8 @@
       {
         \UL@stop
         \__xeCJK_ulem_skip_punct_begin:
-        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1}
-        \__xeCJK_punct_offset:NN \c__xeCJK_left_tl {#1}
+        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
+        \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
         \UL@start
       }
       { \__xeCJK_ulem_Default_and_FullLeft_glue:N #1 }
@@ -437,7 +440,7 @@
       {
         \UL@stop
         \__xeCJK_ulem_skip_punct_begin:
-        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1}
+        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
         \UL@start
       }
       { \__xeCJK_ulem_Boundary_and_FullLeft_glue:N #1 }
@@ -449,11 +452,12 @@
         \xeCJK_class_group_end:
         \UL@stop
         \__xeCJK_ulem_skip_punct_begin:
-        \__xeCJK_ulem_ccglue:
-        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl {#1}
-        \__xeCJK_punct_offset:NN \c__xeCJK_left_tl {#1}
+        \__xeCJK_ulem_punct_ccglue:
+        \__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
+        \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
         \UL@start
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_punct_font:
       }
       { \__xeCJK_ulem_CJK_and_FullLeft_glue:N #1 }
   }
@@ -463,16 +467,13 @@
       {
         \UL@stop
         \__xeCJK_ulem_skip_punct_begin:
-        \__xeCJK_punct_if_long:NTF {#1}
-          { \__xeCJK_ulem_ccglue: }
+        \__xeCJK_punct_if_long:NTF #1
+          { \xeCJK_allow_break: }
+          { \xeCJK_no_break: }
+        \__xeCJK_punct_if_middle:NT #1
           {
-            \__xeCJK_punct_if_middle:NTF {#1}
-              {
-                \xeCJK_no_break:
-                \__xeCJK_punct_glue:NN \c__xeCJK_right_tl {#1}
-                \__xeCJK_punct_bound_rule:NN \c__xeCJK_left_tl {#1}
-              }
-              { \xeCJK_no_break: }
+            \__xeCJK_punct_glue:NN \c__xeCJK_right_tl #1
+            \__xeCJK_punct_bound_rule:NN \c__xeCJK_left_tl #1
           }
         \UL@start
       }
@@ -483,8 +484,20 @@
     \xeCJK_if_ulem_patch:TF
       {
         \xeCJK_class_group_end:
-        \__xeCJK_Default_and_FullRight_glue:N {#1}
+        \UL@stop
+        \__xeCJK_ulem_skip_punct_begin:
+        \__xeCJK_punct_if_long:NTF #1
+          { \xeCJK_allow_break: }
+          { \xeCJK_no_break: }
+        \__xeCJK_punct_if_middle:NT #1
+          {
+            \__xeCJK_ulem_punct_ccglue:
+            \__xeCJK_punct_glue:NN \c__xeCJK_right_tl #1
+            \__xeCJK_punct_bound_rule:NN \c__xeCJK_left_tl #1
+          }
+        \UL@start
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_punct_font:
       }
       { \__xeCJK_ulem_CJK_and_FullRight_glue:N #1 }
   }
@@ -494,7 +507,7 @@
       {
         \__xeCJK_punct_if_middle:NTF \g__xeCJK_last_punct_tl
           {
-            \xeCJK_get_punct_bounds:NN \c__xeCJK_left_tl \g__xeCJK_last_punct_tl
+            \xeCJK_get_punct_bounds:No \c__xeCJK_left_tl \g__xeCJK_last_punct_tl
             \__xeCJK_punct_bound_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
             \xeCJK_class_group_end: \UL@stop \xeCJK_no_break:
             \__xeCJK_punct_glue:NN \c__xeCJK_left_tl  \g__xeCJK_last_punct_tl
@@ -506,12 +519,32 @@
       }
       { \__xeCJK_ulem_FullLeft_and_Default: }
   }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_FullLeft_and_Boundary:
+  {
+    \xeCJK_if_ulem_patch:TF
+      {
+        \__xeCJK_punct_if_middle:NTF \g__xeCJK_last_punct_tl
+          {
+            \xeCJK_get_punct_bounds:No \c__xeCJK_left_tl \g__xeCJK_last_punct_tl
+            \__xeCJK_punct_bound_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
+            \xeCJK_class_group_end: \UL@stop \xeCJK_no_break:
+            \__xeCJK_punct_glue:NN \c__xeCJK_left_tl  \g__xeCJK_last_punct_tl
+          }
+          { \xeCJK_class_group_end: \UL@stop }
+        \__xeCJK_ulem_skip_punct_end:
+        \xeCJK_no_break:
+        \UL@start
+        \tex_ignorespaces:D
+      }
+      { \__xeCJK_ulem_FullLeft_and_Boundary: }
+  }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullLeft_and_CJK:
   {
     \xeCJK_if_ulem_patch:TF
       {
         \xeCJK_FullLeft_and_Default:
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_font:
       }
       { \__xeCJK_ulem_FullLeft_and_CJK: }
   }
@@ -529,6 +562,21 @@
       }
       { \__xeCJK_ulem_FullRight_and_Default: }
   }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_FullRight_and_Boundary:
+  {
+    \xeCJK_if_ulem_patch:TF
+      {
+        \__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
+        \xeCJK_class_group_end:
+        \UL@stop
+        \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
+        \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
+        \__xeCJK_ulem_skip_punct_end:
+        \UL@start
+        \tex_ignorespaces:D
+      }
+      { \__xeCJK_ulem_FullRight_and_Boundary: }
+  }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_FullRight_and_CJK:
   {
     \xeCJK_if_ulem_patch:TF
@@ -538,10 +586,11 @@
         \UL@stop
         \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
         \__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
-        \__xeCJK_ulem_ccglue:
+        \__xeCJK_ulem_punct_ccglue:
         \__xeCJK_ulem_skip_punct_end:
         \UL@start
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_font:
       }
       { \__xeCJK_ulem_FullRight_and_CJK: }
   }
@@ -551,15 +600,6 @@
       { \xeCJK_ulem_hskip:n }
       { \__xeCJK_ulem_punct_hskip:n }
   }
-\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_kern:n #1
-  {
-    \xeCJK_if_ulem_patch:TF
-      {
-        \dim_compare:nNnF {#1} = \c_zero_dim
-          { \xeCJK_ulem_hskip:n {#1} }
-      }
-      { \__xeCJK_ulem_punct_kern:n {#1} }
-  }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_breakable_kern:n #1
   {
     \xeCJK_if_ulem_patch:TF
@@ -567,6 +607,7 @@
         \xeCJK_class_group_end:
         \UL@stop \xeCJK_ulem_hskip:n {#1} \UL@start
         \__xeCJK_ulem_class_group_begin:
+        \xeCJK_select_punct_font:
       }
       { \__xeCJK_ulem_punct_breakable_kern:n {#1} }
   }
@@ -594,9 +635,11 @@
   }
 \cs_new_protected_nopar:Npn \__xeCJK_ulem_ccglue:
   { { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders } }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_punct_ccglue:
+  { \__xeCJK_punct_hskip:n { \l__xeCJK_ccglue_skip } }
 \cs_new_protected_nopar:Npn \xeCJK_ulem_group_begin:
   {
-    \xeCJK_leave_vmode:
+    \mode_leave_vertical:
     \c_group_begin_token
   }
 \cs_new_protected_nopar:Npn \xeCJK_ulem_group_end:
@@ -608,7 +651,7 @@
   { \__xeCJK_ulem_on:n { \xeCJK_ulem_left: #1 \xeCJK_ulem_right: } }
 \NewDocumentCommand \xeCJKfntefon { s t- s o }
   {
-    \xeCJK_leave_vmode:
+    \mode_leave_vertical:
     \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
     \xeCJK_ulem_on:n
   }
@@ -725,9 +768,9 @@
   {
     \bool_lazy_or:nnT {#3} {#5}
       { \bool_set_false:c { l__xeCJK_#2_skip_bool } }
-    \IfBooleanT #4
+    \bool_if:NT #4
       { \bool_set_true:c { l__xeCJK_#2_subtract_bool } }
-    \IfNoValueF {#6}
+    \tl_if_novalue:nF {#6}
       { \keys_set:nn { xeCJK / options / #1 } {#6} }
     \bool_set_eq:Nc \l__xeCJK_ulem_skip_bool { l__xeCJK_#2_skip_bool }
     \bool_set_eq:Nc \l__xeCJK_ulem_hidden_bool { l__xeCJK_#2_hidden_bool }
@@ -738,9 +781,9 @@
   {
     \bool_lazy_or:nnT {#1} {#3}
       { \bool_set_false:N \l__xeCJK_ulem_skip_bool }
-    \IfBooleanT #2
+    \bool_if:NT #2
       { \bool_set_true:N \l__xeCJK_ulem_subtract_bool }
-    \IfNoValueF {#4}
+    \tl_if_novalue:nF {#4}
       { \keys_set:nn { xeCJK / options / ulem } {#4} }
   }
 \cs_new_protected_nopar:Npn \xeCJK_fntef_initial:n
@@ -793,12 +836,6 @@
         \color_group_end:
       }
   }
-\cs_new_protected_nopar:Npn \xeCJK_leave_vmode:
-  {
-    \if_mode_vertical:
-      \exp_after:wN \tex_indent:D
-    \fi:
-  }
 \keys_define:nn { xeCJK / options }
   {
     underdot / symbol          .tl_set:N = \l__xeCJK_udot_symbol_tl ,
@@ -930,7 +967,7 @@
   }
 \cs_new_protected:Npn \__xeCJK_under_symbol_auxii:nnnnnn #1#2#3#4#5#6
   {
-    \xeCJK_leave_vmode:
+    \mode_leave_vertical:
     \group_begin:
       \xeCJK_under_symbol_initial:nnnnn {#1} {#2} {#3} {#4} {#5}
       \__xeCJK_under_symbol_text_format:c { l__xeCJK_#2_text_format_tl }
@@ -941,7 +978,7 @@
   }
 \cs_new_protected:Npn \xeCJK_under_symbol_initial:nnnnn #1#2#3#4#5
   {
-    \IfNoValueF {#3}
+    \tl_if_novalue:nF {#3}
       { \keys_set:nn { xeCJK / options / #1 } {#3} }
     \xeCJK_fntef_sbox:n {#5}
     \bool_if:NTF \l__xeCJK_fntef_bool
@@ -1016,7 +1053,7 @@
   }
 \NewEnviron { CJKfilltwosides* } [ 2 ] [ c ]
   {
-    \xeCJK_leave_vmode:
+    \mode_leave_vertical:
     \cs_set_eq:NN \CJKglue \xeCJK_fntef_hfilll:
     \tl_set:Nn \arraystretch { 1 }
     \cs_if_free:NF \extrarowheight
@@ -1050,8 +1087,7 @@
   }
 \cs_new_protected_nopar:Npn \xeCJK_fntef_hfilll:
   { \skip_horizontal:N \c__xeCJK_filll_skip }
-\skip_new:N \c__xeCJK_filll_skip
-\skip_set:Nn  \c__xeCJK_filll_skip { \c_zero_dim plus 1 filll }
+\skip_const:Nn \c__xeCJK_filll_skip { \c_zero_dim plus 1 filll }
 %% 
 %%     This package consists of the files xeCJK.dtx,
 %%                                        full-stop.map,
-- 
cgit v1.2.3

