diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty | 119 |
1 files changed, 101 insertions, 18 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty index 08077672bc6..83a3b0f01e3 100644 --- a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty +++ b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty @@ -6,7 +6,7 @@ %% %% xeCJK.dtx (with options: `xunicode') %% -%% $Id: xeCJK.dtx 537 2013-12-08 13:01:40Z sobenlee $ +%% $Id: xeCJK.dtx 549 2014-03-01 09:06:08Z sobenlee $ %% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $ %% ----------------------------------------------------------------- %% Author: @@ -15,9 +15,9 @@ %% Leo Liu <leoliu.pku@gmail.com> %% Qing Lee <sobenlee@gmail.com> %% -%% Copyright (C) 2007--2013 Wenchang Sun -%% (C) 2009--2013 Leo Liu -%% (C) 2012--2013 Qing Lee +%% Copyright (C) 2007--2014 Wenchang Sun +%% (C) 2009--2014 Leo Liu +%% (C) 2012--2014 Qing Lee %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -33,11 +33,11 @@ %% \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\GetIdInfo$Id: xeCJK.dtx 537 2013-12-08 13:01:40Z sobenlee $ +\GetIdInfo$Id: xeCJK.dtx 549 2014-03-01 09:06:08Z sobenlee $ {addon file for xunicode} \ProvidesExplPackage {xunicode-addon} - {\ExplFileDate}{3.2.9}{\ExplFileDescription} + {\ExplFileDate}{3.2.10}{\ExplFileDescription} \pdftex_if_engine:T { \msg_new:nnnn { xunicode-addon } { cannot-use-pdftex } @@ -303,6 +303,10 @@ { \DeclareUTFEncodedSymbol #2 [#1] { "#3 } { "0#4 } } \RenewDocumentCommand \DeclareEncodedCompositeAccents { m m m m } { \DeclareUTFEncodedAccents #2 [#1] { "#4 } { "#3 } } +\NewDocumentCommand \DeclareUTFDoubleEncodedAccent { m O { \UTFencname } m m } + { \__xunadd_declare_encoded:NNnnn \__xunadd_combine_double_accent:nnNNn #1 {#2} {#3} {#4} } +\NewDocumentCommand \DeclareUTFDoubleEncodedSymbol { m O { \UTFencname } m m } + { \__xunadd_declare_encoded:NNnnn \__xunadd_combine_double_symbol:nnNNn #1 {#2} {#3} {#4} } \cs_new_protected:Npn \__xunadd_declare_composite:Nnn #1#2#3 { \DeclareTextCommand #1 {#3} { \__xunadd_text_composite:nnn {#2} {#3} } } \cs_new_protected:Npn \__xunadd_text_composite:nnn #1#2#3 @@ -360,8 +364,8 @@ {#1} } \cs_generate_variant:Nn \__xunadd_text_combine:NNnNNn { c } -\cs_new_protected:Npn \__xunadd_combine_symbol:nnNNn #1#2#3#4#5 - { \__xunadd_text_combine:NnnNNn \__xunadd_add_symbol:nnNN {#1} {#2} {#3} {#4} {#5} } +\cs_new_protected:Npn \__xunadd_combine_symbol:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_symbol:nnNN } \cs_new_protected:Npn \__xunadd_add_symbol:nnNN #1#2#3#4 { \tl_if_blank:nTF {#1} @@ -376,8 +380,8 @@ { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3 } } } } -\cs_new_protected:Npn \__xunadd_combine_accent:nnNNn #1#2#3#4#5 - { \__xunadd_text_combine:NnnNNn \__xunadd_add_accent:nnNN {#1} {#2} {#3} {#4} {#5} } +\cs_new_protected:Npn \__xunadd_combine_accent:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_accent:nnNN } \cs_new_protected:Npn \__xunadd_add_accent:nnNN #1#2#3#4 { \tl_if_blank:nTF {#1} @@ -396,8 +400,8 @@ } } } -\cs_new_protected:Npn \__xunadd_combine_accents:nnNNn #1#2#3#4#5 - { \__xunadd_text_combine:NnnNNn \__xunadd_add_accents:nnNN {#1} {#2} {#3} {#4} {#5} } +\cs_new_protected:Npn \__xunadd_combine_accents:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_accents:nnNN } \cs_new_protected:Npn \__xunadd_add_accents:nnNN #1#2#3#4 { \tl_if_blank:nTF {#1} @@ -412,8 +416,8 @@ { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3#4 } } } } -\cs_new_protected:Npn \__xunadd_combine_circle:nnNNn #1#2#3#4#5 - { \__xunadd_text_combine:NnnNNn \__xunadd_add_circle:nnNN {#1} {#2} {#3} {#4} {#5} } +\cs_new_protected:Npn \__xunadd_combine_circle:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_circle:nnNN } \cs_new_protected:Npn \__xunadd_add_circle:nnNN #1#2#3#4 { \tl_if_blank:nTF {#1} @@ -424,14 +428,14 @@ } { \__xunadd_glyph_if_exist:nTF { `#4 } - { \__xunadd_add_circle:Nn #4 {#1} } + { \__xunadd_add_circle:nN {#1} #4 } { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#1} } } } -\cs_new_protected:Npn \__xunadd_add_circle:Nn #1#2 +\cs_new_protected:Npn \__xunadd_add_circle:nN #1#2 { - \hcoffin_set:Nn \l__xunadd_circle_coffin {#1} - \hcoffin_set:Nn \l__xunadd_tmp_coffin {#2} + \hcoffin_set:Nn \l__xunadd_tmp_coffin {#1} + \hcoffin_set:Nn \l__xunadd_circle_coffin {#2} \dim_set:Nn \l__xunadd_circle_width_dim { \fp_use:N \l__xunadd_circle_ratio_fp \coffin_wd:N \l__xunadd_circle_coffin } \coffin_resize:Nnn \l__xunadd_tmp_coffin @@ -455,6 +459,63 @@ { \fp_set:Nn \l__xunadd_circle_ratio_fp {#1} } \fp_new:N \l__xunadd_circle_ratio_fp \settextcircledratio { 0.7 } +\cs_new_protected:Npn \__xunadd_combine_double_accent:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_double_accent:nnNN } +\cs_new_protected:Npn \__xunadd_add_double_accent:nnNN #1#2#3#4 + { + \tl_if_blank:nTF {#1} + { + \__xunadd_glyph_if_exist:nTF { `#4 } + {#4} + { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#4} } + } + { + \__xunadd_glyph_if_exist:nTF { `#3 } + { \__xunadd_add_double_symbol:nN {#1} #3 } + { + \__xunadd_glyph_if_exist:nTF { `#4 } + { \add@accent { `#4 } {#1} } + { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3 } } + } + } + } +\cs_new_protected:Npn \__xunadd_combine_double_symbol:nnNNn + { \__xunadd_text_combine:NnnNNn \__xunadd_add_double_symbol:nnNN } +\cs_new_protected:Npn \__xunadd_add_double_symbol:nnNN #1#2#3#4 + { + \tl_if_blank:nTF {#1} + { + \__xunadd_glyph_if_exist:nTF { `#4 } + {#4} + { \cs_if_exist_use:cTF { ? #2 } { {#1} } {#4} } + } + { + \__xunadd_glyph_if_exist:nTF { `#3 } + { \__xunadd_add_double_symbol:nN {#1} #3 } + { \cs_if_exist_use:cTF { ? #2 } { {#1} } { #1#3 } } + } + } +\cs_new_protected:Npn \__xunadd_add_double_symbol:nN #1#2 + { + \tl_if_head_is_N_type:nTF {#1} + { + \exp_after:wN \exp_after:wN \exp_after:wN + \__xunadd_add_double_symbol_aux:NnN \exp_after:wN \exp_after:wN + \tl_head:w #1 \q_stop \exp_after:wN { \use_none:n #1 } #2 + } + { #1#2 } + } +\cs_new_protected:Npn \__xunadd_add_double_symbol_aux:NnN #1#2#3 + { + \bool_if:nTF + { + \token_if_letter_p:N #1 || + \token_if_other_p:N #1 || + \token_if_chardef_p:N #1 + } + { #1#3#2 } + { #1#2#3 } + } \NewDocumentCommand \AtBeginUTFCommand { s O { } +m } { \tl_if_blank:nTF {#2} @@ -505,6 +566,28 @@ {#2} \tl_use:N \l__xunadd_end_hook_tl } +\NewDocumentCommand \DeclareUTFTIPACommand { O { \UTFencname } m } + { \use:x { \__xunadd_text_tipa_command:Nnn \exp_not:N #2 { \token_to_str:N #2 } {#1} } } +\cs_new_protected:Npn \__xunadd_text_tipa_command:Nnn #1#2#3 + { + \cs_set_eq:cc { UTF/#3#2 } { #3#2 } + \DeclareTextCommand #1 {#3} { \__xunadd_text_tipa_command:nnn {#3} {#2} } + } +\cs_new_protected:Npn \__xunadd_text_tipa_command:nnn #1#2#3 + { + \exp_after:wN \__xunadd_check_for_tipa:NNn + \cs:w \use_none:n #2 \exp_after:wN \cs_end: + \cs:w UTF/#1#2 \cs_end: {#3} + } +\cs_new_protected:Npn \__xunadd_check_for_tipa:NNn #1#2#3 + { + \tl_if_head_eq_meaning:nNTF {#3} \textipa + { + \exp_after:wN \tipacatchonechar \exp_after:wN + { \exp_after:wN #1 \use_none:n #3 } + } + { #2 {#3} } + } %% %% This package consists of the file xeCJK.dtx, %% full-stop.map, |