summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-11-12 23:32:07 +0000
committerKarl Berry <karl@freefriends.org>2014-11-12 23:32:07 +0000
commit8c7b32258dcc47d52a82c8cf346c696dd0c669a0 (patch)
treebff03cf2ac31964d8f088cc6299da3825a9e9b30 /Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
parentfce3dedd3f9904785b99f0021d2b39fb3a582474 (diff)
xecjk (12nov14)
git-svn-id: svn://tug.org/texlive/trunk@35568 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty121
1 files changed, 87 insertions, 34 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
index 5261b858507..2f786e46bd6 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `fntef')
%%
-%% $Id: xeCJK.dtx 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+%% $Id: xeCJK.dtx 737 2014-11-10 17:04:31Z 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 729 2014-11-05 13:46:36Z sobenlee@gmail.com $
+\GetIdInfo$Id: xeCJK.dtx 737 2014-11-10 17:04:31Z sobenlee@gmail.com $
{xeCJK font effect}
\ProvidesExplPackage
{xeCJKfntef}
- {\ExplFileDate}{3.2.14}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.15}{\ExplFileDescription}
\PassOptionsToPackage { normalem } { ulem }
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
\ProcessOptions \scan_stop:
@@ -55,11 +55,17 @@
\__xeCJK_ulem_initial:
\bool_if:NT \l__xeCJK_ulem_subtract_bool
{
- \cs_set_eq:NN \xeCJK_ulem_leaders: \UL@leaders
- \cs_set_eq:NN \UL@leaders \xeCJK_ulem_var_leaders:
+ \xeCJK_swap_cs:NN \UL@leaders \xeCJK_ulem_leaders:
+ \cs_set_eq:NN \__xeCJK_ulem_var_leaders: \xeCJK_ulem_var_leaders:
\cs_set_eq:NN \xeCJK_ulem_right_skip: \__xeCJK_ulem_right_skip:
}
- \bool_if:NF \l__xeCJK_ulem_skip_bool
+ \bool_if:NT \l__xeCJK_ulem_hidden_bool
+ { \cs_set_eq:NN \UL@putbox \__xeCJK_ulem_hidden_box: }
+ \bool_if:NTF \l__xeCJK_ulem_skip_bool
+ {
+ \cs_set_eq:NN \__xeCJK_ulem_putbox: \UL@putbox
+ \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
@@ -172,7 +178,7 @@
}
\cs_new_eq:NN \__xeCJK_ulem_hskip:n \__xeCJK_ulem_hskip_first:n
\cs_new_protected_nopar:Npn \xeCJK_ulem_hskip:n #1
- { \skip_set:Nn \UL@skip {#1} \UL@leaders }
+ { { \skip_set:Nn \UL@skip {#1} \UL@leaders } }
\cs_new_protected_nopar:Npn \xeCJK_ulem_right:
{
\scan_stop:
@@ -206,7 +212,8 @@
}
}
\cs_new_eq:NN \xeCJK_ulem_right_node: \prg_do_nothing:
-\cs_new_eq:NN \xeCJK_ulem_leaders: \UL@leaders
+\cs_new_protected_nopar:Npn \xeCJK_ulem_leaders:
+ { \__xeCJK_ulem_var_leaders: }
\cs_new_protected_nopar:Npn \xeCJK_ulem_var_leaders:
{
\scan_stop:
@@ -214,9 +221,10 @@
{
\UL@leadtype \skip_horizontal:n { \UL@skip + \UL@pixel }
\skip_horizontal:n { - \UL@pixel }
- \cs_gset_eq:NN \UL@leaders \xeCJK_ulem_leaders:
+ \cs_gset_eq:NN \__xeCJK_ulem_var_leaders: \xeCJK_ulem_leaders:
}
}
+\cs_new_eq:NN \__xeCJK_ulem_var_leaders: \xeCJK_ulem_var_leaders:
\cs_new_eq:NN \xeCJK_ulem_right_skip: \prg_do_nothing:
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip:
{
@@ -230,6 +238,13 @@
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_hbox:
{
\box_set_to_last:N \l__xeCJK_tmp_box
+ \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
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_kern:
+ {
\dim_set:Nn \l__xeCJK_tmp_dim { - \box_wd:N \l__xeCJK_tmp_box }
\dim_compare:nNnT \tex_lastkern:D = \l__xeCJK_tmp_dim
{
@@ -237,7 +252,6 @@
\__xeCJK_ulem_right_skip_glue:
\tex_kern:D \l__xeCJK_tmp_dim
}
- \box_use_clear:N \l__xeCJK_tmp_box
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_right_skip_glue:
{
@@ -257,11 +271,28 @@
{ \__xeCJK_ulem_right_skip_hbox: }
\tex_penalty:D \l__xeCJK_tmp_int
}
+\cs_new_protected_nopar:Npn \__xeCJK_ulem_hidden_box:
+ {
+ \tl_if_empty:NF \UL@start
+ {
+ \xeCJK_zero_vrule:
+ \xeCJK_no_break:
+ \xeCJK_ulem_hskip:n { \box_wd:N \UL@box }
+ \box_use:N \c__xeCJK_null_box
+ }
+ }
+\box_new:N \c__xeCJK_null_box
+\hbox_gset:Nn \c__xeCJK_null_box { }
+\cs_new_protected_nopar:Npn \xeCJK_zero_vrule:
+ {
+ \tex_vrule:D
+ width \c_zero_dim
+ depth \c_zero_dim
+ height \c_zero_dim \scan_stop:
+ }
\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_punct_begin:
{
- \cs_set_eq:NN \__xeCJK_ulem_putbox: \UL@putbox
\cs_set_eq:NN \UL@putbox \__xeCJK_ulem_skip_putbox:
- \cs_set_eq:NN \__xeCJK_ulem_hskip_aux:n \xeCJK_ulem_hskip:n
\cs_set_eq:NN \xeCJK_ulem_hskip:n \skip_horizontal:n
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_skip_punct_end:
@@ -559,16 +590,12 @@
L \int_use:N \etex_currentgrouplevel:D
}
\cs_new_protected_nopar:Npn \__xeCJK_ulem_ccglue:
- { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders }
-\NewDocumentCommand \xeCJKfntefon
- { > { \ReverseBoolean } s t- > { \ReverseBoolean } s }
+ { { \skip_set_eq:NN \UL@skip \l__xeCJK_ccglue_skip \UL@leaders } }
+\NewDocumentCommand \xeCJKfntefon { s t- s o }
{
- \bool_set:Nn \l__xeCJK_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l__xeCJK_ulem_subtract_bool #2
+ \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\ULon
}
-\bool_new:N \l__xeCJK_ulem_subtract_bool
-\bool_new:N \l__xeCJK_ulem_skip_bool
\cs_new_eq:NN \xeCJK_ulem_on:n \UL@on
\cs_set_protected:Npn \UL@on #1
{ \xeCJK_ulem_on:n { \xeCJK_ulem_left: #1 \xeCJK_ulem_right: } }
@@ -660,19 +687,25 @@
}
\ULon
}
-\DeclareDocumentCommand \CJKunderanyline
- { > { \ReverseBoolean } s t- > { \ReverseBoolean } s m m }
+\DeclareDocumentCommand \CJKunderanyline { s t- s o m m }
{
\c_group_begin_token
+ \xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\xeCJK_fntef_initial:nn
- {#5}
+ {#6}
{
\box_move_down:nn
- {#4}
+ {#5}
{ \box_use:N \l__xeCJK_fntef_box }
}
- \bool_set:Nn \l__xeCJK_ulem_skip_bool { #1 && #3 }
- \bool_set_eq:NN \l__xeCJK_ulem_subtract_bool #2
+ \tl_if_empty:NF \l__xeCJK_ulem_boxdepth_tl
+ { \box_set_dp:Nn \ULC@box { \l__xeCJK_ulem_boxdepth_tl } }
+ \tl_if_empty:NF \l__xeCJK_ulem_sep_tl
+ {
+ \bool_set_true:N \l__xeCJK_fntef_bool
+ \dim_set:Nn \l__xeCJK_fntef_dim
+ { \l__xeCJK_ulem_sep_tl + \box_dp:N \ULC@box }
+ }
\ULon
}
\cs_new_protected:Npn \xeCJK_fntef_boot:nnNNNn #1#2#3#4#5#6
@@ -684,8 +717,18 @@
\IfNoValueF {#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 }
\bool_set_eq:Nc \l__xeCJK_ulem_subtract_bool { l__xeCJK_#2_subtract_bool }
}
+\cs_new_protected:Npn \xeCJK_ulem_boot:NNNn #1#2#3#4
+ {
+ \bool_if:nT { #1 || #3 }
+ { \bool_set_false:N \l__xeCJK_ulem_skip_bool }
+ \IfBooleanT #2
+ { \bool_set_true:N \l__xeCJK_ulem_subtract_bool }
+ \IfNoValueF {#4}
+ { \keys_set:nn { xeCJK / options / ulem } {#4} }
+ }
\cs_new_protected_nopar:Npn \xeCJK_fntef_initial:n
{
\xeCJK_leave_vmode:
@@ -753,12 +796,14 @@
symbol / sep .tl_set:N = \l__xeCJK_symbol_sep_tl ,
symbol / boxdepth .tl_set:N = \l__xeCJK_symbol_boxdepth_tl ,
underline / skip .bool_set:N = \l__xeCJK_uline_skip_bool ,
+ underline / hidden .bool_set:N = \l__xeCJK_uline_hidden_bool ,
underline / subtract .bool_set:N = \l__xeCJK_uline_subtract_bool ,
underline / thickness .tl_set:N = \l__xeCJK_uline_thickness_tl ,
underline / depth .tl_set:N = \l__xeCJK_uline_depth_tl ,
underline / sep .tl_set:N = \l__xeCJK_uline_sep_tl ,
underline / format .tl_set:N = \l__xeCJK_uline_format_tl ,
underdblline / skip .bool_set:N = \l__xeCJK_udbline_skip_bool ,
+ underdblline / hidden .bool_set:N = \l__xeCJK_udbline_hidden_bool ,
underdblline / subtract .bool_set:N = \l__xeCJK_udbline_subtract_bool ,
underdblline / thickness .tl_set:N = \l__xeCJK_udbline_thickness_tl ,
underdblline / depth .tl_set:N = \l__xeCJK_udbline_depth_tl ,
@@ -766,19 +811,27 @@
underdblline / format .tl_set:N = \l__xeCJK_udbline_format_tl ,
underdblline / gap .tl_set:N = \l__xeCJK_udbline_gap_tl ,
underwave / skip .bool_set:N = \l__xeCJK_uwave_skip_bool ,
+ underwave / hidden .bool_set:N = \l__xeCJK_uwave_hidden_bool ,
underwave / subtract .bool_set:N = \l__xeCJK_uwave_subtract_bool ,
underwave / symbol .tl_set:N = \l__xeCJK_uwave_symbol_tl ,
underwave / depth .tl_set:N = \l__xeCJK_uwave_depth_tl ,
underwave / sep .tl_set:N = \l__xeCJK_uwave_sep_tl ,
underwave / format .tl_set:N = \l__xeCJK_uwave_format_tl ,
sout / skip .bool_set:N = \l__xeCJK_sout_skip_bool ,
+ sout / hidden .bool_set:N = \l__xeCJK_sout_hidden_bool ,
sout / subtract .bool_set:N = \l__xeCJK_sout_subtract_bool ,
sout / thickness .tl_set:N = \l__xeCJK_sout_thickness_tl ,
sout / height .tl_set:N = \l__xeCJK_sout_height_tl ,
sout / format .tl_set:N = \l__xeCJK_sout_format_tl ,
xout / skip .bool_set:N = \l__xeCJK_xout_skip_bool ,
+ xout / hidden .bool_set:N = \l__xeCJK_xout_hidden_bool ,
xout / subtract .bool_set:N = \l__xeCJK_xout_subtract_bool ,
- xout / format .tl_set:N = \l__xeCJK_xout_format_tl
+ xout / format .tl_set:N = \l__xeCJK_xout_format_tl ,
+ ulem / skip .bool_set:N = \l__xeCJK_ulem_skip_bool ,
+ ulem / hidden .bool_set:N = \l__xeCJK_ulem_hidden_bool ,
+ ulem / subtract .bool_set:N = \l__xeCJK_ulem_subtract_bool ,
+ ulem / sep .tl_set:N = \l__xeCJK_ulem_sep_tl ,
+ ulem / boxdepth .tl_set:N = \l__xeCJK_ulem_boxdepth_tl
}
\clist_map_inline:nn
{ underdot , underline , underdblline , underwave , sout , xout }
@@ -791,9 +844,7 @@
underdot / symbol = \normalfont . ,
underdot / depth = 0.20 em ,
underdot / sep = 0.04 em ,
- underdot / boxdepth = \c_max_dim ,
symbol / sep = \c_zero_dim ,
- symbol / boxdepth = \c_max_dim ,
underline / skip = true ,
underline / thickness = \ULthickness ,
underline / depth = 0.20 em ,
@@ -869,19 +920,23 @@
{ \keys_set:nn { xeCJK / options / #1 } {#3} }
\xeCJK_fntef_sbox:n {#5}
\bool_if:NTF \l__xeCJK_fntef_bool
- { \xeCJK_make_under_symbol:nn { \l__xeCJK_fntef_dim } }
+ { \xeCJK_make_under_symbol:n { \l__xeCJK_fntef_dim } }
{
\bool_set_true:N \l__xeCJK_fntef_bool
- \xeCJK_make_under_symbol:nn {#4}
+ \xeCJK_make_under_symbol:n {#4}
+ }
+ \tl_if_empty:cF { l__xeCJK_#2_boxdepth_tl }
+ {
+ \box_set_dp:Nn \l__xeCJK_under_symbol_box
+ { \use:c { l__xeCJK_#2_boxdepth_tl } }
}
- { \use:c { l__xeCJK_#2_boxdepth_tl } }
\dim_set:Nn \l__xeCJK_fntef_dim
{ \use:c { l__xeCJK_#2_sep_tl } + \box_dp:N \l__xeCJK_under_symbol_box }
\xeCJK_swap_cs:NN \CJKsymbol \__xeCJK_under_CJKsymbol:N
\__xeCJK_restore_shipout_CJKsymbol:
}
\box_new:N \l__xeCJK_under_symbol_box
-\cs_new_protected:Npn \xeCJK_make_under_symbol:nn #1#2
+\cs_new_protected:Npn \xeCJK_make_under_symbol:n #1
{
\hbox_set:Nn \l__xeCJK_under_symbol_box
{
@@ -895,8 +950,6 @@
}
}
}
- \dim_compare:nNnF {#2} = \c_max_dim
- { \box_set_dp:Nn \l__xeCJK_under_symbol_box {#2} }
}
\cs_new_protected:Npn \__xeCJK_restore_shipout_CJKsymbol:
{