summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty')
-rw-r--r--Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty417
1 files changed, 298 insertions, 119 deletions
diff --git a/Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty b/Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty
index 548f5351512..e2819da5521 100644
--- a/Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty
+++ b/Master/texmf-dist/tex/latex/zhlipsum/zhlipsum.sty
@@ -6,7 +6,7 @@
%%
%% zhlipsum.dtx (with options: `package')
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng <pssysrq@163.com>
+%% Copyright (C) 2017, 2018 by Xiangdong Zeng <xdzeng96@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -22,23 +22,21 @@
%%
%% The Current Maintainer of this work is Xiangdong Zeng.
%%
-%% This work consists of the file zhlipsum.dtx,
-%% and the derived files zhlipsum.ins,
-%% zhlipsum.sty,
-%% zhlipsum-utf8.def,
-%% zhlipsum-gbk.def,
-%% zhlipsum-big5.def,
-%% zhlipsum-example-utf8.tex,
-%% zhlipsum-example-gbk.tex,
-%% zhlipsum-example-big5.tex,
-%% zhlipsum-en.tex,
-%% zhlipsum.pdf,
-%% zhlipsum-en.pdf,
-%% and README.md.
+%% This work consists of the files zhlipsum.dtx,
+%% zhlipsum-text.dtx,
+%% and the derived files zhlipsum.ins,
+%% zhlipsum.sty,
+%% zhlipsum-utf8.def,
+%% zhlipsum-gbk.def,
+%% zhlipsum-big5.def,
+%% zhlipsum-en.tex,
+%% zhlipsum.pdf,
+%% zhlipsum-en.pdf,
+%% and README.md.
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo $Id: zhlipsum.dtx 0.5 2018-01-06 12:00:00Z Xiangdong Zeng <pssysrq@163.com> $
+\GetIdInfo $Id: zhlipsum.dtx 1.0.0 2018-04-03 12:00:00Z Xiangdong Zeng <xdzeng96@gmail.com> $
{Chinese dummy text}
\ProvidesExplPackage{\ExplFileName}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -55,161 +53,342 @@
\@ifpackagelater {#1} { 2017/12/16 }
{ } { \msg_error:nnn { zhlipsum } { l3-too-old } {#1} }
}
-\str_new:N \l__zhlipsum_tmpa_str
+\tl_new:N \l__zhlipsum_tmpa_tl
+\seq_new:N \l__zhlipsum_tmpa_seq
+\seq_new:N \l__zhlipsum_tmpb_seq
\tl_new:N \g__zhlipsum_encoding_tl
-\int_const:Nn \c__zhlipsum_max_par_number_int { 50 }
+\seq_new:N \g_zhlipsum_seq
+\seq_new:N \c_zhlipsum_simp_seq
+\seq_new:N \c_zhlipsum_trad_seq
+\seq_set_from_clist:Nn \c_zhlipsum_simp_seq { simp, zhufu, aspirin }
+\seq_set_from_clist:Nn \c_zhlipsum_trad_seq { trad, xiangyu, nanshanjing }
+\cs_generate_variant:Nn \file_input:n { x }
\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { Vn } { T, TF }
-\bool_lazy_any:nTF
+\prg_new_protected_conditional:Npnn \__zhlipsum_if_unicode_engine: { T, F, TF }
{
- { \sys_if_engine_xetex_p: }
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_uptex_p: }
+ \bool_lazy_any:nTF
+ {
+ { \sys_if_engine_xetex_p: }
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_uptex_p: }
+ }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\prg_new_protected_conditional:Npnn \__zhlipsum_if_encoding:n #1 { T, F, TF }
+ {
+ \tl_if_eq:VnTF \g__zhlipsum_encoding_tl {#1}
+ { \prg_return_true: } { \prg_return_false: }
}
- { \cs_new_eq:NN \__zhlipsum_if_unicode_engine:TF \use_i:nn }
- { \cs_new_eq:NN \__zhlipsum_if_unicode_engine:TF \use_ii:nn }
-\cs_new:Npn \__zhlipsum_input_def_file:n #1
- { \file_input:n { zhlipsum- #1 .def } }
-\cs_generate_variant:Nn \__zhlipsum_input_def_file:n { V }
+\cs_new:Npn \__zhlipsum_msg_new:nn { \msg_new:nnn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_error:n { \msg_error:nn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_error:nn { \msg_error:nnn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_warning:nn { \msg_warning:nnn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_warning:nnn { \msg_warning:nnnn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_warning:nxxx { \msg_warning:nnxxx { zhlipsum } }
+\cs_new:Npn \__zhlipsum_info:nn { \msg_info:nnn { zhlipsum } }
\cs_new_eq:NN \__zhlipsum_par: \tex_par:D
\keys_define:nn { zhlipsum / option }
{
- encoding .choice:,
- encoding / utf8 .code:n =
- { \tl_set:Nn \g__zhlipsum_encoding_tl { utf8 } },
- encoding / gbk .code:n =
- {
- \__zhlipsum_if_unicode_engine:TF
- {
- \tl_set:Nn \g__zhlipsum_encoding_tl { utf8 }
- \msg_warning:nnn { zhlipsum } { unicode-engine } { gbk }
- }
- { \tl_set:Nn \g__zhlipsum_encoding_tl { gbk } }
- },
- encoding / big5 .code:n =
+ encoding .choices:nn =
+ { utf8, gbk, big5 }
{
- \__zhlipsum_if_unicode_engine:TF
+ \tl_gset_eq:NN \g__zhlipsum_encoding_tl \l_keys_choice_tl
+ \__zhlipsum_if_unicode_engine:T
{
- \tl_set:Nn \g__zhlipsum_encoding_tl { utf8 }
- \msg_warning:nnn { zhlipsum } { unicode-engine } { big5 }
+ \__zhlipsum_if_encoding:nF { utf8 }
+ {
+ \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 }
+ \__zhlipsum_warning:nn { unicode-engine } {#1}
+ }
}
- { \tl_set:Nn \g__zhlipsum_encoding_tl { big5 } }
+ \__zhlipsum_if_ctex_valid_encoding:F
+ { \__zhlipsum_error:nn { ctex-invalid-encoding } {#1} }
},
encoding / unknown .code:n =
- { \msg_error:nnn { zhlipsum } { encoding-invalid } {#1} },
+ { \__zhlipsum_error:nn { invalid-encoding } {#1} },
encoding .value_required:n = true,
- encoding .initial:n = { utf8 },
- unknown .code:n =
- { \msg_error:nn { zhlipsum } { unknown-option } }
+ unknown .code:n = { \__zhlipsum_error:n { unknown-option } }
}
-\msg_new:nnn { zhlipsum } { unicode-engine }
+\__zhlipsum_msg_new:nn { unicode-engine }
{
You~ are~ now~ using~ Unicode~ engine~ \c_sys_engine_str. \\
Encoding~ "#1"~ is~ invalid.~ Changed~ into~ "utf8".
}
-\msg_new:nnn { zhlipsum } { encoding-invalid }
+\__zhlipsum_msg_new:nn { ctex-invalid-encoding }
+ {
+ Package~ option~ "encoding=#1"~ is~ in~ conflict~ with~ ctex's~
+ option~ "\tl_use:N \l__ctex_encoding_tl".\\\\
+ Please~ check~ the~ package~ options.
+ }
+\__zhlipsum_msg_new:nn { invalid-encoding }
{
Encoding~ "#1"~ is~ invalid. \\
Available~ encodings~ are~ "utf8",~ "gbk"~ and~ "big5".
}
-\msg_new:nnn { zhlipsum } { unknown-option }
+\__zhlipsum_msg_new:nn { unknown-option }
{ Package~ option~ "\l_keys_key_tl"~ is~ unknown. }
+\prg_new_protected_conditional:Npnn \__zhlipsum_if_ctex_valid_encoding: { F }
+ {
+ \tl_if_exist:NTF \l__ctex_encoding_tl
+ {
+ \tl_set:Nx \l__zhlipsum_tmpa_tl
+ { \str_lower_case:f { \l__ctex_encoding_tl } }
+ \str_if_eq:NNTF \g__zhlipsum_encoding_tl \l__zhlipsum_tmpa_tl
+ { \prg_return_true: } { \prg_return_false: }
+ }
+ { \prg_return_true: }
+ }
+\tl_if_exist:NTF \l__ctex_encoding_tl
+ {
+ \tl_if_eq:VnTF \l__ctex_encoding_tl { UTF8 }
+ { \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 } }
+ {
+ \tl_if_eq:VnT \l__ctex_encoding_tl { GBK }
+ { \tl_gset:Nn \g__zhlipsum_encoding_tl { gbk } }
+ }
+ }
+ { \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 } }
\ProcessKeysOptions { zhlipsum / option }
-\__zhlipsum_input_def_file:V \g__zhlipsum_encoding_tl
-\str_new:N \l__zhlipsum_script_str
+\tl_new:N \l__zhlipsum_name_tl
+\tl_new:N \l__zhlipsum_before_tl
+\tl_new:N \l__zhlipsum_after_tl
+\tl_new:N \l__zhlipsum_inter_tl
\keys_define:nn { zhlipsum }
{
- script .choice:,
- script / simp .code:n =
+ name .code:n =
{
- \str_set:Nn \l__zhlipsum_script_str { simp }
- \tl_if_eq:VnT \g__zhlipsum_encoding_tl { big5 }
+ \tl_set:Nn \l__zhlipsum_name_tl {#1}
+ \__zhlipsum_if_encoding:nT { big5 }
{
- \str_set:Nn \l__zhlipsum_script_str { trad }
- \msg_warning:nn { zhlipsum } { big5-require-trad }
+ \seq_if_in:NVT \c_zhlipsum_simp_seq \l__zhlipsum_name_tl
+ {
+ \__zhlipsum_warning:nn { big5-require-trad } {#1}
+ \tl_set:Nn \l__zhlipsum_name_tl { trad }
+ }
}
},
- script / trad .code:n =
- { \str_set:Nn \l__zhlipsum_script_str { trad } },
- script / unknown .code:n =
- { \msg_error:nnn { zhlipsum } { script-invalid } {#1} },
- script .value_required:n = true
- }
-\msg_new:nnn { zhlipsum } { big5-require-trad }
- {
- "script=simp"~ is~ not~ available~ in~ "BIG5"~ encoding.\\
- Changed~ into~ "script=trad".
+ script .code:n =
+ {
+ \__zhlipsum_warning:nn { deprecated-option }
+ { Option~ "name=#1"~ will~ be~ set. }
+ \keys_set:nn { zhlipsum } { name = #1 }
+ },
+ before .tl_set:N = \l__zhlipsum_before_tl,
+ after .tl_set:N = \l__zhlipsum_after_tl,
+ inter .tl_set:N = \l__zhlipsum_inter_tl
}
-\msg_new:nnn { zhlipsum } { script-invalid }
+\__zhlipsum_msg_new:nn { big5-require-trad }
{
- Script~ "#1"~ is~ unknown. \\
- Available~ scripts~ are~ "simp"~ and~ "trad".
+ Name~ "#1"~ is~ not~ available~ in~ "Big5"~ encoding. \\
+ Changed~ into~ "trad".
}
-\tl_if_eq:VnTF \g__zhlipsum_encoding_tl { big5 }
- { \keys_set:nn { zhlipsum } { script = trad } }
- { \keys_set:nn { zhlipsum } { script = simp } }
-\NewDocumentCommand \zhlipsum
- { s >{ \SplitArgument { 1 } { - } } O{ 1 - 3 } o }
+\__zhlipsum_msg_new:nn { deprecated-option }
+ { Option~ "\l_keys_key_tl"~ is~ deprecated. \\ #1 }
+\__zhlipsum_if_encoding:nTF { big5 }
+ { \keys_set:nn { zhlipsum } { name = trad } }
+ { \keys_set:nn { zhlipsum } { name = simp } }
+\NewDocumentCommand \zhlipsum { s G { 1 - 3 } +o }
{
\group_begin:
- \__zhlipsum_process_par_number:nn #2
- \IfValueT {#3} { \keys_set:nn { zhlipsum } {#3} }
- \__zhlipsum_par:
- \IfBooleanTF {#1}
- {
- \zhlipsum_print_multi_no_par:VVV
- \l__zhlipsum_begin_int
- \l__zhlipsum_step_int
- \l__zhlipsum_end_int
- \__zhlipsum_par:
- }
+ \IfBooleanF {#1}
{
- \zhlipsum_print_multi:VVV
- \l__zhlipsum_begin_int
- \l__zhlipsum_step_int
- \l__zhlipsum_end_int
+ \tl_set:Nn \l__zhlipsum_before_tl { \__zhlipsum_par: }
+ \tl_set:Nn \l__zhlipsum_after_tl { \__zhlipsum_par: }
+ \tl_set:Nn \l__zhlipsum_inter_tl { \__zhlipsum_par: }
}
+ \IfValueT {#3} { \keys_set:nn { zhlipsum } {#3} }
+ \zhlipsum_use:Vn \l__zhlipsum_name_tl {#2}
\group_end:
}
+\seq_new:N \l__zhlipsum_par_num_seq
+\cs_new_protected:Npn \zhlipsum_use:nn #1#2
+ {
+ \__zhlipsum_if_cjk_valid_encoding:TF
+ {
+ \zhlipsum_if_exist:nTF {#1}
+ {
+ \__zhlipsum_parse_par:nn {#1} {#2}
+ \seq_pop_right:NN \l__zhlipsum_par_num_seq \l__zhlipsum_tmpa_tl
+ \tl_use:N \l__zhlipsum_before_tl
+ \seq_map_inline:Nn \l__zhlipsum_par_num_seq
+ {
+ \__zhlipsum_use:nn {#1} {##1}
+ \tl_use:N \l__zhlipsum_inter_tl
+ }
+ \__zhlipsum_use:nn {#1} { \tl_use:N \l__zhlipsum_tmpa_tl }
+ \tl_use:N \l__zhlipsum_after_tl
+ }
+ { \__zhlipsum_error:nn { invalid-name } {#1} }
+ }
+ { \__zhlipsum_error:n { CJK-invalid-encoding } }
+ }
+\cs_generate_variant:Nn \zhlipsum_use:nn { Vn }
+\__zhlipsum_msg_new:nn { invalid-name }
+ {
+ Name~ "#1"~ is~ unknown. \\\\
+ Please~ use~ the~ pre-defined~ Chinese~ dummy~ texts~ or~
+ declare~ new~ one.
+ }
+\__zhlipsum_msg_new:nn { CJK-invalid-encoding }
+ {
+ The~ current~ CJK~ environment~ uses~ "\tl_use:N \CJK@@@enc"~
+ encoding,\\
+ but~ zhlipsum~ package~ has~ been~ loaded~ with~ the~ option~
+ "encoding=\tl_use:N \g__zhlipsum_encoding_tl".\\\\
+ Please~ check~ the~ package~ options.
+ }
+\prg_new_protected_conditional:Npnn \__zhlipsum_if_cjk_valid_encoding: { TF }
+ {
+ \tl_if_exist:NTF \CJK@@@enc
+ {
+ \tl_set:Nx \l__zhlipsum_tmpa_tl { \str_lower_case:f { \CJK@@@enc } }
+ \str_if_eq:NNTF \g__zhlipsum_encoding_tl \l__zhlipsum_tmpa_tl
+ { \prg_return_true: }
+ {
+ \__zhlipsum_if_encoding:nTF { gbk }
+ {
+ \str_if_eq:VnTF \l__zhlipsum_tmpa_tl { gb }
+ { \prg_return_true: } { \prg_return_false: }
+ }
+ {
+ \__zhlipsum_if_encoding:nTF { big5 }
+ {
+ \str_if_eq:VnTF \l__zhlipsum_tmpa_tl { bg5 }
+ { \prg_return_true: } { \prg_return_false: }
+ }
+ { \prg_return_false: }
+ }
+ }
+ }
+ { \prg_return_true: }
+ }
+\prg_new_protected_conditional:Npnn \zhlipsum_if_exist:n #1 { T, F, TF }
+ {
+ \seq_if_in:NnTF \g_zhlipsum_seq {#1}
+ { \prg_return_true: } { \prg_return_false: }
+ }
\int_new:N \l__zhlipsum_begin_int
\int_new:N \l__zhlipsum_end_int
-\int_new:N \l__zhlipsum_step_int
-\cs_new:Npn \__zhlipsum_process_par_number:nn #1#2
+\int_new:N \l__zhlipsum_max_int
+\bool_new:N \l__zhlipsum_modified_range_bool
+\bool_new:N \l__zhlipsum_invalid_range_bool
+\cs_new_protected:Npn \__zhlipsum_parse_par:nn #1#2
{
- \__zhlipsum_process_par_number_aux:Nn \l__zhlipsum_begin_int {#1}
- \IfNoValueTF {#2}
- { \int_set_eq:NN \l__zhlipsum_end_int \l__zhlipsum_begin_int }
- { \__zhlipsum_process_par_number_aux:Nn \l__zhlipsum_end_int {#2} }
- \int_compare:nTF
- { \l__zhlipsum_begin_int <= \l__zhlipsum_end_int }
- { \int_set_eq:NN \l__zhlipsum_step_int \c_one }
- { \int_set:Nn \l__zhlipsum_step_int { -1 } }
+ \seq_clear:N \l__zhlipsum_par_num_seq
+ \int_set_eq:Nc \l__zhlipsum_max_int { g__zhlipsum_ #1 _int }
+ \clist_map_inline:nn {#2}
+ {
+ \__zhlipsum_parse_par_aux:n {##1}
+ \bool_if:NTF \l__zhlipsum_invalid_range_bool
+ { \__zhlipsum_warning:nnn { invalid-range } {##1} {#2} }
+ {
+ \bool_if:NT \l__zhlipsum_modified_range_bool
+ {
+ \__zhlipsum_warning:nxxx { modified-range }
+ {##1} {#2} { \__zhlipsum_par_range: }
+ }
+ \seq_concat:NNN \l__zhlipsum_par_num_seq
+ \l__zhlipsum_par_num_seq \l__zhlipsum_tmpa_seq
+ }
+ }
}
-\cs_new:Npn \__zhlipsum_process_par_number_aux:Nn #1#2
+\cs_new_protected:Npn \__zhlipsum_parse_par_aux:n #1
{
- \int_compare:nTF { #2 <= \c__zhlipsum_max_par_number_int }
- { \int_set:Nn #1 {#2} }
- { \int_set_eq:NN #1 \c__zhlipsum_max_par_number_int }
+ \bool_set_false:N \l__zhlipsum_modified_range_bool
+ \bool_set_false:N \l__zhlipsum_invalid_range_bool
+ \seq_clear:N \l__zhlipsum_tmpa_seq
+ \tl_if_in:nnTF {#1} { - }
+ {
+ \seq_set_split:Nnn \l__zhlipsum_tmpb_seq { - } {#1}
+ \seq_pop_left:NN \l__zhlipsum_tmpb_seq \l__zhlipsum_tmpa_tl
+ \tl_if_empty:NTF \l__zhlipsum_tmpa_tl
+ { \int_set_eq:NN \l__zhlipsum_begin_int \c_one }
+ {
+ \int_set:Nn \l__zhlipsum_begin_int { \l__zhlipsum_tmpa_tl }
+ \int_compare:nNnT \l__zhlipsum_begin_int < \c_one
+ {
+ \int_set_eq:NN \l__zhlipsum_begin_int \c_one
+ \bool_set_true:N \l__zhlipsum_modified_range_bool
+ }
+ }
+ \seq_pop_left:NN \l__zhlipsum_tmpb_seq \l__zhlipsum_tmpa_tl
+ \tl_if_empty:NTF \l__zhlipsum_tmpa_tl
+ { \int_set_eq:NN \l__zhlipsum_end_int \l__zhlipsum_max_int }
+ {
+ \int_set:Nn \l__zhlipsum_end_int { \l__zhlipsum_tmpa_tl }
+ \int_compare:nNnT \l__zhlipsum_end_int > \l__zhlipsum_max_int
+ {
+ \int_set_eq:NN \l__zhlipsum_end_int \l__zhlipsum_max_int
+ \bool_set_true:N \l__zhlipsum_modified_range_bool
+ }
+ }
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn \l__zhlipsum_begin_int > \l__zhlipsum_max_int }
+ { \int_compare_p:nNn \l__zhlipsum_begin_int > \l__zhlipsum_end_int }
+ { \bool_set_true:N \l__zhlipsum_invalid_range_bool }
+ {
+ \int_step_inline:nnnn
+ { \l__zhlipsum_begin_int } { \c_one } { \l__zhlipsum_end_int }
+ { \seq_put_right:Nn \l__zhlipsum_tmpa_seq {##1} }
+ }
+ }
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn {#1} > { \l__zhlipsum_max_int } }
+ { \int_compare_p:nNn {#1} < { \c_one } }
+ { \bool_set_true:N \l__zhlipsum_invalid_range_bool }
+ { \seq_put_right:Nn \l__zhlipsum_tmpa_seq {#1} }
+ }
+ }
+\cs_new:Npn \__zhlipsum_par_range:
+ {
+ \int_compare:nNnTF \l__zhlipsum_begin_int = \l__zhlipsum_end_int
+ { \int_use:N \l__zhlipsum_begin_int }
+ { \int_use:N \l__zhlipsum_begin_int - \int_use:N \l__zhlipsum_end_int }
+ }
+\__zhlipsum_msg_new:nn { modified-range }
+ {
+ Your~ required~ range~ "#1"~ in~ "#2"~ will~ be~ modified. \\
+ Changed~ into~ "#3".
+ }
+\__zhlipsum_msg_new:nn { invalid-range }
+ {
+ Your~ required~ range~ "#1"~ in~ "#2"~ is~ invalid. \\
+ Nothing~ will~ be~ output.
+ }
+\cs_new_protected:Npn \__zhlipsum_use:nn #1#2
+ { \tl_use:c { c__zhlipsum_ #1 @ #2 _tl } }
+\NewDocumentCommand \newzhlipsum { m m }
+ { \zhlipsum_new:nn {#1} {#2} }
+\cs_new_protected:Npn \zhlipsum_new:nn #1#2
+ {
+ \zhlipsum_if_exist:nTF {#1}
+ { \__zhlipsum_error:nn { already-defined } {#1} }
+ {
+ \seq_gput_left:Nn \g_zhlipsum_seq {#1}
+ \int_new:c { g__zhlipsum_ #1 _int }
+ \clist_map_inline:nn {#2} { \__zhlipsum_new:nn {#1} {##1} }
+ \__zhlipsum_info:nn { defining-text } {#1}
+ }
}
-\cs_new:Npn \zhlipsum_print_multi:nnn #1#2#3
+\__zhlipsum_msg_new:nn { already-defined }
{
- \int_step_inline:nnnn {#1} {#2} {#3}
- { \__zhlipsum_print_single:n {##1} \__zhlipsum_par: }
+ Chinese~ dummy~ text~ "#1"~ has~ been~ used.~
+ Please~ use~ another~ name.
}
-\cs_generate_variant:Nn \zhlipsum_print_multi:nnn { VVV }
-\cs_new:Npn \zhlipsum_print_multi_no_par:nnn #1#2#3
+\__zhlipsum_msg_new:nn { defining-text }
{
- \int_step_inline:nnnn {#1} {#2} {#3}
- { \__zhlipsum_print_single:n {##1} }
+ Chinese~ dummy~ text~ "#1"~ is~ created.~
+ It~ has~ \int_use:c { g__zhlipsum_ #1 _int }~ paragraphs.
}
-\cs_generate_variant:Nn \zhlipsum_print_multi_no_par:nnn { VVV }
-\cs_new:Npn \__zhlipsum_print_single:n #1
+\cs_new_protected:Npn \__zhlipsum_new:nn #1#2
{
- \str_set:Nx \l__zhlipsum_tmpa_str { \int_to_roman:n {#1} }
- \str_put_left:Nx \l__zhlipsum_tmpa_str
- { c__zhlipsum_text_ \l__zhlipsum_script_str _ }
- \str_put_right:Nn \l__zhlipsum_tmpa_str { _tl }
- \use:c { \str_use:N \l__zhlipsum_tmpa_str }
+ \int_gincr:c { g__zhlipsum_ #1 _int }
+ \tl_const:cn
+ { c__zhlipsum_ #1 @ \int_use:c { g__zhlipsum_ #1 _int } _tl } {#2}
}
+\file_input:x { zhlipsum- \g__zhlipsum_encoding_tl .def }
\endinput
%%
%% End of file `zhlipsum.sty'.