diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/easybook/easybase.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/easybook/easybase.sty | 127 |
1 files changed, 83 insertions, 44 deletions
diff --git a/Master/texmf-dist/tex/latex/easybook/easybase.sty b/Master/texmf-dist/tex/latex/easybook/easybase.sty index c87c08f88d6..24c225b1d39 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybase.sty +++ b/Master/texmf-dist/tex/latex/easybook/easybase.sty @@ -20,7 +20,7 @@ %% This work has the LPPL maintenance status `maintained'. \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/06/18}{2024cf} +\ProvidesExplPackage{easybase}{2024/07/09}{2024cp} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -102,7 +102,7 @@ } } \providecommand{\NewHookWithArguments}[2]{} -\ProvideDocumentCommand{\AddToHookWithArguments}{mom}{} +\ProvideDocumentCommand{\AddToHookWithArguments}{mo+m}{} \bool_set_true:N \l__eb_class_mode_book_bool \bool_set_false:N \l__eb_compile_draft_bool @@ -176,7 +176,7 @@ \ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} } \cs_new_protected:cpn { eb#1set } ##1 { \ctex_set:nn {#1} {##1} } } -\RenewDocumentCommand{\ctexset}{om} +\RenewDocumentCommand{\ctexset}{o+m} { \IfValueTF{#1} {\ctex_set:nn {#1} {#2}} @@ -743,7 +743,7 @@ { \noindent \clist_if_in:NnT \l__eb_footnote_value_clist { flush } - { \dim_zero:N \fnfirstindent } + { \tl_set:Nn \fnfirstindent { 0pt } } \int_case:nn { \dim_sign:V \fnfirstindent } { { 1 } { \use_i:nnn } @@ -1035,7 +1035,7 @@ { \IfBooleanTF{##1} { - \use:c {#1}*{\phantomsection ##3} + \use:c {#1}*{##3} \CTEX@addtocline{#1}{##2} \tl_if_empty:oF {##4} { \CTEX@addbitocline{#1}{##4} } \use:c { #1mark }{##2} @@ -1103,6 +1103,7 @@ \bool_if:cTF { CTEX@#2@numbering } { \CTEX@ifnametrue } { \CTEX@ifnamefalse } + \CTEX@makeanchor{#2*} \addcontentsline{#1}{#2}{\use:c { CTEX@#2@tocline }{#2}{##1}} } } @@ -1141,47 +1142,73 @@ \bool_new:N \l__eb_toc_notitle_bool \newbool{bitoc} \cs_new:Npn \ebifbitoc { \ifbool{bitoc} } +\seq_new:N \l__eb_level_tmpa_seq +\tl_new:N \l__eb_level_tmpa_tl +\cs_generate_variant:Nn \regex_extract_all:nnN { no } +\cs_generate_variant:Nn \keys_define:nn { nx } +\cs_generate_variant:Nn \ctex_set:nn { ox } +\cs_new_protected:Npn \eb_toc_extract_level: + { + \regex_extract_all:noN { \cC. } { \eb@toc@title@level } + \l__eb_level_tmpa_seq + \seq_get_right:NN \l__eb_level_tmpa_seq \l__eb_level_tmpa_tl + \tl_set:Nx \l__eb_level_tmpa_tl + { + \exp_last_unbraced:No + \cs_to_str:N { \l__eb_level_tmpa_tl } + } + \regex_replace_case_once:nN + { + { ^bi(.*) } { \1 } + { .* } { \0 } + } + \l__eb_level_tmpa_tl + } \keys_define:nn { eb/tocouter } { - level .tl_set:N = \eb@toc@title@level, - level .initial:n = + level .code:n = + { + \tl_set:Nn \eb@toc@title@level {#1} + \eb_toc_extract_level: + }, + level .initial:e = { \bool_if:NTF \l__eb_class_mode_book_bool - { \bichapter* } - { \bisection* } + { \exp_not:N \bichapter* } + { \exp_not:N \bisection* } }, - section .meta:n = { level = \bisection* }, - chapter .meta:n = { level = \bichapter* }, - none .code:n = + section .meta:n = { level = \bisection* }, + chapter .meta:n = { level = \bichapter* }, + none .code:n = { \tl_set:Nn \eb@toc@title@level { \par\use_none:nn } \bool_set_true:N \l__eb_toc_notitle_bool }, - multoc .int_set:N = \l__eb_toc_columns_int, - multoc .default:n = 2, - multoc .initial:n = 1, + multoc .int_set:N = \l__eb_toc_columns_int, + multoc .default:n = 2, + multoc .initial:n = 1, plan .choice:, plan .value_required:n = true, - plan/cn .code:n = + plan/cn .code:n = { \bool_set_true:N \l__eb_toc_plan_cn_bool \bool_set_false:N \l__eb_toc_plan_bi_bool }, - plan/bi .code:n = + plan/bi .code:n = { \bool_set_false:N \l__eb_toc_plan_cn_bool \bool_set_true:N \l__eb_toc_plan_bi_bool }, - plan/both .code:n = + plan/both .code:n = { \bool_set_true:N \l__eb_toc_plan_cn_bool \bool_set_true:N \l__eb_toc_plan_bi_bool }, - plan .initial:n = cn, - columns .meta:n = { multoc = {#1} }, - title .code:n = \eb_assign_toc_title:n {#1}, - bilist .code:n = + plan .initial:n = cn, + columns .meta:n = { multoc = {#1} }, + title .code:n = \eb_assign_toc_title:n {#1}, + bilist .code:n = { \tl_gset:Nn \g__eb_bilist_permute_value_tl {#1} \str_if_eq:nnTF {#1} { mix } @@ -1199,12 +1226,16 @@ } } }, - name .tl_set:N = \l__eb_print_index_name_tl, - name .initial:n = \imki@jobname + name .tl_set:N = \l__eb_print_index_name_tl, + name .initial:n = \imki@jobname, + unknown .code:n = + { + \ctex_set:ox { \l__eb_level_tmpa_tl } + { \eb_unknown_kv_handle: } + }, + unknown .default:V = \c_novalue_tl } -\bool_if:NTF \l__eb_class_mode_book_bool - { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/chapter } } - { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/section } } + \NewDocumentCommand{\eb_assign_toc_title:n} {>{\SplitArgument{1}{,}}m} {\eb_toc_assign_title_judge:nn #1} @@ -1260,7 +1291,7 @@ } \cs_new_protected:Npn \DeclareFloatList #1#2 { - \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o} + \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st++o} {\eb_toc_list_struct_parse:nnnnn {##1} {##2} {##3} {#1} {#2}} \ctex_define:n { @@ -1290,7 +1321,7 @@ bicontentsname .tl_set:N = \bicontentsname, bicontentsname .initial:n = Contents } -\RenewDocumentCommand{\tableofcontents}{st+oD(){}} +\RenewDocumentCommand{\tableofcontents}{st++o+D(){}} { \group_begin: \tl_set_eq:NN \eb@toc@title \contentsname @@ -1377,7 +1408,7 @@ { tocformat = \IfBooleanT{#1}{\contentsmargin{0pt}}, tocindent = 0pt, - tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\tocrule{$\cdot$}}, + tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\cdottocrule}, toclabel = { \bool_if:NTF \l__eb_toc_entry_hang_bool @@ -1448,7 +1479,7 @@ \eb@register@every@toc@option } \RegisterEveryTocOption{tocafter,tocindent,tocrule} -\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}} +\NewDocumentCommand{\tocrule}{st-O{0.6pc}d()mO{}} { \normalsize\normalfont \ttl@row@i[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6 @@ -1465,6 +1496,7 @@ } } } +\cs_set:Npn \cdottocrule { \tocrule{\textperiodcentered} } \ctex_define:nn { toc } { lolskip .skip_set:N = \eb@toc@lol@skip, @@ -1491,8 +1523,7 @@ { \tl_if_exist:cF { tf@#1 } { \iow_new:c { tf@#1 }\iow_open:cn { tf@#1 } { \jobname.#1 } } - } - {} + }{} } \cs_set_eq:NN \eb@starttoc \@starttoc \cs_set:Npn \@starttoc #1 @@ -1515,9 +1546,18 @@ } \cs_set_protected:Npn \AllotPartialExt #1#2 { - \tl_set:cn { ttl@partial#1 } {#2} - \AddToHookWithArguments{cmd/ttl@writepartial/before} - {\ttl@topartial{#1}{##1}{##2}} + \tl_if_exist:cTF { ttl@partial#1 } + { \msg_warning:nnnn { easybase } { repeated-ptoc } {#1} {#2} } + { + \tl_set:cn { ttl@partial#1 } {#2} + \AddToHookWithArguments{cmd/ttl@writepartial/before}[ttl/#1] + {\ttl@topartial{#1}{##1}{##2}} + } + } +\msg_new:nnn { easybase } { repeated-ptoc } + { + Local~directory~file~'#2'~of~directory~type~'#1'~is \\ + repeatedly~allocated. } \AllotPartialExt{lol}{pll} @@ -1543,16 +1583,15 @@ } \RegisterTitleIfname{toc} -\cs_set_eq:NN \eb@ctexsetii \ctex_set:nn \cs_new_protected:Npn \SetTocStyle #1#2#3 { \cs_set_protected:cpn { eb@toc@style@set@#1@#2 } - { \eb@ctexsetii{#1}{#3} } + { \ctex_set:nn {#1} {#3} } } \cs_new_protected:Npn \UseTocStyle #1#2#3 { \cs_if_exist:cTF { eb@toc@style@set@#1@#2 } - { \addtocontents{#3}{\@nameuse{eb@toc@style@set@#1@#2}} } + { \addtocontents{#3}{\string\csuse{eb@toc@style@set@#1@#2}} } { \msg_warning:nnnn { easybase } { undefined-toc-style } {#2} {#1} } } \msg_new:nnn { easybase } { undefined-toc-style } @@ -1571,7 +1610,7 @@ { tocformat = \addvspace{1pc}\sffamily, tocindent = 0pt, - tocrule = \tocrule{$\cdot$}[\bfseries], + tocrule = \cdottocrule[\bfseries], tocline = \CTEXnumberline{#1}#2 }, section = @@ -1581,8 +1620,8 @@ tocrule = { \bool_if:NTF \l__eb_class_mode_book_bool - { \tocrule{$\cdot$} } - { \tocrule{$\cdot$}[\bfseries] } + { \cdottocrule } + { \cdottocrule[\bfseries] } } }, subsection = @@ -1929,9 +1968,9 @@ \RequirePackage{amsthm,thmtools} \cs_set_eq:NN \eb@declaretheoremstyle@save \declaretheoremstyle \cs_set_eq:NN \eb@declaretheorem@save \declaretheorem - \RenewDocumentCommand{\declaretheoremstyle}{O{}mO{}} + \RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}} {\eb@declaretheoremstyle@save[#1,#3]{#2}} - \RenewDocumentCommand{\declaretheorem}{O{}mO{}} + \RenewDocumentCommand{\declaretheorem}{+O{}m+O{}} { \eb@declaretheorem@save[style = default,#1,#3]{#2} \settheoremtocline{#2} |