From f223ad48afe014b1314fd294f0e099232f46b63e Mon Sep 17 00:00:00 2001 From: Karl Berry 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 -%% Copyright (C) 2009--2017 by Leo Liu -%% Copyright (C) 2012--2017 by Qing Lee +%% Copyright (C) 2009--2018 by Leo Liu +%% Copyright (C) 2012--2018 by Qing Lee %% ---------------------------------------------------------------------- %% %% 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 $ +\GetIdInfo$Id: xeCJK.dtx 54327e6 2018-01-28 19:10:14 +0800 Qing Lee $ {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