summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty136
1 files changed, 106 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
index 9bafa15d860..501f65e5be8 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `listings')
%%
-%% $Id: xeCJK.dtx 438 2013-06-11 14:17:42Z sobenlee $
+%% $Id: xeCJK.dtx 465 2013-07-06 10:30:24Z sobenlee $
%% $URL: https://ctex-kit.googlecode.com/svn/trunk/xeCJK/xeCJK.dtx $
%% -----------------------------------------------------------------
%% Author:
@@ -33,11 +33,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 438 2013-06-11 14:17:42Z sobenlee $
+\GetIdInfo$Id: xeCJK.dtx 465 2013-07-06 10:30:24Z sobenlee $
{xeCJK patch file for listings}
\ProvidesExplPackage
{xeCJK-listings}
- {\ExplFileDate}{3.2.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.2.4}{\ExplFileDescription}
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { xeCJK } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
@@ -46,6 +46,7 @@
\lst@AddToHook { SelectCharTable } { \__xeCJK_listings_toks_hook: }
\lst@AddToHook { OutputBox }
{
+ \tl_set_eq:NN \l_xeCJK_punct_style_tl \c__xeCJK_punct_style_plain_tl
\l__xeCJK_restore_listings_toks_tl
\__xeCJK_listings_output_IVS:
}
@@ -62,6 +63,9 @@
\exp_after:wN \use:n
\tex_the:D \tex_output:D
}
+ \lst@ifbreaklines
+ \cs_set_eq:NN \__xeCJK_listings_CJK_toks: \__xeCJK_listings_breaklines_toks:
+ \fi:
}
\cs_new_protected_nopar:Npn \__xeCJK_listings_toks_hook:
{
@@ -80,10 +84,20 @@
}
\xeCJK_inter_class_toks:nnn { Boundary } { Default }
{ \__xeCJK_listings_process_Default:N }
- \xeCJK_inter_class_toks:nnn { Boundary } { CJK }
- { \__xeCJK_listings_process_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { IVS }
{ \__xeCJK_listings_process_IVS:nN { \c_zero } }
+ \__xeCJK_listings_CJK_toks_hook:
+ }
+\tl_new:N \l__xeCJK_restore_listings_toks_tl
+\cs_new_nopar:Npn \__xeCJK_backup_inter_class_toks:nn #1#2
+ {
+ \xeCJK_inter_class_toks:nnn {#1} {#2}
+ { \xeCJK_get_inter_class_toks:nn {#1} {#2} }
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_listings_CJK_toks_hook:
+ {
+ \xeCJK_inter_class_toks:nnn { Boundary } { CJK }
+ { \__xeCJK_listings_process_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullLeft }
{ \__xeCJK_listings_process_CJK:nN { \c_two } }
\xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
@@ -94,11 +108,19 @@
{ \__xeCJK_listings_process_CJK:nN { \c_two } }
}
}
-\tl_new:N \l__xeCJK_restore_listings_toks_tl
-\cs_new_nopar:Npn \__xeCJK_backup_inter_class_toks:nn #1#2
+\cs_new_protected_nopar:Npn \__xeCJK_listings_breaklines_toks:
{
- \xeCJK_inter_class_toks:nnn {#1} {#2}
- { \xeCJK_get_inter_class_toks:nn {#1} {#2} }
+ \xeCJK_inter_class_toks:nnn { Boundary } { CJK }
+ { \__xeCJK_listings_process_breaklines_CJK:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { FullLeft }
+ { \__xeCJK_listings_process_FullLeft:nN { \c_two } }
+ \xeCJK_inter_class_toks:nnn { Boundary } { FullRight }
+ { \__xeCJK_listings_process_FullRight:nN { \c_two } }
+ \seq_map_inline:Nn \g__xeCJK_CJK_sub_class_seq
+ {
+ \xeCJK_inter_class_toks:nnn { Boundary } { CJK/##1 }
+ { \__xeCJK_listings_process_breaklines_CJK:nN { \c_two } }
+ }
}
\cs_new_protected_nopar:Npn \__xeCJK_listings_process_Default:N #1
{
@@ -123,12 +145,7 @@
\bool_if:NTF \l__xeCJK_listings_letter_bool
{ \lst@lettertrue }
{
- \lst@ifletter
- \lst@Output
- \else:
- \lst@OutputOther
- \lst@lettertrue
- \fi:
+ \lst@ifletter \lst@Output \else: \lst@OutputOther \lst@lettertrue \fi:
\bool_set_true:N \l__xeCJK_listings_letter_bool
}
\__xeCJK_listings_append:nN
@@ -138,35 +155,90 @@
\lst@whitespacefalse
\bool_if:NTF \l__xeCJK_listings_letter_bool
{
- \lst@Output
+ \lst@Output \lst@letterfalse
\bool_set_false:N \l__xeCJK_listings_letter_bool
- \lst@letterfalse
}
{ \lst@ifletter \lst@Output \lst@letterfalse \fi: }
\cs_set_eq:NN \lst@lastother #2
\__xeCJK_listings_append:nN {#1} #2
}
-\bool_new:N \l__xeCJK_listings_letter_bool
+\cs_new_protected_nopar:Npn \__xeCJK_listings_process_breaklines_CJK:nN
+ {
+ \lst@whitespacefalse
+ \bool_if:NTF \l__xeCJK_listings_letter_bool
+ {
+ \int_compare:nNnF \l__xeCJK_listings_flag_int = \c_two { \lst@Output }
+ \lst@lettertrue
+ }
+ {
+ \lst@ifletter \lst@Output \else: \lst@OutputOther \lst@lettertrue \fi:
+ \bool_set_true:N \l__xeCJK_listings_letter_bool
+ }
+ \int_set_eq:NN \l__xeCJK_listings_flag_int \c_one
+ \__xeCJK_listings_append:nN
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_listings_process_FullLeft:nN #1#2
+ {
+ \lst@whitespacefalse
+ \bool_if:NTF \l__xeCJK_listings_letter_bool
+ {
+ \bool_if:nF
+ {
+ \int_compare_p:nNn \l__xeCJK_listings_flag_int = \c_two ||
+ ( \int_compare_p:nNn \l__xeCJK_listings_flag_int = \c_three &&
+ ! \l__xeCJK_punct_breakable_bool )
+ }
+ { \lst@Output }
+ \lst@lettertrue
+ }
+ {
+ \lst@ifletter \lst@Output \else: \lst@OutputOther \lst@lettertrue \fi:
+ \bool_set_true:N \l__xeCJK_listings_letter_bool
+ }
+ \int_set_eq:NN \l__xeCJK_listings_flag_int \c_two
+ \__xeCJK_listings_append:nN {#1} #2
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_listings_process_FullRight:nN #1#2
+ {
+ \lst@whitespacefalse
+ \bool_if:NTF \l__xeCJK_listings_letter_bool
+ {
+ \bool_if:nT
+ {
+ \int_compare_p:nNn \l__xeCJK_listings_flag_int < \c_two &&
+ \__xeCJK_punct_if_long_p:N #2
+ }
+ { \lst@Output }
+ \lst@lettertrue
+ }
+ {
+ \lst@ifletter \lst@Output \else: \lst@OutputOther \lst@lettertrue \fi:
+ \bool_set_true:N \l__xeCJK_listings_letter_bool
+ }
+ \int_set_eq:NN \l__xeCJK_listings_flag_int \c_three
+ \__xeCJK_listings_append:nN {#1} #2
+ }
+\int_new:N \l__xeCJK_listings_flag_int
\cs_set_protected_nopar:Npn \lst@AppendLetter
{
\bool_if:NTF \l__xeCJK_listings_letter_bool
{
- \lst@Output
+ \lst@Output \lst@lettertrue
\bool_set_false:N \l__xeCJK_listings_letter_bool
- \lst@lettertrue
}
{ \reverse_if:N \lst@ifletter \lst@OutputOther \lst@lettertrue \fi: }
+ \lst@ifbreaklines \int_zero:N \l__xeCJK_listings_flag_int \fi:
\lst@Append
}
\cs_set_protected_nopar:Npn \lst@AppendOther
{
\bool_if:NTF \l__xeCJK_listings_letter_bool
{
- \lst@Output
+ \lst@Output \lst@letterfalse
\bool_set_false:N \l__xeCJK_listings_letter_bool
- \lst@letterfalse
}
{ \lst@ifletter \lst@Output \lst@letterfalse \fi: }
+ \lst@ifbreaklines \int_zero:N \l__xeCJK_listings_flag_int \fi:
\tex_futurelet:D \lst@lastother \lst@Append
}
\cs_new_protected_nopar:Npn \__xeCJK_listings_process_IVS:nN
@@ -205,9 +277,9 @@
\cs_set_eq:NN \lst@IfNextCharActive \__xeCJK_listings_peek_active_loop:TF
\cs_new_protected:Npn \__xeCJK_listings_inside_convert:nw #1 ~ \@empty
{
- \tl_set_rescan:Nnn \l__xeCJK_tmpa_tl { } {#1}
+ \tl_set_rescan:Nnn \l__xeCJK_tmp_tl { } {#1}
\__xeCJK_set_listings_escape:
- \tl_put_right:NV \lst@arg \l__xeCJK_tmpa_tl
+ \tl_put_right:NV \lst@arg \l__xeCJK_tmp_tl
}
\cs_set_eq:NN \lst@InsideConvert@ \__xeCJK_listings_inside_convert:nw
\cs_new_protected_nopar:Npn \__xeCJK_listings_inline_group:w
@@ -223,16 +295,20 @@
\lst@InlineGJEnd
}
\group_begin:
-\char_set_catcode_active:N \/
-\char_set_lccode:nn { `\/ } { `\\ }
-\tl_to_lowercase:n
+\cs_set:Npn \__xeCJK_tmp:w #1
{
\group_end:
\cs_new_protected:Npn \__xeCJK_set_listings_escape:
- { \xeCJK_swap_cs:NN / \__xeCJK_listings_escape:N }
- \cs_new_protected:Npn \__xeCJK_listings_escape:N #1
- { \cs_if_eq:NNTF / #1 { \__xeCJK_listings_escape:N } {#1} }
+ { \xeCJK_swap_cs:NN #1 \__xeCJK_listings_escape:N }
+ \cs_new_protected:Npn \__xeCJK_listings_escape:N ##1
+ { \cs_if_eq:NNTF #1 ##1 { \__xeCJK_listings_escape:N } {##1} }
+ }
+\use:n
+ {
+ \char_set_catcode_active:N \\
+ \__xeCJK_tmp:w
}
+ { \ }
%%
%% This package consists of the file xeCJK.dtx
%% and the derived files xeCJK.pdf,