summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-12-24 00:12:52 +0000
committerKarl Berry <karl@freefriends.org>2014-12-24 00:12:52 +0000
commit98ea5fa0bdfa84abc23329217d1ce9ef4ae27b96 (patch)
tree66f242cd6300e62d873cf0d2ea745d647385de7e /Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
parent57cb67ae7c5220468344a53f91e761209f2befd0 (diff)
xecjk (23dec14)
git-svn-id: svn://tug.org/texlive/trunk@35889 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty114
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: