diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 114 |
1 files changed, 83 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty index 3c8f4032d61..93b46470bb8 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 737 2014-11-10 17:04:31Z sobenlee@gmail.com $ +%% $Id: xeCJK.dtx 742 2014-12-16 13:32:27Z 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 737 2014-11-10 17:04:31Z sobenlee@gmail.com $ +\GetIdInfo$Id: xeCJK.dtx 742 2014-12-16 13:32:27Z sobenlee@gmail.com $ {Typesetting CJK scripts with XeLaTeX} \ProvidesExplPackage {\ExplFileName} - {\ExplFileDate}{3.2.15}{\ExplFileDescription} + {\ExplFileDate}{3.2.16}{\ExplFileDescription} \msg_new:nnn { xeCJK } { Require-XeTeX } { The~xeCJK~package~requires~XeTeX~to~function.\\\\ @@ -87,7 +87,6 @@ \@ifpackagelater { xtemplate } { 2012/11/10 } { } { \msg_error:nnn { xeCJK } { l3-too-old } { xtemplate } } \RequirePackage { xparse , l3keys2e } -\RequirePackage { everypage } \tl_new:N \l__xeCJK_tmp_tl \int_new:N \l__xeCJK_tmp_int \box_new:N \l__xeCJK_tmp_box @@ -134,7 +133,16 @@ \__xeCJK_document_right_hook: } } -\AddEverypageHook { \xeCJKShipoutHook } +\__xeCJK_after_preamble:n + { \tl_put_right:Nn \@begindvi { \xeCJK@first@begindvi } } +\cs_new_protected_nopar:Npn \xeCJK@first@begindvi + { + \xeCJKShipoutHook + \cs_if_exist:NTF \@begindvi + { \tl_gput_right:Nn } + { \tl_const:Nn } + \@begindvi { \xeCJKShipoutHook } + } \NewDocumentCommand \xeCJKShipoutHook { } { \bool_if:NF \l__xeCJK_shipout_hook_bool @@ -143,8 +151,8 @@ \tl_use:N \l__xeCJK_shipout_hook_tl } } -\cs_new_protected:Npn \xeCJK_add_to_shipout:n #1 - { \tl_put_right:Nn \l__xeCJK_shipout_hook_tl {#1} } +\cs_new_protected:Npn \xeCJK_add_to_shipout:n + { \tl_put_right:Nn \l__xeCJK_shipout_hook_tl } \tl_new:N \l__xeCJK_shipout_hook_tl \bool_new:N \l__xeCJK_shipout_hook_bool \cs_new_nopar:Npn \xeCJK_reverse:nnn #1#2#3 @@ -638,6 +646,7 @@ { \c_group_begin_token \bool_set_true:N \l__xeCJK_CJK_group_bool + \int_gset_eq:NN \g__xeCJK_spacefactor_int \c_one_thousand } \bool_new:N \l__xeCJK_CJK_group_bool \cs_new_eq:NN \xeCJK_class_group_end: \c_group_end_token @@ -683,10 +692,11 @@ \xeCJK_app_inter_class_toks:nnn { CJK } {#1} { \CJKecglue } } \cs_new_protected_nopar:Npn \xeCJK_Boundary_and_Default: + { \xeCJK_check_for_ecglue: } +\cs_new_protected_nopar:Npn \__xeCJK_check_for_xecglue: { \bool_if:nTF { - \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 } @@ -700,19 +710,22 @@ { \xeCJK_remove_node: \CJKecglue } { \xeCJK_space_glue: } } + { \__xeCJK_check_for_ecglue: } + } +\cs_new_protected_nopar:Npn \__xeCJK_check_for_ecglue: + { + \bool_if:nTF { - \bool_if:nTF - { - \xeCJK_if_last_node_p:n { CJK } || - \xeCJK_if_last_node_p:n { CJK-nobreak } - } - { \xeCJK_remove_node: \CJKecglue } - { - \xeCJK_if_last_node:nT { CJK-space } - { \xeCJK_remove_node: \xeCJK_space_or_xecglue: } - } + \xeCJK_if_last_node_p:n { CJK } || + \xeCJK_if_last_node_p:n { CJK-nobreak } + } + { \xeCJK_remove_node: \CJKecglue } + { + \xeCJK_if_last_node:nT { CJK-space } + { \xeCJK_remove_node: \xeCJK_space_or_xecglue: } } } +\cs_new_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_ecglue: \clist_map_inline:nn { Default , HalfRight } { \xeCJK_inter_class_toks:nnn {#1} { Boundary } @@ -734,10 +747,11 @@ \xeCJK_inter_class_toks:nnn { Boundary } { NormalSpace } { \xeCJK_Boundary_and_NormalSp: } \cs_new_protected_nopar:Npn \xeCJK_Boundary_and_NormalSp: + { \xeCJK_check_for_ecglue_normalsp: } +\cs_new_protected_nopar:Npn \__xeCJK_check_for_xecglue_normalsp: { \bool_if:nTF { - \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 } @@ -751,11 +765,14 @@ { \xeCJK_remove_node: \CJKecglue } { \xeCJK_space_glue: } } - { - \xeCJK_if_last_node:nT { CJK-space } - { \xeCJK_remove_node: \xeCJK_space_or_xecglue: } - } + { \__xeCJK_check_for_ecglue_normalsp: } } +\cs_new_protected_nopar:Npn \__xeCJK_check_for_ecglue_normalsp: + { + \xeCJK_if_last_node:nT { CJK-space } + { \xeCJK_remove_node: \xeCJK_space_or_xecglue: } + } +\cs_new_eq:NN \xeCJK_check_for_ecglue_normalsp: \__xeCJK_check_for_ecglue_normalsp: \xeCJK_inter_class_toks:nnn { NormalSpace } { Boundary } { \int_gset_eq:NN \g__xeCJK_spacefactor_int \tex_spacefactor:D @@ -886,12 +903,20 @@ \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: + \cs_set_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_xecglue: + \cs_set_eq:NN + \xeCJK_check_for_ecglue_normalsp: + \__xeCJK_check_for_xecglue_normalsp: } , xCJKecglue / false .code:n = { \bool_set_false:N \l__xeCJK_xecglue_bool \cs_set_eq:NN \xeCJK_space_or_xecglue: \xeCJK_space_glue: \xeCJK_cs_clear:N \xeCJK_check_for_xglue: + \cs_set_eq:NN \xeCJK_check_for_ecglue: \__xeCJK_check_for_ecglue: + \cs_set_eq:NN + \xeCJK_check_for_ecglue_normalsp: + \__xeCJK_check_for_ecglue_normalsp: } , xCJKecglue / unknown .code:n = { @@ -1642,7 +1667,7 @@ { \__xeCJK_error:nx { punct-style-unknown } { \l_keys_value_tl } } } \seq_gclear:N \g__xeCJK_punct_style_seq - \xeCJKsetup { PunctStyle = plain } + \keys_set:nn { xeCJK / options } { PunctStyle = plain } } } \NewDocumentCommand \xeCJKsetwidth { s m m } @@ -3179,8 +3204,8 @@ \tl_set:Nx \l__xeCJK_off_verb_addon_tl { \bool_if:NTF \l__xeCJK_xecglue_bool - { \xeCJKsetup { xCJKecglue = true } } - { \xeCJKsetup { xCJKecglue = false } } + { \keys_set:nn { xeCJK / options } { xCJKecglue = true } } + { \keys_set:nn { xeCJK / options } { xCJKecglue = false } } \exp_not:n { \cs_set_eq:NN \CJKglue \__xeCJK_shipout_CJKglue: @@ -3192,7 +3217,7 @@ } } \xeCJK_add_to_shipout:n { \l__xeCJK_off_verb_addon_tl } - \xeCJKsetup { xCJKecglue = false } + \keys_set:nn { xeCJK / options } { xCJKecglue = false } } \tl_new:N \l__xeCJK_reset_shipout_skip_hook_tl \NewDocumentCommand \xeCJKVerbAddon { } @@ -3242,9 +3267,9 @@ \__xeCJK_reset_char_class:n { HalfLeft } \__xeCJK_reset_char_class:n { HalfLeft } \__xeCJK_reset_char_class:n { NormalSpace } - \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 + { \keys_set:nn { xeCJK / options } { xCJKecglue = true } } + { \keys_set:nn { xeCJK / options } { xCJKecglue = false } } \exp_not:n { \cs_set_eq:NN \CJKglue \__xeCJK_shipout_CJKglue: @@ -3254,7 +3279,7 @@ } } \xeCJK_add_to_shipout:n { \xeCJKOffVerbAddon } - \xeCJKsetup { xCJKecglue = false } + \keys_set:nn { xeCJK / options } { xCJKecglue = false } } \skip_if_eq:nnTF { \l__xeCJK_verb_exspace_skip } { \c_zero_skip } { @@ -3542,6 +3567,33 @@ \xeCJK_set_char_class:nnn {#1} {#2} {#3} \xeCJKResetPunctClass } +\cs_new_protected_nopar:Npn \xeCJK_fix_hbar: + { + \cs_if_free:NF \symlegacymaths + { + \group_begin: + \cs_set_nopar:Npn \__xeCJK_tmp:w + { { \mathchar '26 \mkern -9mu h } } + \exp_after:wN \group_end: + \if_meaning:w \__xeCJK_tmp:w \hbar + \cs_set_protected_nopar:Npx \hbar + { { + \mathchar + \int_eval:n { \symlegacymaths * \c_two_hundred_fifty_six + '26 } ~ + \mkern -9mu h + } } + \fi: + } + } +\cs_if_exist:NTF \fontspec_maybe_setup_maths: + { + \cs_gset_protected_nopar:Npx \fontspec_maybe_setup_maths: + { + \exp_not:o { \fontspec_maybe_setup_maths: } + \xeCJK_fix_hbar: + } + } + { \AtBeginDocument { \xeCJK_fix_hbar: } } \cs_new_protected_nopar:Npn \__xeCJK_update_url_font: { \group_begin: \xeCJK_select_font: \exp_after:wN \group_end: |