summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/easybook
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-03-10 03:04:28 +0000
committerNorbert Preining <norbert@preining.info>2022-03-10 03:04:28 +0000
commit6367aa11ef0b99d86693b685ab67096514792a0f (patch)
treef7e17e755539c272449d20b5b6c8c5917c4c40e8 /macros/latex/contrib/easybook
parentb23d702a4a177c6d047cd03020e5a0fb7effd88a (diff)
CTAN sync 202203100304
Diffstat (limited to 'macros/latex/contrib/easybook')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx475
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin586959 -> 592701 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex62
3 files changed, 275 insertions, 262 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 54cc922175..660f3e6375 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2022/03/08}{1.642}
+\ProvidesExplClass{easybook}{2022/03/08}{1.643}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -303,7 +303,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2022/03/08}{1.642}
+\ProvidesExplPackage{easybase}{2022/03/08}{1.643}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -447,18 +447,21 @@
}
}
-\eb_seq_map_inline:nn
+\seq_set_from_clist:Nn \l__eb_module_paths_seq
{
style,subfont,spread,
- refset,bibset,thmset,
- geoset,hdrset,tocset,list
+ bibset,thmset,tocset,
+ hdrset,refset,geoset,float
}
+\seq_map_inline:Nn \l__eb_module_paths_seq
{
\ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} }
\cs_new_protected:cpn { eb#1 } ##1 { \ctex_set:nn {#1} {##1} }
}
-\eb_seq_map_inline:nn
- { style,subfont,spread,bibset,thmset,hdrset,tocset }
+\bool_until_do:nn
+ { \int_compare_p:nNn { \seq_count:N \l__eb_module_paths_seq } < { 8 } }
+ { \seq_pop_right:NN \l__eb_module_paths_seq \l_tmpa_tl }
+\seq_map_inline:Nn \l__eb_module_paths_seq
{
\msg_new:nnn { easybase } { deprecated-#1 }
{
@@ -1196,193 +1199,6 @@
\cs_new:Npn \eb@footmisc@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi }
\cs_set:Npn \thempfootnote { \int_to_alph:n { \c@mpfootnote } }
-\contentsuse{lstlisting}{lol}
-\seq_put_left:Nn \c__ctex_headings_seq { chapter }
-\seq_put_right:Nn \c__ctex_headings_seq { figure }
-\seq_put_right:Nn \c__ctex_headings_seq { table }
-\seq_put_right:Nn \c__ctex_headings_seq { lstlisting }
-\seq_remove_duplicates:N \c__ctex_headings_seq
-\ctex_define:n { lstlisting/#1 .meta:nn = { ctex/#1 } {##1} }
-\ctex_define:n { figure/#1 .meta:nn = { ctex/#1 } {##1} }
-\ctex_define:n { table/#1 .meta:nn = { ctex/#1 } {##1} }
-\ctex_define:n { list/#1 .meta:nn = { ctex/#1 } {##1} }
-\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1
- {
- \bool_if:NTF \l__eb_toc_entry_hang_bool
- { \contentspush }
- { \use:n }
- {
- \bool_if:NTF \l__eb_toc_number_color_bool
- { \textcolor{ctex@toc@number} }
- { \use:n }
- { \thecontentslabel }
- \tl_use:c { l__eb_toc_#1_after_tl }
- }
- }
-\cs_new_protected:Npn \RegisterTocName #1
- {
- \ctex_define:n
- {
- #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl,
- #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1},
- #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1},
- #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim,
- #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl,
- #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl,
- #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl
- }
- \titlecontents{#1}
- [\dim_use:c { l__eb_toc_#1_indent_dim }]
- {\tl_use:c { l__eb_toc_#1_format_tl }}
- {\eb_toc_entry_if_hang:n {#1}}{}
- {\tl_use:c { l__eb_toc_#1_rule_tl }}
- [\tl_use:c { l__eb_toc_#1_below_tl }]
- }
-\seq_map_function:NN
-\c__ctex_headings_seq \RegisterTocName
-\eb_seq_map_inline:nn
- { figure,table,lstlisting }
- {
- \ctex_define:n
- {
- #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl,
- #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2,
- }
- }
-\eb_seq_map_inline:nn
- {
- tocformat,tocformat+,tocformat~+,
- tocindent,tocrule,tocline,tocafter,between
- }
- {
- \ctex_define:n
- {
- list/#1 .meta:n =
- {
- figure/#1 = ##1,table/#1 = ##1,
- lstlisting/#1 = ##1
- }
- }
- }
-\eb_seq_map_inline:nn
- { tocafter,tocindent,tocrule }
- {
- \ctex_define:nn { tocset }
- {
- #1-every .code:n =
- {
- \ctex_set:n
- {
- part/#1 = ##1,chapter/#1 = ##1,
- section/#1 = ##1,subsection/#1 = ##1,
- list/#1 = ##1
- }
- }
- }
- }
-
-\ctex_define:nn { tocset }
- {
- lolskip .skip_set:N = \eb@toc@lol@skip,
- lolskip .initial:n = 10pt,
- between .tl_set:N = \l__eb_toc_main_between_hook_tl,
- between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
- bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl,
- bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
- dotalign .bool_set:N = \l__eb_toc_dot_align_bool,
- dotalign .default:n = true,
- dotalign .initial:n = true,
- hang .bool_set:N = \l__eb_toc_entry_hang_bool,
- hang .default:n = true,
- hang .initial:n = true,
- pagenumwd .code:n = \contentsmargin{#1},
- pagenumwd .initial:n = 1.55em,
- unknown .code:n = \eb_msg_deprecated_option:n { tocset }
- }
-\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}}
- {
- \normalsize\normalfont
- \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6
- \bgroup
- \IfBooleanF{#2}
- {
- \IfBooleanTF{#1}
- {\thecontentspage}
- {
- \bool_if:NTF \l__eb_toc_dot_align_bool
- { \contentspage }
- { \thecontentspage }
- }
- }
- \egroup
- }
-\cs_new:Npn \p@numberline { \protect\numberline }
-\cs_new:Npn \listnumberline #1
- { \p@numberline{\use:c { #1name }~\use:c { the#1 }} }
-\ctex_set:n
- {
- part =
- {
- tocformat = \addvspace{1pc}\sffamily\large,
- tocindent = 0em,
- tocrule = \tocrule{}[\bfseries],
- tocline = \CTEXnumberline{#1}#2
- },
- chapter =
- {
- tocformat = \addvspace{1pc}\sffamily,
- tocindent = 0em,
- tocrule = \tocrule{$\cdot$}[\bfseries],
- tocline = \CTEXnumberline{#1}#2
- },
- section =
- {
- tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily },
- tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em },
- tocrule =
- {
- \bool_if:NTF \l__eb_class_mode_book_bool
- { \tocrule{$\cdot$} }
- { \tocrule{$\cdot$}[\bfseries] }
- }
- },
- subsection =
- {
- tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em },
- tocrule = \tocrule{$\cdot$}
- },
- list =
- {
- tocindent = 0em,
- tocrule = \tocrule{$\cdot$},
- between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} }
- },
- table/tocline = \listnumberline{table}#2,
- figure/tocline = \listnumberline{figure}#2,
- lstlisting/tocline = \listnumberline{lstlisting}#2,
- tocset/tocafter-every = \hspace{1em}
- }
-\prop_new:N \l__eb_list_label_entry_prop
-\prop_set_from_keyval:Nn \l__eb_list_label_entry_prop
- {
- figure = \eb@tocline@figure,
- table = \eb@tocline@table
- }
-\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4
- {
- \addcontentsline{#1}{#2}
- {\prop_item:Nn \l__eb_list_label_entry_prop {#2}{#3}{#4}}
- }
-\ctex_patch_cmd:Nnn \lst@MakeCaption
- {
- \addcontentsline{lol}{lstlisting}
- {\protect\numberline{\thelstlisting}\lst@@caption}
- }
- {
- \addcontentsline{lol}{lstlisting}
- {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}}
- }
-
\newcounter{bichapter}
\newcounter{bisection}[bichapter]
\newcounter{bisubsection}[bisection]
@@ -1394,14 +1210,13 @@
\use:c { p@#1 } { the#1 }
}
}
-\NewDocumentCommand{\counteruse}{soD(){arabic}mO{.}d()}
+\NewDocumentCommand{\counteruse}{sO{arabic}D(){.}mod()}
{
\IfBooleanF{#1}{\stepcounter{#4}}
- \IfValueT{#6}{\setcounter{#4}{#6}}
\tl_set:cn { theeb@#4 }
{
- \IfValueT{#2}{\use:c { the#2 }#5}
- \use:c {#3}{#4}
+ \IfValueT{#5}{\use:c { the#5 }#3}
+ \use:c {#2}{#4}
}
\tl_use:c { theeb@#4 }
\eb_current_label:n { eb@#4 }
@@ -1415,7 +1230,6 @@
\cs_set:Npn \thebisection { \eb_section_counter_prefix:n { bi } }
\cs_set:Npn \thebisubsection { \thebisection.\@arabic\c@bisubsection }
\cs_set:Npn \thesection { \eb_section_counter_prefix:n { } }
-
\contentsuse{}{tec}
\tl_new:N \eb@before@addbitoc@hook
\NewDocumentCommand{\BeforeAddBitoc}{sm}
@@ -1491,7 +1305,7 @@
}
\tl_new:N \eb@bitoc@title
-\keys_define:nn { eb/listoc }
+\keys_define:nn { eb/floattoc }
{
level .tl_set:N = \eb@toc@title@level,
level .initial:n =
@@ -1526,11 +1340,13 @@
plan .initial:n = cn,
columns .meta:n = { multoc = #1 },
title .code:n = \eb_assign_toc_title:n {#1},
- bilist .tl_gset:N = \g__eb_bilist_permute_value_tl
+ bilist .tl_gset:N = \g__eb_bilist_permute_value_tl,
+ name .tl_set:N = \l__eb_print_index_name_tl,
+ name .initial:n = \imki@jobname
}
\bool_if:NTF \l__eb_class_mode_book_bool
- { \keys_define:nn { } { eb/listoc .inherit:n = ctex/chapter } }
- { \keys_define:nn { } { eb/listoc .inherit:n = ctex/section } }
+ { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/chapter } }
+ { \keys_define:nn { } { eb/floattoc .inherit:n = ctex/section } }
\NewDocumentCommand{\eb_assign_toc_title:n}
{>{\SplitArgument{1}{,}}m}
{\eb_assign_toc_title_judge:nn #1}
@@ -1541,13 +1357,7 @@
{ \tl_clear:N \eb@bitoc@title }
{ \tl_set:Nn \eb@bitoc@title {#2} }
}
-\cs_new_protected:Npn \eb_biber_toc_title:n #1
- {
- \bool_if:NTF \l__eb_class_mode_book_bool
- { \bichapter*{#1}{\eb@bib@bitoc@title} }
- { \bisection*{#1}{\eb@bib@bitoc@title} }
- \sectionmark{#1}
- }
+\prop_new:N \l__eb_toc_float_label_prop
\cs_new_protected:Npn \eb_toc_start_multi_column_ext:n #1
{
\int_compare:nNnTF { \l__eb_toc_columns_int } > { 1 }
@@ -1568,29 +1378,60 @@
\IfBooleanF{#1}
{\eb@toc@title@level{\eb@toc@title}{\eb@bitoc@title}}
}
-\cs_new_protected:Npn \eb_toc_list_parse:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \eb_toc_float_list_parse:nnnnn #1#2#3#4#5
{
\group_begin:
\tl_set_eq:Nc \eb@toc@title { list#4name }
- \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
+ \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}}
\eb_toc_title_level_cmd:n {#1}
\eb_toc_if_title_between_hook:nn {#1} {#4}
\eb_toc_start_multi_column_ext:n {#5}
\group_end:
}
-\cs_new_protected:Npn \eb_list_content_cmd_set:nn #1#2
+\cs_new:Npn \listnumberline #1
+ {
+ \protect\numberline
+ {
+ \exp_args:Nnv
+ \use:c { p@#1 } { the#1 }
+ }
+ }
+\cs_new_protected:Npn \DeclareFloatList #1#2
{
\exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o}
- {\eb_toc_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}}
+ {\eb_toc_float_list_parse:nnnnn {##1} {##2} {##3} {#1} {#2}}
+ \ctex_define:n
+ {
+ #1/##1 .meta:nn = { ctex/##1 } {####1},
+ #1/between .tl_set:c = l__eb_toc_#1_between_hook_tl,
+ #1/tocline .cs_set:cp = { eb@tocline@#1 } ##1##2,
+ #1/tocline .initial:n = \listnumberline{#1}##2
+ }
+ \prop_put_from_keyval:Nn \l__eb_toc_float_label_prop
+ { #1 = \use:c { eb@tocline@#1 } }
}
-\eb_seq_map_inline:nn
+\DeclareFloatList{table}{lot}
+\DeclareFloatList{figure}{lof}
+\DeclareFloatList{lstlisting}{lol}
+\cs_gset:Npn \caption@@@addcontentsline #1#2#3#4
{
- { figure } { lof },
- { table } { lot },
- { lstlisting } { lol }
+ \addcontentsline{#1}{#2}
+ {
+ \prop_if_in:NnTF \l__eb_toc_float_label_prop {#2}
+ { \prop_item:Nn \l__eb_toc_float_label_prop {#2} }
+ { \protect\numberline }
+ {#3}{#4}
+ }
+ }
+\ctex_patch_cmd:Nnn \lst@MakeCaption
+ {
+ \addcontentsline{lol}{lstlisting}
+ {\protect\numberline{\thelstlisting}\lst@@caption}
+ }
+ {
+ \addcontentsline{lol}{lstlisting}
+ {\eb@tocline@lstlisting{\thelstlisting}{\lst@@caption}}
}
- { \eb_list_content_cmd_set:nn #1 }
-\cs_set_eq:NN \listoflistings \listoflstlistings
\ctex_define:n
{
bicontentsname .tl_set:N = \bicontentsname,
@@ -1607,7 +1448,7 @@
{ \chapter* }
{ \section* }
}
- \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
+ \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}}
\bool_if:NT \l__eb_toc_plan_cn_bool
{
\IfBooleanF{#1}{\eb@toc@title@level{\eb@toc@title}{}}
@@ -1623,22 +1464,169 @@
\group_end:
}
+\contentsuse{lstlisting}{lol}
+\seq_put_left:Nn \c__ctex_headings_seq { chapter }
+\seq_put_right:Nn \c__ctex_headings_seq { table }
+\seq_put_right:Nn \c__ctex_headings_seq { figure }
+\seq_put_right:Nn \c__ctex_headings_seq { lstlisting }
+\seq_remove_duplicates:N \c__ctex_headings_seq
+\cs_new_protected:Npn \eb_toc_entry_if_hang:n #1
+ {
+ \bool_if:NTF \l__eb_toc_entry_hang_bool
+ { \contentspush }
+ { \use:n }
+ {
+ \bool_if:NTF \l__eb_toc_number_color_bool
+ { \textcolor{ctex@toc@number} }
+ { \use:n }
+ { \thecontentslabel }
+ \tl_use:c { l__eb_toc_#1_after_tl }
+ }
+ }
+\cs_new_protected:Npn \RegisterTocName #1
+ {
+ \ctex_define:n
+ {
+ #1/tocformat .tl_set:c = l__eb_toc_#1_format_tl,
+ #1/tocformat+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1},
+ #1/tocformat~+ .code:n = \tl_put_right:cn { l__eb_toc_#1_format_tl } {##1},
+ #1/tocindent .dim_set:c = l__eb_toc_#1_indent_dim,
+ #1/tocrule .tl_set:c = l__eb_toc_#1_rule_tl,
+ #1/tocafter .tl_set:c = l__eb_toc_#1_after_tl,
+ #1/tocbelow .tl_set:c = l__eb_toc_#1_below_tl
+ }
+ \titlecontents{#1}
+ [\dim_use:c { l__eb_toc_#1_indent_dim }]
+ {\tl_use:c { l__eb_toc_#1_format_tl }}
+ {\eb_toc_entry_if_hang:n {#1}}{}
+ {\tl_use:c { l__eb_toc_#1_rule_tl }}
+ [\tl_use:c { l__eb_toc_#1_below_tl }]
+ }
+\seq_map_function:NN
+\c__ctex_headings_seq \RegisterTocName
+\eb_seq_map_inline:nn
+ {
+ tocformat,tocformat+,tocformat~+,
+ tocindent,tocrule,tocline,tocafter,between
+ }
+ {
+ \ctex_define:n
+ {
+ float/#1 .meta:n =
+ {
+ figure/#1 = ##1,table/#1 = ##1,
+ lstlisting/#1 = ##1
+ }
+ }
+ }
+\eb_seq_map_inline:nn
+ { tocafter,tocindent,tocrule }
+ {
+ \ctex_define:nn { tocset }
+ {
+ #1-every .code:n =
+ {
+ \ctex_set:n
+ {
+ part/#1 = ##1,chapter/#1 = ##1,
+ section/#1 = ##1,subsection/#1 = ##1,
+ float/#1 = ##1
+ }
+ }
+ }
+ }
+\ctex_define:nn { tocset }
+ {
+ lolskip .skip_set:N = \eb@toc@lol@skip,
+ lolskip .initial:n = 10pt,
+ between .tl_set:N = \l__eb_toc_main_between_hook_tl,
+ between .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
+ bibetween .tl_set:N = \l__eb_toc_bimain_between_hook_tl,
+ bibetween .initial:n = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-1pc} },
+ dotalign .bool_set:N = \l__eb_toc_dot_align_bool,
+ dotalign .default:n = true,
+ dotalign .initial:n = true,
+ hang .bool_set:N = \l__eb_toc_entry_hang_bool,
+ hang .default:n = true,
+ hang .initial:n = true,
+ pagenumwd .code:n = \contentsmargin{#1},
+ pagenumwd .initial:n = 1.55em,
+ unknown .code:n = \eb_msg_deprecated_option:n { tocset }
+ }
+\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}}
+ {
+ \normalsize\normalfont
+ \titlerule*[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6
+ \bgroup
+ \IfBooleanF{#2}
+ {
+ \IfBooleanTF{#1}
+ {\thecontentspage}
+ {
+ \bool_if:NTF \l__eb_toc_dot_align_bool
+ { \contentspage }
+ { \thecontentspage }
+ }
+ }
+ \egroup
+ }
+\ctex_set:n
+ {
+ part =
+ {
+ tocformat = \addvspace{1pc}\sffamily\large,
+ tocindent = 0em,
+ tocrule = \tocrule{}[\bfseries],
+ tocline = \CTEXnumberline{#1}#2
+ },
+ chapter =
+ {
+ tocformat = \addvspace{1pc}\sffamily,
+ tocindent = 0em,
+ tocrule = \tocrule{$\cdot$}[\bfseries],
+ tocline = \CTEXnumberline{#1}#2
+ },
+ section =
+ {
+ tocformat = \bool_if:NF \l__eb_class_mode_book_bool { \sffamily },
+ tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 1.5em } { 0em },
+ tocrule =
+ {
+ \bool_if:NTF \l__eb_class_mode_book_bool
+ { \tocrule{$\cdot$} }
+ { \tocrule{$\cdot$}[\bfseries] }
+ }
+ },
+ subsection =
+ {
+ tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em },
+ tocrule = \tocrule{$\cdot$}
+ },
+ float =
+ {
+ tocindent = 0em,
+ tocrule = \tocrule{$\cdot$},
+ between = \bool_if:NT \l__eb_class_mode_book_bool { \vspace*{-10pt} }
+ },
+ tocset/tocafter-every = \hspace{1em}
+ }
+
\ctex_at_end_package:nn { imakeidx }
{
\makeindex
- \RenewDocumentCommand{\printindex}{st+oD(){\imki@jobname}}
+ \RenewDocumentCommand{\printindex}{st+od()}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \indexname
\cs_set_eq:NN \imki@indexlevel \use_none:n
\setkeys{imkiindex}{noclearpage}
- \IfValueT{#3}{\keys_set:nn { eb/listoc } {#3}}
+ \IfValueT{#3}{\keys_set:nn { eb/floattoc } {#3}}
\cs_set_protected:Npn \imki@indexheaders
{
\eb_toc_title_level_cmd:n {#1}
\cs_set_eq:NN \thispagestyle \use_none:n
}
- \imki@putindex{#4}
+ \imki@putindex{\l__eb_print_index_name_tl}
\group_end:
}
}
@@ -1690,9 +1678,9 @@
\ctex_define:nn { subfont }
{
- caption-table .tl_set:N = \l__eb_subfont_cap_table_tl,
- caption-figure .tl_set:N = \l__eb_subfont_cap_figure_tl,
- caption-listing .tl_set:N = \l__eb_subfont_cap_listing_tl,
+ caption-table .tl_set:N = \l__eb_subfont_caption_table_tl,
+ caption-figure .tl_set:N = \l__eb_subfont_caption_figure_tl,
+ caption-listing .tl_set:N = \l__eb_subfont_caption_listing_tl,
caption-every .meta:n =
{
caption-table = #1,caption-figure = #1,
@@ -1709,16 +1697,16 @@
\str_case:nnF {#1}
{
{ table }
- { \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2} }
+ { \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2} }
{ figure }
- { \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2} }
+ { \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2} }
{ listing }
- { \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2} }
+ { \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2} }
{ every }
{
- \tl_put_right:Nn \l__eb_subfont_cap_table_tl {#2}
- \tl_put_right:Nn \l__eb_subfont_cap_figure_tl {#2}
- \tl_put_right:Nn \l__eb_subfont_cap_listing_tl {#2}
+ \tl_put_right:Nn \l__eb_subfont_caption_table_tl {#2}
+ \tl_put_right:Nn \l__eb_subfont_caption_figure_tl {#2}
+ \tl_put_right:Nn \l__eb_subfont_caption_listing_tl {#2}
}
}
{ \tl_put_right:cn { l__eb_subfont_#1_tl } {#2} }
@@ -1738,9 +1726,9 @@
math .initial:n = 1.354,
footnote .fp_set:N = \l__eb_spread_footnote_fp,
footnote .initial:n = 1.2,
- caption-table .fp_set:N = \l__eb_spread_cap_table_fp,
- caption-figure .fp_set:N = \l__eb_spread_cap_figure_fp,
- caption-listing .fp_set:N = \l__eb_spread_cap_listing_fp,
+ caption-table .fp_set:N = \l__eb_spread_caption_table_fp,
+ caption-figure .fp_set:N = \l__eb_spread_caption_figure_fp,
+ caption-listing .fp_set:N = \l__eb_spread_caption_listing_fp,
caption-every .meta:n =
{
caption-table = #1,caption-figure = #1,
@@ -1761,8 +1749,8 @@
{
\DeclareCaptionFont{eb@#1@font}
{
- \setspread{\fp_use:c { l__eb_spread_cap_#1_fp }}
- \tl_use:c { l__eb_subfont_cap_#1_tl }
+ \setspread{\fp_use:c { l__eb_spread_caption_#1_fp }}
+ \tl_use:c { l__eb_subfont_caption_#1_tl }
}
}
\captionsetup
@@ -2043,7 +2031,7 @@
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \bibname
- \IfValueT{##3}{ \keys_set:nn { eb/listoc } {##3} }
+ \IfValueT{##3}{ \keys_set:nn { eb/floattoc } {##3} }
\cs_set_protected:Npn \bibsection
{
\eb_toc_title_level_cmd:n {##1}
@@ -2059,6 +2047,13 @@
}
\cs_new_protected:Npn \eb_put_biblatex:n #1
{ \PassOptionsToPackage{#1}{biblatex} }
+\cs_new_protected:Npn \eb_biber_toc_title:n #1
+ {
+ \bool_if:NTF \l__eb_class_mode_book_bool
+ { \bichapter*{#1}{\eb@bib@bitoc@title} }
+ { \bisection*{#1}{\eb@bib@bitoc@title} }
+ \sectionmark{#1}
+ }
\cs_new_protected:Npn \eb_biber_biblatex_set:
{
\str_case:VnF \l__eb_bib_both_style_tl
@@ -2317,7 +2312,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.642}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2022/03/08}{1.643}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index e17b80e4c5..fe31a2f561 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 20fd6cbb52..ae9ecb96b5 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -21,7 +21,7 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v1.642,
+ version = v1.643,
date = 2022/03/08,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
@@ -322,7 +322,7 @@
\command{backmatter}
后记区命令。页码格式与编号保持不变,章标题不编号。
\command{cleardoublepage}[\oarg{页面风格}]\Default{empty}
- 清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会用到清双页命令。
+ 清双页命令可以确保下一页文本总在奇数页开始,在奇数页使用它会产生空白偶数页。文区命令 \cs{frontmatter} 和 \cs{mainmatter} 会用到清双页命令,在启用文类选项 \option*{openright} 时标题命令 \cs*{part} 和 \cs*{chapter} 也会默认用到清双页命令。
\command{blankpagestyle}[\marg{页面风格}]
多出空白页的 \meta{页面风格} 用空白页面风格命令 \cs{blankpagestyle} 全局指定,或使用清双页命令的可选参数局部指定。空白页默认的风格为 \code{empty},即空的页眉页脚。
\end{commands}
@@ -793,7 +793,7 @@
模块 \module*{hdrset} 还可以灵活调整脚注编号和内容的格式。格式主要包括脚注标记的编号类型、字体、附加符号、对齐方式和缩进距离等,以及脚注内容的首行缩进、行距和字体等。基本思想是默认脚注和自定义编号脚注标记的格式分离,两种类型脚注各自正文和内容的标记又共享格式,默认脚注中正文和内容标记的编号类型分离。
\begin{options}
\keychoice{footnotetype}{hang,default,flush,bottom}\Module{hdrset}\Default{hang}
- 脚注的类型。悬挂缩进 \code{hang} 是默认值,\code{default} 是原始的类型,\code{flush} 使脚注内容标记位于脚注首行边缘外侧并右对齐。在一些浮动体排版的情况下,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。其中 \code{bottom} 是复合选项,可以与前三种类型重复或复合使用:
+ 脚注的类型。悬挂缩进 \code{hang} 是默认值,\code{default} 是原始的类型,\code{flush} 使脚注内容标记位于脚注首行边缘外侧并右对齐。当存在浮动环境排版时,脚注可能位于页面中间,\code{bottom} 使脚注始终位于页面底端。其中 \code{bottom} 是复合选项,可以与前三种类型重复或复合使用:
\begin{ctexexam}
\ebhdrset{footnotetype = default,footnotetype = bottom}
\ebhdrset{footnotetype = {hang,bottom}}
@@ -892,7 +892,7 @@
\subsection{目录样式}
\label{subsec:catalog style}
-模块 \module*{tocset} 将使用 \pkg*{titletoc} 宏包处理目录样式。模块或扩展包括了 \module*{part}、\module*{chapter}、\module*{section}、\module*{subsection}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 二级路径,而使用 \module*{list} 路径可以统一设置图片、表格和代码目录的样式。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{tocset} 路径下。目前支持标准的论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。
+模块 \module*{tocset} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}、\module*{chapter}、\module*{section}、\module*{subsection}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 二级路径,而使用 \module*{float} 路径可以统一设置图片、表格和代码目录的样式。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{tocset} 一级路径下。目前支持标准的论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。
\begin{options}
\keyval{tocformat}{条目格式}\dtag\smodule{tocset}%
目录中各级别条目的格式。可以设置条目字体和加入垂直间距等,垂直间距最好使用防止垂直间距重合的 \cs*{addvspace} 命令。
@@ -902,12 +902,16 @@
目录条目左边的缩进距离,通常标题级别越低缩进越大。
\keyval{tocrule}{引导线命令}\dtag
引导线选项 \option{tocrule} 中一般可以使用基于 \cs*{xleaders} 命令的 \cs{tocrule} 绘制引导线。
+ \begin{commands}
+ \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}]
+ 生成目录引导线的命令,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令与 \keyis{dotalign}{false} 效果相同。带有 \harg{} 号的命令不添加引导线后的目录页码。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 为 \meta{引导点} 的放大倍数。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数为页码编号。
+ \end{commands}
\keyval{tocafter}{距离命令}\dtag\Default{\cs*{hspace}\Marg{1em}}
目录条目编号与标题间的代码,默认为插入 \code{1em} 横向距离。
\keyval{tocbelow}{距离命令}\dtag\newtag%
在目录条目下方执行的代码,可以插入垂直距离等命令。
\keyval{tocline}{条目定义}\dtag[\textcolor{red}{\ding{73}}]
- 这个选项扩展了图片、表格或代码题注在目录文件中的定义。选项中参数 \code{\#1} 代表相应题注编号 \cs*{the}\meta{计数器} 的值,参数 \code{\#2} 代表相应题注内容。
+ 这个选项在章节标题基础上扩展了浮动环境的题注在目录文件中的定义。选项中参数 \code{\#1} 代表相应题注编号 \cs*{the}\meta{计数器} 的值,参数 \code{\#2} 代表相应题注内容。
\begin{ctexexam}
\ctexset
{
@@ -924,14 +928,23 @@
\begin{commands}
\command{RegisterTocName}[\marg{条目名}]\newtag%
- 给 \meta{条目名} 注册上述设置目录样式的选项,选项前有红色的符号 \textcolor{red}{\ding{73}} 表示目前在注册后不可用。
+ 给名称为 \meta{条目名} 的浮动环境注册设置目录样式的选项,选项前有符号 \ding{73} 表示在注册后可用。
\command{contentsuse}[\marg{条目名}\marg{扩展名}]
- 激活名为 \meta{条目名} 的目录条目定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。
- \command{tocrule}[\sarg\harg\oarg{引导点间距}\darg{放大因子}\marg{引导点}\oarg{页码格式}]
- 生成目录引导线的命令,需要在引导线选项 \option{tocrule} 中使用。带有星号的命令会使当前级别的目录引导线右端与页码相连而不是对齐。带有 \harg{} 号的命令不添加引导线后的目录页码。\meta{引导点间距} 需带有长度单位,\meta{放大因子} 不带单位,为 \meta{引导点} 的放大倍数,\meta{引导点} 一般为英文句号或 \cs*{cdot} 中心点符号。\meta{页码格式} 的代码位于页码前面,可以设置页码字体和距离等,最后一个命令可以带有一个参数为页码编号。
+ 激活名称为 \meta{条目名} 的浮动环境目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。
+ \command{DeclareFloatList}[\marg{条目名}\marg{扩展名}]\newtag%
+ 声明一个新的 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}} 的浮动环境目录命令,并且支持\ref{sec:document command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,推荐搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有符号 \textcolor{red}{\ding{73}} 表示在声明后可用。下面举一个声明算法目录的例子:
+ \begin{ctexexam}
+ \usepackage{newfloat}
+ \DeclareFloatingEnvironment[
+ fileext = loa,
+ listname = 算法清单
+ ]{algorithm}
+ \DeclareFloatList{algorithm}{loa}
+ \listofalgorithms[multoc] % 在正文中输出双栏算法目录
+ \end{ctexexam}
\command{listnumberline}[\marg{条目名}]
- 在图片、表格或代码目录中插入条目编号的命令,默认包含与题注名相同的标签名。其中 \meta{条目名} 需要显示指定,即为 \code{figure}、\code{table} 或 \code{lstlisting}。关于命令的用法可见\ref{exam:list command usage}。
- \begin{ctexexam}[labelref = exam:list command usage]
+ 在图表等浮动环境目录中插入条目标签和编号,默认标签可以由格式命令 \cs{labelformat} 设置。注意其中 \meta{条目名} 需要用对应名称\textbf{显示指定}。
+ \begin{ctexexam}
\ctexset
{
figure/tocline = \listnumberline{figure}#2,
@@ -945,8 +958,8 @@
悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目编号及其与标题间距的长度和。这个选项对所有条目名同时生效。
\keyval{lolskip}{弹性长度}\Default{10pt}
代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。
- \keyval{between}{代码钩子}
- 目录标题与内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。一级路径此选项对应文档主目录的钩子,二级路径为 \module*{figure}、\module*{table} 和 \module*{lstlisting},或者用位于 \module*{list} 路径的此选项统一设置相应类型目录的钩子。
+ \keyval{between}{代码钩子}\dtag[\textcolor{red}{\ding{73}}]
+ 目录标题与内容间的钩子(作用于标题下方间距之后),一般插入负的垂直距离代码用于抵消目录首行额外的垂直间距。一级路径此选项对应文档主目录的钩子,二级路径为浮动环境的 \meta{条目名}。
\keyval{bibetween}{代码钩子}\newtag%
与选项 \option{between} 类似,是位于一级路径的英文文档主目录(如果启用)代码钩子。
\keybool{dotalign}\Default{true}
@@ -1140,13 +1153,13 @@
\subsection{计数器}
\begin{commands}\noitemsep
\command{newcounter}[\marg{计数器}\oarg{父计数器}]\default{}
- \command{counteruse}[\sarg\oarg{父计数器}\darg{编号}\marg{计数器}\oarg{分隔符}\darg{整数}]
- 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,计数器值输出命令 \cs{counteruse} 以一定的格式使用由它创建的计数器,将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器} 输出这种计数器的值。命令 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加1,带有星号的命令使 \meta{计数器} 值保持不变,\meta{计数器} 的值也可以设为指定的 \meta{整数}。计数器的 \meta{编号} 为 \code{arabic} 或 \code{alph} 等计数形式。
+ \command{counteruse}[\sarg\oarg{编号}\darg{分隔符}\marg{计数器}\oarg{父计数器}]
+ 命令 \cs{newcounter} 是 \LaTeX 自带的创建计数器命令,计数器值输出命令 \cs{counteruse} 将会以 \cs*{the}\meta{父计数器}\meta{分隔符}\cs*{the}\meta{计数器} 形式输出这种计数器的值。命令 \cs{counteruse} 仅具有\textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加1,带有星号参数的命令使 \meta{计数器} 的值保持不变。计数器的 \meta{编号} 为 \code{arabic} 或 \code{alph} 等计数形式。
在一定的场合下可能用到 \cs{counteruse} 命令,比如通过新建快捷命令在一些位置使用定理环境的计数器,使用 \cs{labelformat} 设置计数器的标签引用需添加 \code{eb@}:
\begin{ctexexam}
\labelformat{eb@theorem}{定理#1}
- \newcommand{\theoremhead}[1]{定理\counteruse[chapter]{theorem}\hspace{1em}#1}
+ \newcommand{\theoremhead}[1]{定理\counteruse{theorem}[chapter]\hspace{1em}#1}
\theoremhead{定理内容}\label{thm:theorem}
\end{ctexexam}
\command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\marg{父计数器}]
@@ -1162,7 +1175,7 @@
\subsection{标签引用}
\begin{commands}
\command{labelformat}[\marg{计数器}\marg{标签引用格式}]
- 标签格式命令 \cs{labelformat} 可以设置标签引用格式,\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。
+ 标签格式命令 \cs{labelformat} 可以设置标签引用格式。\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。
\command{AtEndPreamble}[\marg{钩子代码}]
导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要合适的钩子在 \pkg*{hyperref} 后方执行 \meta{钩子代码},例如载入 \pkg*{cleveref} 宏包。
\begin{ctexexam}
@@ -1182,7 +1195,7 @@
\command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{}
\command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{}
\command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}]
- 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动体环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。
+ 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。
\end{commands}
\subsection{化学式}
@@ -1237,13 +1250,17 @@
\subsection{索引}
\begin{commands}
\command*{indexsetup}[\marg{键值列表}]
- \pkg*{imakeidx} 宏包增强了索引的功能,这是它的的接口命令,用于设置索引表的整体格式。
+ \pkg*{imakeidx} 宏包增强了索引的功能。这是它的的接口命令,用于设置索引表的整体格式。
\command*{index}[\oarg{索引名}\marg{标签}]
- 索引标签命令 \cs*{index} 的 \meta{索引名} 与索引打印命令 \cs{printindex} 一致,可以存在多个索引表。
+ 索引标签命令 \cs*{index} 的 \meta{索引名} 与索引输出命令 \cs{printindex} 一致,可以存在多个索引表。
\command*{makeindex}[\oarg{键值列表}]
使用 \cs*{makeindex} 命令开启索引收集。这个命令可以重复使用打印多个索引表,以不同的 \meta{索引名} 作为区分,如果仅打印一个索引表就没必要再使用。
- \command{printindex}[\sarg\oarg{键值列表}\darg{索引名}]
- 现在索引表生成命令 \cs{printindex} 被重新定义,\meta{键值列表} 中的选项与\ref{sec:document command} 其它目录命令相同,但是原本接口命令 \cs*{indexsetup} 的部分选项失效。
+ \command{printindex}[\sarg\oarg{键值列表}]
+ 现在索引表生成命令 \cs{printindex} 被重新定义。\meta{键值列表} 中的选项与\ref{sec:document command} 其它目录命令相同,但是原本接口命令 \cs*{indexsetup} 的部分选项失效。
+ \begin{options}
+ \keyval{name}{索引名}
+ 指定输出名为 \meta{索引名} 的索引表,如果只使用一个索引表则默认为项目文件名不需要指定。
+ \end{options}
\end{commands}
\subsection{边注}
@@ -1301,6 +1318,7 @@
\item 增加英文主文档目录钩子选项 \option{bibetween}。
\end{version}
\shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。}
+ \shortversion{v = 1.643,date = 2022/03/08,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。}
\end{changelog}
\nocite{*}