diff options
author | Norbert Preining <norbert@preining.info> | 2021-01-08 03:01:46 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-01-08 03:01:46 +0000 |
commit | b3f791edc2a8218e3e64f40d7c10d1310362972c (patch) | |
tree | a0e388e019e52634b56ab5a7576868dd3ccf8b43 /macros/latex/contrib/easybook/easybook.cls | |
parent | 1dad166b3cb710b4aa32b8c21b91dbca02b2e408 (diff) |
CTAN sync 202101080301
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.cls')
-rw-r--r-- | macros/latex/contrib/easybook/easybook.cls | 323 |
1 files changed, 187 insertions, 136 deletions
diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls index 71b1d47f47..318c80d9e6 100644 --- a/macros/latex/contrib/easybook/easybook.cls +++ b/macros/latex/contrib/easybook/easybook.cls @@ -5,17 +5,21 @@ %% The original source files were: %% %% easybook.dtx (with options: `class') +%% %% Copyright (C) 2021 by Qu Yi <texeasybook@foxmail.com> +%% %% This work may be distributed and/or modified under the %% conditions of the CC-BY-NC 4.0 License. -%% Gitee: https://gitee.com/TeX-doc/easybook -%% Github: https://github.com/TeX-doc/easybook +%% The latest version of this license is in +%% https://creativecommons.org/licenses/by-nc/4.0/legalcode \NeedsTeXFormat{LaTeX2e} \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/01/03}{v1.0}{} +\ProvidesExplClass{easybook}{2021/01/08}{v1.1}{} \cs_generate_variant:Nn \keys_define:nn {nx} \cs_generate_variant:Nn \int_to_arabic:n {v} +\cs_new_protected:Npn \__patch_cmd:Nnn #1#2#3 + {\ctex_patch_cmd_once:NnnnTF #1{}{#2}{#3}{}{\ctex_patch_failure:N #1}} \cs_new_protected:Npn \__appto_cmd:Nn #1#2 {\ctex_appto_cmd:NnnTF #1{}{#2}{}{\ctex_patch_failure:N #1}} @@ -33,6 +37,7 @@ \bool_new:N \l__multoc_bool \bool_new:N \l__chap_withpart_bool \bool_new:N \l__foot_perpart_bool +\bool_new:N \l__foot_perpage_bool \clist_new:N \g__hyperref_clist \clist_new:N \g__options_clist @@ -117,16 +122,21 @@ \tl_new:N \g__math_spread_tl \tl_new:N \g__cap_spread_tl \tl_new:N \g__foot_spread_tl +\tl_new:N \g__tab_font_tl +\tl_new:N \g__fig_font_tl +\tl_new:N \g__lst_font_tl +\tl_new:N \g__foot_font_tl +\tl_new:N \g__margin_font_tl +\tl_new:N \g__config_tl \ctex_define:n { style .meta:nn = {ctex/style}{#1}, link .meta:nn = {ctex/link}{#1}, spread .meta:nn = {ctex/spread}{#1}, - style/color .choices:nn = - {black,navygreen,navyblue} - {\tl_set_eq:NN \g__keys_color_tl\l_keys_choice_tl}, - style/color .initial:n = black, + elfont .meta:nn = {ctex/elfont}{#1}, + config .tl_set:N = \g__config_tl, + style/cite .choices:nn = {number,authoryear} {\tl_set_eq:NN \g__keys_cite_tl\l_keys_choice_tl}, @@ -162,21 +172,22 @@ spread/fnspread .tl_set:N = \g__foot_spread_tl, spread/fnspread .initial:n = 1, + elfont/tabfont .tl_set:N = \g__tab_font_tl, + elfont/tabfont .initial:n = \sffamily\small, + elfont/figfont .tl_set:N = \g__fig_font_tl, + elfont/figfont .initial:n = \sffamily\small, + elfont/lstfont .tl_set:N = \g__lst_font_tl, + elfont/lstfont .initial:n = \sffamily\small, + elfont/fnfont .tl_set:N = \g__foot_font_tl, + elfont/fnfont .initial:n = \rmfamily, + elfont/marfont .tl_set:N = \g__margin_font_tl, + elfont/marfont .initial:n = \rmfamily\footnotesize, + lstlistlistingname .tl_set:N = \lstlistlistingname, lstlistingname .tl_set:N = \lstlistingname } \RequirePackage[svgnames]{xcolor} -\cs_new_protected:Nn \__load_color_black: - {\definecolorset{HTML}{ctex@}{}{frame,000000;emph,000000;verb,000000}} -\cs_new_protected:Nn \__load_color_navygreen: - {\definecolorset{HTML}{ctex@}{}{frame,005752;emph,004986;verb,a40000}} -\cs_new_protected:Nn \__load_color_navyblue: - {\definecolorset{HTML}{ctex@}{}{frame,005982;emph,eb6877;verb,a4005b}} -\cs_new_protected:Nn \__load_color: - {\use:c {__load_color_ \g__keys_color_tl :}} -\ctex_at_end_preamble:n {\__load_color:} - \RequirePackage{pdfpages,subfiles} \includepdfset{fitpaper = true} \RequirePackage[hang,stable]{footmisc} @@ -202,6 +213,17 @@ \RequirePackage[most]{tcolorbox} \RequirePackage[sort&compress]{gbt7714} \RequirePackage[xindy]{imakeidx} +\RequirePackage[ + lang = {chinese-utf8}, + type = {CC}, + modifier = {by-nc}, + version = {4.0} + ]{doclicense} +\ctex_at_end_preamble:n + { + \tl_if_empty:NF \g__config_tl + {\file_input:n {\g__config_tl}} + } \sys_if_engine_xetex:TF { @@ -395,7 +417,7 @@ \fancyfoot[C]{\color{ctex@frame}\thepage} \fancypagestyle{plain} { - \fancyhf{}\cs_gset:Npn\headrule{} + \fancyhf{}\cs_gset:Npn \headrule{} \fancyfoot[C]{\color{ctex@frame}\thepage} } } @@ -426,47 +448,58 @@ \titlecontents{part} [0\ccwd] {\addvspace{1pc}\sffamily\large} - {} - {} + {}{} {\normalsize\titlerule*{}\bf\contentspage} \titlecontents{chapter} [0\ccwd] {\addvspace{1pc}\sffamily\large} - {\thecontentslabel\hspace{\ccwd}} - {} - {\normalsize\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\bf\contentspage} + {}{} + {\normalsize\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\bf\contentspage} \titlecontents{section} [1.5\ccwd] {\addvspace{0.35pc}} - {\thecontentslabel\hspace{\ccwd}} - {} - {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} \titlecontents{subsection} [3.8\ccwd] {\addvspace{0.35pc}} - {\thecontentslabel\hspace{\ccwd}} - {} - {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} \titlecontents{figure} [0\ccwd] {\addvspace{0.2pc}} - {\thecontentslabel\hspace{\ccwd}} - {} - {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} \titlecontents{table} [0\ccwd] {\addvspace{0.2pc}} - {\thecontentslabel\hspace{\ccwd}} - {} - {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} \contentsuse{lstlisting}{lol} \titlecontents{lstlisting} [0\ccwd] {\addvspace{0.2pc}} - {\thecontentslabel\hspace{\ccwd}} - {} - {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage} + {}{} + {\titlerule*[0.65pc]{\scalebox{1.2}{$\cdot$}}\contentspage} +\ctex_patch_cmd:Nnn \caption@@@addcontentsline + {\addcontentsline{#1}{#2}{\protect\numberline{#3}{#4}}} + {\addcontentsline{#1}{#2}{#3\hspace{\ccwd}#4}} +\ctex_patch_cmd:Nnn \lst@MakeCaption + { + \addcontentsline{lol}{lstlisting} + {\protect\numberline{\thelstlisting}\lst@@caption} + }{ + \addcontentsline{lol}{lstlisting} + {\thelstlisting\hspace{\ccwd}\lst@@caption} + } +\cs_new_protected:Npn \__header_mark:n #1 + { + \chapter*{\phantomsection#1} + \bool_if:NTF \l__page_twoside_bool + {\markboth{\MakeUppercase#1}{\MakeUppercase#1}} + {\markboth{\MakeUppercase#1}{}} + } \cs_gset:Npn \tableofcontents { \if@twocolumn @@ -476,10 +509,7 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \chapter*{\contentsname} - \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}} - {\markboth{\MakeUppercase\contentsname}{}} + \__header_mark:n {\contentsname} \vspace*{-1pc} \@starttoc{toc} \if@restonecol @@ -497,11 +527,8 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \chapter*{\phantomsection\listfigurename} - \addcontentsline{toc}{chapter}{\listfigurename} - \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}} - {\markboth{\MakeUppercase\listfigurename}{}} + \__header_mark:n {\listfigurename} + \CTEX@addtocline{chapter}{\listfigurename} \vspace*{-1pc} \@starttoc{lof} \if@restonecol @@ -519,11 +546,8 @@ \@restonecolfalse \bool_if:NT \l__multoc_bool{\twocolumn} \fi - \chapter*{\phantomsection\listtablename} - \addcontentsline{toc}{chapter}{\listtablename} - \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}} - {\markboth{\MakeUppercase\listtablename}{}} + \__header_mark:n {\listtablename} + \CTEX@addtocline{chapter}{\listtablename} \vspace*{-1pc} \@starttoc{lot} \if@restonecol @@ -534,7 +558,7 @@ } \cs_new:Npn \listoflistings { - \begingroup + \group_begin: \@ifundefined{@restonecoltrue}{} { \if@twocolumn @@ -545,11 +569,8 @@ \bool_if:NT \l__multoc_bool{\twocolumn} \fi } - \chapter*{\phantomsection\lstlistlistingname} - \addcontentsline{toc}{chapter}{\lstlistlistingname} - \bool_if:NTF \l__page_twoside_bool - {\markboth{\MakeUppercase\lstlistlistingname}{\MakeUppercase\lstlistlistingname}} - {\markboth{\MakeUppercase\lstlistlistingname}{}} + \__header_mark:n {\lstlistlistingname} + \CTEX@addtocline{chapter}{\lstlistlistingname} \vspace*{-0.2pc} \@starttoc{lol} \@ifundefined{@restonecoltrue}{} @@ -560,7 +581,7 @@ \onecolumn \fi } - \endgroup + \group_end: } \cs_gset:Npn \bibsection{\chapter{\bibname}} @@ -588,34 +609,49 @@ toclevel = chapter, firstpagestyle = plain } -\patchcmd\imki@indexheaders +\__patch_cmd:Nnn \imki@indexheaders {\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}} { \bool_if:NTF \l__page_twoside_bool {\markboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}} {\markboth{\MakeUppercase\indexname}{}} } - {}{} \DeclareCaptionLabelSeparator{ccwd}{\hspace{\ccwd}} \DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)} +\DeclareCaptionFont{tabfont}{\g__tab_font_tl} +\DeclareCaptionFont{figfont}{\g__fig_font_tl} +\DeclareCaptionFont{lstfont}{\g__lst_font_tl} \captionsetup { format = hang, % figurewithin = section, % tablewithin = section, - labelfont = {sf,small,color = ctex@frame}, labelsep = ccwd, - textfont = {sf,small,stretch = \g__cap_spread_tl}, belowskip = 0pt,aboveskip = 10pt } +\captionsetup[table] + { + labelfont = {tabfont,color = ctex@frame}, + textfont = {tabfont,stretch = \g__cap_spread_tl} + } +\captionsetup[figure] + { + labelfont = {figfont,color = ctex@frame}, + textfont = {figfont,stretch = \g__cap_spread_tl} + } \captionsetup[subfigure] { labelfont = {sf,small,color = ctex@frame}, labelformat = parens, belowskip = 2pt,aboveskip = 6pt } -\captionsetup[lstlisting]{singlelinecheck = false} +\captionsetup[lstlisting] + { + singlelinecheck = false, + labelfont = {lstfont,color = ctex@frame}, + textfont = {lstfont,stretch = \g__cap_spread_tl} + } \captionsetup[figure][bi-second]{name = Figure} \captionsetup[table][bi-second]{name = Table} \cs_new:Npn \__arabic:n #1{\int_to_arabic:v {c@#1}} @@ -683,34 +719,33 @@ \hbox{\tikz\draw(0pt,0pt)circle(.5\ccwd)node{\makebox[\ccwd][c]{\small#1}};} } -\tl_new:N \theoremname -\tl_new:N \definitioname -\tl_new:N \lemmaname -\tl_new:N \corollaryname -\tl_new:N \propositioname -\tl_new:N \examplename -\tl_new:N \remarkname -\tl_new:N \exercisename - +\cs_new_protected:Npn \__thmname_set:nn #1#2 + {\tl_const:cn {c__name_#1_tl}{#2}} \bool_if:NTF \l__lang_chinese_bool { - \tl_set:Nn \theoremname{定理} - \tl_set:Nn \definitioname{定义} - \tl_set:Nn \lemmaname{引理} - \tl_set:Nn \corollaryname{推论} - \tl_set:Nn \propositioname{性质} - \tl_set:Nn \examplename{例} - \tl_set:Nn \remarkname{注} - \tl_set:Nn \exercisename{练习} - }{ - \tl_set:Nn \theoremname{Theorem} - \tl_set:Nn \definitioname{Definition} - \tl_set:Nn \lemmaname{Lemma} - \tl_set:Nn \corollaryname{Corollary} - \tl_set:Nn \propositioname{Proposition} - \tl_set:Nn \examplename{Example} - \tl_set:Nn \remarkname{Remark} - \tl_set:Nn \exercisename{Exercise} + \clist_map_inline:nn + { + {theorem}{定理}, + {definition}{定义}, + {lemma}{引理}, + {corollary}{推论}, + {proposition}{性质}, + {example}{例}, + {remark}{注}, + {exercise}{练习} + }{\__thmname_set:nn #1} + }{ + \clist_map_inline:nn + { + {theorem}{Theorem}, + {definition}{Definition}, + {lemma}{Lemma}, + {corollary}{Corollary}, + {proposition}{Proposition}, + {example}{Example}, + {remark}{Remark}, + {exercise}{Exercise} + }{\__thmname_set:nn #1} } \declaretheoremstyle[ @@ -726,16 +761,16 @@ numberwithin = chapter, headformat = \NAME\space\NUMBER\NOTE ]{mythm} -\declaretheorem[style = mythm,name = \theoremname]{theorem} -\declaretheorem[style = mythm,name = \definitioname]{definition} -\declaretheorem[style = mythm,name = \lemmaname]{lemma} -\declaretheorem[style = mythm,name = \corollaryname]{corollary} -\declaretheorem[style = mythm,name = \propositioname]{proposition} -\declaretheorem[style = mythm,name = \examplename]{example} +\declaretheorem[style = mythm,name = \c__name_theorem_tl]{theorem} +\declaretheorem[style = mythm,name = \c__name_definition_tl]{definition} +\declaretheorem[style = mythm,name = \c__name_lemma_tl]{lemma} +\declaretheorem[style = mythm,name = \c__name_corollary_tl]{corollary} +\declaretheorem[style = mythm,name = \c__name_proposition_tl]{proposition} +\declaretheorem[style = mythm,name = \c__name_example_tl]{example} \cs_gset_eq:NN \proof\relax \declaretheorem{remark}[ style = mythm, - name = \faCommentingO\space\remarkname, + name = \faCommentingO\space\c__name_remark_tl, numbered = no ] \declaretheorem{proof}[ @@ -842,12 +877,12 @@ \end{outlinelist} \end{tcolorbox} } -\NewDocumentEnvironment{exercise}{sO{black}O{1.}O{\exercisename}} +\NewDocumentEnvironment{exercise}{sO{black}O{1.}O{\c__name_exercise_tl}} { \IfBooleanF{#1} { \refstepcounter{section} - \addcontentsline{toc}{section}{\CTEXthesection\hspace{\ccwd}#4} + \CTEX@addtocline{section}{#4} \markright { \ifnum\c@secnumdepth>\z@ @@ -920,19 +955,15 @@ \counterwithin*{footnote}{page} } } -\patchcmd\@footnotetext - {\def\baselinestretch{\ZhLS@footlinespread}} - {\def\baselinestretch{\g__foot_spread_tl}} - {}{} -\patchcmd\@mpfootnotetext - {\def\baselinestretch{\ZhLS@footlinespread}} - {\def\baselinestretch{\g__foot_spread_tl}} - {}{} -\patchcmd\@makefnmark - {\normalfont} - {\normalfont\rmfamily} - {}{} -\cs_gset:Npn \marginfont{\sffamily\footnotesize} +\__patch_cmd:Nnn \@footnotetext + {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} + {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} +\__patch_cmd:Nnn \@mpfootnotetext + {\def\baselinestretch{\ZhLS@footlinespread}\reset@font} + {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl} +\__patch_cmd:Nnn \@makefnmark + {\normalfont}{\g__foot_font_tl} +\cs_gset:Npn \marginfont{\g__margin_font_tl} \lstdefinestyle{mystyle} { @@ -950,7 +981,7 @@ emphstyle = \color{ctex@emph}, emph = { - amsmath,align,aligned,chemfig,cleveref,cases,caption,chemformula,compactenum,description,enumitem,enumerate,exercise,easybook,footmisc,hang,itemize,imakeidx,listings,LaTeX,multline,mybox,paralist,Python,siunitx,split,subnumcases,subcaption,tabularx,thmtools,xcolor + caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools }, keywordstyle = \lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi, morekeywords = @@ -980,7 +1011,9 @@ {\clist_gput_right:Nn \g__hyperref_clist{#1}} \cs_new_protected:Npn \__define_linkcolor:nnn #1#2#3 {\definecolorset{HTML}{ctex@}{}{link,#1;url,#2;cite,#3}} -\cs_new:Npn \__set_linkcolor:n #1 +\cs_new_protected:Npn \__define_themecolor:nnn #1#2#3 + {\definecolorset{HTML}{ctex@}{}{frame,#1;emph,#2;verb,#3}} +\cs_new:Npn \__linkcolor_set:n #1 { linkcolor/\clist_item:nn {#1}{1} .code:n = { @@ -996,6 +1029,17 @@ } }, } +\cs_new:Npn \__themecolor_set:n #1 + { + color/\clist_item:nn {#1}{1} .code:n = + { + \__define_themecolor:nnn + {\clist_item:nn {#1}{2}} + {\clist_item:nn {#1}{3}} + {\clist_item:nn {#1}{4}} + }, + } + \cs_new:Npn \__allow_urlbreak: { \cs_new:Npn \__add_urlbreak_points: @@ -1009,7 +1053,6 @@ \keys_define:nx {ctex/link} { hyperlink .choice:, - hyperlink .value_required:n = true, hyperlink/edge .code:n = {}, hyperlink/various .code:n = {\__clist_put_hyperref:n {colorlinks}}, hyperlink/none .code:n = {\__clist_put_hyperref:n {hidelinks}}, @@ -1017,32 +1060,37 @@ hyperlink .initial:n = edge, linkcolor .choice:, - linkcolor .value_required:n = true, \clist_map_function:nN { - {darkgray, 626262,0000B2,005752}, - {lightblue, 0000ff,004986,eb6877}, - {crimson, dc143c,00c1c9,afcd20}, - {hotpink, ff69b4,9d5196,57b5e5} + {graphite, 626262,0000B2,005752}, + {cutepink, ff69b4,9d5196,57b5e5}, + {skyblue, 0000ff,004986,eb6877}, + {crimson, dc143c,00c1c9,afcd20} } - \__set_linkcolor:n, - linkcolor .default:n = darkgray, - linkcolor .initial:n = darkgray, + \__linkcolor_set:n, + linkcolor .default:n = graphite, + linkcolor .initial:n = graphite, linktopage .choice:, - linktopage .value_required:n = true, linktopage/true .code:n = {\__clist_put_hyperref:n {linktocpage}}, - linktopage/false .code:n = {\__clist_put_hyperref:n {linktocpage = false}}, + linktopage/false .code:n = {}, linktopage .default:n = true, linktopage .initial:n = false } - -\RequirePackage[ - lang = {chinese-utf8}, - type = {CC}, - modifier = {by-nc}, - version = {4.0} - ]{doclicense} +\keys_define:nx {ctex/style} + { + color .choice:, + color .value_required:n = true, + \clist_map_function:nN + { + {none, 000000,000000,000000}, + {forest, 005752,004986,a40000}, + {energy, f39800,00a0e9,893895}, + {cyberpunk, 005982,eb6877,a4005b} + } + \__themecolor_set:n, + color .initial:n = none + } \ctex_at_end_preamble:n { @@ -1129,12 +1177,15 @@ \bool_if:NF \l__newline_bool{\centering} }, aftername = - {\bool_if:NTF \l__newline_bool{\par\nobreak\vskip 1.5pc}{\hspace{\ccwd}}}, + { + \bool_if:NTF \l__newline_bool + {\par\nobreak\vskip 1.5pc}{\hspace{\ccwd}} + }, beforeskip = -1.5ex, afterskip = 3ex, lotskip = 0.8pc, lofskip = 0.8pc, - tocline = {\CTEXifname{\protect\numberline{\CTEXthechapter}}{}#2} + tocline = {\CTEXifname{\CTEXthechapter\hspace{\ccwd}}{}#2} }, section = { @@ -1143,7 +1194,7 @@ aftername = {\hspace{0.5\ccwd}}, beforeskip = 1.5ex plus .2ex minus .1ex, afterskip = 1.5ex plus .2ex minus .1ex, - tocline = {\CTEXifname{\protect\numberline{\CTEXthesection}}{}#2} + tocline = {\CTEXifname{\CTEXthesection\hspace{\ccwd}}{}#2} }, subsection = { @@ -1152,7 +1203,7 @@ aftername = {\hspace{0.5\ccwd}}, beforeskip = 1.3ex plus .2ex minus .1ex, afterskip = 1.3ex plus .2ex minus .1ex, - tocline = {\CTEXifname{\protect\numberline{\CTEXthesubsection}}{}#2} + tocline = {\CTEXifname{\CTEXthesubsection\hspace{\ccwd}}{}#2} }, subsubsection = { |